<?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>92624</bug_id>
          
          <creation_ts>2012-07-30 02:35:19 -0700</creation_ts>
          <short_desc>Add special export macro for string related functions</short_desc>
          <delta_ts>2012-07-30 18:22:56 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>76257</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Patrick R. Gansterer">paroga</assigned_to>
          <cc>morrita</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>681805</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-07-30 02:35:19 -0700</bug_when>
    <thetext>Add special export macro for string related functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681812</commentid>
    <comment_count>1</comment_count>
      <attachid>155241</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-07-30 02:52:44 -0700</bug_when>
    <thetext>Created attachment 155241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681817</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-30 02:57:04 -0700</bug_when>
    <thetext>Attachment 155241 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/Ex...&quot; exit_code: 1
Source/WTF/wtf/text/AtomicString.h:82:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681830</commentid>
    <comment_count>3</comment_count>
      <attachid>155241</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-07-30 03:31:10 -0700</bug_when>
    <thetext>Comment on attachment 155241
Patch

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

r- due to style error. The code direction looks fine to me.

&gt; Source/WTF/wtf/ExportMacros.h:144
&gt; +#if PLATFORM(WIN)

I expect this conditional to be tuned in coming revisions, right?
If so, it&apos;s OK for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681831</commentid>
    <comment_count>4</comment_count>
      <attachid>155244</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-07-30 03:33:42 -0700</bug_when>
    <thetext>Created attachment 155244
Patch

