<?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>171199</bug_id>
          
          <creation_ts>2017-04-23 11:00:56 -0700</creation_ts>
          <short_desc>[WTF] Move JSC tools/StackTrace to WTF and unify stack trace dump code</short_desc>
          <delta_ts>2017-04-24 20:23:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>mark.lam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1300345</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-23 11:00:56 -0700</bug_when>
    <thetext>[WTF] Move JSC tools/StackTrace to WTF and unify stack trace dump code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300346</commentid>
    <comment_count>1</comment_count>
      <attachid>307938</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-23 11:02:17 -0700</bug_when>
    <thetext>Created attachment 307938
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300391</commentid>
    <comment_count>2</comment_count>
      <attachid>307938</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-23 19:07:15 -0700</bug_when>
    <thetext>Comment on attachment 307938
Patch

We would like to unify things further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300413</commentid>
    <comment_count>3</comment_count>
      <attachid>307951</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-23 20:45:00 -0700</bug_when>
    <thetext>Created attachment 307951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300415</commentid>
    <comment_count>4</comment_count>
      <attachid>307952</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-23 20:57:03 -0700</bug_when>
    <thetext>Created attachment 307952
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300552</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-04-24 10:14:37 -0700</bug_when>
    <thetext>The Windows build failure seems to be relevant. Can you fix that first?  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300575</commentid>
    <comment_count>6</comment_count>
      <attachid>307952</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-04-24 11:10:47 -0700</bug_when>
    <thetext>Comment on attachment 307952
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=307952&amp;action=review

LGTM but need to fix broken Windows build.

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        This patch adds an utility method to produce demangled names with dladdr.

typo: /an utility/a utility/.

&gt; Source/WTF/wtf/DefaultFree.h:33
&gt; +struct DefaultFree {

I suggest renaming this to SystemFree to match our parlance elsewhere e.g. see DebugHeap::DebugHeap()&apos;s referral to &quot;System Malloc&quot;  in bmalloc/heap/DebugHeap.cpp.

&gt; Source/WTF/wtf/Platform.h:673
&gt; +#endif

I suggest adding // PLATFORM(GTK) after the #endif.

&gt; Source/WTF/wtf/Platform.h:675
&gt; +#endif

I suggest adding // OS(DARWIN) || OS(LINUX) after the #endif.

&gt; Source/WTF/wtf/StackTrace.h:61
&gt; +        DemangleEntry(const char* mangledName, const char* demangledName)
&gt; +            : m_mangledName(mangledName)
&gt; +            , m_demangledName(demangledName)
&gt; +        { }

I suggest making this constructor private and adding StackTrace as a friend of DemangleEntry.  This way, you can control the life-cycle of DemangleEntry tightly and ensure that demangledName is indeed allocated with the system malloc to match how we free it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300842</commentid>
    <comment_count>7</comment_count>
      <attachid>307952</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-24 19:41:20 -0700</bug_when>
    <thetext>Comment on attachment 307952
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=307952&amp;action=review

Thanks!

&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt; +        This patch adds an utility method to produce demangled names with dladdr.
&gt; 
&gt; typo: /an utility/a utility/.

Fixed.

&gt;&gt; Source/WTF/wtf/DefaultFree.h:33
&gt;&gt; +struct DefaultFree {
&gt; 
&gt; I suggest renaming this to SystemFree to match our parlance elsewhere e.g. see DebugHeap::DebugHeap()&apos;s referral to &quot;System Malloc&quot;  in bmalloc/heap/DebugHeap.cpp.

This is originally aligned to std::default_delete. But, since we have bmalloc&apos;s fastMalloc along with the system malloc, SystemFree seems more descriptive.
Renamed.

&gt;&gt; Source/WTF/wtf/Platform.h:673
&gt;&gt; +#endif
&gt; 
&gt; I suggest adding // PLATFORM(GTK) after the #endif.

Fixed.

&gt;&gt; Source/WTF/wtf/Platform.h:675
&gt;&gt; +#endif
&gt; 
&gt; I suggest adding // OS(DARWIN) || OS(LINUX) after the #endif.

Fixed.

&gt;&gt; Source/WTF/wtf/StackTrace.h:61
&gt;&gt; +        { }
&gt; 
&gt; I suggest making this constructor private and adding StackTrace as a friend of DemangleEntry.  This way, you can control the life-cycle of DemangleEntry tightly and ensure that demangledName is indeed allocated with the system malloc to match how we free it.

Sounds very nice! Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300846</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-24 19:53:57 -0700</bug_when>
    <thetext>Committed r215715: &lt;http://trac.webkit.org/changeset/215715&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300863</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-24 20:23:31 -0700</bug_when>
    <thetext>Committed r215717: &lt;http://trac.webkit.org/changeset/215717&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307938</attachid>
            <date>2017-04-23 11:02:17 -0700</date>
            <delta_ts>2017-04-23 20:44:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171199-20170424030216.patch</filename>
            <type>text/plain</type>
            <size>28168</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
Y2Y1MDgzYTgzYzk0YmIzMzI2ZDg4YzE1NDNmM2NlOWNjNDFmZTczLi5hZmNmMDdiMGQ4OWMyNzQ1
MjU5MjY5MDYyNGFiZmVmYmRhOWE5MzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxNy0wNC0yMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBNb3ZlIEpTQyB0b29scy9TdGFja1RyYWNlIHRvIFdURiBh
bmQgdW5pZnkgc3RhY2sgdHJhY2UgZHVtcCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzExOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogdG9vbHMvQ2Vs
bFByb2ZpbGUuaDoKKwogMjAxNy0wNC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBVc2UgRG91Ymx5TGlua2VkTGlzdCBmb3IgTWFjaGlu
ZVRocmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwppbmRleCBlMGVjZjliOWQ4Zjk3YWJiNTFhNzUxYjc5YzE1ZDA0YTM2ZTgwMjA0Li5i
YzIwODliY2ZjZDVkNjA2YjQ1OGIyMmFjY2VlNmQ5ZjIzMzFhMzhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3
IEBACisyMDE3LTA0LTIzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgor
CisgICAgICAgIFtXVEZdIE1vdmUgSlNDIHRvb2xzL1N0YWNrVHJhY2UgdG8gV1RGIGFuZCB1bmlm
eSBzdGFjayB0cmFjZSBkdW1wIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3MTE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEpTQyB0b29scy9TdGFja1RyYWNlJ3MgZHVtcCBjb2RlIGlzIGFsbW9z
dCBpZGVudGljYWwgdG8gV1RGIEFzc2VydGlvbnMnCisgICAgICAgIHN0YWNrIHRyYWNlIGR1bXAg
Y29kZS4gVGhpcyBwYXRjaCBtb3ZlcyB0b29scy9TdGFja1RyYWNlIHRvIFdURiBhbmQgdXNlCisg
ICAgICAgIGl0IGluIEFzc2VydGlvbnMuIEl0IHVuaWZpZXMgdGhlIHR3byBkdXBsaWNhdGUgaW1w
bGVtZW50YXRpb25zIGludG8gb25lLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuY3BwOgorICAgICAgICAqIHd0Zi9D
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYv
U3RhY2tUcmFjZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
U3RhY2tUcmFjZS5jcHAuCisgICAgICAgIChXVEY6OlN0YWNrVHJhY2U6Omluc3RhbmNlU2l6ZSk6
CisgICAgICAgIChXVEY6OlN0YWNrVHJhY2U6OmNhcHR1cmVTdGFja1RyYWNlKToKKyAgICAgICAg
KFdURjo6U3RhY2tUcmFjZTo6ZHVtcCk6CisgICAgICAgICogd3RmL1N0YWNrVHJhY2UuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TdGFja1RyYWNlLmguCisgICAg
ICAgIChXVEY6OlN0YWNrVHJhY2U6OlN0YWNrVHJhY2UpOgorICAgICAgICAoV1RGOjpTdGFja1Ry
YWNlOjpzaXplKToKKyAgICAgICAgKFdURjo6U3RhY2tUcmFjZTo6c3RhY2spOgorCiAyMDE3LTA0
LTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtK
U0NdIEdldCBzdGFjayBwb2ludGVyIHdpdGhvdXQgcHRocmVhZCBhdHRyCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzE5YjNlMDZjYTUyNTg2OWMwYjA1MzJkM2ZmMjliNmZj
MjhhOWM5Ny4uMzRhN2NlNzA0YTljN2QxY2E4MGNlNDEzMzliZTQ4ZDkwNDA1OTFjZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTMzLDcgKzkzMyw2IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgdG9vbHMvSlNEb2xsYXJWTS5jcHAKICAgICB0b29scy9K
U0RvbGxhclZNUHJvdG90eXBlLmNwcAogICAgIHRvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3Bw
Ci0gICAgdG9vbHMvU3RhY2tUcmFjZS5jcHAKICAgICB0b29scy9WTUluc3BlY3Rvci5jcHAKIAog
ICAgIHdhc20vSlNXZWJBc3NlbWJseS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNDkwYTYwNmY5MDhlZmNhYzY3NzIwZDk1ZDQzZjU2MTYyYmZjMzZkMC4uMjViM2NmYjg1MzAy
Yjg5MGYyMDY3ZDE2NWM5ZDg3YTZlOWNjZjhjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTI0MTAsOCArMjQxMCw2IEBACiAJCUZFMUJEMDIxMUU3MjAyNzkwMDEzNEJDOSAvKiBD
ZWxsUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUxQkQwMjAxRTcyMDI3MDAwMTM0QkM5IC8qIENlbGxQcm9maWxlLmggKi87IH07CiAJCUZF
MUJEMDI0MUU3MjA1MzgwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQkQwMjIxRTcyMDUyRjAwMTM0QkM5
IC8qIEhlYXBWZXJpZmllci5jcHAgKi87IH07CiAJCUZFMUJEMDI1MUU3MjA1MzgwMDEzNEJDOSAv
KiBIZWFwVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMUJEMDIzMUU3MjA1MkYwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuaCAqLzsgfTsK
LQkJRkUxQkQwMkIxRTcyMUI0QzAwMTM0QkM5IC8qIFN0YWNrVHJhY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUJEMDJBMUU3MjFCMzcwMDEzNEJD
OSAvKiBTdGFja1RyYWNlLmggKi87IH07Ci0JCUZFMUJEMDJDMUU3MjFCNTEwMDEzNEJDOSAvKiBT
dGFja1RyYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFMUJEMDI5MUU3MjFCMzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCAqLzsgfTsKIAkJ
RkUxQzBGRkQxQjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQzBGRkMxQjE5M0U5ODAwQjUzRkNBIC8q
IEV4Y2VwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUZFMUMwRkZGMUIxOTRGRDEwMEI1M0ZDQSAvKiBFeGNlcHRpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQzBGRkUxQjE5NEZEMTAw
QjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgKi87IH07CiAJCUZFMjBDRTlEMTVGMDRBOTUwMERGMzQz
MCAvKiBMTEludENMb29wLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAqLzsg
fTsKQEAgLTUwNDAsOCArNTAzOCw2IEBACiAJCUZFMUJEMDIwMUU3MjAyNzAwMDEzNEJDOSAvKiBD
ZWxsUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDZWxsUHJvZmls
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTFCRDAyMjFFNzIwNTJGMDAxMzRC
QzkgLyogSGVhcFZlcmlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEhlYXBWZXJpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMUJE
MDIzMUU3MjA1MkYwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSGVhcFZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUZFMUJEMDI5MUU3MjFCMzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrVHJhY2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlGRTFCRDAyQTFFNzIxQjM3MDAxMzRCQzkgLyogU3RhY2tUcmFjZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1RyYWNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMUMwRkZDMUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMUMwRkZFMUIxOTRGRDEwMEI1M0ZDQSAvKiBFeGNl
cHRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhjZXB0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUyMENFOUIxNUYwNEE5NTAwREYz
NDMwIC8qIExMSW50Q0xvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTExJbnRDTG9vcC5jcHA7IHBhdGggPSBsbGludC9MTEludENMb29wLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwODEsOCArNzA3Nyw2IEBACiAJCQkJODZCNTgyMkMxNEQy
MkY1RjAwQTlDMzA2IC8qIFByb2ZpbGVUcmVlTm9kZS5oICovLAogCQkJCUZFMzAyMkQwMUUzRDcz
OTYwMEJBQzQ5MyAvKiBTaWdpbGxDcmFzaEFuYWx5emVyLmNwcCAqLywKIAkJCQlGRTMwMjJEMTFF
M0Q3Mzk2MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5oICovLAotCQkJCUZFMUJEMDI5
MUU3MjFCMzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCAqLywKLQkJCQlGRTFCRDAyQTFFNzIx
QjM3MDAxMzRCQzkgLyogU3RhY2tUcmFjZS5oICovLAogCQkJCTg2QjU4MjZBMTREMzVENTEwMEE5
QzMwNiAvKiBUaWVyZWRNTWFwQXJyYXkuaCAqLywKIAkJCQlGRTMwMjJENDFFNDI4NTY3MDBCQUM0
OTMgLyogVk1JbnNwZWN0b3IuY3BwICovLAogCQkJCUZFMzAyMkQ1MUU0Mjg1NjcwMEJBQzQ5MyAv
KiBWTUluc3BlY3Rvci5oICovLApAQCAtODkwNiw3ICs4OTAwLDYgQEAKIAkJCQlGRTE4N0EwRDFD
MDMwRDVDMDAzOEJCQ0EgLyogSklURGl2R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZCMTRFMUYxODEyNEFDRTAwOUI2QjREIC8qIEpJVElubGluZUNhY2hlR2VuZXJhdG9y
LmggaW4gSGVhZGVycyAqLywKLQkJCQlGRTFCRDAyQjFFNzIxQjRDMDAxMzRCQzkgLyogU3RhY2tU
cmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZDQzg1QTEwRUU3OUE0NzAwMjg4NjgyIC8qIEpJ
VElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFM0EwNkJFMUMxMTA0MTIwMDM5MEZERCAv
KiBKSVRMZWZ0U2hpZnRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5MjMzQzJCMUQz
NDcxNTcwMEM1QTgzNCAvKiBKSVRNYXRoSUMuaCBpbiBIZWFkZXJzICovLApAQCAtMTAzNjIsNyAr
MTAzNTUsNiBAQAogCQkJCTBGQzk3RjQxMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdXYXRjaHBvaW50
Q29sbGVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGREIyQ0U3MTc0ODMwQTIw
MDdCM0MxQiAvKiBERkdXb3JrbGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkUwNTAxNzFB
QTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CUZFMUJEMDJDMUU3MjFCNTEwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRTA1MDE1MUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHNPZmZzZXQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRUJCQUIxREVERjk1MDAwOTkwMzY5IC8qIERpcmVj
dEV2YWxDb2RlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQzODZBNzQxREQ2OTg5NTAw
ODY1MkM0IC8qIERpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NlbGxQcm9maWxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvQ2VsbFByb2ZpbGUuaAppbmRleCAwN2JiOWE4ZGQ0MjIwMjYw
NzRiY2NlZTVkZWE2YTMyZGM3MWNjYWY2Li43NDE4MzZiN2RkN2I2NjBlODZiYjJhZTE0NGNhMjI0
ZTM0OGRkZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ2VsbFBy
b2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ2VsbFByb2ZpbGUuaApA
QCAtMjYsOSArMjYsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU0NlbGwuaCIKLSNp
bmNsdWRlICJTdGFja1RyYWNlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSA8
d3RmL01vbm90b25pY1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tUcmFjZS5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1N0
YWNrVHJhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1N0YWNrVHJhY2UuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Mjk3NDk5MTljYTQyZjg5ZDMxYWI5MGFm
NmJlMGEwYTQwMDQyYTg0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TdGFja1RyYWNlLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlN0YWNrVHJhY2Uu
aCIKLQotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLSNpZiBPUyhEQVJXSU4pIHx8IChP
UyhMSU5VWCkgJiYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9fVUNMSUJDX18pKQot
I2luY2x1ZGUgPGN4eGFiaS5oPgotI2luY2x1ZGUgPGRsZmNuLmg+Ci0jaW5jbHVkZSA8ZXhlY2lu
Zm8uaD4KLSNlbmRpZgotCi0jaWYgT1MoREFSV0lOKSB8fCBPUyhMSU5VWCkKLSMgIGlmIFBMQVRG
T1JNKEdUSykKLSMgICAgaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9fVUNMSUJD
X18pCi0jICAgICAgZGVmaW5lIFVTRV9CQUNLVFJBQ0VfU1lNQk9MUyAxCi0jICAgIGVuZGlmCi0j
ICBlbHNlCi0jICAgIGRlZmluZSBVU0VfRExBRERSIDEKLSMgIGVuZGlmCi0jZW5kaWYKLQotbmFt
ZXNwYWNlIEpTQyB7Ci0KLUFMV0FZU19JTkxJTkUgc2l6ZV90IFN0YWNrVHJhY2U6Omluc3RhbmNl
U2l6ZShpbnQgY2FwYWNpdHkpCi17Ci0gICAgQVNTRVJUKGNhcGFjaXR5ID49IDEpOwotICAgIHJl
dHVybiBzaXplb2YoU3RhY2tUcmFjZSkgKyAoY2FwYWNpdHkgLSAxKSAqIHNpemVvZih2b2lkKik7
Ci19Ci0KLVN0YWNrVHJhY2UqIFN0YWNrVHJhY2U6OmNhcHR1cmVTdGFja1RyYWNlKGludCBtYXhG
cmFtZXMpCi17Ci0gICAgbWF4RnJhbWVzID0gc3RkOjptYXgoMSwgbWF4RnJhbWVzKTsKLSAgICBz
aXplX3Qgc2l6ZVRvQWxsb2NhdGUgPSBpbnN0YW5jZVNpemUobWF4RnJhbWVzKTsKLSAgICBTdGFj
a1RyYWNlKiB0cmFjZSA9IG5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhzaXplVG9BbGxvY2F0ZSkp
IFN0YWNrVHJhY2UoKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgZnJhbWVzVG9Ta2lwID0gMjsK
LSAgICBpbnQgbnVtYmVyT2ZGcmFtZXMgPSBtYXhGcmFtZXMgKyBmcmFtZXNUb1NraXA7Ci0gICAg
Ci0gICAgV1RGR2V0QmFja3RyYWNlKCZ0cmFjZS0+bV9za2lwcGVkRnJhbWUwLCAmbnVtYmVyT2ZG
cmFtZXMpOwotICAgIEFTU0VSVChudW1iZXJPZkZyYW1lcyA+IGZyYW1lc1RvU2tpcCk7Ci0gICAg
dHJhY2UtPm1fc2l6ZSA9IG51bWJlck9mRnJhbWVzIC0gZnJhbWVzVG9Ta2lwOwotICAgIHRyYWNl
LT5tX2NhcGFjaXR5ID0gbWF4RnJhbWVzOwotCi0gICAgcmV0dXJuIHRyYWNlOwotfQotCi12b2lk
IFN0YWNrVHJhY2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKLXsKLSNpZiBVU0UoQkFD
S1RSQUNFX1NZTUJPTFMpCi0gICAgY2hhcioqIHN5bWJvbHMgPSBiYWNrdHJhY2Vfc3ltYm9scyht
X3N0YWNrLCBtX3NpemUpOwotICAgIGlmICghc3ltYm9scykKLSAgICAgICAgcmV0dXJuOwotI2Vu
ZGlmCi0gICAgCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkgewotICAgICAg
ICBjb25zdCBjaGFyKiBtYW5nbGVkTmFtZSA9IDA7Ci0gICAgICAgIGNoYXIqIGN4YURlbWFuZ2xl
ZCA9IDA7Ci0jaWYgVVNFKEJBQ0tUUkFDRV9TWU1CT0xTKQotICAgICAgICBtYW5nbGVkTmFtZSA9
IHN5bWJvbHNbaV07Ci0jZWxpZiBVU0UoRExBRERSKQotICAgICAgICBEbF9pbmZvIGluZm87Ci0g
ICAgICAgIGlmIChkbGFkZHIobV9zdGFja1tpXSwgJmluZm8pICYmIGluZm8uZGxpX3NuYW1lKQot
ICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBpbmZvLmRsaV9zbmFtZTsKLSAgICAgICAgaWYgKG1h
bmdsZWROYW1lKQotICAgICAgICAgICAgY3hhRGVtYW5nbGVkID0gYWJpOjpfX2N4YV9kZW1hbmds
ZShtYW5nbGVkTmFtZSwgMCwgMCwgMCk7Ci0jZW5kaWYKLSAgICAgICAgY29uc3QgaW50IGZyYW1l
TnVtYmVyID0gaSArIDE7Ci0gICAgICAgIGlmIChtYW5nbGVkTmFtZSB8fCBjeGFEZW1hbmdsZWQp
Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlLTNkICVwICVzXG4iLCBmcmFtZU51bWJlciwgbV9z
dGFja1tpXSwgY3hhRGVtYW5nbGVkID8gY3hhRGVtYW5nbGVkIDogbWFuZ2xlZE5hbWUpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBvdXQucHJpbnRmKCIlLTNkICVwXG4iLCBmcmFtZU51bWJl
ciwgbV9zdGFja1tpXSk7Ci0gICAgICAgIGZyZWUoY3hhRGVtYW5nbGVkKTsKLSAgICB9Ci0gICAg
Ci0jaWYgVVNFKEJBQ0tUUkFDRV9TWU1CT0xTKQotICAgIGZyZWUoc3ltYm9scyk7Ci0jZW5kaWYK
LX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvU3RhY2tUcmFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1N0YWNr
VHJhY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDkyMDMxNTFjYzdkMjYzYTUz
ZGM1NDJlNjZjNTU4ZTQ3NzBjYTkxMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU3RhY2tUcmFjZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL1ByaW50U3Ry
ZWFtLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBTdGFja1RyYWNlIHsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBzdGF0aWMgU3RhY2tUcmFjZSogY2Fw
dHVyZVN0YWNrVHJhY2UoaW50IG1heEZyYW1lcyk7Ci0KLSAgICBpbnQgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2l6ZTsgfQotCi0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0K
LXByaXZhdGU6Ci0gICAgaW5saW5lIHN0YXRpYyBzaXplX3QgaW5zdGFuY2VTaXplKGludCBjYXBh
Y2l0eSk7Ci0KLSAgICBTdGFja1RyYWNlKCkKLSAgICAgICAgOiBtX3NpemUoMCkKLSAgICB7IH0K
LQotICAgIC8vIFdlIHN0cnVjdHVyZSB0aGUgdG9wIGZpZWxkcyB0aGlzIHdheSBiZWNhdXNlIHRo
ZSB1bmRlcmx5aW5nIHN0YWNrIGNhcHR1cmUKLSAgICAvLyBmYWNpbGl0eSB3aWxsIGNhcHR1cmUg
ZnJvbSB0aGUgdG9wIG9mIHRoZSBzdGFjaywgYW5kIHdlJ2xsIG5lZWQgdG8gc2tpcCB0aGUKLSAg
ICAvLyB0b3AgMiBmcmFtZSB3aGljaCBpcyBvZiBubyBpbnRlcmVzdC4gU2V0dGluZyB1cCB0aGUg
ZmllbGRzIGxheW91dCB0aGlzIHdheQotICAgIC8vIGFsbG93cyB1cyB0byBjYXB0dXJlIHRoZSBz
dGFjayBpbiBwbGFjZSBhbmQgbWluaW1pemUgc3BhY2Ugd2FzdGFnZS4KLSAgICB1bmlvbiB7Ci0g
ICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICBpbnQgbV9zaXplOwotICAgICAgICAgICAgaW50
IG1fY2FwYWNpdHk7Ci0gICAgICAgIH07Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICB2
b2lkKiBtX3NraXBwZWRGcmFtZTA7Ci0gICAgICAgICAgICB2b2lkKiBtX3NraXBwZWRGcmFtZTE7
Ci0gICAgICAgIH07Ci0gICAgfTsKLSAgICB2b2lkKiBtX3N0YWNrWzFdOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBmYjdhOTAxZmEyNzMxNDgzZjRlMzZhZGNmMzJhZWU4M2VmZmQyNDFjLi5jNWQyZTJlNzQ3YTNi
NDU3NzkyMGZhMDY3MWZhYjM3MzhlZTQ4ODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTQwMCw2ICs0MDAsOCBAQAogCQlGRTg5MjVCMDFEMDBEQUVDMDA0
NjkwN0UgLyogSW5kZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFODkyNUFGMUQwMERBRUMwMDQ2OTA3RSAvKiBJbmRlbnRlci5oICovOyB9Owog
CQlGRURBQ0QzRDE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURBQ0QzQjE2MzBGODNGMDBDNjk2
MzQgLyogU3RhY2tTdGF0cy5jcHAgKi87IH07CiAJCUZFREFDRDNFMTYzMEY4M0YwMEM2OTYzNCAv
KiBTdGFja1N0YXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRURBQ0QzQzE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oICovOyB9OworCQk5
MEJFMTAwMDczOTk0MDZFODZFOTRDQkIgLyogU3RhY2tUcmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUY3RDZDRDU5RDg2NDJBOEEwREE4NkFEIC8q
IFN0YWNrVHJhY2UuaCAqLzsgfTsKKwkJMzMzN0RCOUNFNzQzNDEwRkFGMDc2RTE3IC8qIFN0YWNr
VHJhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzEzRURFQzk3NzhFNDlDOUJFQTkxQ0ZDIC8qIFN0YWNrVHJhY2UuY3BwICovOyB9OwogLyogRW5k
IFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSBzZWN0aW9uICovCkBAIC04MTIsNiArODE0LDggQEAKIAkJRkU4OTI1QUYxRDAwREFFQzAwNDY5
MDdFIC8qIEluZGVudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZGVu
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREFDRDNCMTYzMEY4M0YwMEM2
OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFN0YWNrU3RhdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRURBQ0Qz
QzE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdGFja1N0YXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVG
N0Q2Q0Q1OUQ4NjQyQThBMERBODZBRCAvKiBTdGFja1RyYWNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFN0YWNrVHJhY2UuaDsgcGF0aCA9IFN0YWNrVHJhY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEzRURFQzk3NzhFNDlDOUJFQTkxQ0ZDIC8qIFN0YWNr
VHJhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RhY2tUcmFj
ZS5jcHA7IHBhdGggPSBTdGFja1RyYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3
b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMTE4Niw2ICsxMTkwLDggQEAKIAkJCQlBOEE0
NzMwRjE1MUE4MjVCMDA0MTIzRkYgLyogU3RhY2tCb3VuZHMuaCAqLywKIAkJCQlGRURBQ0QzQjE2
MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi8sCiAJCQkJRkVEQUNEM0MxNjMwRjgz
RjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAqLywKKwkJCQlFRjdENkNENTlEODY0MkE4QTBEQTg2
QUQgLyogU3RhY2tUcmFjZS5oICovLAorCQkJCTMxM0VERUM5Nzc4RTQ5QzlCRUE5MUNGQyAvKiBT
dGFja1RyYWNlLmNwcCAqLywKIAkJCQlBOEE0NzMxMDE1MUE4MjVCMDA0MTIzRkYgLyogU3RhdGlj
Q29uc3RydWN0b3JzLmggKi8sCiAJCQkJQThBNDczMTExNTFBODI1QjAwNDEyM0ZGIC8qIFN0ZExp
YkV4dHJhcy5oICovLAogCQkJCUM0RjhBOTM2MTlDNjVFQjQwMEIyQjE1RCAvKiBTdG9wd2F0Y2gu
aCAqLywKQEAgLTE2MzQsNiArMTY0MCw3IEBACiAJCQkJQThBNDc0MjYxNTFBODI1QjAwNDEyM0ZG
IC8qIFNwZWN0cnVtLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQyODE1MUE4MjVCMDA0MTIz
RkYgLyogU3RhY2tCb3VuZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFREFDRDNFMTYzMEY4M0Yw
MEM2OTYzNCAvKiBTdGFja1N0YXRzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MEJFMTAwMDczOTk0
MDZFODZFOTRDQkIgLyogU3RhY2tUcmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0Mjkx
NTFBODI1QjAwNDEyM0ZGIC8qIFN0YXRpY0NvbnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThBNDc0MkExNTFBODI1QjAwNDEyM0ZGIC8qIFN0ZExpYkV4dHJhcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzRGOEE5MzcxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xODczLDYgKzE4ODAsNyBAQAogCQkJCUE4QTQ3NDI3MTUxQTgyNUIwMDQxMjNG
RiAvKiBTdGFja0JvdW5kcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzIwMEFCODFFOUE1MzZE
MDAzQjU5RDIgLyogVGhyZWFkSG9sZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFREFDRDNE
MTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMz
MzdEQjlDRTc0MzQxMEZBRjA3NkUxNyAvKiBTdGFja1RyYWNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4QTQ3NDNDMTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdCdWlsZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1QkExNUZCMTgyNDM1QTYwMEE4MkU2OSAvKiBTdHJpbmdDRi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MzExQkQ1QzFFQTgyMkY5MDA1MjUyODEgLyogVGhyZWFkTWVzc2Fn
ZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlv
bnMuY3BwIGIvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKaW5kZXggODYxM2RmNWRlOGY0
YWE3N2ZlNWE4NzhmMzI5NzBmMzYwNGNjZDYwYS4uYmVhZjJkODU4ZDllMjhlZGM1M2Y4ZTgwNTBm
YWQwNmVmNDRlNjUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNp
bmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRlIDx3
dGYvTG9nZ2luZ0FjY3VtdWxhdG9yLmg+CisjaW5jbHVkZSA8d3RmL1N0YWNrVHJhY2UuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTIzOCw2ICsyMzksMTUgQEAgdm9p
ZCBXVEZSZXBvcnRBcmd1bWVudEFzc2VydGlvbkZhaWx1cmUoY29uc3QgY2hhciogZmlsZSwgaW50
IGxpbmUsIGNvbnN0IGNoYXIqIGYKICAgICBwcmludENhbGxTaXRlKGZpbGUsIGxpbmUsIGZ1bmN0
aW9uKTsKIH0KIAorY2xhc3MgQ3Jhc2hMb2dQcmludFN0cmVhbSA6IHB1YmxpYyBQcmludFN0cmVh
bSB7CitwdWJsaWM6CisgICAgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMCkKKyAgICB2b2lkIHZw
cmludGYoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ0xpc3QpIG92ZXJyaWRlCisgICAg
eworICAgICAgICB2cHJpbnRmX3N0ZGVycl9jb21tb24oZm9ybWF0LCBhcmdMaXN0KTsKKyAgICB9
Cit9OworCiB2b2lkIFdURkdldEJhY2t0cmFjZSh2b2lkKiogc3RhY2ssIGludCogc2l6ZSkKIHsK
ICNpZiBPUyhEQVJXSU4pIHx8IChPUyhMSU5VWCkgJiYgZGVmaW5lZChfX0dMSUJDX18pICYmICFk
ZWZpbmVkKF9fVUNMSUJDX18pKQpAQCAtMjYwLDUyICsyNzAsMTMgQEAgdm9pZCBXVEZSZXBvcnRC
YWNrdHJhY2UoKQogICAgIFdURlByaW50QmFja3RyYWNlKHNhbXBsZXMgKyBmcmFtZXNUb1NraXAs
IGZyYW1lcyAtIGZyYW1lc1RvU2tpcCk7CiB9CiAKLSNpZiBPUyhEQVJXSU4pIHx8IE9TKExJTlVY
KQotIyAgaWYgUExBVEZPUk0oR1RLKQotIyAgICBpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRl
ZmluZWQoX19VQ0xJQkNfXykKLSMgICAgICBkZWZpbmUgVVNFX0JBQ0tUUkFDRV9TWU1CT0xTIDEK
LSMgICAgZW5kaWYKLSMgIGVsc2UKLSMgICAgZGVmaW5lIFVTRV9ETEFERFIgMQotIyAgZW5kaWYK
LSNlbmRpZgotCiB2b2lkIFdURlByaW50QmFja3RyYWNlKHZvaWQqKiBzdGFjaywgaW50IHNpemUp
CiB7Ci0jaWYgVVNFKEJBQ0tUUkFDRV9TWU1CT0xTKQotICAgIGNoYXIqKiBzeW1ib2xzID0gYmFj
a3RyYWNlX3N5bWJvbHMoc3RhY2ssIHNpemUpOwotICAgIGlmICghc3ltYm9scykKLSAgICAgICAg
cmV0dXJuOwotI2VuZGlmCi0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgewot
ICAgICAgICBjb25zdCBjaGFyKiBtYW5nbGVkTmFtZSA9IDA7Ci0gICAgICAgIGNoYXIqIGN4YURl
bWFuZ2xlZCA9IDA7Ci0jaWYgVVNFKEJBQ0tUUkFDRV9TWU1CT0xTKQotICAgICAgICBtYW5nbGVk
TmFtZSA9IHN5bWJvbHNbaV07Ci0jZWxpZiBVU0UoRExBRERSKQotICAgICAgICBEbF9pbmZvIGlu
Zm87Ci0gICAgICAgIGlmIChkbGFkZHIoc3RhY2tbaV0sICZpbmZvKSAmJiBpbmZvLmRsaV9zbmFt
ZSkKLSAgICAgICAgICAgIG1hbmdsZWROYW1lID0gaW5mby5kbGlfc25hbWU7Ci0gICAgICAgIGlm
IChtYW5nbGVkTmFtZSkKLSAgICAgICAgICAgIGN4YURlbWFuZ2xlZCA9IGFiaTo6X19jeGFfZGVt
YW5nbGUobWFuZ2xlZE5hbWUsIDAsIDAsIDApOwotI2VuZGlmCi0gICAgICAgIGNvbnN0IGludCBm
cmFtZU51bWJlciA9IGkgKyAxOwotICAgICAgICBpZiAobWFuZ2xlZE5hbWUgfHwgY3hhRGVtYW5n
bGVkKQotICAgICAgICAgICAgcHJpbnRmX3N0ZGVycl9jb21tb24oIiUtM2QgJXAgJXNcbiIsIGZy
YW1lTnVtYmVyLCBzdGFja1tpXSwgY3hhRGVtYW5nbGVkID8gY3hhRGVtYW5nbGVkIDogbWFuZ2xl
ZE5hbWUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBwcmludGZfc3RkZXJyX2NvbW1vbigi
JS0zZCAlcFxuIiwgZnJhbWVOdW1iZXIsIHN0YWNrW2ldKTsKLSAgICAgICAgZnJlZShjeGFEZW1h
bmdsZWQpOwotICAgIH0KLQotI2lmIFVTRShCQUNLVFJBQ0VfU1lNQk9MUykKLSAgICBmcmVlKHN5
bWJvbHMpOwotI2VuZGlmCisgICAgQ3Jhc2hMb2dQcmludFN0cmVhbSBvdXQ7CisgICAgU3RhY2tU
cmFjZSBzdGFja1RyYWNlKHN0YWNrLCBzaXplKTsKKyAgICBvdXQucHJpbnQoc3RhY2tUcmFjZSk7
CiB9CiAKLSN1bmRlZiBVU0VfQkFDS1RSQUNFX1NZTUJPTFMKLSN1bmRlZiBVU0VfRExBRERSCi0K
IHN0YXRpYyBXVEZDcmFzaEhvb2tGdW5jdGlvbiBnbG9iYWxIb29rID0gMDsKIAogdm9pZCBXVEZT
ZXRDcmFzaEhvb2soV1RGQ3Jhc2hIb29rRnVuY3Rpb24gZnVuY3Rpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDc0MmU2NTU1NjIzMjQ0MTg2OGY2MjA5MjVlMWRmYjQ3ZWEyNDY2ZTkuLjI1ZWVj
ODQ0ZWVmN2NkYzE1YzIyZmE1NDNiOTVlN2MzNDJiZWVlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CkBAIC0xMjQsNiArMTI0LDcgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgU21hbGxQdHJTZXQuaAog
ICAgIFN0YWNrQm91bmRzLmgKICAgICBTdGFja1N0YXRzLmgKKyAgICBTdGFja1RyYWNlLmgKICAg
ICBTdGF0aWNDb25zdHJ1Y3RvcnMuaAogICAgIFN0ZExpYkV4dHJhcy5oCiAgICAgU3RvcHdhdGNo
LmgKQEAgLTI0MSw2ICsyNDIsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBTaXhDaGFyYWN0ZXJI
YXNoLmNwcAogICAgIFN0YWNrQm91bmRzLmNwcAogICAgIFN0YWNrU3RhdHMuY3BwCisgICAgU3Rh
Y2tUcmFjZS5jcHAKICAgICBTdHJpbmdQcmludFN0cmVhbS5jcHAKICAgICBUaHJlYWRNZXNzYWdl
LmNwcAogICAgIFRocmVhZGluZy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGU4Y2Y3YjQ4NWMyZWQ1ZDAw
YzkxYTA2ZjA0ZjkxNGU2ZjY4NjZhMzkuLjEyOTFlNDcyMTY2YmNmZTg2YTU5MTg3NTI5OGE4Nzk5
MjE3ZTcwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtNjYxLDYgKzY2MSwxNyBAQAogI2RlZmluZSBIQVZF
X01BQ0hJTkVfQ09OVEVYVCAxCiAjZW5kaWYKIAorI2lmIE9TKERBUldJTikgfHwgT1MoTElOVVgp
CisjICBpZiBQTEFURk9STShHVEspCisjICAgIGlmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVm
aW5lZChfX1VDTElCQ19fKQorIyAgICAgIGRlZmluZSBIQVZFX0JBQ0tUUkFDRV9TWU1CT0xTIDEK
KyMgICAgZW5kaWYKKyMgIGVsc2UKKyMgICAgZGVmaW5lIEhBVkVfRExBRERSIDEKKyMgIGVuZGlm
CisjZW5kaWYKKworCiAvKiBFTkFCTEUgbWFjcm8gZGVmYXVsdHMgKi8KIAogLyogRklYTUU6IG1v
dmUgb3V0IGFsbCBFTkFCTEUoKSBkZWZpbmVzIGZyb20gaGVyZSB0byBGZWF0dXJlRGVmaW5lcy5o
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja1RyYWNlLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL1N0YWNrVHJhY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwYWE4OGExYmM4ZDMyMWQzYjk5NGRk
ZWNmYmQ5N2YyOGYzYjY3N2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGFj
a1RyYWNlLmNwcApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdGFja1Ry
YWNlLmgiCisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9Qcmlu
dFN0cmVhbS5oPgorCisjaWYgSEFWRShCQUNLVFJBQ0VfU1lNQk9MUykgJiYgSEFWRShETEFERFIp
CisjaW5jbHVkZSA8Y3h4YWJpLmg+CisjaW5jbHVkZSA8ZGxmY24uaD4KKyNpbmNsdWRlIDxleGVj
aW5mby5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCitBTFdBWVNfSU5MSU5FIHNpemVf
dCBTdGFja1RyYWNlOjppbnN0YW5jZVNpemUoaW50IGNhcGFjaXR5KQoreworICAgIEFTU0VSVChj
YXBhY2l0eSA+PSAxKTsKKyAgICByZXR1cm4gc2l6ZW9mKFN0YWNrVHJhY2UpICsgKGNhcGFjaXR5
IC0gMSkgKiBzaXplb2Yodm9pZCopOworfQorCitTdGFja1RyYWNlKiBTdGFja1RyYWNlOjpjYXB0
dXJlU3RhY2tUcmFjZShpbnQgbWF4RnJhbWVzKQoreworICAgIG1heEZyYW1lcyA9IHN0ZDo6bWF4
KDEsIG1heEZyYW1lcyk7CisgICAgc2l6ZV90IHNpemVUb0FsbG9jYXRlID0gaW5zdGFuY2VTaXpl
KG1heEZyYW1lcyk7CisgICAgU3RhY2tUcmFjZSogdHJhY2UgPSBuZXcgKE5vdE51bGwsIGZhc3RN
YWxsb2Moc2l6ZVRvQWxsb2NhdGUpKSBTdGFja1RyYWNlKCk7CisKKyAgICBzdGF0aWMgY29uc3Qg
aW50IGZyYW1lc1RvU2tpcCA9IDI7CisgICAgaW50IG51bWJlck9mRnJhbWVzID0gbWF4RnJhbWVz
ICsgZnJhbWVzVG9Ta2lwOworCisgICAgV1RGR2V0QmFja3RyYWNlKCZ0cmFjZS0+bV9za2lwcGVk
RnJhbWUwLCAmbnVtYmVyT2ZGcmFtZXMpOworICAgIEFTU0VSVChudW1iZXJPZkZyYW1lcyA+IGZy
YW1lc1RvU2tpcCk7CisgICAgdHJhY2UtPm1fc2l6ZSA9IG51bWJlck9mRnJhbWVzIC0gZnJhbWVz
VG9Ta2lwOworICAgIHRyYWNlLT5tX2NhcGFjaXR5ID0gbWF4RnJhbWVzOworCisgICAgcmV0dXJu
IHRyYWNlOworfQorCit2b2lkIFN0YWNrVHJhY2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKK3sKKyAgICBjb25zdCBhdXRvKiBzdGFjayA9IHRoaXMtPnN0YWNrKCk7CisjaWYgSEFWRShC
QUNLVFJBQ0VfU1lNQk9MUykKKyAgICBjaGFyKiogc3ltYm9scyA9IGJhY2t0cmFjZV9zeW1ib2xz
KHN0YWNrLCBtX3NpemUpOworICAgIGlmICghc3ltYm9scykKKyAgICAgICAgcmV0dXJuOworI2Vu
ZGlmCisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKSB7CisgICAgICAgIGNv
bnN0IGNoYXIqIG1hbmdsZWROYW1lID0gbnVsbHB0cjsKKyAgICAgICAgY2hhciogY3hhRGVtYW5n
bGVkID0gbnVsbHB0cjsKKyNpZiBIQVZFKEJBQ0tUUkFDRV9TWU1CT0xTKQorICAgICAgICBtYW5n
bGVkTmFtZSA9IHN5bWJvbHNbaV07CisjZWxpZiBIQVZFKERMQUREUikKKyAgICAgICAgRGxfaW5m
byBpbmZvOworICAgICAgICBpZiAoZGxhZGRyKHN0YWNrW2ldLCAmaW5mbykgJiYgaW5mby5kbGlf
c25hbWUpCisgICAgICAgICAgICBtYW5nbGVkTmFtZSA9IGluZm8uZGxpX3NuYW1lOworICAgICAg
ICBpZiAobWFuZ2xlZE5hbWUpIHsKKyAgICAgICAgICAgIGludCBzdGF0dXMgPSAwOworICAgICAg
ICAgICAgY3hhRGVtYW5nbGVkID0gYWJpOjpfX2N4YV9kZW1hbmdsZShtYW5nbGVkTmFtZSwgbnVs
bHB0ciwgbnVsbHB0ciwgJnN0YXR1cyk7CisgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0
byB1c2UgYXNzZXJ0IGhlcmUgc2luY2UgdGhpcyBTdGFja1RyYWNlIHdpbGwgYmUgdXNlZCBieSBB
U1NFUlQgaXRzZWxmLgorICAgICAgICAgICAgLy8gSWYgZGVtYW5nbGUgaXMgZmFpbGVkLCBjeGFE
ZW1hbmdsZWQgYmVjb21lcyBudWxscHRyLiBBbmQgaXQgaXMgaGFuZGxlZCB3ZWxsIGluIHRoZSBm
b2xsb3dpbmcgc2VxdWVuY2UuCisgICAgICAgICAgICBVTlVTRURfUEFSQU0oc3RhdHVzKTsKKyAg
ICAgICAgfQorI2VuZGlmCisgICAgICAgIGNvbnN0IGludCBmcmFtZU51bWJlciA9IGkgKyAxOwor
ICAgICAgICBpZiAobWFuZ2xlZE5hbWUgfHwgY3hhRGVtYW5nbGVkKQorICAgICAgICAgICAgb3V0
LnByaW50ZigiJS0zZCAlcCAlc1xuIiwgZnJhbWVOdW1iZXIsIHN0YWNrW2ldLCBjeGFEZW1hbmds
ZWQgPyBjeGFEZW1hbmdsZWQgOiBtYW5nbGVkTmFtZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG91dC5wcmludGYoIiUtM2QgJXBcbiIsIGZyYW1lTnVtYmVyLCBzdGFja1tpXSk7CisKKyAg
ICAgICAgaWYgKGN4YURlbWFuZ2xlZCkKKyAgICAgICAgICAgIGZyZWUoY3hhRGVtYW5nbGVkKTsK
KyAgICB9CisKKyNpZiBIQVZFKEJBQ0tUUkFDRV9TWU1CT0xTKQorICAgIGZyZWUoc3ltYm9scyk7
CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9TdGFja1RyYWNlLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdGFja1RyYWNlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTVlZmU5ZTdhMzMyZDYwYTgwMGI2MGQ5MmMxNjBjZmRiM2Q0MWM2YwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrVHJhY2UuaApAQCAtMCwwICsxLDgzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
K25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKKworY2xhc3MgU3RhY2tUcmFj
ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFN0
YWNrVHJhY2UqIGNhcHR1cmVTdGFja1RyYWNlKGludCBtYXhGcmFtZXMpOworCisgICAgLy8gQm9y
cm93ZWQgc3RhY2sgdHJhY2UuCisgICAgU3RhY2tUcmFjZSh2b2lkKiogc3RhY2ssIGludCBzaXpl
KQorICAgICAgICA6IG1fc2l6ZShzaXplKQorICAgICAgICAsIG1fY2FwYWNpdHkoMCkKKyAgICAg
ICAgLCBtX2JvcnJvd2VkU3RhY2soc3RhY2spCisgICAgeyB9CisKKyAgICBpbnQgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIHZvaWQqIGNvbnN0ICogc3RhY2soKSBjb25zdAor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2NhcGFjaXR5KQorICAgICAgICAgICAgcmV0dXJuIG1fYm9y
cm93ZWRTdGFjazsKKyAgICAgICAgcmV0dXJuIG1fc3RhY2s7CisgICAgfQorCisgICAgdm9pZCBk
dW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgaW5saW5lIHN0YXRpYyBz
aXplX3QgaW5zdGFuY2VTaXplKGludCBjYXBhY2l0eSk7CisKKyAgICBTdGFja1RyYWNlKCkKKyAg
ICAgICAgOiBtX3NpemUoMCkKKyAgICB7IH0KKworICAgIC8vIFdlIHN0cnVjdHVyZSB0aGUgdG9w
IGZpZWxkcyB0aGlzIHdheSBiZWNhdXNlIHRoZSB1bmRlcmx5aW5nIHN0YWNrIGNhcHR1cmUKKyAg
ICAvLyBmYWNpbGl0eSB3aWxsIGNhcHR1cmUgZnJvbSB0aGUgdG9wIG9mIHRoZSBzdGFjaywgYW5k
IHdlJ2xsIG5lZWQgdG8gc2tpcCB0aGUKKyAgICAvLyB0b3AgMiBmcmFtZSB3aGljaCBpcyBvZiBu
byBpbnRlcmVzdC4gU2V0dGluZyB1cCB0aGUgZmllbGRzIGxheW91dCB0aGlzIHdheQorICAgIC8v
IGFsbG93cyB1cyB0byBjYXB0dXJlIHRoZSBzdGFjayBpbiBwbGFjZSBhbmQgbWluaW1pemUgc3Bh
Y2Ugd2FzdGFnZS4KKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBp
bnQgbV9zaXplOworICAgICAgICAgICAgaW50IG1fY2FwYWNpdHk7CisgICAgICAgIH07CisgICAg
ICAgIHN0cnVjdCB7CisgICAgICAgICAgICB2b2lkKiBtX3NraXBwZWRGcmFtZTA7CisgICAgICAg
ICAgICB2b2lkKiBtX3NraXBwZWRGcmFtZTE7CisgICAgICAgIH07CisgICAgfTsKKyAgICB1bmlv
biB7CisgICAgICAgIHZvaWQqKiBtX2JvcnJvd2VkU3RhY2s7CisgICAgICAgIHZvaWQqIG1fc3Rh
Y2tbMV07CisgICAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlN0
YWNrVHJhY2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307951</attachid>
            <date>2017-04-23 20:45:00 -0700</date>
            <delta_ts>2017-04-23 20:57:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171199-20170424124458.patch</filename>
            <type>text/plain</type>
            <size>44096</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MjBmNDQxNDM4MTE4M2Q0ZTM3NjBhMjU4NDNiOGRhN2JlODk4NWYzLi4yYjMyNGU1YWFjMTRjNGYw
ZWJmMzFmY2MxOWRjOTQ5ZmViZGUwYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxNy0wNC0yMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBNb3ZlIEpTQyB0b29scy9TdGFja1RyYWNlIHRvIFdURiBh
bmQgdW5pZnkgc3RhY2sgdHJhY2UgZHVtcCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzExOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYW4gdXRpbGl0eSBtZXRob2Qg
dG8gcHJvZHVjZSBkZW1hbmdsZWQgbmFtZXMgd2l0aCBkbGFkZHIuCisgICAgICAgIEl0IGZpeGVz
IHNldmVyYWwgbWVtb3J5IGxlYWtzIGJlY2F1c2UgdGhlIHJlc3VsdCBvZiBhYmk6Ol9fY3hhX2Rl
bWFuZ2xlKCkKKyAgICAgICAgbmVlZHMgdG8gYmUgYGZyZWVgLWVkLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyOjphcHBlbmRBUElCYWNrdHJhY2UpOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxp
bmdQcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrRnJh
bWU6OmRpc3BsYXlOYW1lKToKKyAgICAgICAgKiB0b29scy9DZWxsUHJvZmlsZS5oOgorICAgICAg
ICAqIHRvb2xzL0NvZGVQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZVByb2ZpbGU6OnJl
cG9ydCk6CisgICAgICAgIChKU0M6OnN5bWJvbE5hbWUpOiBEZWxldGVkLgorCiAyMDE3LTA0LTIz
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgdGVzdDI2
MjogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9OdW1iZXIvcHJvdG90eXBlL3RvUHJlY2lzaW9uL25h
bi5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwppbmRleCBlMGVjZjliOWQ4Zjk3YWJiNTFhNzUxYjc5YzE1ZDA0YTM2ZTgwMjA0Li5kNzI4
ODZkZDIzMTgyNjdkNmVjNDEyZjBkNDk1OTkyMjBiYWRkNTUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBA
CisyMDE3LTA0LTIzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIFtXVEZdIE1vdmUgSlNDIHRvb2xzL1N0YWNrVHJhY2UgdG8gV1RGIGFuZCB1bmlmeSBz
dGFjayB0cmFjZSBkdW1wIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MTE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEpTQyB0b29scy9TdGFja1RyYWNlJ3MgZHVtcCBjb2RlIGlzIGFsbW9zdCBp
ZGVudGljYWwgdG8gV1RGIEFzc2VydGlvbnMnCisgICAgICAgIHN0YWNrIHRyYWNlIGR1bXAgY29k
ZS4gVGhpcyBwYXRjaCBtb3ZlcyB0b29scy9TdGFja1RyYWNlIHRvIFdURiBhbmQgdXNlCisgICAg
ICAgIGl0IGluIEFzc2VydGlvbnMuIEl0IHVuaWZpZXMgdGhlIHR3byBkdXBsaWNhdGUgaW1wbGVt
ZW50YXRpb25zIGludG8gb25lLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuY3BwOgorICAgICAgICAqIHd0Zi9DTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvRGVmYXVsdEZyZWUuaDogQ29waWVkIGZyb20gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1N0YWNrVHJhY2UuaC4KKyAgICAgICAgKFdURjo6RGVm
YXVsdEZyZWU6Om9wZXJhdG9yKCkpOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAg
ICAqIHd0Zi9TdGFja1RyYWNlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9TdGFja1RyYWNlLmNwcC4KKyAgICAgICAgKFdURjo6U3RhY2tUcmFjZTo6aW5zdGFu
Y2VTaXplKToKKyAgICAgICAgKFdURjo6U3RhY2tUcmFjZTo6Y2FwdHVyZVN0YWNrVHJhY2UpOgor
ICAgICAgICAoV1RGOjpTdGFja1RyYWNlOjpkdW1wKToKKyAgICAgICAgKiB3dGYvU3RhY2tUcmFj
ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1N0YWNrVHJhY2Uu
aC4KKyAgICAgICAgKFdURjo6U3RhY2tUcmFjZTo6U3RhY2tUcmFjZSk6CisgICAgICAgIChXVEY6
OlN0YWNrVHJhY2U6OnNpemUpOgorICAgICAgICAoV1RGOjpTdGFja1RyYWNlOjpzdGFjayk6Cisg
ICAgICAgIChXVEY6OlN0YWNrVHJhY2U6OkRlbWFuZ2xlRW50cnk6OkRlbWFuZ2xlRW50cnkpOgor
ICAgICAgICAoV1RGOjpTdGFja1RyYWNlOjpEZW1hbmdsZUVudHJ5OjptYW5nbGVkTmFtZSk6Cisg
ICAgICAgIChXVEY6OlN0YWNrVHJhY2U6OkRlbWFuZ2xlRW50cnk6OmRlbWFuZ2xlZE5hbWUpOgor
CiAyMDE3LTA0LTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAg
ICAgICAgIFtKU0NdIEdldCBzdGFjayBwb2ludGVyIHdpdGhvdXQgcHRocmVhZCBhdHRyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzE5YjNlMDZjYTUyNTg2OWMwYjA1MzJk
M2ZmMjliNmZjMjhhOWM5Ny4uMzRhN2NlNzA0YTljN2QxY2E4MGNlNDEzMzliZTQ4ZDkwNDA1OTFj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTMzLDcgKzkzMyw2IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgdG9vbHMvSlNEb2xsYXJWTS5jcHAKICAg
ICB0b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAogICAgIHRvb2xzL1NpZ2lsbENyYXNoQW5h
bHl6ZXIuY3BwCi0gICAgdG9vbHMvU3RhY2tUcmFjZS5jcHAKICAgICB0b29scy9WTUluc3BlY3Rv
ci5jcHAKIAogICAgIHdhc20vSlNXZWJBc3NlbWJseS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNDkwYTYwNmY5MDhlZmNhYzY3NzIwZDk1ZDQzZjU2MTYyYmZjMzZkMC4uMjVi
M2NmYjg1MzAyYjg5MGYyMDY3ZDE2NWM5ZDg3YTZlOWNjZjhjNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTI0MTAsOCArMjQxMCw2IEBACiAJCUZFMUJEMDIxMUU3MjAyNzkwMDEz
NEJDOSAvKiBDZWxsUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUxQkQwMjAxRTcyMDI3MDAwMTM0QkM5IC8qIENlbGxQcm9maWxlLmggKi87
IH07CiAJCUZFMUJEMDI0MUU3MjA1MzgwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQkQwMjIxRTcyMDUy
RjAwMTM0QkM5IC8qIEhlYXBWZXJpZmllci5jcHAgKi87IH07CiAJCUZFMUJEMDI1MUU3MjA1Mzgw
MDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMUJEMDIzMUU3MjA1MkYwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIu
aCAqLzsgfTsKLQkJRkUxQkQwMkIxRTcyMUI0QzAwMTM0QkM5IC8qIFN0YWNrVHJhY2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUJEMDJBMUU3MjFC
MzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmggKi87IH07Ci0JCUZFMUJEMDJDMUU3MjFCNTEwMDEz
NEJDOSAvKiBTdGFja1RyYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMUJEMDI5MUU3MjFCMzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCAq
LzsgfTsKIAkJRkUxQzBGRkQxQjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQzBGRkMxQjE5M0U5ODAw
QjUzRkNBIC8qIEV4Y2VwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUZFMUMwRkZGMUIxOTRGRDEwMEI1M0ZDQSAvKiBFeGNlcHRpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQzBGRkUx
QjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgKi87IH07CiAJCUZFMjBDRTlEMTVGMDRB
OTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29w
LmNwcCAqLzsgfTsKQEAgLTUwNDAsOCArNTAzOCw2IEBACiAJCUZFMUJEMDIwMUU3MjAyNzAwMDEz
NEJDOSAvKiBDZWxsUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
ZWxsUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTFCRDAyMjFFNzIw
NTJGMDAxMzRCQzkgLyogSGVhcFZlcmlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEhlYXBWZXJpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFMUJEMDIzMUU3MjA1MkYwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcFZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUZFMUJEMDI5MUU3MjFCMzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrVHJhY2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTFCRDAyQTFFNzIxQjM3MDAxMzRCQzkgLyogU3Rh
Y2tUcmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1RyYWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMUMwRkZDMUIxOTNFOTgwMEI1M0ZDQSAv
KiBFeGNlcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMUMwRkZFMUIxOTRGRDEwMEI1M0ZD
QSAvKiBFeGNlcHRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RXhjZXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUyMENFOUIxNUYw
NEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gTExJbnRDTG9vcC5jcHA7IHBhdGggPSBsbGludC9MTEludENMb29wLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwODEsOCArNzA3Nyw2IEBACiAJCQkJODZC
NTgyMkMxNEQyMkY1RjAwQTlDMzA2IC8qIFByb2ZpbGVUcmVlTm9kZS5oICovLAogCQkJCUZFMzAy
MkQwMUUzRDczOTYwMEJBQzQ5MyAvKiBTaWdpbGxDcmFzaEFuYWx5emVyLmNwcCAqLywKIAkJCQlG
RTMwMjJEMTFFM0Q3Mzk2MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5oICovLAotCQkJ
CUZFMUJEMDI5MUU3MjFCMzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCAqLywKLQkJCQlGRTFC
RDAyQTFFNzIxQjM3MDAxMzRCQzkgLyogU3RhY2tUcmFjZS5oICovLAogCQkJCTg2QjU4MjZBMTRE
MzVENTEwMEE5QzMwNiAvKiBUaWVyZWRNTWFwQXJyYXkuaCAqLywKIAkJCQlGRTMwMjJENDFFNDI4
NTY3MDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuY3BwICovLAogCQkJCUZFMzAyMkQ1MUU0Mjg1Njcw
MEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oICovLApAQCAtODkwNiw3ICs4OTAwLDYgQEAKIAkJCQlG
RTE4N0EwRDFDMDMwRDVDMDAzOEJCQ0EgLyogSklURGl2R2VuZXJhdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZCMTRFMUYxODEyNEFDRTAwOUI2QjREIC8qIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRTFCRDAyQjFFNzIxQjRDMDAxMzRCQzkg
LyogU3RhY2tUcmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZDQzg1QTEwRUU3OUE0NzAwMjg4
NjgyIC8qIEpJVElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFM0EwNkJFMUMxMTA0MTIw
MDM5MEZERCAvKiBKSVRMZWZ0U2hpZnRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5
MjMzQzJCMUQzNDcxNTcwMEM1QTgzNCAvKiBKSVRNYXRoSUMuaCBpbiBIZWFkZXJzICovLApAQCAt
MTAzNjIsNyArMTAzNTUsNiBAQAogCQkJCTBGQzk3RjQxMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdX
YXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGREIyQ0U3
MTc0ODMwQTIwMDdCM0MxQiAvKiBERkdXb3JrbGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkUwNTAxNzFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUZFMUJEMDJDMUU3MjFCNTEwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRTA1MDE1MUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVu
dHNPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRUJCQUIxREVERjk1MDAwOTkwMzY5
IC8qIERpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQzODZBNzQx
REQ2OTg5NTAwODY1MkM0IC8qIERpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDMxMzczMGE1
NzAyOTcxNTRhYjhhNTE5YmM3NzM2MmE1N2ZiMjMxMWIuLmMxZjE0NGEwZWY3ZDU1ZjYwYjdlM2Nm
MTgyMGZmMzczNGQyMTQxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKQEAgLTQ3LDE0ICs0Nyw5IEBACiAjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAj
aW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5oIgorI2luY2x1ZGUgPHd0Zi9TdGFja1RyYWNlLmg+CiAjaW5jbHVkZSA8d3RmL1N0b3B3
YXRjaC5oPgogCi0jaWYgT1MoREFSV0lOKSB8fCAoT1MoTElOVVgpICYmICFQTEFURk9STShHVEsp
KQotI2luY2x1ZGUgPGN4eGFiaS5oPgotI2luY2x1ZGUgPGRsZmNuLmg+Ci0jaW5jbHVkZSA8ZXhl
Y2luZm8uaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmgiCiAjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdG9y
LmgiCkBAIC0yMDAsMTggKzE5NSwxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlcjo6YXBwZW5kQVBJQmFja3RyYWNlKFNjcmlwdENhbGxTdGFjayYgY2FsbAogICAgIHZv
aWQqKiBzdGFjayA9IHNhbXBsZXMgKyBmcmFtZXNUb1NraXA7CiAgICAgaW50IHNpemUgPSBmcmFt
ZXMgLSBmcmFtZXNUb1NraXA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsK
LSAgICAgICAgY29uc3QgY2hhciogbWFuZ2xlZE5hbWUgPSBudWxscHRyOwotICAgICAgICBjaGFy
KiBjeGFEZW1hbmdsZWQgPSBudWxscHRyOwotICAgICAgICBEbF9pbmZvIGluZm87Ci0gICAgICAg
IGlmIChkbGFkZHIoc3RhY2tbaV0sICZpbmZvKSAmJiBpbmZvLmRsaV9zbmFtZSkKLSAgICAgICAg
ICAgIG1hbmdsZWROYW1lID0gaW5mby5kbGlfc25hbWU7Ci0gICAgICAgIGlmIChtYW5nbGVkTmFt
ZSkKLSAgICAgICAgICAgIGN4YURlbWFuZ2xlZCA9IGFiaTo6X19jeGFfZGVtYW5nbGUobWFuZ2xl
ZE5hbWUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICBpZiAobWFuZ2xlZE5h
bWUgfHwgY3hhRGVtYW5nbGVkKQotICAgICAgICAgICAgY2FsbFN0YWNrLmFwcGVuZChTY3JpcHRD
YWxsRnJhbWUoY3hhRGVtYW5nbGVkID8gY3hhRGVtYW5nbGVkIDogbWFuZ2xlZE5hbWUsIEFTQ0lJ
TGl0ZXJhbCgiW25hdGl2ZSBjb2RlXSIpLCBub1NvdXJjZUlELCAwLCAwKSk7CisgICAgICAgIGF1
dG8gZGVtYW5nbGVkID0gU3RhY2tUcmFjZTo6ZGVtYW5nbGUoc3RhY2tbaV0pOworICAgICAgICBp
ZiAoZGVtYW5nbGVkKQorICAgICAgICAgICAgY2FsbFN0YWNrLmFwcGVuZChTY3JpcHRDYWxsRnJh
bWUoZGVtYW5nbGVkLT5kZW1hbmdsZWROYW1lKCkgPyBkZW1hbmdsZWQtPmRlbWFuZ2xlZE5hbWUo
KSA6IGRlbWFuZ2xlZC0+bWFuZ2xlZE5hbWUoKSwgQVNDSUlMaXRlcmFsKCJbbmF0aXZlIGNvZGVd
IiksIG5vU291cmNlSUQsIDAsIDApKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY2FsbFN0
YWNrLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoQVNDSUlMaXRlcmFsKCI/IiksIEFTQ0lJTGl0ZXJh
bCgiW25hdGl2ZSBjb2RlXSIpLCBub1NvdXJjZUlELCAwLCAwKSk7Ci0gICAgICAgIGZyZWUoY3hh
RGVtYW5nbGVkKTsKICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjYWxsU3RhY2spOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNw
cAppbmRleCBjNDYwNGQ0YjdjZmZjNDRmN2EwNDM2ZTRkNDU4NTc0Y2YzZjg3OWQ4Li45MGRkZDIy
YmFlMDdlZTRiNjdjYTA3ODFjZGYyODk3YTFiZGExODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcApAQCAtNDgsMTMgKzQ4LDkg
QEAKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdGFja1RyYWNlLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi0jaWYgT1MoREFSV0lOKSB8fCBPUyhMSU5VWCkKLSNp
bmNsdWRlIDxjeHhhYmkuaD4KLSNpbmNsdWRlIDxkbGZjbi5oPgotI2VuZGlmCi0KIG5hbWVzcGFj
ZSBKU0MgewogCiBzdGF0aWMgZG91YmxlIHNOdW1Ub3RhbFN0YWNrVHJhY2VzID0gMDsKQEAgLTc1
MCwxNyArNzQ2LDExIEBAIFN0cmluZyBTYW1wbGluZ1Byb2ZpbGVyOjpTdGFja0ZyYW1lOjpkaXNw
bGF5TmFtZShWTSYgdm0pCiAgICAgfQogCiAgICAgaWYgKGZyYW1lVHlwZSA9PSBGcmFtZVR5cGU6
OlVua25vd24gfHwgZnJhbWVUeXBlID09IEZyYW1lVHlwZTo6QykgewotI2lmIE9TKERBUldJTikg
fHwgT1MoTElOVVgpCisjaWYgSEFWRShETEFERFIpCiAgICAgICAgIGlmIChmcmFtZVR5cGUgPT0g
RnJhbWVUeXBlOjpDKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBtYW5nbGVkTmFtZSA9IG51
bGxwdHI7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBjeGFEZW1hbmdsZWQgPSBudWxscHRyOwot
ICAgICAgICAgICAgRGxfaW5mbyBpbmZvOwotICAgICAgICAgICAgaWYgKGRsYWRkcihjQ29kZVBD
LCAmaW5mbykgJiYgaW5mby5kbGlfc25hbWUpCi0gICAgICAgICAgICAgICAgbWFuZ2xlZE5hbWUg
PSBpbmZvLmRsaV9zbmFtZTsKLSAgICAgICAgICAgIGlmIChtYW5nbGVkTmFtZSkgewotICAgICAg
ICAgICAgICAgIGN4YURlbWFuZ2xlZCA9IGFiaTo6X19jeGFfZGVtYW5nbGUobWFuZ2xlZE5hbWUs
IDAsIDAsIDApOwotICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoY3hhRGVtYW5nbGVkID8g
Y3hhRGVtYW5nbGVkIDogbWFuZ2xlZE5hbWUpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAg
YXV0byBkZW1hbmdsZWQgPSBXVEY6OlN0YWNrVHJhY2U6OmRlbWFuZ2xlKGNDb2RlUEMpOworICAg
ICAgICAgICAgaWYgKGRlbWFuZ2xlZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKGRl
bWFuZ2xlZC0+ZGVtYW5nbGVkTmFtZSgpID8gZGVtYW5nbGVkLT5kZW1hbmdsZWROYW1lKCkgOiBk
ZW1hbmdsZWQtPm1hbmdsZWROYW1lKCkpOwogICAgICAgICAgICAgV1RGOjpkYXRhTG9nKCJjb3Vs
ZG4ndCBnZXQgYSBuYW1lIik7CiAgICAgICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NlbGxQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvQ2VsbFByb2ZpbGUuaAppbmRleCAwN2JiOWE4ZGQ0MjIwMjYwNzRiY2NlZTVkZWE2
YTMyZGM3MWNjYWY2Li43NDE4MzZiN2RkN2I2NjBlODZiYjJhZTE0NGNhMjI0ZTM0OGRkZTlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ2VsbFByb2ZpbGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ2VsbFByb2ZpbGUuaApAQCAtMjYsOSArMjYs
OSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU0NlbGwuaCIKLSNpbmNsdWRlICJTdGFj
a1RyYWNlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSA8d3RmL01vbm90b25p
Y1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tUcmFjZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsZS5jcHAKaW5kZXggZWRm
ZGQ0MzEyZTlkNGZjMWUzNTc4OTY3NDQyNWQzZTFhNzE3YWVjZi4uYjkzYzczZDhjMDhlZmE4MTZj
MzZhMThiYzYyZDRhOTgyNzFhNjE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0NvZGVQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
Q29kZVByb2ZpbGUuY3BwCkBAIC0zMCwxNCArMzAsOSBAQAogI2luY2x1ZGUgIkNvZGVQcm9maWxp
bmcuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiUHJvZmlsZVRyZWVOb2Rl
LmgiCisjaW5jbHVkZSA8d3RmL1N0YWNrVHJhY2UuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotI2lmIE9TKERBUldJTikgfHwgT1MoTElOVVgpCi0jaW5jbHVkZSA8Y3h4YWJp
Lmg+Ci0jaW5jbHVkZSA8ZGxmY24uaD4KLSNpbmNsdWRlIDxleGVjaW5mby5oPgotI2VuZGlmCi0K
IG5hbWVzcGFjZSBKU0MgewogCiAvLyBNYXAgZnJvbSBDb2RlVHlwZSBlbnVtIHRvIGEgY29ycmVz
cG9uZGluZyBuYW1lLgpAQCAtNTIsMjMgKzQ3LDYgQEAgY29uc3QgY2hhciogQ29kZVByb2ZpbGU6
OnNfY29kZVR5cGVOYW1lc1tDb2RlUHJvZmlsZTo6TnVtYmVyT2ZDb2RlVHlwZXNdID0gewogICAg
ICJbW0VuZ2luZUZyYW1lXV0iCiB9OwogCi0vLyBIZWxwZXIgZnVuY3Rpb24sIGZpbmQgdGhlIHN5
bWJvbCBuYW1lIGZvciBhIHBjIGluIEpTQy4KLXN0YXRpYyBjb25zdCBjaGFyKiBzeW1ib2xOYW1l
KHZvaWQqIGFkZHJlc3MpCi17Ci0jaWYgT1MoREFSV0lOKSB8fCBPUyhMSU5VWCkKLSAgICBEbF9p
bmZvIGluZm87Ci0gICAgaWYgKCFkbGFkZHIoYWRkcmVzcywgJmluZm8pIHx8ICFpbmZvLmRsaV9z
bmFtZSkKLSAgICAgICAgcmV0dXJuICI8dW5rbm93bj4iOwotCi0gICAgY29uc3QgY2hhciogbWFu
Z2xlZE5hbWUgPSBpbmZvLmRsaV9zbmFtZTsKLSAgICBjb25zdCBjaGFyKiBjeGFEZW1hbmdsZWQg
PSBhYmk6Ol9fY3hhX2RlbWFuZ2xlKG1hbmdsZWROYW1lLCAwLCAwLCAwKTsKLSAgICByZXR1cm4g
Y3hhRGVtYW5nbGVkID8gY3hhRGVtYW5nbGVkIDogbWFuZ2xlZE5hbWU7Ci0jZWxzZQotICAgIFVO
VVNFRF9QQVJBTShhZGRyZXNzKTsKLSAgICByZXR1cm4gIjx1bmtub3duPiI7Ci0jZW5kaWYKLX0K
LQogLy8gSGVscGVyIGZ1bmN0aW9uLCB0cnVuY2F0ZSB0cmFjZXMgdG8gcHJ1bmUgdGhlIG91dHB1
dCAmIG1ha2UgdmVyeSB2ZXJib3NlIG1vZGUgYSBsaXR0bGUgbW9yZSByZWFkYWJsZS4KIHN0YXRp
YyBib29sIHRydW5jYXRlVHJhY2UoY29uc3QgY2hhciogc3ltYm9sTmFtZSkKIHsKQEAgLTE2Nyw3
ICsxNDUsMTAgQEAgdm9pZCBDb2RlUHJvZmlsZTo6cmVwb3J0KCkKICAgICAgICAgZm9yICh1bnNp
Z25lZCBjb3VudCA9IDA7IGxhc3RFbmdpbmVGcmFtZSA+IHRyYWNlICYmIGNvdW50IDwgcmVjdXJz
aW9uTGltaXQ7ICsrY291bnQpIHsKICAgICAgICAgICAgIC0tbGFzdEVuZ2luZUZyYW1lOwogICAg
ICAgICAgICAgQVNTRVJUKG1fc2FtcGxlc1tsYXN0RW5naW5lRnJhbWVdLnR5cGUgPT0gRW5naW5l
RnJhbWUpOwotICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSA9IHN5bWJvbE5hbWUobV9zYW1w
bGVzW2xhc3RFbmdpbmVGcmFtZV0ucGMpOworICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSA9
ICI8dW5rbm93bj4iOworICAgICAgICAgICAgYXV0byBkZW1hbmdsZWQgPSBTdGFja1RyYWNlOjpk
ZW1hbmdsZShtX3NhbXBsZXNbbGFzdEVuZ2luZUZyYW1lXS5wYyk7CisgICAgICAgICAgICBpZiAo
ZGVtYW5nbGVkKQorICAgICAgICAgICAgICAgIG5hbWUgPSBkZW1hbmdsZWQtPmRlbWFuZ2xlZE5h
bWUoKSA/IGRlbWFuZ2xlZC0+ZGVtYW5nbGVkTmFtZSgpIDogZGVtYW5nbGVkLT5tYW5nbGVkTmFt
ZSgpOwogICAgICAgICAgICAgY2FsbGJhY2tzID0gY2FsbGJhY2tzLT5zYW1wbGVDaGlsZChuYW1l
KTsKICAgICAgICAgICAgIGlmICh0cnVuY2F0ZVRyYWNlKG5hbWUpKQogICAgICAgICAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1N0YWNrVHJh
Y2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1N0YWNrVHJhY2UuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Mjk3NDk5MTljYTQyZjg5ZDMxYWI5MGFmNmJlMGEw
YTQwMDQyYTg0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TdGFja1RyYWNlLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlN0YWNrVHJhY2UuaCIKLQot
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLSNpZiBPUyhEQVJXSU4pIHx8IChPUyhMSU5V
WCkgJiYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9fVUNMSUJDX18pKQotI2luY2x1
ZGUgPGN4eGFiaS5oPgotI2luY2x1ZGUgPGRsZmNuLmg+Ci0jaW5jbHVkZSA8ZXhlY2luZm8uaD4K
LSNlbmRpZgotCi0jaWYgT1MoREFSV0lOKSB8fCBPUyhMSU5VWCkKLSMgIGlmIFBMQVRGT1JNKEdU
SykKLSMgICAgaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9fVUNMSUJDX18pCi0j
ICAgICAgZGVmaW5lIFVTRV9CQUNLVFJBQ0VfU1lNQk9MUyAxCi0jICAgIGVuZGlmCi0jICBlbHNl
Ci0jICAgIGRlZmluZSBVU0VfRExBRERSIDEKLSMgIGVuZGlmCi0jZW5kaWYKLQotbmFtZXNwYWNl
IEpTQyB7Ci0KLUFMV0FZU19JTkxJTkUgc2l6ZV90IFN0YWNrVHJhY2U6Omluc3RhbmNlU2l6ZShp
bnQgY2FwYWNpdHkpCi17Ci0gICAgQVNTRVJUKGNhcGFjaXR5ID49IDEpOwotICAgIHJldHVybiBz
aXplb2YoU3RhY2tUcmFjZSkgKyAoY2FwYWNpdHkgLSAxKSAqIHNpemVvZih2b2lkKik7Ci19Ci0K
LVN0YWNrVHJhY2UqIFN0YWNrVHJhY2U6OmNhcHR1cmVTdGFja1RyYWNlKGludCBtYXhGcmFtZXMp
Ci17Ci0gICAgbWF4RnJhbWVzID0gc3RkOjptYXgoMSwgbWF4RnJhbWVzKTsKLSAgICBzaXplX3Qg
c2l6ZVRvQWxsb2NhdGUgPSBpbnN0YW5jZVNpemUobWF4RnJhbWVzKTsKLSAgICBTdGFja1RyYWNl
KiB0cmFjZSA9IG5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhzaXplVG9BbGxvY2F0ZSkpIFN0YWNr
VHJhY2UoKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgZnJhbWVzVG9Ta2lwID0gMjsKLSAgICBp
bnQgbnVtYmVyT2ZGcmFtZXMgPSBtYXhGcmFtZXMgKyBmcmFtZXNUb1NraXA7Ci0gICAgCi0gICAg
V1RGR2V0QmFja3RyYWNlKCZ0cmFjZS0+bV9za2lwcGVkRnJhbWUwLCAmbnVtYmVyT2ZGcmFtZXMp
OwotICAgIEFTU0VSVChudW1iZXJPZkZyYW1lcyA+IGZyYW1lc1RvU2tpcCk7Ci0gICAgdHJhY2Ut
Pm1fc2l6ZSA9IG51bWJlck9mRnJhbWVzIC0gZnJhbWVzVG9Ta2lwOwotICAgIHRyYWNlLT5tX2Nh
cGFjaXR5ID0gbWF4RnJhbWVzOwotCi0gICAgcmV0dXJuIHRyYWNlOwotfQotCi12b2lkIFN0YWNr
VHJhY2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKLXsKLSNpZiBVU0UoQkFDS1RSQUNF
X1NZTUJPTFMpCi0gICAgY2hhcioqIHN5bWJvbHMgPSBiYWNrdHJhY2Vfc3ltYm9scyhtX3N0YWNr
LCBtX3NpemUpOwotICAgIGlmICghc3ltYm9scykKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0g
ICAgCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkgewotICAgICAgICBjb25z
dCBjaGFyKiBtYW5nbGVkTmFtZSA9IDA7Ci0gICAgICAgIGNoYXIqIGN4YURlbWFuZ2xlZCA9IDA7
Ci0jaWYgVVNFKEJBQ0tUUkFDRV9TWU1CT0xTKQotICAgICAgICBtYW5nbGVkTmFtZSA9IHN5bWJv
bHNbaV07Ci0jZWxpZiBVU0UoRExBRERSKQotICAgICAgICBEbF9pbmZvIGluZm87Ci0gICAgICAg
IGlmIChkbGFkZHIobV9zdGFja1tpXSwgJmluZm8pICYmIGluZm8uZGxpX3NuYW1lKQotICAgICAg
ICAgICAgbWFuZ2xlZE5hbWUgPSBpbmZvLmRsaV9zbmFtZTsKLSAgICAgICAgaWYgKG1hbmdsZWRO
YW1lKQotICAgICAgICAgICAgY3hhRGVtYW5nbGVkID0gYWJpOjpfX2N4YV9kZW1hbmdsZShtYW5n
bGVkTmFtZSwgMCwgMCwgMCk7Ci0jZW5kaWYKLSAgICAgICAgY29uc3QgaW50IGZyYW1lTnVtYmVy
ID0gaSArIDE7Ci0gICAgICAgIGlmIChtYW5nbGVkTmFtZSB8fCBjeGFEZW1hbmdsZWQpCi0gICAg
ICAgICAgICBvdXQucHJpbnRmKCIlLTNkICVwICVzXG4iLCBmcmFtZU51bWJlciwgbV9zdGFja1tp
XSwgY3hhRGVtYW5nbGVkID8gY3hhRGVtYW5nbGVkIDogbWFuZ2xlZE5hbWUpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBvdXQucHJpbnRmKCIlLTNkICVwXG4iLCBmcmFtZU51bWJlciwgbV9z
dGFja1tpXSk7Ci0gICAgICAgIGZyZWUoY3hhRGVtYW5nbGVkKTsKLSAgICB9Ci0gICAgCi0jaWYg
VVNFKEJBQ0tUUkFDRV9TWU1CT0xTKQotICAgIGZyZWUoc3ltYm9scyk7Ci0jZW5kaWYKLX0KLQot
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvU3RhY2tUcmFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1N0YWNrVHJhY2Uu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDkyMDMxNTFjYzdkMjYzYTUzZGM1NDJl
NjZjNTU4ZTQ3NzBjYTkxMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU3RhY2tUcmFjZS5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBTdGFja1RyYWNlIHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBzdGF0aWMgU3RhY2tUcmFjZSogY2FwdHVyZVN0
YWNrVHJhY2UoaW50IG1heEZyYW1lcyk7Ci0KLSAgICBpbnQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZTsgfQotCi0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0KLXByaXZh
dGU6Ci0gICAgaW5saW5lIHN0YXRpYyBzaXplX3QgaW5zdGFuY2VTaXplKGludCBjYXBhY2l0eSk7
Ci0KLSAgICBTdGFja1RyYWNlKCkKLSAgICAgICAgOiBtX3NpemUoMCkKLSAgICB7IH0KLQotICAg
IC8vIFdlIHN0cnVjdHVyZSB0aGUgdG9wIGZpZWxkcyB0aGlzIHdheSBiZWNhdXNlIHRoZSB1bmRl
cmx5aW5nIHN0YWNrIGNhcHR1cmUKLSAgICAvLyBmYWNpbGl0eSB3aWxsIGNhcHR1cmUgZnJvbSB0
aGUgdG9wIG9mIHRoZSBzdGFjaywgYW5kIHdlJ2xsIG5lZWQgdG8gc2tpcCB0aGUKLSAgICAvLyB0
b3AgMiBmcmFtZSB3aGljaCBpcyBvZiBubyBpbnRlcmVzdC4gU2V0dGluZyB1cCB0aGUgZmllbGRz
IGxheW91dCB0aGlzIHdheQotICAgIC8vIGFsbG93cyB1cyB0byBjYXB0dXJlIHRoZSBzdGFjayBp
biBwbGFjZSBhbmQgbWluaW1pemUgc3BhY2Ugd2FzdGFnZS4KLSAgICB1bmlvbiB7Ci0gICAgICAg
IHN0cnVjdCB7Ci0gICAgICAgICAgICBpbnQgbV9zaXplOwotICAgICAgICAgICAgaW50IG1fY2Fw
YWNpdHk7Ci0gICAgICAgIH07Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICB2b2lkKiBt
X3NraXBwZWRGcmFtZTA7Ci0gICAgICAgICAgICB2b2lkKiBtX3NraXBwZWRGcmFtZTE7Ci0gICAg
ICAgIH07Ci0gICAgfTsKLSAgICB2b2lkKiBtX3N0YWNrWzFdOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYjdh
OTAxZmEyNzMxNDgzZjRlMzZhZGNmMzJhZWU4M2VmZmQyNDFjLi5iOWE2NWU4ZDI2ZTNhMGUxOGUz
MDg0YjgzZGRlZWE1Yzk2ZGI0ZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE0MCw2ICsxNDAsNyBAQAogCQkyQ0RFRDBFRjE4MTE1QzM4MDA0REJBNzAg
LyogUnVuTG9vcENGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJDREVEMEVFMTgxMTVDMzgwMDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwICovOyB9Owog
CQkyQ0RFRDBGMzE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQ0RFRDBGMTE4MTE1Qzg1MDA0REJBNzAg
LyogUnVuTG9vcC5jcHAgKi87IH07CiAJCTJDREVEMEY0MTgxMTVDODUwMDREQkE3MCAvKiBSdW5M
b29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQ0RF
RDBGMjE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5oICovOyB9OworCQkzMzM3REI5Q0U3NDM0
MTBGQUYwNzZFMTcgLyogU3RhY2tUcmFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTNFREVDOTc3OEU0OUM5QkVBOTFDRkMgLyogU3RhY2tUcmFj
ZS5jcHAgKi87IH07CiAJCTM3QzdDQzJBMUVBNDBBNzMwMDdCRDk1NiAvKiBXZWFrTGlua2luZy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdDN0NDMjkx
RUE0MEE3MzAwN0JEOTU2IC8qIFdlYWtMaW5raW5nLmggKi87IH07CiAJCTQzMEI0Nzg5MUFBQUFD
MUEwMDEyMjNEQSAvKiBTdHJpbmdDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQzMEI0Nzg3MUFBQUFDMUEwMDEyMjNEQSAvKiBTdHJpbmdDb21t
b24uaCAqLzsgfTsKIAkJNEIyNjgwREQ5Qjk3NDQwMjg5OUVENTcyIC8qIEluZGV4ZWRDb250YWlu
ZXJJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUM2N0M1NDI1ODkzNDhFMjg1QjQ5Njk5IC8qIEluZGV4ZWRDb250YWluZXJJdGVyYXRvci5o
ICovOyB9OwpAQCAtMTc4LDYgKzE3OSw3IEBACiAJCTgzRjJCQURGMUNGOTUyNEUwMDNFOTlDMyAv
KiBGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODNGMkJBREUxQ0Y5NTI0RTAwM0U5OUMzIC8qIEZ1bmN0aW9uLmggKi87IH07CiAJCTgzRkJB
OTMyMTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRkJBOTMxMTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBl
Q2FzdHMuaCAqLzsgfTsKIAkJODZGNDZGNjExQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjQ2RjVG
MUEyODQwRUUwMENDQkYyMiAvKiBSZWZDb3VudGVyLmggKi87IH07CisJCTkwQkUxMDAwNzM5OTQw
NkU4NkU5NENCQiAvKiBTdGFja1RyYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFRjdENkNENTlEODY0MkE4QTBEQTg2QUQgLyogU3RhY2tUcmFjZS5o
ICovOyB9OwogCQk5MzkzNEJEMzE4QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld09iakMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkzNEJEMjE4
QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld09iakMubW0gKi87IH07CiAJCTkzOTM0QkQ1MThB
MUYxNjkwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MzRCRDQxOEExRjE2OTAwRDBENkExIC8qIFN0cmlu
Z1ZpZXdDRi5jcHAgKi87IH07CiAJCTkzQUM5MUE4MTg5NDJGQzQwMDI0NDkzOSAvKiBMQ2hhci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBQzkxQTcx
ODk0MkZDNDAwMjQ0OTM5IC8qIExDaGFyLmggKi87IH07CkBAIC0zODMsNiArMzg1LDcgQEAKIAkJ
RTMyMDBBQjcxRTlBNTM2RDAwM0I1OUQyIC8qIFBsYXRmb3JtUmVnaXN0ZXJzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzIwMEFCNDFFOUE1MzZEMDAz
QjU5RDIgLyogUGxhdGZvcm1SZWdpc3RlcnMuaCAqLzsgfTsKIAkJRTMyMDBBQjgxRTlBNTM2RDAw
M0I1OUQyIC8qIFRocmVhZEhvbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzIwMEFCNTFFOUE1MzZEMDAzQjU5RDIgLyogVGhyZWFkSG9sZGVy
LmNwcCAqLzsgfTsKIAkJRTMyMDBBQjkxRTlBNTM2RDAwM0I1OUQyIC8qIFRocmVhZEhvbGRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyMDBBQjYx
RTlBNTM2RDAwM0I1OUQyIC8qIFRocmVhZEhvbGRlci5oICovOyB9OworCQlFM0UxNTgyNjFFQURB
NTNDMDA0QTA3OUQgLyogRGVmYXVsdEZyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzRTE1ODI1MUVBREE1M0MwMDRBMDc5RCAvKiBEZWZhdWx0RnJl
ZS5oICovOyB9OwogCQlFNDNBNDY5NTFFMjI4QjkxMDAyNzZCMDUgLyogRGVjb2Rlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQzQTQ2OTAxRTIyOEI5
MTAwMjc2QjA1IC8qIERlY29kZXIuaCAqLzsgfTsKIAkJRTQzQTQ2OTYxRTIyOEI5MTAwMjc2QjA1
IC8qIEVuY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0M0E0NjkxMUUyMjhCOTEwMDI3NkIwNSAvKiBFbmNvZGVyLmggKi87IH07CiAJCUU0M0E0
Njk3MUUyMjhCOTEwMDI3NkIwNSAvKiBEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0M0E0NjkyMUUyMjhCOTEwMDI3NkIwNSAvKiBEZWNv
ZGVyLmNwcCAqLzsgfTsKQEAgLTU0Niw2ICs1NDksNyBAQAogCQkyQ0RFRDBGMTE4MTE1Qzg1MDA0
REJBNzAgLyogUnVuTG9vcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSdW5Mb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkNERUQwRjIxODEx
NUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUnVuTG9vcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTM3RTFEN0RCRDg0
QUMzOEZBRTREMzQgLyogSW5kZXhTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5kZXhTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEzRURFQzk3NzhF
NDlDOUJFQTkxQ0ZDIC8qIFN0YWNrVHJhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RhY2tUcmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTM3QzdDQzI5MUVBNDBBNzMwMDdCRDk1NiAvKiBXZWFrTGlua2luZy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrTGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MzBCNDc4NzFBQUFBQzFBMDAxMjIzREEgLyogU3RyaW5nQ29tbW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0NvbW1vbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTNFMTcwQTFDRDdENUJGMDBFMzY1MEIgLyogTG9nZ2luZ0FjY3Vt
dWxhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2dpbmdBY2N1bXVs
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzk1LDYgKzc5OSw3IEBACiAJ
CUUzMjAwQUI0MUU5QTUzNkQwMDNCNTlEMiAvKiBQbGF0Zm9ybVJlZ2lzdGVycy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVJlZ2lzdGVycy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzIwMEFCNTFFOUE1MzZEMDAzQjU5RDIgLyogVGhyZWFkSG9s
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVhZEhvbGRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjAwQUI2MUU5QTUzNkQwMDNC
NTlEMiAvKiBUaHJlYWRIb2xkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGhyZWFkSG9sZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRTE1ODI1MUVB
REE1M0MwMDRBMDc5RCAvKiBEZWZhdWx0RnJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEZWZhdWx0RnJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDNB
NDY5MDFFMjI4QjkxMDAyNzZCMDUgLyogRGVjb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEZWNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0M0E0
NjkxMUUyMjhCOTEwMDI3NkIwNSAvKiBFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQzQTQ2
OTIxRTIyOEI5MTAwMjc2QjA1IC8qIERlY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGVjb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC04MDYsNiArODExLDcgQEAKIAkJRTRBMEFEMzgxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrUXVldWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBMEFEM0MxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtR
dWV1ZUNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtR
dWV1ZUNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUI5NUUxRUYxNjFB
NzI0MTAwODlBMkY1IC8qIEJ5dGVPcmRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBCeXRlT3JkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUY3RDZDRDU5
RDg2NDJBOEEwREE4NkFEIC8qIFN0YWNrVHJhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3RhY2tUcmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNzJC
QkRCMTA3RkE0MjQ4ODYxNzhCOUUgLyogU3ltYm9sSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTeW1ib2xJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkU4MjI1MzAxQjJBMUU1QjAwQkE2OEZEIC8qIE5ha2VkUHRyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ha2VkUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZFODZBODc0MUU1OTQ0MDIwMDExMUJCRiAvKiBGb3JiaWRIZWFwQWxsb2NhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JiaWRIZWFwQWxsb2NhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAxMiw2ICsxMDE4LDcgQEAKIAkJ
CQlBOEE0NzI3QTE1MUE4MjVBMDA0MTIzRkYgLyogRGF0ZU1hdGguaCAqLywKIAkJCQlBOEE0NzI3
QjE1MUE4MjVBMDA0MTIzRkYgLyogRGVjaW1hbE51bWJlci5jcHAgKi8sCiAJCQkJQThBNDcyN0Mx
NTFBODI1QTAwNDEyM0ZGIC8qIERlY2ltYWxOdW1iZXIuaCAqLywKKwkJCQlFM0UxNTgyNTFFQURB
NTNDMDA0QTA3OUQgLyogRGVmYXVsdEZyZWUuaCAqLywKIAkJCQkwRjJCNjZBNDE3QjZCNEY3MDBB
N0FFM0YgLyogRGVmZXJyYWJsZVJlZkNvdW50ZWQuaCAqLywKIAkJCQlBNTYxRjMwRjFERjI2NDIx
MDBGRjY3NUQgLyogRGVwcmVjYXRlZE9wdGlvbmFsLmggKi8sCiAJCQkJQThBNDcyN0UxNTFBODI1
QTAwNDEyM0ZGIC8qIERlcXVlLmggKi8sCkBAIC0xMTg2LDYgKzExOTMsOCBAQAogCQkJCUE4QTQ3
MzBGMTUxQTgyNUIwMDQxMjNGRiAvKiBTdGFja0JvdW5kcy5oICovLAogCQkJCUZFREFDRDNCMTYz
MEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLywKIAkJCQlGRURBQ0QzQzE2MzBGODNG
MDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oICovLAorCQkJCUVGN0Q2Q0Q1OUQ4NjQyQThBMERBODZB
RCAvKiBTdGFja1RyYWNlLmggKi8sCisJCQkJMzEzRURFQzk3NzhFNDlDOUJFQTkxQ0ZDIC8qIFN0
YWNrVHJhY2UuY3BwICovLAogCQkJCUE4QTQ3MzEwMTUxQTgyNUIwMDQxMjNGRiAvKiBTdGF0aWND
b25zdHJ1Y3RvcnMuaCAqLywKIAkJCQlBOEE0NzMxMTE1MUE4MjVCMDA0MTIzRkYgLyogU3RkTGli
RXh0cmFzLmggKi8sCiAJCQkJQzRGOEE5MzYxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5o
ICovLApAQCAtMTQ2Miw2ICsxNDcxLDcgQEAKIAkJCQkwRjQ1NzA0NTFCRTgzNDQxMDA2MkE2Mjkg
LyogQnViYmxlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczOTExNTFBODI1QjAwNDEy
M0ZGIC8qIEJ1bXBQb2ludGVyQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQjk1RTFG
MDE2MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0Ux
NTgyNjFFQURBNTNDMDA0QTA3OUQgLyogRGVmYXVsdEZyZWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4QTQ3M0FEMTUxQTgyNUIwMDQxMjNGRiAvKiBjYWNoZWQtcG93ZXJzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlEQ0VFMjFGQjFDRUE3NTM4MDAwQzIzOTYgLyogQ0ZCdW5kbGVTUEkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFDQ0RCMTUzMUU1NjZCQzUwMDZDNzNDMCAvKiBDRlN0cmluZ1NQSS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xNjM0LDYgKzE2NDQsNyBAQAogCQkJCUE4QTQ3NDI2MTUxQTgyNUIw
MDQxMjNGRiAvKiBTcGVjdHJ1bS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0MjgxNTFBODI1
QjAwNDEyM0ZGIC8qIFN0YWNrQm91bmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRURBQ0QzRTE2
MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTBCRTEw
MDA3Mzk5NDA2RTg2RTk0Q0JCIC8qIFN0YWNrVHJhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
QTQ3NDI5MTUxQTgyNUIwMDQxMjNGRiAvKiBTdGF0aWNDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4QTQ3NDJBMTUxQTgyNUIwMDQxMjNGRiAvKiBTdGRMaWJFeHRyYXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUM0RjhBOTM3MTlDNjVFQjQwMEIyQjE1RCAvKiBTdG9wd2F0Y2guaCBp
biBIZWFkZXJzICovLApAQCAtMTg3Myw2ICsxODg0LDcgQEAKIAkJCQlBOEE0NzQyNzE1MUE4MjVC
MDA0MTIzRkYgLyogU3RhY2tCb3VuZHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMyMDBBQjgx
RTlBNTM2RDAwM0I1OUQyIC8qIFRocmVhZEhvbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
RURBQ0QzRDE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkzMzM3REI5Q0U3NDM0MTBGQUYwNzZFMTcgLyogU3RhY2tUcmFjZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEE0NzQzQzE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nQnVpbGRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBNUJBMTVGQjE4MjQzNUE2MDBBODJFNjkgLyogU3RyaW5nQ0Yu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMxMUJENUMxRUE4MjJGOTAwNTI1MjgxIC8qIFRocmVh
ZE1lc3NhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9B
c3NlcnRpb25zLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCmluZGV4IDg2MTNk
ZjVkZThmNGFhNzdmZTVhODc4ZjMyOTcwZjM2MDRjY2Q2MGEuLmVlMWFlNDdiZWRiODY4MGQ4NGYx
MzVlMGYwOGJjM2Y0MTBmMGU2YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCkBAIC00MSw2ICs0MSw3
IEBACiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAjaW5j
bHVkZSA8d3RmL0xvZ2dpbmdBY2N1bXVsYXRvci5oPgorI2luY2x1ZGUgPHd0Zi9TdGFja1RyYWNl
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC03Miw5ICs3Myw3IEBA
CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYKIAotI2lmIE9TKERBUldJTikgfHwgKE9TKExJ
TlVYKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX19VQ0xJQkNfXykpCi0jaW5j
bHVkZSA8Y3h4YWJpLmg+Ci0jaW5jbHVkZSA8ZGxmY24uaD4KKyNpZiBIQVZFKEJBQ0tUUkFDRSkK
ICNpbmNsdWRlIDxleGVjaW5mby5oPgogI2VuZGlmCiAKQEAgLTIzOCw5ICsyMzcsMTggQEAgdm9p
ZCBXVEZSZXBvcnRBcmd1bWVudEFzc2VydGlvbkZhaWx1cmUoY29uc3QgY2hhciogZmlsZSwgaW50
IGxpbmUsIGNvbnN0IGNoYXIqIGYKICAgICBwcmludENhbGxTaXRlKGZpbGUsIGxpbmUsIGZ1bmN0
aW9uKTsKIH0KIAorY2xhc3MgQ3Jhc2hMb2dQcmludFN0cmVhbSA6IHB1YmxpYyBQcmludFN0cmVh
bSB7CitwdWJsaWM6CisgICAgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMCkKKyAgICB2b2lkIHZw
cmludGYoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ0xpc3QpIG92ZXJyaWRlCisgICAg
eworICAgICAgICB2cHJpbnRmX3N0ZGVycl9jb21tb24oZm9ybWF0LCBhcmdMaXN0KTsKKyAgICB9
Cit9OworCiB2b2lkIFdURkdldEJhY2t0cmFjZSh2b2lkKiogc3RhY2ssIGludCogc2l6ZSkKIHsK
LSNpZiBPUyhEQVJXSU4pIHx8IChPUyhMSU5VWCkgJiYgZGVmaW5lZChfX0dMSUJDX18pICYmICFk
ZWZpbmVkKF9fVUNMSUJDX18pKQorI2lmIEhBVkUoQkFDS1RSQUNFKQogICAgICpzaXplID0gYmFj
a3RyYWNlKHN0YWNrLCAqc2l6ZSk7CiAjZWxpZiBPUyhXSU5ET1dTKQogICAgICpzaXplID0gUnRs
Q2FwdHVyZVN0YWNrQmFja1RyYWNlKDAsICpzaXplLCBzdGFjaywgMCk7CkBAIC0yNjAsNTIgKzI2
OCwxMyBAQCB2b2lkIFdURlJlcG9ydEJhY2t0cmFjZSgpCiAgICAgV1RGUHJpbnRCYWNrdHJhY2Uo
c2FtcGxlcyArIGZyYW1lc1RvU2tpcCwgZnJhbWVzIC0gZnJhbWVzVG9Ta2lwKTsKIH0KIAotI2lm
IE9TKERBUldJTikgfHwgT1MoTElOVVgpCi0jICBpZiBQTEFURk9STShHVEspCi0jICAgIGlmIGRl
ZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKQotIyAgICAgIGRlZmluZSBV
U0VfQkFDS1RSQUNFX1NZTUJPTFMgMQotIyAgICBlbmRpZgotIyAgZWxzZQotIyAgICBkZWZpbmUg
VVNFX0RMQUREUiAxCi0jICBlbmRpZgotI2VuZGlmCi0KIHZvaWQgV1RGUHJpbnRCYWNrdHJhY2Uo
dm9pZCoqIHN0YWNrLCBpbnQgc2l6ZSkKIHsKLSNpZiBVU0UoQkFDS1RSQUNFX1NZTUJPTFMpCi0g
ICAgY2hhcioqIHN5bWJvbHMgPSBiYWNrdHJhY2Vfc3ltYm9scyhzdGFjaywgc2l6ZSk7Ci0gICAg
aWYgKCFzeW1ib2xzKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLQotICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG1hbmdsZWROYW1lID0g
MDsKLSAgICAgICAgY2hhciogY3hhRGVtYW5nbGVkID0gMDsKLSNpZiBVU0UoQkFDS1RSQUNFX1NZ
TUJPTFMpCi0gICAgICAgIG1hbmdsZWROYW1lID0gc3ltYm9sc1tpXTsKLSNlbGlmIFVTRShETEFE
RFIpCi0gICAgICAgIERsX2luZm8gaW5mbzsKLSAgICAgICAgaWYgKGRsYWRkcihzdGFja1tpXSwg
JmluZm8pICYmIGluZm8uZGxpX3NuYW1lKQotICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBpbmZv
LmRsaV9zbmFtZTsKLSAgICAgICAgaWYgKG1hbmdsZWROYW1lKQotICAgICAgICAgICAgY3hhRGVt
YW5nbGVkID0gYWJpOjpfX2N4YV9kZW1hbmdsZShtYW5nbGVkTmFtZSwgMCwgMCwgMCk7Ci0jZW5k
aWYKLSAgICAgICAgY29uc3QgaW50IGZyYW1lTnVtYmVyID0gaSArIDE7Ci0gICAgICAgIGlmICht
YW5nbGVkTmFtZSB8fCBjeGFEZW1hbmdsZWQpCi0gICAgICAgICAgICBwcmludGZfc3RkZXJyX2Nv
bW1vbigiJS0zZCAlcCAlc1xuIiwgZnJhbWVOdW1iZXIsIHN0YWNrW2ldLCBjeGFEZW1hbmdsZWQg
PyBjeGFEZW1hbmdsZWQgOiBtYW5nbGVkTmFtZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHByaW50Zl9zdGRlcnJfY29tbW9uKCIlLTNkICVwXG4iLCBmcmFtZU51bWJlciwgc3RhY2tbaV0p
OwotICAgICAgICBmcmVlKGN4YURlbWFuZ2xlZCk7Ci0gICAgfQotCi0jaWYgVVNFKEJBQ0tUUkFD
RV9TWU1CT0xTKQotICAgIGZyZWUoc3ltYm9scyk7Ci0jZW5kaWYKKyAgICBDcmFzaExvZ1ByaW50
U3RyZWFtIG91dDsKKyAgICBTdGFja1RyYWNlIHN0YWNrVHJhY2Uoc3RhY2ssIHNpemUpOworICAg
IG91dC5wcmludChzdGFja1RyYWNlKTsKIH0KIAotI3VuZGVmIFVTRV9CQUNLVFJBQ0VfU1lNQk9M
UwotI3VuZGVmIFVTRV9ETEFERFIKLQogc3RhdGljIFdURkNyYXNoSG9va0Z1bmN0aW9uIGdsb2Jh
bEhvb2sgPSAwOwogCiB2b2lkIFdURlNldENyYXNoSG9vayhXVEZDcmFzaEhvb2tGdW5jdGlvbiBm
dW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggNzQyZTY1NTU2MjMyNDQxODY4ZjYyMDky
NWUxZGZiNDdlYTI0NjZlOS4uNTNmZDU3NDcyYWMwYmZlYjhhMDg5NzYyNGQwMzBhMGMzYTJlOTg1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTI1LDYgKzI1LDcgQEAgc2V0KFdURl9IRUFERVJT
CiAgICAgRGF0ZU1hdGguaAogICAgIERvbWluYXRvcnMuaAogICAgIERlY2ltYWxOdW1iZXIuaAor
ICAgIERlZmF1bHRGcmVlLmgKICAgICBEZWZlcnJhYmxlUmVmQ291bnRlZC5oCiAgICAgRGVxdWUu
aAogICAgIERpc2FsbG93Q1R5cGUuaApAQCAtMTI0LDYgKzEyNSw3IEBAIHNldChXVEZfSEVBREVS
UwogICAgIFNtYWxsUHRyU2V0LmgKICAgICBTdGFja0JvdW5kcy5oCiAgICAgU3RhY2tTdGF0cy5o
CisgICAgU3RhY2tUcmFjZS5oCiAgICAgU3RhdGljQ29uc3RydWN0b3JzLmgKICAgICBTdGRMaWJF
eHRyYXMuaAogICAgIFN0b3B3YXRjaC5oCkBAIC0yNDEsNiArMjQzLDcgQEAgc2V0KFdURl9TT1VS
Q0VTCiAgICAgU2l4Q2hhcmFjdGVySGFzaC5jcHAKICAgICBTdGFja0JvdW5kcy5jcHAKICAgICBT
dGFja1N0YXRzLmNwcAorICAgIFN0YWNrVHJhY2UuY3BwCiAgICAgU3RyaW5nUHJpbnRTdHJlYW0u
Y3BwCiAgICAgVGhyZWFkTWVzc2FnZS5jcHAKICAgICBUaHJlYWRpbmcuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9EZWZhdWx0RnJlZS5oIGIvU291cmNlL1dURi93dGYvRGVmYXVsdEZy
ZWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NzliY2MwOTVhNjE1ZWI0N2U5ZmNlZDEzYjdiOTFjYjNmODdhMmQx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvRGVmYXVsdEZyZWUuaApAQCAtMCww
ICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHl1c3Vr
ZS5zdXp1a2lAc3NsYWIuaWNzLmtlaW8uYWMuanA+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+
CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IERlZmF1
bHRGcmVlIHsKKyAgICB2b2lkIG9wZXJhdG9yKCkoVCogcG9pbnRlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIGZyZWUoY29uc3RfY2FzdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZSo+
KHBvaW50ZXIpKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IERl
ZmF1bHRGcmVlPFRbXT4geworICAgIHZvaWQgb3BlcmF0b3IoKShUKiBwb2ludGVyKSBjb25zdAor
ICAgIHsKKyAgICAgICAgZnJlZShjb25zdF9jYXN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+
Ojp0eXBlKj4ocG9pbnRlcikpOworICAgIH0KKworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAppbmRleCBlOGNmN2I0ODVjMmVkNWQwMGM5MWEwNmYwNGY5MTRlNmY2ODY2YTM5Li5m
NDhlZTllNjJkMGQzZTBlYWQwNDllODY4MzNjNGQyMTRjNGM1YWU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAg
LTY2MSw2ICs2NjEsMjAgQEAKICNkZWZpbmUgSEFWRV9NQUNISU5FX0NPTlRFWFQgMQogI2VuZGlm
CiAKKyNpZiBPUyhEQVJXSU4pIHx8IChPUyhMSU5VWCkgJiYgZGVmaW5lZChfX0dMSUJDX18pICYm
ICFkZWZpbmVkKF9fVUNMSUJDX18pKQorI2RlZmluZSBIQVZFX0JBQ0tUUkFDRSAxCisjZW5kaWYK
KworI2lmIE9TKERBUldJTikgfHwgT1MoTElOVVgpCisjaWYgUExBVEZPUk0oR1RLKQorI2lmIGRl
ZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKQorI2RlZmluZSBIQVZFX0JB
Q0tUUkFDRV9TWU1CT0xTIDEKKyNlbmRpZgorI2VuZGlmCisjZGVmaW5lIEhBVkVfRExBRERSIDEK
KyNlbmRpZgorCisKIC8qIEVOQUJMRSBtYWNybyBkZWZhdWx0cyAqLwogCiAvKiBGSVhNRTogbW92
ZSBvdXQgYWxsIEVOQUJMRSgpIGRlZmluZXMgZnJvbSBoZXJlIHRvIEZlYXR1cmVEZWZpbmVzLmgg
Ki8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrVHJhY2UuY3BwIGIvU291cmNlL1dU
Ri93dGYvU3RhY2tUcmFjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU2YTRmOWE4YzU1YTEyZjMzNGIwODM1
OTYwMzA2NmQ4YmI1MGRmZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0YWNr
VHJhY2UuY3BwCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0YWNrVHJh
Y2UuaCIKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50
U3RyZWFtLmg+CisKKyNpZiBIQVZFKEJBQ0tUUkFDRV9TWU1CT0xTKSB8fCBIQVZFKERMQUREUikK
KyNpbmNsdWRlIDxjeHhhYmkuaD4KKyNpbmNsdWRlIDxkbGZjbi5oPgorI2luY2x1ZGUgPGV4ZWNp
bmZvLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKK0FMV0FZU19JTkxJTkUgc2l6ZV90
IFN0YWNrVHJhY2U6Omluc3RhbmNlU2l6ZShpbnQgY2FwYWNpdHkpCit7CisgICAgQVNTRVJUKGNh
cGFjaXR5ID49IDEpOworICAgIHJldHVybiBzaXplb2YoU3RhY2tUcmFjZSkgKyAoY2FwYWNpdHkg
LSAxKSAqIHNpemVvZih2b2lkKik7Cit9CisKK1N0YWNrVHJhY2UqIFN0YWNrVHJhY2U6OmNhcHR1
cmVTdGFja1RyYWNlKGludCBtYXhGcmFtZXMpCit7CisgICAgbWF4RnJhbWVzID0gc3RkOjptYXgo
MSwgbWF4RnJhbWVzKTsKKyAgICBzaXplX3Qgc2l6ZVRvQWxsb2NhdGUgPSBpbnN0YW5jZVNpemUo
bWF4RnJhbWVzKTsKKyAgICBTdGFja1RyYWNlKiB0cmFjZSA9IG5ldyAoTm90TnVsbCwgZmFzdE1h
bGxvYyhzaXplVG9BbGxvY2F0ZSkpIFN0YWNrVHJhY2UoKTsKKworICAgIHN0YXRpYyBjb25zdCBp
bnQgZnJhbWVzVG9Ta2lwID0gMjsKKyAgICBpbnQgbnVtYmVyT2ZGcmFtZXMgPSBtYXhGcmFtZXMg
KyBmcmFtZXNUb1NraXA7CisKKyAgICBXVEZHZXRCYWNrdHJhY2UoJnRyYWNlLT5tX3NraXBwZWRG
cmFtZTAsICZudW1iZXJPZkZyYW1lcyk7CisgICAgQVNTRVJUKG51bWJlck9mRnJhbWVzID4gZnJh
bWVzVG9Ta2lwKTsKKyAgICB0cmFjZS0+bV9zaXplID0gbnVtYmVyT2ZGcmFtZXMgLSBmcmFtZXNU
b1NraXA7CisgICAgdHJhY2UtPm1fY2FwYWNpdHkgPSBtYXhGcmFtZXM7CisKKyAgICByZXR1cm4g
dHJhY2U7Cit9CisKK2F1dG8gU3RhY2tUcmFjZTo6ZGVtYW5nbGUodm9pZCogcGMpIC0+IHN0ZDo6
b3B0aW9uYWw8RGVtYW5nbGVFbnRyeT4KK3sKKyNpZiBIQVZFKERMQUREUikKKyAgICBjb25zdCBj
aGFyKiBtYW5nbGVkTmFtZSA9IG51bGxwdHI7CisgICAgY29uc3QgY2hhciogY3hhRGVtYW5nbGVk
ID0gbnVsbHB0cjsKKyAgICBEbF9pbmZvIGluZm87CisgICAgaWYgKGRsYWRkcihwYywgJmluZm8p
ICYmIGluZm8uZGxpX3NuYW1lKQorICAgICAgICBtYW5nbGVkTmFtZSA9IGluZm8uZGxpX3NuYW1l
OworICAgIGlmIChtYW5nbGVkTmFtZSkgeworICAgICAgICBpbnQgc3RhdHVzID0gMDsKKyAgICAg
ICAgY3hhRGVtYW5nbGVkID0gYWJpOjpfX2N4YV9kZW1hbmdsZShtYW5nbGVkTmFtZSwgbnVsbHB0
ciwgbnVsbHB0ciwgJnN0YXR1cyk7CisgICAgICAgIFVOVVNFRF9QQVJBTShzdGF0dXMpOworICAg
IH0KKyAgICBpZiAobWFuZ2xlZE5hbWUgfHwgY3hhRGVtYW5nbGVkKQorICAgICAgICByZXR1cm4g
RGVtYW5nbGVFbnRyeSB7IG1hbmdsZWROYW1lLCBjeGFEZW1hbmdsZWQgfTsKKyNlbmRpZgorICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgU3RhY2tUcmFjZTo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAoreworICAgIGNvbnN0IGF1dG8qIHN0YWNrID0gdGhpcy0+c3RhY2so
KTsKKyNpZiBIQVZFKEJBQ0tUUkFDRV9TWU1CT0xTKQorICAgIGNoYXIqKiBzeW1ib2xzID0gYmFj
a3RyYWNlX3N5bWJvbHMoc3RhY2ssIG1fc2l6ZSk7CisgICAgaWYgKCFzeW1ib2xzKQorICAgICAg
ICByZXR1cm47CisjZW5kaWYKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9zaXplOyArK2kp
IHsKKyAgICAgICAgY29uc3QgY2hhciogbWFuZ2xlZE5hbWUgPSBudWxscHRyOworICAgICAgICBj
b25zdCBjaGFyKiBjeGFEZW1hbmdsZWQgPSBudWxscHRyOworI2lmIEhBVkUoQkFDS1RSQUNFX1NZ
TUJPTFMpCisgICAgICAgIG1hbmdsZWROYW1lID0gc3ltYm9sc1tpXTsKKyNlbGlmIEhBVkUoRExB
RERSKQorICAgICAgICBhdXRvIGRlbWFuZ2xlZCA9IGRlbWFuZ2xlKHN0YWNrW2ldKTsKKyAgICAg
ICAgaWYgKGRlbWFuZ2xlZCkgeworICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBkZW1hbmdsZWQt
Pm1hbmdsZWROYW1lKCk7CisgICAgICAgICAgICBjeGFEZW1hbmdsZWQgPSBkZW1hbmdsZWQtPmRl
bWFuZ2xlZE5hbWUoKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGNvbnN0IGludCBmcmFt
ZU51bWJlciA9IGkgKyAxOworICAgICAgICBpZiAobWFuZ2xlZE5hbWUgfHwgY3hhRGVtYW5nbGVk
KQorICAgICAgICAgICAgb3V0LnByaW50ZigiJS0zZCAlcCAlc1xuIiwgZnJhbWVOdW1iZXIsIHN0
YWNrW2ldLCBjeGFEZW1hbmdsZWQgPyBjeGFEZW1hbmdsZWQgOiBtYW5nbGVkTmFtZSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmludGYoIiUtM2QgJXBcbiIsIGZyYW1lTnVtYmVy
LCBzdGFja1tpXSk7CisgICAgfQorCisjaWYgSEFWRShCQUNLVFJBQ0VfU1lNQk9MUykKKyAgICBm
cmVlKHN5bWJvbHMpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvU3RhY2tUcmFjZS5oIGIvU291cmNlL1dURi93dGYvU3RhY2tUcmFj
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQyNGM5NGMyOWFiYjgyZGQzMDhjZjY4Mjk3ODQwM2M5NTNiOGM0ZGIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGFja1RyYWNlLmgKQEAgLTAsMCAr
MSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9EZWZhdWx0RnJlZS5oPgorI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisK
K2NsYXNzIFN0YWNrVHJhY2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIHN0YXRpYyBTdGFja1RyYWNlKiBjYXB0dXJlU3RhY2tUcmFjZShpbnQgbWF4RnJhbWVz
KTsKKworICAgIC8vIEJvcnJvd2VkIHN0YWNrIHRyYWNlLgorICAgIFN0YWNrVHJhY2Uodm9pZCoq
IHN0YWNrLCBpbnQgc2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICAgICAgLCBtX2Nh
cGFjaXR5KDApCisgICAgICAgICwgbV9ib3Jyb3dlZFN0YWNrKHN0YWNrKQorICAgIHsgfQorCisg
ICAgaW50IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICB2b2lkKiBjb25zdCAq
IHN0YWNrKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9jYXBhY2l0eSkKKyAgICAgICAg
ICAgIHJldHVybiBtX2JvcnJvd2VkU3RhY2s7CisgICAgICAgIHJldHVybiBtX3N0YWNrOworICAg
IH0KKworICAgIGNsYXNzIERlbWFuZ2xlRW50cnkgeworICAgIHB1YmxpYzoKKyAgICAgICAgRGVt
YW5nbGVFbnRyeShjb25zdCBjaGFyKiBtYW5nbGVkTmFtZSwgY29uc3QgY2hhciogZGVtYW5nbGVk
TmFtZSkKKyAgICAgICAgICAgIDogbV9tYW5nbGVkTmFtZShtYW5nbGVkTmFtZSkKKyAgICAgICAg
ICAgICwgbV9kZW1hbmdsZWROYW1lKGRlbWFuZ2xlZE5hbWUpCisgICAgICAgIHsgfQorCisgICAg
ICAgIGNvbnN0IGNoYXIqIG1hbmdsZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tYW5nbGVkTmFt
ZTsgfQorICAgICAgICBjb25zdCBjaGFyKiBkZW1hbmdsZWROYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9kZW1hbmdsZWROYW1lLmdldCgpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBjb25zdCBj
aGFyKiBtX21hbmdsZWROYW1lIHsgbnVsbHB0ciB9OworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Y29uc3QgY2hhcltdLCBEZWZhdWx0RnJlZTxjb25zdCBjaGFyW10+PiBtX2RlbWFuZ2xlZE5hbWU7
CisgICAgfTsKKworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERlbWFuZ2xlRW50cnk+IGRlbWFu
Z2xlKHZvaWQqKTsKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworCitwcml2
YXRlOgorICAgIGlubGluZSBzdGF0aWMgc2l6ZV90IGluc3RhbmNlU2l6ZShpbnQgY2FwYWNpdHkp
OworCisgICAgU3RhY2tUcmFjZSgpCisgICAgICAgIDogbV9zaXplKDApCisgICAgeyB9CisKKyAg
ICAvLyBXZSBzdHJ1Y3R1cmUgdGhlIHRvcCBmaWVsZHMgdGhpcyB3YXkgYmVjYXVzZSB0aGUgdW5k
ZXJseWluZyBzdGFjayBjYXB0dXJlCisgICAgLy8gZmFjaWxpdHkgd2lsbCBjYXB0dXJlIGZyb20g
dGhlIHRvcCBvZiB0aGUgc3RhY2ssIGFuZCB3ZSdsbCBuZWVkIHRvIHNraXAgdGhlCisgICAgLy8g
dG9wIDIgZnJhbWUgd2hpY2ggaXMgb2Ygbm8gaW50ZXJlc3QuIFNldHRpbmcgdXAgdGhlIGZpZWxk
cyBsYXlvdXQgdGhpcyB3YXkKKyAgICAvLyBhbGxvd3MgdXMgdG8gY2FwdHVyZSB0aGUgc3RhY2sg
aW4gcGxhY2UgYW5kIG1pbmltaXplIHNwYWNlIHdhc3RhZ2UuCisgICAgdW5pb24geworICAgICAg
ICBzdHJ1Y3QgeworICAgICAgICAgICAgaW50IG1fc2l6ZTsKKyAgICAgICAgICAgIGludCBtX2Nh
cGFjaXR5OworICAgICAgICB9OworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdm9pZCog
bV9za2lwcGVkRnJhbWUwOworICAgICAgICAgICAgdm9pZCogbV9za2lwcGVkRnJhbWUxOworICAg
ICAgICB9OworICAgIH07CisgICAgdW5pb24geworICAgICAgICB2b2lkKiogbV9ib3Jyb3dlZFN0
YWNrOworICAgICAgICB2b2lkKiBtX3N0YWNrWzFdOworICAgIH07Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXVEYKKwordXNpbmcgV1RGOjpTdGFja1RyYWNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307952</attachid>
            <date>2017-04-23 20:57:03 -0700</date>
            <delta_ts>2017-04-24 11:10:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171199-20170424125701.patch</filename>
            <type>text/plain</type>
            <size>44205</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MjBmNDQxNDM4MTE4M2Q0ZTM3NjBhMjU4NDNiOGRhN2JlODk4NWYzLi4yYjMyNGU1YWFjMTRjNGYw
ZWJmMzFmY2MxOWRjOTQ5ZmViZGUwYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxNy0wNC0yMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBNb3ZlIEpTQyB0b29scy9TdGFja1RyYWNlIHRvIFdURiBh
bmQgdW5pZnkgc3RhY2sgdHJhY2UgZHVtcCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzExOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYW4gdXRpbGl0eSBtZXRob2Qg
dG8gcHJvZHVjZSBkZW1hbmdsZWQgbmFtZXMgd2l0aCBkbGFkZHIuCisgICAgICAgIEl0IGZpeGVz
IHNldmVyYWwgbWVtb3J5IGxlYWtzIGJlY2F1c2UgdGhlIHJlc3VsdCBvZiBhYmk6Ol9fY3hhX2Rl
bWFuZ2xlKCkKKyAgICAgICAgbmVlZHMgdG8gYmUgYGZyZWVgLWVkLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyOjphcHBlbmRBUElCYWNrdHJhY2UpOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxp
bmdQcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrRnJh
bWU6OmRpc3BsYXlOYW1lKToKKyAgICAgICAgKiB0b29scy9DZWxsUHJvZmlsZS5oOgorICAgICAg
ICAqIHRvb2xzL0NvZGVQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZVByb2ZpbGU6OnJl
cG9ydCk6CisgICAgICAgIChKU0M6OnN5bWJvbE5hbWUpOiBEZWxldGVkLgorCiAyMDE3LTA0LTIz
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgdGVzdDI2
MjogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9OdW1iZXIvcHJvdG90eXBlL3RvUHJlY2lzaW9uL25h
bi5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwppbmRleCBlMGVjZjliOWQ4Zjk3YWJiNTFhNzUxYjc5YzE1ZDA0YTM2ZTgwMjA0Li5kNzI4
ODZkZDIzMTgyNjdkNmVjNDEyZjBkNDk1OTkyMjBiYWRkNTUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBA
CisyMDE3LTA0LTIzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIFtXVEZdIE1vdmUgSlNDIHRvb2xzL1N0YWNrVHJhY2UgdG8gV1RGIGFuZCB1bmlmeSBz
dGFjayB0cmFjZSBkdW1wIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MTE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEpTQyB0b29scy9TdGFja1RyYWNlJ3MgZHVtcCBjb2RlIGlzIGFsbW9zdCBp
ZGVudGljYWwgdG8gV1RGIEFzc2VydGlvbnMnCisgICAgICAgIHN0YWNrIHRyYWNlIGR1bXAgY29k
ZS4gVGhpcyBwYXRjaCBtb3ZlcyB0b29scy9TdGFja1RyYWNlIHRvIFdURiBhbmQgdXNlCisgICAg
ICAgIGl0IGluIEFzc2VydGlvbnMuIEl0IHVuaWZpZXMgdGhlIHR3byBkdXBsaWNhdGUgaW1wbGVt
ZW50YXRpb25zIGludG8gb25lLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuY3BwOgorICAgICAgICAqIHd0Zi9DTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvRGVmYXVsdEZyZWUuaDogQ29waWVkIGZyb20gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1N0YWNrVHJhY2UuaC4KKyAgICAgICAgKFdURjo6RGVm
YXVsdEZyZWU6Om9wZXJhdG9yKCkpOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAg
ICAqIHd0Zi9TdGFja1RyYWNlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9TdGFja1RyYWNlLmNwcC4KKyAgICAgICAgKFdURjo6U3RhY2tUcmFjZTo6aW5zdGFu
Y2VTaXplKToKKyAgICAgICAgKFdURjo6U3RhY2tUcmFjZTo6Y2FwdHVyZVN0YWNrVHJhY2UpOgor
ICAgICAgICAoV1RGOjpTdGFja1RyYWNlOjpkdW1wKToKKyAgICAgICAgKiB3dGYvU3RhY2tUcmFj
ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1N0YWNrVHJhY2Uu
aC4KKyAgICAgICAgKFdURjo6U3RhY2tUcmFjZTo6U3RhY2tUcmFjZSk6CisgICAgICAgIChXVEY6
OlN0YWNrVHJhY2U6OnNpemUpOgorICAgICAgICAoV1RGOjpTdGFja1RyYWNlOjpzdGFjayk6Cisg
ICAgICAgIChXVEY6OlN0YWNrVHJhY2U6OkRlbWFuZ2xlRW50cnk6OkRlbWFuZ2xlRW50cnkpOgor
ICAgICAgICAoV1RGOjpTdGFja1RyYWNlOjpEZW1hbmdsZUVudHJ5OjptYW5nbGVkTmFtZSk6Cisg
ICAgICAgIChXVEY6OlN0YWNrVHJhY2U6OkRlbWFuZ2xlRW50cnk6OmRlbWFuZ2xlZE5hbWUpOgor
CiAyMDE3LTA0LTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAg
ICAgICAgIFtKU0NdIEdldCBzdGFjayBwb2ludGVyIHdpdGhvdXQgcHRocmVhZCBhdHRyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzE5YjNlMDZjYTUyNTg2OWMwYjA1MzJk
M2ZmMjliNmZjMjhhOWM5Ny4uMzRhN2NlNzA0YTljN2QxY2E4MGNlNDEzMzliZTQ4ZDkwNDA1OTFj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTMzLDcgKzkzMyw2IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgdG9vbHMvSlNEb2xsYXJWTS5jcHAKICAg
ICB0b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAogICAgIHRvb2xzL1NpZ2lsbENyYXNoQW5h
bHl6ZXIuY3BwCi0gICAgdG9vbHMvU3RhY2tUcmFjZS5jcHAKICAgICB0b29scy9WTUluc3BlY3Rv
ci5jcHAKIAogICAgIHdhc20vSlNXZWJBc3NlbWJseS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNDkwYTYwNmY5MDhlZmNhYzY3NzIwZDk1ZDQzZjU2MTYyYmZjMzZkMC4uMjVi
M2NmYjg1MzAyYjg5MGYyMDY3ZDE2NWM5ZDg3YTZlOWNjZjhjNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTI0MTAsOCArMjQxMCw2IEBACiAJCUZFMUJEMDIxMUU3MjAyNzkwMDEz
NEJDOSAvKiBDZWxsUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUxQkQwMjAxRTcyMDI3MDAwMTM0QkM5IC8qIENlbGxQcm9maWxlLmggKi87
IH07CiAJCUZFMUJEMDI0MUU3MjA1MzgwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQkQwMjIxRTcyMDUy
RjAwMTM0QkM5IC8qIEhlYXBWZXJpZmllci5jcHAgKi87IH07CiAJCUZFMUJEMDI1MUU3MjA1Mzgw
MDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMUJEMDIzMUU3MjA1MkYwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIu
aCAqLzsgfTsKLQkJRkUxQkQwMkIxRTcyMUI0QzAwMTM0QkM5IC8qIFN0YWNrVHJhY2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUJEMDJBMUU3MjFC
MzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmggKi87IH07Ci0JCUZFMUJEMDJDMUU3MjFCNTEwMDEz
NEJDOSAvKiBTdGFja1RyYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMUJEMDI5MUU3MjFCMzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCAq
LzsgfTsKIAkJRkUxQzBGRkQxQjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQzBGRkMxQjE5M0U5ODAw
QjUzRkNBIC8qIEV4Y2VwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUZFMUMwRkZGMUIxOTRGRDEwMEI1M0ZDQSAvKiBFeGNlcHRpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQzBGRkUx
QjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgKi87IH07CiAJCUZFMjBDRTlEMTVGMDRB
OTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29w
LmNwcCAqLzsgfTsKQEAgLTUwNDAsOCArNTAzOCw2IEBACiAJCUZFMUJEMDIwMUU3MjAyNzAwMDEz
NEJDOSAvKiBDZWxsUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
ZWxsUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTFCRDAyMjFFNzIw
NTJGMDAxMzRCQzkgLyogSGVhcFZlcmlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEhlYXBWZXJpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFMUJEMDIzMUU3MjA1MkYwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcFZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUZFMUJEMDI5MUU3MjFCMzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrVHJhY2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTFCRDAyQTFFNzIxQjM3MDAxMzRCQzkgLyogU3Rh
Y2tUcmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1RyYWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMUMwRkZDMUIxOTNFOTgwMEI1M0ZDQSAv
KiBFeGNlcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMUMwRkZFMUIxOTRGRDEwMEI1M0ZD
QSAvKiBFeGNlcHRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RXhjZXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUyMENFOUIxNUYw
NEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gTExJbnRDTG9vcC5jcHA7IHBhdGggPSBsbGludC9MTEludENMb29wLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwODEsOCArNzA3Nyw2IEBACiAJCQkJODZC
NTgyMkMxNEQyMkY1RjAwQTlDMzA2IC8qIFByb2ZpbGVUcmVlTm9kZS5oICovLAogCQkJCUZFMzAy
MkQwMUUzRDczOTYwMEJBQzQ5MyAvKiBTaWdpbGxDcmFzaEFuYWx5emVyLmNwcCAqLywKIAkJCQlG
RTMwMjJEMTFFM0Q3Mzk2MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5oICovLAotCQkJ
CUZFMUJEMDI5MUU3MjFCMzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCAqLywKLQkJCQlGRTFC
RDAyQTFFNzIxQjM3MDAxMzRCQzkgLyogU3RhY2tUcmFjZS5oICovLAogCQkJCTg2QjU4MjZBMTRE
MzVENTEwMEE5QzMwNiAvKiBUaWVyZWRNTWFwQXJyYXkuaCAqLywKIAkJCQlGRTMwMjJENDFFNDI4
NTY3MDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuY3BwICovLAogCQkJCUZFMzAyMkQ1MUU0Mjg1Njcw
MEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oICovLApAQCAtODkwNiw3ICs4OTAwLDYgQEAKIAkJCQlG
RTE4N0EwRDFDMDMwRDVDMDAzOEJCQ0EgLyogSklURGl2R2VuZXJhdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZCMTRFMUYxODEyNEFDRTAwOUI2QjREIC8qIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRTFCRDAyQjFFNzIxQjRDMDAxMzRCQzkg
LyogU3RhY2tUcmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZDQzg1QTEwRUU3OUE0NzAwMjg4
NjgyIC8qIEpJVElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFM0EwNkJFMUMxMTA0MTIw
MDM5MEZERCAvKiBKSVRMZWZ0U2hpZnRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5
MjMzQzJCMUQzNDcxNTcwMEM1QTgzNCAvKiBKSVRNYXRoSUMuaCBpbiBIZWFkZXJzICovLApAQCAt
MTAzNjIsNyArMTAzNTUsNiBAQAogCQkJCTBGQzk3RjQxMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdX
YXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGREIyQ0U3
MTc0ODMwQTIwMDdCM0MxQiAvKiBERkdXb3JrbGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkUwNTAxNzFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUZFMUJEMDJDMUU3MjFCNTEwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRTA1MDE1MUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVu
dHNPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRUJCQUIxREVERjk1MDAwOTkwMzY5
IC8qIERpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQzODZBNzQx
REQ2OTg5NTAwODY1MkM0IC8qIERpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDMxMzczMGE1
NzAyOTcxNTRhYjhhNTE5YmM3NzM2MmE1N2ZiMjMxMWIuLmMxZjE0NGEwZWY3ZDU1ZjYwYjdlM2Nm
MTgyMGZmMzczNGQyMTQxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKQEAgLTQ3LDE0ICs0Nyw5IEBACiAjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAj
aW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5oIgorI2luY2x1ZGUgPHd0Zi9TdGFja1RyYWNlLmg+CiAjaW5jbHVkZSA8d3RmL1N0b3B3
YXRjaC5oPgogCi0jaWYgT1MoREFSV0lOKSB8fCAoT1MoTElOVVgpICYmICFQTEFURk9STShHVEsp
KQotI2luY2x1ZGUgPGN4eGFiaS5oPgotI2luY2x1ZGUgPGRsZmNuLmg+Ci0jaW5jbHVkZSA8ZXhl
Y2luZm8uaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmgiCiAjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdG9y
LmgiCkBAIC0yMDAsMTggKzE5NSwxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlcjo6YXBwZW5kQVBJQmFja3RyYWNlKFNjcmlwdENhbGxTdGFjayYgY2FsbAogICAgIHZv
aWQqKiBzdGFjayA9IHNhbXBsZXMgKyBmcmFtZXNUb1NraXA7CiAgICAgaW50IHNpemUgPSBmcmFt
ZXMgLSBmcmFtZXNUb1NraXA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsK
LSAgICAgICAgY29uc3QgY2hhciogbWFuZ2xlZE5hbWUgPSBudWxscHRyOwotICAgICAgICBjaGFy
KiBjeGFEZW1hbmdsZWQgPSBudWxscHRyOwotICAgICAgICBEbF9pbmZvIGluZm87Ci0gICAgICAg
IGlmIChkbGFkZHIoc3RhY2tbaV0sICZpbmZvKSAmJiBpbmZvLmRsaV9zbmFtZSkKLSAgICAgICAg
ICAgIG1hbmdsZWROYW1lID0gaW5mby5kbGlfc25hbWU7Ci0gICAgICAgIGlmIChtYW5nbGVkTmFt
ZSkKLSAgICAgICAgICAgIGN4YURlbWFuZ2xlZCA9IGFiaTo6X19jeGFfZGVtYW5nbGUobWFuZ2xl
ZE5hbWUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICBpZiAobWFuZ2xlZE5h
bWUgfHwgY3hhRGVtYW5nbGVkKQotICAgICAgICAgICAgY2FsbFN0YWNrLmFwcGVuZChTY3JpcHRD
YWxsRnJhbWUoY3hhRGVtYW5nbGVkID8gY3hhRGVtYW5nbGVkIDogbWFuZ2xlZE5hbWUsIEFTQ0lJ
TGl0ZXJhbCgiW25hdGl2ZSBjb2RlXSIpLCBub1NvdXJjZUlELCAwLCAwKSk7CisgICAgICAgIGF1
dG8gZGVtYW5nbGVkID0gU3RhY2tUcmFjZTo6ZGVtYW5nbGUoc3RhY2tbaV0pOworICAgICAgICBp
ZiAoZGVtYW5nbGVkKQorICAgICAgICAgICAgY2FsbFN0YWNrLmFwcGVuZChTY3JpcHRDYWxsRnJh
bWUoZGVtYW5nbGVkLT5kZW1hbmdsZWROYW1lKCkgPyBkZW1hbmdsZWQtPmRlbWFuZ2xlZE5hbWUo
KSA6IGRlbWFuZ2xlZC0+bWFuZ2xlZE5hbWUoKSwgQVNDSUlMaXRlcmFsKCJbbmF0aXZlIGNvZGVd
IiksIG5vU291cmNlSUQsIDAsIDApKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY2FsbFN0
YWNrLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoQVNDSUlMaXRlcmFsKCI/IiksIEFTQ0lJTGl0ZXJh
bCgiW25hdGl2ZSBjb2RlXSIpLCBub1NvdXJjZUlELCAwLCAwKSk7Ci0gICAgICAgIGZyZWUoY3hh
RGVtYW5nbGVkKTsKICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjYWxsU3RhY2spOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNw
cAppbmRleCBjNDYwNGQ0YjdjZmZjNDRmN2EwNDM2ZTRkNDU4NTc0Y2YzZjg3OWQ4Li45MGRkZDIy
YmFlMDdlZTRiNjdjYTA3ODFjZGYyODk3YTFiZGExODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcApAQCAtNDgsMTMgKzQ4LDkg
QEAKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdGFja1RyYWNlLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi0jaWYgT1MoREFSV0lOKSB8fCBPUyhMSU5VWCkKLSNp
bmNsdWRlIDxjeHhhYmkuaD4KLSNpbmNsdWRlIDxkbGZjbi5oPgotI2VuZGlmCi0KIG5hbWVzcGFj
ZSBKU0MgewogCiBzdGF0aWMgZG91YmxlIHNOdW1Ub3RhbFN0YWNrVHJhY2VzID0gMDsKQEAgLTc1
MCwxNyArNzQ2LDExIEBAIFN0cmluZyBTYW1wbGluZ1Byb2ZpbGVyOjpTdGFja0ZyYW1lOjpkaXNw
bGF5TmFtZShWTSYgdm0pCiAgICAgfQogCiAgICAgaWYgKGZyYW1lVHlwZSA9PSBGcmFtZVR5cGU6
OlVua25vd24gfHwgZnJhbWVUeXBlID09IEZyYW1lVHlwZTo6QykgewotI2lmIE9TKERBUldJTikg
fHwgT1MoTElOVVgpCisjaWYgSEFWRShETEFERFIpCiAgICAgICAgIGlmIChmcmFtZVR5cGUgPT0g
RnJhbWVUeXBlOjpDKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBtYW5nbGVkTmFtZSA9IG51
bGxwdHI7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBjeGFEZW1hbmdsZWQgPSBudWxscHRyOwot
ICAgICAgICAgICAgRGxfaW5mbyBpbmZvOwotICAgICAgICAgICAgaWYgKGRsYWRkcihjQ29kZVBD
LCAmaW5mbykgJiYgaW5mby5kbGlfc25hbWUpCi0gICAgICAgICAgICAgICAgbWFuZ2xlZE5hbWUg
PSBpbmZvLmRsaV9zbmFtZTsKLSAgICAgICAgICAgIGlmIChtYW5nbGVkTmFtZSkgewotICAgICAg
ICAgICAgICAgIGN4YURlbWFuZ2xlZCA9IGFiaTo6X19jeGFfZGVtYW5nbGUobWFuZ2xlZE5hbWUs
IDAsIDAsIDApOwotICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoY3hhRGVtYW5nbGVkID8g
Y3hhRGVtYW5nbGVkIDogbWFuZ2xlZE5hbWUpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAg
YXV0byBkZW1hbmdsZWQgPSBXVEY6OlN0YWNrVHJhY2U6OmRlbWFuZ2xlKGNDb2RlUEMpOworICAg
ICAgICAgICAgaWYgKGRlbWFuZ2xlZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKGRl
bWFuZ2xlZC0+ZGVtYW5nbGVkTmFtZSgpID8gZGVtYW5nbGVkLT5kZW1hbmdsZWROYW1lKCkgOiBk
ZW1hbmdsZWQtPm1hbmdsZWROYW1lKCkpOwogICAgICAgICAgICAgV1RGOjpkYXRhTG9nKCJjb3Vs
ZG4ndCBnZXQgYSBuYW1lIik7CiAgICAgICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NlbGxQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvQ2VsbFByb2ZpbGUuaAppbmRleCAwN2JiOWE4ZGQ0MjIwMjYwNzRiY2NlZTVkZWE2
YTMyZGM3MWNjYWY2Li43NDE4MzZiN2RkN2I2NjBlODZiYjJhZTE0NGNhMjI0ZTM0OGRkZTlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ2VsbFByb2ZpbGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ2VsbFByb2ZpbGUuaApAQCAtMjYsOSArMjYs
OSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU0NlbGwuaCIKLSNpbmNsdWRlICJTdGFj
a1RyYWNlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSA8d3RmL01vbm90b25p
Y1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tUcmFjZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsZS5jcHAKaW5kZXggZWRm
ZGQ0MzEyZTlkNGZjMWUzNTc4OTY3NDQyNWQzZTFhNzE3YWVjZi4uYjkzYzczZDhjMDhlZmE4MTZj
MzZhMThiYzYyZDRhOTgyNzFhNjE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0NvZGVQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
Q29kZVByb2ZpbGUuY3BwCkBAIC0zMCwxNCArMzAsOSBAQAogI2luY2x1ZGUgIkNvZGVQcm9maWxp
bmcuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiUHJvZmlsZVRyZWVOb2Rl
LmgiCisjaW5jbHVkZSA8d3RmL1N0YWNrVHJhY2UuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotI2lmIE9TKERBUldJTikgfHwgT1MoTElOVVgpCi0jaW5jbHVkZSA8Y3h4YWJp
Lmg+Ci0jaW5jbHVkZSA8ZGxmY24uaD4KLSNpbmNsdWRlIDxleGVjaW5mby5oPgotI2VuZGlmCi0K
IG5hbWVzcGFjZSBKU0MgewogCiAvLyBNYXAgZnJvbSBDb2RlVHlwZSBlbnVtIHRvIGEgY29ycmVz
cG9uZGluZyBuYW1lLgpAQCAtNTIsMjMgKzQ3LDYgQEAgY29uc3QgY2hhciogQ29kZVByb2ZpbGU6
OnNfY29kZVR5cGVOYW1lc1tDb2RlUHJvZmlsZTo6TnVtYmVyT2ZDb2RlVHlwZXNdID0gewogICAg
ICJbW0VuZ2luZUZyYW1lXV0iCiB9OwogCi0vLyBIZWxwZXIgZnVuY3Rpb24sIGZpbmQgdGhlIHN5
bWJvbCBuYW1lIGZvciBhIHBjIGluIEpTQy4KLXN0YXRpYyBjb25zdCBjaGFyKiBzeW1ib2xOYW1l
KHZvaWQqIGFkZHJlc3MpCi17Ci0jaWYgT1MoREFSV0lOKSB8fCBPUyhMSU5VWCkKLSAgICBEbF9p
bmZvIGluZm87Ci0gICAgaWYgKCFkbGFkZHIoYWRkcmVzcywgJmluZm8pIHx8ICFpbmZvLmRsaV9z
bmFtZSkKLSAgICAgICAgcmV0dXJuICI8dW5rbm93bj4iOwotCi0gICAgY29uc3QgY2hhciogbWFu
Z2xlZE5hbWUgPSBpbmZvLmRsaV9zbmFtZTsKLSAgICBjb25zdCBjaGFyKiBjeGFEZW1hbmdsZWQg
PSBhYmk6Ol9fY3hhX2RlbWFuZ2xlKG1hbmdsZWROYW1lLCAwLCAwLCAwKTsKLSAgICByZXR1cm4g
Y3hhRGVtYW5nbGVkID8gY3hhRGVtYW5nbGVkIDogbWFuZ2xlZE5hbWU7Ci0jZWxzZQotICAgIFVO
VVNFRF9QQVJBTShhZGRyZXNzKTsKLSAgICByZXR1cm4gIjx1bmtub3duPiI7Ci0jZW5kaWYKLX0K
LQogLy8gSGVscGVyIGZ1bmN0aW9uLCB0cnVuY2F0ZSB0cmFjZXMgdG8gcHJ1bmUgdGhlIG91dHB1
dCAmIG1ha2UgdmVyeSB2ZXJib3NlIG1vZGUgYSBsaXR0bGUgbW9yZSByZWFkYWJsZS4KIHN0YXRp
YyBib29sIHRydW5jYXRlVHJhY2UoY29uc3QgY2hhciogc3ltYm9sTmFtZSkKIHsKQEAgLTE2Nyw3
ICsxNDUsMTAgQEAgdm9pZCBDb2RlUHJvZmlsZTo6cmVwb3J0KCkKICAgICAgICAgZm9yICh1bnNp
Z25lZCBjb3VudCA9IDA7IGxhc3RFbmdpbmVGcmFtZSA+IHRyYWNlICYmIGNvdW50IDwgcmVjdXJz
aW9uTGltaXQ7ICsrY291bnQpIHsKICAgICAgICAgICAgIC0tbGFzdEVuZ2luZUZyYW1lOwogICAg
ICAgICAgICAgQVNTRVJUKG1fc2FtcGxlc1tsYXN0RW5naW5lRnJhbWVdLnR5cGUgPT0gRW5naW5l
RnJhbWUpOwotICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSA9IHN5bWJvbE5hbWUobV9zYW1w
bGVzW2xhc3RFbmdpbmVGcmFtZV0ucGMpOworICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSA9
ICI8dW5rbm93bj4iOworICAgICAgICAgICAgYXV0byBkZW1hbmdsZWQgPSBTdGFja1RyYWNlOjpk
ZW1hbmdsZShtX3NhbXBsZXNbbGFzdEVuZ2luZUZyYW1lXS5wYyk7CisgICAgICAgICAgICBpZiAo
ZGVtYW5nbGVkKQorICAgICAgICAgICAgICAgIG5hbWUgPSBkZW1hbmdsZWQtPmRlbWFuZ2xlZE5h
bWUoKSA/IGRlbWFuZ2xlZC0+ZGVtYW5nbGVkTmFtZSgpIDogZGVtYW5nbGVkLT5tYW5nbGVkTmFt
ZSgpOwogICAgICAgICAgICAgY2FsbGJhY2tzID0gY2FsbGJhY2tzLT5zYW1wbGVDaGlsZChuYW1l
KTsKICAgICAgICAgICAgIGlmICh0cnVuY2F0ZVRyYWNlKG5hbWUpKQogICAgICAgICAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1N0YWNrVHJh
Y2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1N0YWNrVHJhY2UuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Mjk3NDk5MTljYTQyZjg5ZDMxYWI5MGFmNmJlMGEw
YTQwMDQyYTg0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TdGFja1RyYWNlLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlN0YWNrVHJhY2UuaCIKLQot
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLSNpZiBPUyhEQVJXSU4pIHx8IChPUyhMSU5V
WCkgJiYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9fVUNMSUJDX18pKQotI2luY2x1
ZGUgPGN4eGFiaS5oPgotI2luY2x1ZGUgPGRsZmNuLmg+Ci0jaW5jbHVkZSA8ZXhlY2luZm8uaD4K
LSNlbmRpZgotCi0jaWYgT1MoREFSV0lOKSB8fCBPUyhMSU5VWCkKLSMgIGlmIFBMQVRGT1JNKEdU
SykKLSMgICAgaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9fVUNMSUJDX18pCi0j
ICAgICAgZGVmaW5lIFVTRV9CQUNLVFJBQ0VfU1lNQk9MUyAxCi0jICAgIGVuZGlmCi0jICBlbHNl
Ci0jICAgIGRlZmluZSBVU0VfRExBRERSIDEKLSMgIGVuZGlmCi0jZW5kaWYKLQotbmFtZXNwYWNl
IEpTQyB7Ci0KLUFMV0FZU19JTkxJTkUgc2l6ZV90IFN0YWNrVHJhY2U6Omluc3RhbmNlU2l6ZShp
bnQgY2FwYWNpdHkpCi17Ci0gICAgQVNTRVJUKGNhcGFjaXR5ID49IDEpOwotICAgIHJldHVybiBz
aXplb2YoU3RhY2tUcmFjZSkgKyAoY2FwYWNpdHkgLSAxKSAqIHNpemVvZih2b2lkKik7Ci19Ci0K
LVN0YWNrVHJhY2UqIFN0YWNrVHJhY2U6OmNhcHR1cmVTdGFja1RyYWNlKGludCBtYXhGcmFtZXMp
Ci17Ci0gICAgbWF4RnJhbWVzID0gc3RkOjptYXgoMSwgbWF4RnJhbWVzKTsKLSAgICBzaXplX3Qg
c2l6ZVRvQWxsb2NhdGUgPSBpbnN0YW5jZVNpemUobWF4RnJhbWVzKTsKLSAgICBTdGFja1RyYWNl
KiB0cmFjZSA9IG5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhzaXplVG9BbGxvY2F0ZSkpIFN0YWNr
VHJhY2UoKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgZnJhbWVzVG9Ta2lwID0gMjsKLSAgICBp
bnQgbnVtYmVyT2ZGcmFtZXMgPSBtYXhGcmFtZXMgKyBmcmFtZXNUb1NraXA7Ci0gICAgCi0gICAg
V1RGR2V0QmFja3RyYWNlKCZ0cmFjZS0+bV9za2lwcGVkRnJhbWUwLCAmbnVtYmVyT2ZGcmFtZXMp
OwotICAgIEFTU0VSVChudW1iZXJPZkZyYW1lcyA+IGZyYW1lc1RvU2tpcCk7Ci0gICAgdHJhY2Ut
Pm1fc2l6ZSA9IG51bWJlck9mRnJhbWVzIC0gZnJhbWVzVG9Ta2lwOwotICAgIHRyYWNlLT5tX2Nh
cGFjaXR5ID0gbWF4RnJhbWVzOwotCi0gICAgcmV0dXJuIHRyYWNlOwotfQotCi12b2lkIFN0YWNr
VHJhY2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKLXsKLSNpZiBVU0UoQkFDS1RSQUNF
X1NZTUJPTFMpCi0gICAgY2hhcioqIHN5bWJvbHMgPSBiYWNrdHJhY2Vfc3ltYm9scyhtX3N0YWNr
LCBtX3NpemUpOwotICAgIGlmICghc3ltYm9scykKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0g
ICAgCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkgewotICAgICAgICBjb25z
dCBjaGFyKiBtYW5nbGVkTmFtZSA9IDA7Ci0gICAgICAgIGNoYXIqIGN4YURlbWFuZ2xlZCA9IDA7
Ci0jaWYgVVNFKEJBQ0tUUkFDRV9TWU1CT0xTKQotICAgICAgICBtYW5nbGVkTmFtZSA9IHN5bWJv
bHNbaV07Ci0jZWxpZiBVU0UoRExBRERSKQotICAgICAgICBEbF9pbmZvIGluZm87Ci0gICAgICAg
IGlmIChkbGFkZHIobV9zdGFja1tpXSwgJmluZm8pICYmIGluZm8uZGxpX3NuYW1lKQotICAgICAg
ICAgICAgbWFuZ2xlZE5hbWUgPSBpbmZvLmRsaV9zbmFtZTsKLSAgICAgICAgaWYgKG1hbmdsZWRO
YW1lKQotICAgICAgICAgICAgY3hhRGVtYW5nbGVkID0gYWJpOjpfX2N4YV9kZW1hbmdsZShtYW5n
bGVkTmFtZSwgMCwgMCwgMCk7Ci0jZW5kaWYKLSAgICAgICAgY29uc3QgaW50IGZyYW1lTnVtYmVy
ID0gaSArIDE7Ci0gICAgICAgIGlmIChtYW5nbGVkTmFtZSB8fCBjeGFEZW1hbmdsZWQpCi0gICAg
ICAgICAgICBvdXQucHJpbnRmKCIlLTNkICVwICVzXG4iLCBmcmFtZU51bWJlciwgbV9zdGFja1tp
XSwgY3hhRGVtYW5nbGVkID8gY3hhRGVtYW5nbGVkIDogbWFuZ2xlZE5hbWUpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBvdXQucHJpbnRmKCIlLTNkICVwXG4iLCBmcmFtZU51bWJlciwgbV9z
dGFja1tpXSk7Ci0gICAgICAgIGZyZWUoY3hhRGVtYW5nbGVkKTsKLSAgICB9Ci0gICAgCi0jaWYg
VVNFKEJBQ0tUUkFDRV9TWU1CT0xTKQotICAgIGZyZWUoc3ltYm9scyk7Ci0jZW5kaWYKLX0KLQot
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvU3RhY2tUcmFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1N0YWNrVHJhY2Uu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDkyMDMxNTFjYzdkMjYzYTUzZGM1NDJl
NjZjNTU4ZTQ3NzBjYTkxMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU3RhY2tUcmFjZS5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBTdGFja1RyYWNlIHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBzdGF0aWMgU3RhY2tUcmFjZSogY2FwdHVyZVN0
YWNrVHJhY2UoaW50IG1heEZyYW1lcyk7Ci0KLSAgICBpbnQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZTsgfQotCi0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0KLXByaXZh
dGU6Ci0gICAgaW5saW5lIHN0YXRpYyBzaXplX3QgaW5zdGFuY2VTaXplKGludCBjYXBhY2l0eSk7
Ci0KLSAgICBTdGFja1RyYWNlKCkKLSAgICAgICAgOiBtX3NpemUoMCkKLSAgICB7IH0KLQotICAg
IC8vIFdlIHN0cnVjdHVyZSB0aGUgdG9wIGZpZWxkcyB0aGlzIHdheSBiZWNhdXNlIHRoZSB1bmRl
cmx5aW5nIHN0YWNrIGNhcHR1cmUKLSAgICAvLyBmYWNpbGl0eSB3aWxsIGNhcHR1cmUgZnJvbSB0
aGUgdG9wIG9mIHRoZSBzdGFjaywgYW5kIHdlJ2xsIG5lZWQgdG8gc2tpcCB0aGUKLSAgICAvLyB0
b3AgMiBmcmFtZSB3aGljaCBpcyBvZiBubyBpbnRlcmVzdC4gU2V0dGluZyB1cCB0aGUgZmllbGRz
IGxheW91dCB0aGlzIHdheQotICAgIC8vIGFsbG93cyB1cyB0byBjYXB0dXJlIHRoZSBzdGFjayBp
biBwbGFjZSBhbmQgbWluaW1pemUgc3BhY2Ugd2FzdGFnZS4KLSAgICB1bmlvbiB7Ci0gICAgICAg
IHN0cnVjdCB7Ci0gICAgICAgICAgICBpbnQgbV9zaXplOwotICAgICAgICAgICAgaW50IG1fY2Fw
YWNpdHk7Ci0gICAgICAgIH07Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICB2b2lkKiBt
X3NraXBwZWRGcmFtZTA7Ci0gICAgICAgICAgICB2b2lkKiBtX3NraXBwZWRGcmFtZTE7Ci0gICAg
ICAgIH07Ci0gICAgfTsKLSAgICB2b2lkKiBtX3N0YWNrWzFdOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYjdh
OTAxZmEyNzMxNDgzZjRlMzZhZGNmMzJhZWU4M2VmZmQyNDFjLi5iOWE2NWU4ZDI2ZTNhMGUxOGUz
MDg0YjgzZGRlZWE1Yzk2ZGI0ZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE0MCw2ICsxNDAsNyBAQAogCQkyQ0RFRDBFRjE4MTE1QzM4MDA0REJBNzAg
LyogUnVuTG9vcENGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJDREVEMEVFMTgxMTVDMzgwMDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwICovOyB9Owog
CQkyQ0RFRDBGMzE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQ0RFRDBGMTE4MTE1Qzg1MDA0REJBNzAg
LyogUnVuTG9vcC5jcHAgKi87IH07CiAJCTJDREVEMEY0MTgxMTVDODUwMDREQkE3MCAvKiBSdW5M
b29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQ0RF
RDBGMjE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5oICovOyB9OworCQkzMzM3REI5Q0U3NDM0
MTBGQUYwNzZFMTcgLyogU3RhY2tUcmFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTNFREVDOTc3OEU0OUM5QkVBOTFDRkMgLyogU3RhY2tUcmFj
ZS5jcHAgKi87IH07CiAJCTM3QzdDQzJBMUVBNDBBNzMwMDdCRDk1NiAvKiBXZWFrTGlua2luZy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdDN0NDMjkx
RUE0MEE3MzAwN0JEOTU2IC8qIFdlYWtMaW5raW5nLmggKi87IH07CiAJCTQzMEI0Nzg5MUFBQUFD
MUEwMDEyMjNEQSAvKiBTdHJpbmdDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQzMEI0Nzg3MUFBQUFDMUEwMDEyMjNEQSAvKiBTdHJpbmdDb21t
b24uaCAqLzsgfTsKIAkJNEIyNjgwREQ5Qjk3NDQwMjg5OUVENTcyIC8qIEluZGV4ZWRDb250YWlu
ZXJJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUM2N0M1NDI1ODkzNDhFMjg1QjQ5Njk5IC8qIEluZGV4ZWRDb250YWluZXJJdGVyYXRvci5o
ICovOyB9OwpAQCAtMTc4LDYgKzE3OSw3IEBACiAJCTgzRjJCQURGMUNGOTUyNEUwMDNFOTlDMyAv
KiBGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODNGMkJBREUxQ0Y5NTI0RTAwM0U5OUMzIC8qIEZ1bmN0aW9uLmggKi87IH07CiAJCTgzRkJB
OTMyMTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRkJBOTMxMTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBl
Q2FzdHMuaCAqLzsgfTsKIAkJODZGNDZGNjExQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjQ2RjVG
MUEyODQwRUUwMENDQkYyMiAvKiBSZWZDb3VudGVyLmggKi87IH07CisJCTkwQkUxMDAwNzM5OTQw
NkU4NkU5NENCQiAvKiBTdGFja1RyYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFRjdENkNENTlEODY0MkE4QTBEQTg2QUQgLyogU3RhY2tUcmFjZS5o
ICovOyB9OwogCQk5MzkzNEJEMzE4QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld09iakMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkzNEJEMjE4
QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld09iakMubW0gKi87IH07CiAJCTkzOTM0QkQ1MThB
MUYxNjkwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MzRCRDQxOEExRjE2OTAwRDBENkExIC8qIFN0cmlu
Z1ZpZXdDRi5jcHAgKi87IH07CiAJCTkzQUM5MUE4MTg5NDJGQzQwMDI0NDkzOSAvKiBMQ2hhci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBQzkxQTcx
ODk0MkZDNDAwMjQ0OTM5IC8qIExDaGFyLmggKi87IH07CkBAIC0zODMsNiArMzg1LDcgQEAKIAkJ
RTMyMDBBQjcxRTlBNTM2RDAwM0I1OUQyIC8qIFBsYXRmb3JtUmVnaXN0ZXJzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzIwMEFCNDFFOUE1MzZEMDAz
QjU5RDIgLyogUGxhdGZvcm1SZWdpc3RlcnMuaCAqLzsgfTsKIAkJRTMyMDBBQjgxRTlBNTM2RDAw
M0I1OUQyIC8qIFRocmVhZEhvbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzIwMEFCNTFFOUE1MzZEMDAzQjU5RDIgLyogVGhyZWFkSG9sZGVy
LmNwcCAqLzsgfTsKIAkJRTMyMDBBQjkxRTlBNTM2RDAwM0I1OUQyIC8qIFRocmVhZEhvbGRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyMDBBQjYx
RTlBNTM2RDAwM0I1OUQyIC8qIFRocmVhZEhvbGRlci5oICovOyB9OworCQlFM0UxNTgyNjFFQURB
NTNDMDA0QTA3OUQgLyogRGVmYXVsdEZyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzRTE1ODI1MUVBREE1M0MwMDRBMDc5RCAvKiBEZWZhdWx0RnJl
ZS5oICovOyB9OwogCQlFNDNBNDY5NTFFMjI4QjkxMDAyNzZCMDUgLyogRGVjb2Rlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQzQTQ2OTAxRTIyOEI5
MTAwMjc2QjA1IC8qIERlY29kZXIuaCAqLzsgfTsKIAkJRTQzQTQ2OTYxRTIyOEI5MTAwMjc2QjA1
IC8qIEVuY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0M0E0NjkxMUUyMjhCOTEwMDI3NkIwNSAvKiBFbmNvZGVyLmggKi87IH07CiAJCUU0M0E0
Njk3MUUyMjhCOTEwMDI3NkIwNSAvKiBEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0M0E0NjkyMUUyMjhCOTEwMDI3NkIwNSAvKiBEZWNv
ZGVyLmNwcCAqLzsgfTsKQEAgLTU0Niw2ICs1NDksNyBAQAogCQkyQ0RFRDBGMTE4MTE1Qzg1MDA0
REJBNzAgLyogUnVuTG9vcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSdW5Mb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkNERUQwRjIxODEx
NUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUnVuTG9vcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTM3RTFEN0RCRDg0
QUMzOEZBRTREMzQgLyogSW5kZXhTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5kZXhTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEzRURFQzk3NzhF
NDlDOUJFQTkxQ0ZDIC8qIFN0YWNrVHJhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RhY2tUcmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTM3QzdDQzI5MUVBNDBBNzMwMDdCRDk1NiAvKiBXZWFrTGlua2luZy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrTGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MzBCNDc4NzFBQUFBQzFBMDAxMjIzREEgLyogU3RyaW5nQ29tbW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0NvbW1vbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTNFMTcwQTFDRDdENUJGMDBFMzY1MEIgLyogTG9nZ2luZ0FjY3Vt
dWxhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2dpbmdBY2N1bXVs
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzk1LDYgKzc5OSw3IEBACiAJ
CUUzMjAwQUI0MUU5QTUzNkQwMDNCNTlEMiAvKiBQbGF0Zm9ybVJlZ2lzdGVycy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVJlZ2lzdGVycy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzIwMEFCNTFFOUE1MzZEMDAzQjU5RDIgLyogVGhyZWFkSG9s
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVhZEhvbGRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjAwQUI2MUU5QTUzNkQwMDNC
NTlEMiAvKiBUaHJlYWRIb2xkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGhyZWFkSG9sZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRTE1ODI1MUVB
REE1M0MwMDRBMDc5RCAvKiBEZWZhdWx0RnJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEZWZhdWx0RnJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDNB
NDY5MDFFMjI4QjkxMDAyNzZCMDUgLyogRGVjb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEZWNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0M0E0
NjkxMUUyMjhCOTEwMDI3NkIwNSAvKiBFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQzQTQ2
OTIxRTIyOEI5MTAwMjc2QjA1IC8qIERlY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGVjb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC04MDYsNiArODExLDcgQEAKIAkJRTRBMEFEMzgxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrUXVldWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBMEFEM0MxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtR
dWV1ZUNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtR
dWV1ZUNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUI5NUUxRUYxNjFB
NzI0MTAwODlBMkY1IC8qIEJ5dGVPcmRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBCeXRlT3JkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUY3RDZDRDU5
RDg2NDJBOEEwREE4NkFEIC8qIFN0YWNrVHJhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3RhY2tUcmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNzJC
QkRCMTA3RkE0MjQ4ODYxNzhCOUUgLyogU3ltYm9sSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTeW1ib2xJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkU4MjI1MzAxQjJBMUU1QjAwQkE2OEZEIC8qIE5ha2VkUHRyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ha2VkUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZFODZBODc0MUU1OTQ0MDIwMDExMUJCRiAvKiBGb3JiaWRIZWFwQWxsb2NhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JiaWRIZWFwQWxsb2NhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAxMiw2ICsxMDE4LDcgQEAKIAkJ
CQlBOEE0NzI3QTE1MUE4MjVBMDA0MTIzRkYgLyogRGF0ZU1hdGguaCAqLywKIAkJCQlBOEE0NzI3
QjE1MUE4MjVBMDA0MTIzRkYgLyogRGVjaW1hbE51bWJlci5jcHAgKi8sCiAJCQkJQThBNDcyN0Mx
NTFBODI1QTAwNDEyM0ZGIC8qIERlY2ltYWxOdW1iZXIuaCAqLywKKwkJCQlFM0UxNTgyNTFFQURB
NTNDMDA0QTA3OUQgLyogRGVmYXVsdEZyZWUuaCAqLywKIAkJCQkwRjJCNjZBNDE3QjZCNEY3MDBB
N0FFM0YgLyogRGVmZXJyYWJsZVJlZkNvdW50ZWQuaCAqLywKIAkJCQlBNTYxRjMwRjFERjI2NDIx
MDBGRjY3NUQgLyogRGVwcmVjYXRlZE9wdGlvbmFsLmggKi8sCiAJCQkJQThBNDcyN0UxNTFBODI1
QTAwNDEyM0ZGIC8qIERlcXVlLmggKi8sCkBAIC0xMTg2LDYgKzExOTMsOCBAQAogCQkJCUE4QTQ3
MzBGMTUxQTgyNUIwMDQxMjNGRiAvKiBTdGFja0JvdW5kcy5oICovLAogCQkJCUZFREFDRDNCMTYz
MEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLywKIAkJCQlGRURBQ0QzQzE2MzBGODNG
MDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oICovLAorCQkJCUVGN0Q2Q0Q1OUQ4NjQyQThBMERBODZB
RCAvKiBTdGFja1RyYWNlLmggKi8sCisJCQkJMzEzRURFQzk3NzhFNDlDOUJFQTkxQ0ZDIC8qIFN0
YWNrVHJhY2UuY3BwICovLAogCQkJCUE4QTQ3MzEwMTUxQTgyNUIwMDQxMjNGRiAvKiBTdGF0aWND
b25zdHJ1Y3RvcnMuaCAqLywKIAkJCQlBOEE0NzMxMTE1MUE4MjVCMDA0MTIzRkYgLyogU3RkTGli
RXh0cmFzLmggKi8sCiAJCQkJQzRGOEE5MzYxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5o
ICovLApAQCAtMTQ2Miw2ICsxNDcxLDcgQEAKIAkJCQkwRjQ1NzA0NTFCRTgzNDQxMDA2MkE2Mjkg
LyogQnViYmxlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczOTExNTFBODI1QjAwNDEy
M0ZGIC8qIEJ1bXBQb2ludGVyQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQjk1RTFG
MDE2MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0Ux
NTgyNjFFQURBNTNDMDA0QTA3OUQgLyogRGVmYXVsdEZyZWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4QTQ3M0FEMTUxQTgyNUIwMDQxMjNGRiAvKiBjYWNoZWQtcG93ZXJzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlEQ0VFMjFGQjFDRUE3NTM4MDAwQzIzOTYgLyogQ0ZCdW5kbGVTUEkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFDQ0RCMTUzMUU1NjZCQzUwMDZDNzNDMCAvKiBDRlN0cmluZ1NQSS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xNjM0LDYgKzE2NDQsNyBAQAogCQkJCUE4QTQ3NDI2MTUxQTgyNUIw
MDQxMjNGRiAvKiBTcGVjdHJ1bS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0MjgxNTFBODI1
QjAwNDEyM0ZGIC8qIFN0YWNrQm91bmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRURBQ0QzRTE2
MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTBCRTEw
MDA3Mzk5NDA2RTg2RTk0Q0JCIC8qIFN0YWNrVHJhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
QTQ3NDI5MTUxQTgyNUIwMDQxMjNGRiAvKiBTdGF0aWNDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4QTQ3NDJBMTUxQTgyNUIwMDQxMjNGRiAvKiBTdGRMaWJFeHRyYXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUM0RjhBOTM3MTlDNjVFQjQwMEIyQjE1RCAvKiBTdG9wd2F0Y2guaCBp
biBIZWFkZXJzICovLApAQCAtMTg3Myw2ICsxODg0LDcgQEAKIAkJCQlBOEE0NzQyNzE1MUE4MjVC
MDA0MTIzRkYgLyogU3RhY2tCb3VuZHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMyMDBBQjgx
RTlBNTM2RDAwM0I1OUQyIC8qIFRocmVhZEhvbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
RURBQ0QzRDE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkzMzM3REI5Q0U3NDM0MTBGQUYwNzZFMTcgLyogU3RhY2tUcmFjZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEE0NzQzQzE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nQnVpbGRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBNUJBMTVGQjE4MjQzNUE2MDBBODJFNjkgLyogU3RyaW5nQ0Yu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMxMUJENUMxRUE4MjJGOTAwNTI1MjgxIC8qIFRocmVh
ZE1lc3NhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9B
c3NlcnRpb25zLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCmluZGV4IDg2MTNk
ZjVkZThmNGFhNzdmZTVhODc4ZjMyOTcwZjM2MDRjY2Q2MGEuLmVlMWFlNDdiZWRiODY4MGQ4NGYx
MzVlMGYwOGJjM2Y0MTBmMGU2YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCkBAIC00MSw2ICs0MSw3
IEBACiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAjaW5j
bHVkZSA8d3RmL0xvZ2dpbmdBY2N1bXVsYXRvci5oPgorI2luY2x1ZGUgPHd0Zi9TdGFja1RyYWNl
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC03Miw5ICs3Myw3IEBA
CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYKIAotI2lmIE9TKERBUldJTikgfHwgKE9TKExJ
TlVYKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX19VQ0xJQkNfXykpCi0jaW5j
bHVkZSA8Y3h4YWJpLmg+Ci0jaW5jbHVkZSA8ZGxmY24uaD4KKyNpZiBIQVZFKEJBQ0tUUkFDRSkK
ICNpbmNsdWRlIDxleGVjaW5mby5oPgogI2VuZGlmCiAKQEAgLTIzOCw5ICsyMzcsMTggQEAgdm9p
ZCBXVEZSZXBvcnRBcmd1bWVudEFzc2VydGlvbkZhaWx1cmUoY29uc3QgY2hhciogZmlsZSwgaW50
IGxpbmUsIGNvbnN0IGNoYXIqIGYKICAgICBwcmludENhbGxTaXRlKGZpbGUsIGxpbmUsIGZ1bmN0
aW9uKTsKIH0KIAorY2xhc3MgQ3Jhc2hMb2dQcmludFN0cmVhbSA6IHB1YmxpYyBQcmludFN0cmVh
bSB7CitwdWJsaWM6CisgICAgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMCkKKyAgICB2b2lkIHZw
cmludGYoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ0xpc3QpIG92ZXJyaWRlCisgICAg
eworICAgICAgICB2cHJpbnRmX3N0ZGVycl9jb21tb24oZm9ybWF0LCBhcmdMaXN0KTsKKyAgICB9
Cit9OworCiB2b2lkIFdURkdldEJhY2t0cmFjZSh2b2lkKiogc3RhY2ssIGludCogc2l6ZSkKIHsK
LSNpZiBPUyhEQVJXSU4pIHx8IChPUyhMSU5VWCkgJiYgZGVmaW5lZChfX0dMSUJDX18pICYmICFk
ZWZpbmVkKF9fVUNMSUJDX18pKQorI2lmIEhBVkUoQkFDS1RSQUNFKQogICAgICpzaXplID0gYmFj
a3RyYWNlKHN0YWNrLCAqc2l6ZSk7CiAjZWxpZiBPUyhXSU5ET1dTKQogICAgICpzaXplID0gUnRs
Q2FwdHVyZVN0YWNrQmFja1RyYWNlKDAsICpzaXplLCBzdGFjaywgMCk7CkBAIC0yNjAsNTIgKzI2
OCwxMyBAQCB2b2lkIFdURlJlcG9ydEJhY2t0cmFjZSgpCiAgICAgV1RGUHJpbnRCYWNrdHJhY2Uo
c2FtcGxlcyArIGZyYW1lc1RvU2tpcCwgZnJhbWVzIC0gZnJhbWVzVG9Ta2lwKTsKIH0KIAotI2lm
IE9TKERBUldJTikgfHwgT1MoTElOVVgpCi0jICBpZiBQTEFURk9STShHVEspCi0jICAgIGlmIGRl
ZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKQotIyAgICAgIGRlZmluZSBV
U0VfQkFDS1RSQUNFX1NZTUJPTFMgMQotIyAgICBlbmRpZgotIyAgZWxzZQotIyAgICBkZWZpbmUg
VVNFX0RMQUREUiAxCi0jICBlbmRpZgotI2VuZGlmCi0KIHZvaWQgV1RGUHJpbnRCYWNrdHJhY2Uo
dm9pZCoqIHN0YWNrLCBpbnQgc2l6ZSkKIHsKLSNpZiBVU0UoQkFDS1RSQUNFX1NZTUJPTFMpCi0g
ICAgY2hhcioqIHN5bWJvbHMgPSBiYWNrdHJhY2Vfc3ltYm9scyhzdGFjaywgc2l6ZSk7Ci0gICAg
aWYgKCFzeW1ib2xzKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLQotICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG1hbmdsZWROYW1lID0g
MDsKLSAgICAgICAgY2hhciogY3hhRGVtYW5nbGVkID0gMDsKLSNpZiBVU0UoQkFDS1RSQUNFX1NZ
TUJPTFMpCi0gICAgICAgIG1hbmdsZWROYW1lID0gc3ltYm9sc1tpXTsKLSNlbGlmIFVTRShETEFE
RFIpCi0gICAgICAgIERsX2luZm8gaW5mbzsKLSAgICAgICAgaWYgKGRsYWRkcihzdGFja1tpXSwg
JmluZm8pICYmIGluZm8uZGxpX3NuYW1lKQotICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBpbmZv
LmRsaV9zbmFtZTsKLSAgICAgICAgaWYgKG1hbmdsZWROYW1lKQotICAgICAgICAgICAgY3hhRGVt
YW5nbGVkID0gYWJpOjpfX2N4YV9kZW1hbmdsZShtYW5nbGVkTmFtZSwgMCwgMCwgMCk7Ci0jZW5k
aWYKLSAgICAgICAgY29uc3QgaW50IGZyYW1lTnVtYmVyID0gaSArIDE7Ci0gICAgICAgIGlmICht
YW5nbGVkTmFtZSB8fCBjeGFEZW1hbmdsZWQpCi0gICAgICAgICAgICBwcmludGZfc3RkZXJyX2Nv
bW1vbigiJS0zZCAlcCAlc1xuIiwgZnJhbWVOdW1iZXIsIHN0YWNrW2ldLCBjeGFEZW1hbmdsZWQg
PyBjeGFEZW1hbmdsZWQgOiBtYW5nbGVkTmFtZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHByaW50Zl9zdGRlcnJfY29tbW9uKCIlLTNkICVwXG4iLCBmcmFtZU51bWJlciwgc3RhY2tbaV0p
OwotICAgICAgICBmcmVlKGN4YURlbWFuZ2xlZCk7Ci0gICAgfQotCi0jaWYgVVNFKEJBQ0tUUkFD
RV9TWU1CT0xTKQotICAgIGZyZWUoc3ltYm9scyk7Ci0jZW5kaWYKKyAgICBDcmFzaExvZ1ByaW50
U3RyZWFtIG91dDsKKyAgICBTdGFja1RyYWNlIHN0YWNrVHJhY2Uoc3RhY2ssIHNpemUpOworICAg
IG91dC5wcmludChzdGFja1RyYWNlKTsKIH0KIAotI3VuZGVmIFVTRV9CQUNLVFJBQ0VfU1lNQk9M
UwotI3VuZGVmIFVTRV9ETEFERFIKLQogc3RhdGljIFdURkNyYXNoSG9va0Z1bmN0aW9uIGdsb2Jh
bEhvb2sgPSAwOwogCiB2b2lkIFdURlNldENyYXNoSG9vayhXVEZDcmFzaEhvb2tGdW5jdGlvbiBm
dW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggNzQyZTY1NTU2MjMyNDQxODY4ZjYyMDky
NWUxZGZiNDdlYTI0NjZlOS4uNTNmZDU3NDcyYWMwYmZlYjhhMDg5NzYyNGQwMzBhMGMzYTJlOTg1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTI1LDYgKzI1LDcgQEAgc2V0KFdURl9IRUFERVJT
CiAgICAgRGF0ZU1hdGguaAogICAgIERvbWluYXRvcnMuaAogICAgIERlY2ltYWxOdW1iZXIuaAor
ICAgIERlZmF1bHRGcmVlLmgKICAgICBEZWZlcnJhYmxlUmVmQ291bnRlZC5oCiAgICAgRGVxdWUu
aAogICAgIERpc2FsbG93Q1R5cGUuaApAQCAtMTI0LDYgKzEyNSw3IEBAIHNldChXVEZfSEVBREVS
UwogICAgIFNtYWxsUHRyU2V0LmgKICAgICBTdGFja0JvdW5kcy5oCiAgICAgU3RhY2tTdGF0cy5o
CisgICAgU3RhY2tUcmFjZS5oCiAgICAgU3RhdGljQ29uc3RydWN0b3JzLmgKICAgICBTdGRMaWJF
eHRyYXMuaAogICAgIFN0b3B3YXRjaC5oCkBAIC0yNDEsNiArMjQzLDcgQEAgc2V0KFdURl9TT1VS
Q0VTCiAgICAgU2l4Q2hhcmFjdGVySGFzaC5jcHAKICAgICBTdGFja0JvdW5kcy5jcHAKICAgICBT
dGFja1N0YXRzLmNwcAorICAgIFN0YWNrVHJhY2UuY3BwCiAgICAgU3RyaW5nUHJpbnRTdHJlYW0u
Y3BwCiAgICAgVGhyZWFkTWVzc2FnZS5jcHAKICAgICBUaHJlYWRpbmcuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9EZWZhdWx0RnJlZS5oIGIvU291cmNlL1dURi93dGYvRGVmYXVsdEZy
ZWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zNjVlZjRhYWM4N2ZkMTQyNjVjOTZmZjc5NWM0ZTU5ZTEyZjIzMzg0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvRGVmYXVsdEZyZWUuaApAQCAtMCww
ICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworbmFtZXNwYWNl
IFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgRGVmYXVsdEZyZWUgeworICAg
IHZvaWQgb3BlcmF0b3IoKShUKiBwb2ludGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZnJlZShj
b25zdF9jYXN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlKj4ocG9pbnRlcikpOwor
ICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgRGVmYXVsdEZyZWU8VFtd
PiB7CisgICAgdm9pZCBvcGVyYXRvcigpKFQqIHBvaW50ZXIpIGNvbnN0CisgICAgeworICAgICAg
ICBmcmVlKGNvbnN0X2Nhc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGUqPihwb2lu
dGVyKSk7CisgICAgfQorCit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4
IGU4Y2Y3YjQ4NWMyZWQ1ZDAwYzkxYTA2ZjA0ZjkxNGU2ZjY4NjZhMzkuLmY0OGVlOWU2MmQwZDNl
MGVhZDA0OWU4NjgzM2M0ZDIxNGM0YzVhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtNjYxLDYgKzY2MSwy
MCBAQAogI2RlZmluZSBIQVZFX01BQ0hJTkVfQ09OVEVYVCAxCiAjZW5kaWYKIAorI2lmIE9TKERB
UldJTikgfHwgKE9TKExJTlVYKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX19V
Q0xJQkNfXykpCisjZGVmaW5lIEhBVkVfQkFDS1RSQUNFIDEKKyNlbmRpZgorCisjaWYgT1MoREFS
V0lOKSB8fCBPUyhMSU5VWCkKKyNpZiBQTEFURk9STShHVEspCisjaWYgZGVmaW5lZChfX0dMSUJD
X18pICYmICFkZWZpbmVkKF9fVUNMSUJDX18pCisjZGVmaW5lIEhBVkVfQkFDS1RSQUNFX1NZTUJP
TFMgMQorI2VuZGlmCisjZW5kaWYKKyNkZWZpbmUgSEFWRV9ETEFERFIgMQorI2VuZGlmCisKKwog
LyogRU5BQkxFIG1hY3JvIGRlZmF1bHRzICovCiAKIC8qIEZJWE1FOiBtb3ZlIG91dCBhbGwgRU5B
QkxFKCkgZGVmaW5lcyBmcm9tIGhlcmUgdG8gRmVhdHVyZURlZmluZXMuaCAqLwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvU3RhY2tUcmFjZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9TdGFja1Ry
YWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xZWU3NDQxNjljNmIxMzJmZmJkMDRmMTQ5OTc2YjIxNmFjMTAz
MjMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvU3RhY2tUcmFjZS5jcHAKQEAg
LTAsMCArMSwxMTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0YWNrVHJhY2UuaCIKKwor
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
CisKKyNpZiBIQVZFKEJBQ0tUUkFDRV9TWU1CT0xTKSB8fCBIQVZFKERMQUREUikKKyNpbmNsdWRl
IDxjeHhhYmkuaD4KKyNpbmNsdWRlIDxkbGZjbi5oPgorI2luY2x1ZGUgPGV4ZWNpbmZvLmg+Cisj
ZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKK0FMV0FZU19JTkxJTkUgc2l6ZV90IFN0YWNrVHJh
Y2U6Omluc3RhbmNlU2l6ZShpbnQgY2FwYWNpdHkpCit7CisgICAgQVNTRVJUKGNhcGFjaXR5ID49
IDEpOworICAgIHJldHVybiBzaXplb2YoU3RhY2tUcmFjZSkgKyAoY2FwYWNpdHkgLSAxKSAqIHNp
emVvZih2b2lkKik7Cit9CisKK1N0YWNrVHJhY2UqIFN0YWNrVHJhY2U6OmNhcHR1cmVTdGFja1Ry
YWNlKGludCBtYXhGcmFtZXMpCit7CisgICAgbWF4RnJhbWVzID0gc3RkOjptYXgoMSwgbWF4RnJh
bWVzKTsKKyAgICBzaXplX3Qgc2l6ZVRvQWxsb2NhdGUgPSBpbnN0YW5jZVNpemUobWF4RnJhbWVz
KTsKKyAgICBTdGFja1RyYWNlKiB0cmFjZSA9IG5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhzaXpl
VG9BbGxvY2F0ZSkpIFN0YWNrVHJhY2UoKTsKKworICAgIHN0YXRpYyBjb25zdCBpbnQgZnJhbWVz
VG9Ta2lwID0gMjsKKyAgICBpbnQgbnVtYmVyT2ZGcmFtZXMgPSBtYXhGcmFtZXMgKyBmcmFtZXNU
b1NraXA7CisKKyAgICBXVEZHZXRCYWNrdHJhY2UoJnRyYWNlLT5tX3NraXBwZWRGcmFtZTAsICZu
dW1iZXJPZkZyYW1lcyk7CisgICAgQVNTRVJUKG51bWJlck9mRnJhbWVzID4gZnJhbWVzVG9Ta2lw
KTsKKyAgICB0cmFjZS0+bV9zaXplID0gbnVtYmVyT2ZGcmFtZXMgLSBmcmFtZXNUb1NraXA7Cisg
ICAgdHJhY2UtPm1fY2FwYWNpdHkgPSBtYXhGcmFtZXM7CisKKyAgICByZXR1cm4gdHJhY2U7Cit9
CisKK2F1dG8gU3RhY2tUcmFjZTo6ZGVtYW5nbGUodm9pZCogcGMpIC0+IHN0ZDo6b3B0aW9uYWw8
RGVtYW5nbGVFbnRyeT4KK3sKKyNpZiBIQVZFKERMQUREUikKKyAgICBjb25zdCBjaGFyKiBtYW5n
bGVkTmFtZSA9IG51bGxwdHI7CisgICAgY29uc3QgY2hhciogY3hhRGVtYW5nbGVkID0gbnVsbHB0
cjsKKyAgICBEbF9pbmZvIGluZm87CisgICAgaWYgKGRsYWRkcihwYywgJmluZm8pICYmIGluZm8u
ZGxpX3NuYW1lKQorICAgICAgICBtYW5nbGVkTmFtZSA9IGluZm8uZGxpX3NuYW1lOworICAgIGlm
IChtYW5nbGVkTmFtZSkgeworICAgICAgICBpbnQgc3RhdHVzID0gMDsKKyAgICAgICAgY3hhRGVt
YW5nbGVkID0gYWJpOjpfX2N4YV9kZW1hbmdsZShtYW5nbGVkTmFtZSwgbnVsbHB0ciwgbnVsbHB0
ciwgJnN0YXR1cyk7CisgICAgICAgIFVOVVNFRF9QQVJBTShzdGF0dXMpOworICAgIH0KKyAgICBp
ZiAobWFuZ2xlZE5hbWUgfHwgY3hhRGVtYW5nbGVkKQorICAgICAgICByZXR1cm4gRGVtYW5nbGVF
bnRyeSB7IG1hbmdsZWROYW1lLCBjeGFEZW1hbmdsZWQgfTsKKyNlbmRpZgorICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgU3RhY2tUcmFjZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAoreworICAgIGNvbnN0IGF1dG8qIHN0YWNrID0gdGhpcy0+c3RhY2soKTsKKyNpZiBI
QVZFKEJBQ0tUUkFDRV9TWU1CT0xTKQorICAgIGNoYXIqKiBzeW1ib2xzID0gYmFja3RyYWNlX3N5
bWJvbHMoc3RhY2ssIG1fc2l6ZSk7CisgICAgaWYgKCFzeW1ib2xzKQorICAgICAgICByZXR1cm47
CisjZW5kaWYKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9zaXplOyArK2kpIHsKKyAgICAg
ICAgY29uc3QgY2hhciogbWFuZ2xlZE5hbWUgPSBudWxscHRyOworICAgICAgICBjb25zdCBjaGFy
KiBjeGFEZW1hbmdsZWQgPSBudWxscHRyOworI2lmIEhBVkUoQkFDS1RSQUNFX1NZTUJPTFMpCisg
ICAgICAgIG1hbmdsZWROYW1lID0gc3ltYm9sc1tpXTsKKyNlbGlmIEhBVkUoRExBRERSKQorICAg
ICAgICBhdXRvIGRlbWFuZ2xlZCA9IGRlbWFuZ2xlKHN0YWNrW2ldKTsKKyAgICAgICAgaWYgKGRl
bWFuZ2xlZCkgeworICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBkZW1hbmdsZWQtPm1hbmdsZWRO
YW1lKCk7CisgICAgICAgICAgICBjeGFEZW1hbmdsZWQgPSBkZW1hbmdsZWQtPmRlbWFuZ2xlZE5h
bWUoKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGNvbnN0IGludCBmcmFtZU51bWJlciA9
IGkgKyAxOworICAgICAgICBpZiAobWFuZ2xlZE5hbWUgfHwgY3hhRGVtYW5nbGVkKQorICAgICAg
ICAgICAgb3V0LnByaW50ZigiJS0zZCAlcCAlc1xuIiwgZnJhbWVOdW1iZXIsIHN0YWNrW2ldLCBj
eGFEZW1hbmdsZWQgPyBjeGFEZW1hbmdsZWQgOiBtYW5nbGVkTmFtZSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG91dC5wcmludGYoIiUtM2QgJXBcbiIsIGZyYW1lTnVtYmVyLCBzdGFja1tp
XSk7CisgICAgfQorCisjaWYgSEFWRShCQUNLVFJBQ0VfU1lNQk9MUykKKyAgICBmcmVlKHN5bWJv
bHMpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvU3RhY2tUcmFjZS5oIGIvU291cmNlL1dURi93dGYvU3RhY2tUcmFjZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA0NzVkOWYzNmRlMTJjNWE2ZmE4NWU3YjBiZmQ2NDcyZDFjNGMyNzcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGFja1RyYWNlLmgKQEAgLTAsMCArMSwxMDQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRGVmYXVsdEZyZWUuaD4KKyNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFByaW50U3RyZWFtOworCitjbGFz
cyBTdGFja1RyYWNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgU3RhY2tUcmFjZSogY2FwdHVyZVN0YWNrVHJhY2UoaW50IG1heEZyYW1lcyk7CisK
KyAgICAvLyBCb3Jyb3dlZCBzdGFjayB0cmFjZS4KKyAgICBTdGFja1RyYWNlKHZvaWQqKiBzdGFj
aywgaW50IHNpemUpCisgICAgICAgIDogbV9zaXplKHNpemUpCisgICAgICAgICwgbV9jYXBhY2l0
eSgwKQorICAgICAgICAsIG1fYm9ycm93ZWRTdGFjayhzdGFjaykKKyAgICB7IH0KKworICAgIGlu
dCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgdm9pZCogY29uc3QgKiBzdGFj
aygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fY2FwYWNpdHkpCisgICAgICAgICAgICBy
ZXR1cm4gbV9ib3Jyb3dlZFN0YWNrOworICAgICAgICByZXR1cm4gbV9zdGFjazsKKyAgICB9CisK
KyAgICBjbGFzcyBEZW1hbmdsZUVudHJ5IHsKKyAgICBwdWJsaWM6CisgICAgICAgIERlbWFuZ2xl
RW50cnkoY29uc3QgY2hhciogbWFuZ2xlZE5hbWUsIGNvbnN0IGNoYXIqIGRlbWFuZ2xlZE5hbWUp
CisgICAgICAgICAgICA6IG1fbWFuZ2xlZE5hbWUobWFuZ2xlZE5hbWUpCisgICAgICAgICAgICAs
IG1fZGVtYW5nbGVkTmFtZShkZW1hbmdsZWROYW1lKQorICAgICAgICB7IH0KKworICAgICAgICBj
b25zdCBjaGFyKiBtYW5nbGVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFuZ2xlZE5hbWU7IH0K
KyAgICAgICAgY29uc3QgY2hhciogZGVtYW5nbGVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVt
YW5nbGVkTmFtZS5nZXQoKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgY29uc3QgY2hhciog
bV9tYW5nbGVkTmFtZSB7IG51bGxwdHIgfTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGNvbnN0
IGNoYXJbXSwgRGVmYXVsdEZyZWU8Y29uc3QgY2hhcltdPj4gbV9kZW1hbmdsZWROYW1lOworICAg
IH07CisKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxEZW1hbmdsZUVudHJ5PiBkZW1hbmdsZSh2
b2lkKik7CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICBpbmxpbmUgc3RhdGljIHNpemVfdCBpbnN0YW5jZVNpemUoaW50IGNhcGFjaXR5KTsKKwor
ICAgIFN0YWNrVHJhY2UoKQorICAgICAgICA6IG1fc2l6ZSgwKQorICAgIHsgfQorCisgICAgLy8g
V2Ugc3RydWN0dXJlIHRoZSB0b3AgZmllbGRzIHRoaXMgd2F5IGJlY2F1c2UgdGhlIHVuZGVybHlp
bmcgc3RhY2sgY2FwdHVyZQorICAgIC8vIGZhY2lsaXR5IHdpbGwgY2FwdHVyZSBmcm9tIHRoZSB0
b3Agb2YgdGhlIHN0YWNrLCBhbmQgd2UnbGwgbmVlZCB0byBza2lwIHRoZQorICAgIC8vIHRvcCAy
IGZyYW1lIHdoaWNoIGlzIG9mIG5vIGludGVyZXN0LiBTZXR0aW5nIHVwIHRoZSBmaWVsZHMgbGF5
b3V0IHRoaXMgd2F5CisgICAgLy8gYWxsb3dzIHVzIHRvIGNhcHR1cmUgdGhlIHN0YWNrIGluIHBs
YWNlIGFuZCBtaW5pbWl6ZSBzcGFjZSB3YXN0YWdlLgorICAgIHVuaW9uIHsKKyAgICAgICAgc3Ry
dWN0IHsKKyAgICAgICAgICAgIGludCBtX3NpemU7CisgICAgICAgICAgICBpbnQgbV9jYXBhY2l0
eTsKKyAgICAgICAgfTsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHZvaWQqIG1fc2tp
cHBlZEZyYW1lMDsKKyAgICAgICAgICAgIHZvaWQqIG1fc2tpcHBlZEZyYW1lMTsKKyAgICAgICAg
fTsKKyAgICB9OworICAgIHVuaW9uIHsKKyAgICAgICAgdm9pZCoqIG1fYm9ycm93ZWRTdGFjazsK
KyAgICAgICAgdm9pZCogbV9zdGFja1sxXTsKKyAgICB9OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V1RGCisKK3VzaW5nIFdURjo6U3RhY2tUcmFjZTsK
</data>
<flag name="review"
          id="329152"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>