(In reply to comment #3)
&gt; &gt; Source/WTF/wtf/ExportMacros.h:144
&gt; &gt; +#if PLATFORM(WIN)
&gt; 
&gt; I expect this conditional to be tuned in coming revisions, right?
Yes, in the commit, where i change the build system.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681837</commentid>
    <comment_count>5</comment_count>
      <attachid>155244</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-07-30 03:49:18 -0700</bug_when>
    <thetext>Comment on attachment 155244
Patch

Looks good. Please wait until bots become green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682254</commentid>
    <comment_count>6</comment_count>
      <attachid>155244</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-30 11:54:00 -0700</bug_when>
    <thetext>Comment on attachment 155244
Patch

Clearing flags on attachment: 155244

Committed r124069: &lt;http://trac.webkit.org/changeset/124069&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682255</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-30 11:54:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682571</commentid>
    <comment_count>8</comment_count>
      <attachid>155244</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-07-30 17:44:36 -0700</bug_when>
    <thetext>Comment on attachment 155244
Patch

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

&gt; Source/WTF/wtf/ExportMacros.h:148
&gt; +#if PLATFORM(WIN)
&gt; +#define WTF_EXPORT_STRING_API
&gt; +#else
&gt; +#define WTF_EXPORT_STRING_API WTF_EXPORT_PRIVATE
&gt; +#endif

The use of the term API here is misleading. These are private entry points for use only within the WebKit project, right? So they are not API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682595</commentid>
    <comment_count>9</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-07-30 18:22:56 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 155244 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=155244&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/ExportMacros.h:148
&gt; &gt; +#if PLATFORM(WIN)
&gt; &gt; +#define WTF_EXPORT_STRING_API
&gt; &gt; +#else
&gt; &gt; +#define WTF_EXPORT_STRING_API WTF_EXPORT_PRIVATE
&gt; &gt; +#endif
&gt; 
&gt; The use of the term API here is misleading. These are private entry points for use only within the WebKit project, right? So they are not API.

True. Maybe WTF_EXPORT_PRIVATE_STRING_API?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155241</attachid>
            <date>2012-07-30 02:52:44 -0700</date>
            <delta_ts>2012-07-30 03:33:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92624-20120730115227.patch</filename>
            <type>text/plain</type>
            <size>34120</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRhMjUzNTczYjEwZTdkY2E4NWMxZTIx
MDIxMDUzMzJmNTBmMWE4NDEuLmQ1YTY1YjI5MjBmNWU4YTdkMjA0MjA2YjJiYmQwOGU5MjhlMmYy
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDctMzAgIFBhdHJpY2sgR2Fuc3RlcmVyICA8
cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHNwZWNpYWwgZXhwb3J0IG1hY3JvIGZv
ciBzdHJpbmcgcmVsYXRlZCBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkyNjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIHdpbmRvd3MgcG9ydCBjb21waWxlcyBzdHJpbmcgcmVsYXRl
ZCBjb2RlIGludG8gZXZlcnkgYmluYXJ5IGZvciBwZXJmb3JtYW5jZSByZWFzb25zIChzZWUgcjU5
MTg3KS4KKyAgICAgICAgQWRkIHRoZSBXVEZfRVhQT1JUX1NUUklOR19BUEkgZGVmaW5lIHRvIGFs
bG93IHRoaXMgYmVoYXZpb3VyIHdpdGggZXhwb3J0IG1hY3JvcyB0b28uCisKKyAgICAgICAgKiB3
dGYvRXhwb3J0TWFjcm9zLmg6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6Cisg
ICAgICAgIChBdG9taWNTdHJpbmcpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoK
KyAgICAgICAgKFN0cmluZ0ltcGwpOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvdGV4
dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFdURik6CisgICAgICAgIChTdHJpbmcpOgorCiAyMDEy
LTA3LTI2ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IG1vdmUgU3RyaW5nSW1wbCBzaXplIGNhbGN1bGF0aW9uIHRvIFN0cmlu
Z0ltcGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0V4cG9ydE1hY3Jvcy5oIGIvU291cmNl
L1dURi93dGYvRXhwb3J0TWFjcm9zLmgKaW5kZXggZTc4NDI0N2M0ODllY2EzN2Q3OGEwMTM4YmJi
M2ZiYWI4NDY5MmNiYS4uZWY5YmQyM2Y3OTBmZjM1YTBlYWEwMDVmZTZkNGQyODEwYzRkMDIzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRXhwb3J0TWFjcm9zLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvRXhwb3J0TWFjcm9zLmgKQEAgLTE0MSw2ICsxNDEsMTIgQEAKICNkZWZpbmUgV1RGX0VY
UE9SVF9QUklWQVRFX05PX1JUVEkgV1RGX0VYUE9SVF9QUklWQVRFCiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKFdJTikKKyNkZWZpbmUgV1RGX0VYUE9SVF9TVFJJTkdfQVBJCisjZWxzZQorI2RlZmlu
ZSBXVEZfRVhQT1JUX1NUUklOR19BUEkgV1RGX0VYUE9SVF9QUklWQVRFCisjZW5kaWYKKwogI2Rl
ZmluZSBXVEZfRVhQT1JUX0hJRERFTiBXVEZfSElEREVOCiAKICNkZWZpbmUgSElEREVOX0lOTElO
RSBXVEZfRVhQT1JUX0hJRERFTiBpbmxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCmlu
ZGV4IGU3NTgzMGVlNTM4ZDAyM2RmZDIzZTM1N2UxNjcyNjQxZDkzOGUwMDYuLmMyMTEwNjg5ZTMw
OGVhNmJkZjgxOWFmYmYwY2ZmM2M2ODhkNDRjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvQXRvbWljU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJp
bmcuaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgQXRvbWljU3RyaW5nKFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRW
YWx1ZSkgeyB9CiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KIAotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZChjb25zdCBVQ2hhciogcywg
dW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOworICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZChjb25zdCBVQ2hhciogcywg
dW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOwogCiAgICAgb3BlcmF0b3Ig
Y29uc3QgU3RyaW5nJigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAgICAgY29uc3QgU3Ry
aW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfTsKQEAgLTExOSw3ICsxMTks
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBlbmRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRj
aExlbmd0aF0sIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0CiAgICAgICAgIHsgcmV0
dXJuIG1fc3RyaW5nLmVuZHNXaXRoPG1hdGNoTGVuZ3RoPihwcmVmaXgsIGNhc2VTZW5zaXRpdmUp
OyB9CiAgICAgCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0b21pY1N0cmluZyBsb3dlcigpIGNv
bnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBBdG9taWNTdHJpbmcgbG93ZXIoKSBjb25z
dDsKICAgICBBdG9taWNTdHJpbmcgdXBwZXIoKSBjb25zdCB7IHJldHVybiBBdG9taWNTdHJpbmco
aW1wbCgpLT51cHBlcigpKTsgfQogICAgIAogICAgIGludCB0b0ludChib29sKiBvayA9IDApIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nLnRvSW50KG9rKTsgfQpAQCAtMTU2LDIyICsxNTYsMjIgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zdHJpbmc7CiAgICAgCi0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBMQ2hh
ciopOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBhZGQoY29uc3QgTENoYXIqKTsKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBjaGFyKiBzKSB7IHJldHVybiBhZGQocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpKTsgfTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVu
Z3RoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBjaGFyKiBzLCB1bnNp
Z25lZCBsZW5ndGgpIHsgcmV0dXJuIGFkZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihz
KSwgbGVuZ3RoKTsgfTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBl
eGlzdGluZ0hhc2gpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBhZGQoY29uc3QgVUNoYXIqKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBvZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwg
dW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGlj
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKik7CisgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBs
KiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIEFMV0FZU19JTkxJTkUg
c3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwqIHIpCiAgICAgewog
ICAgICAgICBpZiAoIXIgfHwgci0+aXNBdG9taWMoKSkKICAgICAgICAgICAgIHJldHVybiByOwog
ICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2Uocik7CiAgICAgfQotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRGcm9tTGl0ZXJhbERhdGEoY29u
c3QgTENoYXIgKmNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKFN0cmluZ0lt
cGwqKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tVVRG
OEludGVybmFsKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik7CisgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZEZyb21MaXRlcmFsRGF0YShj
b25zdCBMQ2hhciAqY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoU3Ry
aW5nSW1wbCopOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgQXRvbWljU3RyaW5n
IGZyb21VVEY4SW50ZXJuYWwoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKIH07CiAKIGlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJp
bmcmIGIpIHsgcmV0dXJuIGEuaW1wbCgpID09IGIuaW1wbCgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5oCmluZGV4IDIzYzc3Zjc2N2Q5MWFmMTFmMjJiMjE4Yjk2YWQ1NTJiZTFkZWRhZDQuLjhl
MjMyN2YyZWJjNTg1NmQ0OTU2OGI5ZjcxZDE4MjIwODdhMGU2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oCkBAIC0yNDksMTIgKzI0OSwxMiBAQCBwcml2YXRlOgogI2VuZGlmCiAKIHB1Ymxp
YzoKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgflN0cmluZ0ltcGwoKTsKKyAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgflN0cmluZ0ltcGwoKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxl
bmd0aCk7CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBj
cmVhdGUoY29uc3QgY2hhciogcywgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBjcmVhdGUocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBsZW5ndGgpOyB9Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBMQ2hh
ciopOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBjcmVhdGUoY29uc3QgTENoYXIqKTsKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBzKSB7IHJldHVybiBjcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpKTsgfQogCiAgICAgc3RhdGljIEFMV0FZ
U19JTkxJTkUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGU4KFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gcmVwLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKQEAgLTI4NCw3ICsy
ODQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RyaW5nSW1wbChy
ZXAtPm1fZGF0YTE2ICsgb2Zmc2V0LCBsZW5ndGgsIG93bmVyUmVwKSk7CiAgICAgfQogCi0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZUZy
b21MaXRlcmFsKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVh
dGVGcm9tTGl0ZXJhbChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsK
ICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+CiAgICAgQUxXQVlTX0lOTElO
RSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChjb25zdCBj
aGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkKICAgICB7CkBAIC0yOTQsOCArMjk0
LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY3JlYXRlRnJvbUxpdGVyYWwocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBjaGFyYWN0ZXJzQ291bnQgLSAxKTsK
ICAgICB9CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSk7
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpOworICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgTENoYXIqJiBkYXRhKTsKKyAgICBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0
aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSk7CiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHN0YXRpYyBBTFdBWVNfSU5MSU5FIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5
Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFQqJiBvdXRwdXQpCiAgICAgewog
ICAgICAgICBpZiAoIWxlbmd0aCkgewpAQCAtMzQ4LDggKzM0OCw4IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGVtcHR5KCk7CiAgICAgfQogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlcjxVQ2hhcj4mKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRvcHQo
U3RyaW5nQnVmZmVyPExDaGFyPiYpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXI8VUNoYXI+Jik7CisgICAg
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkb3B0
KFN0cmluZ0J1ZmZlcjxMQ2hhcj4mKTsKIAogI2lmIFBMQVRGT1JNKFFUKSAmJiBIQVZFKFFUNSkK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZG9wdChRU3RyaW5nRGF0YSopOwpA
QCAtMzg4LDcgKzM4OCw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90
IHNpemVJbkJ5dGVzKCkgY29uc3Q7CiAKICAgICBib29sIGhhczE2Qml0U2hhZG93KCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnSGFzMTZCaXRTaGFkb3c7IH0KLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB1cGNvbnZlcnRDaGFyYWN0ZXJzKHVuc2lnbmVkLCB1
bnNpZ25lZCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgdXBjb252ZXJ0
Q2hhcmFjdGVycyh1bnNpZ25lZCwgdW5zaWduZWQpIGNvbnN0OwogICAgIGJvb2wgaXNJZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnSXNJZGVudGlm
aWVyOyB9CiAgICAgdm9pZCBzZXRJc0lkZW50aWZpZXIoYm9vbCBpc0lkZW50aWZpZXIpCiAgICAg
ewpAQCAtNTE3LDcgKzUxNyw3IEBAIHB1YmxpYzoKICAgICAvLyBpdHMgb3duIGNvcHkgb2YgdGhl
IHN0cmluZy4KICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGlzb2xhdGVkQ29weSgpIGNvbnN0
OwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3Vic3Ry
aW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpOworICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHN1YnN0cmluZyh1bnNpZ25lZCBw
b3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKTsKIAogICAgIFVDaGFyIG9wZXJhdG9yW10odW5z
aWduZWQgaSkgY29uc3QKICAgICB7CkBAIC01MjYsOSArNTI2LDkgQEAgcHVibGljOgogICAgICAg
ICAgICAgcmV0dXJuIG1fZGF0YThbaV07CiAgICAgICAgIHJldHVybiBtX2RhdGExNltpXTsKICAg
ICB9Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFVDaGFyMzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1
bnNpZ25lZCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFVDaGFyMzIgY2hhcmFjdGVyU3Rh
cnRpbmdBdCh1bnNpZ25lZCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjb250YWlu
c09ubHlXaGl0ZXNwYWNlKCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgY29udGFp
bnNPbmx5V2hpdGVzcGFjZSgpOwogCiAgICAgaW50IHRvSW50U3RyaWN0KGJvb2wqIG9rID0gMCwg
aW50IGJhc2UgPSAxMCk7CiAgICAgdW5zaWduZWQgdG9VSW50U3RyaWN0KGJvb2wqIG9rID0gMCwg
aW50IGJhc2UgPSAxMCk7CkBAIC01MzYsNyArNTM2LDcgQEAgcHVibGljOgogICAgIHVpbnQ2NF90
IHRvVUludDY0U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiAgICAgaW50cHRy
X3QgdG9JbnRQdHJTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKIAotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFp
bGluZyBnYXJiYWdlCisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGludCB0b0ludChib29sKiBv
ayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKICAgICB1bnNpZ25lZCB0b1VJbnQo
Ym9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiAgICAgaW50NjRfdCB0
b0ludDY0KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogICAgIHVp
bnQ2NF90IHRvVUludDY0KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFn
ZQpAQCAtNTQ4LDE2ICs1NDgsMTYgQEAgcHVibGljOgogICAgIGRvdWJsZSB0b0RvdWJsZShib29s
KiBvayA9IDApOwogICAgIGZsb2F0IHRvRmxvYXQoYm9vbCogb2sgPSAwKTsKIAotICAgIFdURl9F
WFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGxvd2VyKCk7Ci0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdXBwZXIoKTsKKyAgICBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBsb3dlcigpOworICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHVwcGVyKCk7CiAKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBmaWxsKFVDaGFyKTsKKyAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBmaWxsKFVDaGFy
KTsKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBmaWxsKGNoYXIpIG9yIGNhbiB3ZSBqdXN0IGRv
IHRoZSByaWdodCB0aGluZyBpZiBVQ2hhciBpcyBBU0NJST8KICAgICBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IGZvbGRDYXNlKCk7CiAKICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHN0cmlwV2hp
dGVTcGFjZSgpOwogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3RyaXBXaGl0ZVNwYWNlKElz
V2hpdGVTcGFjZUZ1bmN0aW9uUHRyKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBzaW1wbGlmeVdoaXRlU3BhY2UoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzaW1wbGlmeVdoaXRlU3BhY2UoKTsKICAgICBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IHNpbXBsaWZ5V2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5j
dGlvblB0cik7CiAKICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlbW92ZUNoYXJhY3RlcnMo
Q2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0cik7CkBAIC01NjcsMzcgKzU2NywzNyBAQCBwdWJsaWM6
CiAgICAgc2l6ZV90IGZpbmQoTENoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApOwog
ICAgIHNpemVfdCBmaW5kKGNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApOwogICAg
IHNpemVfdCBmaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciwg
dW5zaWduZWQgaW5kZXggPSAwKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IGZp
bmQoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciwgdW5zaWduZWQgaW5kZXggPSAwKTsKICAgICBz
aXplX3QgZmluZChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGluZGV4ID0gMCk7CiAgICAgQUxXQVlT
X0lOTElORSBzaXplX3QgZmluZChjb25zdCBjaGFyKiBzLCB1bnNpZ25lZCBpbmRleCA9IDApIHsg
cmV0dXJuIGZpbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBpbmRleCk7IH07
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKFN0cmluZ0ltcGwqKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4
KTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IGZpbmQoU3RyaW5nSW1wbCopOwor
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgZmluZChTdHJpbmdJbXBsKiwgdW5zaWdu
ZWQgaW5kZXgpOwogICAgIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IExDaGFyKiwgdW5z
aWduZWQgaW5kZXggPSAwKTsKICAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBmaW5kSWdub3JpbmdD
YXNlKGNvbnN0IGNoYXIqIHMsIHVuc2lnbmVkIGluZGV4ID0gMCkgeyByZXR1cm4gZmluZElnbm9y
aW5nQ2FzZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyksIGluZGV4KTsgfTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCos
IHVuc2lnbmVkIGluZGV4ID0gMCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCBm
aW5kSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IDApOwogCi0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmluZChVQ2hhciwgdW5zaWduZWQgaW5k
ZXggPSBVSU5UX01BWCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmlu
ZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCk7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5z
aWduZWQgaW5kZXggPSBVSU5UX01BWCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVf
dCByZXZlcnNlRmluZChVQ2hhciwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCk7CisgICAgV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdJbXBsKiwgdW5zaWdu
ZWQgaW5kZXggPSBVSU5UX01BWCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCBy
ZXZlcnNlRmluZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBVSU5U
X01BWCk7CiAKICAgICBib29sIHN0YXJ0c1dpdGgoU3RyaW5nSW1wbCogc3RyLCBib29sIGNhc2VT
ZW5zaXRpdmUgPSB0cnVlKSB7IHJldHVybiAoY2FzZVNlbnNpdGl2ZSA/IHJldmVyc2VGaW5kKHN0
ciwgMCkgOiByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShzdHIsIDApKSA9PSAwOyB9Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChVQ2hhcikgY29uc3Q7Ci0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyKiwgdW5zaWduZWQgbWF0Y2hM
ZW5ndGgsIGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIGJvb2wgc3RhcnRzV2l0aChVQ2hhcikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyKiwgdW5zaWduZWQgbWF0Y2hMZW5ndGgsIGJv
b2wgY2FzZVNlbnNpdGl2ZSkgY29uc3Q7CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5n
dGg+CiAgICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3Ro
XSwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QgeyByZXR1cm4gc3RhcnRzV2l0aChw
cmVmaXgsIG1hdGNoTGVuZ3RoIC0gMSwgY2FzZVNlbnNpdGl2ZSk7IH07CiAKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChTdHJpbmdJbXBsKiwgYm9vbCBjYXNlU2Vuc2l0aXZl
ID0gdHJ1ZSk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGgoVUNoYXIpIGNv
bnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIqLCB1
bnNpZ25lZCBtYXRjaExlbmd0aCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgYm9vbCBlbmRzV2l0aChTdHJpbmdJbXBsKiwgYm9vbCBjYXNlU2Vu
c2l0aXZlID0gdHJ1ZSk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZW5kc1dpdGgo
VUNoYXIpIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVuZHNXaXRoKGNv
bnN0IGNoYXIqLCB1bnNpZ25lZCBtYXRjaExlbmd0aCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25z
dDsKICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4KICAgICBib29sIGVuZHNXaXRo
KGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSwgYm9vbCBjYXNlU2Vuc2l0aXZlID0g
dHJ1ZSkgY29uc3QgeyByZXR1cm4gZW5kc1dpdGgocHJlZml4LCBtYXRjaExlbmd0aCAtIDEsIGNh
c2VTZW5zaXRpdmUpOyB9CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiByZXBsYWNlKFVDaGFyLCBVQ2hhcik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5nSW1wbCopOwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoU3RyaW5nSW1w
bCosIFN0cmluZ0ltcGwqKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW4sIFN0cmluZ0ltcGwq
KTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBs
YWNlKFVDaGFyLCBVQ2hhcik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoU3RyaW5nSW1wbCosIFN0
cmluZ0ltcGwqKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW4sIFN0cmluZ0ltcGwqKTsK
IAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkZWZhdWx0
V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IDApOworICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkZWZhdWx0V3Jp
dGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IDApOwogCiAjaWYg
VVNFKENGKQogICAgIENGU3RyaW5nUmVmIGNyZWF0ZUNGU3RyaW5nKCk7CkBAIC02MTQsNyArNjE0
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3RhdGljKCkgY29uc3QgeyByZXR1cm4gbV9yZWZD
b3VudCAmIHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmc7IH0KICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVUNoYXJQcmVkaWNhdGU+IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3RyaXBNYXRjaGVkQ2hh
cmFjdGVycyhVQ2hhclByZWRpY2F0ZSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBl
LCBjbGFzcyBVQ2hhclByZWRpY2F0ZT4gUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzaW1wbGlmeU1h
dGNoZWRDaGFyYWN0ZXJzVG9TcGFjZShVQ2hhclByZWRpY2F0ZSk7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIE5FVkVSX0lOTElORSBjb25zdCBVQ2hhciogZ2V0RGF0YTE2U2xvd0Nhc2UoKSBjb25z
dDsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgTkVWRVJfSU5MSU5FIGNvbnN0IFVDaGFyKiBn
ZXREYXRhMTZTbG93Q2FzZSgpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBORVZFUl9J
TkxJTkUgdW5zaWduZWQgaGFzaFNsb3dDYXNlKCkgY29uc3Q7CiAKICAgICAvLyBUaGUgYm90dG9t
IGJpdCBpbiB0aGUgcmVmIGNvdW50IGluZGljYXRlcyBhIHN0YXRpYyAoaW1tb3J0YWwpIHN0cmlu
Zy4KQEAgLTY1NywxNCArNjU3LDE0IEBAIEFMV0FZU19JTkxJTkUgY29uc3QgTENoYXIqIFN0cmlu
Z0ltcGw6OmdldENoYXJhY3RlcnM8TENoYXI+KCkgY29uc3QgeyByZXR1cm4gY2hhCiB0ZW1wbGF0
ZSA8PgogQUxXQVlTX0lOTElORSBjb25zdCBVQ2hhciogU3RyaW5nSW1wbDo6Z2V0Q2hhcmFjdGVy
czxVQ2hhcj4oKSBjb25zdCB7IHJldHVybiBjaGFyYWN0ZXJzKCk7IH0KIAotV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsK
LVdURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBM
Q2hhciopOworV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1w
bCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKK1dURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVxdWFs
KGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBMQ2hhciopOwogaW5saW5lIGJvb2wgZXF1YWwoY29u
c3QgU3RyaW5nSW1wbCogYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gZXF1YWwoYSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsgfQotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
ZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IExDaGFyKiwgdW5zaWduZWQpOworV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IExDaGFy
KiwgdW5zaWduZWQpOwogaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29u
c3QgY2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBlcXVhbChhLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oYiksIGxlbmd0aCk7IH0KIGlubGluZSBib29sIGVxdWFsKGNv
bnN0IExDaGFyKiBhLCBTdHJpbmdJbXBsKiBiKSB7IHJldHVybiBlcXVhbChiLCBhKTsgfQogaW5s
aW5lIGJvb2wgZXF1YWwoY29uc3QgY2hhciogYSwgU3RyaW5nSW1wbCogYikgeyByZXR1cm4gZXF1
YWwoYiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGEpKTsgfQotV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFVDaGFyKiwgdW5zaWdu
ZWQpOworV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCos
IGNvbnN0IFVDaGFyKiwgdW5zaWduZWQpOwogCiAvLyBEbyBjb21wYXJpc29ucyA4IG9yIDQgYnl0
ZXMtYXQtYS10aW1lIG9uIGFyY2hpdGVjdHVyZXMgd2hlcmUgaXQncyBzYWZlLgogI2lmIENQVShY
ODZfNjQpCkBAIC04MjIsMTYgKzgyMiwxNiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgZXF1YWwoY29u
c3QgVUNoYXIqIGEsIGNvbnN0IExDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdDYXNlKFN0
cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbEln
bm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgY29uc3QgTENoYXIqKTsKK1dURl9FWFBPUlRfU1RSSU5H
X0FQSSBib29sIGVxdWFsSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CitX
VEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwg
Y29uc3QgTENoYXIqKTsKIGlubGluZSBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IExDaGFy
KiBhLCBTdHJpbmdJbXBsKiBiKSB7IHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShiLCBhKTsgfQot
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgTENoYXIqLCBj
b25zdCBMQ2hhciosIHVuc2lnbmVkKTsKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdu
b3JpbmdDYXNlKGNvbnN0IFVDaGFyKiwgY29uc3QgTENoYXIqLCB1bnNpZ25lZCk7CitXVEZfRVhQ
T1JUX1NUUklOR19BUEkgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBMQ2hhciosIGNvbnN0
IExDaGFyKiwgdW5zaWduZWQpOworV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZXF1YWxJZ25v
cmluZ0Nhc2UoY29uc3QgVUNoYXIqLCBjb25zdCBMQ2hhciosIHVuc2lnbmVkKTsKIGlubGluZSBi
b29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBjaGFyKiBiLCB1bnNp
Z25lZCBsZW5ndGgpIHsgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGEsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPihiKSwgbGVuZ3RoKTsgfQogaW5saW5lIGJvb2wgZXF1YWxJZ25vcmlu
Z0Nhc2UoY29uc3QgTENoYXIqIGEsIGNvbnN0IFVDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpIHsg
cmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGIsIGEsIGxlbmd0aCk7IH0KIGlubGluZSBib29sIGVx
dWFsSWdub3JpbmdDYXNlKGNvbnN0IGNoYXIqIGEsIGNvbnN0IFVDaGFyKiBiLCB1bnNpZ25lZCBs
ZW5ndGgpIHsgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPihhKSwgbGVuZ3RoKTsgfQogCi1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVh
bElnbm9yaW5nTnVsbGl0eShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOworV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nSW1wbCosIFN0cmluZ0lt
cGwqKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KIGlubGluZSBzaXplX3Qg
ZmluZChjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENo
YXJhY3RlclR5cGUgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0gMCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5oCmluZGV4IDlmNDkyYTdhMWQ2MjM2Yjg3OGU4ZmJiNjIwZDM0ZDE0YTVjYTA0
MTUuLjNlMDlhMjA4ZDg0NTllZGVjN2Y0MzQ2YjAzMGVlZTMzMzUyNmNjNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaApAQCAtNjMsOSArNjMsOSBAQCBzdHJ1Y3QgU3RyaW5nSGFzaDsKIC8vIERl
Y2xhcmF0aW9ucyBvZiBzdHJpbmcgb3BlcmF0aW9ucwogCiBpbnQgY2hhcmFjdGVyc1RvSW50U3Ry
aWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwot
V1RGX0VYUE9SVF9QUklWQVRFIGludCBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY29uc3QgVUNoYXIq
LCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CitXVEZfRVhQT1JUX1NUUklO
R19BUEkgaW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9v
bCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJp
Y3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7Ci1X
VEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBV
Q2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKK1dURl9FWFBPUlRf
U1RSSU5HX0FQSSB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IFVDaGFyKiwg
c2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogaW50NjRfdCBjaGFyYWN0ZXJz
VG9JbnQ2NFN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFz
ZSA9IDEwKTsKIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqLCBz
aXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiB1aW50NjRfdCBjaGFyYWN0ZXJz
VG9VSW50NjRTdHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJh
c2UgPSAxMCk7CkBAIC03NCw3ICs3NCw3IEBAIGludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0clN0
cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9CiBpbnRw
dHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wq
IG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiAKIGludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgTENo
YXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQot
V1RGX0VYUE9SVF9QUklWQVRFIGludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgVUNoYXIqLCBzaXpl
X3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQorV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIGludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJv
b2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogdW5zaWduZWQgY2hhcmFj
dGVyc1RvVUludChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3Jl
cyB0cmFpbGluZyBnYXJiYWdlCiB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50KGNvbnN0IFVDaGFy
Kiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKIGlu
dDY0X3QgY2hhcmFjdGVyc1RvSW50NjQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0g
MCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQpAQCAtODcsMTIgKzg3LDEyIEBAIGludHB0
cl90IGNoYXJhY3RlcnNUb0ludFB0cihjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAw
KTsgLy8gaWdub3JlcyB0cmFpCiAvLyBGSVhNRTogTGlrZSB0aGUgc3RyaWN0IGZ1bmN0aW9ucyBh
Ym92ZSwgdGhlc2UgZ2l2ZSBmYWxzZSBmb3IgIm9rIiB3aGVuIHRoZXJlIGlzIHRyYWlsaW5nIGdh
cmJhZ2UuCiAvLyBMaWtlIHRoZSBub24tc3RyaWN0IGZ1bmN0aW9ucyBhYm92ZSwgdGhlc2UgcmV0
dXJuIHRoZSB2YWx1ZSB3aGVuIHRoZXJlIGlzIHRyYWlsaW5nIGdhcmJhZ2UuCiAvLyBJdCB3b3Vs
ZCBiZSBiZXR0ZXIgaWYgdGhlc2Ugd2VyZSBtb3JlIGNvbnNpc3RlbnQgd2l0aCB0aGUgYWJvdmUg
ZnVuY3Rpb25zIGluc3RlYWQuCi1XVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIGNoYXJhY3RlcnNU
b0RvdWJsZShjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsKLVdURl9FWFBPUlRf
UFJJVkFURSBkb3VibGUgY2hhcmFjdGVyc1RvRG91YmxlKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBi
b29sKiBvayA9IDApOworV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGRvdWJsZSBjaGFyYWN0ZXJzVG9E
b3VibGUoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7CitXVEZfRVhQT1JUX1NU
UklOR19BUEkgZG91YmxlIGNoYXJhY3RlcnNUb0RvdWJsZShjb25zdCBVQ2hhciosIHNpemVfdCwg
Ym9vbCogb2sgPSAwKTsKIGZsb2F0IGNoYXJhY3RlcnNUb0Zsb2F0KGNvbnN0IExDaGFyKiwgc2l6
ZV90LCBib29sKiBvayA9IDApOwotV1RGX0VYUE9SVF9QUklWQVRFIGZsb2F0IGNoYXJhY3RlcnNU
b0Zsb2F0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOwotV1RGX0VYUE9SVF9Q
UklWQVRFIGZsb2F0IGNoYXJhY3RlcnNUb0Zsb2F0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBzaXpl
X3QmIHBhcnNlZExlbmd0aCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgZmxvYXQgY2hhcmFjdGVyc1Rv
RmxvYXQoY29uc3QgVUNoYXIqLCBzaXplX3QsIHNpemVfdCYgcGFyc2VkTGVuZ3RoKTsKK1dURl9F
WFBPUlRfU1RSSU5HX0FQSSBmbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChjb25zdCBVQ2hhciosIHNp
emVfdCwgYm9vbCogb2sgPSAwKTsKK1dURl9FWFBPUlRfU1RSSU5HX0FQSSBmbG9hdCBjaGFyYWN0
ZXJzVG9GbG9hdChjb25zdCBMQ2hhciosIHNpemVfdCwgc2l6ZV90JiBwYXJzZWRMZW5ndGgpOwor
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIGZsb2F0IGNoYXJhY3RlcnNUb0Zsb2F0KGNvbnN0IFVDaGFy
Kiwgc2l6ZV90LCBzaXplX3QmIHBhcnNlZExlbmd0aCk7CiAKIGVudW0gRmxvYXRDb252ZXJzaW9u
RmxhZ3MgewogICAgIFNob3VsZFJvdW5kU2lnbmlmaWNhbnRGaWd1cmVzID0gMSA8PCAwLApAQCAt
MTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcoKSB7IH0KIAogICAgIC8vIENvbnN0
cnVjdCBhIHN0cmluZyB3aXRoIFVURi0xNiBkYXRhLgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBT
dHJpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyBieSBjb3B5aW5nIHRoZSBj
b250ZW50cyBvZiBhIHZlY3Rvci4gIFRvIGF2b2lkCiAgICAgLy8gY29weWluZywgY29uc2lkZXIg
dXNpbmcgU3RyaW5nOjphZG9wdCBpbnN0ZWFkLgpAQCAtMTE2LDE1ICsxMTYsMTUgQEAgcHVibGlj
OgogICAgIGV4cGxpY2l0IFN0cmluZyhjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5
PiYpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggVVRGLTE2IGRhdGEsIGZyb20g
YSBudWxsLXRlcm1pbmF0ZWQgc291cmNlLgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmco
Y29uc3QgVUNoYXIqKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nKGNvbnN0IFVD
aGFyKik7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YS4KLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNp
Z25lZCBsZW5ndGgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoY29uc3QgY2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkg
U3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGluMSBkYXRh
LCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBTdHJpbmcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMpOworICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycyk7CiAKICAgICAvLyBDb25zdHJ1Y3Qg
YSBzdHJpbmcgcmVmZXJlbmNpbmcgYW4gZXhpc3RpbmcgU3RyaW5nSW1wbC4KICAgICBTdHJpbmco
U3RyaW5nSW1wbCogaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9CkBAIC0xOTAsOSArMTkwLDkgQEAg
cHVibGljOgogCiAgICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX2ltcGwtPmlzOEJp
dCgpOyB9CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyBhc2NpaSgpIGNvbnN0Owot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBDU3RyaW5nIGxhdGluMSgpIGNvbnN0OwotICAgIFdURl9F
WFBPUlRfUFJJVkFURSBDU3RyaW5nIHV0ZjgoYm9vbCBzdHJpY3QgPSBmYWxzZSkgY29uc3Q7Cisg
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIENTdHJpbmcgYXNjaWkoKSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgQ1N0cmluZyBsYXRpbjEoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgQ1N0cmluZyB1dGY4KGJvb2wgc3RyaWN0ID0gZmFsc2UpIGNvbnN0OwogCiAg
ICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICB7CkBAIC0yMDIs
MTQgKzIwMiwxNCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIFN0cmluZyBudW1iZXIo
c2hvcnQpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNp
Z25lZCBzaG9ydCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVy
KGludCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2ln
bmVkKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyk7
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxv
bmcpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25nIGxv
bmcpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25l
ZCBsb25nIGxvbmcpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJl
cihkb3VibGUsIHVuc2lnbmVkID0gU2hvdWxkUm91bmRTaWduaWZpY2FudEZpZ3VyZXMgfCBTaG91
bGRUcnVuY2F0ZVRyYWlsaW5nWmVyb3MsIHVuc2lnbmVkIHByZWNpc2lvbiA9IDYpOworICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBzaG9ydCk7
CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGludCk7Cisg
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkKTsK
KyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyk7Cisg
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxv
bmcpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25n
IGxvbmcpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlcih1
bnNpZ25lZCBsb25nIGxvbmcpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3Ry
aW5nIG51bWJlcihkb3VibGUsIHVuc2lnbmVkID0gU2hvdWxkUm91bmRTaWduaWZpY2FudEZpZ3Vy
ZXMgfCBTaG91bGRUcnVuY2F0ZVRyYWlsaW5nWmVyb3MsIHVuc2lnbmVkIHByZWNpc2lvbiA9IDYp
OwogCiAgICAgLy8gRmluZCBhIHNpbmdsZSBjaGFyYWN0ZXIgb3Igc3RyaW5nLCBhbHNvIHdpdGgg
bWF0Y2ggZnVuY3Rpb24gJiBsYXRpbjEgZm9ybXMuCiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgYywg
dW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdApAQCAtMjQ3LDkgKzI0Nyw5IEBAIHB1YmxpYzoKICAg
ICBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0YXJ0LCBi
b29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIGNhc2VTZW5zaXRpdmUg
PyByZXZlcnNlRmluZChzdHIsIHN0YXJ0KSA6IHJldmVyc2VGaW5kSWdub3JpbmdDYXNlKHN0ciwg
c3RhcnQpOyB9CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOwogICAgIAotICAgIFdURl9F
WFBPUlRfUFJJVkFURSBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQpIGNvbnN0
OyAvLyBEaXR0by4KKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgVUNoYXIzMiBjaGFyYWN0ZXJT
dGFydGluZ0F0KHVuc2lnbmVkKSBjb25zdDsgLy8gRGl0dG8uCiAgICAgCiAgICAgYm9vbCBjb250
YWlucyhVQ2hhciBjKSBjb25zdCB7IHJldHVybiBmaW5kKGMpICE9IG5vdEZvdW5kOyB9CiAgICAg
Ym9vbCBjb250YWlucyhjb25zdCBMQ2hhciogc3RyLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVl
KSBjb25zdCB7IHJldHVybiBmaW5kKHN0ciwgMCwgY2FzZVNlbnNpdGl2ZSkgIT0gbm90Rm91bmQ7
IH0KQEAgLTI3MSwxMiArMjcxLDEyIEBAIHB1YmxpYzoKICAgICBib29sIGVuZHNXaXRoKGNvbnN0
IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkg
Y29uc3QKICAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aDxtYXRjaExl
bmd0aD4ocHJlZml4LCBjYXNlU2Vuc2l0aXZlKSA6ICFtYXRjaExlbmd0aDsgfQogCi0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwotICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIGFwcGVuZChMQ2hhcik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2
b2lkIGFwcGVuZChMQ2hhcik7CiAgICAgdm9pZCBhcHBlbmQoY2hhciBjKSB7IGFwcGVuZChzdGF0
aWNfY2FzdDxMQ2hhcj4oYykpOyB9OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVu
ZChVQ2hhcik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IFVDaGFy
KiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbnNlcnQo
Y29uc3QgU3RyaW5nJiwgdW5zaWduZWQgcG9zKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkg
dm9pZCBhcHBlbmQoVUNoYXIpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIGFwcGVu
ZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHZvaWQgaW5zZXJ0KGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHBvcyk7CiAgICAgdm9pZCBp
bnNlcnQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHBvcyk7CiAKICAg
ICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIgYSwgVUNoYXIgYikgeyBpZiAobV9pbXBsKSBtX2ltcGwg
PSBtX2ltcGwtPnJlcGxhY2UoYSwgYik7IHJldHVybiAqdGhpczsgfQpAQCAtMjg4LDMzICsyODgs
MzMgQEAgcHVibGljOgogICAgIHZvaWQgbWFrZVVwcGVyKCkgeyBpZiAobV9pbXBsKSBtX2ltcGwg
PSBtX2ltcGwtPnVwcGVyKCk7IH0KICAgICB2b2lkIGZpbGwoVUNoYXIgYykgeyBpZiAobV9pbXBs
KSBtX2ltcGwgPSBtX2ltcGwtPmZpbGwoYyk7IH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIHRydW5jYXRlKHVuc2lnbmVkIGxlbik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
cmVtb3ZlKHVuc2lnbmVkIHBvcywgaW50IGxlbiA9IDEpOworICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSB2b2lkIHRydW5jYXRlKHVuc2lnbmVkIGxlbik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHZvaWQgcmVtb3ZlKHVuc2lnbmVkIHBvcywgaW50IGxlbiA9IDEpOwogCi0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZyBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4g
PSBVSU5UX01BWCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBzdWJz
dHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCkgY29uc3Q7CiAgICAg
U3RyaW5nIHN1YnN0cmluZ1NoYXJpbmdJbXBsKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0g
VUlOVF9NQVgpIGNvbnN0OwogICAgIFN0cmluZyBsZWZ0KHVuc2lnbmVkIGxlbikgY29uc3QgeyBy
ZXR1cm4gc3Vic3RyaW5nKDAsIGxlbik7IH0KICAgICBTdHJpbmcgcmlnaHQodW5zaWduZWQgbGVu
KSBjb25zdCB7IHJldHVybiBzdWJzdHJpbmcobGVuZ3RoKCkgLSBsZW4sIGxlbik7IH0KIAogICAg
IC8vIFJldHVybnMgYSBsb3dlcmNhc2UvdXBwZXJjYXNlIHZlcnNpb24gb2YgdGhlIHN0cmluZwot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgbG93ZXIoKSBjb25zdDsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIHVwcGVyKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIFN0cmluZyBsb3dlcigpIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJp
bmcgdXBwZXIoKSBjb25zdDsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3RyaXBX
aGl0ZVNwYWNlKCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBzdHJpcFdo
aXRlU3BhY2UoSXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIpIGNvbnN0OwotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmcgc2ltcGxpZnlXaGl0ZVNwYWNlKCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBzaW1wbGlmeVdoaXRlU3BhY2UoSXNXaGl0ZVNwYWNlRnVuY3Rpb25Q
dHIpIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgc3RyaXBXaGl0ZVNw
YWNlKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBzdHJpcFdoaXRl
U3BhY2UoSXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIpIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBTdHJpbmcgc2ltcGxpZnlXaGl0ZVNwYWNlKCkgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIFN0cmluZyBzaW1wbGlmeVdoaXRlU3BhY2UoSXNXaGl0ZVNwYWNlRnVuY3Rp
b25QdHIpIGNvbnN0OwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyByZW1vdmVDaGFy
YWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpIGNvbnN0OworICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBTdHJpbmcgcmVtb3ZlQ2hhcmFjdGVycyhDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9u
UHRyKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxib29sIGlzU3BlY2lhbENoYXJhY3RlcihVQ2hhcik+
IGJvb2wgaXNBbGxTcGVjaWFsQ2hhcmFjdGVycygpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJuIHRo
ZSBzdHJpbmcgd2l0aCBjYXNlIGZvbGRlZCBmb3IgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29u
LgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgZm9sZENhc2UoKSBjb25zdDsKKyAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nIGZvbGRDYXNlKCkgY29uc3Q7CiAKICNpZiAhUExB
VEZPUk0oUVQpCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgZm9ybWF0KGNv
bnN0IGNoYXIgKiwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URigxLCAyKTsKKyAgICBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBmb3JtYXQoY29uc3QgY2hhciAqLCAuLi4pIFdU
Rl9BVFRSSUJVVEVfUFJJTlRGKDEsIDIpOwogI2Vsc2UKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFN0cmluZyBmb3JtYXQoY29uc3QgY2hhciAqLCAuLi4pOworICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIGZvcm1hdChjb25zdCBjaGFyICosIC4uLik7CiAjZW5k
aWYKIAogICAgIC8vIFJldHVybnMgYW4gdW5pbml0aWFsaXplZCBzdHJpbmcuIFRoZSBjaGFyYWN0
ZXJzIG5lZWRzIHRvIGJlIHdyaXR0ZW4KQEAgLTMyMywzMiArMzIzLDMyIEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hh
ciomIGRhdGEpIHsgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3Ro
LCBkYXRhKTsgfQogICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25l
ZCBsZW5ndGgsIExDaGFyKiYgZGF0YSkgeyByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0
aWFsaXplZChsZW5ndGgsIGRhdGEpOyB9CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBz
cGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29u
c3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBh
cmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNv
bnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwg
VmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8
U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBz
cGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29u
c3Q7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBz
ZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQp
IGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIHNwbGl0KFVDaGFyIHNlcGFy
YXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVz
LCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBpbnQgdG9JbnRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgdG9VSW50U3RyaWN0KGJvb2wqIG9rID0gMCwg
aW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGludDY0X3QgdG9J
bnQ2NFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OworICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBpbnQgdG9JbnRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9
IDEwKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdW5zaWduZWQgdG9VSW50U3Ry
aWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIGludDY0X3QgdG9JbnQ2NFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0g
MTApIGNvbnN0OwogICAgIHVpbnQ2NF90IHRvVUludDY0U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50
IGJhc2UgPSAxMCkgY29uc3Q7CiAgICAgaW50cHRyX3QgdG9JbnRQdHJTdHJpY3QoYm9vbCogb2sg
PSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnQg
dG9JbnQoYm9vbCogb2sgPSAwKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWdu
ZWQgdG9VSW50KGJvb2wqIG9rID0gMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IGludCB0b0ludChib29sKiBvayA9IDApIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSB1bnNpZ25lZCB0b1VJbnQoYm9vbCogb2sgPSAwKSBjb25zdDsKICAgICBpbnQ2NF90IHRvSW50
NjQoYm9vbCogb2sgPSAwKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdWludDY0X3Qg
dG9VSW50NjQoYm9vbCogb2sgPSAwKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50
cHRyX3QgdG9JbnRQdHIoYm9vbCogb2sgPSAwKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgdWludDY0X3QgdG9VSW50NjQoYm9vbCogb2sgPSAwKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgaW50cHRyX3QgdG9JbnRQdHIoYm9vbCogb2sgPSAwKSBjb25zdDsKIAog
ICAgIC8vIEZJWE1FOiBMaWtlIHRoZSBzdHJpY3QgZnVuY3Rpb25zIGFib3ZlLCB0aGVzZSBnaXZl
IGZhbHNlIGZvciAib2siIHdoZW4gdGhlcmUgaXMgdHJhaWxpbmcgZ2FyYmFnZS4KICAgICAvLyBM
aWtlIHRoZSBub24tc3RyaWN0IGZ1bmN0aW9ucyBhYm92ZSwgdGhlc2UgcmV0dXJuIHRoZSB2YWx1
ZSB3aGVuIHRoZXJlIGlzIHRyYWlsaW5nIGdhcmJhZ2UuCiAgICAgLy8gSXQgd291bGQgYmUgYmV0
dGVyIGlmIHRoZXNlIHdlcmUgbW9yZSBjb25zaXN0ZW50IHdpdGggdGhlIGFib3ZlIGZ1bmN0aW9u
cyBpbnN0ZWFkLgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9Eb3VibGUoYm9vbCog
b2sgPSAwKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZmxvYXQgdG9GbG9hdChib29s
KiBvayA9IDApIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBkb3VibGUgdG9Eb3Vi
bGUoYm9vbCogb2sgPSAwKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgZmxvYXQg
dG9GbG9hdChib29sKiBvayA9IDApIGNvbnN0OwogCiAgICAgYm9vbCBwZXJjZW50YWdlKGludCYg
cGVyY2VudGFnZSkgY29uc3Q7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGlzb2xh
dGVkQ29weSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgaXNvbGF0
ZWRDb3B5KCkgY29uc3Q7CiAKICAgICAvLyBQcmV2ZW50IFN0cmluZ3MgZnJvbSBiZWluZyBpbXBs
aWNpdGx5IGNvbnZlcnRhYmxlIHRvIGJvb2wgYXMgaXQgd2lsbCBiZSBhbWJpZ3VvdXMgb24gYW55
IHBsYXRmb3JtIHRoYXQKICAgICAvLyBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBhbm90
aGVyIHBvaW50ZXIgdHlwZSAoZS5nLiwgTWFjIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRv
IE5TU3RyaW5nKikuCkBAIC0zODgsMTMgKzM4OCwxMyBAQCBwdWJsaWM6CiAKICAgICAvLyBTdHJp
bmc6OmZyb21VVEY4IHdpbGwgcmV0dXJuIGEgbnVsbCBzdHJpbmcgaWYKICAgICAvLyB0aGUgaW5w
dXQgZGF0YSBjb250YWlucyBpbnZhbGlkIFVURi04IHNlcXVlbmNlcy4KLSAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBMQ2hhciosIHNpemVfdCk7Ci0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgTENoYXIq
KTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25z
dCBMQ2hhciosIHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJp
bmcgZnJvbVVURjgoY29uc3QgTENoYXIqKTsKICAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNv
bnN0IGNoYXIqIHMsIHNpemVfdCBsZW5ndGgpIHsgcmV0dXJuIGZyb21VVEY4KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwgbGVuZ3RoKTsgfTsKICAgICBzdGF0aWMgU3RyaW5nIGZy
b21VVEY4KGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIGZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPihzKSk7IH07CiAKICAgICAvLyBUcmllcyB0byBjb252ZXJ0IHRoZSBwYXNz
ZWQgaW4gc3RyaW5nIHRvIFVURi04LCBidXQgd2lsbCBmYWxsIGJhY2sgdG8gTGF0aW4tMSBpZiB0
aGUgc3RyaW5nIGlzIG5vdCB2YWxpZCBVVEYtOC4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBMQ2hhciosIHNpemVf
dCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgZnJvbVVURjhXaXRo
TGF0aW4xRmFsbGJhY2soY29uc3QgTENoYXIqLCBzaXplX3QpOwogICAgIHN0YXRpYyBTdHJpbmcg
ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soY29uc3QgY2hhciogcywgc2l6ZV90IGxlbmd0aCkg
eyByZXR1cm4gZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2socmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KHMpLCBsZW5ndGgpOyB9OwogICAgIAogICAgIC8vIERldGVybWluZXMgdGhlIHdy
aXRpbmcgZGlyZWN0aW9uIHVzaW5nIHRoZSBVbmljb2RlIEJpZGkgQWxnb3JpdGhtIHJ1bGVzIFAy
IGFuZCBQMy4KQEAgLTQxNiw3ICs0MTYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5pc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpOyB9CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
c2hvdygpIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIHNob3coKSBjb25z
dDsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtNTI3LDcgKzUyNyw3IEBAIGlubGluZSBib29sIFN0
cmluZzo6Y29udGFpbnNPbmx5QVNDSUkoKSBjb25zdAogICAgIHJldHVybiBjaGFyYWN0ZXJzQXJl
QWxsQVNDSUkoY2hhcmFjdGVyczE2KCksIG1faW1wbC0+bGVuZ3RoKCkpOwogfQogCi1XVEZfRVhQ
T1JUX1BSSVZBVEUgaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJik7CitXVEZfRVhQT1JUX1NUUklOR19BUEkgaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAKIGlubGluZSBib29sIGNvZGVQb2ludENvbXBhcmVM
ZXNzVGhhbihjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikKIHsKQEAgLTU4Miw3ICs1
ODIsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxTdHJpbmc+IHsKIHRlbXBsYXRl
IDw+IHN0cnVjdCBWZWN0b3JUcmFpdHM8U3RyaW5nPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRz
IHsgfTsKIAogLy8gU2hhcmVkIGdsb2JhbCBlbXB0eSBzdHJpbmcuCi1XVEZfRVhQT1JUX1BSSVZB
VEUgY29uc3QgU3RyaW5nJiBlbXB0eVN0cmluZygpOworV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGNv
bnN0IFN0cmluZyYgZW1wdHlTdHJpbmcoKTsKIAogfQogCg==
</data>
<flag name="review"
          id="164649"
          type_id="1"
          status="-"
          setter="morrita"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155244</attachid>
            <date>2012-07-30 03:33:42 -0700</date>
            <delta_ts>2012-07-30 17:44:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92624-20120730115227.patch</filename>
            <type>text/plain</type>
            <size>34118</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRhMjUzNTczYjEwZTdkY2E4NWMxZTIx
MDIxMDUzMzJmNTBmMWE4NDEuLmQ1YTY1YjI5MjBmNWU4YTdkMjA0MjA2YjJiYmQwOGU5MjhlMmYy
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDctMzAgIFBhdHJpY2sgR2Fuc3RlcmVyICA8
cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHNwZWNpYWwgZXhwb3J0IG1hY3JvIGZv
ciBzdHJpbmcgcmVsYXRlZCBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkyNjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIHdpbmRvd3MgcG9ydCBjb21waWxlcyBzdHJpbmcgcmVsYXRl
ZCBjb2RlIGludG8gZXZlcnkgYmluYXJ5IGZvciBwZXJmb3JtYW5jZSByZWFzb25zIChzZWUgcjU5
MTg3KS4KKyAgICAgICAgQWRkIHRoZSBXVEZfRVhQT1JUX1NUUklOR19BUEkgZGVmaW5lIHRvIGFs
bG93IHRoaXMgYmVoYXZpb3VyIHdpdGggZXhwb3J0IG1hY3JvcyB0b28uCisKKyAgICAgICAgKiB3
dGYvRXhwb3J0TWFjcm9zLmg6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6Cisg
ICAgICAgIChBdG9taWNTdHJpbmcpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoK
KyAgICAgICAgKFN0cmluZ0ltcGwpOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvdGV4
dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFdURik6CisgICAgICAgIChTdHJpbmcpOgorCiAyMDEy
LTA3LTI2ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IG1vdmUgU3RyaW5nSW1wbCBzaXplIGNhbGN1bGF0aW9uIHRvIFN0cmlu
Z0ltcGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0V4cG9ydE1hY3Jvcy5oIGIvU291cmNl
L1dURi93dGYvRXhwb3J0TWFjcm9zLmgKaW5kZXggZTc4NDI0N2M0ODllY2EzN2Q3OGEwMTM4YmJi
M2ZiYWI4NDY5MmNiYS4uZWY5YmQyM2Y3OTBmZjM1YTBlYWEwMDVmZTZkNGQyODEwYzRkMDIzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRXhwb3J0TWFjcm9zLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvRXhwb3J0TWFjcm9zLmgKQEAgLTE0MSw2ICsxNDEsMTIgQEAKICNkZWZpbmUgV1RGX0VY
UE9SVF9QUklWQVRFX05PX1JUVEkgV1RGX0VYUE9SVF9QUklWQVRFCiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKFdJTikKKyNkZWZpbmUgV1RGX0VYUE9SVF9TVFJJTkdfQVBJCisjZWxzZQorI2RlZmlu
ZSBXVEZfRVhQT1JUX1NUUklOR19BUEkgV1RGX0VYUE9SVF9QUklWQVRFCisjZW5kaWYKKwogI2Rl
ZmluZSBXVEZfRVhQT1JUX0hJRERFTiBXVEZfSElEREVOCiAKICNkZWZpbmUgSElEREVOX0lOTElO
RSBXVEZfRVhQT1JUX0hJRERFTiBpbmxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCmlu
ZGV4IGU3NTgzMGVlNTM4ZDAyM2RmZDIzZTM1N2UxNjcyNjQxZDkzOGUwMDYuLmMyMTEwNjg5ZTMw
OGVhNmJkZjgxOWFmYmYwY2ZmM2M2ODhkNDRjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvQXRvbWljU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJp
bmcuaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgQXRvbWljU3RyaW5nKFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRW
YWx1ZSkgeyB9CiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KIAotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZChjb25zdCBVQ2hhciogcywg
dW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOworICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZChjb25zdCBVQ2hhciosIHVu
c2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKIAogICAgIG9wZXJhdG9yIGNv
bnN0IFN0cmluZyYoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogICAgIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH07CkBAIC0xMTksNyArMTE5LDcg
QEAgcHVibGljOgogICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hM
ZW5ndGhdLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAogICAgICAgICB7IHJldHVy
biBtX3N0cmluZy5lbmRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4LCBjYXNlU2Vuc2l0aXZlKTsg
fQogICAgIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBBdG9taWNTdHJpbmcgbG93ZXIoKSBjb25z
dDsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgQXRvbWljU3RyaW5nIGxvd2VyKCkgY29uc3Q7
CiAgICAgQXRvbWljU3RyaW5nIHVwcGVyKCkgY29uc3QgeyByZXR1cm4gQXRvbWljU3RyaW5nKGlt
cGwoKS0+dXBwZXIoKSk7IH0KICAgICAKICAgICBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZy50b0ludChvayk7IH0KQEAgLTE1NiwyMiArMTU2LDIyIEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3RyaW5nOwogICAgIAotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgTENoYXIq
KTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gYWRkKGNvbnN0IExDaGFyKik7CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgY2hhciogcykgeyByZXR1cm4gYWRkKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSk7IH07Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0
aCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgQUxXQVlTX0lOTElO
RSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgY2hhciogcywgdW5zaWdu
ZWQgbGVuZ3RoKSB7IHJldHVybiBhZGQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocyks
IGxlbmd0aCk7IH07Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgZXhp
c3RpbmdIYXNoKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgb2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVu
c2lnbmVkIGV4aXN0aW5nSGFzaCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciopOworICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCos
IHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBBTFdBWVNfSU5MSU5FIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsKiByKQogICAgIHsKICAg
ICAgICAgaWYgKCFyIHx8IHItPmlzQXRvbWljKCkpCiAgICAgICAgICAgICByZXR1cm4gcjsKICAg
ICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKHIpOwogICAgIH0KLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkRnJvbUxpdGVyYWxEYXRhKGNvbnN0
IExDaGFyICpjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShTdHJpbmdJbXBs
Kik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjhJ
bnRlcm5hbChjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOworICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRGcm9tTGl0ZXJhbERhdGEoY29u
c3QgTENoYXIgKmNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKFN0cmlu
Z0ltcGwqKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIEF0b21pY1N0cmluZyBm
cm9tVVRGOEludGVybmFsKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik7CiB9OwogCiBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3QgQXRvbWljU3RyaW5n
JiBiKSB7IHJldHVybiBhLmltcGwoKSA9PSBiLmltcGwoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuaAppbmRleCAyM2M3N2Y3NjdkOTFhZjExZjIyYjIxOGI5NmFkNTUyYmUxZGVkYWQ0Li44ZTIz
MjdmMmViYzU4NTZkNDk1NjhiOWY3MWQxODIyMDg3YTBlNjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuaApAQCAtMjQ5LDEyICsyNDksMTIgQEAgcHJpdmF0ZToKICNlbmRpZgogCiBwdWJsaWM6
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIH5TdHJpbmdJbXBsKCk7CisgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIH5TdHJpbmdJbXBsKCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVu
Z3RoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gY3JlYXRlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5n
dGgpOwogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3Jl
YXRlKGNvbnN0IGNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gY3JlYXRlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwgbGVuZ3RoKTsgfQotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgTENoYXIq
KTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gY3JlYXRlKGNvbnN0IExDaGFyKik7CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgY2hhciogcykgeyByZXR1cm4gY3JlYXRlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSk7IH0KIAogICAgIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlOChQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IHJlcCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCkBAIC0yODQsNyArMjg0
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0cmluZ0ltcGwocmVw
LT5tX2RhdGExNiArIG9mZnNldCwgbGVuZ3RoLCBvd25lclJlcCkpOwogICAgIH0KIAotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9t
TGl0ZXJhbChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRl
RnJvbUxpdGVyYWwoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAg
ICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PgogICAgIEFMV0FZU19JTkxJTkUg
c3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxpdGVyYWwoY29uc3QgY2hh
ciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pCiAgICAgewpAQCAtMjk0LDggKzI5NCw4
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyb21MaXRlcmFsKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgY2hhcmFjdGVyc0NvdW50IC0gMSk7CiAg
ICAgfQogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpOwot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVh
dGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKTsKKyAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSk7CisgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlh
bGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpOwogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdGF0aWMgQUxXQVlTX0lOTElORSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBUKiYgb3V0cHV0KQogICAgIHsKICAg
ICAgICAgaWYgKCFsZW5ndGgpIHsKQEAgLTM0OCw4ICszNDgsOCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBlbXB0eSgpOwogICAgIH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXI8VUNoYXI+Jik7Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkb3B0KFN0
cmluZ0J1ZmZlcjxMQ2hhcj4mKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRvcHQoU3RyaW5nQnVmZmVyPFVDaGFyPiYpOworICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZG9wdChT
dHJpbmdCdWZmZXI8TENoYXI+Jik7CiAKICNpZiBQTEFURk9STShRVCkgJiYgSEFWRShRVDUpCiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRvcHQoUVN0cmluZ0RhdGEqKTsKQEAg
LTM4OCw3ICszODgsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBz
aXplSW5CeXRlcygpIGNvbnN0OwogCiAgICAgYm9vbCBoYXMxNkJpdFNoYWRvdygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ0hhczE2Qml0U2hhZG93OyB9Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgdXBjb252ZXJ0Q2hhcmFjdGVycyh1bnNpZ25lZCwgdW5z
aWduZWQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIHVwY29udmVydENo
YXJhY3RlcnModW5zaWduZWQsIHVuc2lnbmVkKSBjb25zdDsKICAgICBib29sIGlzSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ0lzSWRlbnRpZmll
cjsgfQogICAgIHZvaWQgc2V0SXNJZGVudGlmaWVyKGJvb2wgaXNJZGVudGlmaWVyKQogICAgIHsK
QEAgLTUxNyw3ICs1MTcsNyBAQCBwdWJsaWM6CiAgICAgLy8gaXRzIG93biBjb3B5IG9mIHRoZSBz
dHJpbmcuCiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBpc29sYXRlZENvcHkoKSBjb25zdDsK
IAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHN1YnN0cmlu
Zyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKTsKKyAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzdWJzdHJpbmcodW5zaWduZWQgcG9z
LCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCk7CiAKICAgICBVQ2hhciBvcGVyYXRvcltdKHVuc2ln
bmVkIGkpIGNvbnN0CiAgICAgewpAQCAtNTI2LDkgKzUyNiw5IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHJldHVybiBtX2RhdGE4W2ldOwogICAgICAgICByZXR1cm4gbV9kYXRhMTZbaV07CiAgICAg
fQotICAgIFdURl9FWFBPUlRfUFJJVkFURSBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5z
aWduZWQpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0
aW5nQXQodW5zaWduZWQpOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgY29udGFpbnNP
bmx5V2hpdGVzcGFjZSgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGNvbnRhaW5z
T25seVdoaXRlc3BhY2UoKTsKIAogICAgIGludCB0b0ludFN0cmljdChib29sKiBvayA9IDAsIGlu
dCBiYXNlID0gMTApOwogICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChib29sKiBvayA9IDAsIGlu
dCBiYXNlID0gMTApOwpAQCAtNTM2LDcgKzUzNiw3IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCB0
b1VJbnQ2NFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogICAgIGludHB0cl90
IHRvSW50UHRyU3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiAKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgaW50IHRvSW50KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxp
bmcgZ2FyYmFnZQorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBpbnQgdG9JbnQoYm9vbCogb2sg
PSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiAgICAgdW5zaWduZWQgdG9VSW50KGJv
b2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogICAgIGludDY0X3QgdG9J
bnQ2NChib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKICAgICB1aW50
NjRfdCB0b1VJbnQ2NChib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UK
QEAgLTU0OCwxNiArNTQ4LDE2IEBAIHB1YmxpYzoKICAgICBkb3VibGUgdG9Eb3VibGUoYm9vbCog
b2sgPSAwKTsKICAgICBmbG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0gMCk7CiAKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBsb3dlcigpOwotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHVwcGVyKCk7CisgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbG93ZXIoKTsKKyAgICBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB1cHBlcigpOwogCi0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gZmlsbChVQ2hhcik7CisgICAg
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gZmlsbChVQ2hhcik7
CiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgZmlsbChjaGFyKSBvciBjYW4gd2UganVzdCBkbyB0
aGUgcmlnaHQgdGhpbmcgaWYgVUNoYXIgaXMgQVNDSUk/CiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBmb2xkQ2FzZSgpOwogCiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzdHJpcFdoaXRl
U3BhY2UoKTsKICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHN0cmlwV2hpdGVTcGFjZShJc1do
aXRlU3BhY2VGdW5jdGlvblB0cik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CiAgICAgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiBzaW1wbGlmeVdoaXRlU3BhY2UoSXNXaGl0ZVNwYWNlRnVuY3Rp
b25QdHIpOwogCiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZW1vdmVDaGFyYWN0ZXJzKENo
YXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpOwpAQCAtNTY3LDM3ICs1NjcsMzcgQEAgcHVibGljOgog
ICAgIHNpemVfdCBmaW5kKExDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKTsKICAg
ICBzaXplX3QgZmluZChjaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKTsKICAgICBz
aXplX3QgZmluZChVQ2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCk7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIsIHVu
c2lnbmVkIGluZGV4ID0gMCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCBmaW5k
KENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIsIHVuc2lnbmVkIGluZGV4ID0gMCk7CiAgICAgc2l6
ZV90IGZpbmQoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBpbmRleCA9IDApOwogICAgIEFMV0FZU19J
TkxJTkUgc2l6ZV90IGZpbmQoY29uc3QgY2hhciogcywgdW5zaWduZWQgaW5kZXggPSAwKSB7IHJl
dHVybiBmaW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwgaW5kZXgpOyB9Owot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChTdHJpbmdJbXBsKik7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCk7
CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCBmaW5kKFN0cmluZ0ltcGwqKTsKKyAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IGZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVk
IGluZGV4KTsKICAgICBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShjb25zdCBMQ2hhciosIHVuc2ln
bmVkIGluZGV4ID0gMCk7CiAgICAgQUxXQVlTX0lOTElORSBzaXplX3QgZmluZElnbm9yaW5nQ2Fz
ZShjb25zdCBjaGFyKiBzLCB1bnNpZ25lZCBpbmRleCA9IDApIHsgcmV0dXJuIGZpbmRJZ25vcmlu
Z0Nhc2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBpbmRleCk7IH07Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCB1
bnNpZ25lZCBpbmRleCA9IDApOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgZmlu
ZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKIAotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4
ID0gVUlOVF9NQVgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgcmV2ZXJzZUZpbmQo
U3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOwotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzaXplX3QgcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIHVuc2ln
bmVkIGluZGV4ID0gVUlOVF9NQVgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3Qg
cmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOworICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgcmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVk
IGluZGV4ID0gVUlOVF9NQVgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgcmV2
ZXJzZUZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9N
QVgpOwogCiAgICAgYm9vbCBzdGFydHNXaXRoKFN0cmluZ0ltcGwqIHN0ciwgYm9vbCBjYXNlU2Vu
c2l0aXZlID0gdHJ1ZSkgeyByZXR1cm4gKGNhc2VTZW5zaXRpdmUgPyByZXZlcnNlRmluZChzdHIs
IDApIDogcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2Uoc3RyLCAwKSkgPT0gMDsgfQotICAgIFdURl9F
WFBPUlRfUFJJVkFURSBib29sIHN0YXJ0c1dpdGgoVUNoYXIpIGNvbnN0OwotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciosIHVuc2lnbmVkIG1hdGNoTGVu
Z3RoLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBib29sIHN0YXJ0c1dpdGgoVUNoYXIpIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciosIHVuc2lnbmVkIG1hdGNoTGVuZ3RoLCBib29s
IGNhc2VTZW5zaXRpdmUpIGNvbnN0OwogICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3Ro
PgogICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRjaExlbmd0aF0s
IGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0c1dpdGgocHJl
Zml4LCBtYXRjaExlbmd0aCAtIDEsIGNhc2VTZW5zaXRpdmUpOyB9OwogCi0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCosIGJvb2wgY2FzZVNlbnNpdGl2ZSA9
IHRydWUpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoKFVDaGFyKSBjb25z
dDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChjb25zdCBjaGFyKiwgdW5z
aWduZWQgbWF0Y2hMZW5ndGgsIGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3Q7CisgICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCosIGJvb2wgY2FzZVNlbnNp
dGl2ZSA9IHRydWUpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVuZHNXaXRoKFVD
aGFyKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBlbmRzV2l0aChjb25z
dCBjaGFyKiwgdW5zaWduZWQgbWF0Y2hMZW5ndGgsIGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3Q7
CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+CiAgICAgYm9vbCBlbmRzV2l0aChj
b25zdCBjaGFyICgmcHJlZml4KVttYXRjaExlbmd0aF0sIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRy
dWUpIGNvbnN0IHsgcmV0dXJuIGVuZHNXaXRoKHByZWZpeCwgbWF0Y2hMZW5ndGggLSAxLCBjYXNl
U2Vuc2l0aXZlKTsgfQogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gcmVwbGFjZShVQ2hhciwgVUNoYXIpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIFN0cmluZ0ltcGwqKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwq
LCBTdHJpbmdJbXBsKik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuLCBTdHJpbmdJbXBsKik7
CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFj
ZShVQ2hhciwgVUNoYXIpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIFN0cmluZ0ltcGwqKTsKKyAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJp
bmdJbXBsKik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuLCBTdHJpbmdJbXBsKik7CiAK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdy
aXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSAwKTsKKyAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRp
bmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSAwKTsKIAogI2lmIFVT
RShDRikKICAgICBDRlN0cmluZ1JlZiBjcmVhdGVDRlN0cmluZygpOwpAQCAtNjE0LDcgKzYxNCw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N0YXRpYygpIGNvbnN0IHsgcmV0dXJuIG1fcmVmQ291
bnQgJiBzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nOyB9CiAgICAgdGVtcGxhdGUgPGNsYXNz
IFVDaGFyUHJlZGljYXRlPiBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHN0cmlwTWF0Y2hlZENoYXJh
Y3RlcnMoVUNoYXJQcmVkaWNhdGUpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZSwg
Y2xhc3MgVUNoYXJQcmVkaWNhdGU+IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc2ltcGxpZnlNYXRj
aGVkQ2hhcmFjdGVyc1RvU3BhY2UoVUNoYXJQcmVkaWNhdGUpOwotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBORVZFUl9JTkxJTkUgY29uc3QgVUNoYXIqIGdldERhdGExNlNsb3dDYXNlKCkgY29uc3Q7
CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIE5FVkVSX0lOTElORSBjb25zdCBVQ2hhciogZ2V0
RGF0YTE2U2xvd0Nhc2UoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5M
SU5FIHVuc2lnbmVkIGhhc2hTbG93Q2FzZSgpIGNvbnN0OwogCiAgICAgLy8gVGhlIGJvdHRvbSBi
aXQgaW4gdGhlIHJlZiBjb3VudCBpbmRpY2F0ZXMgYSBzdGF0aWMgKGltbW9ydGFsKSBzdHJpbmcu
CkBAIC02NTcsMTQgKzY1NywxNCBAQCBBTFdBWVNfSU5MSU5FIGNvbnN0IExDaGFyKiBTdHJpbmdJ
bXBsOjpnZXRDaGFyYWN0ZXJzPExDaGFyPigpIGNvbnN0IHsgcmV0dXJuIGNoYQogdGVtcGxhdGUg
PD4KIEFMV0FZU19JTkxJTkUgY29uc3QgVUNoYXIqIFN0cmluZ0ltcGw6OmdldENoYXJhY3RlcnM8
VUNoYXI+KCkgY29uc3QgeyByZXR1cm4gY2hhcmFjdGVycygpOyB9CiAKLVdURl9FWFBPUlRfUFJJ
VkFURSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJpbmdJbXBsKik7Ci1X
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgTENo
YXIqKTsKK1dURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwq
LCBjb25zdCBTdHJpbmdJbXBsKik7CitXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBlcXVhbChj
b25zdCBTdHJpbmdJbXBsKiwgY29uc3QgTENoYXIqKTsKIGlubGluZSBib29sIGVxdWFsKGNvbnN0
IFN0cmluZ0ltcGwqIGEsIGNvbnN0IGNoYXIqIGIpIHsgcmV0dXJuIGVxdWFsKGEsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihiKSk7IH0KLVdURl9FWFBPUlRfUFJJVkFURSBib29sIGVx
dWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBMQ2hhciosIHVuc2lnbmVkKTsKK1dURl9FWFBP
UlRfU1RSSU5HX0FQSSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBMQ2hhcios
IHVuc2lnbmVkKTsKIGlubGluZSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0
IGNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZXF1YWwoYSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KGIpLCBsZW5ndGgpOyB9CiBpbmxpbmUgYm9vbCBlcXVhbChjb25z
dCBMQ2hhciogYSwgU3RyaW5nSW1wbCogYikgeyByZXR1cm4gZXF1YWwoYiwgYSk7IH0KIGlubGlu
ZSBib29sIGVxdWFsKGNvbnN0IGNoYXIqIGEsIFN0cmluZ0ltcGwqIGIpIHsgcmV0dXJuIGVxdWFs
KGIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihhKSk7IH0KLVdURl9FWFBPUlRfUFJJ
VkFURSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBVQ2hhciosIHVuc2lnbmVk
KTsKK1dURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBj
b25zdCBVQ2hhciosIHVuc2lnbmVkKTsKIAogLy8gRG8gY29tcGFyaXNvbnMgOCBvciA0IGJ5dGVz
LWF0LWEtdGltZSBvbiBhcmNoaXRlY3R1cmVzIHdoZXJlIGl0J3Mgc2FmZS4KICNpZiBDUFUoWDg2
XzY0KQpAQCAtODIyLDE2ICs4MjIsMTYgQEAgQUxXQVlTX0lOTElORSBib29sIGVxdWFsKGNvbnN0
IFVDaGFyKiBhLCBjb25zdCBMQ2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKQogICAgIHJldHVybiB0
cnVlOwogfQogCi1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShTdHJp
bmdJbXBsKiwgU3RyaW5nSW1wbCopOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJZ25v
cmluZ0Nhc2UoU3RyaW5nSW1wbCosIGNvbnN0IExDaGFyKik7CitXVEZfRVhQT1JUX1NUUklOR19B
UEkgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOworV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIGNv
bnN0IExDaGFyKik7CiBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBMQ2hhciog
YSwgU3RyaW5nSW1wbCogYikgeyByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UoYiwgYSk7IH0KLVdU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IExDaGFyKiwgY29u
c3QgTENoYXIqLCB1bnNpZ25lZCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9y
aW5nQ2FzZShjb25zdCBVQ2hhciosIGNvbnN0IExDaGFyKiwgdW5zaWduZWQpOworV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgTENoYXIqLCBjb25zdCBM
Q2hhciosIHVuc2lnbmVkKTsKK1dURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVxdWFsSWdub3Jp
bmdDYXNlKGNvbnN0IFVDaGFyKiwgY29uc3QgTENoYXIqLCB1bnNpZ25lZCk7CiBpbmxpbmUgYm9v
bCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBVQ2hhciogYSwgY29uc3QgY2hhciogYiwgdW5zaWdu
ZWQgbGVuZ3RoKSB7IHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShhLCByZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oYiksIGxlbmd0aCk7IH0KIGlubGluZSBib29sIGVxdWFsSWdub3JpbmdD
YXNlKGNvbnN0IExDaGFyKiBhLCBjb25zdCBVQ2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKSB7IHJl
dHVybiBlcXVhbElnbm9yaW5nQ2FzZShiLCBhLCBsZW5ndGgpOyB9CiBpbmxpbmUgYm9vbCBlcXVh
bElnbm9yaW5nQ2FzZShjb25zdCBjaGFyKiBhLCBjb25zdCBVQ2hhciogYiwgdW5zaWduZWQgbGVu
Z3RoKSB7IHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShiLCByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oYSksIGxlbmd0aCk7IH0KIAotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJ
Z25vcmluZ051bGxpdHkoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKK1dURl9FWFBPUlRfU1RS
SU5HX0FQSSBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBs
Kik7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBpbmxpbmUgc2l6ZV90IGZp
bmQoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDaGFy
YWN0ZXJUeXBlIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCA9IDApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuaAppbmRleCA5ZjQ5MmE3YTFkNjIzNmI4NzhlOGZiYjYyMGQzNGQxNGE1Y2EwNDE1
Li4zZTA5YTIwOGQ4NDU5ZWRlYzdmNDM0NmIwMzBlZWUzMzM1MjZjYzcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmgKQEAgLTYzLDkgKzYzLDkgQEAgc3RydWN0IFN0cmluZ0hhc2g7CiAvLyBEZWNs
YXJhdGlvbnMgb2Ygc3RyaW5nIG9wZXJhdGlvbnMKIAogaW50IGNoYXJhY3RlcnNUb0ludFN0cmlj
dChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKLVdU
Rl9FWFBPUlRfUFJJVkFURSBpbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IFVDaGFyKiwg
c2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOworV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIGludCBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wq
IG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0
KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwotV1RG
X0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgVUNo
YXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CitXVEZfRVhQT1JUX1NU
UklOR19BUEkgdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hhciosIHNp
emVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKIGludDY0X3QgY2hhcmFjdGVyc1Rv
SW50NjRTdHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2Ug
PSAxMCk7CiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6
ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogdWludDY0X3QgY2hhcmFjdGVyc1Rv
VUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNl
ID0gMTApOwpAQCAtNzQsNyArNzQsNyBAQCBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJp
Y3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPQogaW50cHRy
X3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBv
ayA9IDAsIGludCBiYXNlID0gMTApOwogCiBpbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0IExDaGFy
Kiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLVdU
Rl9FWFBPUlRfUFJJVkFURSBpbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0IFVDaGFyKiwgc2l6ZV90
LCBib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKK1dURl9FWFBPUlRf
U1RSSU5HX0FQSSBpbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29s
KiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKIHVuc2lnbmVkIGNoYXJhY3Rl
cnNUb1VJbnQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMg
dHJhaWxpbmcgZ2FyYmFnZQogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludChjb25zdCBVQ2hhcios
IHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiBpbnQ2
NF90IGNoYXJhY3RlcnNUb0ludDY0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAp
OyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKQEAgLTg3LDEyICs4NywxMiBAQCBpbnRwdHJf
dCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7
IC8vIGlnbm9yZXMgdHJhaQogLy8gRklYTUU6IExpa2UgdGhlIHN0cmljdCBmdW5jdGlvbnMgYWJv
dmUsIHRoZXNlIGdpdmUgZmFsc2UgZm9yICJvayIgd2hlbiB0aGVyZSBpcyB0cmFpbGluZyBnYXJi
YWdlLgogLy8gTGlrZSB0aGUgbm9uLXN0cmljdCBmdW5jdGlvbnMgYWJvdmUsIHRoZXNlIHJldHVy
biB0aGUgdmFsdWUgd2hlbiB0aGVyZSBpcyB0cmFpbGluZyBnYXJiYWdlLgogLy8gSXQgd291bGQg
YmUgYmV0dGVyIGlmIHRoZXNlIHdlcmUgbW9yZSBjb25zaXN0ZW50IHdpdGggdGhlIGFib3ZlIGZ1
bmN0aW9ucyBpbnN0ZWFkLgotV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBjaGFyYWN0ZXJzVG9E
b3VibGUoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7Ci1XVEZfRVhQT1JUX1BS
SVZBVEUgZG91YmxlIGNoYXJhY3RlcnNUb0RvdWJsZShjb25zdCBVQ2hhciosIHNpemVfdCwgYm9v
bCogb2sgPSAwKTsKK1dURl9FWFBPUlRfU1RSSU5HX0FQSSBkb3VibGUgY2hhcmFjdGVyc1RvRG91
YmxlKGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOworV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIGRvdWJsZSBjaGFyYWN0ZXJzVG9Eb3VibGUoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJv
b2wqIG9rID0gMCk7CiBmbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChjb25zdCBMQ2hhciosIHNpemVf
dCwgYm9vbCogb2sgPSAwKTsKLVdURl9FWFBPUlRfUFJJVkFURSBmbG9hdCBjaGFyYWN0ZXJzVG9G
bG9hdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBmbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChjb25zdCBMQ2hhciosIHNpemVfdCwgc2l6ZV90
JiBwYXJzZWRMZW5ndGgpOwotV1RGX0VYUE9SVF9QUklWQVRFIGZsb2F0IGNoYXJhY3RlcnNUb0Zs
b2F0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBzaXplX3QmIHBhcnNlZExlbmd0aCk7CitXVEZfRVhQ
T1JUX1NUUklOR19BUEkgZmxvYXQgY2hhcmFjdGVyc1RvRmxvYXQoY29uc3QgVUNoYXIqLCBzaXpl
X3QsIGJvb2wqIG9rID0gMCk7CitXVEZfRVhQT1JUX1NUUklOR19BUEkgZmxvYXQgY2hhcmFjdGVy
c1RvRmxvYXQoY29uc3QgTENoYXIqLCBzaXplX3QsIHNpemVfdCYgcGFyc2VkTGVuZ3RoKTsKK1dU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBmbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChjb25zdCBVQ2hhcios
IHNpemVfdCwgc2l6ZV90JiBwYXJzZWRMZW5ndGgpOwogCiBlbnVtIEZsb2F0Q29udmVyc2lvbkZs
YWdzIHsKICAgICBTaG91bGRSb3VuZFNpZ25pZmljYW50RmlndXJlcyA9IDEgPDwgMCwKQEAgLTEw
OCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nKCkgeyB9CiAKICAgICAvLyBDb25zdHJ1
Y3QgYSBzdHJpbmcgd2l0aCBVVEYtMTYgZGF0YS4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgYnkgY29weWluZyB0aGUgY29u
dGVudHMgb2YgYSB2ZWN0b3IuICBUbyBhdm9pZAogICAgIC8vIGNvcHlpbmcsIGNvbnNpZGVyIHVz
aW5nIFN0cmluZzo6YWRvcHQgaW5zdGVhZC4KQEAgLTExNiwxNSArMTE2LDE1IEBAIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBTdHJpbmcoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4m
KTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIFVURi0xNiBkYXRhLCBmcm9tIGEg
bnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNv
bnN0IFVDaGFyKik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyhjb25zdCBVQ2hh
ciopOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggbGF0aW4xIGRhdGEuCi0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwg
ZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycyk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkg
U3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOwogCiAgICAgLy8gQ29uc3RydWN0IGEg
c3RyaW5nIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIFN0cmluZ0ltcGwuCiAgICAgU3RyaW5nKFN0
cmluZ0ltcGwqIGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQpAQCAtMTkwLDkgKzE5MCw5IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLT5pczhCaXQo
KTsgfQogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgYXNjaWkoKSBjb25zdDsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyBsYXRpbjEoKSBjb25zdDsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgQ1N0cmluZyB1dGY4KGJvb2wgc3RyaWN0ID0gZmFsc2UpIGNvbnN0OworICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBDU3RyaW5nIGFzY2lpKCkgY29uc3Q7CisgICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIENTdHJpbmcgdXRmOChib29sIHN0cmljdCA9IGZhbHNlKSBjb25zdDsKIAogICAg
IFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgewpAQCAtMjAyLDE0
ICsyMDIsMTQgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHNo
b3J0KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWdu
ZWQgc2hvcnQpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcihp
bnQpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25l
ZCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcpOwot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25n
KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyBsb25n
KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQg
bG9uZyBsb25nKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIo
ZG91YmxlLCB1bnNpZ25lZCA9IFNob3VsZFJvdW5kU2lnbmlmaWNhbnRGaWd1cmVzIHwgU2hvdWxk
VHJ1bmNhdGVUcmFpbGluZ1plcm9zLCB1bnNpZ25lZCBwcmVjaXNpb24gPSA2KTsKKyAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgc2hvcnQpOwor
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlcihpbnQpOworICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCk7Cisg
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcpOworICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25n
KTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyBs
b25nKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIodW5z
aWduZWQgbG9uZyBsb25nKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmlu
ZyBudW1iZXIoZG91YmxlLCB1bnNpZ25lZCA9IFNob3VsZFJvdW5kU2lnbmlmaWNhbnRGaWd1cmVz
IHwgU2hvdWxkVHJ1bmNhdGVUcmFpbGluZ1plcm9zLCB1bnNpZ25lZCBwcmVjaXNpb24gPSA2KTsK
IAogICAgIC8vIEZpbmQgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0cmluZywgYWxzbyB3aXRoIG1h
dGNoIGZ1bmN0aW9uICYgbGF0aW4xIGZvcm1zLgogICAgIHNpemVfdCBmaW5kKFVDaGFyIGMsIHVu
c2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKQEAgLTI0Nyw5ICsyNDcsOSBAQCBwdWJsaWM6CiAgICAg
c2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCwgYm9v
bCBjYXNlU2Vuc2l0aXZlKSBjb25zdAogICAgICAgICB7IHJldHVybiBjYXNlU2Vuc2l0aXZlID8g
cmV2ZXJzZUZpbmQoc3RyLCBzdGFydCkgOiByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShzdHIsIHN0
YXJ0KTsgfQogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBjb25zdCBV
Q2hhciogY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsKICAgICAKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKSBjb25zdDsg
Ly8gRGl0dG8uCisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFVDaGFyMzIgY2hhcmFjdGVyU3Rh
cnRpbmdBdCh1bnNpZ25lZCkgY29uc3Q7IC8vIERpdHRvLgogICAgIAogICAgIGJvb2wgY29udGFp
bnMoVUNoYXIgYykgY29uc3QgeyByZXR1cm4gZmluZChjKSAhPSBub3RGb3VuZDsgfQogICAgIGJv
b2wgY29udGFpbnMoY29uc3QgTENoYXIqIHN0ciwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkg
Y29uc3QgeyByZXR1cm4gZmluZChzdHIsIDAsIGNhc2VTZW5zaXRpdmUpICE9IG5vdEZvdW5kOyB9
CkBAIC0yNzEsMTIgKzI3MSwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBlbmRzV2l0aChjb25zdCBj
aGFyICgmcHJlZml4KVttYXRjaExlbmd0aF0sIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNv
bnN0CiAgICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZW5kc1dpdGg8bWF0Y2hMZW5n
dGg+KHByZWZpeCwgY2FzZVNlbnNpdGl2ZSkgOiAhbWF0Y2hMZW5ndGg7IH0KIAotICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKLSAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBhcHBlbmQoTENoYXIpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2
b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9p
ZCBhcHBlbmQoTENoYXIpOwogICAgIHZvaWQgYXBwZW5kKGNoYXIgYykgeyBhcHBlbmQoc3RhdGlj
X2Nhc3Q8TENoYXI+KGMpKTsgfTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQo
VUNoYXIpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZChjb25zdCBVQ2hhcios
IHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5zZXJ0KGNv
bnN0IFN0cmluZyYsIHVuc2lnbmVkIHBvcyk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZv
aWQgYXBwZW5kKFVDaGFyKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBhcHBlbmQo
Y29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSB2b2lkIGluc2VydChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBwb3MpOwogICAgIHZvaWQgaW5z
ZXJ0KGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBwb3MpOwogCiAgICAg
U3RyaW5nJiByZXBsYWNlKFVDaGFyIGEsIFVDaGFyIGIpIHsgaWYgKG1faW1wbCkgbV9pbXBsID0g
bV9pbXBsLT5yZXBsYWNlKGEsIGIpOyByZXR1cm4gKnRoaXM7IH0KQEAgLTI4OCwzMyArMjg4LDMz
IEBAIHB1YmxpYzoKICAgICB2b2lkIG1ha2VVcHBlcigpIHsgaWYgKG1faW1wbCkgbV9pbXBsID0g
bV9pbXBsLT51cHBlcigpOyB9CiAgICAgdm9pZCBmaWxsKFVDaGFyIGMpIHsgaWYgKG1faW1wbCkg
bV9pbXBsID0gbV9pbXBsLT5maWxsKGMpOyB9CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCB0cnVuY2F0ZSh1bnNpZ25lZCBsZW4pOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJl
bW92ZSh1bnNpZ25lZCBwb3MsIGludCBsZW4gPSAxKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgdm9pZCB0cnVuY2F0ZSh1bnNpZ25lZCBsZW4pOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSB2b2lkIHJlbW92ZSh1bnNpZ25lZCBwb3MsIGludCBsZW4gPSAxKTsKIAotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcgc3Vic3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0g
VUlOVF9NQVgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgc3Vic3Ry
aW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0OwogICAgIFN0
cmluZyBzdWJzdHJpbmdTaGFyaW5nSW1wbCh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJ
TlRfTUFYKSBjb25zdDsKICAgICBTdHJpbmcgbGVmdCh1bnNpZ25lZCBsZW4pIGNvbnN0IHsgcmV0
dXJuIHN1YnN0cmluZygwLCBsZW4pOyB9CiAgICAgU3RyaW5nIHJpZ2h0KHVuc2lnbmVkIGxlbikg
Y29uc3QgeyByZXR1cm4gc3Vic3RyaW5nKGxlbmd0aCgpIC0gbGVuLCBsZW4pOyB9CiAKICAgICAv
LyBSZXR1cm5zIGEgbG93ZXJjYXNlL3VwcGVyY2FzZSB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGxvd2VyKCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyB1cHBlcigpIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBTdHJpbmcgbG93ZXIoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5n
IHVwcGVyKCkgY29uc3Q7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHN0cmlwV2hp
dGVTcGFjZSgpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3RyaXBXaGl0
ZVNwYWNlKElzV2hpdGVTcGFjZUZ1bmN0aW9uUHRyKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nIHNpbXBsaWZ5V2hpdGVTcGFjZSgpIGNvbnN0OwotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmcgc2ltcGxpZnlXaGl0ZVNwYWNlKElzV2hpdGVTcGFjZUZ1bmN0aW9uUHRy
KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nIHN0cmlwV2hpdGVTcGFj
ZSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgc3RyaXBXaGl0ZVNw
YWNlKElzV2hpdGVTcGFjZUZ1bmN0aW9uUHRyKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgU3RyaW5nIHNpbXBsaWZ5V2hpdGVTcGFjZSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBTdHJpbmcgc2ltcGxpZnlXaGl0ZVNwYWNlKElzV2hpdGVTcGFjZUZ1bmN0aW9u
UHRyKSBjb25zdDsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcmVtb3ZlQ2hhcmFj
dGVycyhDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgU3RyaW5nIHJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0
cikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Ym9vbCBpc1NwZWNpYWxDaGFyYWN0ZXIoVUNoYXIpPiBi
b29sIGlzQWxsU3BlY2lhbENoYXJhY3RlcnMoKSBjb25zdDsKIAogICAgIC8vIFJldHVybiB0aGUg
c3RyaW5nIHdpdGggY2FzZSBmb2xkZWQgZm9yIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbi4K
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGZvbGRDYXNlKCkgY29uc3Q7CisgICAgV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBmb2xkQ2FzZSgpIGNvbnN0OwogCiAjaWYgIVBMQVRG
T1JNKFFUKQotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGZvcm1hdChjb25z
dCBjaGFyICosIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMSwgMik7CisgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgZm9ybWF0KGNvbnN0IGNoYXIgKiwgLi4uKSBXVEZf
QVRUUklCVVRFX1BSSU5URigxLCAyKTsKICNlbHNlCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBTdHJpbmcgZm9ybWF0KGNvbnN0IGNoYXIgKiwgLi4uKTsKKyAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgc3RhdGljIFN0cmluZyBmb3JtYXQoY29uc3QgY2hhciAqLCAuLi4pOwogI2VuZGlm
CiAKICAgICAvLyBSZXR1cm5zIGFuIHVuaW5pdGlhbGl6ZWQgc3RyaW5nLiBUaGUgY2hhcmFjdGVy
cyBuZWVkcyB0byBiZSB3cml0dGVuCkBAIC0zMjMsMzIgKzMyMywzMiBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFN0cmluZyBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIq
JiBkYXRhKSB7IHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwg
ZGF0YSk7IH0KICAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bGVuZ3RoLCBMQ2hhciomIGRhdGEpIHsgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQobGVuZ3RoLCBkYXRhKTsgfQogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3Bs
aXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJh
dG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25z
dDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIFZl
Y3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0
cmluZz4mIHJlc3VsdCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgc3Bs
aXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0
OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYgc2Vw
YXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBj
b25zdDsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0
b3IsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywg
VmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
aW50IHRvSW50U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIHRvVUludFN0cmljdChib29sKiBvayA9IDAsIGlu
dCBiYXNlID0gMTApIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnQ2NF90IHRvSW50
NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgaW50IHRvSW50U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAx
MCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHVuc2lnbmVkIHRvVUludFN0cmlj
dChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBpbnQ2NF90IHRvSW50NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEw
KSBjb25zdDsKICAgICB1aW50NjRfdCB0b1VJbnQ2NFN0cmljdChib29sKiBvayA9IDAsIGludCBi
YXNlID0gMTApIGNvbnN0OwogICAgIGludHB0cl90IHRvSW50UHRyU3RyaWN0KGJvb2wqIG9rID0g
MCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRv
SW50KGJvb2wqIG9rID0gMCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVk
IHRvVUludChib29sKiBvayA9IDApIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBp
bnQgdG9JbnQoYm9vbCogb2sgPSAwKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkg
dW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0gMCkgY29uc3Q7CiAgICAgaW50NjRfdCB0b0ludDY0
KGJvb2wqIG9rID0gMCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IHRv
VUludDY0KGJvb2wqIG9rID0gMCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGludHB0
cl90IHRvSW50UHRyKGJvb2wqIG9rID0gMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHVpbnQ2NF90IHRvVUludDY0KGJvb2wqIG9rID0gMCkgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIGludHB0cl90IHRvSW50UHRyKGJvb2wqIG9rID0gMCkgY29uc3Q7CiAKICAg
ICAvLyBGSVhNRTogTGlrZSB0aGUgc3RyaWN0IGZ1bmN0aW9ucyBhYm92ZSwgdGhlc2UgZ2l2ZSBm
YWxzZSBmb3IgIm9rIiB3aGVuIHRoZXJlIGlzIHRyYWlsaW5nIGdhcmJhZ2UuCiAgICAgLy8gTGlr
ZSB0aGUgbm9uLXN0cmljdCBmdW5jdGlvbnMgYWJvdmUsIHRoZXNlIHJldHVybiB0aGUgdmFsdWUg
d2hlbiB0aGVyZSBpcyB0cmFpbGluZyBnYXJiYWdlLgogICAgIC8vIEl0IHdvdWxkIGJlIGJldHRl
ciBpZiB0aGVzZSB3ZXJlIG1vcmUgY29uc2lzdGVudCB3aXRoIHRoZSBhYm92ZSBmdW5jdGlvbnMg
aW5zdGVhZC4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvRG91YmxlKGJvb2wqIG9r
ID0gMCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGZsb2F0IHRvRmxvYXQoYm9vbCog
b2sgPSAwKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgZG91YmxlIHRvRG91Ymxl
KGJvb2wqIG9rID0gMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGZsb2F0IHRv
RmxvYXQoYm9vbCogb2sgPSAwKSBjb25zdDsKIAogICAgIGJvb2wgcGVyY2VudGFnZShpbnQmIHBl
cmNlbnRhZ2UpIGNvbnN0OwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBpc29sYXRl
ZENvcHkoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nIGlzb2xhdGVk
Q29weSgpIGNvbnN0OwogCiAgICAgLy8gUHJldmVudCBTdHJpbmdzIGZyb20gYmVpbmcgaW1wbGlj
aXRseSBjb252ZXJ0YWJsZSB0byBib29sIGFzIGl0IHdpbGwgYmUgYW1iaWd1b3VzIG9uIGFueSBw
bGF0Zm9ybSB0aGF0CiAgICAgLy8gYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gYW5vdGhl
ciBwb2ludGVyIHR5cGUgKGUuZy4sIE1hYyBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBO
U1N0cmluZyopLgpAQCAtMzg4LDEzICszODgsMTMgQEAgcHVibGljOgogCiAgICAgLy8gU3RyaW5n
Ojpmcm9tVVRGOCB3aWxsIHJldHVybiBhIG51bGwgc3RyaW5nIGlmCiAgICAgLy8gdGhlIGlucHV0
IGRhdGEgY29udGFpbnMgaW52YWxpZCBVVEYtOCBzZXF1ZW5jZXMuCi0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgTENoYXIqLCBzaXplX3QpOwotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IExDaGFyKik7
CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3Qg
TENoYXIqLCBzaXplX3QpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5n
IGZyb21VVEY4KGNvbnN0IExDaGFyKik7CiAgICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25z
dCBjaGFyKiBzLCBzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBmcm9tVVRGOChyZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4ocyksIGxlbmd0aCk7IH07CiAgICAgc3RhdGljIFN0cmluZyBmcm9t
VVRGOChjb25zdCBjaGFyKiBzKSB7IHJldHVybiBmcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4ocykpOyB9OwogCiAgICAgLy8gVHJpZXMgdG8gY29udmVydCB0aGUgcGFzc2Vk
IGluIHN0cmluZyB0byBVVEYtOCwgYnV0IHdpbGwgZmFsbCBiYWNrIHRvIExhdGluLTEgaWYgdGhl
IHN0cmluZyBpcyBub3QgdmFsaWQgVVRGLTguCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBTdHJpbmcgZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soY29uc3QgTENoYXIqLCBzaXplX3Qp
OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIGZyb21VVEY4V2l0aExh
dGluMUZhbGxiYWNrKGNvbnN0IExDaGFyKiwgc2l6ZV90KTsKICAgICBzdGF0aWMgU3RyaW5nIGZy
b21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGNvbnN0IGNoYXIqIHMsIHNpemVfdCBsZW5ndGgpIHsg
cmV0dXJuIGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPihzKSwgbGVuZ3RoKTsgfTsKICAgICAKICAgICAvLyBEZXRlcm1pbmVzIHRoZSB3cml0
aW5nIGRpcmVjdGlvbiB1c2luZyB0aGUgVW5pY29kZSBCaWRpIEFsZ29yaXRobSBydWxlcyBQMiBh
bmQgUDMuCkBAIC00MTYsNyArNDE2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKTsgfQogCiAjaWZuZGVmIE5ERUJVRwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNo
b3coKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBzaG93KCkgY29uc3Q7
CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTUyNyw3ICs1MjcsNyBAQCBpbmxpbmUgYm9vbCBTdHJp
bmc6OmNvbnRhaW5zT25seUFTQ0lJKCkgY29uc3QKICAgICByZXR1cm4gY2hhcmFjdGVyc0FyZUFs
bEFTQ0lJKGNoYXJhY3RlcnMxNigpLCBtX2ltcGwtPmxlbmd0aCgpKTsKIH0KIAotV1RGX0VYUE9S
VF9QUklWQVRFIGludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpOworV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpOwogCiBpbmxpbmUgYm9vbCBjb2RlUG9pbnRDb21wYXJlTGVz
c1RoYW4oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpCiB7CkBAIC01ODIsNyArNTgy
LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8U3RyaW5nPiB7CiB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFN0cmluZz4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7
IH07CiAKIC8vIFNoYXJlZCBnbG9iYWwgZW1wdHkgc3RyaW5nLgotV1RGX0VYUE9SVF9QUklWQVRF
IGNvbnN0IFN0cmluZyYgZW1wdHlTdHJpbmcoKTsKK1dURl9FWFBPUlRfU1RSSU5HX0FQSSBjb25z
dCBTdHJpbmcmIGVtcHR5U3RyaW5nKCk7CiAKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>