<?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>127554</bug_id>
          
          <creation_ts>2014-01-24 04:25:49 -0800</creation_ts>
          <short_desc>[GLIB] Add GUniqueOutPtr and use it instead of GOwnPtr</short_desc>
          <delta_ts>2014-02-10 10:17:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>971574</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-24 04:25:49 -0800</bug_when>
    <thetext>In r162516 we added GUniquePtr that was used to replace GOwnPtr in all case except when the output pointer is needed. For those cases we can&apos;t use std::unique_ptr, so we need a class to cover these cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971576</commentid>
    <comment_count>1</comment_count>
      <attachid>222092</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-24 04:34:43 -0800</bug_when>
    <thetext>Created attachment 222092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971577</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-24 04:36:24 -0800</bug_when>
    <thetext>Attachment 222092 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/soup/NetworkProcessSoup.cpp:40:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit/gtk/webkit/webkitdownload.cpp:42:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/gobject/GUniquePtr.h:64:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp:44:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 5 in 56 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>971578</commentid>
    <comment_count>3</comment_count>
      <attachid>222093</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-24 05:44:15 -0800</bug_when>
    <thetext>Created attachment 222093
Fixed coding style issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972409</commentid>
    <comment_count>4</comment_count>
      <attachid>222093</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-01-27 07:01:01 -0800</bug_when>
    <thetext>Comment on attachment 222093
Fixed coding style issues

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

&gt; Tools/TestWebKitAPI/Tests/WTF/gobject/GUniquePtr.cpp:188
&gt; +        a.reset();

No need for calling reset() here -- the GUniqueOutPtr will handle freeing the memory when it goes out of scope and is destroyed.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp:146
&gt; -    result.clear();
&gt; +    result.reset();

No need for calling reset() here (since the unique pointer will be reset when outPtr() is called the next time) ...

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp:168
&gt; -    result.clear();
&gt; +    result.reset();

... or here (since the pointer will be deleted when GUniqueOutPtr goes out of scope).

I guess GUniqueOutPtr is now smart enough that the user doesn&apos;t really have to know about the reset() method, so it can be made private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972426</commentid>
    <comment_count>5</comment_count>
      <attachid>222093</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-27 08:51:00 -0800</bug_when>
    <thetext>Comment on attachment 222093
Fixed coding style issues

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

Thanks for the review.

&gt;&gt; Tools/TestWebKitAPI/Tests/WTF/gobject/GUniquePtr.cpp:188
&gt;&gt; +        a.reset();
&gt; 
&gt; No need for calling reset() here -- the GUniqueOutPtr will handle freeing the memory when it goes out of scope and is destroyed.

Well, this is actually a test to check that reset works, if we make it private we don&apos;t need this test.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp:146
&gt;&gt; +    result.reset();
&gt; 
&gt; No need for calling reset() here (since the unique pointer will be reset when outPtr() is called the next time) ...

You are right.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp:168
&gt;&gt; +    result.reset();
&gt; 
&gt; ... or here (since the pointer will be deleted when GUniqueOutPtr goes out of scope).
&gt; 
&gt; I guess GUniqueOutPtr is now smart enough that the user doesn&apos;t really have to know about the reset() method, so it can be made private.

Yes, I agree, and the proof is that it&apos;s only used in this test and it&apos;s not actually needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972883</commentid>
    <comment_count>6</comment_count>
      <attachid>222435</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-28 06:15:42 -0800</bug_when>
    <thetext>Created attachment 222435
Updated patch

Made reset private as suggested by Zan</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973376</commentid>
    <comment_count>7</comment_count>
      <attachid>222574</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-29 08:37:10 -0800</bug_when>
    <thetext>Created attachment 222574
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978594</commentid>
    <comment_count>8</comment_count>
      <attachid>223627</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-02-09 05:15:21 -0800</bug_when>
    <thetext>Created attachment 223627
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978849</commentid>
    <comment_count>9</comment_count>
      <attachid>223627</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-02-10 05:53:08 -0800</bug_when>
    <thetext>Comment on attachment 223627
Rebased patch

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

&gt; Source/WebCore/platform/gtk/PasteboardHelper.cpp:-272
&gt; -            // FIXME: should GOwnPtr be smarter about this and replace the existing ptr when outPtr() is used?
&gt; -            key.clear();
&gt; -            value.clear();

\o/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978948</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-02-10 10:17:35 -0800</bug_when>
    <thetext>Committed r163797: &lt;http://trac.webkit.org/changeset/163797&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222092</attachid>
            <date>2014-01-24 04:34:43 -0800</date>
            <delta_ts>2014-01-24 05:44:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk-unique-out-ptr.diff</filename>
            <type>text/plain</type>
            <size>86231</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggY2UwMDFkMS4uODZkOTJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNC0wMS0yNCAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dM
SUJdIEFkZCBHVW5pcXVlT3V0UHRyIGFuZCB1c2UgaXQgaW5zdGVhZCBvZiBHT3duUHRyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc1NTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHVW5pcXVlT3V0UHRy
IGlzIGEgc2ltcGxpZmllZCB2ZXJzaW9uIG9mIEdPd25QdHIgZm9yIHRoZSBjYXNlcworICAgICAg
ICB3aGVyZSB3ZSBuZWVkIHRoZSBhZGRyZXNzIG9mIHRoZSBjb250YWluZWQgcG9pbnRlci4gR1Vu
aXF1ZU91dFB0cgorICAgICAgICB1c2VzIEdVbmlxdWVQdHIgdG8gZnJlZSB0aGUgY29udGFpbmVk
IG9iamVjdCBhbmQgdG8gcmVsZWFzZSB0aGUKKyAgICAgICAgY29udGFpbmVyIHBvaW50ZXIuIFRo
ZSBBUEkgaXMgdmVyeSBzaW1wbGUgdG8gbWFrZSBzdXJlIHRoaXMgaXMKKyAgICAgICAgb25seSB1
c2VkIHdoZW4gb3V0UHRyKCkgaXMgbmVlZGVkLiBJdCBjYW4ndCBiZSBjb25zdHJ1Y3RlZCB3aXRo
IGEKKyAgICAgICAgcG9pbnRlciwgYW5kIHRoZXJlJ3Mgbm90IG1ldGhvZCB0byBzZXQgYSBuZXcg
cG9pbnRlci4gQW5vdGhlcgorICAgICAgICBkaWZmZXJlbmNlIHdpdGggdGhlIG9sZCBHT3duUHRy
IGlzIHRoYXQgb3V0UHRyKCkgY2FuIGJlIHVzZWQKKyAgICAgICAgbXVsdGlwbGUgdGltZXMsIGJl
Y2F1c2UgaXQgZnJlZXMgYW55IHBvaW50ZXIgcHJldmlvdXNseSBzZXQuCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVmbC5jbWFrZToKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogd3RmL2dvYmplY3QvR093
blB0ci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd3RmL2dvYmplY3QvR093blB0ci5oOiBSZW1v
dmVkLgorICAgICAgICAqIHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaDoKKyAgICAgICAgKFdURjo6
R1VuaXF1ZU91dFB0cjo6R1VuaXF1ZU91dFB0cik6CisgICAgICAgIChXVEY6OkdVbmlxdWVPdXRQ
dHI6On5HVW5pcXVlT3V0UHRyKToKKyAgICAgICAgKFdURjo6R1VuaXF1ZU91dFB0cjo6b3V0UHRy
KToKKyAgICAgICAgKFdURjo6R1VuaXF1ZU91dFB0cjo6cmVzZXQpOgorICAgICAgICAoV1RGOjpH
VW5pcXVlT3V0UHRyOjpyZWxlYXNlKToKKyAgICAgICAgKFdURjo6R1VuaXF1ZU91dFB0cjo6b3Bl
cmF0b3IqKToKKyAgICAgICAgKFdURjo6R1VuaXF1ZU91dFB0cjo6b3BlcmF0b3ItPik6CisgICAg
ICAgIChXVEY6OkdVbmlxdWVPdXRQdHI6OmdldCk6CisgICAgICAgIChXVEY6OkdVbmlxdWVPdXRQ
dHI6Om9wZXJhdG9yISk6CisgICAgICAgIChXVEY6OkdVbmlxdWVPdXRQdHI6Om9wZXJhdG9yIFVu
c3BlY2lmaWVkQm9vbFR5cGUpOgorCiAyMDE0LTAxLTIyICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFVwZGF0ZSBwcm9qZWN0IGFuZCBzb2x1dGlv
biBmaWxlcyBmb3IgNjQtYml0IGJ1aWxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA0NTNl
MTk5Li42YjQzOTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0K
KysrIGIvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yMDksOCArMjA5LDYgQEAg
d3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL2R0b2Evc3RydG9kLmggXAogICAg
IFNvdXJjZS9XVEYvd3RmL2R0b2EvdXRpbHMuaCBcCiAgICAgU291cmNlL1dURi93dGYvZ29iamVj
dC9HTXV0ZXhMb2NrZXIuaCBcCi0gICAgU291cmNlL1dURi93dGYvZ29iamVjdC9HT3duUHRyLmNw
cCBcCi0gICAgU291cmNlL1dURi93dGYvZ29iamVjdC9HT3duUHRyLmggXAogICAgIFNvdXJjZS9X
VEYvd3RmL2dvYmplY3QvR1JlZlB0ci5jcHAgXAogICAgIFNvdXJjZS9XVEYvd3RmL2dvYmplY3Qv
R1JlZlB0ci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dUeXBlZGVmcy5oIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZTEwYTQ0Mi4uYjRlMjEwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1FZmwuY21ha2UKQEAgLTQsNyArNCw2IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAg
ICAgZWZsL1JlZlB0ckVmbC5jcHAKICAgICBlZmwvUnVuTG9vcEVmbC5jcHAKIAotICAgIGdvYmpl
Y3QvR093blB0ci5jcHAKICAgICBnb2JqZWN0L0dSZWZQdHIuY3BwCiApCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZv
cm1HVEsuY21ha2UKaW5kZXggMzJlMWZlYi4uNzAyNjJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsu
Y21ha2UKQEAgLTEsNSArMSw0IEBACiBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwotICAgIGdvYmpl
Y3QvR093blB0ci5jcHAKICAgICBnb2JqZWN0L0dSZWZQdHIuY3BwCiAgICAgZ29iamVjdC9HbGli
VXRpbGl0aWVzLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dPd25Q
dHIuY3BwIGIvU291cmNlL1dURi93dGYvZ29iamVjdC9HT3duUHRyLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNTkzNTZkNi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9n
b2JqZWN0L0dPd25QdHIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgotICoKLSAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwot
ICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdPd25QdHIuaCIKLQot
I2lmIFVTRShHTElCKQotCi0jaW5jbHVkZSA8Z2lvL2dpby5oPgotI2luY2x1ZGUgPGdsaWIuaD4K
LQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlIDw+IFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGZyZWVPd25lZEdQdHI8R0Vycm9yPihHRXJyb3IqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAg
ICAgICBnX2Vycm9yX2ZyZWUocHRyKTsKLX0KLQotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRH
UHRyPEdMaXN0PihHTGlzdCogcHRyKQotewotICAgIGdfbGlzdF9mcmVlKHB0cik7Ci19Ci0KLXRl
bXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxHU0xpc3Q+KEdTTGlzdCogcHRyKQotewotICAg
IGdfc2xpc3RfZnJlZShwdHIpOwotfQotCi10ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8
R1BhdHRlcm5TcGVjPihHUGF0dGVyblNwZWMqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAgICAg
ICBnX3BhdHRlcm5fc3BlY19mcmVlKHB0cik7Ci19Ci0KLXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93
bmVkR1B0cjxHRGlyPihHRGlyKiBwdHIpCi17Ci0gICAgaWYgKHB0cikKLSAgICAgICAgZ19kaXJf
Y2xvc2UocHRyKTsKLX0KLQotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdUaW1lcj4o
R1RpbWVyKiBwdHIpCi17Ci0gICAgaWYgKHB0cikKLSAgICAgICAgZ190aW1lcl9kZXN0cm95KHB0
cik7Ci19Ci0KLXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxHS2V5RmlsZT4oR0tleUZp
bGUqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAgICAgICBnX2tleV9maWxlX2ZyZWUocHRyKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBVU0UoR0xJQikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR093blB0ci5oIGIvU291cmNlL1dURi93dGYvZ29i
amVjdC9HT3duUHRyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMjYyM2IuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvZ29iamVjdC9HT3duUHRyLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxNDQgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogIENvcHlyaWdodCAoQykgMjAwOCBDb2xs
YWJvcmEgTHRkLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0g
KgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBHT3duUHRyX2gKLSNkZWZpbmUgR093
blB0cl9oCi0KLSNpZiBVU0UoR0xJQikKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1leHRl
cm4gIkMiIHZvaWQgZ19mcmVlKHZvaWQqKTsKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBmcmVlT3duZWRHUHRyKFQqIHB0cik7Ci10ZW1wbGF0
ZTw+IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGZyZWVPd25lZEdQdHI8R0Vycm9yPihHRXJyb3Iq
KTsKLXRlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdMaXN0PihHTGlzdCopOwotdGVtcGxh
dGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8R1NMaXN0PihHU0xpc3QqKTsKLXRlbXBsYXRlPD4gdm9p
ZCBmcmVlT3duZWRHUHRyPEdQYXR0ZXJuU3BlYz4oR1BhdHRlcm5TcGVjKik7Ci10ZW1wbGF0ZTw+
IHZvaWQgZnJlZU93bmVkR1B0cjxHRGlyPihHRGlyKik7Ci10ZW1wbGF0ZTw+IHZvaWQgZnJlZU93
bmVkR1B0cjxHVGltZXI+KEdUaW1lciopOwotdGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8
R0tleUZpbGU+KEdLZXlGaWxlKik7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBHT3du
UHRyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHT3duUHRyKTsKLXB1YmxpYzoKLSAgICBl
eHBsaWNpdCBHT3duUHRyKFQqIHB0ciA9IDApIDogbV9wdHIocHRyKSB7IH0KLSAgICB+R093blB0
cigpIHsgZnJlZU93bmVkR1B0cihtX3B0cik7IH0KLQotICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHRyOyB9Ci0gICAgVCogcmVsZWFzZSgpCi0gICAgewotICAgICAgICBUKiBwdHIgPSBt
X3B0cjsKLSAgICAgICAgbV9wdHIgPSAwOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQot
ICAgIFQqJiBvdXRQdHIoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX3B0cik7Ci0gICAgICAg
IHJldHVybiBtX3B0cjsKLSAgICB9Ci0KLSAgICB2b2lkIHNldChUKiBwdHIpCi0gICAgewotICAg
ICAgICBBU1NFUlQoIXB0ciB8fCBtX3B0ciAhPSBwdHIpOwotICAgICAgICBmcmVlT3duZWRHUHRy
KG1fcHRyKTsKLSAgICAgICAgbV9wdHIgPSBwdHI7Ci0gICAgfQotCi0gICAgdm9pZCBjbGVhcigp
Ci0gICAgewotICAgICAgICBUKiBwdHIgPSBtX3B0cjsKLSAgICAgICAgbV9wdHIgPSAwOwotICAg
ICAgICBmcmVlT3duZWRHUHRyKHB0cik7Ci0gICAgfQotCi0gICAgVCYgb3BlcmF0b3IqKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3B0cik7Ci0gICAgICAgIHJldHVybiAqbV9wdHI7
Ci0gICAgfQotCi0gICAgVCogb3BlcmF0b3ItPigpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NF
UlQobV9wdHIpOwotICAgICAgICByZXR1cm4gbV9wdHI7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVy
YXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0KLQotICAgIC8vIFRoaXMgY29udmVyc2lv
biBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8g
b3RoZXIgaW50ZWdlciB0eXBlcy4KLSAgICB0eXBlZGVmIFQqIEdPd25QdHI6OipVbnNwZWNpZmll
ZEJvb2xUeXBlOwotICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3B0ciA/ICZHT3duUHRyOjptX3B0ciA6IDA7IH0KLQotICAgIHZvaWQgc3dhcChHT3du
UHRyJiBvKSB7IHN0ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7IH0KLQotcHJpdmF0ZToKLSAgICBU
KiBtX3B0cjsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBzd2FwKEdP
d25QdHI8VD4mIGEsIEdPd25QdHI8VD4mIGIpCi17Ci0gICAgYS5zd2FwKGIpOwotfQotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBHT3duUHRyPFQ+JiBhLCBVKiBiKQoteyAKLSAgICByZXR1cm4gYS5nZXQoKSA9PSBiOyAKLX0K
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9y
PT0oVCogYSwgY29uc3QgR093blB0cjxVPiYgYikgCi17Ci0gICAgcmV0dXJuIGEgPT0gYi5nZXQo
KTsgCi19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IEdPd25QdHI8VD4mIGEsIFUqIGIpCi17Ci0gICAgcmV0dXJuIGEuZ2V0
KCkgIT0gYjsgCi19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KFQqIGEsIGNvbnN0IEdPd25QdHI8VT4mIGIpCi17IAotICAgIHJldHVy
biBhICE9IGIuZ2V0KCk7IAotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHR5cGVu
YW1lIEdPd25QdHI8VD46OlB0clR5cGUgZ2V0UHRyKGNvbnN0IEdPd25QdHI8VD4mIHApCi17Ci0g
ICAgcmV0dXJuIHAuZ2V0KCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9p
ZCBmcmVlT3duZWRHUHRyKFQqIHB0cikKLXsKLSAgICBnX2ZyZWUocHRyKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6R093blB0cjsKLQotI2VuZGlmIC8vIFVTRShHTElC
KQotCi0jZW5kaWYgLy8gR093blB0cl9oCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dv
YmplY3QvR1VuaXF1ZVB0ci5oIGIvU291cmNlL1dURi93dGYvZ29iamVjdC9HVW5pcXVlUHRyLmgK
aW5kZXggMjI3MTgxMi4uOGNjNzcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ29iamVj
dC9HVW5pcXVlUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvZ29iamVjdC9HVW5pcXVlUHRyLmgK
QEAgLTI0LDYgKzI0LDcgQEAKICNpZiBVU0UoR0xJQikKIAogI2luY2x1ZGUgPGdpby9naW8uaD4K
KyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTU3
LDkgKzU4LDY0IEBAIHVzaW5nIEdVbmlxdWVQdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8VCwgR1B0ckRl
bGV0ZXI8VD4+OwogRk9SX0VBQ0hfR0xJQl9ERUxFVEVSKFdURl9ERUZJTkVfR1BUUl9ERUxFVEVS
KQogI3VuZGVmIEZPUl9FQUNIX0dMSUJfREVMRVRFUgogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgR1VuaXF1ZU91dFB0ciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR1VuaXF1ZU91
dFB0cik7CitwdWJsaWM6CisgICAgR1VuaXF1ZU91dFB0cigpIDogbV9wdHIobnVsbHB0cikgeyB9
CisgICAgfkdVbmlxdWVPdXRQdHIoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICB9CisK
KyAgICBUKiYgb3V0UHRyKCkKKyAgICB7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIHJldHVy
biBtX3B0cjsKKyAgICB9CisKKyAgICB2b2lkIHJlc2V0KCkKKyAgICB7CisgICAgICAgIGlmICht
X3B0cikgeworICAgICAgICAgICAgR1VuaXF1ZVB0cjxUPiBkZWxldGVQdHIobV9wdHIpOworICAg
ICAgICAgICAgbV9wdHIgPSBudWxscHRyOworICAgICAgICB9CisgICAgfQorCisgICAgR1VuaXF1
ZVB0cjxUPiByZWxlYXNlKCkKKyAgICB7CisgICAgICAgIEdVbmlxdWVQdHI8VD4gcHRyKG1fcHRy
KTsKKyAgICAgICAgbV9wdHIgPSBudWxscHRyOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0K
KworICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9wdHIp
OworICAgICAgICByZXR1cm4gKm1fcHRyOworICAgIH0KKworICAgIFQqIG9wZXJhdG9yLT4oKSBj
b25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcHRyKTsKKyAgICAgICAgcmV0dXJuIG1fcHRy
OworICAgIH0KKworICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9CisKKyAgICBi
b29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQorCisgICAgLy8gVGhpcyBj
b252ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0
IG5vdCB0byBvdGhlciBpbnRlZ2VyIHR5cGVzLgorICAgIHR5cGVkZWYgVCogR1VuaXF1ZU91dFB0
cjo6KlVuc3BlY2lmaWVkQm9vbFR5cGU7CisgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8gJkdVbmlxdWVPdXRQdHI6Om1fcHRyIDogMDsgfQor
Citwcml2YXRlOgorICAgIFQqIG1fcHRyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVz
aW5nIFdURjo6R1VuaXF1ZVB0cjsKK3VzaW5nIFdURjo6R1VuaXF1ZU91dFB0cjsKIAogI2VuZGlm
IC8vIFVTRShHTElCKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVlMmE3NjguLjY1ZWNkNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2NSBAQAorMjAxNC0wMS0yNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dMSUJdIEFkZCBHVW5pcXVlT3V0UHRyIGFu
ZCB1c2UgaXQgaW5zdGVhZCBvZiBHT3duUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc1NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgR1VuaXF1ZU91dFB0ciBpbnN0ZWFkIG9mIEdPd25QdHIu
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFBsYXRmb3JtRWZs
LmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVNZXNzYWdlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0JhdHRlcnlQcm92aWRlclVQb3dlci5jcHA6CisgICAg
ICAgIChCYXR0ZXJ5UHJvdmlkZXJVUG93ZXI6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUdTdHJlYW1lcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6
OmdldFRhZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3Rr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0
ay9JbWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2FkUmVzb3VyY2VTaGFyZWRCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OnNldFVSSUxpc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9GaWxlU3lzdGVtR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRGcm9tRmlsZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdhbWVwYWREZXZpY2VHdGs6OnJlYWRDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okd0a0lucHV0
TWV0aG9kRmlsdGVyOjpoYW5kbGVQcmVlZGl0Q2hhbmdlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEhl
bHBlcjo6ZmlsbERhdGFPYmplY3RGcm9tRHJvcERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9SZW5kZXJUaGVtZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6
c3lzdGVtRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVkZW50aWFsRm9yQ2hhbGxlbmdlQXN5bmNSZWFk
eUNhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291
cC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhh
bmRsZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVkaXJlY3RTa2lwQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6bmV4dE11bHRpcGFydFJlc3BvbnNlUGFydENhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNlbmRSZXF1ZXN0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
YWRkRmlsZVRvU291cE1lc3NhZ2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNvdXBS
ZXF1ZXN0QW5kTWVzc2FnZUZvckhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQ2FsbGJh
Y2spOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVT
b3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1T
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1DbG9z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb25uZWN0ZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpyZWFkUmVhZHlDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nl
c3Npb246Omh0dHBQcm94eSk6CisKIDIwMTQtMDEtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEF2b2lkIHVubmVjZXNzYXJ5IHN0
cmluZyBkdXBsaWNhdGlvbnMgaW4gRmlsZVN5c3RlbUd0awpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggNWNlYmJjNi4uMTJmN2VjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC01OTI3LDggKzU5MjcsNiBAQCBwbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQldyaXRlQmF0Y2guaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCV3JpdGVCYXRjaC5jcHAgXAotCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5jcHAgXAotCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3VwLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDcxMDVlYzQuLjc1NTQxOGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xNTcsNyArMTU3LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNw
cAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9DcmVkZW50aWFsU3RvcmFnZVNvdXAuY3BwCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCi0gICAgcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0dPd25QdHJTb3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25Tb3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVJl
c29sdmVyU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3Vw
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBkZmUzOGNjLi5hZDRiYzAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTE1LDcgKzExNSw2IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291
cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0b3JhZ2VTb3VwLmNw
cAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAotICAgIHBsYXRmb3JtL25l
dHdvcmsvc291cC9HT3duUHRyU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJv
eHlSZXNvbHZlclNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVy
U291cC5jcHAKQEAgLTI0NCw3ICsyNDMsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlUGxhdGZvcm1H
VEtfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0b3JhZ2VTb3VwLmNwcAog
ICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAotICAgIHBsYXRmb3JtL25ldHdv
cmsvc291cC9HT3duUHRyU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlS
ZXNvbHZlclNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291
cC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCA4MTYy
NDk0Li4yNWRkY2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3Bw
CkBAIC0yNCwxMiArMjQsMTIgQEAKIAogI2luY2x1ZGUgIkF1ZGlvQ2hhbm5lbC5oIgogI2luY2x1
ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRy
Lmg+CiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJXZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgPGdz
dC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9wYnV0aWxzLmg+CisjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE1MCw4
ICsxNTAsOCBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OmZpbmlzaEJ1aWxkaW5n
UGlwZWxpbmVBZnRlcldhdlBhcnNlclBhZFJlYWR5KEdzdAogCiBnYm9vbGVhbiBBdWRpb0Rlc3Rp
bmF0aW9uR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiB7Ci0g
ICAgR093blB0cjxHRXJyb3I+IGVycm9yOwotICAgIEdPd25QdHI8Z2NoYXI+IGRlYnVnOworICAg
IEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBk
ZWJ1ZzsKIAogICAgIHN3aXRjaCAoR1NUX01FU1NBR0VfVFlQRShtZXNzYWdlKSkgewogICAgIGNh
c2UgR1NUX01FU1NBR0VfV0FSTklORzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1l
ci5jcHAKaW5kZXggOGUxNGQzMS4uZTY4N2U1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRl
ckdTdHJlYW1lci5jcHAKQEAgLTMwLDggKzMwLDggQEAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAj
aW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiAj
aW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+CiAKQEAgLTIwMyw4ICsyMDMsOCBAQCBHc3RGbG93
UmV0dXJuIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlU2FtcGxlKEdzdEFwcFNpbmsqIHNpbmspCiAK
IGdib29sZWFuIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNz
YWdlKQogewotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBHT3duUHRyPGdjaGFyPiBk
ZWJ1ZzsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0
cjxnY2hhcj4gZGVidWc7CiAKICAgICBzd2l0Y2ggKEdTVF9NRVNTQUdFX1RZUEUobWVzc2FnZSkp
IHsKICAgICBjYXNlIEdTVF9NRVNTQUdFX0VPUzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyLmNwcAppbmRleCA2YTlmMWJmLi5l
ZmM4MDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0JhdHRlcnlQ
cm92aWRlclVQb3dlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9CYXR0
ZXJ5UHJvdmlkZXJVUG93ZXIuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiQmF0dGVy
eVByb3ZpZGVyVVBvd2VyQ2xpZW50LmgiCiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8bGlt
aXRzPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HVW5pcXVlUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01MSw3
ICs1MSw3IEBAIHZvaWQgQmF0dGVyeVByb3ZpZGVyVVBvd2VyOjpzdGFydFVwZGF0aW5nKCkKICAg
ICBBU1NFUlQoIW1fdXBvd2VyQ2xpZW50KTsKICAgICBtX3Vwb3dlckNsaWVudCA9IGFkb3B0R1Jl
Zih1cF9jbGllbnRfbmV3KCkpOwogCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdV
bmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBpZiAoIXVwX2NsaWVudF9lbnVtZXJhdGVf
ZGV2aWNlc19zeW5jKG1fdXBvd2VyQ2xpZW50LmdldCgpLCAwLCAmZXJyb3Iub3V0UHRyKCkpKSB7
CiAgICAgICAgIG1fY2xpZW50LT51cGRhdGVCYXR0ZXJ5U3RhdHVzKE5vdEF2YWlsYWJsZSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAKaW5kZXggYzk2
MzMwYy4uYTZhYWUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAKQEAgLTI2
LDcgKzI2LDcgQEAKIAogI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgogI2luY2x1ZGUgPGdz
dC9nc3QuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEyNiw3
ICsxMjYsNyBAQCBib29sIGluaXRpYWxpemVHU3RyZWFtZXIoKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICNlbmRpZgogCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQ
dHI8R0Vycm9yPiBlcnJvcjsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IHBhc3Mg
dGhlIGFyZ3VtZW50cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCiAgICAgYm9vbCBnc3RJbml0aWFs
aXplZCA9IGdzdF9pbml0X2NoZWNrKDAsIDAsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShnc3RJbml0aWFsaXplZCwgIkdTdHJlYW1lciBpbml0aWFsaXphdGlvbiBm
YWlsZWQ6ICVzIiwgZXJyb3IgPyBlcnJvci0+bWVzc2FnZSA6ICJ1bmtub3duIGVycm9yIG9jY3Vy
cmVkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
CmluZGV4IGM0YTBmZDguLjEwMTEwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSA8Z3N0L2dz
dC5oPgogI2luY2x1ZGUgPGdzdC9wYnV0aWxzL21pc3NpbmctcGx1Z2lucy5oPgogI2luY2x1ZGUg
PGxpbWl0cz4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApA
QCAtOTQ1LDggKzk0NCw4IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpidWZmZXJlZCgpIGNvbnN0CiAKIGdib29sZWFuIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogewotICAg
IEdPd25QdHI8R0Vycm9yPiBlcnI7Ci0gICAgR093blB0cjxnY2hhcj4gZGVidWc7CisgICAgR1Vu
aXF1ZU91dFB0cjxHRXJyb3I+IGVycjsKKyAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBkZWJ1ZzsK
ICAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIGVycm9yOwogICAgIGJvb2wgaXNzdWVFcnJv
ciA9IHRydWU7CiAgICAgYm9vbCBhdHRlbXB0TmV4dExvY2F0aW9uID0gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2
YXRlQmFzZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKaW5kZXggYTZmOTI3Zi4uNDVm
NGZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcApA
QCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJhc2UuaCIKICNpbmNsdWRl
IDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBH
U1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tZWRpYV9wbGF5ZXJfZGVidWcpOwogI2Rl
ZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X21lZGlhX3BsYXllcl9kZWJ1ZwpAQCAtMTQzLDcg
KzE0Myw3IEBAIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZkFj
dGl2ZUNoYW5nZWQoKQogCiBib29sIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmdldFRhZyhH
c3RUYWdMaXN0KiB0YWdzLCBjb25zdCBnY2hhciogdGFnTmFtZSwgU3RyaW5nJiB2YWx1ZSkKIHsK
LSAgICBHT3duUHRyPGdjaGFyPiB0YWdWYWx1ZTsKKyAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiB0
YWdWYWx1ZTsKICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgdGFnTmFtZSwg
JnRhZ1ZhbHVlLm91dFB0cigpKSkgewogICAgICAgICBJTkZPX01FRElBX01FU1NBR0UoIlRyYWNr
ICVkIGdvdCAlcyAlcy4iLCBtX2luZGV4LCB0YWdOYW1lLCB0YWdWYWx1ZS5nZXQoKSk7CiAgICAg
ICAgIHZhbHVlID0gdGFnVmFsdWUuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcAppbmRleCA3NjZmNmM1Li43
OGE2MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SW1hZ2VCdWZmZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHAKQEAgLTI1LDE0ICsyNSwxNCBAQAogI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1ZGUgPGd0ay9ndGsu
aD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShjYWlyb19zdXJm
YWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVh
bGl0eSwgR093blB0cjxnY2hhcj4mIGJ1ZmZlciwgZ3NpemUmIGJ1ZmZlclNpemUpCitzdGF0aWMg
Ym9vbCBlbmNvZGVJbWFnZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVhbGl0eSwgR1VuaXF1ZU91dFB0cjxnY2hhcj4mIGJ1
ZmZlciwgZ3NpemUmIGJ1ZmZlclNpemUpCiB7CiAgICAgLy8gTGlzdCBvZiBzdXBwb3J0ZWQgaW1h
Z2UgZW5jb2RpbmcgdHlwZXMgY29tZXMgZnJvbSB0aGUgR2RrUGl4YnVmIGRvY3VtZW50YXRpb24u
CiAgICAgLy8gaHR0cDovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2RrLXBpeGJ1Zi9zdGFibGUvZ2Rr
LXBpeGJ1Zi1GaWxlLXNhdmluZy5odG1sI2dkay1waXhidWYtc2F2ZS10by1idWZmZXJ2CkBAIC02
NSw3ICs2NSw3IEBAIHN0YXRpYyBib29sIGVuY29kZUltYWdlKGNhaXJvX3N1cmZhY2VfdCogc3Vy
ZmFjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QKICAgICBpZiAoIXBpeGJ1ZikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdV
bmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBpZiAodHlwZSA9PSAianBlZyIgJiYgcXVh
bGl0eSAmJiAqcXVhbGl0eSA+PSAwLjAgJiYgKnF1YWxpdHkgPD0gMS4wKSB7CiAgICAgICAgIFN0
cmluZyBxdWFsaXR5U3RyaW5nID0gU3RyaW5nOjpmb3JtYXQoIiVkIiwgc3RhdGljX2Nhc3Q8aW50
PigqcXVhbGl0eSAqIDEwMC4wICsgMC41KSk7CiAgICAgICAgIGdka19waXhidWZfc2F2ZV90b19i
dWZmZXIocGl4YnVmLmdldCgpLCAmYnVmZmVyLm91dFB0cigpLCAmYnVmZmVyU2l6ZSwgdHlwZS51
dGY4KCkuZGF0YSgpLCAmZXJyb3Iub3V0UHRyKCksICJxdWFsaXR5IiwgcXVhbGl0eVN0cmluZy51
dGY4KCkuZGF0YSgpLCBOVUxMKTsKQEAgLTc5LDcgKzc5LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVy
Ojp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5
LCBDb28KIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAotICAgIEdPd25QdHI8Z2NoYXI+IGJ1ZmZl
cjsKKyAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBidWZmZXI7CiAgICAgZ3NpemUgYnVmZmVyU2l6
ZTsKICAgICBpZiAoIWVuY29kZUltYWdlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIG1pbWVUeXBl
LCBxdWFsaXR5LCBidWZmZXIsIGJ1ZmZlclNpemUpKQogICAgICAgICByZXR1cm4gImRhdGE6LCI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VH
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNw
cAppbmRleCAyZTdjNDRjLi42MjA4ZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRl
ICJHVW5pcXVlUHRyR3RrLmgiCiAjaW5jbHVkZSAiR2RrQ2Fpcm9VdGlsaXRpZXMuaCIKICNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbmNsdWRlIDxjYWlyby5oPgpAQCAtNjcsNyArNjYsNyBAQCBzdGF0aWMgQ1N0
cmluZyBnZXRUaGVtZUljb25GaWxlTmFtZShjb25zdCBjaGFyKiBuYW1lLCBpbnQgc2l6ZSkKIAog
c3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VTaGFyZWRCdWZmZXIo
Q1N0cmluZyBuYW1lKQogewotICAgIEdPd25QdHI8Z2NoYXI+IGNvbnRlbnQ7CisgICAgR1VuaXF1
ZU91dFB0cjxnY2hhcj4gY29udGVudDsKICAgICBnc2l6ZSBsZW5ndGg7CiAgICAgaWYgKCFnX2Zp
bGVfZ2V0X2NvbnRlbnRzKG5hbWUuZGF0YSgpLCAmY29udGVudC5vdXRQdHIoKSwgJmxlbmd0aCwg
MCkpCiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwCmluZGV4IDc3MTU1MDAuLmJjMzNi
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAK
QEAgLTIxLDcgKzIxLDYgQEAKIAogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPGd0ay9n
dGsuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
IApAQCAtMTAyLDcgKzEwMSw3IEBAIHZvaWQgRGF0YU9iamVjdEd0azo6c2V0VVJJTGlzdChjb25z
dCBTdHJpbmcmIHVyaUxpc3RTdHJpbmcpCiAgICAgICAgICAgICAgICAgc2V0VVJMID0gdHJ1ZTsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAg
ICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICAgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gZmlsZW5hbWUoZ19maWxlbmFtZV9mcm9tX3VyaShsaW5lLnV0ZjgoKS5kYXRh
KCksIDAsICZlcnJvci5vdXRQdHIoKSkpOwogICAgICAgICAgICAgaWYgKCFlcnJvciAmJiBmaWxl
bmFtZSkKICAgICAgICAgICAgICAgICBtX2ZpbGVuYW1lcy5hcHBlbmQoU3RyaW5nOjpmcm9tVVRG
OChmaWxlbmFtZS5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0ZpbGVTeXN0ZW1HdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVT
eXN0ZW1HdGsuY3BwCmluZGV4IDdmYjAwNjkuLjZhOTE2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNs
dWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlv
Lmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR2xpYlV0aWxpdGllcy5oPgpAQCAtMzM0LDcgKzMzMyw3IEBAIGlu
dCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoKQogCiBpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5k
bGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAgR093blB0cjxHRXJyb3I+IGVycm9y
OworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBkbyB7CiAgICAgICAgIGdz
c2l6ZSBieXRlc1JlYWQgPSBnX2lucHV0X3N0cmVhbV9yZWFkKGdfaW9fc3RyZWFtX2dldF9pbnB1
dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGEsIGxlbmd0aCwgMCwgJmVycm9yLm91dFB0cigpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR2FtZXBhZHNHdGsuY3BwCmluZGV4IDQ0MmJi
ZWUuLjM3Zjg0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HYW1l
cGFkc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3Rr
LmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgPGd1ZGV2L2d1ZGV2Lmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KQEAgLTgwLDcgKzc5LDcgQEAgR2FtZXBhZERldmljZUd0azo6fkdhbWVwYWRE
ZXZpY2VHdGsoKQogZ2Jvb2xlYW4gR2FtZXBhZERldmljZUd0azo6cmVhZENhbGxiYWNrKEdPYmpl
Y3QqIHBvbGxhYmxlU3RyZWFtLCBncG9pbnRlciBkYXRhKQogewogICAgIEdhbWVwYWREZXZpY2VH
dGsqIGdhbWVwYWREZXZpY2UgPSByZWludGVycHJldF9jYXN0PEdhbWVwYWREZXZpY2VHdGsqPihk
YXRhKTsKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJy
b3I+IGVycm9yOwogICAgIHN0cnVjdCBqc19ldmVudCBldmVudDsKIAogICAgIGdzc2l6ZSBsZW4g
PSBnX3BvbGxhYmxlX2lucHV0X3N0cmVhbV9yZWFkX25vbmJsb2NraW5nKEdfUE9MTEFCTEVfSU5Q
VVRfU1RSRUFNKHBvbGxhYmxlU3RyZWFtKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9HdGtJbnB1dE1ldGhvZEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvR3RrSW5wdXRNZXRob2RGaWx0ZXIuY3BwCmluZGV4IDBhMDI2NjUuLjhhNTJiNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtJbnB1dE1ldGhvZEZp
bHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9k
RmlsdGVyLmNwcApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+
CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5j
bHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlx
dWVQdHIuaD4KIAogLy8gVGhlIFdpbmRvd3MgY29tcG9zaXRpb24ga2V5IGV2ZW50IGNvZGUgaXMg
Mjk5IG9yIFZLX1BST0NFU1NLRVkuIFdlIG5lZWQgdG8KIC8vIGVtaXQgdGhpcyBjb2RlIGZvciB3
ZWIgY29tcGF0aWJpbGl0eSByZWFzb25zIHdoZW4ga2V5IGV2ZW50cyB0cmlnZ2VyCkBAIC0zMTcs
NyArMzE3LDcgQEAgdm9pZCBHdGtJbnB1dE1ldGhvZEZpbHRlcjo6aGFuZGxlUHJlZWRpdENoYW5n
ZWQoKQogICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBHT3duUHRy
PGdjaGFyPiBuZXdQcmVlZGl0OworICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IG5ld1ByZWVkaXQ7
CiAgICAgZ3RrX2ltX2NvbnRleHRfZ2V0X3ByZWVkaXRfc3RyaW5nKG1fY29udGV4dC5nZXQoKSwg
Jm5ld1ByZWVkaXQub3V0UHRyKCksIDAsICZtX2N1cnNvck9mZnNldCk7CiAKICAgICBpZiAobV9w
cmV2ZW50TmV4dENvbW1pdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bh
c3RlYm9hcmRIZWxwZXIuY3BwCmluZGV4IDU1NzM0MTYuLjg5YjlmYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKQEAgLTMyLDcgKzMy
LDYgQEAKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVj
b2Rlci5oIgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0yNTksMTggKzI1OCwxMyBAQCB2b2lkIFBhc3RlYm9hcmRIZWxwZXI6OmZp
bGxEYXRhT2JqZWN0RnJvbURyb3BEYXRhKEd0a1NlbGVjdGlvbkRhdGEqIGRhdGEsIGd1aW50CiAg
ICAgfSBlbHNlIGlmICh0YXJnZXQgPT0gdW5rbm93bkF0b20pIHsKICAgICAgICAgR1JlZlB0cjxH
VmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9uZXdfcGFyc2VkKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YShkYXRhKSkpOwogCi0gICAg
ICAgIEdPd25QdHI8Z2NoYXI+IGtleTsKLSAgICAgICAgR093blB0cjxnY2hhcj4gdmFsdWU7Cisg
ICAgICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IGtleTsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxn
Y2hhcj4gdmFsdWU7CiAgICAgICAgIEdWYXJpYW50SXRlciBpdGVyOwogCiAgICAgICAgIGdfdmFy
aWFudF9pdGVyX2luaXQoJml0ZXIsIHZhcmlhbnQuZ2V0KCkpOwotICAgICAgICB3aGlsZSAoZ192
YXJpYW50X2l0ZXJfbmV4dCgmaXRlciwgIntzc30iLCAma2V5Lm91dFB0cigpLCAmdmFsdWUub3V0
UHRyKCkpKSB7CisgICAgICAgIHdoaWxlIChnX3ZhcmlhbnRfaXRlcl9uZXh0KCZpdGVyLCAie3Nz
fSIsICZrZXkub3V0UHRyKCksICZ2YWx1ZS5vdXRQdHIoKSkpCiAgICAgICAgICAgICBkYXRhT2Jq
ZWN0LT5zZXRVbmtub3duVHlwZURhdGEoa2V5LmdldCgpLCB2YWx1ZS5nZXQoKSk7Ci0KLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBzaG91bGQgR093blB0ciBiZSBzbWFydGVyIGFib3V0IHRoaXMgYW5k
IHJlcGxhY2UgdGhlIGV4aXN0aW5nIHB0ciB3aGVuIG91dFB0cigpIGlzIHVzZWQ/Ci0gICAgICAg
ICAgICBrZXkuY2xlYXIoKTsKLSAgICAgICAgICAgIHZhbHVlLmNsZWFyKCk7Ci0gICAgICAgIH0K
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5k
ZXJUaGVtZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVH
dGsuY3BwCmluZGV4IDYyOWU4ZDYuLjU1YzQzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUg
IkZpbGVMaXN0LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZvbnREZXNj
cmlwdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlICJH
cmFkaWVudC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkd0a1Zl
cnNpb25pbmcuaCIKQEAgLTQ4LDYgKzQ3LDcgQEAKICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAjaW5j
bHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5B
QkxFKFBST0dSRVNTX0VMRU1FTlQpCkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBSZW5kZXJUaGVt
ZUd0azo6c3lzdGVtRm9udChDU1NWYWx1ZUlELCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlw
dGlvbikgY28KICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhpcyB3aWxsIGJlIGEgZm9udCBz
ZWxlY3Rpb24gc3RyaW5nIGxpa2UgIlNhbnMgMTAiIHNvIHdlIGNhbm5vdCB1c2UgaXQgYXMgdGhl
IGZhbWlseSBuYW1lLgotICAgIEdPd25QdHI8Z2NoYXI+IGZvbnROYW1lOworICAgIEdVbmlxdWVP
dXRQdHI8Z2NoYXI+IGZvbnROYW1lOwogICAgIGdfb2JqZWN0X2dldChzZXR0aW5ncywgImd0ay1m
b250LW5hbWUiLCAmZm9udE5hbWUub3V0UHRyKCksIE5VTEwpOwogCiAgICAgUGFuZ29Gb250RGVz
Y3JpcHRpb24qIHBhbmdvRGVzY3JpcHRpb24gPSBwYW5nb19mb250X2Rlc2NyaXB0aW9uX2Zyb21f
c3RyaW5nKGZvbnROYW1lLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9TaGFyZWRCdWZmZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1NoYXJlZEJ1ZmZlckd0ay5jcHAKaW5kZXggYzdiNGYyNy4uZWQ4ZGU0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAKQEAgLTIwLDcgKzIw
LDcgQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0u
aCIKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2luY2x1
ZGUgPGdsaWIuaD4KQEAgLTM0LDkgKzM0LDkgQEAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmkKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICBDU3RyaW5nIGZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVQYXRoKTsKLSAgICBHT3duUHRyPGdjaGFyPiBjb250ZW50czsKKyAgICBH
VW5pcXVlT3V0UHRyPGdjaGFyPiBjb250ZW50czsKICAgICBnc2l6ZSBzaXplOwotICAgIEdPd25Q
dHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAg
aWYgKCFnX2ZpbGVfZ2V0X2NvbnRlbnRzKGZpbGVuYW1lLmRhdGEoKSwgJmNvbnRlbnRzLm91dFB0
cigpLCAmc2l6ZSwgJmVycm9yLm91dFB0cigpKSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMgLSAlcyIsIGZpbGVuYW1lRm9yRGlz
cGxheShmaWxlUGF0aCkudXRmOCgpLmRhdGEoKSwgZXJyb3ItPm1lc3NhZ2UpOwogICAgICAgICBy
ZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvZ3Rr
L0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMTQxMjAwMi4uMDg2ZGJj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ndGsvQ3JlZGVu
dGlhbEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNs
dWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPGxpYnNlY3JldC9zZWNyZXQuaD4KICNp
bmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNlbmRpZgpAQCAtNzcsNyArNzYsNyBAQCBzdGF0aWMgdm9pZCBjcmVkZW50
aWFsRm9yQ2hhbGxlbmdlQXN5bmNSZWFkeUNhbGxiYWNrKFNlY3JldFNlcnZpY2UqIHNlcnZpY2Us
IEdBcwogICAgIHZvaWQqIGRhdGEgPSBjYWxsYmFja0RhdGEtPmRhdGE7CiAgICAgZGVsZXRlIGNh
bGxiYWNrRGF0YTsKIAotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0
UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1VuaXF1ZVB0cjxHTGlzdD4gZWxlbWVudHMoc2VjcmV0
X3NlcnZpY2Vfc2VhcmNoX2ZpbmlzaChzZXJ2aWNlLCBhc3luY1Jlc3VsdCwgJmVycm9yLm91dFB0
cigpKSk7CiAgICAgaWYgKGVycm9yIHx8ICFlbGVtZW50cyB8fCAhZWxlbWVudHMtPmRhdGEpIHsK
ICAgICAgICAgY2FsbGJhY2soQ3JlZGVudGlhbCgpLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5YmI0NGIzLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw1MSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCi0gKgot
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqICBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s
IE1BICAwMjExMC0xMzAxICBVU0EKLSAqLwotCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJHT3duUHRyU291cC5oIgotCi0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0KLW5hbWVz
cGFjZSBXVEYgewotCi10ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8U291cFVSST4oU291
cFVSSSogcHRyKQotewotICAgIGlmIChwdHIpCi0gICAgICAgIHNvdXBfdXJpX2ZyZWUocHRyKTsK
LX0KLQotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPFNvdXBDb29raWU+KFNvdXBDb29r
aWUqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAgICAgICBzb3VwX2Nvb2tpZV9mcmVlKHB0cik7
Ci19Ci0KLXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxTb3VwTWVzc2FnZUhlYWRlcnM+
KFNvdXBNZXNzYWdlSGVhZGVycyogcHRyKQotewotICAgIGlmIChwdHIpCi0gICAgICAgIHNvdXBf
bWVzc2FnZV9oZWFkZXJzX2ZyZWUocHRyKTsKLX0KLQotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3du
ZWRHUHRyPFNvdXBCdWZmZXI+KFNvdXBCdWZmZXIqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAg
ICAgICBzb3VwX2J1ZmZlcl9mcmVlKHB0cik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25QdHJTb3Vw
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUyNTNiZC4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBT
LkwKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAq
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCi0gKi8KLQotI2lmbmRlZiBHT3duUHRyU291cF9oCi0jZGVmaW5lIEdPd25QdHJTb3Vw
X2gKLQotLy8gV2UgbmVlZCB0byBpbmNsdWRlIGxpYnNvdXAgaGVhZGVycyBoZXJlIGJlY2F1c2Ug
dGhlIHdheSB0aGF0IFNvdXBCdWZmZXIKLS8vIGlzIGRlZmluZWQgaXMgbm90IGNvbXBhdGlibGUg
d2l0aCBmb3J3YXJkIGRlY2xhcmF0aW9uLgotI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgotI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBs
YXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPFNvdXBVUkk+KFNvdXBVUkkqIHB0cik7Ci10ZW1wbGF0
ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxTb3VwQ29va2llPihTb3VwQ29va2llKiBwdHIpOwotdGVt
cGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8U291cE1lc3NhZ2VIZWFkZXJzPihTb3VwTWVzc2Fn
ZUhlYWRlcnMqKTsKLXRlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPFNvdXBCdWZmZXI+KFNv
dXBCdWZmZXIqKTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggN2E2
Nzc2ZS4uZmIxNDk3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAK
ICNpbmNsdWRlICJDb29raWVKYXJTb3VwLmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlhbFN0b3JhZ2Uu
aCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiR093blB0clNvdXAuaCIKKyNp
bmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5j
bHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIK
QEAgLTU2LDcgKzU2LDYgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNTA1
LDcgKzUwNCw3IEBAIHN0YXRpYyB2b2lkIHJlZGlyZWN0U2tpcENhbGxiYWNrKEdPYmplY3QqLCBH
QXN5bmNSZXN1bHQqIGFzeW5jUmVzdWx0LCBncG9pbnRlciBkCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJy
b3I+IGVycm9yOwogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldElu
dGVybmFsKCk7CiAgICAgZ3NzaXplIGJ5dGVzU2tpcHBlZCA9IGdfaW5wdXRfc3RyZWFtX3NraXBf
ZmluaXNoKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGFzeW5jUmVzdWx0LCAmZXJyb3Iub3V0UHRy
KCkpOwogICAgIGlmIChlcnJvcikgewpAQCAtNjExLDcgKzYxMCw3IEBAIHN0YXRpYyB2b2lkIG5l
eHRNdWx0aXBhcnRSZXNwb25zZVBhcnRDYWxsYmFjayhHT2JqZWN0KiAvKnNvdXJjZSovLCBHQXN5
bmNSZXN1bHQqCiAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50
ZXJuYWwoKTsKICAgICBBU1NFUlQoIWQtPm1faW5wdXRTdHJlYW0pOwogCi0gICAgR093blB0cjxH
RXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBkLT5t
X2lucHV0U3RyZWFtID0gYWRvcHRHUmVmKHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9uZXh0
X3BhcnRfZmluaXNoKGQtPm1fbXVsdGlwYXJ0SW5wdXRTdHJlYW0uZ2V0KCksIHJlc3VsdCwgJmVy
cm9yLm91dFB0cigpKSk7CiAKICAgICBpZiAoZXJyb3IpIHsKQEAgLTY1OCw3ICs2NTcsNyBAQCBz
dGF0aWMgdm9pZCBzZW5kUmVxdWVzdENhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqIHJl
c3VsdCwgZ3BvaW50ZXIgZGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEdPd25Q
dHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAg
R1JlZlB0cjxHSW5wdXRTdHJlYW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKHNvdXBfcmVxdWVz
dF9zZW5kX2ZpbmlzaChkLT5tX3NvdXBSZXF1ZXN0LmdldCgpLCByZXN1bHQsICZlcnJvci5vdXRQ
dHIoKSkpOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRG
YWlsKGhhbmRsZS5nZXQoKSwgUmVzb3VyY2VFcnJvcjo6aHR0cEVycm9yKHNvdXBNZXNzYWdlLCBl
cnJvci5nZXQoKSwgZC0+bV9zb3VwUmVxdWVzdC5nZXQoKSkpOwpAQCAtNzI4LDcgKzcyNyw3IEBA
IHN0YXRpYyB2b2lkIGNvbnRpbnVlQWZ0ZXJEaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSkKIAogc3RhdGljIGJvb2wgYWRkRmlsZVRvU291cE1lc3NhZ2VCb2R5KFNvdXBN
ZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lU3RyaW5nLCBzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGVuZ3RoVG9TZW5kLCB1bnNpZ25lZCBsb25nJiB0b3RhbEJvZHlTaXplKQog
ewotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4g
ZXJyb3I7CiAgICAgQ1N0cmluZyBmaWxlTmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihm
aWxlTmFtZVN0cmluZyk7CiAgICAgR01hcHBlZEZpbGUqIGZpbGVNYXBwaW5nID0gZ19tYXBwZWRf
ZmlsZV9uZXcoZmlsZU5hbWUuZGF0YSgpLCBmYWxzZSwgJmVycm9yLm91dFB0cigpKTsKICAgICBp
ZiAoZXJyb3IpCkBAIC05OTEsMTIgKzk5MCwxMSBAQCBzdGF0aWMgYm9vbCBjcmVhdGVTb3VwUmVx
dWVzdEFuZE1lc3NhZ2VGb3JIYW5kbGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUgog
ewogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7
CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0KICAgICBHVW5pcXVlUHRyPFNvdXBVUkk+
IHNvdXBVUkkocmVxdWVzdC5zb3VwVVJJKCkpOwogICAgIGlmICghc291cFVSSSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGQt
Pm1fc291cFJlcXVlc3QgPSBhZG9wdEdSZWYoc291cF9zZXNzaW9uX3JlcXVlc3RfdXJpKGQtPnNv
dXBTZXNzaW9uKCksIHNvdXBVUkkuZ2V0KCksICZlcnJvci5vdXRQdHIoKSkpOwogICAgIGlmIChl
cnJvcikgewogICAgICAgICBkLT5tX3NvdXBSZXF1ZXN0LmNsZWFyKCk7CkBAIC0xMzE0LDcgKzEz
MTIsNyBAQCBzdGF0aWMgdm9pZCByZWFkQ2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCog
YXN5bmNSZXN1bHQsIGdwb2ludGVyIGRhdGEpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9y
OwogICAgIGdzc2l6ZSBieXRlc1JlYWQgPSBnX2lucHV0X3N0cmVhbV9yZWFkX2ZpbmlzaChkLT5t
X2lucHV0U3RyZWFtLmdldCgpLCBhc3luY1Jlc3VsdCwgJmVycm9yLm91dFB0cigpKTsKIAogICAg
IGlmIChlcnJvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNvdXAuY3BwCmluZGV4IDU1MDhmMzYu
LmMwMmI2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHAKQEAgLTQyLDcgKzQyLDcg
QEAKICNpbmNsdWRlIDxnbGliLmg+CiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNkZWZpbmUgUkVBRF9CVUZG
RVJfU0laRSAxMDI0CkBAIC0xNjgsNyArMTY4LDcgQEAgaW50IFNvY2tldFN0cmVhbUhhbmRsZTo6
cGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiAgICAgaWYgKCFtX291
dHB1dFN0cmVhbSB8fCAhZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBHT3duUHRyPEdF
cnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGdzc2l6
ZSB3cml0dGVuID0gZ19wb2xsYWJsZV9vdXRwdXRfc3RyZWFtX3dyaXRlX25vbmJsb2NraW5nKG1f
b3V0cHV0U3RyZWFtLmdldCgpLCBkYXRhLCBsZW5ndGgsIDAsICZlcnJvci5vdXRQdHIoKSk7CiAg
ICAgaWYgKGVycm9yKSB7CiAgICAgICAgIGlmIChnX2Vycm9yX21hdGNoZXMoZXJyb3IuZ2V0KCks
IEdfSU9fRVJST1IsIEdfSU9fRVJST1JfV09VTERfQkxPQ0spKQpAQCAtMTk0LDcgKzE5NCw3IEBA
IHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybUNsb3NlKCkKICAgICBzdG9wV2FpdGlu
Z0ZvclNvY2tldFdyaXRhYmlsaXR5KCk7CiAKICAgICBpZiAobV9zb2NrZXRDb25uZWN0aW9uKSB7
Ci0gICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxH
RXJyb3I+IGVycm9yOwogICAgICAgICBnX2lvX3N0cmVhbV9jbG9zZShHX0lPX1NUUkVBTShtX3Nv
Y2tldENvbm5lY3Rpb24uZ2V0KCkpLCAwLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgICAgICBpZiAo
ZXJyb3IpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbFNvY2tldFN0cmVhbSh0aGlzLCBT
b2NrZXRTdHJlYW1FcnJvcihlcnJvci0+Y29kZSwgZXJyb3ItPm1lc3NhZ2UpKTsKQEAgLTI1MSw3
ICsyNTEsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6c3RvcFdhaXRpbmdGb3JTb2NrZXRX
cml0YWJpbGl0eSgpCiBzdGF0aWMgdm9pZCBjb25uZWN0ZWRDYWxsYmFjayhHU29ja2V0Q2xpZW50
KiBjbGllbnQsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiBpZCkKIHsKICAgICAvLyBBbHdh
eXMgZmluaXNoIHRoZSBjb25uZWN0aW9uLCBldmVuIGlmIHRoaXMgU29ja2V0U3RyZWFtSGFuZGxl
IHdhcyBkZWFjdGl2YXRlZCBlYXJsaWVyLgotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAg
ICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1NvY2tldENvbm5lY3Rpb24qIHNv
Y2tldENvbm5lY3Rpb24gPSBnX3NvY2tldF9jbGllbnRfY29ubmVjdF90b19ob3N0X2ZpbmlzaChj
bGllbnQsIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKTsKIAogICAgIC8vIFRoZSBTb2NrZXRTdHJl
YW1IYW5kbGUgaGFzIGJlZW4gZGVhY3RpdmF0ZWQsIHNvIGp1c3QgY2xvc2UgdGhlIGNvbm5lY3Rp
b24sIGlnbm9yaW5nIGVycm9ycy4KQEAgLTI2OCw3ICsyNjgsNyBAQCBzdGF0aWMgdm9pZCBjb25u
ZWN0ZWRDYWxsYmFjayhHU29ja2V0Q2xpZW50KiBjbGllbnQsIEdBc3luY1Jlc3VsdCogcmVzdWx0
LCB2b2lkKgogc3RhdGljIHZvaWQgcmVhZFJlYWR5Q2FsbGJhY2soR0lucHV0U3RyZWFtKiBzdHJl
YW0sIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiBpZCkKIHsKICAgICAvLyBBbHdheXMgZmlu
aXNoIHRoZSByZWFkLCBldmVuIGlmIHRoaXMgU29ja2V0U3RyZWFtSGFuZGxlIHdhcyBkZWFjdGl2
YXRlZCBlYXJsaWVyLgotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0
UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgZ3NzaXplIGJ5dGVzUmVhZCA9IGdfaW5wdXRfc3RyZWFt
X3JlYWRfZmluaXNoKHN0cmVhbSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOwogCiAgICAgU29j
a2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUgPSBnZXRIYW5kbGVGcm9tSWQoaWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtT
ZXNzaW9uLmNwcAppbmRleCA0ZjgzNzk2Li5hNDM3OWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNw
cApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCIKICNpbmNsdWRlICJDb29raWVKYXJTb3VwLmgiCi0jaW5jbHVkZSAiR093blB0clNvdXAuaCIK
KyNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgpAQCAtMjA4
LDcgKzIwOCw3IEBAIGNoYXIqIFNvdXBOZXR3b3JrU2Vzc2lvbjo6aHR0cFByb3h5KCkgY29uc3QK
ICAgICBpZiAoIXNvdXBSZXNvbHZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBH
T3duUHRyPFNvdXBVUkk+IHVyaTsKKyAgICBHVW5pcXVlT3V0UHRyPFNvdXBVUkk+IHVyaTsKICAg
ICBnX29iamVjdF9nZXQoc291cFJlc29sdmVyLCBTT1VQX1BST1hZX1JFU09MVkVSX1dLX1BST1hZ
X1VSSSwgJnVyaS5vdXRQdHIoKSwgbnVsbHB0cik7CiAKICAgICByZXR1cm4gdXJpID8gc291cF91
cmlfdG9fc3RyaW5nKHVyaS5nZXQoKSwgRkFMU0UpIDogbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpp
bmRleCA1YjY5MjY2Li40MjU4NmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTQtMDEtMjQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHTElCXSBBZGQgR1VuaXF1ZU91dFB0ciBhbmQgdXNlIGl0IGluc3RlYWQgb2Yg
R093blB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI3NTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXNlIEdVbmlxdWVPdXRQdHIgaW5zdGVhZCBvZiBHT3duUHRyLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZCk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvVGV4dENoZWNrZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRk
b3dubG9hZC5jcHA6CisgICAgICAgICh3ZWJraXRfZG93bmxvYWRfb3Blbl9zdHJlYW1fZm9yX3Vy
aSk6CisgICAgICAgICh3ZWJraXRfZG93bmxvYWRfc2V0X2Rlc3RpbmF0aW9uX3VyaSk6CisgICAg
ICAgICh3ZWJraXRfZG93bmxvYWRfcmVjZWl2ZWRfZGF0YSk6CisgICAgICAgICogd2Via2l0L3dl
YmtpdHdlYnBsdWdpbi5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3BsdWdpbl9nZXRfcGF0aCk6
CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2V4cG9zZV9ldmVudCk6CisKIDIwMTQtMDEtMjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBVc2UgR1VuaXF1ZVB0ciBp
bnN0ZWFkIG9mIEdPd25QdHIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAppbmRleCAyYTI0NmE3Li4zNWM2ODAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC05NSw3ICs5NSw2IEBACiAjaW5jbHVkZSA8Z2xpYi5o
PgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CkBAIC0xMDQ1LDcgKzEwNDQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAg
IGlmICghZXJyb3JGaWxlKQogICAgICAgICBjb250ZW50ID0gbWFrZVN0cmluZygiPGh0bWw+PGJv
ZHk+Iiwgd2ViRXJyb3ItPm1lc3NhZ2UsICI8L2JvZHk+PC9odG1sPiIpOwogICAgIGVsc2Ugewot
ICAgICAgICBHT3duUHRyPGdjaGFyPiBmaWxlQ29udGVudDsKKyAgICAgICAgR1VuaXF1ZU91dFB0
cjxnY2hhcj4gZmlsZUNvbnRlbnQ7CiAgICAgICAgIGlmICghZ19maWxlX2xvYWRfY29udGVudHMo
ZXJyb3JGaWxlLmdldCgpLCAwLCAmZmlsZUNvbnRlbnQub3V0UHRyKCksIDAsIDAsIDApKQogICAg
ICAgICAgICAgY29udGVudCA9IG1ha2VTdHJpbmcoIjxodG1sPjxib2R5PiIsIHdlYkVycm9yLT5t
ZXNzYWdlLCAiPC9ib2R5PjwvaHRtbD4iKTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRHdGsuY3Bw
CmluZGV4IDIzMjM4ZjQuLmY5NGQwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEd0ay5jcHAKQEAgLTI4LDcgKzI4
LDYgQEAKICNpbmNsdWRlICJ3ZWJraXRzcGVsbGNoZWNrZXIuaCIKICNpbmNsdWRlICJ3ZWJraXR3
ZWJzZXR0aW5nc3ByaXZhdGUuaCIKICNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVkZSA8d3RmL2dv
YmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0ZG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRvd25s
b2FkLmNwcAppbmRleCBhMzk5YmYwLi41NTI2OWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRkb3dubG9hZC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlIDxnbGli
L2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC00NjQsNyArNDY0LDcgQEAg
c3RhdGljIGdib29sZWFuIHdlYmtpdF9kb3dubG9hZF9vcGVuX3N0cmVhbV9mb3JfdXJpKFdlYktp
dERvd25sb2FkKiBkb3dubG9hZCwgY28KIAogICAgIFdlYktpdERvd25sb2FkUHJpdmF0ZSogcHJp
diA9IGRvd25sb2FkLT5wcml2OwogICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYo
Z19maWxlX25ld19mb3JfdXJpKHVyaSkpOwotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAg
ICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAKICAgICBpZiAoYXBwZW5kKQogICAgICAg
ICBwcml2LT5vdXRwdXRTdHJlYW0gPSBnX2ZpbGVfYXBwZW5kX3RvKGZpbGUuZ2V0KCksIEdfRklM
RV9DUkVBVEVfTk9ORSwgTlVMTCwgJmVycm9yLm91dFB0cigpKTsKQEAgLTcwNSw3ICs3MDUsNyBA
QCB2b2lkIHdlYmtpdF9kb3dubG9hZF9zZXRfZGVzdGluYXRpb25fdXJpKFdlYktpdERvd25sb2Fk
KiBkb3dubG9hZCwgY29uc3QgZ2NoYXIqCiAKICAgICAgICAgR1JlZlB0cjxHRmlsZT4gc3JjID0g
YWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3VyaShwcml2LT5kZXN0aW5hdGlvblVSSSkpOwogICAg
ICAgICBHUmVmUHRyPEdGaWxlPiBkZXN0ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3VyaShk
ZXN0aW5hdGlvbl91cmkpKTsKLSAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgICAg
ICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAKICAgICAgICAgZ19maWxlX21vdmUoc3Jj
LmdldCgpLCBkZXN0LmdldCgpLCBHX0ZJTEVfQ09QWV9CQUNLVVAsIDAsIDAsIDAsICZlcnJvci5v
dXRQdHIoKSk7CiAKQEAgLTg2NSw3ICs4NjUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG93bmxv
YWRfcmVjZWl2ZWRfZGF0YShXZWJLaXREb3dubG9hZCogZG93bmxvYWQsIGNvbnN0IGdjaGFyKgog
ICAgIEFTU0VSVChwcml2LT5vdXRwdXRTdHJlYW0pOwogCiAgICAgZ3NpemUgYnl0ZXNfd3JpdHRl
bjsKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+
IGVycm9yOwogCiAgICAgZ19vdXRwdXRfc3RyZWFtX3dyaXRlX2FsbChHX09VVFBVVF9TVFJFQU0o
cHJpdi0+b3V0cHV0U3RyZWFtKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEs
IGxlbmd0aCwgJmJ5dGVzX3dyaXR0ZW4sIE5VTEwsICZlcnJvci5vdXRQdHIoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicGx1Z2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwbHVnaW4uY3BwCmluZGV4IGNlYzYxNGYuLmM3
MTYyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwbHVn
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwbHVnaW4uY3Bw
CkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKICNp
bmNsdWRlICJ3ZWJraXR3ZWJwbHVnaW5wcml2YXRlLmgiCiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1s
aWIuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR1VuaXF1ZVB0ci5oPgogCiAvKioKICAqIFNFQ1RJT046d2Via2l0d2VicGx1Z2luCkBA
IC0xOTIsNyArMTkyLDcgQEAgY29uc3QgY2hhciogd2Via2l0X3dlYl9wbHVnaW5fZ2V0X3BhdGgo
V2ViS2l0V2ViUGx1Z2luKiBwbHVnaW4pCiAgICAgaWYgKHByaXYtPnBhdGgpCiAgICAgICAgIHJl
dHVybiBwcml2LT5wYXRoLmdldCgpOwogCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAg
IEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBwcml2LT5wYXRoLnJlc2V0KGdfZmls
ZW5hbWVfZnJvbV91dGY4KHByaXYtPmNvcmVQbHVnaW4tPnBhdGgoKS51dGY4KCkuZGF0YSgpLCAt
MSwgMCwgMCwgJmVycm9yLm91dFB0cigpKSk7CiAKICAgICBpZiAoIWVycm9yKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IGJiZmMyOTkuLjQ3N2NkNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTExOCw3
ICsxMTgsNiBAQAogI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8
Z2RrL2dka2tleXN5bXMuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgotI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
ICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQpAQCAtNjY5LDcgKzY2OCw3IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWlu
dCBwcm9wX2lkLCBjb25zdCBHCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2V4cG9z
ZV9ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRFeHBvc2UqIGV2ZW50KQogewogICAg
IGludCByZWN0Q291bnQ7Ci0gICAgR093blB0cjxHZGtSZWN0YW5nbGU+IHJlY3RzOworICAgIEdV
bmlxdWVPdXRQdHI8R2RrUmVjdGFuZ2xlPiByZWN0czsKICAgICBnZGtfcmVnaW9uX2dldF9yZWN0
YW5nbGVzKGV2ZW50LT5yZWdpb24sICZyZWN0cy5vdXRQdHIoKSwgJnJlY3RDb3VudCk7CiAKICAg
ICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihnZGtfY2Fpcm9fY3JlYXRlKGV2ZW50LT53
aW5kb3cpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3Y2QwODg1Li40MjMyNjkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzUgQEAKKzIwMTQtMDEtMjQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtHTElCXSBBZGQgR1VuaXF1ZU91dFB0ciBhbmQgdXNlIGl0
IGluc3RlYWQgb2YgR093blB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI3NTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXNlIEdVbmlxdWVPdXRQdHIgaW5zdGVhZCBvZiBHT3duUHRyLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpnZXRDYWNoZURpc2tGcmVlU2l6ZSk6CisgICAgICAgICogU2hhcmVkL0Rvd25s
b2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xp
ZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVu
dDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlk
RmluaXNoTG9hZGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmF2aWNv
bkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKHByb2Nlc3NQZW5kaW5nSWNvbnNGb3JQYWdlVVJMKToK
KyAgICAgICAgKHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAoZ290RmF2aWNvbkNhbGxiYWNr
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2d0ay9XZWJJbnNwZWN0b3JT
ZXJ2ZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JTZXJ2ZXI6OnBsYXRm
b3JtUmVzb3VyY2VGb3JQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1By
b2Nlc3NMYXVuY2hlckd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6
bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Q
cm9jZXNzUHJveHlVbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5
OjpzY2FuUGx1Z2luKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50
T3BlcmF0aW9uR3RrLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Nv
dXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZXRDYWNoZURpc2tGcmVlU2l6ZSk6CisKIDIwMTQt
MDEtMjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHTElCXSBVc2UgR1VuaXF1ZVB0ciBpbnN0ZWFkIG9mIEdPd25QdHIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3Vw
LmNwcAppbmRleCA1NWMxNGZhLi44NTBmNTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0zNyw3
ICszNyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU291cE5ldHdvcmtTZXNzaW9uLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+
Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgdWludDY0X3QgZ2V0
Q2FjaGVEaXNrRnJlZVNpemUoU291cENhY2hlKiBjYWNoZSkKIHsKICAgICBBU1NFUlQoY2FjaGUp
OwogCi0gICAgR093blB0cjxjaGFyPiBjYWNoZURpcjsKKyAgICBHVW5pcXVlT3V0UHRyPGNoYXI+
IGNhY2hlRGlyOwogICAgIGdfb2JqZWN0X2dldChHX09CSkVDVChjYWNoZSksICJjYWNoZS1kaXIi
LCAmY2FjaGVEaXIub3V0UHRyKCksIE5VTEwpOwogICAgIGlmICghY2FjaGVEaXIpCiAgICAgICAg
IHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9z
b3VwL0Rvd25sb2FkU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3Nv
dXAvRG93bmxvYWRTb3VwLmNwcAppbmRleCA4NmNkY2UzLi42Njg5N2U3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcApA
QCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaD4KICNpbmNsdWRlIDxnaW8v
Z2lvLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTA2LDcgKzEwNSw3IEBAIHB1YmxpYzoK
IAogICAgICAgICBTdHJpbmcgaW50ZXJtZWRpYXRlVVJJID0gbV9kZXN0aW5hdGlvblVSSSArICIu
d2tkb3dubG9hZCI7CiAgICAgICAgIG1faW50ZXJtZWRpYXRlRmlsZSA9IGFkb3B0R1JlZihnX2Zp
bGVfbmV3X2Zvcl91cmkoaW50ZXJtZWRpYXRlVVJJLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICAgICAg
R093blB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJy
b3I7CiAgICAgICAgIG1fb3V0cHV0U3RyZWFtID0gYWRvcHRHUmVmKGdfZmlsZV9yZXBsYWNlKG1f
aW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgMCwgVFJVRSwgR19GSUxFX0NSRUFURV9OT05FLCAwLCAm
ZXJyb3Iub3V0UHRyKCkpKTsKICAgICAgICAgaWYgKCFtX291dHB1dFN0cmVhbSkgewogICAgICAg
ICAgICAgZG93bmxvYWRGYWlsZWQocGxhdGZvcm1Eb3dubG9hZERlc3RpbmF0aW9uRXJyb3IocmVz
cG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CkBAIC0xMjQsNyArMTIzLDcgQEAgcHVibGljOgogICAg
ICAgICB9CiAKICAgICAgICAgZ3NpemUgYnl0ZXNXcml0dGVuOwotICAgICAgICBHT3duUHRyPEdF
cnJvcj4gZXJyb3I7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAg
ICAgZ19vdXRwdXRfc3RyZWFtX3dyaXRlX2FsbChHX09VVFBVVF9TVFJFQU0obV9vdXRwdXRTdHJl
YW0uZ2V0KCkpLCBkYXRhLCBsZW5ndGgsICZieXRlc1dyaXR0ZW4sIDAsICZlcnJvci5vdXRQdHIo
KSk7CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgZG93bmxvYWRGYWlsZWQocGxh
dGZvcm1Eb3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2Up
KTsKQEAgLTEzOSw3ICsxMzgsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgQVNTRVJUKG1faW50ZXJt
ZWRpYXRlRmlsZSk7CiAgICAgICAgIEdSZWZQdHI8R0ZpbGU+IGRlc3RpbmF0aW9uRmlsZSA9IGFk
b3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl91cmkobV9kZXN0aW5hdGlvblVSSS51dGY4KCkuZGF0YSgp
KSk7Ci0gICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAgICAgR1VuaXF1ZU91dFB0
cjxHRXJyb3I+IGVycm9yOwogICAgICAgICBpZiAoIWdfZmlsZV9tb3ZlKG1faW50ZXJtZWRpYXRl
RmlsZS5nZXQoKSwgZGVzdGluYXRpb25GaWxlLmdldCgpLCBHX0ZJTEVfQ09QWV9OT05FLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKSB7CiAgICAgICAgICAgICBk
b3dubG9hZEZhaWxlZChwbGF0Zm9ybURvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNl
LCBlcnJvci0+bWVzc2FnZSkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZhdmljb25EYXRhYmFzZS5j
cHAKaW5kZXggYzAyYTgzNC4uMmY1MzlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCkBAIC0yOSw3
ICsyOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgogI2luY2x1ZGUgPGds
aWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKQEAgLTE2NCwxMyArMTY0LDEzIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NQZW5kaW5n
SWNvbnNGb3JQYWdlVVJMKFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0CiAg
ICAgaWYgKCFwZW5kaW5nSWNvblJlcXVlc3RzKQogICAgICAgICByZXR1cm47CiAKLSAgICBHT3du
UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAg
IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGljb24gPSBnZXRJY29uU3VyZmFjZVN5bmNocm9ub3Vz
bHkoZGF0YWJhc2UsIHBhZ2VVUkwsICZlcnJvci5vdXRQdHIoKSk7CiAKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHBlbmRpbmdJY29uUmVxdWVzdHMtPnNpemUoKTsgKytpKSB7CiAgICAgICAg
IEdUYXNrKiB0YXNrID0gcGVuZGluZ0ljb25SZXF1ZXN0cy0+YXQoaSkuZ2V0KCk7CiAgICAgICAg
IGlmIChlcnJvcikKLSAgICAgICAgICAgIGdfdGFza19yZXR1cm5fZXJyb3IodGFzaywgZXJyb3Iu
cmVsZWFzZSgpKTsKKyAgICAgICAgICAgIGdfdGFza19yZXR1cm5fZXJyb3IodGFzaywgZXJyb3Iu
cmVsZWFzZSgpLnJlbGVhc2UoKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgR2V0RmF2
aWNvblN1cmZhY2VBc3luY0RhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxHZXRGYXZpY29uU3VyZmFj
ZUFzeW5jRGF0YSo+KGdfdGFza19nZXRfdGFza19kYXRhKHRhc2spKTsKICAgICAgICAgICAgIGRh
dGEtPmljb24gPSBpY29uOwpAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgd2Via2l0X2Zhdmljb25f
ZGF0YWJhc2VfZ2V0X2Zhdmljb24oV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29u
c3QKIAogICAgIC8vIFdlIGFzayBmb3IgdGhlIGljb24gZGlyZWN0bHkuIElmIHdlIGRvbid0IGdl
dCB0aGUgaWNvbiBkYXRhIG5vdywKICAgICAvLyB3ZSdsbCBiZSBub3RpZmllZCBsYXRlciAoZXZl
biBpZiB0aGUgZGF0YWJhc2UgaXMgc3RpbGwgaW1wb3J0aW5nIGljb25zKS4KLSAgICBHT3duUHRy
PEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGRh
dGEtPmljb24gPSBnZXRJY29uU3VyZmFjZVN5bmNocm9ub3VzbHkoZGF0YWJhc2UsIGRhdGEtPnBh
Z2VVUkwsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgaWYgKGRhdGEtPmljb24pIHsKICAgICAgICAg
Z190YXNrX3JldHVybl9ib29sZWFuKHRhc2suZ2V0KCksIFRSVUUpOwpAQCAtMzAxLDcgKzMwMSw3
IEBAIHZvaWQgd2Via2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0X2Zhdmljb24oV2ViS2l0RmF2aWNv
bkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QKICAgICBkYXRhLT5zaG91bGRSZWxlYXNlSWNvbkZv
clBhZ2VVUkwgPSB0cnVlOwogCiAgICAgaWYgKGdfZXJyb3JfbWF0Y2hlcyhlcnJvci5nZXQoKSwg
V0VCS0lUX0ZBVklDT05fREFUQUJBU0VfRVJST1IsIFdFQktJVF9GQVZJQ09OX0RBVEFCQVNFX0VS
Uk9SX0ZBVklDT05fTk9UX0ZPVU5EKSkgewotICAgICAgICBnX3Rhc2tfcmV0dXJuX2Vycm9yKHRh
c2suZ2V0KCksIGVycm9yLnJlbGVhc2UoKSk7CisgICAgICAgIGdfdGFza19yZXR1cm5fZXJyb3Io
dGFzay5nZXQoKSwgZXJyb3IucmVsZWFzZSgpLnJlbGVhc2UoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKaW5kZXggZTFlNDIyMS4uNjk1NzI0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VVJJU2NoZW1lUmVxdWVzdC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAj
aW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKQEAgLTE2NCw3ICsxNjMsNyBAQCBXZWJLaXRXZWJWaWV3KiB3ZWJraXRfdXJp
X3NjaGVtZV9yZXF1ZXN0X2dldF93ZWJfdmlldyhXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZQog
c3RhdGljIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdFJlYWRDYWxsYmFjayhHSW5wdXRTdHJl
YW0qIGlucHV0U3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdCogc2NoZW1lUmVxdWVzdCkKIHsKICAgICBHUmVmUHRyPFdlYktpdFVSSVNjaGVtZVJlcXVl
c3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYoc2NoZW1lUmVxdWVzdCk7Ci0gICAgR093blB0cjxHRXJy
b3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBnc3NpemUg
Ynl0ZXNSZWFkID0gZ19pbnB1dF9zdHJlYW1fcmVhZF9maW5pc2goaW5wdXRTdHJlYW0sIHJlc3Vs
dCwgJmVycm9yLm91dFB0cigpKTsKICAgICBpZiAoYnl0ZXNSZWFkID09IC0xKSB7CiAgICAgICAg
IHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKHJlcXVlc3QuZ2V0KCksIGVy
cm9yLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5jcHAKaW5kZXggN2VlMGM4Yi4uMmQ1N2M2NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTY2LDcgKzY2
LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0d0a1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVmUHRyQ2Fpcm8uaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgotI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC0zMzYsNyArMzM1LDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0V2ViVmlld0NhbmNlbEZhdmljb25SZXF1ZXN0KFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiAKIHN0YXRpYyB2b2lkIGdvdEZhdmljb25DYWxsYmFjayhHT2JqZWN0KiBvYmpl
Y3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkKIHsKLSAgICBHT3du
UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAg
IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGZhdmljb24gPSBhZG9wdFJlZih3ZWJraXRfZmF2aWNv
bl9kYXRhYmFzZV9nZXRfZmF2aWNvbl9maW5pc2goV0VCS0lUX0ZBVklDT05fREFUQUJBU0Uob2Jq
ZWN0KSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoZ19lcnJvcl9tYXRjaGVz
KGVycm9yLmdldCgpLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX0NBTkNFTExFRCkpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JT
ZXJ2ZXIvZ3RrL1dlYkluc3BlY3RvclNlcnZlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvSW5zcGVjdG9yU2VydmVyL2d0ay9XZWJJbnNwZWN0b3JTZXJ2ZXJHdGsuY3BwCmluZGV4
IGIwNmZhNzMuLjNjZjA0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9J
bnNwZWN0b3JTZXJ2ZXIvZ3RrL1dlYkluc3BlY3RvclNlcnZlckd0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9ndGsvV2ViSW5zcGVjdG9yU2VydmVy
R3RrLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdp
c3RyeS5oPgogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgpAQCAtNTUsNyArNTQsNyBAQCBib29sIFdlYkluc3BlY3RvclNlcnZl
cjo6cGxhdGZvcm1SZXNvdXJjZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBWZWN0b3I8Y2hh
cgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRv
cHRHUmVmKGdfZmlsZV9uZXdfZm9yX3VyaShyZXNvdXJjZVVSSS5kYXRhKCkpKTsKLSAgICBHT3du
UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAg
IEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfaW5m
byhmaWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX1NJWkUgIiwiIEdfRklMRV9B
VFRSSUJVVEVfU1RBTkRBUkRfRkFTVF9DT05URU5UX1RZUEUsIEdfRklMRV9RVUVSWV9JTkZPX05P
TkUsIDAsICZlcnJvci5vdXRQdHIoKSkpOwogICAgIGlmICghZmlsZUluZm8pIHsKICAgICAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCmluZGV4IDRmYjVj
OTAuLmY2NmViZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hl
ci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKQEAgLTM5LDcgKzM5LDYgQEAK
ICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dsaWJVdGlsaXRpZXMuaD4KIApAQCAtMTIzLDcgKzEyMiw3IEBAIHZvaWQg
UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICBhcmd2W2krK10gPSBjb25zdF9j
YXN0PGNoYXIqPihyZWFsUGx1Z2luUGF0aC5kYXRhKCkpOwogICAgIGFyZ3ZbaSsrXSA9IDA7CiAK
LSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVy
cm9yOwogICAgIGlmICghZ19zcGF3bl9hc3luYygwLCBhcmd2LCAwLCBHX1NQQVdOX0xFQVZFX0RF
U0NSSVBUT1JTX09QRU4sIGNoaWxkU2V0dXBGdW5jdGlvbiwgR0lOVF9UT19QT0lOVEVSKHNvY2tl
dHNbMV0pLCAmcGlkLCAmZXJyb3Iub3V0UHRyKCkpKSB7CiAgICAgICAgIGdfcHJpbnRlcnIoIlVu
YWJsZSB0byBmb3JrIGEgbmV3IFdlYlByb2Nlc3M6ICVzLlxuIiwgZXJyb3ItPm1lc3NhZ2UpOwog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXgu
Y3BwCmluZGV4IGNjMjM0MTMuLjc4MTUyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4
LmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
I2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUgPGdsaWIuaD4KLSNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1Vu
aXF1ZVB0ci5oPgogI2VuZGlmCiAKICNpbmNsdWRlIDxzeXMvd2FpdC5oPgpAQCAtNzQsNyArNzQs
NyBAQCBib29sIFBsdWdpblByb2Nlc3NQcm94eTo6c2NhblBsdWdpbihjb25zdCBTdHJpbmcmIHBs
dWdpblBhdGgsIFJhd1BsdWdpbk1ldGFEYXRhJgogICAgIGFyZ3ZbM10gPSAwOwogCiAgICAgaW50
IHN0YXR1czsKLSAgICBHT3duUHRyPGNoYXI+IHN0ZE91dDsKKyAgICBHVW5pcXVlT3V0UHRyPGNo
YXI+IHN0ZE91dDsKIAogICAgIC8vIElmIHRoZSBkaXNwb3NpdGlvbiBvZiBTSUdDTEQgc2lnbmFs
IGlzIHNldCB0byBTSUdfSUdOIChkZWZhdWx0KQogICAgIC8vIHRoZW4gdGhlIHNpZ25hbCB3aWxs
IGJlIGlnbm9yZWQgYW5kIGdfc3Bhd25fc3luYygpIHdpbGwgbm90IGJlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVy
YXRpb25HdGsuY3BwCmluZGV4IGNiNDY4ODEuLjQwNDY5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRp
b25HdGsuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNp
bmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+
CiAKICNpZmRlZiBIQVZFX0dUS19VTklYX1BSSU5USU5HCkBAIC03OSw3ICs3OCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPmpvYk5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcyBq
b2IgIyVkIiwgYXBwbGljYXRpb25OYW1lID8gYXBwbGljYXRpb25OYW1lIDogIldlYktpdCIsICsr
am9iTnVtYmVyKSk7CiAgICAgICAgIG1fcHJpbnRKb2IgPSBhZG9wdEdSZWYoZ3RrX3ByaW50X2pv
Yl9uZXcoam9iTmFtZS5nZXQoKSwgcHJpbnRlciwgbV9wcmludFNldHRpbmdzLmdldCgpLCBtX3Bh
Z2VTZXR1cC5nZXQoKSkpOwogCi0gICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAg
ICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICBjYWlyb19zdXJmYWNlX3Qq
IHN1cmZhY2UgPSBndGtfcHJpbnRfam9iX2dldF9zdXJmYWNlKG1fcHJpbnRKb2IuZ2V0KCksICZl
cnJvci5vdXRQdHIoKSk7CiAgICAgICAgIGlmICghc3VyZmFjZSkgewogICAgICAgICAgICAgcHJp
bnREb25lKHByaW50RXJyb3IoZnJhbWVVUkwoKSwgZXJyb3ItPm1lc3NhZ2UpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCmluZGV4IDMy
YjIxNzEuLjYyZGYyMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291
cC9XZWJQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3Vw
L1dlYlByb2Nlc3NTb3VwLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvdXBOZXR3b3JrU2Vzc2lvbi5o
PgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1JlZlB0ci5oPgogCiAjaWYgIUVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQpAQCAt
NTQsNyArNTQsNyBAQCBzdGF0aWMgdWludDY0X3QgZ2V0Q2FjaGVEaXNrRnJlZVNpemUoU291cENh
Y2hlKiBjYWNoZSkKIHsKICAgICBBU1NFUlQoY2FjaGUpOwogCi0gICAgR093blB0cjxjaGFyPiBj
YWNoZURpcjsKKyAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IGNhY2hlRGlyOwogICAgIGdfb2JqZWN0
X2dldChHX09CSkVDVChjYWNoZSksICJjYWNoZS1kaXIiLCAmY2FjaGVEaXIub3V0UHRyKCksIE5V
TEwpOwogICAgIGlmICghY2FjaGVEaXIpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGI3ZmNlOGMuLjFhYWM3Njgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAxNC0wMS0yNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dMSUJdIEFkZCBHVW5pcXVlT3V0UHRyIGFuZCB1c2UgaXQg
aW5zdGVhZCBvZiBHT3duUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjc1NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVc2UgR1VuaXF1ZU91dFB0ciBpbnN0ZWFkIG9mIEdPd25QdHIuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChjcmVhdGVLZXlQcmVz
c0V2ZW50KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9nb2JqZWN0L0dVbmlx
dWVQdHIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cmV0dXJuT3V0Q2hhcik6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvVGVzdENvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0SW5zcGVjdG9yU2VydmVyLmNwcDoKKyAgICAgICAgKHRl
c3RJbnNwZWN0b3JTZXJ2ZXJQYWdlTGlzdCk6CisgICAgICAgIChvcGVuUmVtb3RlRGVidWdnaW5n
U2Vzc2lvbik6CisgICAgICAgIChzZW5kSW5jb21wbGV0ZVJlcXVlc3QpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0UmVzb3VyY2VzLmNwcDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMuY3BwOgor
ICAgICAgICAodGVzdFdlYkV4dGVuc2lvbldpbmRvd09iamVjdENsZWFyZWQpOgorICAgICAgICAo
dGVzdFdlYkV4dGVuc2lvbklzb2xhdGVkV29ybGQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgor
ICAgICAgICAodGVzdFdlYlZpZXdSdW5KYXZhU2NyaXB0KToKKyAgICAgICAgKHRlc3RXZWJWaWV3
U2F2ZSk6CisgICAgICAgICh0ZXN0V2ViVmlld1BhZ2VWaXNpYmlsaXR5KToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXdHcm91cC5jcHA6
CisgICAgICAgIChpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJWaWV3RWRpdG9yLmNwcDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5j
cHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYlByb2Nlc3NU
ZXN0LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2d0ay9JbnB1dE1ldGhvZEZp
bHRlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0SW5wdXRNZXRob2RGaWx0ZXI6
OnNlbmRLZXlFdmVudFRvRmlsdGVyKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2d0ay9QbGF0
Zm9ybVdlYlZpZXdHdGsuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZG9LZXlTdHJva2Up
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvVGVzdE1haW4uaDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYktpdFRlc3RCdXMuY3BwOgor
ICAgICAgICAoV2ViS2l0VGVzdEJ1czo6cnVuKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2d0
ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcDoKKyAgICAgICAgKHJlc291cmNlR2V0RGF0YUNh
bGxiYWNrKToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjprZXlTdHJva2UpOgorICAgICAgICAob25T
bmFwc2hvdFJlYWR5KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRl
clByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bik6
CisKIDIwMTQtMDEtMjMgIHBlYXZvQG91dGxvb2suY29tICA8cGVhdm9Ab3V0bG9vay5jb20+CiAK
ICAgICAgICAgW0N1cmxdIFRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IGNhY2hlIGZvbGRlci4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IDA0MzMz
NWEuLjM5ODQ5MDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVu
ZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVl
LmNwcApAQCAtNTQsNyArNTQsNiBAQAogI2luY2x1ZGUgPGxvY2FsZS5oPgogI2luY2x1ZGUgPHdl
YmtpdC93ZWJraXQuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HbGliVXRpbGl0aWVz
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9ndGsvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDU4MjYwMjcuLmZmNThjNDMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcApAQCAtNDcsNyArNDcsNiBAQAogI2luY2x1
ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4K
ICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIApAQCAtODA1LDcgKzgwNCw3IEBAIHN0YXRpYyBHZGtFdmVudCogY3Jl
YXRlS2V5UHJlc3NFdmVudChKU0NvbnRleHRSZWYgY29udGV4dCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsCiAKICAgICAvLyBXaGVuIHN5bnRoZXNpemluZyBhbiBldmVudCwgYW4gaW52YWxpZCBoYXJk
d2FyZV9rZXljb2RlIHZhbHVlCiAgICAgLy8gY2FuIGNhdXNlIGl0IHRvIGJlIGJhZGx5IHByb2Nl
c3NlZCBieSBHdGsrLgotICAgIEdPd25QdHI8R2RrS2V5bWFwS2V5PiBrZXlzOworICAgIEdVbmlx
dWVPdXRQdHI8R2RrS2V5bWFwS2V5PiBrZXlzOwogICAgIGdpbnQgbktleXM7CiAgICAgaWYgKGdk
a19rZXltYXBfZ2V0X2VudHJpZXNfZm9yX2tleXZhbChnZGtfa2V5bWFwX2dldF9kZWZhdWx0KCks
IGdka0tleVN5bSwgJmtleXMub3V0UHRyKCksICZuS2V5cykpCiAgICAgICAgIHByZXNzRXZlbnQt
PmtleS5oYXJkd2FyZV9rZXljb2RlID0ga2V5cy5nZXQoKVswXS5rZXljb2RlOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvZ29iamVjdC9HVW5pcXVlUHRyLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2dvYmplY3QvR1VuaXF1ZVB0ci5jcHAKaW5k
ZXggN2QyM2I1Ny4uYzgxODRjOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvZ29iamVjdC9HVW5pcXVlUHRyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9nb2JqZWN0L0dVbmlxdWVQdHIuY3BwCkBAIC0xNDUsNCArMTQ1LDYyIEBAIFRFU1Qo
V1RGX0dVbmlxdWVQdHIsIEJhc2ljKQogICAgIGFjdHVhbC5zdHIoIiIpOwogfQogCitzdGF0aWMg
dm9pZCByZXR1cm5PdXRDaGFyKGNoYXIqKiBvdXRDaGFyKQoreworICAgICpvdXRDaGFyID0gZ19z
dHJkdXAoImEiKTsKK30KKworVEVTVChXVEZfR1VuaXF1ZVB0ciwgT3V0UHRyKQoreworICAgIHN0
ZDo6b3N0cmluZ3N0cmVhbSBhY3R1YWw7CisKKyAgICB7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8
Y2hhcj4gYTsKKyAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIGEuZ2V0KCkpOworICAgIH0KKyAg
ICBBU1NFUlRfU1RSRVEoYWN0dWFsLnN0cigpLmNfc3RyKCksIHRha2VMb2dTdHIoKS5jX3N0cigp
KTsKKyAgICBhY3R1YWwuc3RyKCIiKTsKKworICAgIHsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxj
aGFyPiBhOworICAgICAgICByZXR1cm5PdXRDaGFyKCZhLm91dFB0cigpKTsKKyAgICAgICAgYWN0
dWFsIDw8ICJnX2ZyZWUoIiA8PCBhLmdldCgpIDw8ICIpOyI7CisgICAgfQorICAgIEFTU0VSVF9T
VFJFUShhY3R1YWwuc3RyKCkuY19zdHIoKSwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworICAgIGFj
dHVhbC5zdHIoIiIpOworCisgICAgeworICAgICAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IGE7Cisg
ICAgICAgIHJldHVybk91dENoYXIoJmEub3V0UHRyKCkpOworICAgICAgICBhY3R1YWwgPDwgImdf
ZnJlZSgiIDw8IGEuZ2V0KCkgPDwgIik7IjsKKyAgICAgICAgcmV0dXJuT3V0Q2hhcigmYS5vdXRQ
dHIoKSk7CisgICAgICAgIEFTU0VSVF9TVFJFUShhY3R1YWwuc3RyKCkuY19zdHIoKSwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOworICAgICAgICBhY3R1YWwuc3RyKCIiKTsKKyAgICAgICAgYWN0dWFs
IDw8ICJnX2ZyZWUoIiA8PCBhLmdldCgpIDw8ICIpOyI7CisgICAgfQorICAgIEFTU0VSVF9TVFJF
UShhY3R1YWwuc3RyKCkuY19zdHIoKSwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworICAgIGFjdHVh
bC5zdHIoIiIpOworCisgICAgeworICAgICAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IGE7CisgICAg
ICAgIHJldHVybk91dENoYXIoJmEub3V0UHRyKCkpOworICAgICAgICBhY3R1YWwgPDwgImdfZnJl
ZSgiIDw8IGEuZ2V0KCkgPDwgIik7IjsKKyAgICAgICAgYS5yZXNldCgpOworICAgICAgICBBU1NF
UlRfU1RSRVEoYWN0dWFsLnN0cigpLmNfc3RyKCksIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKyAg
ICAgICAgYWN0dWFsLnN0cigiIik7CisgICAgfQorICAgIEFTU0VSVF9TVFJFUShhY3R1YWwuc3Ry
KCkuY19zdHIoKSwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworICAgIGFjdHVhbC5zdHIoIiIpOwor
CisgICAgeworICAgICAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IGE7CisgICAgICAgIHJldHVybk91
dENoYXIoJmEub3V0UHRyKCkpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGIgPSBhLnJlbGVh
c2UoKTsKKyAgICAgICAgQVNTRVJUX1NUUkVRKGFjdHVhbC5zdHIoKS5jX3N0cigpLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CisgICAgICAgIGFjdHVhbCA8PCAiZ19mcmVlKCIgPDwgYi5nZXQoKSA8
PCAiKTsiOworICAgIH0KKyAgICBBU1NFUlRfU1RSRVEoYWN0dWFsLnN0cigpLmNfc3RyKCksIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKKyAgICBhY3R1YWwuc3RyKCIiKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1Rlc3RDb29raWVNYW5hZ2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9UZXN0Q29va2llTWFuYWdlci5jcHAKaW5kZXggYmYzNTFlMS4uMmU5
ODY0NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rl
c3RDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvVGVzdENvb2tpZU1hbmFnZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyB2b2lkIGdldEFjY2VwdFBvbGljeVJlYWR5Q2FsbGJhY2soR09iamVjdCogb2Jq
ZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpCiAgICAgewotICAg
ICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9y
PiBlcnJvcjsKICAgICAgICAgV2ViS2l0Q29va2llQWNjZXB0UG9saWN5IHBvbGljeSA9IHdlYmtp
dF9jb29raWVfbWFuYWdlcl9nZXRfYWNjZXB0X3BvbGljeV9maW5pc2goV0VCS0lUX0NPT0tJRV9N
QU5BR0VSKG9iamVjdCksIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKTsKICAgICAgICAgZ19hc3Nl
cnQoIWVycm9yLmdldCgpKTsKIApAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyB2b2lkIGdldERvbWFpbnNSZWFkeUNhbGxiYWNrKEdPYmplY3QqIG9iamVjdCwgR0FzeW5j
UmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKQogICAgIHsKLSAgICAgICAgR093blB0
cjxHRXJyb3I+IGVycm9yOworICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAg
ICAgICAgIGNoYXIqKiBkb21haW5zID0gd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9kb21haW5z
X3dpdGhfY29va2llc19maW5pc2goV0VCS0lUX0NPT0tJRV9NQU5BR0VSKG9iamVjdCksIHJlc3Vs
dCwgJmVycm9yLm91dFB0cigpKTsKICAgICAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RJbnNw
ZWN0b3JTZXJ2ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rl
c3RJbnNwZWN0b3JTZXJ2ZXIuY3BwCmluZGV4IGE2ODc4MjYuLjI1MjFkMmUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0SW5zcGVjdG9yU2VydmVy
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEluc3Bl
Y3RvclNlcnZlci5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAvLyBTaG91bGQgY29u
dGFpbiBvbmx5IG9uZSBlbnRyeSBwb2ludGluZyB0byBodHRwOi8vMTI3LjAuMC4xOjI5OTkvd2Vi
aW5zcGVjdG9yL01haW4uaHRtbD9wYWdlPTEKIHN0YXRpYyB2b2lkIHRlc3RJbnNwZWN0b3JTZXJ2
ZXJQYWdlTGlzdChJbnNwZWN0b3JTZXJ2ZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewot
ICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJy
b3I7CiAKICAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoR1RLX1dJTkRP
V19UT1BMRVZFTCk7CiAgICAgZ19hc3NlcnQodGVzdC0+Z2V0UGFnZUxpc3QoKSk7CkBAIC0yMjgs
NyArMjI4LDcgQEAgc3RhdGljIHZvaWQgb3BlblJlbW90ZURlYnVnZ2luZ1Nlc3Npb24oSW5zcGVj
dG9yU2VydmVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIGdfYXNzZXJ0KHRlc3Qt
PmdldFBhZ2VMaXN0KCkpOwogCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlx
dWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZh
c2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJw
YWdlc1swXS5pbnNwZWN0b3JVcmw7IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChq
YXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwpAQCAtMjQ3LDcg
KzI0Nyw3IEBAIHN0YXRpYyB2b2lkIG9wZW5SZW1vdGVEZWJ1Z2dpbmdTZXNzaW9uKEluc3BlY3Rv
clNlcnZlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKIHN0YXRpYyB2b2lkIHNlbmRJbmNv
bXBsZXRlUmVxdWVzdChJbnNwZWN0b3JTZXJ2ZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ewotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4g
ZXJyb3I7CiAKICAgICAvLyBDb25uZWN0IHRvIHRoZSBpbnNwZWN0b3Igc2VydmVyLgogICAgIEdS
ZWZQdHI8R1NvY2tldENsaWVudD4gY2xpZW50ID0gYWRvcHRHUmVmKGdfc29ja2V0X2NsaWVudF9u
ZXcoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdFJlc291cmNlcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdFJlc291cmNlcy5jcHAKaW5kZXggM2E0NTlhMC4uYTJlZTk3NyAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RSZXNvdXJjZXMuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0UmVzb3VyY2VzLmNwcApA
QCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCByZXNvdXJjZUdldERh
dGFDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRl
ciB1c2VyRGF0YSkKICAgICB7CiAgICAgICAgIHNpemVfdCBkYXRhU2l6ZTsKLSAgICAgICAgR093
blB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7
CiAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEgPSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9k
YXRhX2ZpbmlzaChXRUJLSVRfV0VCX1JFU09VUkNFKG9iamVjdCksIHJlc3VsdCwgJmRhdGFTaXpl
LCAmZXJyb3Iub3V0UHRyKCkpOwogICAgICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAg
ICAgICBnX2Fzc2VydChkYXRhKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCmluZGV4IDlhMTBlMzcuLjUz
OGQ5ZjFkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdFdlYkV4dGVuc2lvbnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMg
dm9pZCB0ZXN0V2ViRXh0ZW5zaW9uV2luZG93T2JqZWN0Q2xlYXJlZChXZWJWaWV3VGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcgogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48aGVhZGVyPjwvaGVh
ZGVyPjxib2R5PjwvYm9keT48L2h0bWw+IiwgMCk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZp
bmlzaGVkKCk7CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0
cjxHRXJyb3I+IGVycm9yOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRS
ZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIndpbmRvdy5l
Y2hvKCdGb28nKTsiLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRS
ZXN1bHQpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CkBAIC0xMzMsNyArMTMzLDcgQEAg
c3RhdGljIHZvaWQgdGVzdFdlYkV4dGVuc2lvbklzb2xhdGVkV29ybGQoV2ViVmlld1Rlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxoZWFkZXI+PC9o
ZWFkZXI+PGJvZHk+PGRpdiBpZD0nY29uc29sZSc+PC9kaXY+PC9ib2R5PjwvaHRtbD4iLCAwKTsK
ICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAotICAgIEdPd25QdHI8Y2hhcj4g
cmVzdWx0OworICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gcmVzdWx0OwogICAgIGd1bG9uZyBzY3Jp
cHREaWFsb2dJRCA9IGdfc2lnbmFsX2Nvbm5lY3QodGVzdC0+bV93ZWJWaWV3LCAic2NyaXB0LWRp
YWxvZyIsIEdfQ0FMTEJBQ0soc2NyaXB0RGlhbG9nQ2FsbGJhY2spLCAmcmVzdWx0Lm91dFB0cigp
KTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBtYWluV29ybGRTY3JpcHQgPQpAQCAtMTQzLDcg
KzE0Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJFeHRlbnNpb25Jc29sYXRlZFdvcmxkKFdlYlZp
ZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgICAgICAiZG9jdW1lbnQub3BlbigxLCAy
LCAzKTsiOwogICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZChtYWlu
V29ybGRTY3JpcHQsIDApOwogICAgIGdfYXNzZXJ0X2NtcHN0cihyZXN1bHQuZ2V0KCksID09LCAi
TWFpbiBXb3JsZCIpOwotICAgIHJlc3VsdC5jbGVhcigpOworICAgIHJlc3VsdC5yZXNldCgpOwog
CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1
bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NvbnNvbGUnKS5pbm5lckhUTUwiLCAwKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0
KTsKQEAgLTE2NSw3ICsxNjUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uSXNvbGF0
ZWRXb3JsZChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICAgICAgdGVzdCk7
CiAgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOwogICAgIGdfYXNzZXJ0X2Nt
cHN0cihyZXN1bHQuZ2V0KCksID09LCAiSXNvbGF0ZWQgV29ybGQiKTsKLSAgICByZXN1bHQuY2xl
YXIoKTsKKyAgICByZXN1bHQucmVzZXQoKTsKIAogICAgIC8vIENoZWNrIHRoYXQgJ3RvcC5mb28n
IGRlZmluZWQgaW4gbWFpbiB3b3JsZCBpcyBub3QgdmlzaWJsZSBpbiBpc29sYXRlZCB3b3JsZC4K
ICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZp
bmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCIsIDAp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RX
ZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCmluZGV4IDk1YjVjMDEuLjBmNWE4
MjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvVGVzdFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKQEAgLTIzLDcgKzIzLDYg
QEAKICNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAj
aW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogc3RhdGljIFdlYktpdFRl
c3RTZXJ2ZXIqIGtTZXJ2ZXI7CkBAIC0zNiw3ICszNSw2IEBAIHB1YmxpYzoKICAgICBGYXZpY29u
RGF0YWJhc2VUZXN0KCkKICAgICAgICAgOiBtX3dlYkNvbnRleHQod2Via2l0X3dlYl9jb250ZXh0
X2dldF9kZWZhdWx0KCkpCiAgICAgICAgICwgbV9mYXZpY29uKDApCi0gICAgICAgICwgbV9lcnJv
cigwKQogICAgICAgICAsIG1fZmF2aWNvbk5vdGlmaWNhdGlvblJlY2VpdmVkKGZhbHNlKQogICAg
IHsKICAgICAgICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSA9IHdlYmtpdF93ZWJf
Y29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZShtX3dlYkNvbnRleHQpOwpAQCAtODQsNyArODIs
NiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldEZhdmljb25Gb3JQYWdlVVJJQW5kV2FpdFVudGls
UmVhZHkoY29uc3QgY2hhciogcGFnZVVSSSkKICAgICB7Ci0gICAgICAgIG1fZXJyb3IuY2xlYXIo
KTsKICAgICAgICAgaWYgKG1fZmF2aWNvbikgewogICAgICAgICAgICAgY2Fpcm9fc3VyZmFjZV9k
ZXN0cm95KG1fZmF2aWNvbik7CiAgICAgICAgICAgICBtX2Zhdmljb24gPSAwOwpAQCAtOTgsNyAr
OTUsNyBAQCBwdWJsaWM6CiAgICAgV2ViS2l0V2ViQ29udGV4dCogbV93ZWJDb250ZXh0OwogICAg
IGNhaXJvX3N1cmZhY2VfdCogbV9mYXZpY29uOwogICAgIENTdHJpbmcgbV9mYXZpY29uVVJJOwot
ICAgIEdPd25QdHI8R0Vycm9yPiBtX2Vycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBt
X2Vycm9yOwogICAgIGJvb2wgbV9mYXZpY29uTm90aWZpY2F0aW9uUmVjZWl2ZWQ7CiB9OwogCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktp
dFdlYlZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RX
ZWJLaXRXZWJWaWV3LmNwcAppbmRleCA3MzQyYjYwLi5mOWJmNjMyIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmll
dy5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdSdW5KYXZhU2Ny
aXB0KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPmxvYWRIdG1s
KGh0bWwsIDApOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCi0gICAgR093
blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAg
ICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2
YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ1dlYktpdExpbmsnKS50aXRsZTsiLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0
KGphdmFzY3JpcHRSZXN1bHQpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CkBAIC0xNDQs
NyArMTQ0LDYgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdSdW5KYXZhU2NyaXB0KFdlYlZpZXdU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5y
dW5KYXZhU2NyaXB0RnJvbUdSZXNvdXJjZUFuZFdhaXRVbnRpbEZpbmlzaGVkKCIvd3JvbmcvcGF0
aC90by9yZXNvdXJjZS5qcyIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoIWphdmFz
Y3JpcHRSZXN1bHQpOwogICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBHX1JFU09VUkNF
X0VSUk9SLCBHX1JFU09VUkNFX0VSUk9SX05PVF9GT1VORCk7Ci0gICAgZXJyb3IuY2xlYXIoKTsK
IAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGls
RmluaXNoZWQoImZvbygpOyIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoIWphdmFz
Y3JpcHRSZXN1bHQpOwpAQCAtMzQ2LDcgKzM0NSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2
b2lkIHdlYlZpZXdTYXZlZFRvU3RyZWFtQ2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNS
ZXN1bHQqIHJlc3VsdCwgU2F2ZVdlYlZpZXdUZXN0KiB0ZXN0KQogICAgIHsKLSAgICAgICAgR093
blB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7
CiAgICAgICAgIHRlc3QtPm1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYod2Via2l0X3dlYl92aWV3
X3NhdmVfZmluaXNoKHRlc3QtPm1fd2ViVmlldywgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsK
ICAgICAgICAgZ19hc3NlcnQoR19JU19JTlBVVF9TVFJFQU0odGVzdC0+bV9pbnB1dFN0cmVhbS5n
ZXQoKSkpOwogICAgICAgICBnX2Fzc2VydCghZXJyb3IpOwpAQCAtMzU2LDcgKzM1NSw3IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHdlYlZpZXdTYXZlZFRvRmlsZUNhbGxiYWNrKEdPYmpl
Y3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIFNhdmVXZWJWaWV3VGVzdCogdGVzdCkK
ICAgICB7Ci0gICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfc2F2
ZV90b19maWxlX2ZpbmlzaCh0ZXN0LT5tX3dlYlZpZXcsIHJlc3VsdCwgJmVycm9yLm91dFB0cigp
KSk7CiAgICAgICAgIGdfYXNzZXJ0KCFlcnJvcik7CiAKQEAgLTQwNSw3ICs0MDQsNyBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViVmlld1NhdmUoU2F2ZVdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQogICAgIC8vIHN0cmluZ3MgcmVhZCBzaW5jZSB0aGUgJ0RhdGUnIGZpZWxkIGFuZCB0aGUg
Ym91bmRhcmllcyB3aWxsIGJlCiAgICAgLy8gZGlmZmVyZW50IG9uIGVhY2ggY2FzZS4gTUhUTUwg
ZnVuY3Rpb25hbGl0eSB3aWxsIGJlIHRlc3RlZCBieQogICAgIC8vIExheW91dCB0ZXN0cywgc28g
Y2hlY2tpbmcgdGhlIGFtb3VudCBvZiBieXRlcyBpcyBlbm91Z2guCi0gICAgR093blB0cjxHRXJy
b3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBnY2hhciBi
dWZmZXJbNTEyXSA9IHsgMCB9OwogICAgIGdzc2l6ZSByZWFkQnl0ZXMgPSAwOwogICAgIGdzc2l6
ZSB0b3RhbEJ5dGVzRnJvbVN0cmVhbSA9IDA7CkBAIC00NTgsNyArNDU3LDcgQEAgc3RhdGljIHZv
aWQgdGVzdFdlYlZpZXdQYWdlVmlzaWJpbGl0eShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKICAgICAvLyBXYWl0IHVudGlsbCB0aGUgcGFnZSBpcyBsb2FkZWQuIEluaXRpYWwgdmlz
aWJpbGl0eSBzaG91bGQgYmUgJ2hpZGRlbicuCiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlz
aGVkKCk7CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxH
RXJyb3I+IGVycm9yOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1
bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50LnZp
c2liaWxpdHlTdGF0ZTsiLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0KGphdmFzY3Jp
cHRSZXN1bHQpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CkBAIC01MDcsNyArNTA2LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgb25TbmFwc2hvdENhbmNlbGxlZFJlYWR5KFdl
YktpdFdlYlZpZXcqIHdlYl92aWV3LCBHQXN5bmNSZXN1bHQqIHJlcywgU25hcHNob3RXZWJWaWV3
VGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAg
ICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICB0ZXN0LT5tX3N1cmZhY2Ug
PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaCh3ZWJfdmlldywgcmVzLCAmZXJy
b3Iub3V0UHRyKCkpOwogICAgICAgICBnX2Fzc2VydCghdGVzdC0+bV9zdXJmYWNlKTsKICAgICAg
ICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FO
Q0VMTEVEKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9UZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcAppbmRleCA3NDAwOGViLi40NDhh
YmQyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dFdlYktpdFdlYlZpZXdHcm91cC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXAuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAg
c3RhdGljIGJvb2wgaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgoV2ViVmlld1Rlc3Qq
IHRlc3QsIGNvbnN0IGNoYXIqIHBhdGgKICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVS
SUZvclBhdGgocGF0aCkuZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQo
KTsKIAotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJv
cj4gZXJyb3I7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9
IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZChrU3R5bGVTaGVldFRlc3RT
Y3JpcHQsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7
CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwCmluZGV4IDdm
MGEwNjEuLjllNjliZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mkd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJWaWV3RWRpdG9yLmNwcApAQCAtMzgsNyArMzgsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBjYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmRSZWFkeUNh
bGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgRWRpdG9yVGVzdCogdGVzdCkK
ICAgICB7Ci0gICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICB0ZXN0LT5tX2NhbkV4ZWN1dGVFZGl0aW5nQ29t
bWFuZCA9IHdlYmtpdF93ZWJfdmlld19jYW5fZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmRfZmluaXNo
KHRlc3QtPm1fd2ViVmlldywgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOwogICAgICAgICBnX2Fz
c2VydCghZXJyb3IuZ2V0KCkpOwogICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFp
bkxvb3ApOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1dlYkV4dGVuc2lvblRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwCmluZGV4IDJlODAzNGYuLmNjZGQ2ZGMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5z
aW9uVGVzdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CkBAIC0yMzcsNyArMjM2LDcgQEAgc3RhdGljIHZvaWQgYnVzQWNxdWly
ZWRDYWxsYmFjayhHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIqIG5hbWUs
IGcKICAgICBpZiAoIWludHJvc3BlY3Rpb25EYXRhKQogICAgICAgICBpbnRyb3NwZWN0aW9uRGF0
YSA9IGdfZGJ1c19ub2RlX2luZm9fbmV3X2Zvcl94bWwoaW50cm9zcGVjdGlvblhNTCwgMCk7CiAK
LSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVy
cm9yOwogICAgIHVuc2lnbmVkIHJlZ2lzdHJhdGlvbklEID0gZ19kYnVzX2Nvbm5lY3Rpb25fcmVn
aXN0ZXJfb2JqZWN0KAogICAgICAgICBjb25uZWN0aW9uLAogICAgICAgICAiL29yZy93ZWJraXQv
Z3RrL1dlYkV4dGVuc2lvblRlc3QiLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1dlYlByb2Nlc3NUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9XZWJQcm9jZXNzVGVzdC5jcHAKaW5kZXggOGMwMDgzNy4uY2ZmMWEy
NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYlBy
b2Nlc3NUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
V2ViUHJvY2Vzc1Rlc3QuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Rlc3QuaCIKIAogI2luY2x1ZGUgPGdpby9naW8uaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiB0eXBlZGVm
IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OmZ1bmN0aW9uPFBhc3NPd25QdHI8V2ViUHJvY2Vzc1Rlc3Q+
ICgpPj4gVGVzdHNNYXA7CiBzdGF0aWMgVGVzdHNNYXAmIHRlc3RzTWFwKCkKQEAgLTgwLDcgKzgw
LDcgQEAgc3RhdGljIHZvaWQgYnVzQWNxdWlyZWRDYWxsYmFjayhHREJ1c0Nvbm5lY3Rpb24qIGNv
bm5lY3Rpb24sIGNvbnN0IGNoYXIqIG5hbWUsIGcKICAgICBpZiAoIWludHJvc3BlY3Rpb25EYXRh
KQogICAgICAgICBpbnRyb3NwZWN0aW9uRGF0YSA9IGdfZGJ1c19ub2RlX2luZm9fbmV3X2Zvcl94
bWwoaW50cm9zcGVjdGlvblhNTCwgMCk7CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Cisg
ICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIHVuc2lnbmVkIHJlZ2lzdHJhdGlv
bklEID0gZ19kYnVzX2Nvbm5lY3Rpb25fcmVnaXN0ZXJfb2JqZWN0KAogICAgICAgICBjb25uZWN0
aW9uLAogICAgICAgICAiL29yZy93ZWJraXQvZ3RrL1dlYlByb2Nlc3NUZXN0IiwKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvZ3RrL0lucHV0TWV0aG9kRmlsdGVyLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvZ3RrL0lucHV0TWV0aG9kRmlsdGVyLmNwcAppbmRl
eCBiZmNjMTdkLi40YWFiN2MwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L2d0ay9JbnB1dE1ldGhvZEZpbHRlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9ndGsvSW5wdXRNZXRob2RGaWx0ZXIuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAi
V1RGU3RyaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KICNpbmNs
dWRlIDxndGsvZ3RrLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC02NCw3ICs2NCw3IEBA
IHB1YmxpYzoKICAgICAgICAgZ2RrX2V2ZW50X3NldF9kZXZpY2UoZXZlbnQsIGdka19kZXZpY2Vf
bWFuYWdlcl9nZXRfY2xpZW50X3BvaW50ZXIoZ2RrX2Rpc3BsYXlfZ2V0X2RldmljZV9tYW5hZ2Vy
KGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkpKSk7CiAjZW5kaWYKIAotICAgICAgICBHT3duUHRy
PEdka0tleW1hcEtleT4ga2V5czsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxHZGtLZXltYXBLZXk+
IGtleXM7CiAgICAgICAgIGdpbnQgbktleXM7CiAgICAgICAgIGlmIChnZGtfa2V5bWFwX2dldF9l
bnRyaWVzX2Zvcl9rZXl2YWwoZ2RrX2tleW1hcF9nZXRfZGVmYXVsdCgpLCBnZGtLZXlWYWx1ZSwg
JmtleXMub3V0UHRyKCksICZuS2V5cykpCiAgICAgICAgICAgICBldmVudC0+a2V5LmhhcmR3YXJl
X2tleWNvZGUgPSBrZXlzLmdldCgpWzBdLmtleWNvZGU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcAppbmRleCAxMmVlZWQ3Li4wMzE2MDQxIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAKQEAgLTI4
LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0ckd0ay5oPgogI2luY2x1
ZGUgPGd0ay9ndGsuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CiAKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIHZvaWQgZG9LZXlTdHJva2UoR3RrV2lkZ2V0KiB2
aWV3V2lkZ2V0LCB1bnNpZ25lZCBpbnQga2V5VmFsKQogICAgIGdka19ldmVudF9zZXRfZGV2aWNl
KGV2ZW50LmdldCgpLCBnZGtfZGV2aWNlX21hbmFnZXJfZ2V0X2NsaWVudF9wb2ludGVyKGdka19k
aXNwbGF5X2dldF9kZXZpY2VfbWFuYWdlcihndGtfd2lkZ2V0X2dldF9kaXNwbGF5KHZpZXdXaWRn
ZXQpKSkpOwogCiAgICAgLy8gV2hlbiBzeW50aGVzaXppbmcgYW4gZXZlbnQsIGFuIGludmFsaWQg
aGFyZHdhcmVfa2V5Y29kZSB2YWx1ZSBjYW4gY2F1c2UgaXQgdG8gYmUgYmFkbHkgcHJvY2Vzc2Vk
IGJ5IEdUSysuCi0gICAgR093blB0cjxHZGtLZXltYXBLZXk+IGtleXM7CisgICAgR1VuaXF1ZU91
dFB0cjxHZGtLZXltYXBLZXk+IGtleXM7CiAgICAgaW50IGtleXNDb3VudDsKICAgICBpZiAoZ2Rr
X2tleW1hcF9nZXRfZW50cmllc19mb3Jfa2V5dmFsKGdka19rZXltYXBfZ2V0X2RlZmF1bHQoKSwg
a2V5VmFsLCAma2V5cy5vdXRQdHIoKSwgJmtleXNDb3VudCkpCiAgICAgICAgIGV2ZW50LT5rZXku
aGFyZHdhcmVfa2V5Y29kZSA9IGtleXMuZ2V0KClbMF0ua2V5Y29kZTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvVGVzdE1haW4uaCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvVGVzdE1haW4uaAppbmRleCBkNWNlYWU4Li45ZmFiMGIy
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1Rlc3RNYWlu
LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9UZXN0TWFpbi5oCkBA
IC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNpbmNsdWRlIDxnbGliLW9iamVj
dC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3Rr
L1dlYktpdDJHdGsvV2ViS2l0VGVzdEJ1cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9X
ZWJLaXQyR3RrL1dlYktpdFRlc3RCdXMuY3BwCmluZGV4IGQwZGZhZTcuLjM1YmNmMWIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViS2l0VGVzdEJ1cy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJLaXRUZXN0QnVz
LmNwcApAQCAtMjAsNyArMjAsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldl
YktpdFRlc3RCdXMuaCIKIAotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKQEAgLTM4LDggKzM3LDggQEAgYm9vbCBXZWJLaXRUZXN0QnVzOjpydW4oKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgR093blB0cjxjaGFyPiBvdXRwdXQ7Ci0g
ICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gb3V0cHV0
OworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBpZiAoIWdfc3Bhd25fY29t
bWFuZF9saW5lX3N5bmMoZGJ1c0xhdW5jaC5nZXQoKSwgJm91dHB1dC5vdXRQdHIoKSwgMCwgMCwg
JmVycm9yLm91dFB0cigpKSkgewogICAgICAgICBnX3dhcm5pbmcoIkVycm9yIHN0YXJ0aW5nIERC
VVMgZGFlbW9uOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVz
dC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNw
cAppbmRleCBlYjdiMGRmLi4xMTk4YjA4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQg
V2ViVmlld1Rlc3Q6OnNlbGVjdEFsbCgpCiBzdGF0aWMgdm9pZCByZXNvdXJjZUdldERhdGFDYWxs
YmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2Vy
RGF0YSkKIHsKICAgICBzaXplX3QgZGF0YVNpemU7Ci0gICAgR093blB0cjxHRXJyb3I+IGVycm9y
OworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICB1bnNpZ25lZCBjaGFyKiBk
YXRhID0gd2Via2l0X3dlYl9yZXNvdXJjZV9nZXRfZGF0YV9maW5pc2goV0VCS0lUX1dFQl9SRVNP
VVJDRShvYmplY3QpLCByZXN1bHQsICZkYXRhU2l6ZSwgJmVycm9yLm91dFB0cigpKTsKICAgICBn
X2Fzc2VydChkYXRhKTsKIApAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgV2ViVmlld1Rlc3Q6Omtl
eVN0cm9rZSh1bnNpZ25lZCBrZXlWYWwsIHVuc2lnbmVkIGtleU1vZGlmaWVycykKICAgICBldmVu
dC0+a2V5LnN0YXRlID0ga2V5TW9kaWZpZXJzOwogCiAgICAgLy8gV2hlbiBzeW50aGVzaXppbmcg
YW4gZXZlbnQsIGFuIGludmFsaWQgaGFyZHdhcmVfa2V5Y29kZSB2YWx1ZSBjYW4gY2F1c2UgaXQg
dG8gYmUgYmFkbHkgcHJvY2Vzc2VkIGJ5IEdUSysuCi0gICAgR093blB0cjxHZGtLZXltYXBLZXk+
IGtleXM7CisgICAgR1VuaXF1ZU91dFB0cjxHZGtLZXltYXBLZXk+IGtleXM7CiAgICAgaW50IGtl
eXNDb3VudDsKICAgICBpZiAoZ2RrX2tleW1hcF9nZXRfZW50cmllc19mb3Jfa2V5dmFsKGdka19r
ZXltYXBfZ2V0X2RlZmF1bHQoKSwga2V5VmFsLCAma2V5cy5vdXRQdHIoKSwgJmtleXNDb3VudCkp
CiAgICAgICAgIGV2ZW50LT5rZXkuaGFyZHdhcmVfa2V5Y29kZSA9IGtleXMuZ2V0KClbMF0ua2V5
Y29kZTsKQEAgLTQyNSw3ICs0MjUsNyBAQCBib29sIFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVz
dWx0SXNVbmRlZmluZWQoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdAogCiBzdGF0
aWMgdm9pZCBvblNuYXBzaG90UmVhZHkoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIEdBc3luY1Jl
c3VsdCogcmVzLCBXZWJWaWV3VGVzdCogdGVzdCkKIHsKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJy
b3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIHRlc3QtPm1fc3VyZmFj
ZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoKHdlYl92aWV3LCByZXMsICZl
cnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoIXRlc3QtPm1fc3VyZmFjZSB8fCAhZXJyb3Iu
Z2V0KCkpOwogICAgIGlmIChlcnJvcikKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9n
dGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKaW5kZXggMzgwNDM4Yy4uNWQ3YzIwYyAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAK
QEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgogI2luY2x1ZGUg
PGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdUUiB7CkBAIC0y
OTUsNyArMjk1LDcgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUmVm
IGtleVJlZiwgV0tFdmVudE1vZGlmaWVycyB3a01vZGlmaWVycywKICAgICBnX29iamVjdF9yZWYo
cHJlc3NFdmVudC0+a2V5LndpbmRvdyk7CiAgICAgZ2RrX2V2ZW50X3NldF9kZXZpY2UocHJlc3NF
dmVudCwgZ2RrX2RldmljZV9tYW5hZ2VyX2dldF9jbGllbnRfcG9pbnRlcihnZGtfZGlzcGxheV9n
ZXRfZGV2aWNlX21hbmFnZXIoZ2RrX3dpbmRvd19nZXRfZGlzcGxheShwcmVzc0V2ZW50LT5rZXku
d2luZG93KSkpKTsKIAotICAgIEdPd25QdHI8R2RrS2V5bWFwS2V5PiBrZXlzOworICAgIEdVbmlx
dWVPdXRQdHI8R2RrS2V5bWFwS2V5PiBrZXlzOwogICAgIGdpbnQgbktleXM7CiAgICAgaWYgKGdk
a19rZXltYXBfZ2V0X2VudHJpZXNfZm9yX2tleXZhbChnZGtfa2V5bWFwX2dldF9kZWZhdWx0KCks
IGdka0tleVN5bSwgJmtleXMub3V0UHRyKCksICZuS2V5cykpCiAgICAgICAgIHByZXNzRXZlbnQt
PmtleS5oYXJkd2FyZV9rZXljb2RlID0ga2V5cy5nZXQoKVswXS5rZXljb2RlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222093</attachid>
            <date>2014-01-24 05:44:15 -0800</date>
            <delta_ts>2014-01-28 06:15:42 -0800</delta_ts>
            <desc>Fixed coding style issues</desc>
            <filename>wk-unique-out-ptr2.diff</filename>
            <type>text/plain</type>
            <size>86329</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggY2UwMDFkMS4uODZkOTJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNC0wMS0yNCAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dM
SUJdIEFkZCBHVW5pcXVlT3V0UHRyIGFuZCB1c2UgaXQgaW5zdGVhZCBvZiBHT3duUHRyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc1NTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHVW5pcXVlT3V0UHRy
IGlzIGEgc2ltcGxpZmllZCB2ZXJzaW9uIG9mIEdPd25QdHIgZm9yIHRoZSBjYXNlcworICAgICAg
ICB3aGVyZSB3ZSBuZWVkIHRoZSBhZGRyZXNzIG9mIHRoZSBjb250YWluZWQgcG9pbnRlci4gR1Vu
aXF1ZU91dFB0cgorICAgICAgICB1c2VzIEdVbmlxdWVQdHIgdG8gZnJlZSB0aGUgY29udGFpbmVk
IG9iamVjdCBhbmQgdG8gcmVsZWFzZSB0aGUKKyAgICAgICAgY29udGFpbmVyIHBvaW50ZXIuIFRo
ZSBBUEkgaXMgdmVyeSBzaW1wbGUgdG8gbWFrZSBzdXJlIHRoaXMgaXMKKyAgICAgICAgb25seSB1
c2VkIHdoZW4gb3V0UHRyKCkgaXMgbmVlZGVkLiBJdCBjYW4ndCBiZSBjb25zdHJ1Y3RlZCB3aXRo
IGEKKyAgICAgICAgcG9pbnRlciwgYW5kIHRoZXJlJ3Mgbm90IG1ldGhvZCB0byBzZXQgYSBuZXcg
cG9pbnRlci4gQW5vdGhlcgorICAgICAgICBkaWZmZXJlbmNlIHdpdGggdGhlIG9sZCBHT3duUHRy
IGlzIHRoYXQgb3V0UHRyKCkgY2FuIGJlIHVzZWQKKyAgICAgICAgbXVsdGlwbGUgdGltZXMsIGJl
Y2F1c2UgaXQgZnJlZXMgYW55IHBvaW50ZXIgcHJldmlvdXNseSBzZXQuCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVmbC5jbWFrZToKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogd3RmL2dvYmplY3QvR093
blB0ci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd3RmL2dvYmplY3QvR093blB0ci5oOiBSZW1v
dmVkLgorICAgICAgICAqIHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaDoKKyAgICAgICAgKFdURjo6
R1VuaXF1ZU91dFB0cjo6R1VuaXF1ZU91dFB0cik6CisgICAgICAgIChXVEY6OkdVbmlxdWVPdXRQ
dHI6On5HVW5pcXVlT3V0UHRyKToKKyAgICAgICAgKFdURjo6R1VuaXF1ZU91dFB0cjo6b3V0UHRy
KToKKyAgICAgICAgKFdURjo6R1VuaXF1ZU91dFB0cjo6cmVzZXQpOgorICAgICAgICAoV1RGOjpH
VW5pcXVlT3V0UHRyOjpyZWxlYXNlKToKKyAgICAgICAgKFdURjo6R1VuaXF1ZU91dFB0cjo6b3Bl
cmF0b3IqKToKKyAgICAgICAgKFdURjo6R1VuaXF1ZU91dFB0cjo6b3BlcmF0b3ItPik6CisgICAg
ICAgIChXVEY6OkdVbmlxdWVPdXRQdHI6OmdldCk6CisgICAgICAgIChXVEY6OkdVbmlxdWVPdXRQ
dHI6Om9wZXJhdG9yISk6CisgICAgICAgIChXVEY6OkdVbmlxdWVPdXRQdHI6Om9wZXJhdG9yIFVu
c3BlY2lmaWVkQm9vbFR5cGUpOgorCiAyMDE0LTAxLTIyICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFVwZGF0ZSBwcm9qZWN0IGFuZCBzb2x1dGlv
biBmaWxlcyBmb3IgNjQtYml0IGJ1aWxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA0NTNl
MTk5Li42YjQzOTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0K
KysrIGIvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yMDksOCArMjA5LDYgQEAg
d3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL2R0b2Evc3RydG9kLmggXAogICAg
IFNvdXJjZS9XVEYvd3RmL2R0b2EvdXRpbHMuaCBcCiAgICAgU291cmNlL1dURi93dGYvZ29iamVj
dC9HTXV0ZXhMb2NrZXIuaCBcCi0gICAgU291cmNlL1dURi93dGYvZ29iamVjdC9HT3duUHRyLmNw
cCBcCi0gICAgU291cmNlL1dURi93dGYvZ29iamVjdC9HT3duUHRyLmggXAogICAgIFNvdXJjZS9X
VEYvd3RmL2dvYmplY3QvR1JlZlB0ci5jcHAgXAogICAgIFNvdXJjZS9XVEYvd3RmL2dvYmplY3Qv
R1JlZlB0ci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dUeXBlZGVmcy5oIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZTEwYTQ0Mi4uYjRlMjEwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1FZmwuY21ha2UKQEAgLTQsNyArNCw2IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAg
ICAgZWZsL1JlZlB0ckVmbC5jcHAKICAgICBlZmwvUnVuTG9vcEVmbC5jcHAKIAotICAgIGdvYmpl
Y3QvR093blB0ci5jcHAKICAgICBnb2JqZWN0L0dSZWZQdHIuY3BwCiApCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZv
cm1HVEsuY21ha2UKaW5kZXggMzJlMWZlYi4uNzAyNjJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsu
Y21ha2UKQEAgLTEsNSArMSw0IEBACiBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwotICAgIGdvYmpl
Y3QvR093blB0ci5jcHAKICAgICBnb2JqZWN0L0dSZWZQdHIuY3BwCiAgICAgZ29iamVjdC9HbGli
VXRpbGl0aWVzLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dPd25Q
dHIuY3BwIGIvU291cmNlL1dURi93dGYvZ29iamVjdC9HT3duUHRyLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNTkzNTZkNi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9n
b2JqZWN0L0dPd25QdHIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgotICoKLSAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwot
ICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdPd25QdHIuaCIKLQot
I2lmIFVTRShHTElCKQotCi0jaW5jbHVkZSA8Z2lvL2dpby5oPgotI2luY2x1ZGUgPGdsaWIuaD4K
LQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlIDw+IFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGZyZWVPd25lZEdQdHI8R0Vycm9yPihHRXJyb3IqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAg
ICAgICBnX2Vycm9yX2ZyZWUocHRyKTsKLX0KLQotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRH
UHRyPEdMaXN0PihHTGlzdCogcHRyKQotewotICAgIGdfbGlzdF9mcmVlKHB0cik7Ci19Ci0KLXRl
bXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxHU0xpc3Q+KEdTTGlzdCogcHRyKQotewotICAg
IGdfc2xpc3RfZnJlZShwdHIpOwotfQotCi10ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8
R1BhdHRlcm5TcGVjPihHUGF0dGVyblNwZWMqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAgICAg
ICBnX3BhdHRlcm5fc3BlY19mcmVlKHB0cik7Ci19Ci0KLXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93
bmVkR1B0cjxHRGlyPihHRGlyKiBwdHIpCi17Ci0gICAgaWYgKHB0cikKLSAgICAgICAgZ19kaXJf
Y2xvc2UocHRyKTsKLX0KLQotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdUaW1lcj4o
R1RpbWVyKiBwdHIpCi17Ci0gICAgaWYgKHB0cikKLSAgICAgICAgZ190aW1lcl9kZXN0cm95KHB0
cik7Ci19Ci0KLXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxHS2V5RmlsZT4oR0tleUZp
bGUqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAgICAgICBnX2tleV9maWxlX2ZyZWUocHRyKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBVU0UoR0xJQikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR093blB0ci5oIGIvU291cmNlL1dURi93dGYvZ29i
amVjdC9HT3duUHRyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMjYyM2IuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvZ29iamVjdC9HT3duUHRyLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxNDQgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogIENvcHlyaWdodCAoQykgMjAwOCBDb2xs
YWJvcmEgTHRkLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0g
KgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBHT3duUHRyX2gKLSNkZWZpbmUgR093
blB0cl9oCi0KLSNpZiBVU0UoR0xJQikKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1leHRl
cm4gIkMiIHZvaWQgZ19mcmVlKHZvaWQqKTsKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBmcmVlT3duZWRHUHRyKFQqIHB0cik7Ci10ZW1wbGF0
ZTw+IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGZyZWVPd25lZEdQdHI8R0Vycm9yPihHRXJyb3Iq
KTsKLXRlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdMaXN0PihHTGlzdCopOwotdGVtcGxh
dGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8R1NMaXN0PihHU0xpc3QqKTsKLXRlbXBsYXRlPD4gdm9p
ZCBmcmVlT3duZWRHUHRyPEdQYXR0ZXJuU3BlYz4oR1BhdHRlcm5TcGVjKik7Ci10ZW1wbGF0ZTw+
IHZvaWQgZnJlZU93bmVkR1B0cjxHRGlyPihHRGlyKik7Ci10ZW1wbGF0ZTw+IHZvaWQgZnJlZU93
bmVkR1B0cjxHVGltZXI+KEdUaW1lciopOwotdGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8
R0tleUZpbGU+KEdLZXlGaWxlKik7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBHT3du
UHRyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHT3duUHRyKTsKLXB1YmxpYzoKLSAgICBl
eHBsaWNpdCBHT3duUHRyKFQqIHB0ciA9IDApIDogbV9wdHIocHRyKSB7IH0KLSAgICB+R093blB0
cigpIHsgZnJlZU93bmVkR1B0cihtX3B0cik7IH0KLQotICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHRyOyB9Ci0gICAgVCogcmVsZWFzZSgpCi0gICAgewotICAgICAgICBUKiBwdHIgPSBt
X3B0cjsKLSAgICAgICAgbV9wdHIgPSAwOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQot
ICAgIFQqJiBvdXRQdHIoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX3B0cik7Ci0gICAgICAg
IHJldHVybiBtX3B0cjsKLSAgICB9Ci0KLSAgICB2b2lkIHNldChUKiBwdHIpCi0gICAgewotICAg
ICAgICBBU1NFUlQoIXB0ciB8fCBtX3B0ciAhPSBwdHIpOwotICAgICAgICBmcmVlT3duZWRHUHRy
KG1fcHRyKTsKLSAgICAgICAgbV9wdHIgPSBwdHI7Ci0gICAgfQotCi0gICAgdm9pZCBjbGVhcigp
Ci0gICAgewotICAgICAgICBUKiBwdHIgPSBtX3B0cjsKLSAgICAgICAgbV9wdHIgPSAwOwotICAg
ICAgICBmcmVlT3duZWRHUHRyKHB0cik7Ci0gICAgfQotCi0gICAgVCYgb3BlcmF0b3IqKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3B0cik7Ci0gICAgICAgIHJldHVybiAqbV9wdHI7
Ci0gICAgfQotCi0gICAgVCogb3BlcmF0b3ItPigpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NF
UlQobV9wdHIpOwotICAgICAgICByZXR1cm4gbV9wdHI7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVy
YXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0KLQotICAgIC8vIFRoaXMgY29udmVyc2lv
biBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8g
b3RoZXIgaW50ZWdlciB0eXBlcy4KLSAgICB0eXBlZGVmIFQqIEdPd25QdHI6OipVbnNwZWNpZmll
ZEJvb2xUeXBlOwotICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3B0ciA/ICZHT3duUHRyOjptX3B0ciA6IDA7IH0KLQotICAgIHZvaWQgc3dhcChHT3du
UHRyJiBvKSB7IHN0ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7IH0KLQotcHJpdmF0ZToKLSAgICBU
KiBtX3B0cjsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBzd2FwKEdP
d25QdHI8VD4mIGEsIEdPd25QdHI8VD4mIGIpCi17Ci0gICAgYS5zd2FwKGIpOwotfQotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBHT3duUHRyPFQ+JiBhLCBVKiBiKQoteyAKLSAgICByZXR1cm4gYS5nZXQoKSA9PSBiOyAKLX0K
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9y
PT0oVCogYSwgY29uc3QgR093blB0cjxVPiYgYikgCi17Ci0gICAgcmV0dXJuIGEgPT0gYi5nZXQo
KTsgCi19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IEdPd25QdHI8VD4mIGEsIFUqIGIpCi17Ci0gICAgcmV0dXJuIGEuZ2V0
KCkgIT0gYjsgCi19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KFQqIGEsIGNvbnN0IEdPd25QdHI8VT4mIGIpCi17IAotICAgIHJldHVy
biBhICE9IGIuZ2V0KCk7IAotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHR5cGVu
YW1lIEdPd25QdHI8VD46OlB0clR5cGUgZ2V0UHRyKGNvbnN0IEdPd25QdHI8VD4mIHApCi17Ci0g
ICAgcmV0dXJuIHAuZ2V0KCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9p
ZCBmcmVlT3duZWRHUHRyKFQqIHB0cikKLXsKLSAgICBnX2ZyZWUocHRyKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6R093blB0cjsKLQotI2VuZGlmIC8vIFVTRShHTElC
KQotCi0jZW5kaWYgLy8gR093blB0cl9oCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dv
YmplY3QvR1VuaXF1ZVB0ci5oIGIvU291cmNlL1dURi93dGYvZ29iamVjdC9HVW5pcXVlUHRyLmgK
aW5kZXggMjI3MTgxMi4uY2UxZjFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ29iamVj
dC9HVW5pcXVlUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvZ29iamVjdC9HVW5pcXVlUHRyLmgK
QEAgLTI0LDYgKzI0LDcgQEAKICNpZiBVU0UoR0xJQikKIAogI2luY2x1ZGUgPGdpby9naW8uaD4K
KyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTU3
LDkgKzU4LDY4IEBAIHVzaW5nIEdVbmlxdWVQdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8VCwgR1B0ckRl
bGV0ZXI8VD4+OwogRk9SX0VBQ0hfR0xJQl9ERUxFVEVSKFdURl9ERUZJTkVfR1BUUl9ERUxFVEVS
KQogI3VuZGVmIEZPUl9FQUNIX0dMSUJfREVMRVRFUgogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgR1VuaXF1ZU91dFB0ciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR1VuaXF1ZU91
dFB0cik7CitwdWJsaWM6CisgICAgR1VuaXF1ZU91dFB0cigpCisgICAgICAgIDogbV9wdHIobnVs
bHB0cikKKyAgICB7CisgICAgfQorCisgICAgfkdVbmlxdWVPdXRQdHIoKQorICAgIHsKKyAgICAg
ICAgcmVzZXQoKTsKKyAgICB9CisKKyAgICBUKiYgb3V0UHRyKCkKKyAgICB7CisgICAgICAgIHJl
c2V0KCk7CisgICAgICAgIHJldHVybiBtX3B0cjsKKyAgICB9CisKKyAgICB2b2lkIHJlc2V0KCkK
KyAgICB7CisgICAgICAgIGlmIChtX3B0cikgeworICAgICAgICAgICAgR1VuaXF1ZVB0cjxUPiBk
ZWxldGVQdHIobV9wdHIpOworICAgICAgICAgICAgbV9wdHIgPSBudWxscHRyOworICAgICAgICB9
CisgICAgfQorCisgICAgR1VuaXF1ZVB0cjxUPiByZWxlYXNlKCkKKyAgICB7CisgICAgICAgIEdV
bmlxdWVQdHI8VD4gcHRyKG1fcHRyKTsKKyAgICAgICAgbV9wdHIgPSBudWxscHRyOworICAgICAg
ICByZXR1cm4gcHRyOworICAgIH0KKworICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0CisgICAgewor
ICAgICAgICBBU1NFUlQobV9wdHIpOworICAgICAgICByZXR1cm4gKm1fcHRyOworICAgIH0KKwor
ICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcHRyKTsK
KyAgICAgICAgcmV0dXJuIG1fcHRyOworICAgIH0KKworICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHRyOyB9CisKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3B0
cjsgfQorCisgICAgLy8gVGhpcyBjb252ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBj
b252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBvdGhlciBpbnRlZ2VyIHR5cGVzLgorICAgIHR5
cGVkZWYgVCogR1VuaXF1ZU91dFB0cjo6KlVuc3BlY2lmaWVkQm9vbFR5cGU7CisgICAgb3BlcmF0
b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8gJkdVbmlxdWVP
dXRQdHI6Om1fcHRyIDogMDsgfQorCitwcml2YXRlOgorICAgIFQqIG1fcHRyOworfTsKKwogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6R1VuaXF1ZVB0cjsKK3VzaW5nIFdURjo6R1Vu
aXF1ZU91dFB0cjsKIAogI2VuZGlmIC8vIFVTRShHTElCKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVlMmE3
NjguLjY1ZWNkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBAQAorMjAxNC0wMS0yNCAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dMSUJd
IEFkZCBHVW5pcXVlT3V0UHRyIGFuZCB1c2UgaXQgaW5zdGVhZCBvZiBHT3duUHRyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc1NTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgR1VuaXF1ZU91dFB0
ciBpbnN0ZWFkIG9mIEdPd25QdHIuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtl
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6
OmhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVh
ZGVyOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0JhdHRlcnlQcm92
aWRlclVQb3dlci5jcHA6CisgICAgICAgIChCYXR0ZXJ5UHJvdmlkZXJVUG93ZXI6OnN0YXJ0VXBk
YXRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUdTdHJlYW1lcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNr
UHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmdldFRhZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjps
b2FkUmVzb3VyY2VTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EYXRhT2Jq
ZWN0R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OnNldFVSSUxpc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnJlYWRGcm9tRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3Rr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VHdGs6OnJlYWRDYWxsYmFjayk6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okd0a0lucHV0TWV0aG9kRmlsdGVyOjpoYW5kbGVQcmVlZGl0Q2hhbmdlZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6ZmlsbERhdGFPYmplY3RGcm9tRHJvcERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZUd0azo6c3lzdGVtRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1NoYXJlZEJ1ZmZlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ndGsv
Q3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVkZW50aWFs
Rm9yQ2hhbGxlbmdlQXN5bmNSZWFkeUNhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvR093blB0clNvdXAuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9HT3duUHRyU291cC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVk
aXJlY3RTa2lwQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6bmV4dE11bHRpcGFydFJlc3Bv
bnNlUGFydENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OnNlbmRSZXF1ZXN0Q2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6YWRkRmlsZVRvU291cE1lc3NhZ2VCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVNvdXBSZXF1ZXN0QW5kTWVzc2FnZUZvckhhbmRsZSk6CisgICAgICAg
IChXZWJDb3JlOjpyZWFkQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291
cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0
cmVhbUhhbmRsZTo6cGxhdGZvcm1TZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVh
bUhhbmRsZTo6cGxhdGZvcm1DbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpjb25uZWN0ZWRDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpyZWFkUmVhZHlDYWxsYmFjayk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246Omh0dHBQcm94eSk6CisKIDIwMTQtMDEtMjMgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
IEF2b2lkIHVubmVjZXNzYXJ5IHN0cmluZyBkdXBsaWNhdGlvbnMgaW4gRmlsZVN5c3RlbUd0awpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNWNlYmJjNi4uMTJmN2VjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC01OTI3LDggKzU5MjcsNiBAQCBwbGF0Zm9ybV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFu
c2FjdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQldy
aXRlQmF0Y2guaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCV3Jp
dGVCYXRjaC5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3du
UHRyU291cC5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3du
UHRyU291cC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlT
ZXJ2ZXJTb3VwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlRXJyb3IuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlRXJyb3JTb3VwLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDcxMDVl
YzQuLjc1NTQxOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xNTcsNyArMTU3LDYg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9DcmVkZW50
aWFsU3RvcmFnZVNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3Bw
Ci0gICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25QdHJTb3VwLmNwcAogICAgIHBsYXRmb3Jt
L25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAogICAgIHBsYXRmb3Jt
L25ldHdvcmsvc291cC9Qcm94eVJlc29sdmVyU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUHJveHlTZXJ2ZXJTb3VwLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBk
ZmUzOGNjLi5hZDRiYzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTE1LDcgKzEx
NSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsv
c291cC9Db29raWVTdG9yYWdlU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3Jl
ZGVudGlhbFN0b3JhZ2VTb3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3Vw
LmNwcAotICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5jcHAKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlSZXNvbHZlclNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKQEAgLTI0NCw3ICsyNDMsNiBAQCBsaXN0KEFQ
UEVORCBXZWJDb3JlUGxhdGZvcm1HVEtfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvc291
cC9Db29raWVTdG9yYWdlU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVu
dGlhbFN0b3JhZ2VTb3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNw
cAotICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5jcHAKICAgICBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKICAgICBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUHJveHlSZXNvbHZlclNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyLmNwcAppbmRleCA4MTYyNDk0Li4yNWRkY2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVz
dGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC0yNCwxMiArMjQsMTIgQEAKIAogI2luY2x1ZGUgIkF1
ZGlvQ2hhbm5lbC5oIgogI2luY2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKLSNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJl
YW1lci5oIgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9wYnV0
aWxzLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTE1MCw4ICsxNTAsOCBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXI6OmZpbmlzaEJ1aWxkaW5nUGlwZWxpbmVBZnRlcldhdlBhcnNlclBhZFJlYWR5KEdzdAog
CiBnYm9vbGVhbiBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1l
c3NhZ2UqIG1lc3NhZ2UpCiB7Ci0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOwotICAgIEdPd25Q
dHI8Z2NoYXI+IGRlYnVnOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBH
VW5pcXVlT3V0UHRyPGdjaGFyPiBkZWJ1ZzsKIAogICAgIHN3aXRjaCAoR1NUX01FU1NBR0VfVFlQ
RShtZXNzYWdlKSkgewogICAgIGNhc2UgR1NUX01FU1NBR0VfV0FSTklORzoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1
ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKaW5kZXggOGUxNGQzMS4uZTY4N2U1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJl
YWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKQEAgLTMwLDggKzMwLDggQEAKICNp
bmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1VuaXF1ZVB0ci5oPgogCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+CiAKQEAgLTIw
Myw4ICsyMDMsOCBAQCBHc3RGbG93UmV0dXJuIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlU2FtcGxl
KEdzdEFwcFNpbmsqIHNpbmspCiAKIGdib29sZWFuIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlTWVz
c2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogewotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsK
LSAgICBHT3duUHRyPGdjaGFyPiBkZWJ1ZzsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJy
b3I7CisgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gZGVidWc7CiAKICAgICBzd2l0Y2ggKEdTVF9N
RVNTQUdFX1RZUEUobWVzc2FnZSkpIHsKICAgICBjYXNlIEdTVF9NRVNTQUdFX0VPUzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvQmF0dGVyeVByb3ZpZGVyVVBvd2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvQmF0dGVyeVByb3ZpZGVyVVBvd2Vy
LmNwcAppbmRleCA2YTlmMWJmLi5lZmM4MDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL0JhdHRlcnlQcm92aWRlclVQb3dlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9CYXR0ZXJ5UHJvdmlkZXJVUG93ZXIuY3BwCkBAIC0yNSw3ICsyNSw3
IEBACiAjaW5jbHVkZSAiQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50LmgiCiAjaW5jbHVkZSA8
Y21hdGg+CiAjaW5jbHVkZSA8bGltaXRzPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCkBAIC01MSw3ICs1MSw3IEBAIHZvaWQgQmF0dGVyeVByb3ZpZGVyVVBvd2Vy
OjpzdGFydFVwZGF0aW5nKCkKICAgICBBU1NFUlQoIW1fdXBvd2VyQ2xpZW50KTsKICAgICBtX3Vw
b3dlckNsaWVudCA9IGFkb3B0R1JlZih1cF9jbGllbnRfbmV3KCkpOwogCi0gICAgR093blB0cjxH
RXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBpZiAo
IXVwX2NsaWVudF9lbnVtZXJhdGVfZGV2aWNlc19zeW5jKG1fdXBvd2VyQ2xpZW50LmdldCgpLCAw
LCAmZXJyb3Iub3V0UHRyKCkpKSB7CiAgICAgICAgIG1fY2xpZW50LT51cGRhdGVCYXR0ZXJ5U3Rh
dHVzKE5vdEF2YWlsYWJsZSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0
aWxpdGllcy5jcHAKaW5kZXggYzk2MzMwYy4uYTZhYWUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
clV0aWxpdGllcy5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKIAogI2luY2x1ZGUgPGdzdC9hdWRpby9h
dWRpby5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3du
UHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCBib29sIGluaXRpYWxpemVHU3RyZWFtZXIo
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCi0gICAgR093blB0cjxHRXJyb3I+IGVy
cm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIHByb2JhYmx5IHBhc3MgdGhlIGFyZ3VtZW50cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUu
CiAgICAgYm9vbCBnc3RJbml0aWFsaXplZCA9IGdzdF9pbml0X2NoZWNrKDAsIDAsICZlcnJvci5v
dXRQdHIoKSk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShnc3RJbml0aWFsaXplZCwgIkdTdHJl
YW1lciBpbml0aWFsaXphdGlvbiBmYWlsZWQ6ICVzIiwgZXJyb3IgPyBlcnJvci0+bWVzc2FnZSA6
ICJ1bmtub3duIGVycm9yIG9jY3VycmVkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGM0YTBmZDguLjEwMTEwNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zNyw3ICszNyw2
IEBACiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGdzdC9wYnV0aWxzL21pc3Npbmct
cGx1Z2lucy5oPgogI2luY2x1ZGUgPGxpbWl0cz4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtOTQ1LDggKzk0NCw4IEBAIFBhc3NSZWZQdHI8VGltZVJh
bmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCgpIGNvbnN0CiAKIGdi
b29sZWFuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNz
YWdlKiBtZXNzYWdlKQogewotICAgIEdPd25QdHI8R0Vycm9yPiBlcnI7Ci0gICAgR093blB0cjxn
Y2hhcj4gZGVidWc7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycjsKKyAgICBHVW5pcXVl
T3V0UHRyPGdjaGFyPiBkZWJ1ZzsKICAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIGVycm9y
OwogICAgIGJvb2wgaXNzdWVFcnJvciA9IHRydWU7CiAgICAgYm9vbCBhdHRlbXB0TmV4dExvY2F0
aW9uID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5j
cHAKaW5kZXggYTZmOTI3Zi4uNDVmNGZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZh
dGVCYXNlR1N0cmVhbWVyLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIlRyYWNrUHJp
dmF0ZUJhc2UuaCIKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPGdzdC9nc3Qu
aD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1VuaXF1ZVB0ci5oPgogCiBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tZWRp
YV9wbGF5ZXJfZGVidWcpOwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X21lZGlhX3Bs
YXllcl9kZWJ1ZwpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lcjo6bm90aWZ5VHJhY2tPZkFjdGl2ZUNoYW5nZWQoKQogCiBib29sIFRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXI6OmdldFRhZyhHc3RUYWdMaXN0KiB0YWdzLCBjb25zdCBnY2hhciogdGFnTmFt
ZSwgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBHT3duUHRyPGdjaGFyPiB0YWdWYWx1ZTsKKyAgICBH
VW5pcXVlT3V0UHRyPGdjaGFyPiB0YWdWYWx1ZTsKICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9z
dHJpbmcodGFncywgdGFnTmFtZSwgJnRhZ1ZhbHVlLm91dFB0cigpKSkgewogICAgICAgICBJTkZP
X01FRElBX01FU1NBR0UoIlRyYWNrICVkIGdvdCAlcyAlcy4iLCBtX2luZGV4LCB0YWdOYW1lLCB0
YWdWYWx1ZS5nZXQoKSk7CiAgICAgICAgIHZhbHVlID0gdGFnVmFsdWUuZ2V0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3Rr
LmNwcAppbmRleCA3NjZmNmM1Li43OGE2MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHAKQEAgLTI1LDE0ICsy
NSwxNCBAQAogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlIDxjYWlyby5o
PgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBl
bmNvZGVJbWFnZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IGRvdWJsZSogcXVhbGl0eSwgR093blB0cjxnY2hhcj4mIGJ1ZmZlciwgZ3NpemUm
IGJ1ZmZlclNpemUpCitzdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShjYWlyb19zdXJmYWNlX3QqIHN1
cmZhY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVhbGl0eSwgR1Vu
aXF1ZU91dFB0cjxnY2hhcj4mIGJ1ZmZlciwgZ3NpemUmIGJ1ZmZlclNpemUpCiB7CiAgICAgLy8g
TGlzdCBvZiBzdXBwb3J0ZWQgaW1hZ2UgZW5jb2RpbmcgdHlwZXMgY29tZXMgZnJvbSB0aGUgR2Rr
UGl4YnVmIGRvY3VtZW50YXRpb24uCiAgICAgLy8gaHR0cDovL2RldmVsb3Blci5nbm9tZS5vcmcv
Z2RrLXBpeGJ1Zi9zdGFibGUvZ2RrLXBpeGJ1Zi1GaWxlLXNhdmluZy5odG1sI2dkay1waXhidWYt
c2F2ZS10by1idWZmZXJ2CkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyBib29sIGVuY29kZUltYWdl
KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QK
ICAgICBpZiAoIXBpeGJ1ZikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgR093blB0cjxH
RXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBpZiAo
dHlwZSA9PSAianBlZyIgJiYgcXVhbGl0eSAmJiAqcXVhbGl0eSA+PSAwLjAgJiYgKnF1YWxpdHkg
PD0gMS4wKSB7CiAgICAgICAgIFN0cmluZyBxdWFsaXR5U3RyaW5nID0gU3RyaW5nOjpmb3JtYXQo
IiVkIiwgc3RhdGljX2Nhc3Q8aW50PigqcXVhbGl0eSAqIDEwMC4wICsgMC41KSk7CiAgICAgICAg
IGdka19waXhidWZfc2F2ZV90b19idWZmZXIocGl4YnVmLmdldCgpLCAmYnVmZmVyLm91dFB0cigp
LCAmYnVmZmVyU2l6ZSwgdHlwZS51dGY4KCkuZGF0YSgpLCAmZXJyb3Iub3V0UHRyKCksICJxdWFs
aXR5IiwgcXVhbGl0eVN0cmluZy51dGY4KCkuZGF0YSgpLCBOVUxMKTsKQEAgLTc5LDcgKzc5LDcg
QEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgZG91YmxlKiBxdWFsaXR5LCBDb28KIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3Ry
eTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAotICAg
IEdPd25QdHI8Z2NoYXI+IGJ1ZmZlcjsKKyAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBidWZmZXI7
CiAgICAgZ3NpemUgYnVmZmVyU2l6ZTsKICAgICBpZiAoIWVuY29kZUltYWdlKG1fZGF0YS5tX3N1
cmZhY2UuZ2V0KCksIG1pbWVUeXBlLCBxdWFsaXR5LCBidWZmZXIsIGJ1ZmZlclNpemUpKQogICAg
ICAgICByZXR1cm4gImRhdGE6LCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ltYWdlR3RrLmNwcAppbmRleCAyZTdjNDRjLi42MjA4ZjdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKQEAgLTMw
LDcgKzMwLDYgQEAKICNpbmNsdWRlICJHVW5pcXVlUHRyR3RrLmgiCiAjaW5jbHVkZSAiR2RrQ2Fp
cm9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDxjYWlyby5oPgpAQCAtNjcs
NyArNjYsNyBAQCBzdGF0aWMgQ1N0cmluZyBnZXRUaGVtZUljb25GaWxlTmFtZShjb25zdCBjaGFy
KiBuYW1lLCBpbnQgc2l6ZSkKIAogc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb2Fk
UmVzb3VyY2VTaGFyZWRCdWZmZXIoQ1N0cmluZyBuYW1lKQogewotICAgIEdPd25QdHI8Z2NoYXI+
IGNvbnRlbnQ7CisgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gY29udGVudDsKICAgICBnc2l6ZSBs
ZW5ndGg7CiAgICAgaWYgKCFnX2ZpbGVfZ2V0X2NvbnRlbnRzKG5hbWUuZGF0YSgpLCAmY29udGVu
dC5vdXRQdHIoKSwgJmxlbmd0aCwgMCkpCiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmpl
Y3RHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3Bw
CmluZGV4IDc3MTU1MDAuLmJjMzNiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRGF0YU9iamVjdEd0ay5jcHAKQEAgLTIxLDcgKzIxLDYgQEAKIAogI2luY2x1ZGUgIm1hcmt1
cC5oIgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtMTAyLDcgKzEwMSw3IEBAIHZvaWQgRGF0YU9iamVj
dEd0azo6c2V0VVJJTGlzdChjb25zdCBTdHJpbmcmIHVyaUxpc3RTdHJpbmcpCiAgICAgICAgICAg
ICAgICAgc2V0VVJMID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgR093blB0
cjxHRXJyb3I+IGVycm9yOworICAgICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9y
OwogICAgICAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUoZ19maWxlbmFtZV9mcm9t
X3VyaShsaW5lLnV0ZjgoKS5kYXRhKCksIDAsICZlcnJvci5vdXRQdHIoKSkpOwogICAgICAgICAg
ICAgaWYgKCFlcnJvciAmJiBmaWxlbmFtZSkKICAgICAgICAgICAgICAgICBtX2ZpbGVuYW1lcy5h
cHBlbmQoU3RyaW5nOjpmcm9tVVRGOChmaWxlbmFtZS5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwCmluZGV4IDdmYjAwNjkuLjZhOTE2MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAKQEAg
LTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgog
I2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR2xpYlV0aWxpdGllcy5oPgpA
QCAtMzM0LDcgKzMzMyw3IEBAIGludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFu
ZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogCiBpbnQgcmVhZEZyb21GaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAg
R093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsK
ICAgICBkbyB7CiAgICAgICAgIGdzc2l6ZSBieXRlc1JlYWQgPSBnX2lucHV0X3N0cmVhbV9yZWFk
KGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsIGxlbmd0aCwg
MCwgJmVycm9yLm91dFB0cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HYW1lcGFkc0d0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR2FtZXBh
ZHNHdGsuY3BwCmluZGV4IDQ0MmJiZWUuLjM3Zjg0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgPGd1
ZGV2L2d1ZGV2Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTgwLDcgKzc5LDcgQEAgR2FtZXBh
ZERldmljZUd0azo6fkdhbWVwYWREZXZpY2VHdGsoKQogZ2Jvb2xlYW4gR2FtZXBhZERldmljZUd0
azo6cmVhZENhbGxiYWNrKEdPYmplY3QqIHBvbGxhYmxlU3RyZWFtLCBncG9pbnRlciBkYXRhKQog
ewogICAgIEdhbWVwYWREZXZpY2VHdGsqIGdhbWVwYWREZXZpY2UgPSByZWludGVycHJldF9jYXN0
PEdhbWVwYWREZXZpY2VHdGsqPihkYXRhKTsKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Cisg
ICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIHN0cnVjdCBqc19ldmVudCBldmVu
dDsKIAogICAgIGdzc2l6ZSBsZW4gPSBnX3BvbGxhYmxlX2lucHV0X3N0cmVhbV9yZWFkX25vbmJs
b2NraW5nKEdfUE9MTEFCTEVfSU5QVVRfU1RSRUFNKHBvbGxhYmxlU3RyZWFtKSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtJbnB1dE1ldGhvZEZpbHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrSW5wdXRNZXRob2RGaWx0ZXIuY3BwCmlu
ZGV4IDBhMDI2NjUuLjhhNTJiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtJbnB1dE1ldGhvZEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmNwcApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1
ZGUgPGdkay9nZGtrZXlzeW1zLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogLy8gVGhlIFdpbmRvd3MgY29tcG9zaXRp
b24ga2V5IGV2ZW50IGNvZGUgaXMgMjk5IG9yIFZLX1BST0NFU1NLRVkuIFdlIG5lZWQgdG8KIC8v
IGVtaXQgdGhpcyBjb2RlIGZvciB3ZWIgY29tcGF0aWJpbGl0eSByZWFzb25zIHdoZW4ga2V5IGV2
ZW50cyB0cmlnZ2VyCkBAIC0zMTcsNyArMzE3LDcgQEAgdm9pZCBHdGtJbnB1dE1ldGhvZEZpbHRl
cjo6aGFuZGxlUHJlZWRpdENoYW5nZWQoKQogICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBHT3duUHRyPGdjaGFyPiBuZXdQcmVlZGl0OworICAgIEdVbmlxdWVPdXRQ
dHI8Z2NoYXI+IG5ld1ByZWVkaXQ7CiAgICAgZ3RrX2ltX2NvbnRleHRfZ2V0X3ByZWVkaXRfc3Ry
aW5nKG1fY29udGV4dC5nZXQoKSwgJm5ld1ByZWVkaXQub3V0UHRyKCksIDAsICZtX2N1cnNvck9m
ZnNldCk7CiAKICAgICBpZiAobV9wcmV2ZW50TmV4dENvbW1pdCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCmluZGV4IDU1NzM0MTYuLjg5
YjlmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJk
SGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhl
bHBlci5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5j
bHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1
ZVB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yNTksMTggKzI1OCwxMyBAQCB2b2lk
IFBhc3RlYm9hcmRIZWxwZXI6OmZpbGxEYXRhT2JqZWN0RnJvbURyb3BEYXRhKEd0a1NlbGVjdGlv
bkRhdGEqIGRhdGEsIGd1aW50CiAgICAgfSBlbHNlIGlmICh0YXJnZXQgPT0gdW5rbm93bkF0b20p
IHsKICAgICAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9uZXdfcGFy
c2VkKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGd0a19zZWxlY3Rpb25fZGF0YV9nZXRf
ZGF0YShkYXRhKSkpOwogCi0gICAgICAgIEdPd25QdHI8Z2NoYXI+IGtleTsKLSAgICAgICAgR093
blB0cjxnY2hhcj4gdmFsdWU7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IGtleTsKKyAg
ICAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gdmFsdWU7CiAgICAgICAgIEdWYXJpYW50SXRlciBp
dGVyOwogCiAgICAgICAgIGdfdmFyaWFudF9pdGVyX2luaXQoJml0ZXIsIHZhcmlhbnQuZ2V0KCkp
OwotICAgICAgICB3aGlsZSAoZ192YXJpYW50X2l0ZXJfbmV4dCgmaXRlciwgIntzc30iLCAma2V5
Lm91dFB0cigpLCAmdmFsdWUub3V0UHRyKCkpKSB7CisgICAgICAgIHdoaWxlIChnX3ZhcmlhbnRf
aXRlcl9uZXh0KCZpdGVyLCAie3NzfSIsICZrZXkub3V0UHRyKCksICZ2YWx1ZS5vdXRQdHIoKSkp
CiAgICAgICAgICAgICBkYXRhT2JqZWN0LT5zZXRVbmtub3duVHlwZURhdGEoa2V5LmdldCgpLCB2
YWx1ZS5nZXQoKSk7Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgR093blB0ciBiZSBz
bWFydGVyIGFib3V0IHRoaXMgYW5kIHJlcGxhY2UgdGhlIGV4aXN0aW5nIHB0ciB3aGVuIG91dFB0
cigpIGlzIHVzZWQ/Ci0gICAgICAgICAgICBrZXkuY2xlYXIoKTsKLSAgICAgICAgICAgIHZhbHVl
LmNsZWFyKCk7Ci0gICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4IDYyOWU4ZDYuLjU1YzQzOWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtMzAs
NyArMzAsNiBAQAogI2luY2x1ZGUgIkZpbGVMaXN0LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dP
d25QdHIuaD4KICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgogI2luY2x1ZGUgIkd0a1ZlcnNpb25pbmcuaCIKQEAgLTQ4LDYgKzQ3LDcgQEAKICNpbmNs
dWRlIDxnZGsvZ2RrLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4K
KyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiAjaWYgRU5BQkxFKFBST0dSRVNTX0VMRU1FTlQpCkBAIC00NDQsNyArNDQ0
LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUd0azo6c3lzdGVtRm9udChDU1NWYWx1ZUlELCBGb250RGVz
Y3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikgY28KICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
VGhpcyB3aWxsIGJlIGEgZm9udCBzZWxlY3Rpb24gc3RyaW5nIGxpa2UgIlNhbnMgMTAiIHNvIHdl
IGNhbm5vdCB1c2UgaXQgYXMgdGhlIGZhbWlseSBuYW1lLgotICAgIEdPd25QdHI8Z2NoYXI+IGZv
bnROYW1lOworICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IGZvbnROYW1lOwogICAgIGdfb2JqZWN0
X2dldChzZXR0aW5ncywgImd0ay1mb250LW5hbWUiLCAmZm9udE5hbWUub3V0UHRyKCksIE5VTEwp
OwogCiAgICAgUGFuZ29Gb250RGVzY3JpcHRpb24qIHBhbmdvRGVzY3JpcHRpb24gPSBwYW5nb19m
b250X2Rlc2NyaXB0aW9uX2Zyb21fc3RyaW5nKGZvbnROYW1lLmdldCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRCdWZmZXJHdGsuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAKaW5kZXggYzdiNGYyNy4u
ZWQ4ZGU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1
ZmZlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZl
ckd0ay5jcHAKQEAgLTIwLDcgKzIwLDcgQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAog
I2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAogI2luY2x1ZGUgPGdsaWIuaD4KQEAgLTM0LDkgKzM0LDkgQEAgUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KGNvbnN0IFN0cmluZyYgZmkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBDU3RyaW5nIGZpbGVu
YW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKLSAgICBHT3duUHRyPGdj
aGFyPiBjb250ZW50czsKKyAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBjb250ZW50czsKICAgICBn
c2l6ZSBzaXplOwotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRy
PEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVfZ2V0X2NvbnRlbnRzKGZpbGVuYW1lLmRh
dGEoKSwgJmNvbnRlbnRzLm91dFB0cigpLCAmc2l6ZSwgJmVycm9yLm91dFB0cigpKSkgewogICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMg
LSAlcyIsIGZpbGVuYW1lRm9yRGlzcGxheShmaWxlUGF0aCkudXRmOCgpLmRhdGEoKSwgZXJyb3It
Pm1lc3NhZ2UpOwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvZ3RrL0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAK
aW5kZXggMTQxMjAwMi4uMDg2ZGJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKQEAg
LTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPGxp
YnNlY3JldC9zZWNyZXQuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNlbmRpZgpAQCAtNzcsNyArNzYsNyBA
QCBzdGF0aWMgdm9pZCBjcmVkZW50aWFsRm9yQ2hhbGxlbmdlQXN5bmNSZWFkeUNhbGxiYWNrKFNl
Y3JldFNlcnZpY2UqIHNlcnZpY2UsIEdBcwogICAgIHZvaWQqIGRhdGEgPSBjYWxsYmFja0RhdGEt
PmRhdGE7CiAgICAgZGVsZXRlIGNhbGxiYWNrRGF0YTsKIAotICAgIEdPd25QdHI8R0Vycm9yPiBl
cnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1VuaXF1ZVB0cjxH
TGlzdD4gZWxlbWVudHMoc2VjcmV0X3NlcnZpY2Vfc2VhcmNoX2ZpbmlzaChzZXJ2aWNlLCBhc3lu
Y1Jlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgaWYgKGVycm9yIHx8ICFlbGVtZW50cyB8
fCAhZWxlbWVudHMtPmRhdGEpIHsKICAgICAgICAgY2FsbGJhY2soQ3JlZGVudGlhbCgpLCBkYXRh
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3du
UHRyU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0
clNvdXAuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YmI0NGIzLi4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykg
MjAxMCBJZ2FsaWEgUy5MCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwot
ICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqLwotCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHT3duUHRyU291cC5oIgotCi0jaW5jbHVkZSA8bGli
c291cC9zb3VwLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZSA8PiB2b2lkIGZyZWVP
d25lZEdQdHI8U291cFVSST4oU291cFVSSSogcHRyKQotewotICAgIGlmIChwdHIpCi0gICAgICAg
IHNvdXBfdXJpX2ZyZWUocHRyKTsKLX0KLQotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRy
PFNvdXBDb29raWU+KFNvdXBDb29raWUqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAgICAgICBz
b3VwX2Nvb2tpZV9mcmVlKHB0cik7Ci19Ci0KLXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0
cjxTb3VwTWVzc2FnZUhlYWRlcnM+KFNvdXBNZXNzYWdlSGVhZGVycyogcHRyKQotewotICAgIGlm
IChwdHIpCi0gICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2ZyZWUocHRyKTsKLX0KLQotdGVt
cGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPFNvdXBCdWZmZXI+KFNvdXBCdWZmZXIqIHB0cikK
LXsKLSAgICBpZiAocHRyKQotICAgICAgICBzb3VwX2J1ZmZlcl9mcmVlKHB0cik7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL0dPd25QdHJTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvR093blB0clNvdXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUyNTNi
ZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093
blB0clNvdXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiAgQ29weXJp
Z2h0IChDKSAyMDEwIElnYWxpYSBTLkwKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBHT3duUHRyU291cF9o
Ci0jZGVmaW5lIEdPd25QdHJTb3VwX2gKLQotLy8gV2UgbmVlZCB0byBpbmNsdWRlIGxpYnNvdXAg
aGVhZGVycyBoZXJlIGJlY2F1c2UgdGhlIHdheSB0aGF0IFNvdXBCdWZmZXIKLS8vIGlzIGRlZmlu
ZWQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBmb3J3YXJkIGRlY2xhcmF0aW9uLgotI2luY2x1ZGUg
PGxpYnNvdXAvc291cC5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KLQotbmFt
ZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPFNvdXBVUkk+KFNv
dXBVUkkqIHB0cik7Ci10ZW1wbGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxTb3VwQ29va2llPihT
b3VwQ29va2llKiBwdHIpOwotdGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8U291cE1lc3Nh
Z2VIZWFkZXJzPihTb3VwTWVzc2FnZUhlYWRlcnMqKTsKLXRlbXBsYXRlPD4gdm9pZCBmcmVlT3du
ZWRHUHRyPFNvdXBCdWZmZXI+KFNvdXBCdWZmZXIqKTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHAKaW5kZXggN2E2Nzc2ZS4uZmIxNDk3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5j
cHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJDb29raWVKYXJTb3VwLmgiCiAjaW5jbHVk
ZSAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVk
ZSAiR093blB0clNvdXAuaCIKKyNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUg
IkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUg
Ik1JTUVUeXBlUmVnaXN0cnkuaCIKQEAgLTU2LDcgKzU2LDYgQEAKICNpbmNsdWRlIDx1bmlzdGQu
aD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgot
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgpAQCAtNTA1LDcgKzUwNCw3IEBAIHN0YXRpYyB2b2lkIHJlZGlyZWN0U2tp
cENhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqIGFzeW5jUmVzdWx0LCBncG9pbnRlciBk
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Cisg
ICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIFJlc291cmNlSGFuZGxlSW50ZXJu
YWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7CiAgICAgZ3NzaXplIGJ5dGVzU2tpcHBlZCA9
IGdfaW5wdXRfc3RyZWFtX3NraXBfZmluaXNoKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGFzeW5j
UmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGlmIChlcnJvcikgewpAQCAtNjExLDcgKzYx
MCw3IEBAIHN0YXRpYyB2b2lkIG5leHRNdWx0aXBhcnRSZXNwb25zZVBhcnRDYWxsYmFjayhHT2Jq
ZWN0KiAvKnNvdXJjZSovLCBHQXN5bmNSZXN1bHQqCiAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKICAgICBBU1NFUlQoIWQtPm1faW5wdXRTdHJl
YW0pOwogCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vy
cm9yPiBlcnJvcjsKICAgICBkLT5tX2lucHV0U3RyZWFtID0gYWRvcHRHUmVmKHNvdXBfbXVsdGlw
YXJ0X2lucHV0X3N0cmVhbV9uZXh0X3BhcnRfZmluaXNoKGQtPm1fbXVsdGlwYXJ0SW5wdXRTdHJl
YW0uZ2V0KCksIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7CiAKICAgICBpZiAoZXJyb3IpIHsK
QEAgLTY1OCw3ICs2NTcsNyBAQCBzdGF0aWMgdm9pZCBzZW5kUmVxdWVzdENhbGxiYWNrKEdPYmpl
Y3QqLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgZGF0YSkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRy
PEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHSW5wdXRTdHJlYW0+IGlucHV0U3RyZWFtID0g
YWRvcHRHUmVmKHNvdXBfcmVxdWVzdF9zZW5kX2ZpbmlzaChkLT5tX3NvdXBSZXF1ZXN0LmdldCgp
LCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBo
YW5kbGUtPmNsaWVudCgpLT5kaWRGYWlsKGhhbmRsZS5nZXQoKSwgUmVzb3VyY2VFcnJvcjo6aHR0
cEVycm9yKHNvdXBNZXNzYWdlLCBlcnJvci5nZXQoKSwgZC0+bV9zb3VwUmVxdWVzdC5nZXQoKSkp
OwpAQCAtNzI4LDcgKzcyNyw3IEBAIHN0YXRpYyB2b2lkIGNvbnRpbnVlQWZ0ZXJEaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKIAogc3RhdGljIGJvb2wgYWRkRmlsZVRv
U291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGZpbGVO
YW1lU3RyaW5nLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoVG9TZW5kLCB1bnNpZ25lZCBs
b25nJiB0b3RhbEJvZHlTaXplKQogewotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBH
VW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgQ1N0cmluZyBmaWxlTmFtZSA9IGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlTmFtZVN0cmluZyk7CiAgICAgR01hcHBlZEZpbGUqIGZp
bGVNYXBwaW5nID0gZ19tYXBwZWRfZmlsZV9uZXcoZmlsZU5hbWUuZGF0YSgpLCBmYWxzZSwgJmVy
cm9yLm91dFB0cigpKTsKICAgICBpZiAoZXJyb3IpCkBAIC05OTEsMTIgKzk5MCwxMSBAQCBzdGF0
aWMgYm9vbCBjcmVhdGVTb3VwUmVxdWVzdEFuZE1lc3NhZ2VGb3JIYW5kbGUoUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSwgY29uc3QgUgogewogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBo
YW5kbGUtPmdldEludGVybmFsKCk7CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0KICAg
ICBHVW5pcXVlUHRyPFNvdXBVUkk+IHNvdXBVUkkocmVxdWVzdC5zb3VwVVJJKCkpOwogICAgIGlm
ICghc291cFVSSSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgR1VuaXF1ZU91dFB0cjxH
RXJyb3I+IGVycm9yOwogICAgIGQtPm1fc291cFJlcXVlc3QgPSBhZG9wdEdSZWYoc291cF9zZXNz
aW9uX3JlcXVlc3RfdXJpKGQtPnNvdXBTZXNzaW9uKCksIHNvdXBVUkkuZ2V0KCksICZlcnJvci5v
dXRQdHIoKSkpOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBkLT5tX3NvdXBSZXF1ZXN0LmNs
ZWFyKCk7CkBAIC0xMzE0LDcgKzEzMTIsNyBAQCBzdGF0aWMgdm9pZCByZWFkQ2FsbGJhY2soR09i
amVjdCosIEdBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQsIGdwb2ludGVyIGRhdGEpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1
ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGdzc2l6ZSBieXRlc1JlYWQgPSBnX2lucHV0X3N0
cmVhbV9yZWFkX2ZpbmlzaChkLT5tX2lucHV0U3RyZWFtLmdldCgpLCBhc3luY1Jlc3VsdCwgJmVy
cm9yLm91dFB0cigpKTsKIAogICAgIGlmIChlcnJvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNvdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNv
dXAuY3BwCmluZGV4IDU1MDhmMzYuLmMwMmI2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291
cC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKICNpbmNsdWRlIDxnbGliLmg+CiAKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKICNkZWZpbmUgUkVBRF9CVUZGRVJfU0laRSAxMDI0CkBAIC0xNjgsNyArMTY4LDcgQEAgaW50
IFNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBs
ZW5ndGgpCiAgICAgaWYgKCFtX291dHB1dFN0cmVhbSB8fCAhZGF0YSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJy
b3I+IGVycm9yOwogICAgIGdzc2l6ZSB3cml0dGVuID0gZ19wb2xsYWJsZV9vdXRwdXRfc3RyZWFt
X3dyaXRlX25vbmJsb2NraW5nKG1fb3V0cHV0U3RyZWFtLmdldCgpLCBkYXRhLCBsZW5ndGgsIDAs
ICZlcnJvci5vdXRQdHIoKSk7CiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIGlmIChnX2Vycm9y
X21hdGNoZXMoZXJyb3IuZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfV09VTERfQkxPQ0sp
KQpAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybUNs
b3NlKCkKICAgICBzdG9wV2FpdGluZ0ZvclNvY2tldFdyaXRhYmlsaXR5KCk7CiAKICAgICBpZiAo
bV9zb2NrZXRDb25uZWN0aW9uKSB7Ci0gICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAg
ICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICBnX2lvX3N0cmVhbV9j
bG9zZShHX0lPX1NUUkVBTShtX3NvY2tldENvbm5lY3Rpb24uZ2V0KCkpLCAwLCAmZXJyb3Iub3V0
UHRyKCkpOwogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkRmFp
bFNvY2tldFN0cmVhbSh0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcihlcnJvci0+Y29kZSwgZXJyb3It
Pm1lc3NhZ2UpKTsKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6
c3RvcFdhaXRpbmdGb3JTb2NrZXRXcml0YWJpbGl0eSgpCiBzdGF0aWMgdm9pZCBjb25uZWN0ZWRD
YWxsYmFjayhHU29ja2V0Q2xpZW50KiBjbGllbnQsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lk
KiBpZCkKIHsKICAgICAvLyBBbHdheXMgZmluaXNoIHRoZSBjb25uZWN0aW9uLCBldmVuIGlmIHRo
aXMgU29ja2V0U3RyZWFtSGFuZGxlIHdhcyBkZWFjdGl2YXRlZCBlYXJsaWVyLgotICAgIEdPd25Q
dHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAg
R1NvY2tldENvbm5lY3Rpb24qIHNvY2tldENvbm5lY3Rpb24gPSBnX3NvY2tldF9jbGllbnRfY29u
bmVjdF90b19ob3N0X2ZpbmlzaChjbGllbnQsIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKTsKIAog
ICAgIC8vIFRoZSBTb2NrZXRTdHJlYW1IYW5kbGUgaGFzIGJlZW4gZGVhY3RpdmF0ZWQsIHNvIGp1
c3QgY2xvc2UgdGhlIGNvbm5lY3Rpb24sIGlnbm9yaW5nIGVycm9ycy4KQEAgLTI2OCw3ICsyNjgs
NyBAQCBzdGF0aWMgdm9pZCBjb25uZWN0ZWRDYWxsYmFjayhHU29ja2V0Q2xpZW50KiBjbGllbnQs
IEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKgogc3RhdGljIHZvaWQgcmVhZFJlYWR5Q2FsbGJh
Y2soR0lucHV0U3RyZWFtKiBzdHJlYW0sIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiBpZCkK
IHsKICAgICAvLyBBbHdheXMgZmluaXNoIHRoZSByZWFkLCBldmVuIGlmIHRoaXMgU29ja2V0U3Ry
ZWFtSGFuZGxlIHdhcyBkZWFjdGl2YXRlZCBlYXJsaWVyLgotICAgIEdPd25QdHI8R0Vycm9yPiBl
cnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgZ3NzaXplIGJ5dGVz
UmVhZCA9IGdfaW5wdXRfc3RyZWFtX3JlYWRfZmluaXNoKHN0cmVhbSwgcmVzdWx0LCAmZXJyb3Iu
b3V0UHRyKCkpOwogCiAgICAgU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUgPSBnZXRIYW5kbGVG
cm9tSWQoaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA0ZjgzNzk2Li5hNDM3OWNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdv
cmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
U291cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJDb29raWVKYXJTb3VwLmgiCi0jaW5j
bHVkZSAiR093blB0clNvdXAuaCIKKyNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgPGxp
YnNvdXAvc291cC5oPgpAQCAtMjA4LDcgKzIwOCw3IEBAIGNoYXIqIFNvdXBOZXR3b3JrU2Vzc2lv
bjo6aHR0cFByb3h5KCkgY29uc3QKICAgICBpZiAoIXNvdXBSZXNvbHZlcikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBHT3duUHRyPFNvdXBVUkk+IHVyaTsKKyAgICBHVW5pcXVlT3V0
UHRyPFNvdXBVUkk+IHVyaTsKICAgICBnX29iamVjdF9nZXQoc291cFJlc29sdmVyLCBTT1VQX1BS
T1hZX1JFU09MVkVSX1dLX1BST1hZX1VSSSwgJnVyaS5vdXRQdHIoKSwgbnVsbHB0cik7CiAKICAg
ICByZXR1cm4gdXJpID8gc291cF91cmlfdG9fc3RyaW5nKHVyaS5nZXQoKSwgRkFMU0UpIDogbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA1YjY5MjY2Li40MjU4NmFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTQtMDEtMjQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTElCXSBBZGQgR1VuaXF1ZU91dFB0ciBh
bmQgdXNlIGl0IGluc3RlYWQgb2YgR093blB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXNlIEdVbmlxdWVPdXRQdHIgaW5zdGVhZCBvZiBHT3duUHRy
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZCk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRHdGsuY3BwOgorICAg
ICAgICAqIHdlYmtpdC93ZWJraXRkb3dubG9hZC5jcHA6CisgICAgICAgICh3ZWJraXRfZG93bmxv
YWRfb3Blbl9zdHJlYW1fZm9yX3VyaSk6CisgICAgICAgICh3ZWJraXRfZG93bmxvYWRfc2V0X2Rl
c3RpbmF0aW9uX3VyaSk6CisgICAgICAgICh3ZWJraXRfZG93bmxvYWRfcmVjZWl2ZWRfZGF0YSk6
CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnBsdWdpbi5jcHA6CisgICAgICAgICh3ZWJraXRf
d2ViX3BsdWdpbl9nZXRfcGF0aCk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2V4cG9zZV9ldmVudCk6CisKIDIwMTQtMDEtMjIg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
TElCXSBVc2UgR1VuaXF1ZVB0ciBpbnN0ZWFkIG9mIEdPd25QdHIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApp
bmRleCAyYTI0NmE3Li4zNWM2ODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC05NSw3ICs5NSw2
IEBACiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5j
bHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0xMDQ1LDcgKzEwNDQsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogICAgIGlmICghZXJyb3JGaWxlKQogICAgICAgICBjb250ZW50ID0g
bWFrZVN0cmluZygiPGh0bWw+PGJvZHk+Iiwgd2ViRXJyb3ItPm1lc3NhZ2UsICI8L2JvZHk+PC9o
dG1sPiIpOwogICAgIGVsc2UgewotICAgICAgICBHT3duUHRyPGdjaGFyPiBmaWxlQ29udGVudDsK
KyAgICAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gZmlsZUNvbnRlbnQ7CiAgICAgICAgIGlmICgh
Z19maWxlX2xvYWRfY29udGVudHMoZXJyb3JGaWxlLmdldCgpLCAwLCAmZmlsZUNvbnRlbnQub3V0
UHRyKCksIDAsIDAsIDApKQogICAgICAgICAgICAgY29udGVudCA9IG1ha2VTdHJpbmcoIjxodG1s
Pjxib2R5PiIsIHdlYkVycm9yLT5tZXNzYWdlLCAiPC9ib2R5PjwvaHRtbD4iKTsKICAgICAgICAg
ZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENo
ZWNrZXJDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4
dENoZWNrZXJDbGllbnRHdGsuY3BwCmluZGV4IDIzMjM4ZjQuLmY5NGQwODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVu
dEd0ay5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJ3ZWJraXRzcGVsbGNoZWNrZXIu
aCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJzZXR0aW5nc3ByaXZhdGUuaCIKICNpbmNsdWRlIDxnbGli
Lmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdGRvd25sb2FkLmNwcAppbmRleCBhMzk5YmYwLi43ZDY0NGNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkb3dubG9hZC5jcHAKQEAgLTM5LDggKzM5
LDggQEAKICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlv
Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiAjaWZkZWYgRVJST1IKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0
X2Rvd25sb2FkX29wZW5fc3RyZWFtX2Zvcl91cmkoV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkLCBj
bwogCiAgICAgV2ViS2l0RG93bmxvYWRQcml2YXRlKiBwcml2ID0gZG93bmxvYWQtPnByaXY7CiAg
ICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl91cmkodXJp
KSk7Ci0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9y
PiBlcnJvcjsKIAogICAgIGlmIChhcHBlbmQpCiAgICAgICAgIHByaXYtPm91dHB1dFN0cmVhbSA9
IGdfZmlsZV9hcHBlbmRfdG8oZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCBOVUxMLCAm
ZXJyb3Iub3V0UHRyKCkpOwpAQCAtNzA1LDcgKzcwNSw3IEBAIHZvaWQgd2Via2l0X2Rvd25sb2Fk
X3NldF9kZXN0aW5hdGlvbl91cmkoV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkLCBjb25zdCBnY2hh
cioKIAogICAgICAgICBHUmVmUHRyPEdGaWxlPiBzcmMgPSBhZG9wdEdSZWYoZ19maWxlX25ld19m
b3JfdXJpKHByaXYtPmRlc3RpbmF0aW9uVVJJKSk7CiAgICAgICAgIEdSZWZQdHI8R0ZpbGU+IGRl
c3QgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfdXJpKGRlc3RpbmF0aW9uX3VyaSkpOwotICAg
ICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9y
PiBlcnJvcjsKIAogICAgICAgICBnX2ZpbGVfbW92ZShzcmMuZ2V0KCksIGRlc3QuZ2V0KCksIEdf
RklMRV9DT1BZX0JBQ0tVUCwgMCwgMCwgMCwgJmVycm9yLm91dFB0cigpKTsKIApAQCAtODY1LDcg
Kzg2NSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb3dubG9hZF9yZWNlaXZlZF9kYXRhKFdlYktp
dERvd25sb2FkKiBkb3dubG9hZCwgY29uc3QgZ2NoYXIqCiAgICAgQVNTRVJUKHByaXYtPm91dHB1
dFN0cmVhbSk7CiAKICAgICBnc2l6ZSBieXRlc193cml0dGVuOwotICAgIEdPd25QdHI8R0Vycm9y
PiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAKICAgICBnX291dHB1
dF9zdHJlYW1fd3JpdGVfYWxsKEdfT1VUUFVUX1NUUkVBTShwcml2LT5vdXRwdXRTdHJlYW0pLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNfd3JpdHRl
biwgTlVMTCwgJmVycm9yLm91dFB0cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJwbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnBsdWdpbi5jcHAKaW5kZXggY2VjNjE0Zi4uYzcxNjJkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBsdWdpbi5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNp
bmNsdWRlICJ3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnBsdWdp
bnByaXZhdGUuaCIKICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgotI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAK
IC8qKgogICogU0VDVElPTjp3ZWJraXR3ZWJwbHVnaW4KQEAgLTE5Miw3ICsxOTIsNyBAQCBjb25z
dCBjaGFyKiB3ZWJraXRfd2ViX3BsdWdpbl9nZXRfcGF0aChXZWJLaXRXZWJQbHVnaW4qIHBsdWdp
bikKICAgICBpZiAocHJpdi0+cGF0aCkKICAgICAgICAgcmV0dXJuIHByaXYtPnBhdGguZ2V0KCk7
CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+
IGVycm9yOwogICAgIHByaXYtPnBhdGgucmVzZXQoZ19maWxlbmFtZV9mcm9tX3V0ZjgocHJpdi0+
Y29yZVBsdWdpbi0+cGF0aCgpLnV0ZjgoKS5kYXRhKCksIC0xLCAwLCAwLCAmZXJyb3Iub3V0UHRy
KCkpKTsKIAogICAgIGlmICghZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKaW5kZXggYmJmYzI5OS4uNDc3Y2Q2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMTE4LDcgKzExOCw2IEBACiAjaW5jbHVkZSA8
YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgogI2lu
Y2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJ
RU5UQVRJT04pCkBAIC02NjksNyArNjY4LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3
X3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEcKIHN0
YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZXhwb3NlX2V2ZW50KEd0a1dpZGdldCogd2lk
Z2V0LCBHZGtFdmVudEV4cG9zZSogZXZlbnQpCiB7CiAgICAgaW50IHJlY3RDb3VudDsKLSAgICBH
T3duUHRyPEdka1JlY3RhbmdsZT4gcmVjdHM7CisgICAgR1VuaXF1ZU91dFB0cjxHZGtSZWN0YW5n
bGU+IHJlY3RzOwogICAgIGdka19yZWdpb25fZ2V0X3JlY3RhbmdsZXMoZXZlbnQtPnJlZ2lvbiwg
JnJlY3RzLm91dFB0cigpLCAmcmVjdENvdW50KTsKIAogICAgIFJlZlB0cjxjYWlyb190PiBjciA9
IGFkb3B0UmVmKGdka19jYWlyb19jcmVhdGUoZXZlbnQtPndpbmRvdykpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDdjZDA4ODUuLjQyMzI2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxNC0wMS0y
NCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0dMSUJdIEFkZCBHVW5pcXVlT3V0UHRyIGFuZCB1c2UgaXQgaW5zdGVhZCBvZiBHT3duUHRyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc1NTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgR1VuaXF1
ZU91dFB0ciBpbnN0ZWFkIG9mIEdPd25QdHIuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdldENhY2hlRGlz
a0ZyZWVTaXplKToKKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3Vw
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwOgorICAgICAg
ICAocHJvY2Vzc1BlbmRpbmdJY29uc0ZvclBhZ2VVUkwpOgorICAgICAgICAod2Via2l0X2Zhdmlj
b25fZGF0YWJhc2VfZ2V0X2Zhdmljb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwOgorICAgICAgICAod2Via2l0VVJJU2NoZW1lUmVxdWVz
dFJlYWRDYWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHA6CisgICAgICAgIChnb3RGYXZpY29uQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vz
cy9JbnNwZWN0b3JTZXJ2ZXIvZ3RrL1dlYkluc3BlY3RvclNlcnZlckd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclNlcnZlcjo6cGxhdGZvcm1SZXNvdXJjZUZvclBhdGgpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4pOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwOgorICAg
ICAgICAqIFdlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OmdldENhY2hlRGlza0ZyZWVTaXplKToKKwogMjAxNC0wMS0yMiAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMSUJdIFVzZSBHVW5pcXVl
UHRyIGluc3RlYWQgb2YgR093blB0cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCmluZGV4IDU1YzE0ZmEuLjYy
MDdmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya1Byb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKQEAgLTM3LDggKzM3LDggQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Nl
c3Npb24uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
QEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIHVpbnQ2NF90IGdldENhY2hlRGlza0ZyZWVTaXplKFNv
dXBDYWNoZSogY2FjaGUpCiB7CiAgICAgQVNTRVJUKGNhY2hlKTsKIAotICAgIEdPd25QdHI8Y2hh
cj4gY2FjaGVEaXI7CisgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBjYWNoZURpcjsKICAgICBnX29i
amVjdF9nZXQoR19PQkpFQ1QoY2FjaGUpLCAiY2FjaGUtZGlyIiwgJmNhY2hlRGlyLm91dFB0cigp
LCBOVUxMKTsKICAgICBpZiAoIWNhY2hlRGlyKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAK
aW5kZXggODZjZGNlMy4uNjY4OTdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUhhbmRsZUludGVybmFsLmg+CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgotI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KQEAgLTEwNiw3ICsxMDUsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgU3RyaW5nIGlu
dGVybWVkaWF0ZVVSSSA9IG1fZGVzdGluYXRpb25VUkkgKyAiLndrZG93bmxvYWQiOwogICAgICAg
ICBtX2ludGVybWVkaWF0ZUZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfdXJpKGludGVy
bWVkaWF0ZVVSSS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJv
cjsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICBtX291dHB1
dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVwbGFjZShtX2ludGVybWVkaWF0ZUZpbGUuZ2V0
KCksIDAsIFRSVUUsIEdfRklMRV9DUkVBVEVfTk9ORSwgMCwgJmVycm9yLm91dFB0cigpKSk7CiAg
ICAgICAgIGlmICghbV9vdXRwdXRTdHJlYW0pIHsKICAgICAgICAgICAgIGRvd25sb2FkRmFpbGVk
KHBsYXRmb3JtRG93bmxvYWREZXN0aW5hdGlvbkVycm9yKHJlc3BvbnNlLCBlcnJvci0+bWVzc2Fn
ZSkpOwpAQCAtMTI0LDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIGdz
aXplIGJ5dGVzV3JpdHRlbjsKLSAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgICAg
ICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIGdfb3V0cHV0X3N0cmVhbV93
cml0ZV9hbGwoR19PVVRQVVRfU1RSRUFNKG1fb3V0cHV0U3RyZWFtLmdldCgpKSwgZGF0YSwgbGVu
Z3RoLCAmYnl0ZXNXcml0dGVuLCAwLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgICAgICBpZiAoZXJy
b3IpIHsKICAgICAgICAgICAgIGRvd25sb2FkRmFpbGVkKHBsYXRmb3JtRG93bmxvYWREZXN0aW5h
dGlvbkVycm9yKG1fcmVzcG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CkBAIC0xMzksNyArMTM4LDcg
QEAgcHVibGljOgogCiAgICAgICAgIEFTU0VSVChtX2ludGVybWVkaWF0ZUZpbGUpOwogICAgICAg
ICBHUmVmUHRyPEdGaWxlPiBkZXN0aW5hdGlvbkZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19m
b3JfdXJpKG1fZGVzdGluYXRpb25VUkkudXRmOCgpLmRhdGEoKSkpOwotICAgICAgICBHT3duUHRy
PEdFcnJvcj4gZXJyb3I7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAg
ICAgICAgaWYgKCFnX2ZpbGVfbW92ZShtX2ludGVybWVkaWF0ZUZpbGUuZ2V0KCksIGRlc3RpbmF0
aW9uRmlsZS5nZXQoKSwgR19GSUxFX0NPUFlfTk9ORSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgJmVycm9yLm91dFB0cigpKSkgewogICAgICAgICAgICAgZG93bmxvYWRGYWlsZWQocGxhdGZv
cm1Eb3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsK
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCmluZGV4IGMwMmE4MzQuLjBl
ZGEyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEZhdmljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAtMjksOCArMjksOCBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
VW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwpAQCAtMTY0LDEzICsxNjQsMTMgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Bl
bmRpbmdJY29uc0ZvclBhZ2VVUkwoV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29u
c3QKICAgICBpZiAoIXBlbmRpbmdJY29uUmVxdWVzdHMpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7
CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gaWNvbiA9IGdldEljb25TdXJmYWNlU3luY2hy
b25vdXNseShkYXRhYmFzZSwgcGFnZVVSTCwgJmVycm9yLm91dFB0cigpKTsKIAogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcGVuZGluZ0ljb25SZXF1ZXN0cy0+c2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgR1Rhc2sqIHRhc2sgPSBwZW5kaW5nSWNvblJlcXVlc3RzLT5hdChpKS5nZXQoKTsKICAg
ICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgZ190YXNrX3JldHVybl9lcnJvcih0YXNrLCBl
cnJvci5yZWxlYXNlKCkpOworICAgICAgICAgICAgZ190YXNrX3JldHVybl9lcnJvcih0YXNrLCBl
cnJvci5yZWxlYXNlKCkucmVsZWFzZSgpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBH
ZXRGYXZpY29uU3VyZmFjZUFzeW5jRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PEdldEZhdmljb25T
dXJmYWNlQXN5bmNEYXRhKj4oZ190YXNrX2dldF90YXNrX2RhdGEodGFzaykpOwogICAgICAgICAg
ICAgZGF0YS0+aWNvbiA9IGljb247CkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCB3ZWJraXRfZmF2
aWNvbl9kYXRhYmFzZV9nZXRfZmF2aWNvbihXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNl
LCBjb25zdAogCiAgICAgLy8gV2UgYXNrIGZvciB0aGUgaWNvbiBkaXJlY3RseS4gSWYgd2UgZG9u
J3QgZ2V0IHRoZSBpY29uIGRhdGEgbm93LAogICAgIC8vIHdlJ2xsIGJlIG5vdGlmaWVkIGxhdGVy
IChldmVuIGlmIHRoZSBkYXRhYmFzZSBpcyBzdGlsbCBpbXBvcnRpbmcgaWNvbnMpLgotICAgIEdP
d25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAg
ICAgZGF0YS0+aWNvbiA9IGdldEljb25TdXJmYWNlU3luY2hyb25vdXNseShkYXRhYmFzZSwgZGF0
YS0+cGFnZVVSTCwgJmVycm9yLm91dFB0cigpKTsKICAgICBpZiAoZGF0YS0+aWNvbikgewogICAg
ICAgICBnX3Rhc2tfcmV0dXJuX2Jvb2xlYW4odGFzay5nZXQoKSwgVFJVRSk7CkBAIC0zMDEsNyAr
MzAxLDcgQEAgdm9pZCB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRfZmF2aWNvbihXZWJLaXRG
YXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlLCBjb25zdAogICAgIGRhdGEtPnNob3VsZFJlbGVhc2VJ
Y29uRm9yUGFnZVVSTCA9IHRydWU7CiAKICAgICBpZiAoZ19lcnJvcl9tYXRjaGVzKGVycm9yLmdl
dCgpLCBXRUJLSVRfRkFWSUNPTl9EQVRBQkFTRV9FUlJPUiwgV0VCS0lUX0ZBVklDT05fREFUQUJB
U0VfRVJST1JfRkFWSUNPTl9OT1RfRk9VTkQpKSB7Ci0gICAgICAgIGdfdGFza19yZXR1cm5fZXJy
b3IodGFzay5nZXQoKSwgZXJyb3IucmVsZWFzZSgpKTsKKyAgICAgICAgZ190YXNrX3JldHVybl9l
cnJvcih0YXNrLmdldCgpLCBlcnJvci5yZWxlYXNlKCkucmVsZWFzZSgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAppbmRleCBlMWU0MjIxLi42OTU3MjQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3Iu
aD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIApAQCAtMTY0LDcgKzE2Myw3IEBAIFdlYktpdFdlYlZpZXcqIHdlYmtp
dF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3dlYl92aWV3KFdlYktpdFVSSVNjaGVtZVJlcXVlc3Qq
IHJlCiBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVhZENhbGxiYWNrKEdJbnB1
dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBXZWJLaXRVUklTY2hl
bWVSZXF1ZXN0KiBzY2hlbWVSZXF1ZXN0KQogewogICAgIEdSZWZQdHI8V2ViS2l0VVJJU2NoZW1l
UmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0R1JlZihzY2hlbWVSZXF1ZXN0KTsKLSAgICBHT3duUHRy
PEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGdz
c2l6ZSBieXRlc1JlYWQgPSBnX2lucHV0X3N0cmVhbV9yZWFkX2ZpbmlzaChpbnB1dFN0cmVhbSwg
cmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGlmIChieXRlc1JlYWQgPT0gLTEpIHsKICAg
ICAgICAgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IocmVxdWVzdC5nZXQo
KSwgZXJyb3IuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA3ZWUwYzhiLi4yZDU3YzY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNjYs
NyArNjYsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZWZQdHJDYWlyby5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+Ci0jaW5j
bHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTMzNiw3ICszMzUsNyBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q2FuY2VsRmF2aWNvblJlcXVlc3QoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldykKIAogc3RhdGljIHZvaWQgZ290RmF2aWNvbkNhbGxiYWNrKEdPYmplY3Qq
IG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKQogewotICAg
IEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7
CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gZmF2aWNvbiA9IGFkb3B0UmVmKHdlYmtpdF9m
YXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uX2ZpbmlzaChXRUJLSVRfRkFWSUNPTl9EQVRBQkFT
RShvYmplY3QpLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwogICAgIGlmIChnX2Vycm9yX21h
dGNoZXMoZXJyb3IuZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVEKSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3Bl
Y3RvclNlcnZlci9ndGsvV2ViSW5zcGVjdG9yU2VydmVyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvZ3RrL1dlYkluc3BlY3RvclNlcnZlckd0ay5jcHAK
aW5kZXggYjA2ZmE3My4uM2NmMDQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0luc3BlY3RvclNlcnZlci9ndGsvV2ViSW5zcGVjdG9yU2VydmVyR3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2d0ay9XZWJJbnNwZWN0b3JT
ZXJ2ZXJHdGsuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlw
ZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUgPGdsaWIuaD4KLSNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1Vu
aXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC01NSw3ICs1NCw3IEBAIGJvb2wgV2ViSW5zcGVjdG9y
U2VydmVyOjpwbGF0Zm9ybVJlc291cmNlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFZlY3Rv
cjxjaGFyCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUg
PSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfdXJpKHJlc291cmNlVVJJLmRhdGEoKSkpOwotICAg
IEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7
CiAgICAgR1JlZlB0cjxHRmlsZUluZm8+IGZpbGVJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVy
eV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfU0laRSAiLCIgR19G
SUxFX0FUVFJJQlVURV9TVEFOREFSRF9GQVNUX0NPTlRFTlRfVFlQRSwgR19GSUxFX1FVRVJZX0lO
Rk9fTk9ORSwgMCwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgaWYgKCFmaWxlSW5mbykgewogICAg
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKaW5kZXgg
NGZiNWM5MC4uZjY2ZWJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xh
dW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcApAQCAtMzksNyArMzks
NiBAQAogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR2xpYlV0aWxpdGllcy5oPgogCkBAIC0xMjMsNyArMTIyLDcgQEAg
dm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIGFyZ3ZbaSsrXSA9IGNv
bnN0X2Nhc3Q8Y2hhcio+KHJlYWxQbHVnaW5QYXRoLmRhdGEoKSk7CiAgICAgYXJndltpKytdID0g
MDsKIAotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJv
cj4gZXJyb3I7CiAgICAgaWYgKCFnX3NwYXduX2FzeW5jKDAsIGFyZ3YsIDAsIEdfU1BBV05fTEVB
VkVfREVTQ1JJUFRPUlNfT1BFTiwgY2hpbGRTZXR1cEZ1bmN0aW9uLCBHSU5UX1RPX1BPSU5URVIo
c29ja2V0c1sxXSksICZwaWQsICZlcnJvci5vdXRQdHIoKSkpIHsKICAgICAgICAgZ19wcmludGVy
cigiVW5hYmxlIHRvIGZvcmsgYSBuZXcgV2ViUHJvY2VzczogJXMuXG4iLCBlcnJvci0+bWVzc2Fn
ZSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5
VW5peC5jcHAKaW5kZXggY2MyMzQxMy4uNzgxNTJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94
eVVuaXguY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAjaW5jbHVkZSA8Z2xpYi5o
PgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HVW5pcXVlUHRyLmg+CiAjZW5kaWYKIAogI2luY2x1ZGUgPHN5cy93YWl0Lmg+CkBAIC03NCw3
ICs3NCw3IEBAIGJvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2luKGNvbnN0IFN0cmlu
ZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmCiAgICAgYXJndlszXSA9IDA7CiAKICAg
ICBpbnQgc3RhdHVzOwotICAgIEdPd25QdHI8Y2hhcj4gc3RkT3V0OworICAgIEdVbmlxdWVPdXRQ
dHI8Y2hhcj4gc3RkT3V0OwogCiAgICAgLy8gSWYgdGhlIGRpc3Bvc2l0aW9uIG9mIFNJR0NMRCBz
aWduYWwgaXMgc2V0IHRvIFNJR19JR04gKGRlZmF1bHQpCiAgICAgLy8gdGhlbiB0aGUgc2lnbmFs
IHdpbGwgYmUgaWdub3JlZCBhbmQgZ19zcGF3bl9zeW5jKCkgd2lsbCBub3QgYmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRp
b25HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmlu
dE9wZXJhdGlvbkd0ay5jcHAKaW5kZXggY2I0Njg4MS4uNDA0NjllNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9w
ZXJhdGlvbkd0ay5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1VSTC5o
PgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQ
dHIuaD4KIAogI2lmZGVmIEhBVkVfR1RLX1VOSVhfUFJJTlRJTkcKQEAgLTc5LDcgKzc4LDcgQEAg
cHVibGljOgogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+am9iTmFtZShnX3N0cmR1cF9wcmludGYo
IiVzIGpvYiAjJWQiLCBhcHBsaWNhdGlvbk5hbWUgPyBhcHBsaWNhdGlvbk5hbWUgOiAiV2ViS2l0
IiwgKytqb2JOdW1iZXIpKTsKICAgICAgICAgbV9wcmludEpvYiA9IGFkb3B0R1JlZihndGtfcHJp
bnRfam9iX25ldyhqb2JOYW1lLmdldCgpLCBwcmludGVyLCBtX3ByaW50U2V0dGluZ3MuZ2V0KCks
IG1fcGFnZVNldHVwLmdldCgpKSk7CiAKLSAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOwor
ICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIGNhaXJvX3N1cmZh
Y2VfdCogc3VyZmFjZSA9IGd0a19wcmludF9qb2JfZ2V0X3N1cmZhY2UobV9wcmludEpvYi5nZXQo
KSwgJmVycm9yLm91dFB0cigpKTsKICAgICAgICAgaWYgKCFzdXJmYWNlKSB7CiAgICAgICAgICAg
ICBwcmludERvbmUocHJpbnRFcnJvcihmcmFtZVVSTCgpLCBlcnJvci0+bWVzc2FnZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKaW5k
ZXggMzJiMjE3MS4uZWRiNGEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCkBAIC00MSw4ICs0MSw4IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU291cE5ldHdvcmtTZXNz
aW9uLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKICNpZiAhRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMp
CiAjaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyLmgiCkBAIC01NCw3ICs1NCw3IEBAIHN0
YXRpYyB1aW50NjRfdCBnZXRDYWNoZURpc2tGcmVlU2l6ZShTb3VwQ2FjaGUqIGNhY2hlKQogewog
ICAgIEFTU0VSVChjYWNoZSk7CiAKLSAgICBHT3duUHRyPGNoYXI+IGNhY2hlRGlyOworICAgIEdV
bmlxdWVPdXRQdHI8Y2hhcj4gY2FjaGVEaXI7CiAgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKGNh
Y2hlKSwgImNhY2hlLWRpciIsICZjYWNoZURpci5vdXRQdHIoKSwgTlVMTCk7CiAgICAgaWYgKCFj
YWNoZURpcikKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjdmY2U4Yy4uMWFhYzc2OCAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE0
LTAxLTI0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbR0xJQl0gQWRkIEdVbmlxdWVPdXRQdHIgYW5kIHVzZSBpdCBpbnN0ZWFkIG9mIEdPd25Q
dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzU1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBH
VW5pcXVlT3V0UHRyIGluc3RlYWQgb2YgR093blB0ci4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3Rr
L0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKGNyZWF0ZUtleVByZXNzRXZlbnQpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2dvYmplY3QvR1VuaXF1ZVB0ci5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpyZXR1cm5PdXRDaGFyKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
Q29va2llTWFuYWdlci5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1Rlc3RJbnNwZWN0b3JTZXJ2ZXIuY3BwOgorICAgICAgICAodGVzdEluc3BlY3RvclNlcnZl
clBhZ2VMaXN0KToKKyAgICAgICAgKG9wZW5SZW1vdGVEZWJ1Z2dpbmdTZXNzaW9uKToKKyAgICAg
ICAgKHNlbmRJbmNvbXBsZXRlUmVxdWVzdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1Rlc3RSZXNvdXJjZXMuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHA6CisgICAgICAgICh0ZXN0V2Vi
RXh0ZW5zaW9uV2luZG93T2JqZWN0Q2xlYXJlZCk6CisgICAgICAgICh0ZXN0V2ViRXh0ZW5zaW9u
SXNvbGF0ZWRXb3JsZCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh0ZXN0V2Vi
Vmlld1J1bkphdmFTY3JpcHQpOgorICAgICAgICAodGVzdFdlYlZpZXdTYXZlKToKKyAgICAgICAg
KHRlc3RXZWJWaWV3UGFnZVZpc2liaWxpdHkpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcDoKKyAgICAgICAgKGlzU3R5
bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViUHJvY2Vzc1Rlc3QuY3BwOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvZ3RrL0lucHV0TWV0aG9kRmlsdGVyLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RJbnB1dE1ldGhvZEZpbHRlcjo6c2VuZEtleUV2ZW50VG9G
aWx0ZXIpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkb0tleVN0cm9rZSk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9UZXN0TWFpbi5oOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViS2l0VGVzdEJ1cy5jcHA6CisgICAgICAgIChXZWJLaXRU
ZXN0QnVzOjpydW4pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2Vi
Vmlld1Rlc3QuY3BwOgorICAgICAgICAocmVzb3VyY2VHZXREYXRhQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViVmlld1Rlc3Q6OmtleVN0cm9rZSk6CisgICAgICAgIChvblNuYXBzaG90UmVhZHkpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwOgor
ICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjprZXlEb3duKToKKwogMjAxNC0wMS0yMyAg
cGVhdm9Ab3V0bG9vay5jb20gIDxwZWF2b0BvdXRsb29rLmNvbT4KIAogICAgICAgICBbQ3VybF0g
VGhlcmUgaXMgbm8gd2F5IHRvIHNwZWNpZnkgY2FjaGUgZm9sZGVyLgpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggMDQzMzM1YS4uMzk4NDkwNSAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCkBAIC01NCw3ICs1
NCw2IEBACiAjaW5jbHVkZSA8bG9jYWxlLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdC5oPgog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dsaWJVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0V2ZW50U2VuZGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRl
ci5jcHAKaW5kZXggNTgyNjAyNy4uZmY1OGM0MyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
RXZlbnRTZW5kZXIuY3BwCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSA8d2Via2l0L3dlYmtp
dHdlYnZpZXcuaD4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CkBAIC04MDUsNyArODA0LDcgQEAgc3RhdGljIEdka0V2ZW50KiBjcmVhdGVLZXlQcmVzc0V2ZW50
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBzaXplX3QgYXJndW1lbnRDb3VudCwKIAogICAgIC8vIFdo
ZW4gc3ludGhlc2l6aW5nIGFuIGV2ZW50LCBhbiBpbnZhbGlkIGhhcmR3YXJlX2tleWNvZGUgdmFs
dWUKICAgICAvLyBjYW4gY2F1c2UgaXQgdG8gYmUgYmFkbHkgcHJvY2Vzc2VkIGJ5IEd0aysuCi0g
ICAgR093blB0cjxHZGtLZXltYXBLZXk+IGtleXM7CisgICAgR1VuaXF1ZU91dFB0cjxHZGtLZXlt
YXBLZXk+IGtleXM7CiAgICAgZ2ludCBuS2V5czsKICAgICBpZiAoZ2RrX2tleW1hcF9nZXRfZW50
cmllc19mb3Jfa2V5dmFsKGdka19rZXltYXBfZ2V0X2RlZmF1bHQoKSwgZ2RrS2V5U3ltLCAma2V5
cy5vdXRQdHIoKSwgJm5LZXlzKSkKICAgICAgICAgcHJlc3NFdmVudC0+a2V5LmhhcmR3YXJlX2tl
eWNvZGUgPSBrZXlzLmdldCgpWzBdLmtleWNvZGU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9nb2JqZWN0L0dVbmlxdWVQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvZ29iamVjdC9HVW5pcXVlUHRyLmNwcAppbmRleCA3ZDIzYjU3Li5jODE4
NGM5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9nb2JqZWN0L0dV
bmlxdWVQdHIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2dvYmplY3Qv
R1VuaXF1ZVB0ci5jcHAKQEAgLTE0NSw0ICsxNDUsNjIgQEAgVEVTVChXVEZfR1VuaXF1ZVB0ciwg
QmFzaWMpCiAgICAgYWN0dWFsLnN0cigiIik7CiB9CiAKK3N0YXRpYyB2b2lkIHJldHVybk91dENo
YXIoY2hhcioqIG91dENoYXIpCit7CisgICAgKm91dENoYXIgPSBnX3N0cmR1cCgiYSIpOworfQor
CitURVNUKFdURl9HVW5pcXVlUHRyLCBPdXRQdHIpCit7CisgICAgc3RkOjpvc3RyaW5nc3RyZWFt
IGFjdHVhbDsKKworICAgIHsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBhOworICAgICAg
ICBBU1NFUlRfRVEobnVsbHB0ciwgYS5nZXQoKSk7CisgICAgfQorICAgIEFTU0VSVF9TVFJFUShh
Y3R1YWwuc3RyKCkuY19zdHIoKSwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworICAgIGFjdHVhbC5z
dHIoIiIpOworCisgICAgeworICAgICAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IGE7CisgICAgICAg
IHJldHVybk91dENoYXIoJmEub3V0UHRyKCkpOworICAgICAgICBhY3R1YWwgPDwgImdfZnJlZSgi
IDw8IGEuZ2V0KCkgPDwgIik7IjsKKyAgICB9CisgICAgQVNTRVJUX1NUUkVRKGFjdHVhbC5zdHIo
KS5jX3N0cigpLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisgICAgYWN0dWFsLnN0cigiIik7CisK
KyAgICB7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gYTsKKyAgICAgICAgcmV0dXJuT3V0
Q2hhcigmYS5vdXRQdHIoKSk7CisgICAgICAgIGFjdHVhbCA8PCAiZ19mcmVlKCIgPDwgYS5nZXQo
KSA8PCAiKTsiOworICAgICAgICByZXR1cm5PdXRDaGFyKCZhLm91dFB0cigpKTsKKyAgICAgICAg
QVNTRVJUX1NUUkVRKGFjdHVhbC5zdHIoKS5jX3N0cigpLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
CisgICAgICAgIGFjdHVhbC5zdHIoIiIpOworICAgICAgICBhY3R1YWwgPDwgImdfZnJlZSgiIDw8
IGEuZ2V0KCkgPDwgIik7IjsKKyAgICB9CisgICAgQVNTRVJUX1NUUkVRKGFjdHVhbC5zdHIoKS5j
X3N0cigpLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisgICAgYWN0dWFsLnN0cigiIik7CisKKyAg
ICB7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gYTsKKyAgICAgICAgcmV0dXJuT3V0Q2hh
cigmYS5vdXRQdHIoKSk7CisgICAgICAgIGFjdHVhbCA8PCAiZ19mcmVlKCIgPDwgYS5nZXQoKSA8
PCAiKTsiOworICAgICAgICBhLnJlc2V0KCk7CisgICAgICAgIEFTU0VSVF9TVFJFUShhY3R1YWwu
c3RyKCkuY19zdHIoKSwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworICAgICAgICBhY3R1YWwuc3Ry
KCIiKTsKKyAgICB9CisgICAgQVNTRVJUX1NUUkVRKGFjdHVhbC5zdHIoKS5jX3N0cigpLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CisgICAgYWN0dWFsLnN0cigiIik7CisKKyAgICB7CisgICAgICAg
IEdVbmlxdWVPdXRQdHI8Y2hhcj4gYTsKKyAgICAgICAgcmV0dXJuT3V0Q2hhcigmYS5vdXRQdHIo
KSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gYiA9IGEucmVsZWFzZSgpOworICAgICAgICBB
U1NFUlRfU1RSRVEoYWN0dWFsLnN0cigpLmNfc3RyKCksIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
KyAgICAgICAgYWN0dWFsIDw8ICJnX2ZyZWUoIiA8PCBiLmdldCgpIDw8ICIpOyI7CisgICAgfQor
ICAgIEFTU0VSVF9TVFJFUShhY3R1YWwuc3RyKCkuY19zdHIoKSwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOworICAgIGFjdHVhbC5zdHIoIiIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dENvb2tpZU1hbmFnZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1Rlc3RDb29raWVNYW5hZ2VyLmNwcAppbmRleCBiZjM1MWUxLi4yZTk4NjQ1IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdENvb2tpZU1hbmFnZXIu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0Q29va2ll
TWFuYWdlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQg
Z2V0QWNjZXB0UG9saWN5UmVhZHlDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3Vs
dCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkKICAgICB7Ci0gICAgICAgIEdPd25QdHI8R0Vy
cm9yPiBlcnJvcjsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAg
ICBXZWJLaXRDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5ID0gd2Via2l0X2Nvb2tpZV9tYW5hZ2Vy
X2dldF9hY2NlcHRfcG9saWN5X2ZpbmlzaChXRUJLSVRfQ09PS0lFX01BTkFHRVIob2JqZWN0KSwg
cmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOwogICAgICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkp
OwogCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZ2V0RG9t
YWluc1JlYWR5Q2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwg
Z3BvaW50ZXIgdXNlckRhdGEpCiAgICAgewotICAgICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7
CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgY2hhcioqIGRv
bWFpbnMgPSB3ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X2RvbWFpbnNfd2l0aF9jb29raWVzX2Zp
bmlzaChXRUJLSVRfQ09PS0lFX01BTkFHRVIob2JqZWN0KSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRy
KCkpOwogICAgICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEluc3BlY3RvclNlcnZlci5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEluc3BlY3RvclNlcnZl
ci5jcHAKaW5kZXggYTY4NzgyNi4uMjUyMWQyZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RJbnNwZWN0b3JTZXJ2ZXIuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0SW5zcGVjdG9yU2VydmVyLmNwcApA
QCAtMTU4LDcgKzE1OCw3IEBAIHB1YmxpYzoKIC8vIFNob3VsZCBjb250YWluIG9ubHkgb25lIGVu
dHJ5IHBvaW50aW5nIHRvIGh0dHA6Ly8xMjcuMC4wLjE6Mjk5OS93ZWJpbnNwZWN0b3IvTWFpbi5o
dG1sP3BhZ2U9MQogc3RhdGljIHZvaWQgdGVzdEluc3BlY3RvclNlcnZlclBhZ2VMaXN0KEluc3Bl
Y3RvclNlcnZlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgR093blB0cjxHRXJy
b3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKIAogICAgIHRlc3Qt
PnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZChHVEtfV0lORE9XX1RPUExFVkVMKTsKICAg
ICBnX2Fzc2VydCh0ZXN0LT5nZXRQYWdlTGlzdCgpKTsKQEAgLTIyOCw3ICsyMjgsNyBAQCBzdGF0
aWMgdm9pZCBvcGVuUmVtb3RlRGVidWdnaW5nU2Vzc2lvbihJbnNwZWN0b3JTZXJ2ZXJUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQogCiAgICAgZ19hc3NlcnQodGVzdC0+Z2V0UGFnZUxpc3QoKSk7
CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+
IGVycm9yOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0
ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoInBhZ2VzWzBdLmluc3BlY3Rv
clVybDsiLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQp
OwogICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CkBAIC0yNDcsNyArMjQ3LDcgQEAgc3RhdGlj
IHZvaWQgb3BlblJlbW90ZURlYnVnZ2luZ1Nlc3Npb24oSW5zcGVjdG9yU2VydmVyVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKIAogc3RhdGljIHZvaWQgc2VuZEluY29tcGxldGVSZXF1ZXN0KElu
c3BlY3RvclNlcnZlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgR093blB0cjxH
RXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKIAogICAgIC8v
IENvbm5lY3QgdG8gdGhlIGluc3BlY3RvciBzZXJ2ZXIuCiAgICAgR1JlZlB0cjxHU29ja2V0Q2xp
ZW50PiBjbGllbnQgPSBhZG9wdEdSZWYoZ19zb2NrZXRfY2xpZW50X25ldygpKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0UmVzb3VyY2VzLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0UmVzb3VyY2VzLmNw
cAppbmRleCAzYTQ1OWEwLi5hMmVlOTc3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvVGVzdFJlc291cmNlcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RSZXNvdXJjZXMuY3BwCkBAIC0xNjEsNyArMTYxLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlc291cmNlR2V0RGF0YUNhbGxiYWNrKEdPYmpl
Y3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKQogICAg
IHsKICAgICAgICAgc2l6ZV90IGRhdGFTaXplOwotICAgICAgICBHT3duUHRyPEdFcnJvcj4gZXJy
b3I7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgdW5zaWdu
ZWQgY2hhciogZGF0YSA9IHdlYmtpdF93ZWJfcmVzb3VyY2VfZ2V0X2RhdGFfZmluaXNoKFdFQktJ
VF9XRUJfUkVTT1VSQ0Uob2JqZWN0KSwgcmVzdWx0LCAmZGF0YVNpemUsICZlcnJvci5vdXRQdHIo
KSk7CiAgICAgICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CiAgICAgICAgIGdfYXNzZXJ0KGRh
dGEpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rl
c3RXZWJFeHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKaW5kZXggOWExMGUzNy4uNTM4ZDlmMWQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9u
cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJF
eHRlbnNpb25zLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJFeHRl
bnNpb25XaW5kb3dPYmplY3RDbGVhcmVkKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxoZWFkZXI+PC9oZWFkZXI+PGJvZHk+PC9ib2R5
PjwvaHRtbD4iLCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAotICAg
IEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7
CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1
bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgid2luZG93LmVjaG8oJ0ZvbycpOyIsICZl
cnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19h
c3NlcnQoIWVycm9yLmdldCgpKTsKQEAgLTEzMyw3ICsxMzMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2ViRXh0ZW5zaW9uSXNvbGF0ZWRXb3JsZChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKICAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGhlYWRlcj48L2hlYWRlcj48Ym9keT48ZGl2
IGlkPSdjb25zb2xlJz48L2Rpdj48L2JvZHk+PC9odG1sPiIsIDApOwogICAgIHRlc3QtPndhaXRV
bnRpbExvYWRGaW5pc2hlZCgpOwogCi0gICAgR093blB0cjxjaGFyPiByZXN1bHQ7CisgICAgR1Vu
aXF1ZU91dFB0cjxjaGFyPiByZXN1bHQ7CiAgICAgZ3Vsb25nIHNjcmlwdERpYWxvZ0lEID0gZ19z
aWduYWxfY29ubmVjdCh0ZXN0LT5tX3dlYlZpZXcsICJzY3JpcHQtZGlhbG9nIiwgR19DQUxMQkFD
SyhzY3JpcHREaWFsb2dDYWxsYmFjayksICZyZXN1bHQub3V0UHRyKCkpOwogCiAgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIG1haW5Xb3JsZFNjcmlwdCA9CkBAIC0xNDMsNyArMTQzLDcgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYkV4dGVuc2lvbklzb2xhdGVkV29ybGQoV2ViVmlld1Rlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiAgICAgICAgICJkb2N1bWVudC5vcGVuKDEsIDIsIDMpOyI7CiAgICAgdGVz
dC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKG1haW5Xb3JsZFNjcmlwdCwgMCk7
CiAgICAgZ19hc3NlcnRfY21wc3RyKHJlc3VsdC5nZXQoKSwgPT0sICJNYWluIFdvcmxkIik7Ci0g
ICAgcmVzdWx0LmNsZWFyKCk7CisgICAgcmVzdWx0LnJlc2V0KCk7CiAKICAgICBXZWJLaXRKYXZh
c2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdh
aXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVy
SFRNTCIsIDApOwogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwpAQCAtMTY1LDcgKzE2
NSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJFeHRlbnNpb25Jc29sYXRlZFdvcmxkKFdlYlZpZXdU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgICAgICB0ZXN0KTsKICAgICBnX21haW5fbG9v
cF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHJlc3VsdC5nZXQo
KSwgPT0sICJJc29sYXRlZCBXb3JsZCIpOwotICAgIHJlc3VsdC5jbGVhcigpOworICAgIHJlc3Vs
dC5yZXNldCgpOwogCiAgICAgLy8gQ2hlY2sgdGhhdCAndG9wLmZvbycgZGVmaW5lZCBpbiBtYWlu
IHdvcmxkIGlzIG5vdCB2aXNpYmxlIGluIGlzb2xhdGVkIHdvcmxkLgogICAgIGphdmFzY3JpcHRS
ZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MIiwgMCk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdEZhdmljb25EYXRh
YmFzZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktp
dEZhdmljb25EYXRhYmFzZS5jcHAKaW5kZXggOTViNWMwMS4uMGY1YTgyMCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRGYXZpY29uRGF0
YWJhc2UuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAtMjMsNyArMjMsNiBAQAogI2luY2x1ZGUgIldl
YlZpZXdUZXN0LmgiCiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KICNpbmNsdWRlIDxsaWJzb3Vw
L3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBzdGF0aWMgV2ViS2l0VGVzdFNlcnZlcioga1NlcnZl
cjsKQEAgLTM2LDcgKzM1LDYgQEAgcHVibGljOgogICAgIEZhdmljb25EYXRhYmFzZVRlc3QoKQog
ICAgICAgICA6IG1fd2ViQ29udGV4dCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSkK
ICAgICAgICAgLCBtX2Zhdmljb24oMCkKLSAgICAgICAgLCBtX2Vycm9yKDApCiAgICAgICAgICwg
bV9mYXZpY29uTm90aWZpY2F0aW9uUmVjZWl2ZWQoZmFsc2UpCiAgICAgewogICAgICAgICBXZWJL
aXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9mYXZp
Y29uX2RhdGFiYXNlKG1fd2ViQ29udGV4dCk7CkBAIC04NCw3ICs4Miw2IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgZ2V0RmF2aWNvbkZvclBhZ2VVUklBbmRXYWl0VW50aWxSZWFkeShjb25zdCBjaGFy
KiBwYWdlVVJJKQogICAgIHsKLSAgICAgICAgbV9lcnJvci5jbGVhcigpOwogICAgICAgICBpZiAo
bV9mYXZpY29uKSB7CiAgICAgICAgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kobV9mYXZpY29u
KTsKICAgICAgICAgICAgIG1fZmF2aWNvbiA9IDA7CkBAIC05OCw3ICs5NSw3IEBAIHB1YmxpYzoK
ICAgICBXZWJLaXRXZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7CiAgICAgY2Fpcm9fc3VyZmFjZV90
KiBtX2Zhdmljb247CiAgICAgQ1N0cmluZyBtX2Zhdmljb25VUkk7Ci0gICAgR093blB0cjxHRXJy
b3I+IG1fZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IG1fZXJyb3I7CiAgICAgYm9v
bCBtX2Zhdmljb25Ob3RpZmljYXRpb25SZWNlaXZlZDsKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXcuY3Bw
CmluZGV4IDczNDJiNjAuLmY5YmY2MzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtODYsNyAr
ODYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1J1bkphdmFTY3JpcHQoV2ViVmlld1Rlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+bG9hZEh0bWwoaHRtbCwgMCk7CiAgICAg
dGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJy
b3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIFdlYktpdEphdmFzY3Jp
cHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVu
dGlsRmluaXNoZWQoIndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnV2ViS2l0TGluaycp
LnRpdGxlOyIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3Vs
dCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKQEAgLTE0NCw3ICsxNDQsNiBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViVmlld1J1bkphdmFTY3JpcHQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRGcm9t
R1Jlc291cmNlQW5kV2FpdFVudGlsRmluaXNoZWQoIi93cm9uZy9wYXRoL3RvL3Jlc291cmNlLmpz
IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydCghamF2YXNjcmlwdFJlc3VsdCk7CiAg
ICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIEdfUkVTT1VSQ0VfRVJST1IsIEdfUkVTT1VS
Q0VfRVJST1JfTk9UX0ZPVU5EKTsKLSAgICBlcnJvci5jbGVhcigpOwogCiAgICAgamF2YXNjcmlw
dFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZm9vKCk7
IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydCghamF2YXNjcmlwdFJlc3VsdCk7CkBA
IC0zNDYsNyArMzQ1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgd2ViVmlld1NhdmVk
VG9TdHJlYW1DYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBT
YXZlV2ViVmlld1Rlc3QqIHRlc3QpCiAgICAgewotICAgICAgICBHT3duUHRyPEdFcnJvcj4gZXJy
b3I7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgdGVzdC0+
bV9pbnB1dFN0cmVhbSA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX3ZpZXdfc2F2ZV9maW5pc2godGVz
dC0+bV93ZWJWaWV3LCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwogICAgICAgICBnX2Fzc2Vy
dChHX0lTX0lOUFVUX1NUUkVBTSh0ZXN0LT5tX2lucHV0U3RyZWFtLmdldCgpKSk7CiAgICAgICAg
IGdfYXNzZXJ0KCFlcnJvcik7CkBAIC0zNTYsNyArMzU1LDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIHZvaWQgd2ViVmlld1NhdmVkVG9GaWxlQ2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5
bmNSZXN1bHQqIHJlc3VsdCwgU2F2ZVdlYlZpZXdUZXN0KiB0ZXN0KQogICAgIHsKLSAgICAgICAg
R093blB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJy
b3I7CiAgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19zYXZlX3RvX2ZpbGVfZmluaXNo
KHRlc3QtPm1fd2ViVmlldywgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICAgICAgZ19h
c3NlcnQoIWVycm9yKTsKIApAQCAtNDA1LDcgKzQwNCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3U2F2ZShTYXZlV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgLy8gc3Ry
aW5ncyByZWFkIHNpbmNlIHRoZSAnRGF0ZScgZmllbGQgYW5kIHRoZSBib3VuZGFyaWVzIHdpbGwg
YmUKICAgICAvLyBkaWZmZXJlbnQgb24gZWFjaCBjYXNlLiBNSFRNTCBmdW5jdGlvbmFsaXR5IHdp
bGwgYmUgdGVzdGVkIGJ5CiAgICAgLy8gTGF5b3V0IHRlc3RzLCBzbyBjaGVja2luZyB0aGUgYW1v
dW50IG9mIGJ5dGVzIGlzIGVub3VnaC4KLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAg
R1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGdjaGFyIGJ1ZmZlcls1MTJdID0geyAw
IH07CiAgICAgZ3NzaXplIHJlYWRCeXRlcyA9IDA7CiAgICAgZ3NzaXplIHRvdGFsQnl0ZXNGcm9t
U3RyZWFtID0gMDsKQEAgLTQ1OCw3ICs0NTcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1Bh
Z2VWaXNpYmlsaXR5KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIC8vIFdh
aXQgdW50aWxsIHRoZSBwYWdlIGlzIGxvYWRlZC4gSW5pdGlhbCB2aXNpYmlsaXR5IHNob3VsZCBi
ZSAnaGlkZGVuJy4KICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAotICAgIEdP
d25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAg
ICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkph
dmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlOyIs
ICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAg
Z19hc3NlcnQoIWVycm9yLmdldCgpKTsKQEAgLTUwNyw3ICs1MDYsNyBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgdm9pZCBvblNuYXBzaG90Q2FuY2VsbGVkUmVhZHkoV2ViS2l0V2ViVmlldyogd2Vi
X3ZpZXcsIEdBc3luY1Jlc3VsdCogcmVzLCBTbmFwc2hvdFdlYlZpZXdUZXN0KiB0ZXN0KQogICAg
IHsKLSAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICBHVW5pcXVlT3V0UHRy
PEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIHRlc3QtPm1fc3VyZmFjZSA9IHdlYmtpdF93ZWJfdmll
d19nZXRfc25hcHNob3RfZmluaXNoKHdlYl92aWV3LCByZXMsICZlcnJvci5vdXRQdHIoKSk7CiAg
ICAgICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3N1cmZhY2UpOwogICAgICAgICBnX2Fzc2VydF9lcnJv
cihlcnJvci5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9DQU5DRUxMRUQpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJW
aWV3R3JvdXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RX
ZWJLaXRXZWJWaWV3R3JvdXAuY3BwCmluZGV4IDc0MDA4ZWIuLjQ0OGFiZDIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlld0dy
b3VwLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdl
YktpdFdlYlZpZXdHcm91cC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgYm9vbCBpc1N0
eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aChXZWJWaWV3VGVzdCogdGVzdCwgY29uc3QgY2hh
ciogcGF0aAogICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aChwYXRoKS5k
YXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCi0gICAgR093blB0
cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBX
ZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNj
cmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKGtTdHlsZVNoZWV0VGVzdFNjcmlwdCwgJmVycm9yLm91
dFB0cigpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydCgh
ZXJyb3IuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RXZWJWaWV3RWRpdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHAKaW5kZXggN2YwYTA2MS4uOWU2OWJmYSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJW
aWV3RWRpdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdFdlYlZpZXdFZGl0b3IuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyB2b2lkIGNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZFJlYWR5Q2FsbGJhY2soR09iamVjdCos
IEdBc3luY1Jlc3VsdCogcmVzdWx0LCBFZGl0b3JUZXN0KiB0ZXN0KQogICAgIHsKLSAgICAgICAg
R093blB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJy
b3I7CiAgICAgICAgIHRlc3QtPm1fY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kID0gd2Via2l0X3dl
Yl92aWV3X2Nhbl9leGVjdXRlX2VkaXRpbmdfY29tbWFuZF9maW5pc2godGVzdC0+bV93ZWJWaWV3
LCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQo
KSk7CiAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVz
dC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9u
VGVzdC5jcHAKaW5kZXggMmU4MDM0Zi4uY2NkZDZkYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcApAQCAt
MjgsNyArMjgsNiBAQAogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
QEAgLTIzNyw3ICsyMzYsNyBAQCBzdGF0aWMgdm9pZCBidXNBY3F1aXJlZENhbGxiYWNrKEdEQnVz
Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hhciogbmFtZSwgZwogICAgIGlmICghaW50
cm9zcGVjdGlvbkRhdGEpCiAgICAgICAgIGludHJvc3BlY3Rpb25EYXRhID0gZ19kYnVzX25vZGVf
aW5mb19uZXdfZm9yX3htbChpbnRyb3NwZWN0aW9uWE1MLCAwKTsKIAotICAgIEdPd25QdHI8R0Vy
cm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgdW5zaWdu
ZWQgcmVnaXN0cmF0aW9uSUQgPSBnX2RidXNfY29ubmVjdGlvbl9yZWdpc3Rlcl9vYmplY3QoCiAg
ICAgICAgIGNvbm5lY3Rpb24sCiAgICAgICAgICIvb3JnL3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9u
VGVzdCIsCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
V2ViUHJvY2Vzc1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1dlYlByb2Nlc3NUZXN0LmNwcAppbmRleCA4YzAwODM3Li5jZmYxYTI1IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViUHJvY2Vzc1Rlc3QuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJQcm9jZXNzVGVzdC5j
cHAKQEAgLTIxLDcgKzIxLDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzVGVzdC5oIgogCiAjaW5j
bHVkZSA8Z2lvL2dpby5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IHN0ZDo6ZnVuY3Rpb248UGFzc093blB0cjxXZWJQcm9jZXNzVGVzdD4gKCk+PiBUZXN0c01hcDsK
IHN0YXRpYyBUZXN0c01hcCYgdGVzdHNNYXAoKQpAQCAtODAsNyArODAsNyBAQCBzdGF0aWMgdm9p
ZCBidXNBY3F1aXJlZENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3Qg
Y2hhciogbmFtZSwgZwogICAgIGlmICghaW50cm9zcGVjdGlvbkRhdGEpCiAgICAgICAgIGludHJv
c3BlY3Rpb25EYXRhID0gZ19kYnVzX25vZGVfaW5mb19uZXdfZm9yX3htbChpbnRyb3NwZWN0aW9u
WE1MLCAwKTsKIAotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRy
PEdFcnJvcj4gZXJyb3I7CiAgICAgdW5zaWduZWQgcmVnaXN0cmF0aW9uSUQgPSBnX2RidXNfY29u
bmVjdGlvbl9yZWdpc3Rlcl9vYmplY3QoCiAgICAgICAgIGNvbm5lY3Rpb24sCiAgICAgICAgICIv
b3JnL3dlYmtpdC9ndGsvV2ViUHJvY2Vzc1Rlc3QiLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9ndGsvSW5wdXRNZXRob2RGaWx0ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9ndGsvSW5wdXRNZXRob2RGaWx0ZXIuY3BwCmluZGV4IGJmY2MxN2QuLjRhYWI3
YzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvZ3RrL0lucHV0TWV0aG9k
RmlsdGVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2d0ay9JbnB1dE1ldGhv
ZEZpbHRlci5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRp
ZXMuaCIKICNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4K
LSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgICAg
ICBnZGtfZXZlbnRfc2V0X2RldmljZShldmVudCwgZ2RrX2RldmljZV9tYW5hZ2VyX2dldF9jbGll
bnRfcG9pbnRlcihnZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIoZ2RrX2Rpc3BsYXlfZ2V0
X2RlZmF1bHQoKSkpKTsKICNlbmRpZgogCi0gICAgICAgIEdPd25QdHI8R2RrS2V5bWFwS2V5PiBr
ZXlzOworICAgICAgICBHVW5pcXVlT3V0UHRyPEdka0tleW1hcEtleT4ga2V5czsKICAgICAgICAg
Z2ludCBuS2V5czsKICAgICAgICAgaWYgKGdka19rZXltYXBfZ2V0X2VudHJpZXNfZm9yX2tleXZh
bChnZGtfa2V5bWFwX2dldF9kZWZhdWx0KCksIGdka0tleVZhbHVlLCAma2V5cy5vdXRQdHIoKSwg
Jm5LZXlzKSkKICAgICAgICAgICAgIGV2ZW50LT5rZXkuaGFyZHdhcmVfa2V5Y29kZSA9IGtleXMu
Z2V0KClbMF0ua2V5Y29kZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1Bs
YXRmb3JtV2ViVmlld0d0ay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9QbGF0Zm9ybVdl
YlZpZXdHdGsuY3BwCmluZGV4IDEyZWVlZDcuLjAzMTYwNDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAj
aW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyR3RrLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgot
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
VW5pcXVlUHRyLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIApAQCAtNjcsNyArNjcs
NyBAQCBzdGF0aWMgdm9pZCBkb0tleVN0cm9rZShHdGtXaWRnZXQqIHZpZXdXaWRnZXQsIHVuc2ln
bmVkIGludCBrZXlWYWwpCiAgICAgZ2RrX2V2ZW50X3NldF9kZXZpY2UoZXZlbnQuZ2V0KCksIGdk
a19kZXZpY2VfbWFuYWdlcl9nZXRfY2xpZW50X3BvaW50ZXIoZ2RrX2Rpc3BsYXlfZ2V0X2Rldmlj
ZV9tYW5hZ2VyKGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkodmlld1dpZGdldCkpKSk7CiAKICAgICAv
LyBXaGVuIHN5bnRoZXNpemluZyBhbiBldmVudCwgYW4gaW52YWxpZCBoYXJkd2FyZV9rZXljb2Rl
IHZhbHVlIGNhbiBjYXVzZSBpdCB0byBiZSBiYWRseSBwcm9jZXNzZWQgYnkgR1RLKy4KLSAgICBH
T3duUHRyPEdka0tleW1hcEtleT4ga2V5czsKKyAgICBHVW5pcXVlT3V0UHRyPEdka0tleW1hcEtl
eT4ga2V5czsKICAgICBpbnQga2V5c0NvdW50OwogICAgIGlmIChnZGtfa2V5bWFwX2dldF9lbnRy
aWVzX2Zvcl9rZXl2YWwoZ2RrX2tleW1hcF9nZXRfZGVmYXVsdCgpLCBrZXlWYWwsICZrZXlzLm91
dFB0cigpLCAma2V5c0NvdW50KSkKICAgICAgICAgZXZlbnQtPmtleS5oYXJkd2FyZV9rZXljb2Rl
ID0ga2V5cy5nZXQoKVswXS5rZXljb2RlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9ndGsvV2ViS2l0Mkd0ay9UZXN0TWFpbi5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2Vi
S2l0Mkd0ay9UZXN0TWFpbi5oCmluZGV4IGQ1Y2VhZTguLjlmYWIwYjIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvVGVzdE1haW4uaAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1Rlc3RNYWluLmgKQEAgLTIzLDcgKzIzLDYgQEAK
ICNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJL
aXRUZXN0QnVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViS2l0
VGVzdEJ1cy5jcHAKaW5kZXggZDBkZmFlNy4uMzViY2YxYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJLaXRUZXN0QnVzLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYktpdFRlc3RCdXMuY3BwCkBAIC0yMCw3ICsy
MCw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0VGVzdEJ1cy5oIgog
Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzgs
OCArMzcsOCBAQCBib29sIFdlYktpdFRlc3RCdXM6OnJ1bigpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBHT3duUHRyPGNoYXI+IG91dHB1dDsKLSAgICBHT3duUHRyPEdFcnJv
cj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBvdXRwdXQ7CisgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGlmICghZ19zcGF3bl9jb21tYW5kX2xpbmVfc3luYyhk
YnVzTGF1bmNoLmdldCgpLCAmb3V0cHV0Lm91dFB0cigpLCAwLCAwLCAmZXJyb3Iub3V0UHRyKCkp
KSB7CiAgICAgICAgIGdfd2FybmluZygiRXJyb3Igc3RhcnRpbmcgREJVUyBkYWVtb246ICVzIiwg
ZXJyb3ItPm1lc3NhZ2UpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuY3BwCmluZGV4IGViN2IwZGYu
LjExOThiMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsv
V2ViVmlld1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsv
V2ViVmlld1Rlc3QuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBXZWJWaWV3VGVzdDo6c2Vs
ZWN0QWxsKCkKIHN0YXRpYyB2b2lkIHJlc291cmNlR2V0RGF0YUNhbGxiYWNrKEdPYmplY3QqIG9i
amVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKQogewogICAgIHNp
emVfdCBkYXRhU2l6ZTsKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEgPSB3ZWJraXRfd2Vi
X3Jlc291cmNlX2dldF9kYXRhX2ZpbmlzaChXRUJLSVRfV0VCX1JFU09VUkNFKG9iamVjdCksIHJl
c3VsdCwgJmRhdGFTaXplLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0KGRhdGEpOwog
CkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBXZWJWaWV3VGVzdDo6a2V5U3Ryb2tlKHVuc2lnbmVk
IGtleVZhbCwgdW5zaWduZWQga2V5TW9kaWZpZXJzKQogICAgIGV2ZW50LT5rZXkuc3RhdGUgPSBr
ZXlNb2RpZmllcnM7CiAKICAgICAvLyBXaGVuIHN5bnRoZXNpemluZyBhbiBldmVudCwgYW4gaW52
YWxpZCBoYXJkd2FyZV9rZXljb2RlIHZhbHVlIGNhbiBjYXVzZSBpdCB0byBiZSBiYWRseSBwcm9j
ZXNzZWQgYnkgR1RLKy4KLSAgICBHT3duUHRyPEdka0tleW1hcEtleT4ga2V5czsKKyAgICBHVW5p
cXVlT3V0UHRyPEdka0tleW1hcEtleT4ga2V5czsKICAgICBpbnQga2V5c0NvdW50OwogICAgIGlm
IChnZGtfa2V5bWFwX2dldF9lbnRyaWVzX2Zvcl9rZXl2YWwoZ2RrX2tleW1hcF9nZXRfZGVmYXVs
dCgpLCBrZXlWYWwsICZrZXlzLm91dFB0cigpLCAma2V5c0NvdW50KSkKICAgICAgICAgZXZlbnQt
PmtleS5oYXJkd2FyZV9rZXljb2RlID0ga2V5cy5nZXQoKVswXS5rZXljb2RlOwpAQCAtNDI1LDcg
KzQyNSw3IEBAIGJvb2wgV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRJc1VuZGVmaW5lZChX
ZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0CiAKIHN0YXRpYyB2b2lkIG9uU25hcHNo
b3RSZWFkeShXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgR0FzeW5jUmVzdWx0KiByZXMsIFdlYlZp
ZXdUZXN0KiB0ZXN0KQogewotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgdGVzdC0+bV9zdXJmYWNlID0gd2Via2l0X3dlYl92
aWV3X2dldF9zbmFwc2hvdF9maW5pc2god2ViX3ZpZXcsIHJlcywgJmVycm9yLm91dFB0cigpKTsK
ICAgICBnX2Fzc2VydCghdGVzdC0+bV9zdXJmYWNlIHx8ICFlcnJvci5nZXQoKSk7CiAgICAgaWYg
KGVycm9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5k
ZXJQcm94eUd0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclBy
b3h5R3RrLmNwcAppbmRleCAzODA0MzhjLi41ZDdjMjBjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcApAQCAtMzgsNyArMzgsNyBA
QAogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV1RSIHsKQEAgLTI5NSw3ICsyOTUsNyBAQCB2
b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSZWYga2V5UmVmLCBXS0V2ZW50
TW9kaWZpZXJzIHdrTW9kaWZpZXJzLAogICAgIGdfb2JqZWN0X3JlZihwcmVzc0V2ZW50LT5rZXku
d2luZG93KTsKICAgICBnZGtfZXZlbnRfc2V0X2RldmljZShwcmVzc0V2ZW50LCBnZGtfZGV2aWNl
X21hbmFnZXJfZ2V0X2NsaWVudF9wb2ludGVyKGdka19kaXNwbGF5X2dldF9kZXZpY2VfbWFuYWdl
cihnZGtfd2luZG93X2dldF9kaXNwbGF5KHByZXNzRXZlbnQtPmtleS53aW5kb3cpKSkpOwogCi0g
ICAgR093blB0cjxHZGtLZXltYXBLZXk+IGtleXM7CisgICAgR1VuaXF1ZU91dFB0cjxHZGtLZXlt
YXBLZXk+IGtleXM7CiAgICAgZ2ludCBuS2V5czsKICAgICBpZiAoZ2RrX2tleW1hcF9nZXRfZW50
cmllc19mb3Jfa2V5dmFsKGdka19rZXltYXBfZ2V0X2RlZmF1bHQoKSwgZ2RrS2V5U3ltLCAma2V5
cy5vdXRQdHIoKSwgJm5LZXlzKSkKICAgICAgICAgcHJlc3NFdmVudC0+a2V5LmhhcmR3YXJlX2tl
eWNvZGUgPSBrZXlzLmdldCgpWzBdLmtleWNvZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222435</attachid>
            <date>2014-01-28 06:15:42 -0800</date>
            <delta_ts>2014-01-29 08:37:10 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wtf-g-unique-out-ptr.diff</filename>
            <type>text/plain</type>
            <size>86013</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZWQ4NjRiNy4uYThiODg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNC0wMS0yNCAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dM
SUJdIEFkZCBHVW5pcXVlT3V0UHRyIGFuZCB1c2UgaXQgaW5zdGVhZCBvZiBHT3duUHRyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc1NTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHVW5pcXVlT3V0UHRy
IGlzIGEgc2ltcGxpZmllZCB2ZXJzaW9uIG9mIEdPd25QdHIgZm9yIHRoZSBjYXNlcworICAgICAg
ICB3aGVyZSB3ZSBuZWVkIHRoZSBhZGRyZXNzIG9mIHRoZSBjb250YWluZWQgcG9pbnRlci4gR1Vu
aXF1ZU91dFB0cgorICAgICAgICB1c2VzIEdVbmlxdWVQdHIgdG8gZnJlZSB0aGUgY29udGFpbmVk
IG9iamVjdCBhbmQgdG8gcmVsZWFzZSB0aGUKKyAgICAgICAgY29udGFpbmVyIHBvaW50ZXIuIFRo
ZSBBUEkgaXMgdmVyeSBzaW1wbGUgdG8gbWFrZSBzdXJlIHRoaXMgaXMKKyAgICAgICAgb25seSB1
c2VkIHdoZW4gb3V0UHRyKCkgaXMgbmVlZGVkLiBJdCBjYW4ndCBiZSBjb25zdHJ1Y3RlZCB3aXRo
IGEKKyAgICAgICAgcG9pbnRlciwgYW5kIHRoZXJlJ3Mgbm90IG1ldGhvZCB0byBzZXQgYSBuZXcg
cG9pbnRlci4gQW5vdGhlcgorICAgICAgICBkaWZmZXJlbmNlIHdpdGggdGhlIG9sZCBHT3duUHRy
IGlzIHRoYXQgb3V0UHRyKCkgY2FuIGJlIHVzZWQKKyAgICAgICAgbXVsdGlwbGUgdGltZXMsIGJl
Y2F1c2UgaXQgZnJlZXMgYW55IHBvaW50ZXIgcHJldmlvdXNseSBzZXQuCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVmbC5jbWFrZToKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogd3RmL2dvYmplY3QvR093
blB0ci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd3RmL2dvYmplY3QvR093blB0ci5oOiBSZW1v
dmVkLgorICAgICAgICAqIHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaDoKKyAgICAgICAgKFdURjo6
R1VuaXF1ZU91dFB0cjo6R1VuaXF1ZU91dFB0cik6CisgICAgICAgIChXVEY6OkdVbmlxdWVPdXRQ
dHI6On5HVW5pcXVlT3V0UHRyKToKKyAgICAgICAgKFdURjo6R1VuaXF1ZU91dFB0cjo6b3V0UHRy
KToKKyAgICAgICAgKFdURjo6R1VuaXF1ZU91dFB0cjo6cmVzZXQpOgorICAgICAgICAoV1RGOjpH
VW5pcXVlT3V0UHRyOjpyZWxlYXNlKToKKyAgICAgICAgKFdURjo6R1VuaXF1ZU91dFB0cjo6b3Bl
cmF0b3IqKToKKyAgICAgICAgKFdURjo6R1VuaXF1ZU91dFB0cjo6b3BlcmF0b3ItPik6CisgICAg
ICAgIChXVEY6OkdVbmlxdWVPdXRQdHI6OmdldCk6CisgICAgICAgIChXVEY6OkdVbmlxdWVPdXRQ
dHI6Om9wZXJhdG9yISk6CisgICAgICAgIChXVEY6OkdVbmlxdWVPdXRQdHI6Om9wZXJhdG9yIFVu
c3BlY2lmaWVkQm9vbFR5cGUpOgorCiAyMDE0LTAxLTI3ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ29yZTogRW5hYmxlIC1XaW1wbGljaXQtZmFs
bHRocm91Z2ggYW5kIGFkZCBGQUxMVEhST1VHSCBhbm5vdGF0aW9uIHdoZXJlIG5lZWRlZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dURi9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IDU0ZmVkYjEuLjg2Nzg1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxp
c3QuYW0KQEAgLTIwOSw4ICsyMDksNiBAQCB3dGZfc291cmNlcyArPSBcCiAgICAgU291cmNlL1dU
Ri93dGYvZHRvYS9zdHJ0b2QuaCBcCiAgICAgU291cmNlL1dURi93dGYvZHRvYS91dGlscy5oIFwK
ICAgICBTb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dNdXRleExvY2tlci5oIFwKLSAgICBTb3VyY2Uv
V1RGL3d0Zi9nb2JqZWN0L0dPd25QdHIuY3BwIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9nb2JqZWN0
L0dPd25QdHIuaCBcCiAgICAgU291cmNlL1dURi93dGYvZ29iamVjdC9HUmVmUHRyLmNwcCBcCiAg
ICAgU291cmNlL1dURi93dGYvZ29iamVjdC9HUmVmUHRyLmggXAogICAgIFNvdXJjZS9XVEYvd3Rm
L2dvYmplY3QvR1R5cGVkZWZzLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1FZmwuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBlMTBh
NDQyLi5iNGUyMTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVmbC5jbWFr
ZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNCw3ICs0LDYgQEAg
bGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBlZmwvUmVmUHRyRWZsLmNwcAogICAgIGVmbC9S
dW5Mb29wRWZsLmNwcAogCi0gICAgZ29iamVjdC9HT3duUHRyLmNwcAogICAgIGdvYmplY3QvR1Jl
ZlB0ci5jcHAKICkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21h
a2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAzMmUxZmViLi43MDI2
MmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMSw1ICsxLDQgQEAKIGxpc3QoQVBQ
RU5EIFdURl9TT1VSQ0VTCi0gICAgZ29iamVjdC9HT3duUHRyLmNwcAogICAgIGdvYmplY3QvR1Jl
ZlB0ci5jcHAKICAgICBnb2JqZWN0L0dsaWJVdGlsaXRpZXMuY3BwCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL2dvYmplY3QvR093blB0ci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0
L0dPd25QdHIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTM1NmQ2Li4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR093blB0ci5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBM
dGQuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2Ug
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh
cmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiR093blB0ci5oIgotCi0jaWYgVVNFKEdMSUIpCi0KLSNpbmNsdWRlIDxnaW8v
Z2lvLmg+Ci0jaW5jbHVkZSA8Z2xpYi5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGUg
PD4gV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZnJlZU93bmVkR1B0cjxHRXJyb3I+KEdFcnJvciog
cHRyKQotewotICAgIGlmIChwdHIpCi0gICAgICAgIGdfZXJyb3JfZnJlZShwdHIpOwotfQotCi10
ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8R0xpc3Q+KEdMaXN0KiBwdHIpCi17Ci0gICAg
Z19saXN0X2ZyZWUocHRyKTsKLX0KLQotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdT
TGlzdD4oR1NMaXN0KiBwdHIpCi17Ci0gICAgZ19zbGlzdF9mcmVlKHB0cik7Ci19Ci0KLXRlbXBs
YXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxHUGF0dGVyblNwZWM+KEdQYXR0ZXJuU3BlYyogcHRy
KQotewotICAgIGlmIChwdHIpCi0gICAgICAgIGdfcGF0dGVybl9zcGVjX2ZyZWUocHRyKTsKLX0K
LQotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdEaXI+KEdEaXIqIHB0cikKLXsKLSAg
ICBpZiAocHRyKQotICAgICAgICBnX2Rpcl9jbG9zZShwdHIpOwotfQotCi10ZW1wbGF0ZSA8PiB2
b2lkIGZyZWVPd25lZEdQdHI8R1RpbWVyPihHVGltZXIqIHB0cikKLXsKLSAgICBpZiAocHRyKQot
ICAgICAgICBnX3RpbWVyX2Rlc3Ryb3kocHRyKTsKLX0KLQotdGVtcGxhdGUgPD4gdm9pZCBmcmVl
T3duZWRHUHRyPEdLZXlGaWxlPihHS2V5RmlsZSogcHRyKQotewotICAgIGlmIChwdHIpCi0gICAg
ICAgIGdfa2V5X2ZpbGVfZnJlZShwdHIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2Vu
ZGlmIC8vIFVTRShHTElCKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ29iamVjdC9HT3du
UHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dPd25QdHIuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggY2QyNjIzYi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nb2Jq
ZWN0L0dPd25QdHIuaAorKysgL2Rldi9udWxsCkBAIC0xLDE0NCArMCwwIEBACi0vKgotICogIENv
cHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCi0gKgotICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZu
ZGVmIEdPd25QdHJfaAotI2RlZmluZSBHT3duUHRyX2gKLQotI2lmIFVTRShHTElCKQotCi0jaW5j
bHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+Ci0KLWV4dGVybiAiQyIgdm9pZCBnX2ZyZWUodm9pZCopOwotCi1u
YW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGZyZWVP
d25lZEdQdHIoVCogcHRyKTsKLXRlbXBsYXRlPD4gV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZnJl
ZU93bmVkR1B0cjxHRXJyb3I+KEdFcnJvciopOwotdGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQ
dHI8R0xpc3Q+KEdMaXN0Kik7Ci10ZW1wbGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxHU0xpc3Q+
KEdTTGlzdCopOwotdGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8R1BhdHRlcm5TcGVjPihH
UGF0dGVyblNwZWMqKTsKLXRlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdEaXI+KEdEaXIq
KTsKLXRlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdUaW1lcj4oR1RpbWVyKik7Ci10ZW1w
bGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxHS2V5RmlsZT4oR0tleUZpbGUqKTsKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEdPd25QdHIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEdPd25QdHIpOwotcHVibGljOgotICAgIGV4cGxpY2l0IEdPd25QdHIoVCogcHRyID0gMCkgOiBt
X3B0cihwdHIpIHsgfQotICAgIH5HT3duUHRyKCkgeyBmcmVlT3duZWRHUHRyKG1fcHRyKTsgfQot
Ci0gICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KLSAgICBUKiByZWxlYXNlKCkK
LSAgICB7Ci0gICAgICAgIFQqIHB0ciA9IG1fcHRyOwotICAgICAgICBtX3B0ciA9IDA7Ci0gICAg
ICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgVComIG91dFB0cigpCi0gICAgewotICAgICAg
ICBBU1NFUlQoIW1fcHRyKTsKLSAgICAgICAgcmV0dXJuIG1fcHRyOwotICAgIH0KLQotICAgIHZv
aWQgc2V0KFQqIHB0cikKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghcHRyIHx8IG1fcHRyICE9IHB0
cik7Ci0gICAgICAgIGZyZWVPd25lZEdQdHIobV9wdHIpOwotICAgICAgICBtX3B0ciA9IHB0cjsK
LSAgICB9Ci0KLSAgICB2b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIFQqIHB0ciA9IG1fcHRy
OwotICAgICAgICBtX3B0ciA9IDA7Ci0gICAgICAgIGZyZWVPd25lZEdQdHIocHRyKTsKLSAgICB9
Ci0KLSAgICBUJiBvcGVyYXRvciooKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcHRy
KTsKLSAgICAgICAgcmV0dXJuICptX3B0cjsKLSAgICB9Ci0KLSAgICBUKiBvcGVyYXRvci0+KCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3B0cik7Ci0gICAgICAgIHJldHVybiBtX3B0
cjsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3B0cjsg
fQotCi0gICAgLy8gVGhpcyBjb252ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBjb252
ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBvdGhlciBpbnRlZ2VyIHR5cGVzLgotICAgIHR5cGVk
ZWYgVCogR093blB0cjo6KlVuc3BlY2lmaWVkQm9vbFR5cGU7Ci0gICAgb3BlcmF0b3IgVW5zcGVj
aWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8gJkdPd25QdHI6Om1fcHRyIDog
MDsgfQotCi0gICAgdm9pZCBzd2FwKEdPd25QdHImIG8pIHsgc3RkOjpzd2FwKG1fcHRyLCBvLm1f
cHRyKTsgfQotCi1wcml2YXRlOgotICAgIFQqIG1fcHRyOwotfTsKLQotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGlubGluZSB2b2lkIHN3YXAoR093blB0cjxUPiYgYSwgR093blB0cjxUPiYgYikKLXsK
LSAgICBhLnN3YXAoYik7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdPd25QdHI8VD4mIGEsIFUqIGIpCi17IAotICAg
IHJldHVybiBhLmdldCgpID09IGI7IAotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShUKiBhLCBjb25zdCBHT3duUHRyPFU+JiBiKSAK
LXsKLSAgICByZXR1cm4gYSA9PSBiLmdldCgpOyAKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgR093blB0cjxUPiYgYSwg
VSogYikKLXsKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBiOyAKLX0KLQotdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oVCogYSwgY29uc3QgR093
blB0cjxVPiYgYikKLXsgCi0gICAgcmV0dXJuIGEgIT0gYi5nZXQoKTsgCi19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBpbmxpbmUgdHlwZW5hbWUgR093blB0cjxUPjo6UHRyVHlwZSBnZXRQdHIo
Y29uc3QgR093blB0cjxUPiYgcCkKLXsKLSAgICByZXR1cm4gcC5nZXQoKTsKLX0KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGZyZWVPd25lZEdQdHIoVCogcHRyKQotewotICAg
IGdfZnJlZShwdHIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpHT3du
UHRyOwotCi0jZW5kaWYgLy8gVVNFKEdMSUIpCi0KLSNlbmRpZiAvLyBHT3duUHRyX2gKLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ29iamVjdC9HVW5pcXVlUHRyLmggYi9Tb3VyY2UvV1RG
L3d0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaAppbmRleCAyMjcxODEyLi5iY2ZhYTNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaApAQCAtMjQsNiArMjQsNyBAQAogI2lmIFVTRShHTElC
KQogCiAjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
CiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNTcsOSArNTgsNjggQEAgdXNpbmcgR1VuaXF1ZVB0ciA9
IHN0ZDo6dW5pcXVlX3B0cjxULCBHUHRyRGVsZXRlcjxUPj47CiBGT1JfRUFDSF9HTElCX0RFTEVU
RVIoV1RGX0RFRklORV9HUFRSX0RFTEVURVIpCiAjdW5kZWYgRk9SX0VBQ0hfR0xJQl9ERUxFVEVS
CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBHVW5pcXVlT3V0UHRyIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShHVW5pcXVlT3V0UHRyKTsKK3B1YmxpYzoKKyAgICBHVW5pcXVlT3V0
UHRyKCkKKyAgICAgICAgOiBtX3B0cihudWxscHRyKQorICAgIHsKKyAgICB9CisKKyAgICB+R1Vu
aXF1ZU91dFB0cigpCisgICAgeworICAgICAgICByZXNldCgpOworICAgIH0KKworICAgIFQqJiBv
dXRQdHIoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fcHRyOwor
ICAgIH0KKworICAgIEdVbmlxdWVQdHI8VD4gcmVsZWFzZSgpCisgICAgeworICAgICAgICBHVW5p
cXVlUHRyPFQ+IHB0cihtX3B0cik7CisgICAgICAgIG1fcHRyID0gbnVsbHB0cjsKKyAgICAgICAg
cmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBUJiBvcGVyYXRvciooKSBjb25zdAorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fcHRyKTsKKyAgICAgICAgcmV0dXJuICptX3B0cjsKKyAgICB9CisKKyAg
ICBUKiBvcGVyYXRvci0+KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3B0cik7Cisg
ICAgICAgIHJldHVybiBtX3B0cjsKKyAgICB9CisKKyAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVy
biBtX3B0cjsgfQorCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7
IH0KKworICAgIC8vIFRoaXMgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29u
dmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3RoZXIgaW50ZWdlciB0eXBlcy4KKyAgICB0eXBl
ZGVmIFQqIEdVbmlxdWVPdXRQdHI6OipVbnNwZWNpZmllZEJvb2xUeXBlOworICAgIG9wZXJhdG9y
IFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3B0ciA/ICZHVW5pcXVlT3V0
UHRyOjptX3B0ciA6IDA7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHJlc2V0KCkKKyAgICB7Cisg
ICAgICAgIGlmIChtX3B0cikgeworICAgICAgICAgICAgR1VuaXF1ZVB0cjxUPiBkZWxldGVQdHIo
bV9wdHIpOworICAgICAgICAgICAgbV9wdHIgPSBudWxscHRyOworICAgICAgICB9CisgICAgfQor
CisgICAgVCogbV9wdHI7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpH
VW5pcXVlUHRyOwordXNpbmcgV1RGOjpHVW5pcXVlT3V0UHRyOwogCiAjZW5kaWYgLy8gVVNFKEdM
SUIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA1NTk4OGVmLi5jNTIzMTVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNjUgQEAKKzIwMTQtMDEtMjQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHTElCXSBBZGQgR1VuaXF1ZU91dFB0ciBhbmQgdXNlIGl0IGlu
c3RlYWQgb2YgR093blB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI3NTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXNlIEdVbmlxdWVPdXRQdHIgaW5zdGVhZCBvZiBHT3duUHRyLgorCisgICAgICAg
ICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAg
ICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlTWVzc2FnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ2xpYi9CYXR0ZXJ5UHJvdmlkZXJVUG93ZXIuY3BwOgorICAgICAgICAoQmF0dGVy
eVByb3ZpZGVyVVBvd2VyOjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmluaXRpYWxpemVHU3RyZWFtZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRUYWcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjplbmNvZGVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9hZFJlc291cmNlU2hhcmVkQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhT2JqZWN0R3RrOjpzZXRVUklMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRmlsZVN5
c3RlbUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkRnJvbUZpbGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFk
RGV2aWNlR3RrOjpyZWFkQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtJbnB1
dE1ldGhvZEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHdGtJbnB1dE1ldGhvZEZpbHRl
cjo6aGFuZGxlUHJlZWRpdENoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJv
YXJkSGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRIZWxwZXI6OmZpbGxE
YXRhT2JqZWN0RnJvbURyb3BEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhl
bWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnN5c3RlbUZvbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TaGFyZWRCdWZmZXJHdGsuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvZ3RrL0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlZGVudGlhbEZvckNoYWxsZW5nZUFzeW5jUmVhZHlDYWxsYmFjayk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25QdHJTb3VwLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnJlZGlyZWN0U2tpcENhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6Om5leHRNdWx0aXBhcnRSZXNwb25zZVBhcnRDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpzZW5kUmVxdWVzdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEZpbGVUb1Nv
dXBNZXNzYWdlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTb3VwUmVxdWVzdEFuZE1l
c3NhZ2VGb3JIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZENhbGxiYWNrKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OnBsYXRmb3JtU2VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OnBsYXRmb3JtQ2xvc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29ubmVjdGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFJl
YWR5Q2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29y
a1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpodHRw
UHJveHkpOgorCiAyMDE0LTAxLTI4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gUmVtb3ZlIHNvdXBVUklUb0tVUkwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDliZGM5OWUuLmVjM2FmOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQpAQCAtNTg1OCw4ICs1ODU4LDYgQEAgcGxhdGZvcm1fc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24u
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJXcml0ZUJhdGNo
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQldyaXRlQmF0Y2gu
Y3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAu
Y3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAu
aCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291
cC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVy
cm9yLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVy
cm9yU291cC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA2MWZiZmYyLi41MGM4
MzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTU3LDcgKzE1Nyw2IEBAIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVT
dG9yYWdlU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0b3Jh
Z2VTb3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAotICAgIHBs
YXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUHJveHlSZXNvbHZlclNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1By
b3h5U2VydmVyU291cC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RL
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggYmYwZjMyZi4u
YjgwMGZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTExNSw3ICsxMTUsNiBAQCBs
aXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29v
a2llU3RvcmFnZVNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxT
dG9yYWdlU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKLSAg
ICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Byb3h5UmVzb2x2ZXJTb3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291
cC9Qcm94eVNlcnZlclNvdXAuY3BwCkBAIC0yNDQsNyArMjQzLDYgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZVBsYXRmb3JtR1RLX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2ll
U3RvcmFnZVNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxTdG9y
YWdlU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKLSAgICBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Byb3h5UmVzb2x2ZXJTb3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Q
cm94eVNlcnZlclNvdXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5j
cHAKaW5kZXggODE2MjQ5NC4uMjVkZGNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyLmNwcApAQCAtMjQsMTIgKzI0LDEyIEBACiAKICNpbmNsdWRlICJBdWRpb0NoYW5u
ZWwuaCIKICNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSA8d3RmL2dv
YmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuaCIK
ICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5oPgor
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0xNTAsOCArMTUwLDggQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpm
aW5pc2hCdWlsZGluZ1BpcGVsaW5lQWZ0ZXJXYXZQYXJzZXJQYWRSZWFkeShHc3QKIAogZ2Jvb2xl
YW4gQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBt
ZXNzYWdlKQogewotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBHT3duUHRyPGdjaGFy
PiBkZWJ1ZzsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91
dFB0cjxnY2hhcj4gZGVidWc7CiAKICAgICBzd2l0Y2ggKEdTVF9NRVNTQUdFX1RZUEUobWVzc2Fn
ZSkpIHsKICAgICBjYXNlIEdTVF9NRVNTQUdFX1dBUk5JTkc6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVS
ZWFkZXJHU3RyZWFtZXIuY3BwCmluZGV4IDhlMTRkMzEuLmU2ODdlNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBAIC0zMCw4ICszMCw4IEBACiAjaW5jbHVkZSA8
Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGdzdC9wYnV0aWxzL3BidXRpbHMuaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlx
dWVQdHIuaD4KIAogI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgogCkBAIC0yMDMsOCArMjAz
LDggQEAgR3N0Rmxvd1JldHVybiBBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZVNhbXBsZShHc3RBcHBT
aW5rKiBzaW5rKQogCiBnYm9vbGVhbiBBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZU1lc3NhZ2UoR3N0
TWVzc2FnZSogbWVzc2FnZSkKIHsKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgR093
blB0cjxnY2hhcj4gZGVidWc7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAg
IEdVbmlxdWVPdXRQdHI8Z2NoYXI+IGRlYnVnOwogCiAgICAgc3dpdGNoIChHU1RfTUVTU0FHRV9U
WVBFKG1lc3NhZ2UpKSB7CiAgICAgY2FzZSBHU1RfTUVTU0FHRV9FT1M6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0JhdHRlcnlQcm92aWRlclVQb3dlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0JhdHRlcnlQcm92aWRlclVQb3dlci5jcHAKaW5k
ZXggNmE5ZjFiZi4uZWZjODAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9CYXR0ZXJ5UHJvdmlkZXJVUG93ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyLmNwcApAQCAtMjUsNyArMjUsNyBAQAogI2lu
Y2x1ZGUgIkJhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudC5oIgogI2luY2x1ZGUgPGNtYXRoPgog
I2luY2x1ZGUgPGxpbWl0cz4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIApAQCAtNTEsNyArNTEsNyBAQCB2b2lkIEJhdHRlcnlQcm92aWRlclVQb3dlcjo6c3RhcnRV
cGRhdGluZygpCiAgICAgQVNTRVJUKCFtX3Vwb3dlckNsaWVudCk7CiAgICAgbV91cG93ZXJDbGll
bnQgPSBhZG9wdEdSZWYodXBfY2xpZW50X25ldygpKTsKIAotICAgIEdPd25QdHI8R0Vycm9yPiBl
cnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCF1cF9jbGll
bnRfZW51bWVyYXRlX2RldmljZXNfc3luYyhtX3Vwb3dlckNsaWVudC5nZXQoKSwgMCwgJmVycm9y
Lm91dFB0cigpKSkgewogICAgICAgICBtX2NsaWVudC0+dXBkYXRlQmF0dGVyeVN0YXR1cyhOb3RB
dmFpbGFibGUpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMu
Y3BwCmluZGV4IGM5NjMzMGMuLmE2YWFlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRp
ZXMuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAKICNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4K
ICNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0xMjYsNyArMTI2LDcgQEAgYm9vbCBpbml0aWFsaXplR1N0cmVhbWVyKCkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIAotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAg
ICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBw
cm9iYWJseSBwYXNzIHRoZSBhcmd1bWVudHMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgogICAgIGJv
b2wgZ3N0SW5pdGlhbGl6ZWQgPSBnc3RfaW5pdF9jaGVjaygwLCAwLCAmZXJyb3Iub3V0UHRyKCkp
OwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZ3N0SW5pdGlhbGl6ZWQsICJHU3RyZWFtZXIgaW5p
dGlhbGl6YXRpb24gZmFpbGVkOiAlcyIsIGVycm9yID8gZXJyb3ItPm1lc3NhZ2UgOiAidW5rbm93
biBlcnJvciBvY2N1cnJlZCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAppbmRleCAxNGM1NThmLi5mMjY2NmI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2lu
Y2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9taXNzaW5nLXBsdWdpbnMu
aD4KICNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKQEAgLTk0NSw4ICs5NDQsOCBAQCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YnVmZmVyZWQoKSBjb25zdAogCiBnYm9vbGVhbiBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVz
c2FnZSkKIHsKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyOwotICAgIEdPd25QdHI8Z2NoYXI+IGRl
YnVnOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnI7CisgICAgR1VuaXF1ZU91dFB0cjxn
Y2hhcj4gZGVidWc7CiAgICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBlcnJvcjsKICAgICBi
b29sIGlzc3VlRXJyb3IgPSB0cnVlOwogICAgIGJvb2wgYXR0ZW1wdE5leHRMb2NhdGlvbiA9IGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCmluZGV4
IGE2ZjkyN2YuLjQ1ZjRmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdT
dHJlYW1lci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJUcmFja1ByaXZhdGVCYXNl
LmgiCiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5j
bHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlx
dWVQdHIuaD4KIAogR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTih3ZWJraXRfbWVkaWFfcGxheWVy
X2RlYnVnKTsKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF9tZWRpYV9wbGF5ZXJfZGVi
dWcKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5v
dGlmeVRyYWNrT2ZBY3RpdmVDaGFuZ2VkKCkKIAogYm9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVh
bWVyOjpnZXRUYWcoR3N0VGFnTGlzdCogdGFncywgY29uc3QgZ2NoYXIqIHRhZ05hbWUsIFN0cmlu
ZyYgdmFsdWUpCiB7Ci0gICAgR093blB0cjxnY2hhcj4gdGFnVmFsdWU7CisgICAgR1VuaXF1ZU91
dFB0cjxnY2hhcj4gdGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRh
Z3MsIHRhZ05hbWUsICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgSU5GT19NRURJQV9N
RVNTQUdFKCJUcmFjayAlZCBnb3QgJXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUu
Z2V0KCkpOwogICAgICAgICB2YWx1ZSA9IHRhZ1ZhbHVlLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHAKaW5k
ZXggNzY2ZjZjNS4uNzhhNjBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwCkBAIC0yNSwxNCArMjUsMTQgQEAK
ICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNpbmNs
dWRlIDxndGsvZ3RrLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgZW5jb2RlSW1h
Z2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBkb3VibGUqIHF1YWxpdHksIEdPd25QdHI8Z2NoYXI+JiBidWZmZXIsIGdzaXplJiBidWZmZXJT
aXplKQorc3RhdGljIGJvb2wgZW5jb2RlSW1hZ2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBkb3VibGUqIHF1YWxpdHksIEdVbmlxdWVPdXRQ
dHI8Z2NoYXI+JiBidWZmZXIsIGdzaXplJiBidWZmZXJTaXplKQogewogICAgIC8vIExpc3Qgb2Yg
c3VwcG9ydGVkIGltYWdlIGVuY29kaW5nIHR5cGVzIGNvbWVzIGZyb20gdGhlIEdka1BpeGJ1ZiBk
b2N1bWVudGF0aW9uLgogICAgIC8vIGh0dHA6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dkay1waXhi
dWYvc3RhYmxlL2dkay1waXhidWYtRmlsZS1zYXZpbmcuaHRtbCNnZGstcGl4YnVmLXNhdmUtdG8t
YnVmZmVydgpAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShjYWlyb19z
dXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0CiAgICAgaWYg
KCFwaXhidWYpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEdPd25QdHI8R0Vycm9yPiBl
cnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKHR5cGUgPT0g
ImpwZWciICYmIHF1YWxpdHkgJiYgKnF1YWxpdHkgPj0gMC4wICYmICpxdWFsaXR5IDw9IDEuMCkg
ewogICAgICAgICBTdHJpbmcgcXVhbGl0eVN0cmluZyA9IFN0cmluZzo6Zm9ybWF0KCIlZCIsIHN0
YXRpY19jYXN0PGludD4oKnF1YWxpdHkgKiAxMDAuMCArIDAuNSkpOwogICAgICAgICBnZGtfcGl4
YnVmX3NhdmVfdG9fYnVmZmVyKHBpeGJ1Zi5nZXQoKSwgJmJ1ZmZlci5vdXRQdHIoKSwgJmJ1ZmZl
clNpemUsIHR5cGUudXRmOCgpLmRhdGEoKSwgJmVycm9yLm91dFB0cigpLCAicXVhbGl0eSIsIHF1
YWxpdHlTdHJpbmcudXRmOCgpLmRhdGEoKSwgTlVMTCk7CkBAIC03OSw3ICs3OSw3IEBAIFN0cmlu
ZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRv
dWJsZSogcXVhbGl0eSwgQ29vCiB7CiAgICAgQVNTRVJUKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBlKSk7CiAKLSAgICBHT3duUHRy
PGdjaGFyPiBidWZmZXI7CisgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gYnVmZmVyOwogICAgIGdz
aXplIGJ1ZmZlclNpemU7CiAgICAgaWYgKCFlbmNvZGVJbWFnZShtX2RhdGEubV9zdXJmYWNlLmdl
dCgpLCBtaW1lVHlwZSwgcXVhbGl0eSwgYnVmZmVyLCBidWZmZXJTaXplKSkKICAgICAgICAgcmV0
dXJuICJkYXRhOiwiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0ltYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0
ay9JbWFnZUd0ay5jcHAKaW5kZXggMmU3YzQ0Yy4uNjIwOGY3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCkBAIC0zMCw3ICszMCw2
IEBACiAjaW5jbHVkZSAiR1VuaXF1ZVB0ckd0ay5oIgogI2luY2x1ZGUgIkdka0NhaXJvVXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KQEAgLTY3LDcgKzY2LDcg
QEAgc3RhdGljIENTdHJpbmcgZ2V0VGhlbWVJY29uRmlsZU5hbWUoY29uc3QgY2hhciogbmFtZSwg
aW50IHNpemUpCiAKIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNl
U2hhcmVkQnVmZmVyKENTdHJpbmcgbmFtZSkKIHsKLSAgICBHT3duUHRyPGdjaGFyPiBjb250ZW50
OworICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IGNvbnRlbnQ7CiAgICAgZ3NpemUgbGVuZ3RoOwog
ICAgIGlmICghZ19maWxlX2dldF9jb250ZW50cyhuYW1lLmRhdGEoKSwgJmNvbnRlbnQub3V0UHRy
KCksICZsZW5ndGgsIDApKQogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcAppbmRleCA3
NzE1NTAwLi5iYzMzYmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
RGF0YU9iamVjdEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFP
YmplY3RHdGsuY3BwCkBAIC0yMSw3ICsyMSw2IEBACiAKICNpbmNsdWRlICJtYXJrdXAuaCIKICNp
bmNsdWRlIDxndGsvZ3RrLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAKQEAgLTEwMiw3ICsxMDEsNyBAQCB2b2lkIERhdGFPYmplY3RHdGs6OnNl
dFVSSUxpc3QoY29uc3QgU3RyaW5nJiB1cmlMaXN0U3RyaW5nKQogICAgICAgICAgICAgICAgIHNl
dFVSTCA9IHRydWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIEdPd25QdHI8R0Vycm9y
PiBlcnJvcjsKKyAgICAgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAg
ICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lKGdfZmlsZW5hbWVfZnJvbV91cmkobGlu
ZS51dGY4KCkuZGF0YSgpLCAwLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICAgICAgICAgIGlmICgh
ZXJyb3IgJiYgZmlsZW5hbWUpCiAgICAgICAgICAgICAgICAgbV9maWxlbmFtZXMuYXBwZW5kKFN0
cmluZzo6ZnJvbVVURjgoZmlsZW5hbWUuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcAppbmRleCA3ZmIwMDY5Li42YTkxNjE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwCkBAIC0yOCw3ICsy
OCw2IEBACiAjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRl
IDxnbGliL2dzdGRpby5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1
ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dsaWJVdGlsaXRpZXMuaD4KQEAgLTMzNCw3
ICszMzMsNyBAQCBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIAogaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIEdPd25QdHI8
R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgZG8g
ewogICAgICAgICBnc3NpemUgYnl0ZXNSZWFkID0gZ19pbnB1dF9zdHJlYW1fcmVhZChnX2lvX3N0
cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLCBsZW5ndGgsIDAsICZlcnJv
ci5vdXRQdHIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR2Ft
ZXBhZHNHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNw
cAppbmRleCA0NDJiYmVlLi4zN2Y4NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvR2FtZXBhZHNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9HYW1lcGFkc0d0ay5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlIDxndWRldi9ndWRl
di5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC04MCw3ICs3OSw3IEBAIEdhbWVwYWREZXZpY2VH
dGs6On5HYW1lcGFkRGV2aWNlR3RrKCkKIGdib29sZWFuIEdhbWVwYWREZXZpY2VHdGs6OnJlYWRD
YWxsYmFjayhHT2JqZWN0KiBwb2xsYWJsZVN0cmVhbSwgZ3BvaW50ZXIgZGF0YSkKIHsKICAgICBH
YW1lcGFkRGV2aWNlR3RrKiBnYW1lcGFkRGV2aWNlID0gcmVpbnRlcnByZXRfY2FzdDxHYW1lcGFk
RGV2aWNlR3RrKj4oZGF0YSk7Ci0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlx
dWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBzdHJ1Y3QganNfZXZlbnQgZXZlbnQ7CiAKICAg
ICBnc3NpemUgbGVuID0gZ19wb2xsYWJsZV9pbnB1dF9zdHJlYW1fcmVhZF9ub25ibG9ja2luZyhH
X1BPTExBQkxFX0lOUFVUX1NUUkVBTShwb2xsYWJsZVN0cmVhbSksCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrSW5wdXRNZXRob2RGaWx0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmNwcAppbmRleCAwYTAy
NjY1Li44YTUyYjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3Rr
SW5wdXRNZXRob2RGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9H
dGtJbnB1dE1ldGhvZEZpbHRlci5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlIDxnZGsv
Z2Rra2V5c3ltcy5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIC8vIFRoZSBXaW5kb3dzIGNvbXBvc2l0aW9uIGtleSBl
dmVudCBjb2RlIGlzIDI5OSBvciBWS19QUk9DRVNTS0VZLiBXZSBuZWVkIHRvCiAvLyBlbWl0IHRo
aXMgY29kZSBmb3Igd2ViIGNvbXBhdGliaWxpdHkgcmVhc29ucyB3aGVuIGtleSBldmVudHMgdHJp
Z2dlcgpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgR3RrSW5wdXRNZXRob2RGaWx0ZXI6OmhhbmRs
ZVByZWVkaXRDaGFuZ2VkKCkKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgR093blB0cjxnY2hhcj4gbmV3UHJlZWRpdDsKKyAgICBHVW5pcXVlT3V0UHRyPGdjaGFy
PiBuZXdQcmVlZGl0OwogICAgIGd0a19pbV9jb250ZXh0X2dldF9wcmVlZGl0X3N0cmluZyhtX2Nv
bnRleHQuZ2V0KCksICZuZXdQcmVlZGl0Lm91dFB0cigpLCAwLCAmbV9jdXJzb3JPZmZzZXQpOwog
CiAgICAgaWYgKG1fcHJldmVudE5leHRDb21taXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAppbmRleCA1NTczNDE2Li44OWI5ZmJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3Bw
CkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIlRl
eHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0jaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjU5LDE4ICsyNTgsMTMgQEAgdm9pZCBQYXN0ZWJv
YXJkSGVscGVyOjpmaWxsRGF0YU9iamVjdEZyb21Ecm9wRGF0YShHdGtTZWxlY3Rpb25EYXRhKiBk
YXRhLCBndWludAogICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09IHVua25vd25BdG9tKSB7CiAgICAg
ICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRfbmV3X3BhcnNlZChyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X2RhdGEoZGF0
YSkpKTsKIAotICAgICAgICBHT3duUHRyPGdjaGFyPiBrZXk7Ci0gICAgICAgIEdPd25QdHI8Z2No
YXI+IHZhbHVlOworICAgICAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBrZXk7CisgICAgICAgIEdV
bmlxdWVPdXRQdHI8Z2NoYXI+IHZhbHVlOwogICAgICAgICBHVmFyaWFudEl0ZXIgaXRlcjsKIAog
ICAgICAgICBnX3ZhcmlhbnRfaXRlcl9pbml0KCZpdGVyLCB2YXJpYW50LmdldCgpKTsKLSAgICAg
ICAgd2hpbGUgKGdfdmFyaWFudF9pdGVyX25leHQoJml0ZXIsICJ7c3N9IiwgJmtleS5vdXRQdHIo
KSwgJnZhbHVlLm91dFB0cigpKSkgeworICAgICAgICB3aGlsZSAoZ192YXJpYW50X2l0ZXJfbmV4
dCgmaXRlciwgIntzc30iLCAma2V5Lm91dFB0cigpLCAmdmFsdWUub3V0UHRyKCkpKQogICAgICAg
ICAgICAgZGF0YU9iamVjdC0+c2V0VW5rbm93blR5cGVEYXRhKGtleS5nZXQoKSwgdmFsdWUuZ2V0
KCkpOwotCi0gICAgICAgICAgICAvLyBGSVhNRTogc2hvdWxkIEdPd25QdHIgYmUgc21hcnRlciBh
Ym91dCB0aGlzIGFuZCByZXBsYWNlIHRoZSBleGlzdGluZyBwdHIgd2hlbiBvdXRQdHIoKSBpcyB1
c2VkPwotICAgICAgICAgICAga2V5LmNsZWFyKCk7Ci0gICAgICAgICAgICB2YWx1ZS5jbGVhcigp
OwotICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCA2MjllOGQ2Li41NWM0MzlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTMwLDcgKzMwLDYg
QEAKICNpbmNsdWRlICJGaWxlTGlzdC5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNs
dWRlICJGb250RGVzY3JpcHRpb24uaCIKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+
CiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNp
bmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCkBAIC00OCw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8Z2Rr
L2dkay5oPgogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogI2lmIEVOQUJMRShQUk9HUkVTU19FTEVNRU5UKQpAQCAtNDQ0LDcgKzQ0NCw3IEBAIHZv
aWQgUmVuZGVyVGhlbWVHdGs6OnN5c3RlbUZvbnQoQ1NTVmFsdWVJRCwgRm9udERlc2NyaXB0aW9u
JiBmb250RGVzY3JpcHRpb24pIGNvCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoaXMgd2ls
bCBiZSBhIGZvbnQgc2VsZWN0aW9uIHN0cmluZyBsaWtlICJTYW5zIDEwIiBzbyB3ZSBjYW5ub3Qg
dXNlIGl0IGFzIHRoZSBmYW1pbHkgbmFtZS4KLSAgICBHT3duUHRyPGdjaGFyPiBmb250TmFtZTsK
KyAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBmb250TmFtZTsKICAgICBnX29iamVjdF9nZXQoc2V0
dGluZ3MsICJndGstZm9udC1uYW1lIiwgJmZvbnROYW1lLm91dFB0cigpLCBOVUxMKTsKIAogICAg
IFBhbmdvRm9udERlc2NyaXB0aW9uKiBwYW5nb0Rlc2NyaXB0aW9uID0gcGFuZ29fZm9udF9kZXNj
cmlwdGlvbl9mcm9tX3N0cmluZyhmb250TmFtZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkQnVmZmVyR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9TaGFyZWRCdWZmZXJHdGsuY3BwCmluZGV4IGM3YjRmMjcuLmVkOGRlNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRCdWZmZXJHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRCdWZmZXJHdGsuY3Bw
CkBAIC0yMCw3ICsyMCw3IEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKICNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKICNpbmNsdWRlIDxnbGliLmg+CkBAIC0zNCw5ICszNCw5IEBAIFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBT
dHJpbmcmIGZpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgQ1N0cmluZyBmaWxlbmFtZSA9IGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7Ci0gICAgR093blB0cjxnY2hhcj4gY29u
dGVudHM7CisgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gY29udGVudHM7CiAgICAgZ3NpemUgc2l6
ZTsKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+
IGVycm9yOwogICAgIGlmICghZ19maWxlX2dldF9jb250ZW50cyhmaWxlbmFtZS5kYXRhKCksICZj
b250ZW50cy5vdXRQdHIoKSwgJnNpemUsICZlcnJvci5vdXRQdHIoKSkpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBmaWxlICVzIC0gJXMiLCBm
aWxlbmFtZUZvckRpc3BsYXkoZmlsZVBhdGgpLnV0ZjgoKS5kYXRhKCksIGVycm9yLT5tZXNzYWdl
KTsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2d0ay9DcmVkZW50aWFsQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvZ3RrL0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwCmluZGV4IDE0
MTIwMDIuLjA4NmRiYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvZ3RrL0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvZ3RrL0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwCkBAIC0zNCw3ICsz
NCw2IEBACiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNpbmNsdWRlIDxsaWJzZWNyZXQv
c2VjcmV0Lmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjZW5kaWYKQEAgLTc3LDcgKzc2LDcgQEAgc3RhdGlj
IHZvaWQgY3JlZGVudGlhbEZvckNoYWxsZW5nZUFzeW5jUmVhZHlDYWxsYmFjayhTZWNyZXRTZXJ2
aWNlKiBzZXJ2aWNlLCBHQXMKICAgICB2b2lkKiBkYXRhID0gY2FsbGJhY2tEYXRhLT5kYXRhOwog
ICAgIGRlbGV0ZSBjYWxsYmFja0RhdGE7CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Cisg
ICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIEdVbmlxdWVQdHI8R0xpc3Q+IGVs
ZW1lbnRzKHNlY3JldF9zZXJ2aWNlX3NlYXJjaF9maW5pc2goc2VydmljZSwgYXN5bmNSZXN1bHQs
ICZlcnJvci5vdXRQdHIoKSkpOwogICAgIGlmIChlcnJvciB8fCAhZWxlbWVudHMgfHwgIWVsZW1l
bnRzLT5kYXRhKSB7CiAgICAgICAgIGNhbGxiYWNrKENyZWRlbnRpYWwoKSwgZGF0YSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25QdHJTb3VwLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWJiNDRiMy4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSWdh
bGlhIFMuTAotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0g
KiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNl
bnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv
ZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiR093blB0clNvdXAuaCIKLQotI2luY2x1ZGUgPGxpYnNvdXAvc291
cC5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRy
PFNvdXBVUkk+KFNvdXBVUkkqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAgICAgICBzb3VwX3Vy
aV9mcmVlKHB0cik7Ci19Ci0KLXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxTb3VwQ29v
a2llPihTb3VwQ29va2llKiBwdHIpCi17Ci0gICAgaWYgKHB0cikKLSAgICAgICAgc291cF9jb29r
aWVfZnJlZShwdHIpOwotfQotCi10ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8U291cE1l
c3NhZ2VIZWFkZXJzPihTb3VwTWVzc2FnZUhlYWRlcnMqIHB0cikKLXsKLSAgICBpZiAocHRyKQot
ICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19mcmVlKHB0cik7Ci19Ci0KLXRlbXBsYXRlIDw+
IHZvaWQgZnJlZU93bmVkR1B0cjxTb3VwQnVmZmVyPihTb3VwQnVmZmVyKiBwdHIpCi17Ci0gICAg
aWYgKHB0cikKLSAgICAgICAgc291cF9idWZmZXJfZnJlZShwdHIpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9HT3duUHRyU291cC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dP
d25QdHJTb3VwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlMjUzYmQuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25QdHJTb3Vw
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykg
MjAxMCBJZ2FsaWEgUy5MCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgR093blB0clNvdXBfaAotI2RlZmlu
ZSBHT3duUHRyU291cF9oCi0KLS8vIFdlIG5lZWQgdG8gaW5jbHVkZSBsaWJzb3VwIGhlYWRlcnMg
aGVyZSBiZWNhdXNlIHRoZSB3YXkgdGhhdCBTb3VwQnVmZmVyCi0vLyBpcyBkZWZpbmVkIGlzIG5v
dCBjb21wYXRpYmxlIHdpdGggZm9yd2FyZCBkZWNsYXJhdGlvbi4KLSNpbmNsdWRlIDxsaWJzb3Vw
L3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBX
VEYgewotCi10ZW1wbGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxTb3VwVVJJPihTb3VwVVJJKiBw
dHIpOwotdGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8U291cENvb2tpZT4oU291cENvb2tp
ZSogcHRyKTsKLXRlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPFNvdXBNZXNzYWdlSGVhZGVy
cz4oU291cE1lc3NhZ2VIZWFkZXJzKik7Ci10ZW1wbGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxT
b3VwQnVmZmVyPihTb3VwQnVmZmVyKik7Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAu
Y3BwCmluZGV4IDI5ZDc3N2UuLmRiMDNiYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC0z
Miw3ICszMiw3IEBACiAjaW5jbHVkZSAiQ29va2llSmFyU291cC5oIgogI2luY2x1ZGUgIkNyZWRl
bnRpYWxTdG9yYWdlLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkdPd25Q
dHJTb3VwLmgiCisjaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJIVFRQUGFy
c2Vycy5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJNSU1FVHlw
ZVJlZ2lzdHJ5LmgiCkBAIC01NSw3ICs1NSw2IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KLSNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KQEAgLTUwNCw3ICs1MDMsNyBAQCBzdGF0aWMgdm9pZCByZWRpcmVjdFNraXBDYWxsYmFj
ayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiBhc3luY1Jlc3VsdCwgZ3BvaW50ZXIgZAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlx
dWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0g
aGFuZGxlLT5nZXRJbnRlcm5hbCgpOwogICAgIGdzc2l6ZSBieXRlc1NraXBwZWQgPSBnX2lucHV0
X3N0cmVhbV9za2lwX2ZpbmlzaChkLT5tX2lucHV0U3RyZWFtLmdldCgpLCBhc3luY1Jlc3VsdCwg
JmVycm9yLm91dFB0cigpKTsKICAgICBpZiAoZXJyb3IpIHsKQEAgLTYxMCw3ICs2MDksNyBAQCBz
dGF0aWMgdm9pZCBuZXh0TXVsdGlwYXJ0UmVzcG9uc2VQYXJ0Q2FsbGJhY2soR09iamVjdCogLypz
b3VyY2UqLywgR0FzeW5jUmVzdWx0KgogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBo
YW5kbGUtPmdldEludGVybmFsKCk7CiAgICAgQVNTRVJUKCFkLT5tX2lucHV0U3RyZWFtKTsKIAot
ICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJy
b3I7CiAgICAgZC0+bV9pbnB1dFN0cmVhbSA9IGFkb3B0R1JlZihzb3VwX211bHRpcGFydF9pbnB1
dF9zdHJlYW1fbmV4dF9wYXJ0X2ZpbmlzaChkLT5tX211bHRpcGFydElucHV0U3RyZWFtLmdldCgp
LCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwogCiAgICAgaWYgKGVycm9yKSB7CkBAIC02NTcs
NyArNjU2LDcgQEAgc3RhdGljIHZvaWQgc2VuZFJlcXVlc3RDYWxsYmFjayhHT2JqZWN0KiwgR0Fz
eW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIGRhdGEpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+
IGVycm9yOwogICAgIEdSZWZQdHI8R0lucHV0U3RyZWFtPiBpbnB1dFN0cmVhbSA9IGFkb3B0R1Jl
Zihzb3VwX3JlcXVlc3Rfc2VuZF9maW5pc2goZC0+bV9zb3VwUmVxdWVzdC5nZXQoKSwgcmVzdWx0
LCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgaGFuZGxlLT5j
bGllbnQoKS0+ZGlkRmFpbChoYW5kbGUuZ2V0KCksIFJlc291cmNlRXJyb3I6Omh0dHBFcnJvcihz
b3VwTWVzc2FnZSwgZXJyb3IuZ2V0KCksIGQtPm1fc291cFJlcXVlc3QuZ2V0KCkpKTsKQEAgLTcy
Nyw3ICs3MjYsNyBAQCBzdGF0aWMgdm9pZCBjb250aW51ZUFmdGVyRGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCiAKIHN0YXRpYyBib29sIGFkZEZpbGVUb1NvdXBNZXNz
YWdlQm9keShTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZVN0cmlu
Zywgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aFRvU2VuZCwgdW5zaWduZWQgbG9uZyYgdG90
YWxCb2R5U2l6ZSkKIHsKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIENTdHJpbmcgZmlsZU5hbWUgPSBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZmlsZU5hbWVTdHJpbmcpOwogICAgIEdNYXBwZWRGaWxlKiBmaWxlTWFwcGlu
ZyA9IGdfbWFwcGVkX2ZpbGVfbmV3KGZpbGVOYW1lLmRhdGEoKSwgZmFsc2UsICZlcnJvci5vdXRQ
dHIoKSk7CiAgICAgaWYgKGVycm9yKQpAQCAtOTc4LDEyICs5NzcsMTEgQEAgc3RhdGljIGJvb2wg
Y3JlYXRlU291cFJlcXVlc3RBbmRNZXNzYWdlRm9ySGFuZGxlKFJlc291cmNlSGFuZGxlKiBoYW5k
bGUsIGNvbnN0IFIKIHsKICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5n
ZXRJbnRlcm5hbCgpOwogCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOwotCiAgICAgR1VuaXF1
ZVB0cjxTb3VwVVJJPiBzb3VwVVJJID0gcmVxdWVzdC5jcmVhdGVTb3VwVVJJKCk7CiAgICAgaWYg
KCFzb3VwVVJJKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBHVW5pcXVlT3V0UHRyPEdF
cnJvcj4gZXJyb3I7CiAgICAgZC0+bV9zb3VwUmVxdWVzdCA9IGFkb3B0R1JlZihzb3VwX3Nlc3Np
b25fcmVxdWVzdF91cmkoZC0+c291cFNlc3Npb24oKSwgc291cFVSSS5nZXQoKSwgJmVycm9yLm91
dFB0cigpKSk7CiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIGQtPm1fc291cFJlcXVlc3QuY2xl
YXIoKTsKQEAgLTEzMDEsNyArMTI5OSw3IEBAIHN0YXRpYyB2b2lkIHJlYWRDYWxsYmFjayhHT2Jq
ZWN0KiwgR0FzeW5jUmVzdWx0KiBhc3luY1Jlc3VsdCwgZ3BvaW50ZXIgZGF0YSkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgZ3NzaXplIGJ5dGVzUmVhZCA9IGdfaW5wdXRfc3Ry
ZWFtX3JlYWRfZmluaXNoKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGFzeW5jUmVzdWx0LCAmZXJy
b3Iub3V0UHRyKCkpOwogCiAgICAgaWYgKGVycm9yKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291
cC5jcHAKaW5kZXggNTUwOGYzNi4uYzAyYjYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3Vw
LmNwcApAQCAtNDIsNyArNDIsNyBAQAogI2luY2x1ZGUgPGdsaWIuaD4KIAogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAogI2RlZmluZSBSRUFEX0JVRkZFUl9TSVpFIDEwMjQKQEAgLTE2OCw3ICsxNjgsNyBAQCBpbnQg
U29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxl
bmd0aCkKICAgICBpZiAoIW1fb3V0cHV0U3RyZWFtIHx8ICFkYXRhKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJv
cj4gZXJyb3I7CiAgICAgZ3NzaXplIHdyaXR0ZW4gPSBnX3BvbGxhYmxlX291dHB1dF9zdHJlYW1f
d3JpdGVfbm9uYmxvY2tpbmcobV9vdXRwdXRTdHJlYW0uZ2V0KCksIGRhdGEsIGxlbmd0aCwgMCwg
JmVycm9yLm91dFB0cigpKTsKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgaWYgKGdfZXJyb3Jf
bWF0Y2hlcyhlcnJvci5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9XT1VMRF9CTE9DSykp
CkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnBsYXRmb3JtQ2xv
c2UoKQogICAgIHN0b3BXYWl0aW5nRm9yU29ja2V0V3JpdGFiaWxpdHkoKTsKIAogICAgIGlmICht
X3NvY2tldENvbm5lY3Rpb24pIHsKLSAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAg
ICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIGdfaW9fc3RyZWFtX2Ns
b3NlKEdfSU9fU1RSRUFNKG1fc29ja2V0Q29ubmVjdGlvbi5nZXQoKSksIDAsICZlcnJvci5vdXRQ
dHIoKSk7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRGYWls
U29ja2V0U3RyZWFtKHRoaXMsIFNvY2tldFN0cmVhbUVycm9yKGVycm9yLT5jb2RlLCBlcnJvci0+
bWVzc2FnZSkpOwpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpz
dG9wV2FpdGluZ0ZvclNvY2tldFdyaXRhYmlsaXR5KCkKIHN0YXRpYyB2b2lkIGNvbm5lY3RlZENh
bGxiYWNrKEdTb2NrZXRDbGllbnQqIGNsaWVudCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIHZvaWQq
IGlkKQogewogICAgIC8vIEFsd2F5cyBmaW5pc2ggdGhlIGNvbm5lY3Rpb24sIGV2ZW4gaWYgdGhp
cyBTb2NrZXRTdHJlYW1IYW5kbGUgd2FzIGRlYWN0aXZhdGVkIGVhcmxpZXIuCi0gICAgR093blB0
cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBH
U29ja2V0Q29ubmVjdGlvbiogc29ja2V0Q29ubmVjdGlvbiA9IGdfc29ja2V0X2NsaWVudF9jb25u
ZWN0X3RvX2hvc3RfZmluaXNoKGNsaWVudCwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOwogCiAg
ICAgLy8gVGhlIFNvY2tldFN0cmVhbUhhbmRsZSBoYXMgYmVlbiBkZWFjdGl2YXRlZCwgc28ganVz
dCBjbG9zZSB0aGUgY29ubmVjdGlvbiwgaWdub3JpbmcgZXJyb3JzLgpAQCAtMjY4LDcgKzI2OCw3
IEBAIHN0YXRpYyB2b2lkIGNvbm5lY3RlZENhbGxiYWNrKEdTb2NrZXRDbGllbnQqIGNsaWVudCwg
R0FzeW5jUmVzdWx0KiByZXN1bHQsIHZvaWQqCiBzdGF0aWMgdm9pZCByZWFkUmVhZHlDYWxsYmFj
ayhHSW5wdXRTdHJlYW0qIHN0cmVhbSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIHZvaWQqIGlkKQog
ewogICAgIC8vIEFsd2F5cyBmaW5pc2ggdGhlIHJlYWQsIGV2ZW4gaWYgdGhpcyBTb2NrZXRTdHJl
YW1IYW5kbGUgd2FzIGRlYWN0aXZhdGVkIGVhcmxpZXIuCi0gICAgR093blB0cjxHRXJyb3I+IGVy
cm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBnc3NpemUgYnl0ZXNS
ZWFkID0gZ19pbnB1dF9zdHJlYW1fcmVhZF9maW5pc2goc3RyZWFtLCByZXN1bHQsICZlcnJvci5v
dXRQdHIoKSk7CiAKICAgICBTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSA9IGdldEhhbmRsZUZy
b21JZChpZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDRmODM3OTYuLmE0Mzc5Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29y
a1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9T
b3VwTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIkNvb2tpZUphclNvdXAuaCIKLSNpbmNs
dWRlICJHT3duUHRyU291cC5oIgorI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSA8bGli
c291cC9zb3VwLmg+CkBAIC0yMDgsNyArMjA4LDcgQEAgY2hhciogU291cE5ldHdvcmtTZXNzaW9u
OjpodHRwUHJveHkoKSBjb25zdAogICAgIGlmICghc291cFJlc29sdmVyKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIEdPd25QdHI8U291cFVSST4gdXJpOworICAgIEdVbmlxdWVPdXRQ
dHI8U291cFVSST4gdXJpOwogICAgIGdfb2JqZWN0X2dldChzb3VwUmVzb2x2ZXIsIFNPVVBfUFJP
WFlfUkVTT0xWRVJfV0tfUFJPWFlfVVJJLCAmdXJpLm91dFB0cigpLCBudWxscHRyKTsKIAogICAg
IHJldHVybiB1cmkgPyBzb3VwX3VyaV90b19zdHJpbmcodXJpLmdldCgpLCBGQUxTRSkgOiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDk2NzZiYTQuLmM0MWM3M2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNCBAQAorMjAxNC0wMS0yNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dMSUJdIEFkZCBHVW5pcXVlT3V0UHRyIGFu
ZCB1c2UgaXQgaW5zdGVhZCBvZiBHT3duUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc1NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgR1VuaXF1ZU91dFB0ciBpbnN0ZWFkIG9mIEdPd25QdHIu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEd0ay5jcHA6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdGRvd25sb2FkLmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb3dubG9h
ZF9vcGVuX3N0cmVhbV9mb3JfdXJpKToKKyAgICAgICAgKHdlYmtpdF9kb3dubG9hZF9zZXRfZGVz
dGluYXRpb25fdXJpKToKKyAgICAgICAgKHdlYmtpdF9kb3dubG9hZF9yZWNlaXZlZF9kYXRhKToK
KyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VicGx1Z2luLmNwcDoKKyAgICAgICAgKHdlYmtpdF93
ZWJfcGx1Z2luX2dldF9wYXRoKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZXhwb3NlX2V2ZW50KToKKwogMjAxNC0wMS0yNyAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S10gTWFrZSB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF93ZWJfdmlldygpIHdvcmsgd2l0
aCBDdXN0b21Qcm90b2NvbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAppbmRleCAyMTk1YTg4Li5iMjRlMDg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC05NSw3ICs5NSw2IEBACiAjaW5jbHVkZSA8Z2xpYi5o
PgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CkBAIC0xMDQwLDcgKzEwMzksNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAg
IGlmICghZXJyb3JGaWxlKQogICAgICAgICBjb250ZW50ID0gbWFrZVN0cmluZygiPGh0bWw+PGJv
ZHk+Iiwgd2ViRXJyb3ItPm1lc3NhZ2UsICI8L2JvZHk+PC9odG1sPiIpOwogICAgIGVsc2Ugewot
ICAgICAgICBHT3duUHRyPGdjaGFyPiBmaWxlQ29udGVudDsKKyAgICAgICAgR1VuaXF1ZU91dFB0
cjxnY2hhcj4gZmlsZUNvbnRlbnQ7CiAgICAgICAgIGlmICghZ19maWxlX2xvYWRfY29udGVudHMo
ZXJyb3JGaWxlLmdldCgpLCAwLCAmZmlsZUNvbnRlbnQub3V0UHRyKCksIDAsIDAsIDApKQogICAg
ICAgICAgICAgY29udGVudCA9IG1ha2VTdHJpbmcoIjxodG1sPjxib2R5PiIsIHdlYkVycm9yLT5t
ZXNzYWdlLCAiPC9ib2R5PjwvaHRtbD4iKTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRHdGsuY3Bw
CmluZGV4IDIzMjM4ZjQuLmY5NGQwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEd0ay5jcHAKQEAgLTI4LDcgKzI4
LDYgQEAKICNpbmNsdWRlICJ3ZWJraXRzcGVsbGNoZWNrZXIuaCIKICNpbmNsdWRlICJ3ZWJraXR3
ZWJzZXR0aW5nc3ByaXZhdGUuaCIKICNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVkZSA8d3RmL2dv
YmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0ZG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRvd25s
b2FkLmNwcAppbmRleCBhMzk5YmYwLi43ZDY0NGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRkb3dubG9hZC5jcHAKQEAgLTM5LDggKzM5LDggQEAKICNpbmNsdWRlIDxnbGli
L2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWZkZWYgRVJST1IKQEAgLTQ2
NCw3ICs0NjQsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2Rvd25sb2FkX29wZW5fc3RyZWFt
X2Zvcl91cmkoV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkLCBjbwogCiAgICAgV2ViS2l0RG93bmxv
YWRQcml2YXRlKiBwcml2ID0gZG93bmxvYWQtPnByaXY7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmls
ZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl91cmkodXJpKSk7Ci0gICAgR093blB0cjxHRXJy
b3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKIAogICAgIGlmIChh
cHBlbmQpCiAgICAgICAgIHByaXYtPm91dHB1dFN0cmVhbSA9IGdfZmlsZV9hcHBlbmRfdG8oZmls
ZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCBOVUxMLCAmZXJyb3Iub3V0UHRyKCkpOwpAQCAt
NzA1LDcgKzcwNSw3IEBAIHZvaWQgd2Via2l0X2Rvd25sb2FkX3NldF9kZXN0aW5hdGlvbl91cmko
V2ViS2l0RG93bmxvYWQqIGRvd25sb2FkLCBjb25zdCBnY2hhcioKIAogICAgICAgICBHUmVmUHRy
PEdGaWxlPiBzcmMgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfdXJpKHByaXYtPmRlc3RpbmF0
aW9uVVJJKSk7CiAgICAgICAgIEdSZWZQdHI8R0ZpbGU+IGRlc3QgPSBhZG9wdEdSZWYoZ19maWxl
X25ld19mb3JfdXJpKGRlc3RpbmF0aW9uX3VyaSkpOwotICAgICAgICBHT3duUHRyPEdFcnJvcj4g
ZXJyb3I7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKIAogICAgICAgICBn
X2ZpbGVfbW92ZShzcmMuZ2V0KCksIGRlc3QuZ2V0KCksIEdfRklMRV9DT1BZX0JBQ0tVUCwgMCwg
MCwgMCwgJmVycm9yLm91dFB0cigpKTsKIApAQCAtODY1LDcgKzg2NSw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF9kb3dubG9hZF9yZWNlaXZlZF9kYXRhKFdlYktpdERvd25sb2FkKiBkb3dubG9hZCwg
Y29uc3QgZ2NoYXIqCiAgICAgQVNTRVJUKHByaXYtPm91dHB1dFN0cmVhbSk7CiAKICAgICBnc2l6
ZSBieXRlc193cml0dGVuOwotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAKICAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsKEdf
T1VUUFVUX1NUUkVBTShwcml2LT5vdXRwdXRTdHJlYW0pLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNfd3JpdHRlbiwgTlVMTCwgJmVycm9yLm91dFB0
cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwbHVn
aW4uY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBsdWdpbi5jcHAKaW5k
ZXggY2VjNjE0Zi4uYzcxNjJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnBsdWdpbi5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJ3ZWJraXRnbG9iYWxz
cHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnBsdWdpbnByaXZhdGUuaCIKICNpbmNsdWRl
IDxnbGliL2dpMThuLWxpYi5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIC8qKgogICogU0VDVElPTjp3ZWJr
aXR3ZWJwbHVnaW4KQEAgLTE5Miw3ICsxOTIsNyBAQCBjb25zdCBjaGFyKiB3ZWJraXRfd2ViX3Bs
dWdpbl9nZXRfcGF0aChXZWJLaXRXZWJQbHVnaW4qIHBsdWdpbikKICAgICBpZiAocHJpdi0+cGF0
aCkKICAgICAgICAgcmV0dXJuIHByaXYtPnBhdGguZ2V0KCk7CiAKLSAgICBHT3duUHRyPEdFcnJv
cj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIHByaXYtPnBh
dGgucmVzZXQoZ19maWxlbmFtZV9mcm9tX3V0ZjgocHJpdi0+Y29yZVBsdWdpbi0+cGF0aCgpLnV0
ZjgoKS5kYXRhKCksIC0xLCAwLCAwLCAmZXJyb3Iub3V0UHRyKCkpKTsKIAogICAgIGlmICghZXJy
b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggNzU3
ZmVlMy4uYTFlNDFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcApAQCAtMTE5LDcgKzExOSw2IEBACiAjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUu
aD4KICNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGli
Lmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCkBAIC02NzAsNyAr
NjY5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9wcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEcKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRf
d2ViX3ZpZXdfZXhwb3NlX2V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEV4cG9zZSog
ZXZlbnQpCiB7CiAgICAgaW50IHJlY3RDb3VudDsKLSAgICBHT3duUHRyPEdka1JlY3RhbmdsZT4g
cmVjdHM7CisgICAgR1VuaXF1ZU91dFB0cjxHZGtSZWN0YW5nbGU+IHJlY3RzOwogICAgIGdka19y
ZWdpb25fZ2V0X3JlY3RhbmdsZXMoZXZlbnQtPnJlZ2lvbiwgJnJlY3RzLm91dFB0cigpLCAmcmVj
dENvdW50KTsKIAogICAgIFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGdka19jYWlyb19j
cmVhdGUoZXZlbnQtPndpbmRvdykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGJiMmJkNjIuLmZiMDM5ZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxNC0wMS0yNCAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dMSUJdIEFkZCBHVW5pcXVlT3V0
UHRyIGFuZCB1c2UgaXQgaW5zdGVhZCBvZiBHT3duUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc1NTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgR1VuaXF1ZU91dFB0ciBpbnN0ZWFkIG9mIEdP
d25QdHIuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291
cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdldENhY2hlRGlza0ZyZWVTaXplKToKKyAgICAgICAg
KiBTaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAocHJvY2Vzc1BlbmRpbmdJY29u
c0ZvclBhZ2VVUkwpOgorICAgICAgICAod2Via2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0X2Zhdmlj
b24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3Qu
Y3BwOgorICAgICAgICAod2Via2l0VVJJU2NoZW1lUmVxdWVzdFJlYWRDYWxsYmFjayk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgIChnb3RG
YXZpY29uQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvZ3Rr
L1dlYkluc3BlY3RvclNlcnZlckd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clNlcnZlcjo6cGxhdGZvcm1SZXNvdXJjZUZvclBhdGgpOgorICAgICAgICAqIFVJUHJvY2Vzcy9M
YXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJv
Y2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lu
cy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mvc291
cC9XZWJQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdldENhY2hlRGlza0ZyZWVT
aXplKToKKwogMjAxNC0wMS0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS10gTWFrZSB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dl
dF93ZWJfdmlldygpIHdvcmsgd2l0aCBDdXN0b21Qcm90b2NvbHMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApp
bmRleCA1NWMxNGZhLi42MjA3ZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0zNyw4ICszNyw4
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU291cE5ldHdvcmtTZXNzaW9uLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5j
bHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyB1aW50NjRfdCBnZXRDYWNo
ZURpc2tGcmVlU2l6ZShTb3VwQ2FjaGUqIGNhY2hlKQogewogICAgIEFTU0VSVChjYWNoZSk7CiAK
LSAgICBHT3duUHRyPGNoYXI+IGNhY2hlRGlyOworICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gY2Fj
aGVEaXI7CiAgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKGNhY2hlKSwgImNhY2hlLWRpciIsICZj
YWNoZURpci5vdXRQdHIoKSwgTlVMTCk7CiAgICAgaWYgKCFjYWNoZURpcikKICAgICAgICAgcmV0
dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAv
RG93bmxvYWRTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9E
b3dubG9hZFNvdXAuY3BwCmluZGV4IDM0ZjNkNWYuLjQwN2U0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCkBAIC0z
Miw3ICszMiw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oPgogI2luY2x1ZGUgPGdpby9naW8u
aD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0xMDYsNyArMTA1LDcgQEAgcHVibGljOgogCiAg
ICAgICAgIFN0cmluZyBpbnRlcm1lZGlhdGVVUkkgPSBtX2Rlc3RpbmF0aW9uVVJJICsgIi53a2Rv
d25sb2FkIjsKICAgICAgICAgbV9pbnRlcm1lZGlhdGVGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9u
ZXdfZm9yX3VyaShpbnRlcm1lZGlhdGVVUkkudXRmOCgpLmRhdGEoKSkpOwotICAgICAgICBHT3du
UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsK
ICAgICAgICAgbV9vdXRwdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19maWxlX3JlcGxhY2UobV9pbnRl
cm1lZGlhdGVGaWxlLmdldCgpLCAwLCBUUlVFLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAsICZlcnJv
ci5vdXRQdHIoKSkpOwogICAgICAgICBpZiAoIW1fb3V0cHV0U3RyZWFtKSB7CiAgICAgICAgICAg
ICBkb3dubG9hZEZhaWxlZChwbGF0Zm9ybURvd25sb2FkRGVzdGluYXRpb25FcnJvcihyZXNwb25z
ZSwgZXJyb3ItPm1lc3NhZ2UpKTsKQEAgLTEyNCw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgICAg
IH0KIAogICAgICAgICBnc2l6ZSBieXRlc1dyaXR0ZW47Ci0gICAgICAgIEdPd25QdHI8R0Vycm9y
PiBlcnJvcjsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICBn
X291dHB1dF9zdHJlYW1fd3JpdGVfYWxsKEdfT1VUUFVUX1NUUkVBTShtX291dHB1dFN0cmVhbS5n
ZXQoKSksIGRhdGEsIGxlbmd0aCwgJmJ5dGVzV3JpdHRlbiwgMCwgJmVycm9yLm91dFB0cigpKTsK
ICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBkb3dubG9hZEZhaWxlZChwbGF0Zm9y
bURvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBlcnJvci0+bWVzc2FnZSkpOwpA
QCAtMTM5LDcgKzEzOCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBBU1NFUlQobV9pbnRlcm1lZGlh
dGVGaWxlKTsKICAgICAgICAgR1JlZlB0cjxHRmlsZT4gZGVzdGluYXRpb25GaWxlID0gYWRvcHRH
UmVmKGdfZmlsZV9uZXdfZm9yX3VyaShtX2Rlc3RpbmF0aW9uVVJJLnV0ZjgoKS5kYXRhKCkpKTsK
LSAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICBHVW5pcXVlT3V0UHRyPEdF
cnJvcj4gZXJyb3I7CiAgICAgICAgIGlmICghZ19maWxlX21vdmUobV9pbnRlcm1lZGlhdGVGaWxl
LmdldCgpLCBkZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DT1BZX05PTkUsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIsICZlcnJvci5vdXRQdHIoKSkpIHsKICAgICAgICAgICAgIGRvd25s
b2FkRmFpbGVkKHBsYXRmb3JtRG93bmxvYWREZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIGVy
cm9yLT5tZXNzYWdlKSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcApp
bmRleCBjMDJhODM0Li4wZWRhMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKQEAgLTI5LDggKzI5
LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+CiAjaW5jbHVkZSA8Z2xpYi9n
aTE4bi1saWIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTE2NCwxMyArMTY0LDEzIEBAIHN0YXRp
YyB2b2lkIHByb2Nlc3NQZW5kaW5nSWNvbnNGb3JQYWdlVVJMKFdlYktpdEZhdmljb25EYXRhYmFz
ZSogZGF0YWJhc2UsIGNvbnN0CiAgICAgaWYgKCFwZW5kaW5nSWNvblJlcXVlc3RzKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0
cjxHRXJyb3I+IGVycm9yOwogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGljb24gPSBnZXRJ
Y29uU3VyZmFjZVN5bmNocm9ub3VzbHkoZGF0YWJhc2UsIHBhZ2VVUkwsICZlcnJvci5vdXRQdHIo
KSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBlbmRpbmdJY29uUmVxdWVzdHMtPnNp
emUoKTsgKytpKSB7CiAgICAgICAgIEdUYXNrKiB0YXNrID0gcGVuZGluZ0ljb25SZXF1ZXN0cy0+
YXQoaSkuZ2V0KCk7CiAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgIGdfdGFza19yZXR1
cm5fZXJyb3IodGFzaywgZXJyb3IucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIGdfdGFza19yZXR1
cm5fZXJyb3IodGFzaywgZXJyb3IucmVsZWFzZSgpLnJlbGVhc2UoKSk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgR2V0RmF2aWNvblN1cmZhY2VBc3luY0RhdGEqIGRhdGEgPSBzdGF0aWNf
Y2FzdDxHZXRGYXZpY29uU3VyZmFjZUFzeW5jRGF0YSo+KGdfdGFza19nZXRfdGFza19kYXRhKHRh
c2spKTsKICAgICAgICAgICAgIGRhdGEtPmljb24gPSBpY29uOwpAQCAtMjkwLDcgKzI5MCw3IEBA
IHZvaWQgd2Via2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0X2Zhdmljb24oV2ViS2l0RmF2aWNvbkRh
dGFiYXNlKiBkYXRhYmFzZSwgY29uc3QKIAogICAgIC8vIFdlIGFzayBmb3IgdGhlIGljb24gZGly
ZWN0bHkuIElmIHdlIGRvbid0IGdldCB0aGUgaWNvbiBkYXRhIG5vdywKICAgICAvLyB3ZSdsbCBi
ZSBub3RpZmllZCBsYXRlciAoZXZlbiBpZiB0aGUgZGF0YWJhc2UgaXMgc3RpbGwgaW1wb3J0aW5n
IGljb25zKS4KLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxH
RXJyb3I+IGVycm9yOwogICAgIGRhdGEtPmljb24gPSBnZXRJY29uU3VyZmFjZVN5bmNocm9ub3Vz
bHkoZGF0YWJhc2UsIGRhdGEtPnBhZ2VVUkwsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgaWYgKGRh
dGEtPmljb24pIHsKICAgICAgICAgZ190YXNrX3JldHVybl9ib29sZWFuKHRhc2suZ2V0KCksIFRS
VUUpOwpAQCAtMzAxLDcgKzMwMSw3IEBAIHZvaWQgd2Via2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0
X2Zhdmljb24oV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QKICAgICBkYXRh
LT5zaG91bGRSZWxlYXNlSWNvbkZvclBhZ2VVUkwgPSB0cnVlOwogCiAgICAgaWYgKGdfZXJyb3Jf
bWF0Y2hlcyhlcnJvci5nZXQoKSwgV0VCS0lUX0ZBVklDT05fREFUQUJBU0VfRVJST1IsIFdFQktJ
VF9GQVZJQ09OX0RBVEFCQVNFX0VSUk9SX0ZBVklDT05fTk9UX0ZPVU5EKSkgewotICAgICAgICBn
X3Rhc2tfcmV0dXJuX2Vycm9yKHRhc2suZ2V0KCksIGVycm9yLnJlbGVhc2UoKSk7CisgICAgICAg
IGdfdGFza19yZXR1cm5fZXJyb3IodGFzay5nZXQoKSwgZXJyb3IucmVsZWFzZSgpLnJlbGVhc2Uo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKaW5kZXgg
ZDYzMmQ0NC4uNmQ4YzY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKQEAgLTI4LDcgKzI4LDYg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8
d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTE1OSw3ICsxNTgsNyBAQCBXZWJL
aXRXZWJWaWV3KiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF93ZWJfdmlldyhXZWJLaXRV
UklTY2hlbWVSZXF1ZXN0KiByZQogc3RhdGljIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdFJl
YWRDYWxsYmFjayhHSW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogc2NoZW1lUmVxdWVzdCkKIHsKICAgICBHUmVmUHRy
PFdlYktpdFVSSVNjaGVtZVJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYoc2NoZW1lUmVxdWVz
dCk7Ci0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9y
PiBlcnJvcjsKICAgICBnc3NpemUgYnl0ZXNSZWFkID0gZ19pbnB1dF9zdHJlYW1fcmVhZF9maW5p
c2goaW5wdXRTdHJlYW0sIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKTsKICAgICBpZiAoYnl0ZXNS
ZWFkID09IC0xKSB7CiAgICAgICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vy
cm9yKHJlcXVlc3QuZ2V0KCksIGVycm9yLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggN2VlMGM4Yi4uMmQ1N2M2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5jcHAKQEAgLTY2LDcgKzY2LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0d0a1V0aWxpdGll
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KICNpbmNsdWRlIDxnbGliL2dp
MThuLWxpYi5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBA
IC0zMzYsNyArMzM1LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NhbmNlbEZhdmljb25S
ZXF1ZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAKIHN0YXRpYyB2b2lkIGdvdEZhdmljb25D
YWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1
c2VyRGF0YSkKIHsKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0
cjxHRXJyb3I+IGVycm9yOwogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGZhdmljb24gPSBh
ZG9wdFJlZih3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRfZmF2aWNvbl9maW5pc2goV0VCS0lU
X0ZBVklDT05fREFUQUJBU0Uob2JqZWN0KSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKICAg
ICBpZiAoZ19lcnJvcl9tYXRjaGVzKGVycm9yLmdldCgpLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9S
X0NBTkNFTExFRCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvZ3RrL1dlYkluc3BlY3RvclNlcnZlckd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2d0ay9XZWJJbnNwZWN0
b3JTZXJ2ZXJHdGsuY3BwCmluZGV4IGIwNmZhNzMuLjNjZjA0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvZ3RrL1dlYkluc3BlY3RvclNlcnZl
ckd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9n
dGsvV2ViSW5zcGVjdG9yU2VydmVyR3RrLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNs
dWRlIDxnbGliLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtNTUsNyArNTQsNyBAQCBi
b29sIFdlYkluc3BlY3RvclNlcnZlcjo6cGxhdGZvcm1SZXNvdXJjZUZvclBhdGgoY29uc3QgU3Ry
aW5nJiBwYXRoLCBWZWN0b3I8Y2hhcgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBHUmVm
UHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3VyaShyZXNvdXJjZVVS
SS5kYXRhKCkpKTsKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0
cjxHRXJyb3I+IGVycm9yOwogICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0
R1JlZihnX2ZpbGVfcXVlcnlfaW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1NUQU5E
QVJEX1NJWkUgIiwiIEdfRklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfRkFTVF9DT05URU5UX1RZUEUs
IEdfRklMRV9RVUVSWV9JTkZPX05PTkUsIDAsICZlcnJvci5vdXRQdHIoKSkpOwogICAgIGlmICgh
ZmlsZUluZm8pIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNo
ZXJHdGsuY3BwCmluZGV4IDRmYjVjOTAuLmY2NmViZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5j
cHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLSNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1Vu
aXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dsaWJVdGlsaXRpZXMuaD4KIApAQCAt
MTIzLDcgKzEyMiw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAg
ICBhcmd2W2krK10gPSBjb25zdF9jYXN0PGNoYXIqPihyZWFsUGx1Z2luUGF0aC5kYXRhKCkpOwog
ICAgIGFyZ3ZbaSsrXSA9IDA7CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1Vu
aXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGlmICghZ19zcGF3bl9hc3luYygwLCBhcmd2
LCAwLCBHX1NQQVdOX0xFQVZFX0RFU0NSSVBUT1JTX09QRU4sIGNoaWxkU2V0dXBGdW5jdGlvbiwg
R0lOVF9UT19QT0lOVEVSKHNvY2tldHNbMV0pLCAmcGlkLCAmZXJyb3Iub3V0UHRyKCkpKSB7CiAg
ICAgICAgIGdfcHJpbnRlcnIoIlVuYWJsZSB0byBmb3JrIGEgbmV3IFdlYlByb2Nlc3M6ICVzLlxu
IiwgZXJyb3ItPm1lc3NhZ2UpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vz
c1Byb3h5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1Bs
dWdpblByb2Nlc3NQcm94eVVuaXguY3BwCmluZGV4IGNjMjM0MTMuLjc4MTUyZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1By
b3h5VW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9Q
bHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQog
I2luY2x1ZGUgPGdsaWIuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2VuZGlmCiAKICNpbmNsdWRlIDxzeXMv
d2FpdC5oPgpAQCAtNzQsNyArNzQsNyBAQCBib29sIFBsdWdpblByb2Nlc3NQcm94eTo6c2NhblBs
dWdpbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFJhd1BsdWdpbk1ldGFEYXRhJgogICAgIGFy
Z3ZbM10gPSAwOwogCiAgICAgaW50IHN0YXR1czsKLSAgICBHT3duUHRyPGNoYXI+IHN0ZE91dDsK
KyAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IHN0ZE91dDsKIAogICAgIC8vIElmIHRoZSBkaXNwb3Np
dGlvbiBvZiBTSUdDTEQgc2lnbmFsIGlzIHNldCB0byBTSUdfSUdOIChkZWZhdWx0KQogICAgIC8v
IHRoZW4gdGhlIHNpZ25hbCB3aWxsIGJlIGlnbm9yZWQgYW5kIGdfc3Bhd25fc3luYygpIHdpbGwg
bm90IGJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCmluZGV4IGNiNDY4ODEuLjQwNDY5ZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJp
bnRPcGVyYXRpb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HVW5pcXVlUHRyLmg+CiAKICNpZmRlZiBIQVZFX0dUS19VTklYX1BSSU5USU5HCkBA
IC03OSw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPmpvYk5hbWUo
Z19zdHJkdXBfcHJpbnRmKCIlcyBqb2IgIyVkIiwgYXBwbGljYXRpb25OYW1lID8gYXBwbGljYXRp
b25OYW1lIDogIldlYktpdCIsICsram9iTnVtYmVyKSk7CiAgICAgICAgIG1fcHJpbnRKb2IgPSBh
ZG9wdEdSZWYoZ3RrX3ByaW50X2pvYl9uZXcoam9iTmFtZS5nZXQoKSwgcHJpbnRlciwgbV9wcmlu
dFNldHRpbmdzLmdldCgpLCBtX3BhZ2VTZXR1cC5nZXQoKSkpOwogCi0gICAgICAgIEdPd25QdHI8
R0Vycm9yPiBlcnJvcjsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAg
ICAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBndGtfcHJpbnRfam9iX2dldF9zdXJmYWNl
KG1fcHJpbnRKb2IuZ2V0KCksICZlcnJvci5vdXRQdHIoKSk7CiAgICAgICAgIGlmICghc3VyZmFj
ZSkgewogICAgICAgICAgICAgcHJpbnREb25lKHByaW50RXJyb3IoZnJhbWVVUkwoKSwgZXJyb3It
Pm1lc3NhZ2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9X
ZWJQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJv
Y2Vzc1NvdXAuY3BwCmluZGV4IDMyYjIxNzEuLmVkYjRhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcApAQCAtNDEsOCArNDEsOCBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NvdXBOZXR3b3JrU2Vzc2lvbi5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgotI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiAjaWYgIUVOQUJMRShD
VVNUT01fUFJPVE9DT0xTKQogI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlci5oIgpAQCAt
NTQsNyArNTQsNyBAQCBzdGF0aWMgdWludDY0X3QgZ2V0Q2FjaGVEaXNrRnJlZVNpemUoU291cENh
Y2hlKiBjYWNoZSkKIHsKICAgICBBU1NFUlQoY2FjaGUpOwogCi0gICAgR093blB0cjxjaGFyPiBj
YWNoZURpcjsKKyAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IGNhY2hlRGlyOwogICAgIGdfb2JqZWN0
X2dldChHX09CSkVDVChjYWNoZSksICJjYWNoZS1kaXIiLCAmY2FjaGVEaXIub3V0UHRyKCksIE5V
TEwpOwogICAgIGlmICghY2FjaGVEaXIpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJjZjFhYzEuLjQxZGZiZmEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAxNC0wMS0yNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dMSUJdIEFkZCBHVW5pcXVlT3V0UHRyIGFuZCB1c2UgaXQg
aW5zdGVhZCBvZiBHT3duUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjc1NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVc2UgR1VuaXF1ZU91dFB0ciBpbnN0ZWFkIG9mIEdPd25QdHIuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChjcmVhdGVLZXlQcmVz
c0V2ZW50KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9nb2JqZWN0L0dVbmlx
dWVQdHIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cmV0dXJuT3V0Q2hhcik6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvVGVzdENvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0SW5zcGVjdG9yU2VydmVyLmNwcDoKKyAgICAgICAgKHRl
c3RJbnNwZWN0b3JTZXJ2ZXJQYWdlTGlzdCk6CisgICAgICAgIChvcGVuUmVtb3RlRGVidWdnaW5n
U2Vzc2lvbik6CisgICAgICAgIChzZW5kSW5jb21wbGV0ZVJlcXVlc3QpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0UmVzb3VyY2VzLmNwcDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMuY3BwOgor
ICAgICAgICAodGVzdFdlYkV4dGVuc2lvbldpbmRvd09iamVjdENsZWFyZWQpOgorICAgICAgICAo
dGVzdFdlYkV4dGVuc2lvbklzb2xhdGVkV29ybGQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgor
ICAgICAgICAodGVzdFdlYlZpZXdSdW5KYXZhU2NyaXB0KToKKyAgICAgICAgKHRlc3RXZWJWaWV3
U2F2ZSk6CisgICAgICAgICh0ZXN0V2ViVmlld1BhZ2VWaXNpYmlsaXR5KToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXdHcm91cC5jcHA6
CisgICAgICAgIChpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJWaWV3RWRpdG9yLmNwcDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5j
cHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYlByb2Nlc3NU
ZXN0LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2d0ay9JbnB1dE1ldGhvZEZp
bHRlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0SW5wdXRNZXRob2RGaWx0ZXI6
OnNlbmRLZXlFdmVudFRvRmlsdGVyKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2d0ay9QbGF0
Zm9ybVdlYlZpZXdHdGsuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZG9LZXlTdHJva2Up
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvVGVzdE1haW4uaDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYktpdFRlc3RCdXMuY3BwOgor
ICAgICAgICAoV2ViS2l0VGVzdEJ1czo6cnVuKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2d0
ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcDoKKyAgICAgICAgKHJlc291cmNlR2V0RGF0YUNh
bGxiYWNrKToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjprZXlTdHJva2UpOgorICAgICAgICAob25T
bmFwc2hvdFJlYWR5KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRl
clByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bik6
CisKIDIwMTQtMDEtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtTT1VQXSBSZW1vdmUgc291cFVSSVRvS1VSTApkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggMDhkM2M3My4uNzNkNzEwYSAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCkBAIC01NCw3ICs1
NCw2IEBACiAjaW5jbHVkZSA8bG9jYWxlLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdC5oPgog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dsaWJVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0V2ZW50U2VuZGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRl
ci5jcHAKaW5kZXggNTgyNjAyNy4uZmY1OGM0MyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
RXZlbnRTZW5kZXIuY3BwCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSA8d2Via2l0L3dlYmtp
dHdlYnZpZXcuaD4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CkBAIC04MDUsNyArODA0LDcgQEAgc3RhdGljIEdka0V2ZW50KiBjcmVhdGVLZXlQcmVzc0V2ZW50
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBzaXplX3QgYXJndW1lbnRDb3VudCwKIAogICAgIC8vIFdo
ZW4gc3ludGhlc2l6aW5nIGFuIGV2ZW50LCBhbiBpbnZhbGlkIGhhcmR3YXJlX2tleWNvZGUgdmFs
dWUKICAgICAvLyBjYW4gY2F1c2UgaXQgdG8gYmUgYmFkbHkgcHJvY2Vzc2VkIGJ5IEd0aysuCi0g
ICAgR093blB0cjxHZGtLZXltYXBLZXk+IGtleXM7CisgICAgR1VuaXF1ZU91dFB0cjxHZGtLZXlt
YXBLZXk+IGtleXM7CiAgICAgZ2ludCBuS2V5czsKICAgICBpZiAoZ2RrX2tleW1hcF9nZXRfZW50
cmllc19mb3Jfa2V5dmFsKGdka19rZXltYXBfZ2V0X2RlZmF1bHQoKSwgZ2RrS2V5U3ltLCAma2V5
cy5vdXRQdHIoKSwgJm5LZXlzKSkKICAgICAgICAgcHJlc3NFdmVudC0+a2V5LmhhcmR3YXJlX2tl
eWNvZGUgPSBrZXlzLmdldCgpWzBdLmtleWNvZGU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9nb2JqZWN0L0dVbmlxdWVQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvZ29iamVjdC9HVW5pcXVlUHRyLmNwcAppbmRleCA3ZDIzYjU3Li44OTQy
Zjg2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9nb2JqZWN0L0dV
bmlxdWVQdHIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2dvYmplY3Qv
R1VuaXF1ZVB0ci5jcHAKQEAgLTE0NSw0ICsxNDUsNTEgQEAgVEVTVChXVEZfR1VuaXF1ZVB0ciwg
QmFzaWMpCiAgICAgYWN0dWFsLnN0cigiIik7CiB9CiAKK3N0YXRpYyB2b2lkIHJldHVybk91dENo
YXIoY2hhcioqIG91dENoYXIpCit7CisgICAgKm91dENoYXIgPSBnX3N0cmR1cCgiYSIpOworfQor
CitURVNUKFdURl9HVW5pcXVlUHRyLCBPdXRQdHIpCit7CisgICAgc3RkOjpvc3RyaW5nc3RyZWFt
IGFjdHVhbDsKKworICAgIHsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBhOworICAgICAg
ICBBU1NFUlRfRVEobnVsbHB0ciwgYS5nZXQoKSk7CisgICAgfQorICAgIEFTU0VSVF9TVFJFUShh
Y3R1YWwuc3RyKCkuY19zdHIoKSwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworICAgIGFjdHVhbC5z
dHIoIiIpOworCisgICAgeworICAgICAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IGE7CisgICAgICAg
IHJldHVybk91dENoYXIoJmEub3V0UHRyKCkpOworICAgICAgICBhY3R1YWwgPDwgImdfZnJlZSgi
IDw8IGEuZ2V0KCkgPDwgIik7IjsKKyAgICB9CisgICAgQVNTRVJUX1NUUkVRKGFjdHVhbC5zdHIo
KS5jX3N0cigpLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisgICAgYWN0dWFsLnN0cigiIik7CisK
KyAgICB7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gYTsKKyAgICAgICAgcmV0dXJuT3V0
Q2hhcigmYS5vdXRQdHIoKSk7CisgICAgICAgIGFjdHVhbCA8PCAiZ19mcmVlKCIgPDwgYS5nZXQo
KSA8PCAiKTsiOworICAgICAgICByZXR1cm5PdXRDaGFyKCZhLm91dFB0cigpKTsKKyAgICAgICAg
QVNTRVJUX1NUUkVRKGFjdHVhbC5zdHIoKS5jX3N0cigpLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
CisgICAgICAgIGFjdHVhbC5zdHIoIiIpOworICAgICAgICBhY3R1YWwgPDwgImdfZnJlZSgiIDw8
IGEuZ2V0KCkgPDwgIik7IjsKKyAgICB9CisgICAgQVNTRVJUX1NUUkVRKGFjdHVhbC5zdHIoKS5j
X3N0cigpLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisgICAgYWN0dWFsLnN0cigiIik7CisKKyAg
ICB7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gYTsKKyAgICAgICAgcmV0dXJuT3V0Q2hh
cigmYS5vdXRQdHIoKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gYiA9IGEucmVsZWFzZSgp
OworICAgICAgICBBU1NFUlRfU1RSRVEoYWN0dWFsLnN0cigpLmNfc3RyKCksIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKKyAgICAgICAgYWN0dWFsIDw8ICJnX2ZyZWUoIiA8PCBiLmdldCgpIDw8ICIp
OyI7CisgICAgfQorICAgIEFTU0VSVF9TVFJFUShhY3R1YWwuc3RyKCkuY19zdHIoKSwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOworICAgIGFjdHVhbC5zdHIoIiIpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdENvb2tpZU1hbmFnZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1Rlc3RDb29raWVNYW5hZ2VyLmNwcAppbmRleCBiZjM1MWUxLi4yZTk4NjQ1
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdENv
b2tpZU1hbmFnZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9UZXN0Q29va2llTWFuYWdlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIHZvaWQgZ2V0QWNjZXB0UG9saWN5UmVhZHlDYWxsYmFjayhHT2JqZWN0KiBvYmplY3Qs
IEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkKICAgICB7Ci0gICAgICAg
IEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVy
cm9yOwogICAgICAgICBXZWJLaXRDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5ID0gd2Via2l0X2Nv
b2tpZV9tYW5hZ2VyX2dldF9hY2NlcHRfcG9saWN5X2ZpbmlzaChXRUJLSVRfQ09PS0lFX01BTkFH
RVIob2JqZWN0KSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOwogICAgICAgICBnX2Fzc2VydCgh
ZXJyb3IuZ2V0KCkpOwogCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IHZvaWQgZ2V0RG9tYWluc1JlYWR5Q2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1
bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpCiAgICAgewotICAgICAgICBHT3duUHRyPEdF
cnJvcj4gZXJyb3I7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAg
ICAgY2hhcioqIGRvbWFpbnMgPSB3ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X2RvbWFpbnNfd2l0
aF9jb29raWVzX2ZpbmlzaChXRUJLSVRfQ09PS0lFX01BTkFHRVIob2JqZWN0KSwgcmVzdWx0LCAm
ZXJyb3Iub3V0UHRyKCkpOwogICAgICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEluc3BlY3Rv
clNlcnZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdElu
c3BlY3RvclNlcnZlci5jcHAKaW5kZXggYTY4NzgyNi4uMjUyMWQyZSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RJbnNwZWN0b3JTZXJ2ZXIuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0SW5zcGVjdG9y
U2VydmVyLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHB1YmxpYzoKIC8vIFNob3VsZCBjb250YWlu
IG9ubHkgb25lIGVudHJ5IHBvaW50aW5nIHRvIGh0dHA6Ly8xMjcuMC4wLjE6Mjk5OS93ZWJpbnNw
ZWN0b3IvTWFpbi5odG1sP3BhZ2U9MQogc3RhdGljIHZvaWQgdGVzdEluc3BlY3RvclNlcnZlclBh
Z2VMaXN0KEluc3BlY3RvclNlcnZlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAg
R093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsK
IAogICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZChHVEtfV0lORE9XX1RP
UExFVkVMKTsKICAgICBnX2Fzc2VydCh0ZXN0LT5nZXRQYWdlTGlzdCgpKTsKQEAgLTIyOCw3ICsy
MjgsNyBAQCBzdGF0aWMgdm9pZCBvcGVuUmVtb3RlRGVidWdnaW5nU2Vzc2lvbihJbnNwZWN0b3JT
ZXJ2ZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogCiAgICAgZ19hc3NlcnQodGVzdC0+Z2V0
UGFnZUxpc3QoKSk7CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3Jp
cHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoInBhZ2Vz
WzBdLmluc3BlY3RvclVybDsiLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0KGphdmFz
Y3JpcHRSZXN1bHQpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CkBAIC0yNDcsNyArMjQ3
LDcgQEAgc3RhdGljIHZvaWQgb3BlblJlbW90ZURlYnVnZ2luZ1Nlc3Npb24oSW5zcGVjdG9yU2Vy
dmVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogc3RhdGljIHZvaWQgc2VuZEluY29tcGxl
dGVSZXF1ZXN0KEluc3BlY3RvclNlcnZlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0g
ICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJv
cjsKIAogICAgIC8vIENvbm5lY3QgdG8gdGhlIGluc3BlY3RvciBzZXJ2ZXIuCiAgICAgR1JlZlB0
cjxHU29ja2V0Q2xpZW50PiBjbGllbnQgPSBhZG9wdEdSZWYoZ19zb2NrZXRfY2xpZW50X25ldygp
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
UmVzb3VyY2VzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
UmVzb3VyY2VzLmNwcAppbmRleCAzYTQ1OWEwLi5hMmVlOTc3IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFJlc291cmNlcy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RSZXNvdXJjZXMuY3BwCkBAIC0x
NjEsNyArMTYxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlc291cmNlR2V0RGF0YUNh
bGxiYWNrKEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVz
ZXJEYXRhKQogICAgIHsKICAgICAgICAgc2l6ZV90IGRhdGFTaXplOwotICAgICAgICBHT3duUHRy
PEdFcnJvcj4gZXJyb3I7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAg
ICAgICAgdW5zaWduZWQgY2hhciogZGF0YSA9IHdlYmtpdF93ZWJfcmVzb3VyY2VfZ2V0X2RhdGFf
ZmluaXNoKFdFQktJVF9XRUJfUkVTT1VSQ0Uob2JqZWN0KSwgcmVzdWx0LCAmZGF0YVNpemUsICZl
cnJvci5vdXRQdHIoKSk7CiAgICAgICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CiAgICAgICAg
IGdfYXNzZXJ0KGRhdGEpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyR3RrL1Rlc3RXZWJFeHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKaW5kZXggOWExMGUzNy4uOWZiZWFm
MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RX
ZWJFeHRlbnNpb25zLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJH
dGsvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYkV4dGVuc2lvbldpbmRvd09iamVjdENsZWFyZWQoV2ViVmlld1Rlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIKICAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGhlYWRlcj48L2hlYWRlcj48
Ym9keT48L2JvZHk+PC9odG1sPiIsIDApOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hl
ZCgpOwogCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vy
cm9yPiBlcnJvcjsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0
ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cuZWNobygn
Rm9vJyk7IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0
KTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHN0YXRp
YyB2b2lkIHRlc3RXZWJFeHRlbnNpb25Jc29sYXRlZFdvcmxkKFdlYlZpZXdUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48aGVhZGVyPjwvaGVhZGVy
Pjxib2R5PjxkaXYgaWQ9J2NvbnNvbGUnPjwvZGl2PjwvYm9keT48L2h0bWw+IiwgMCk7CiAgICAg
dGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKLSAgICBHT3duUHRyPGNoYXI+IHJlc3Vs
dDsKKyAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IHJlc3VsdDsKICAgICBndWxvbmcgc2NyaXB0RGlh
bG9nSUQgPSBnX3NpZ25hbF9jb25uZWN0KHRlc3QtPm1fd2ViVmlldywgInNjcmlwdC1kaWFsb2ci
LCBHX0NBTExCQUNLKHNjcmlwdERpYWxvZ0NhbGxiYWNrKSwgJnJlc3VsdC5vdXRQdHIoKSk7CiAK
ICAgICBzdGF0aWMgY29uc3QgY2hhciogbWFpbldvcmxkU2NyaXB0ID0KQEAgLTE0Myw3ICsxNDMs
NiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uSXNvbGF0ZWRXb3JsZChXZWJWaWV3VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICAgICAgImRvY3VtZW50Lm9wZW4oMSwgMiwgMyk7
IjsKICAgICB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQobWFpbldvcmxk
U2NyaXB0LCAwKTsKICAgICBnX2Fzc2VydF9jbXBzdHIocmVzdWx0LmdldCgpLCA9PSwgIk1haW4g
V29ybGQiKTsKLSAgICByZXN1bHQuY2xlYXIoKTsKIAogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1
bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmlu
aXNoZWQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MIiwgMCk7
CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CkBAIC0xNjUsNyArMTY0LDYgQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYkV4dGVuc2lvbklzb2xhdGVkV29ybGQoV2ViVmlld1Rlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiAgICAgICAgIHRlc3QpOwogICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0
LT5tX21haW5Mb29wKTsKICAgICBnX2Fzc2VydF9jbXBzdHIocmVzdWx0LmdldCgpLCA9PSwgIklz
b2xhdGVkIFdvcmxkIik7Ci0gICAgcmVzdWx0LmNsZWFyKCk7CiAKICAgICAvLyBDaGVjayB0aGF0
ICd0b3AuZm9vJyBkZWZpbmVkIGluIG1haW4gd29ybGQgaXMgbm90IHZpc2libGUgaW4gaXNvbGF0
ZWQgd29ybGQuCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRX
YWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5l
ckhUTUwiLCAwKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAppbmRleCA5NWI1
YzAxLi4wZjVhODIwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvVGVzdFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCkBAIC0y
Myw3ICsyMyw2IEBACiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKICNpbmNsdWRlIDxnbGliL2dz
dGRpby5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIHN0YXRp
YyBXZWJLaXRUZXN0U2VydmVyKiBrU2VydmVyOwpAQCAtMzYsNyArMzUsNiBAQCBwdWJsaWM6CiAg
ICAgRmF2aWNvbkRhdGFiYXNlVGVzdCgpCiAgICAgICAgIDogbV93ZWJDb250ZXh0KHdlYmtpdF93
ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpKQogICAgICAgICAsIG1fZmF2aWNvbigwKQotICAgICAg
ICAsIG1fZXJyb3IoMCkKICAgICAgICAgLCBtX2Zhdmljb25Ob3RpZmljYXRpb25SZWNlaXZlZChm
YWxzZSkKICAgICB7CiAgICAgICAgIFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UgPSB3
ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2UobV93ZWJDb250ZXh0KTsKQEAg
LTg0LDcgKzgyLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRGYXZpY29uRm9yUGFnZVVSSUFu
ZFdhaXRVbnRpbFJlYWR5KGNvbnN0IGNoYXIqIHBhZ2VVUkkpCiAgICAgewotICAgICAgICBtX2Vy
cm9yLmNsZWFyKCk7CiAgICAgICAgIGlmIChtX2Zhdmljb24pIHsKICAgICAgICAgICAgIGNhaXJv
X3N1cmZhY2VfZGVzdHJveShtX2Zhdmljb24pOwogICAgICAgICAgICAgbV9mYXZpY29uID0gMDsK
QEAgLTk4LDcgKzk1LDcgQEAgcHVibGljOgogICAgIFdlYktpdFdlYkNvbnRleHQqIG1fd2ViQ29u
dGV4dDsKICAgICBjYWlyb19zdXJmYWNlX3QqIG1fZmF2aWNvbjsKICAgICBDU3RyaW5nIG1fZmF2
aWNvblVSSTsKLSAgICBHT3duUHRyPEdFcnJvcj4gbV9lcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRy
PEdFcnJvcj4gbV9lcnJvcjsKICAgICBib29sIG1fZmF2aWNvbk5vdGlmaWNhdGlvblJlY2VpdmVk
OwogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1Rlc3RXZWJLaXRXZWJWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNzM0MmI2MC4uZjliZjYzMiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJW
aWV3LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdl
YktpdFdlYlZpZXcuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
UnVuSmF2YVNjcmlwdChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0
LT5sb2FkSHRtbChodG1sLCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsK
IAotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4g
ZXJyb3I7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRl
c3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgid2luZG93LmRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdXZWJLaXRMaW5rJykudGl0bGU7IiwgJmVycm9yLm91dFB0cigpKTsKICAg
ICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkp
OwpAQCAtMTQ0LDcgKzE0NCw2IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3UnVuSmF2YVNjcmlw
dChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBqYXZhc2NyaXB0UmVzdWx0
ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEZyb21HUmVzb3VyY2VBbmRXYWl0VW50aWxGaW5pc2hlZCgi
L3dyb25nL3BhdGgvdG8vcmVzb3VyY2UuanMiLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNz
ZXJ0KCFqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwg
R19SRVNPVVJDRV9FUlJPUiwgR19SRVNPVVJDRV9FUlJPUl9OT1RfRk9VTkQpOwotICAgIGVycm9y
LmNsZWFyKCk7CiAKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFu
ZFdhaXRVbnRpbEZpbmlzaGVkKCJmb28oKTsiLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNz
ZXJ0KCFqYXZhc2NyaXB0UmVzdWx0KTsKQEAgLTM0Niw3ICszNDUsNyBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgdm9pZCB3ZWJWaWV3U2F2ZWRUb1N0cmVhbUNhbGxiYWNrKEdPYmplY3QqIG9iamVj
dCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIFNhdmVXZWJWaWV3VGVzdCogdGVzdCkKICAgICB7Ci0g
ICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJy
b3I+IGVycm9yOwogICAgICAgICB0ZXN0LT5tX2lucHV0U3RyZWFtID0gYWRvcHRHUmVmKHdlYmtp
dF93ZWJfdmlld19zYXZlX2ZpbmlzaCh0ZXN0LT5tX3dlYlZpZXcsIHJlc3VsdCwgJmVycm9yLm91
dFB0cigpKSk7CiAgICAgICAgIGdfYXNzZXJ0KEdfSVNfSU5QVVRfU1RSRUFNKHRlc3QtPm1faW5w
dXRTdHJlYW0uZ2V0KCkpKTsKICAgICAgICAgZ19hc3NlcnQoIWVycm9yKTsKQEAgLTM1Niw3ICsz
NTUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCB3ZWJWaWV3U2F2ZWRUb0ZpbGVDYWxs
YmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBTYXZlV2ViVmlld1Rl
c3QqIHRlc3QpCiAgICAgewotICAgICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAg
IEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgZ19hc3NlcnQod2Via2l0X3dl
Yl92aWV3X3NhdmVfdG9fZmlsZV9maW5pc2godGVzdC0+bV93ZWJWaWV3LCByZXN1bHQsICZlcnJv
ci5vdXRQdHIoKSkpOwogICAgICAgICBnX2Fzc2VydCghZXJyb3IpOwogCkBAIC00MDUsNyArNDA0
LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdTYXZlKFNhdmVXZWJWaWV3VGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKICAgICAvLyBzdHJpbmdzIHJlYWQgc2luY2UgdGhlICdEYXRlJyBmaWVs
ZCBhbmQgdGhlIGJvdW5kYXJpZXMgd2lsbCBiZQogICAgIC8vIGRpZmZlcmVudCBvbiBlYWNoIGNh
c2UuIE1IVE1MIGZ1bmN0aW9uYWxpdHkgd2lsbCBiZSB0ZXN0ZWQgYnkKICAgICAvLyBMYXlvdXQg
dGVzdHMsIHNvIGNoZWNraW5nIHRoZSBhbW91bnQgb2YgYnl0ZXMgaXMgZW5vdWdoLgotICAgIEdP
d25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAg
ICAgZ2NoYXIgYnVmZmVyWzUxMl0gPSB7IDAgfTsKICAgICBnc3NpemUgcmVhZEJ5dGVzID0gMDsK
ICAgICBnc3NpemUgdG90YWxCeXRlc0Zyb21TdHJlYW0gPSAwOwpAQCAtNDU4LDcgKzQ1Nyw3IEBA
IHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3UGFnZVZpc2liaWxpdHkoV2ViVmlld1Rlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiAgICAgLy8gV2FpdCB1bnRpbGwgdGhlIHBhZ2UgaXMgbG9hZGVkLiBJ
bml0aWFsIHZpc2liaWxpdHkgc2hvdWxkIGJlICdoaWRkZW4nLgogICAgIHRlc3QtPndhaXRVbnRp
bExvYWRGaW5pc2hlZCgpOwogCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlx
dWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZh
c2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJk
b2N1bWVudC52aXNpYmlsaXR5U3RhdGU7IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2Vy
dChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwpAQCAtNTA3
LDcgKzUwNiw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIG9uU25hcHNob3RDYW5jZWxs
ZWRSZWFkeShXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgR0FzeW5jUmVzdWx0KiByZXMsIFNuYXBz
aG90V2ViVmlld1Rlc3QqIHRlc3QpCiAgICAgewotICAgICAgICBHT3duUHRyPEdFcnJvcj4gZXJy
b3I7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgdGVzdC0+
bV9zdXJmYWNlID0gd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2god2ViX3ZpZXcs
IHJlcywgJmVycm9yLm91dFB0cigpKTsKICAgICAgICAgZ19hc3NlcnQoIXRlc3QtPm1fc3VyZmFj
ZSk7CiAgICAgICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBHX0lPX0VSUk9SLCBHX0lP
X0VSUk9SX0NBTkNFTExFRCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXdHcm91cC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXdHcm91cC5jcHAKaW5kZXggNzQw
MDhlYi4uNDQ4YWJkMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcApAQCAtMTAzLDcg
KzEwMyw3IEBAIHN0YXRpYyBib29sIGlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKFdl
YlZpZXdUZXN0KiB0ZXN0LCBjb25zdCBjaGFyKiBwYXRoCiAgICAgdGVzdC0+bG9hZFVSSShrU2Vy
dmVyLT5nZXRVUklGb3JQYXRoKHBhdGgpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9h
ZEZpbmlzaGVkKCk7CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3Jp
cHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoa1N0eWxl
U2hlZXRUZXN0U2NyaXB0LCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0KGphdmFzY3Jp
cHRSZXN1bHQpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJWaWV3RWRpdG9yLmNw
cAppbmRleCA3ZjBhMDYxLi45ZTY5YmZhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgY2FuRXhlY3V0ZUVkaXRpbmdDb21t
YW5kUmVhZHlDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIEVkaXRvclRl
c3QqIHRlc3QpCiAgICAgewotICAgICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAg
IEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgdGVzdC0+bV9jYW5FeGVjdXRl
RWRpdGluZ0NvbW1hbmQgPSB3ZWJraXRfd2ViX3ZpZXdfY2FuX2V4ZWN1dGVfZWRpdGluZ19jb21t
YW5kX2ZpbmlzaCh0ZXN0LT5tX3dlYlZpZXcsIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKTsKICAg
ICAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKICAgICAgICAgZ19tYWluX2xvb3BfcXVpdCh0
ZXN0LT5tX21haW5Mb29wKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcAppbmRleCAyZTgwMzRmLi5jY2RkNmRj
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0
ZW5zaW9uVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1dlYkV4dGVuc2lvblRlc3QuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMjM3LDcgKzIzNiw3IEBAIHN0YXRpYyB2b2lk
IGJ1c0FjcXVpcmVkQ2FsbGJhY2soR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBj
aGFyKiBuYW1lLCBnCiAgICAgaWYgKCFpbnRyb3NwZWN0aW9uRGF0YSkKICAgICAgICAgaW50cm9z
cGVjdGlvbkRhdGEgPSBnX2RidXNfbm9kZV9pbmZvX25ld19mb3JfeG1sKGludHJvc3BlY3Rpb25Y
TUwsIDApOwogCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8
R0Vycm9yPiBlcnJvcjsKICAgICB1bnNpZ25lZCByZWdpc3RyYXRpb25JRCA9IGdfZGJ1c19jb25u
ZWN0aW9uX3JlZ2lzdGVyX29iamVjdCgKICAgICAgICAgY29ubmVjdGlvbiwKICAgICAgICAgIi9v
cmcvd2Via2l0L2d0ay9XZWJFeHRlbnNpb25UZXN0IiwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJQcm9jZXNzVGVzdC5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViUHJvY2Vzc1Rlc3QuY3BwCmluZGV4IDhjMDA4
MzcuLmNmZjFhMjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9XZWJQcm9jZXNzVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyR3RrL1dlYlByb2Nlc3NUZXN0LmNwcApAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUg
IldlYlByb2Nlc3NUZXN0LmgiCiAKICNpbmNsdWRlIDxnaW8vZ2lvLmg+Ci0jaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4K
IAogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgc3RkOjpmdW5jdGlvbjxQYXNzT3duUHRyPFdlYlBy
b2Nlc3NUZXN0PiAoKT4+IFRlc3RzTWFwOwogc3RhdGljIFRlc3RzTWFwJiB0ZXN0c01hcCgpCkBA
IC04MCw3ICs4MCw3IEBAIHN0YXRpYyB2b2lkIGJ1c0FjcXVpcmVkQ2FsbGJhY2soR0RCdXNDb25u
ZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBjaGFyKiBuYW1lLCBnCiAgICAgaWYgKCFpbnRyb3Nw
ZWN0aW9uRGF0YSkKICAgICAgICAgaW50cm9zcGVjdGlvbkRhdGEgPSBnX2RidXNfbm9kZV9pbmZv
X25ld19mb3JfeG1sKGludHJvc3BlY3Rpb25YTUwsIDApOwogCi0gICAgR093blB0cjxHRXJyb3I+
IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICB1bnNpZ25lZCBy
ZWdpc3RyYXRpb25JRCA9IGdfZGJ1c19jb25uZWN0aW9uX3JlZ2lzdGVyX29iamVjdCgKICAgICAg
ICAgY29ubmVjdGlvbiwKICAgICAgICAgIi9vcmcvd2Via2l0L2d0ay9XZWJQcm9jZXNzVGVzdCIs
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2d0ay9JbnB1dE1ldGhvZEZp
bHRlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2d0ay9JbnB1dE1ldGhvZEZpbHRl
ci5jcHAKaW5kZXggYmZjYzE3ZC4uNGFhYjdjMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9ndGsvSW5wdXRNZXRob2RGaWx0ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvZ3RrL0lucHV0TWV0aG9kRmlsdGVyLmNwcApAQCAtMjksNyArMjksNyBAQAog
I2luY2x1ZGUgIldURlN0cmluZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1z
Lmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtNjQs
NyArNjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGdka19ldmVudF9zZXRfZGV2aWNlKGV2ZW50LCBn
ZGtfZGV2aWNlX21hbmFnZXJfZ2V0X2NsaWVudF9wb2ludGVyKGdka19kaXNwbGF5X2dldF9kZXZp
Y2VfbWFuYWdlcihnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpKSkpOwogI2VuZGlmCiAKLSAgICAg
ICAgR093blB0cjxHZGtLZXltYXBLZXk+IGtleXM7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R2Rr
S2V5bWFwS2V5PiBrZXlzOwogICAgICAgICBnaW50IG5LZXlzOwogICAgICAgICBpZiAoZ2RrX2tl
eW1hcF9nZXRfZW50cmllc19mb3Jfa2V5dmFsKGdka19rZXltYXBfZ2V0X2RlZmF1bHQoKSwgZ2Rr
S2V5VmFsdWUsICZrZXlzLm91dFB0cigpLCAmbktleXMpKQogICAgICAgICAgICAgZXZlbnQtPmtl
eS5oYXJkd2FyZV9rZXljb2RlID0ga2V5cy5nZXQoKVswXS5rZXljb2RlOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAKaW5kZXggMTJlZWVkNy4uMDMx
NjA0MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvUGxhdGZvcm1XZWJWaWV3
R3RrLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsu
Y3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHdGsu
aD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgewogCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyB2b2lkIGRvS2V5U3Ryb2tlKEd0
a1dpZGdldCogdmlld1dpZGdldCwgdW5zaWduZWQgaW50IGtleVZhbCkKICAgICBnZGtfZXZlbnRf
c2V0X2RldmljZShldmVudC5nZXQoKSwgZ2RrX2RldmljZV9tYW5hZ2VyX2dldF9jbGllbnRfcG9p
bnRlcihnZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIoZ3RrX3dpZGdldF9nZXRfZGlzcGxh
eSh2aWV3V2lkZ2V0KSkpKTsKIAogICAgIC8vIFdoZW4gc3ludGhlc2l6aW5nIGFuIGV2ZW50LCBh
biBpbnZhbGlkIGhhcmR3YXJlX2tleWNvZGUgdmFsdWUgY2FuIGNhdXNlIGl0IHRvIGJlIGJhZGx5
IHByb2Nlc3NlZCBieSBHVEsrLgotICAgIEdPd25QdHI8R2RrS2V5bWFwS2V5PiBrZXlzOworICAg
IEdVbmlxdWVPdXRQdHI8R2RrS2V5bWFwS2V5PiBrZXlzOwogICAgIGludCBrZXlzQ291bnQ7CiAg
ICAgaWYgKGdka19rZXltYXBfZ2V0X2VudHJpZXNfZm9yX2tleXZhbChnZGtfa2V5bWFwX2dldF9k
ZWZhdWx0KCksIGtleVZhbCwgJmtleXMub3V0UHRyKCksICZrZXlzQ291bnQpKQogICAgICAgICBl
dmVudC0+a2V5LmhhcmR3YXJlX2tleWNvZGUgPSBrZXlzLmdldCgpWzBdLmtleWNvZGU7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1Rlc3RNYWluLmggYi9U
b29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1Rlc3RNYWluLmgKaW5kZXggZDVjZWFl
OC4uOWZhYjBiMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0
ay9UZXN0TWFpbi5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvVGVz
dE1haW4uaApAQCAtMjMsNyArMjMsNiBAQAogI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVkZSA8
Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYktpdFRlc3RCdXMuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJLaXRUZXN0QnVzLmNwcAppbmRleCBkMGRmYWU3Li4zNWJj
ZjFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYktp
dFRlc3RCdXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2Vi
S2l0VGVzdEJ1cy5jcHAKQEAgLTIwLDcgKzIwLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWJLaXRUZXN0QnVzLmgiCiAKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zOCw4ICszNyw4IEBAIGJvb2wgV2ViS2l0VGVzdEJ1czo6
cnVuKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIEdPd25QdHI8Y2hhcj4g
b3V0cHV0OwotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPGNo
YXI+IG91dHB1dDsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFn
X3NwYXduX2NvbW1hbmRfbGluZV9zeW5jKGRidXNMYXVuY2guZ2V0KCksICZvdXRwdXQub3V0UHRy
KCksIDAsIDAsICZlcnJvci5vdXRQdHIoKSkpIHsKICAgICAgICAgZ193YXJuaW5nKCJFcnJvciBz
dGFydGluZyBEQlVTIGRhZW1vbjogJXMiLCBlcnJvci0+bWVzc2FnZSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsv
V2ViVmlld1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJW
aWV3VGVzdC5jcHAKaW5kZXggZWI3YjBkZi4uMTE5OGIwOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5jcHAKQEAgLTIxOCw3ICsyMTgs
NyBAQCB2b2lkIFdlYlZpZXdUZXN0OjpzZWxlY3RBbGwoKQogc3RhdGljIHZvaWQgcmVzb3VyY2VH
ZXREYXRhQ2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3Bv
aW50ZXIgdXNlckRhdGEpCiB7CiAgICAgc2l6ZV90IGRhdGFTaXplOwotICAgIEdPd25QdHI8R0Vy
cm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgdW5zaWdu
ZWQgY2hhciogZGF0YSA9IHdlYmtpdF93ZWJfcmVzb3VyY2VfZ2V0X2RhdGFfZmluaXNoKFdFQktJ
VF9XRUJfUkVTT1VSQ0Uob2JqZWN0KSwgcmVzdWx0LCAmZGF0YVNpemUsICZlcnJvci5vdXRQdHIo
KSk7CiAgICAgZ19hc3NlcnQoZGF0YSk7CiAKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIFdlYlZp
ZXdUZXN0OjprZXlTdHJva2UodW5zaWduZWQga2V5VmFsLCB1bnNpZ25lZCBrZXlNb2RpZmllcnMp
CiAgICAgZXZlbnQtPmtleS5zdGF0ZSA9IGtleU1vZGlmaWVyczsKIAogICAgIC8vIFdoZW4gc3lu
dGhlc2l6aW5nIGFuIGV2ZW50LCBhbiBpbnZhbGlkIGhhcmR3YXJlX2tleWNvZGUgdmFsdWUgY2Fu
IGNhdXNlIGl0IHRvIGJlIGJhZGx5IHByb2Nlc3NlZCBieSBHVEsrLgotICAgIEdPd25QdHI8R2Rr
S2V5bWFwS2V5PiBrZXlzOworICAgIEdVbmlxdWVPdXRQdHI8R2RrS2V5bWFwS2V5PiBrZXlzOwog
ICAgIGludCBrZXlzQ291bnQ7CiAgICAgaWYgKGdka19rZXltYXBfZ2V0X2VudHJpZXNfZm9yX2tl
eXZhbChnZGtfa2V5bWFwX2dldF9kZWZhdWx0KCksIGtleVZhbCwgJmtleXMub3V0UHRyKCksICZr
ZXlzQ291bnQpKQogICAgICAgICBldmVudC0+a2V5LmhhcmR3YXJlX2tleWNvZGUgPSBrZXlzLmdl
dCgpWzBdLmtleWNvZGU7CkBAIC00MjUsNyArNDI1LDcgQEAgYm9vbCBXZWJWaWV3VGVzdDo6amF2
YXNjcmlwdFJlc3VsdElzVW5kZWZpbmVkKFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3Jp
cHQKIAogc3RhdGljIHZvaWQgb25TbmFwc2hvdFJlYWR5KFdlYktpdFdlYlZpZXcqIHdlYl92aWV3
LCBHQXN5bmNSZXN1bHQqIHJlcywgV2ViVmlld1Rlc3QqIHRlc3QpCiB7Ci0gICAgR093blB0cjxH
RXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICB0ZXN0
LT5tX3N1cmZhY2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaCh3ZWJfdmll
dywgcmVzLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3N1cmZhY2Ug
fHwgIWVycm9yLmdldCgpKTsKICAgICBpZiAoZXJyb3IpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCmluZGV4IDM4MDQzOGMuLjVkN2My
MGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJv
eHlHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJv
eHlHdGsuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4K
ICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5p
cXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
VFIgewpAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihX
S1N0cmluZ1JlZiBrZXlSZWYsIFdLRXZlbnRNb2RpZmllcnMgd2tNb2RpZmllcnMsCiAgICAgZ19v
YmplY3RfcmVmKHByZXNzRXZlbnQtPmtleS53aW5kb3cpOwogICAgIGdka19ldmVudF9zZXRfZGV2
aWNlKHByZXNzRXZlbnQsIGdka19kZXZpY2VfbWFuYWdlcl9nZXRfY2xpZW50X3BvaW50ZXIoZ2Rr
X2Rpc3BsYXlfZ2V0X2RldmljZV9tYW5hZ2VyKGdka193aW5kb3dfZ2V0X2Rpc3BsYXkocHJlc3NF
dmVudC0+a2V5LndpbmRvdykpKSk7CiAKLSAgICBHT3duUHRyPEdka0tleW1hcEtleT4ga2V5czsK
KyAgICBHVW5pcXVlT3V0UHRyPEdka0tleW1hcEtleT4ga2V5czsKICAgICBnaW50IG5LZXlzOwog
ICAgIGlmIChnZGtfa2V5bWFwX2dldF9lbnRyaWVzX2Zvcl9rZXl2YWwoZ2RrX2tleW1hcF9nZXRf
ZGVmYXVsdCgpLCBnZGtLZXlTeW0sICZrZXlzLm91dFB0cigpLCAmbktleXMpKQogICAgICAgICBw
cmVzc0V2ZW50LT5rZXkuaGFyZHdhcmVfa2V5Y29kZSA9IGtleXMuZ2V0KClbMF0ua2V5Y29kZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222574</attachid>
            <date>2014-01-29 08:37:10 -0800</date>
            <delta_ts>2014-02-09 05:15:21 -0800</delta_ts>
            <desc>Rebased patch</desc>
            <filename>g-unique-out-ptr.diff</filename>
            <type>text/plain</type>
            <size>86000</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggMDczZTAwYi4uNDUwMDdjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNC0wMS0yNCAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dM
SUJdIEFkZCBHVW5pcXVlT3V0UHRyIGFuZCB1c2UgaXQgaW5zdGVhZCBvZiBHT3duUHRyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc1NTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHVW5pcXVlT3V0UHRy
IGlzIGEgc2ltcGxpZmllZCB2ZXJzaW9uIG9mIEdPd25QdHIgZm9yIHRoZSBjYXNlcworICAgICAg
ICB3aGVyZSB3ZSBuZWVkIHRoZSBhZGRyZXNzIG9mIHRoZSBjb250YWluZWQgcG9pbnRlci4gR1Vu
aXF1ZU91dFB0cgorICAgICAgICB1c2VzIEdVbmlxdWVQdHIgdG8gZnJlZSB0aGUgY29udGFpbmVk
IG9iamVjdCBhbmQgdG8gcmVsZWFzZSB0aGUKKyAgICAgICAgY29udGFpbmVyIHBvaW50ZXIuIFRo
ZSBBUEkgaXMgdmVyeSBzaW1wbGUgdG8gbWFrZSBzdXJlIHRoaXMgaXMKKyAgICAgICAgb25seSB1
c2VkIHdoZW4gb3V0UHRyKCkgaXMgbmVlZGVkLiBJdCBjYW4ndCBiZSBjb25zdHJ1Y3RlZCB3aXRo
IGEKKyAgICAgICAgcG9pbnRlciwgYW5kIHRoZXJlJ3Mgbm90IG1ldGhvZCB0byBzZXQgYSBuZXcg
cG9pbnRlci4gQW5vdGhlcgorICAgICAgICBkaWZmZXJlbmNlIHdpdGggdGhlIG9sZCBHT3duUHRy
IGlzIHRoYXQgb3V0UHRyKCkgY2FuIGJlIHVzZWQKKyAgICAgICAgbXVsdGlwbGUgdGltZXMsIGJl
Y2F1c2UgaXQgZnJlZXMgYW55IHBvaW50ZXIgcHJldmlvdXNseSBzZXQuCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVmbC5jbWFrZToKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogd3RmL2dvYmplY3QvR093
blB0ci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd3RmL2dvYmplY3QvR093blB0ci5oOiBSZW1v
dmVkLgorICAgICAgICAqIHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaDoKKyAgICAgICAgKFdURjo6
R1VuaXF1ZU91dFB0cjo6R1VuaXF1ZU91dFB0cik6CisgICAgICAgIChXVEY6OkdVbmlxdWVPdXRQ
dHI6On5HVW5pcXVlT3V0UHRyKToKKyAgICAgICAgKFdURjo6R1VuaXF1ZU91dFB0cjo6b3V0UHRy
KToKKyAgICAgICAgKFdURjo6R1VuaXF1ZU91dFB0cjo6cmVzZXQpOgorICAgICAgICAoV1RGOjpH
VW5pcXVlT3V0UHRyOjpyZWxlYXNlKToKKyAgICAgICAgKFdURjo6R1VuaXF1ZU91dFB0cjo6b3Bl
cmF0b3IqKToKKyAgICAgICAgKFdURjo6R1VuaXF1ZU91dFB0cjo6b3BlcmF0b3ItPik6CisgICAg
ICAgIChXVEY6OkdVbmlxdWVPdXRQdHI6OmdldCk6CisgICAgICAgIChXVEY6OkdVbmlxdWVPdXRQ
dHI6Om9wZXJhdG9yISk6CisgICAgICAgIChXVEY6OkdVbmlxdWVPdXRQdHI6Om9wZXJhdG9yIFVu
c3BlY2lmaWVkQm9vbFR5cGUpOgorCiAyMDE0LTAxLTI4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQWN0dWFsbHkgdHVybiBzdGFjayBzdGF0cyBiYWNr
IG9mZi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJj
ZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA1NGZlZGIxLi44Njc4NWYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dURi9HTlVt
YWtlZmlsZS5saXN0LmFtCkBAIC0yMDksOCArMjA5LDYgQEAgd3RmX3NvdXJjZXMgKz0gXAogICAg
IFNvdXJjZS9XVEYvd3RmL2R0b2Evc3RydG9kLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL2R0b2Ev
dXRpbHMuaCBcCiAgICAgU291cmNlL1dURi93dGYvZ29iamVjdC9HTXV0ZXhMb2NrZXIuaCBcCi0g
ICAgU291cmNlL1dURi93dGYvZ29iamVjdC9HT3duUHRyLmNwcCBcCi0gICAgU291cmNlL1dURi93
dGYvZ29iamVjdC9HT3duUHRyLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0
ci5jcHAgXAogICAgIFNvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5oIFwKICAgICBTb3Vy
Y2UvV1RGL3d0Zi9nb2JqZWN0L0dUeXBlZGVmcy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FZmwuY21ha2UK
aW5kZXggZTEwYTQ0Mi4uYjRlMjEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQs
NyArNCw2IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgZWZsL1JlZlB0ckVmbC5jcHAK
ICAgICBlZmwvUnVuTG9vcEVmbC5jcHAKIAotICAgIGdvYmplY3QvR093blB0ci5jcHAKICAgICBn
b2JqZWN0L0dSZWZQdHIuY3BwCiApCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtR1RLLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggMzJl
MWZlYi4uNzAyNjJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21h
a2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTEsNSArMSw0IEBA
CiBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwotICAgIGdvYmplY3QvR093blB0ci5jcHAKICAgICBn
b2JqZWN0L0dSZWZQdHIuY3BwCiAgICAgZ29iamVjdC9HbGliVXRpbGl0aWVzLmNwcAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dPd25QdHIuY3BwIGIvU291cmNlL1dURi93
dGYvZ29iamVjdC9HT3duUHRyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTkz
NTZkNi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dPd25QdHIuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBD
b2xsYWJvcmEgTHRkLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAq
ICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkdPd25QdHIuaCIKLQotI2lmIFVTRShHTElCKQotCi0jaW5j
bHVkZSA8Z2lvL2dpby5oPgotI2luY2x1ZGUgPGdsaWIuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0K
LXRlbXBsYXRlIDw+IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGZyZWVPd25lZEdQdHI8R0Vycm9y
PihHRXJyb3IqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAgICAgICBnX2Vycm9yX2ZyZWUocHRy
KTsKLX0KLQotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdMaXN0PihHTGlzdCogcHRy
KQotewotICAgIGdfbGlzdF9mcmVlKHB0cik7Ci19Ci0KLXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93
bmVkR1B0cjxHU0xpc3Q+KEdTTGlzdCogcHRyKQotewotICAgIGdfc2xpc3RfZnJlZShwdHIpOwot
fQotCi10ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8R1BhdHRlcm5TcGVjPihHUGF0dGVy
blNwZWMqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAgICAgICBnX3BhdHRlcm5fc3BlY19mcmVl
KHB0cik7Ci19Ci0KLXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxHRGlyPihHRGlyKiBw
dHIpCi17Ci0gICAgaWYgKHB0cikKLSAgICAgICAgZ19kaXJfY2xvc2UocHRyKTsKLX0KLQotdGVt
cGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdUaW1lcj4oR1RpbWVyKiBwdHIpCi17Ci0gICAg
aWYgKHB0cikKLSAgICAgICAgZ190aW1lcl9kZXN0cm95KHB0cik7Ci19Ci0KLXRlbXBsYXRlIDw+
IHZvaWQgZnJlZU93bmVkR1B0cjxHS2V5RmlsZT4oR0tleUZpbGUqIHB0cikKLXsKLSAgICBpZiAo
cHRyKQotICAgICAgICBnX2tleV9maWxlX2ZyZWUocHRyKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V1RGCi0KLSNlbmRpZiAvLyBVU0UoR0xJQikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dv
YmplY3QvR093blB0ci5oIGIvU291cmNlL1dURi93dGYvZ29iamVjdC9HT3duUHRyLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMjYyM2IuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dU
Ri93dGYvZ29iamVjdC9HT3duUHRyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDQgKzAsMCBAQAot
LyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgotICoKLSAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
Ci0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0g
Ki8KLQotI2lmbmRlZiBHT3duUHRyX2gKLSNkZWZpbmUgR093blB0cl9oCi0KLSNpZiBVU0UoR0xJ
QikKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgot
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1leHRlcm4gIkMiIHZvaWQgZ19mcmVlKHZv
aWQqKTsKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUg
dm9pZCBmcmVlT3duZWRHUHRyKFQqIHB0cik7Ci10ZW1wbGF0ZTw+IFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGZyZWVPd25lZEdQdHI8R0Vycm9yPihHRXJyb3IqKTsKLXRlbXBsYXRlPD4gdm9pZCBm
cmVlT3duZWRHUHRyPEdMaXN0PihHTGlzdCopOwotdGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQ
dHI8R1NMaXN0PihHU0xpc3QqKTsKLXRlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdQYXR0
ZXJuU3BlYz4oR1BhdHRlcm5TcGVjKik7Ci10ZW1wbGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxH
RGlyPihHRGlyKik7Ci10ZW1wbGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxHVGltZXI+KEdUaW1l
ciopOwotdGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8R0tleUZpbGU+KEdLZXlGaWxlKik7
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBHT3duUHRyIHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShHT3duUHRyKTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBHT3duUHRyKFQqIHB0
ciA9IDApIDogbV9wdHIocHRyKSB7IH0KLSAgICB+R093blB0cigpIHsgZnJlZU93bmVkR1B0ciht
X3B0cik7IH0KLQotICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9Ci0gICAgVCog
cmVsZWFzZSgpCi0gICAgewotICAgICAgICBUKiBwdHIgPSBtX3B0cjsKLSAgICAgICAgbV9wdHIg
PSAwOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQotICAgIFQqJiBvdXRQdHIoKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKCFtX3B0cik7Ci0gICAgICAgIHJldHVybiBtX3B0cjsKLSAgICB9
Ci0KLSAgICB2b2lkIHNldChUKiBwdHIpCi0gICAgewotICAgICAgICBBU1NFUlQoIXB0ciB8fCBt
X3B0ciAhPSBwdHIpOwotICAgICAgICBmcmVlT3duZWRHUHRyKG1fcHRyKTsKLSAgICAgICAgbV9w
dHIgPSBwdHI7Ci0gICAgfQotCi0gICAgdm9pZCBjbGVhcigpCi0gICAgewotICAgICAgICBUKiBw
dHIgPSBtX3B0cjsKLSAgICAgICAgbV9wdHIgPSAwOwotICAgICAgICBmcmVlT3duZWRHUHRyKHB0
cik7Ci0gICAgfQotCi0gICAgVCYgb3BlcmF0b3IqKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX3B0cik7Ci0gICAgICAgIHJldHVybiAqbV9wdHI7Ci0gICAgfQotCi0gICAgVCogb3Bl
cmF0b3ItPigpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9wdHIpOwotICAgICAgICBy
ZXR1cm4gbV9wdHI7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVy
biAhbV9wdHI7IH0KLQotICAgIC8vIFRoaXMgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgaW1w
bGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3RoZXIgaW50ZWdlciB0eXBlcy4K
LSAgICB0eXBlZGVmIFQqIEdPd25QdHI6OipVbnNwZWNpZmllZEJvb2xUeXBlOwotICAgIG9wZXJh
dG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3B0ciA/ICZHT3duUHRy
OjptX3B0ciA6IDA7IH0KLQotICAgIHZvaWQgc3dhcChHT3duUHRyJiBvKSB7IHN0ZDo6c3dhcCht
X3B0ciwgby5tX3B0cik7IH0KLQotcHJpdmF0ZToKLSAgICBUKiBtX3B0cjsKLX07Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBzd2FwKEdPd25QdHI8VD4mIGEsIEdPd25QdHI8
VD4mIGIpCi17Ci0gICAgYS5zd2FwKGIpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHT3duUHRyPFQ+JiBhLCBVKiBi
KQoteyAKLSAgICByZXR1cm4gYS5nZXQoKSA9PSBiOyAKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oVCogYSwgY29uc3QgR093blB0
cjxVPiYgYikgCi17Ci0gICAgcmV0dXJuIGEgPT0gYi5nZXQoKTsgCi19Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEdPd25Q
dHI8VD4mIGEsIFUqIGIpCi17Ci0gICAgcmV0dXJuIGEuZ2V0KCkgIT0gYjsgCi19Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEs
IGNvbnN0IEdPd25QdHI8VT4mIGIpCi17IAotICAgIHJldHVybiBhICE9IGIuZ2V0KCk7IAotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHR5cGVuYW1lIEdPd25QdHI8VD46OlB0clR5
cGUgZ2V0UHRyKGNvbnN0IEdPd25QdHI8VD4mIHApCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCk7Ci19
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBmcmVlT3duZWRHUHRyKFQqIHB0
cikKLXsKLSAgICBnX2ZyZWUocHRyKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5n
IFdURjo6R093blB0cjsKLQotI2VuZGlmIC8vIFVTRShHTElCKQotCi0jZW5kaWYgLy8gR093blB0
cl9oCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oIGIv
U291cmNlL1dURi93dGYvZ29iamVjdC9HVW5pcXVlUHRyLmgKaW5kZXggMjI3MTgxMi4uYmNmYWEz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ29iamVjdC9HVW5pcXVlUHRyLmgKKysrIGIv
U291cmNlL1dURi93dGYvZ29iamVjdC9HVW5pcXVlUHRyLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNp
ZiBVU0UoR0xJQikKIAogI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTU3LDkgKzU4LDY4IEBAIHVzaW5nIEdV
bmlxdWVQdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8VCwgR1B0ckRlbGV0ZXI8VD4+OwogRk9SX0VBQ0hf
R0xJQl9ERUxFVEVSKFdURl9ERUZJTkVfR1BUUl9ERUxFVEVSKQogI3VuZGVmIEZPUl9FQUNIX0dM
SUJfREVMRVRFUgogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgR1VuaXF1ZU91dFB0ciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR1VuaXF1ZU91dFB0cik7CitwdWJsaWM6CisgICAg
R1VuaXF1ZU91dFB0cigpCisgICAgICAgIDogbV9wdHIobnVsbHB0cikKKyAgICB7CisgICAgfQor
CisgICAgfkdVbmlxdWVPdXRQdHIoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICB9CisK
KyAgICBUKiYgb3V0UHRyKCkKKyAgICB7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIHJldHVy
biBtX3B0cjsKKyAgICB9CisKKyAgICBHVW5pcXVlUHRyPFQ+IHJlbGVhc2UoKQorICAgIHsKKyAg
ICAgICAgR1VuaXF1ZVB0cjxUPiBwdHIobV9wdHIpOworICAgICAgICBtX3B0ciA9IG51bGxwdHI7
CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgVCYgb3BlcmF0b3IqKCkgY29uc3QK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX3B0cik7CisgICAgICAgIHJldHVybiAqbV9wdHI7Cisg
ICAgfQorCisgICAgVCogb3BlcmF0b3ItPigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQo
bV9wdHIpOworICAgICAgICByZXR1cm4gbV9wdHI7CisgICAgfQorCisgICAgVCogZ2V0KCkgY29u
c3QgeyByZXR1cm4gbV9wdHI7IH0KKworICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1
cm4gIW1fcHRyOyB9CisKKyAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGlt
cGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMu
CisgICAgdHlwZWRlZiBUKiBHVW5pcXVlT3V0UHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZTsKKyAg
ICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgPyAm
R1VuaXF1ZU91dFB0cjo6bV9wdHIgOiAwOyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCByZXNldCgp
CisgICAgeworICAgICAgICBpZiAobV9wdHIpIHsKKyAgICAgICAgICAgIEdVbmlxdWVQdHI8VD4g
ZGVsZXRlUHRyKG1fcHRyKTsKKyAgICAgICAgICAgIG1fcHRyID0gbnVsbHB0cjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIFQqIG1fcHRyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVz
aW5nIFdURjo6R1VuaXF1ZVB0cjsKK3VzaW5nIFdURjo6R1VuaXF1ZU91dFB0cjsKIAogI2VuZGlm
IC8vIFVTRShHTElCKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjE0MjFlMS4uNDdiMWU3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDY1IEBACisyMDE0LTAxLTI0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0xJQl0gQWRkIEdVbmlxdWVPdXRQdHIgYW5k
IHVzZSBpdCBpbnN0ZWFkIG9mIEdPd25QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNzU1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBHVW5pcXVlT3V0UHRyIGluc3RlYWQgb2YgR093blB0ci4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogUGxhdGZvcm1FZmwu
Y21ha2U6CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZSk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZU1lc3NhZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dsaWIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyLmNwcDoKKyAgICAg
ICAgKEJhdHRlcnlQcm92aWRlclVQb3dlcjo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppbml0aWFsaXplR1N0cmVhbWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6
Z2V0VGFnKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OnRvRGF0YVVSTCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3Rr
L0ltYWdlR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRSZXNvdXJjZVNoYXJlZEJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YU9iamVjdEd0azo6c2V0VVJJTGlzdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL0ZpbGVTeXN0ZW1HdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEZyb21GaWxlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR2FtZXBhZHNHdGsuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZXBhZERldmljZUd0azo6cmVhZENhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvR3RrSW5wdXRNZXRob2RGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3RrSW5wdXRN
ZXRob2RGaWx0ZXI6OmhhbmRsZVByZWVkaXRDaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEhlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSGVs
cGVyOjpmaWxsRGF0YU9iamVjdEZyb21Ecm9wRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1JlbmRlclRoZW1lR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpz
eXN0ZW1Gb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2hhcmVkQnVmZmVyR3RrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2d0ay9DcmVkZW50aWFsQmFja2luZ1N0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWRlbnRpYWxGb3JDaGFsbGVuZ2VBc3luY1JlYWR5
Q2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25QdHJTb3Vw
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWRpcmVjdFNraXBDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpuZXh0TXVsdGlwYXJ0UmVzcG9uc2VQYXJ0Q2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6c2VuZFJlcXVlc3RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjph
ZGRGaWxlVG9Tb3VwTWVzc2FnZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU291cFJl
cXVlc3RBbmRNZXNzYWdlRm9ySGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRDYWxsYmFj
ayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNv
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybVNl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybUNsb3Nl
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbm5lY3RlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OnJlYWRSZWFkeUNhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
U291cE5ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vz
c2lvbjo6aHR0cFByb3h5KToKKwogMjAxNC0wMS0yOSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE2Mjk0Nyk6IFJlcGFpbnQgdGVzdCBy
ZXN1bHRzIGFyZSBkaWZmZXJlbnQgYmV0d2VlbiBXSzEgYW5kIFdLMgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KaW5kZXggNzc3MGMwNy4uYzhlNjFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC01ODY0LDggKzU4NjQsNiBAQCBwbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQldyaXRlQmF0Y2guaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCV3JpdGVCYXRjaC5jcHAgXAot
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5jcHAgXAot
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3VwLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3Vw
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDYxZmJmZjIuLjUwYzgzMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xNTcsNyArMTU3LDYgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VT
b3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9DcmVkZW50aWFsU3RvcmFnZVNvdXAu
Y3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCi0gICAgcGxhdGZvcm0v
bmV0d29yay9zb3VwL0dPd25QdHJTb3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Q
cm94eVJlc29sdmVyU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlTZXJ2
ZXJTb3VwLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBiZjBmMzJmLi5iODAwZmRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTE1LDcgKzExNSw2IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9y
YWdlU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0b3JhZ2VT
b3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAotICAgIHBsYXRm
b3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUHJveHlSZXNvbHZlclNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5
U2VydmVyU291cC5jcHAKQEAgLTI0NCw3ICsyNDMsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlUGxh
dGZvcm1HVEtfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdl
U291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0b3JhZ2VTb3Vw
LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAotICAgIHBsYXRmb3Jt
L25ldHdvcmsvc291cC9HT3duUHRyU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UHJveHlSZXNvbHZlclNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2Vy
dmVyU291cC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRl
eCA4MTYyNDk0Li4yNWRkY2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFt
ZXIuY3BwCkBAIC0yNCwxMiArMjQsMTIgQEAKIAogI2luY2x1ZGUgIkF1ZGlvQ2hhbm5lbC5oIgog
I2luY2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
T3duUHRyLmg+CiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5oIgogI2luY2x1
ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9wYnV0aWxzLmg+CisjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTE1MCw4ICsxNTAsOCBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OmZpbmlzaEJ1
aWxkaW5nUGlwZWxpbmVBZnRlcldhdlBhcnNlclBhZFJlYWR5KEdzdAogCiBnYm9vbGVhbiBBdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2Up
CiB7Ci0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOwotICAgIEdPd25QdHI8Z2NoYXI+IGRlYnVn
OworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPGdj
aGFyPiBkZWJ1ZzsKIAogICAgIHN3aXRjaCAoR1NUX01FU1NBR0VfVFlQRShtZXNzYWdlKSkgewog
ICAgIGNhc2UgR1NUX01FU1NBR0VfV0FSTklORzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdT
dHJlYW1lci5jcHAKaW5kZXggOGUxNGQzMS4uZTY4N2U1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmls
ZVJlYWRlckdTdHJlYW1lci5jcHAKQEAgLTMwLDggKzMwLDggQEAKICNpbmNsdWRlIDxnc3QvZ3N0
Lmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5o
PgogCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+CiAKQEAgLTIwMyw4ICsyMDMsOCBAQCBH
c3RGbG93UmV0dXJuIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlU2FtcGxlKEdzdEFwcFNpbmsqIHNp
bmspCiAKIGdib29sZWFuIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdl
KiBtZXNzYWdlKQogewotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBHT3duUHRyPGdj
aGFyPiBkZWJ1ZzsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1
ZU91dFB0cjxnY2hhcj4gZGVidWc7CiAKICAgICBzd2l0Y2ggKEdTVF9NRVNTQUdFX1RZUEUobWVz
c2FnZSkpIHsKICAgICBjYXNlIEdTVF9NRVNTQUdFX0VPUzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyLmNwcAppbmRleCA2YTlm
MWJmLi5lZmM4MDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0Jh
dHRlcnlQcm92aWRlclVQb3dlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9CYXR0ZXJ5UHJvdmlkZXJVUG93ZXIuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAi
QmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50LmgiCiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVk
ZSA8bGltaXRzPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBA
IC01MSw3ICs1MSw3IEBAIHZvaWQgQmF0dGVyeVByb3ZpZGVyVVBvd2VyOjpzdGFydFVwZGF0aW5n
KCkKICAgICBBU1NFUlQoIW1fdXBvd2VyQ2xpZW50KTsKICAgICBtX3Vwb3dlckNsaWVudCA9IGFk
b3B0R1JlZih1cF9jbGllbnRfbmV3KCkpOwogCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOwor
ICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBpZiAoIXVwX2NsaWVudF9lbnVt
ZXJhdGVfZGV2aWNlc19zeW5jKG1fdXBvd2VyQ2xpZW50LmdldCgpLCAwLCAmZXJyb3Iub3V0UHRy
KCkpKSB7CiAgICAgICAgIG1fY2xpZW50LT51cGRhdGVCYXR0ZXJ5U3RhdHVzKE5vdEF2YWlsYWJs
ZSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAKaW5k
ZXggYzk2MzMwYy4uYTZhYWUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAK
QEAgLTI2LDcgKzI2LDcgQEAKIAogI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgogI2luY2x1
ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTEyNiw3ICsxMjYsNyBAQCBib29sIGluaXRpYWxpemVHU3RyZWFtZXIoKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICNlbmRpZgogCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlx
dWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5
IHBhc3MgdGhlIGFyZ3VtZW50cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCiAgICAgYm9vbCBnc3RJ
bml0aWFsaXplZCA9IGdzdF9pbml0X2NoZWNrKDAsIDAsICZlcnJvci5vdXRQdHIoKSk7CiAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShnc3RJbml0aWFsaXplZCwgIkdTdHJlYW1lciBpbml0aWFsaXph
dGlvbiBmYWlsZWQ6ICVzIiwgZXJyb3IgPyBlcnJvci0+bWVzc2FnZSA6ICJ1bmtub3duIGVycm9y
IG9jY3VycmVkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCmluZGV4IDE0YzU1OGYuLmYyNjY2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSA8
Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGdzdC9wYnV0aWxzL21pc3NpbmctcGx1Z2lucy5oPgogI2lu
Y2x1ZGUgPGxpbWl0cz4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIApAQCAtOTQ1LDggKzk0NCw4IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCgpIGNvbnN0CiAKIGdib29sZWFuIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQog
ewotICAgIEdPd25QdHI8R0Vycm9yPiBlcnI7Ci0gICAgR093blB0cjxnY2hhcj4gZGVidWc7Cisg
ICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycjsKKyAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBk
ZWJ1ZzsKICAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIGVycm9yOwogICAgIGJvb2wgaXNz
dWVFcnJvciA9IHRydWU7CiAgICAgYm9vbCBhdHRlbXB0TmV4dExvY2F0aW9uID0gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJh
Y2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKaW5kZXggYTZmOTI3
Zi4uNDVmNGZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
LmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJhc2UuaCIKICNp
bmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5o
PgogCiBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tZWRpYV9wbGF5ZXJfZGVidWcp
OwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X21lZGlhX3BsYXllcl9kZWJ1ZwpAQCAt
MTQzLDcgKzE0Myw3IEBAIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6bm90aWZ5VHJh
Y2tPZkFjdGl2ZUNoYW5nZWQoKQogCiBib29sIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Omdl
dFRhZyhHc3RUYWdMaXN0KiB0YWdzLCBjb25zdCBnY2hhciogdGFnTmFtZSwgU3RyaW5nJiB2YWx1
ZSkKIHsKLSAgICBHT3duUHRyPGdjaGFyPiB0YWdWYWx1ZTsKKyAgICBHVW5pcXVlT3V0UHRyPGdj
aGFyPiB0YWdWYWx1ZTsKICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgdGFn
TmFtZSwgJnRhZ1ZhbHVlLm91dFB0cigpKSkgewogICAgICAgICBJTkZPX01FRElBX01FU1NBR0Uo
IlRyYWNrICVkIGdvdCAlcyAlcy4iLCBtX2luZGV4LCB0YWdOYW1lLCB0YWdWYWx1ZS5nZXQoKSk7
CiAgICAgICAgIHZhbHVlID0gdGFnVmFsdWUuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcAppbmRleCA3NjZm
NmM1Li43OGE2MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHAKQEAgLTI1LDE0ICsyNSwxNCBAQAogI2luY2x1
ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1ZGUgPGd0
ay9ndGsuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShjYWly
b19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJs
ZSogcXVhbGl0eSwgR093blB0cjxnY2hhcj4mIGJ1ZmZlciwgZ3NpemUmIGJ1ZmZlclNpemUpCitz
dGF0aWMgYm9vbCBlbmNvZGVJbWFnZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVhbGl0eSwgR1VuaXF1ZU91dFB0cjxnY2hh
cj4mIGJ1ZmZlciwgZ3NpemUmIGJ1ZmZlclNpemUpCiB7CiAgICAgLy8gTGlzdCBvZiBzdXBwb3J0
ZWQgaW1hZ2UgZW5jb2RpbmcgdHlwZXMgY29tZXMgZnJvbSB0aGUgR2RrUGl4YnVmIGRvY3VtZW50
YXRpb24uCiAgICAgLy8gaHR0cDovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2RrLXBpeGJ1Zi9zdGFi
bGUvZ2RrLXBpeGJ1Zi1GaWxlLXNhdmluZy5odG1sI2dkay1waXhidWYtc2F2ZS10by1idWZmZXJ2
CkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyBib29sIGVuY29kZUltYWdlKGNhaXJvX3N1cmZhY2Vf
dCogc3VyZmFjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QKICAgICBpZiAoIXBpeGJ1
ZikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOwor
ICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBpZiAodHlwZSA9PSAianBlZyIg
JiYgcXVhbGl0eSAmJiAqcXVhbGl0eSA+PSAwLjAgJiYgKnF1YWxpdHkgPD0gMS4wKSB7CiAgICAg
ICAgIFN0cmluZyBxdWFsaXR5U3RyaW5nID0gU3RyaW5nOjpmb3JtYXQoIiVkIiwgc3RhdGljX2Nh
c3Q8aW50PigqcXVhbGl0eSAqIDEwMC4wICsgMC41KSk7CiAgICAgICAgIGdka19waXhidWZfc2F2
ZV90b19idWZmZXIocGl4YnVmLmdldCgpLCAmYnVmZmVyLm91dFB0cigpLCAmYnVmZmVyU2l6ZSwg
dHlwZS51dGY4KCkuZGF0YSgpLCAmZXJyb3Iub3V0UHRyKCksICJxdWFsaXR5IiwgcXVhbGl0eVN0
cmluZy51dGY4KCkuZGF0YSgpLCBOVUxMKTsKQEAgLTc5LDcgKzc5LDcgQEAgU3RyaW5nIEltYWdl
QnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBx
dWFsaXR5LCBDb28KIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJ
bWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAotICAgIEdPd25QdHI8Z2NoYXI+
IGJ1ZmZlcjsKKyAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBidWZmZXI7CiAgICAgZ3NpemUgYnVm
ZmVyU2l6ZTsKICAgICBpZiAoIWVuY29kZUltYWdlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIG1p
bWVUeXBlLCBxdWFsaXR5LCBidWZmZXIsIGJ1ZmZlclNpemUpKQogICAgICAgICByZXR1cm4gImRh
dGE6LCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdl
R3RrLmNwcAppbmRleCAyZTdjNDRjLi42MjA4ZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNp
bmNsdWRlICJHVW5pcXVlUHRyR3RrLmgiCiAjaW5jbHVkZSAiR2RrQ2Fpcm9VdGlsaXRpZXMuaCIK
ICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDxjYWlyby5oPgpAQCAtNjcsNyArNjYsNyBAQCBzdGF0
aWMgQ1N0cmluZyBnZXRUaGVtZUljb25GaWxlTmFtZShjb25zdCBjaGFyKiBuYW1lLCBpbnQgc2l6
ZSkKIAogc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VTaGFyZWRC
dWZmZXIoQ1N0cmluZyBuYW1lKQogewotICAgIEdPd25QdHI8Z2NoYXI+IGNvbnRlbnQ7CisgICAg
R1VuaXF1ZU91dFB0cjxnY2hhcj4gY29udGVudDsKICAgICBnc2l6ZSBsZW5ndGg7CiAgICAgaWYg
KCFnX2ZpbGVfZ2V0X2NvbnRlbnRzKG5hbWUuZGF0YSgpLCAmY29udGVudC5vdXRQdHIoKSwgJmxl
bmd0aCwgMCkpCiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwCmluZGV4IDc3MTU1MDAu
LmJjMzNiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2Jq
ZWN0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0
ay5jcHAKQEAgLTIxLDcgKzIxLDYgQEAKIAogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUg
PGd0ay9ndGsuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KIApAQCAtMTAyLDcgKzEwMSw3IEBAIHZvaWQgRGF0YU9iamVjdEd0azo6c2V0VVJJTGlz
dChjb25zdCBTdHJpbmcmIHVyaUxpc3RTdHJpbmcpCiAgICAgICAgICAgICAgICAgc2V0VVJMID0g
dHJ1ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9y
OworICAgICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICAgICAg
R1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUoZ19maWxlbmFtZV9mcm9tX3VyaShsaW5lLnV0Zjgo
KS5kYXRhKCksIDAsICZlcnJvci5vdXRQdHIoKSkpOwogICAgICAgICAgICAgaWYgKCFlcnJvciAm
JiBmaWxlbmFtZSkKICAgICAgICAgICAgICAgICBtX2ZpbGVuYW1lcy5hcHBlbmQoU3RyaW5nOjpm
cm9tVVRGOChmaWxlbmFtZS5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0ZpbGVTeXN0ZW1HdGsuY3BwCmluZGV4IDdmN2U1MjguLjllYmVjYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAKQEAgLTI4LDcgKzI4LDYgQEAK
ICNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGdsaWIv
Z3N0ZGlvLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR2xpYlV0aWxpdGllcy5oPgpAQCAtMzQwLDcgKzMzOSw3
IEBAIGludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoKQogCiBpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAgR093blB0cjxHRXJyb3I+
IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBkbyB7CiAgICAg
ICAgIGdzc2l6ZSBieXRlc1JlYWQgPSBnX2lucHV0X3N0cmVhbV9yZWFkKGdfaW9fc3RyZWFtX2dl
dF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsIGxlbmd0aCwgMCwgJmVycm9yLm91dFB0
cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HYW1lcGFkc0d0
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR2FtZXBhZHNHdGsuY3BwCmluZGV4
IDQ0MmJiZWUuLjM3Zjg0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9HYW1lcGFkc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dhbWVw
YWRzR3RrLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgPGd1ZGV2L2d1ZGV2Lmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTgwLDcgKzc5LDcgQEAgR2FtZXBhZERldmljZUd0azo6fkdh
bWVwYWREZXZpY2VHdGsoKQogZ2Jvb2xlYW4gR2FtZXBhZERldmljZUd0azo6cmVhZENhbGxiYWNr
KEdPYmplY3QqIHBvbGxhYmxlU3RyZWFtLCBncG9pbnRlciBkYXRhKQogewogICAgIEdhbWVwYWRE
ZXZpY2VHdGsqIGdhbWVwYWREZXZpY2UgPSByZWludGVycHJldF9jYXN0PEdhbWVwYWREZXZpY2VH
dGsqPihkYXRhKTsKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0
cjxHRXJyb3I+IGVycm9yOwogICAgIHN0cnVjdCBqc19ldmVudCBldmVudDsKIAogICAgIGdzc2l6
ZSBsZW4gPSBnX3BvbGxhYmxlX2lucHV0X3N0cmVhbV9yZWFkX25vbmJsb2NraW5nKEdfUE9MTEFC
TEVfSU5QVVRfU1RSRUFNKHBvbGxhYmxlU3RyZWFtKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HdGtJbnB1dE1ldGhvZEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR3RrSW5wdXRNZXRob2RGaWx0ZXIuY3BwCmluZGV4IDBhMDI2NjUuLjhh
NTJiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtJbnB1dE1l
dGhvZEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0lucHV0
TWV0aG9kRmlsdGVyLmNwcApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUgPGdkay9nZGtrZXlz
eW1zLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dVbmlxdWVQdHIuaD4KIAogLy8gVGhlIFdpbmRvd3MgY29tcG9zaXRpb24ga2V5IGV2ZW50IGNv
ZGUgaXMgMjk5IG9yIFZLX1BST0NFU1NLRVkuIFdlIG5lZWQgdG8KIC8vIGVtaXQgdGhpcyBjb2Rl
IGZvciB3ZWIgY29tcGF0aWJpbGl0eSByZWFzb25zIHdoZW4ga2V5IGV2ZW50cyB0cmlnZ2VyCkBA
IC0zMTcsNyArMzE3LDcgQEAgdm9pZCBHdGtJbnB1dE1ldGhvZEZpbHRlcjo6aGFuZGxlUHJlZWRp
dENoYW5nZWQoKQogICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBH
T3duUHRyPGdjaGFyPiBuZXdQcmVlZGl0OworICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IG5ld1By
ZWVkaXQ7CiAgICAgZ3RrX2ltX2NvbnRleHRfZ2V0X3ByZWVkaXRfc3RyaW5nKG1fY29udGV4dC5n
ZXQoKSwgJm5ld1ByZWVkaXQub3V0UHRyKCksIDAsICZtX2N1cnNvck9mZnNldCk7CiAKICAgICBp
ZiAobV9wcmV2ZW50TmV4dENvbW1pdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCmluZGV4IDU1NzM0MTYuLjg5YjlmYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKQEAgLTMy
LDcgKzMyLDYgQEAKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291
cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0yNTksMTggKzI1OCwxMyBAQCB2b2lkIFBhc3RlYm9hcmRIZWxw
ZXI6OmZpbGxEYXRhT2JqZWN0RnJvbURyb3BEYXRhKEd0a1NlbGVjdGlvbkRhdGEqIGRhdGEsIGd1
aW50CiAgICAgfSBlbHNlIGlmICh0YXJnZXQgPT0gdW5rbm93bkF0b20pIHsKICAgICAgICAgR1Jl
ZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9uZXdfcGFyc2VkKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YShkYXRhKSkpOwog
Ci0gICAgICAgIEdPd25QdHI8Z2NoYXI+IGtleTsKLSAgICAgICAgR093blB0cjxnY2hhcj4gdmFs
dWU7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IGtleTsKKyAgICAgICAgR1VuaXF1ZU91
dFB0cjxnY2hhcj4gdmFsdWU7CiAgICAgICAgIEdWYXJpYW50SXRlciBpdGVyOwogCiAgICAgICAg
IGdfdmFyaWFudF9pdGVyX2luaXQoJml0ZXIsIHZhcmlhbnQuZ2V0KCkpOwotICAgICAgICB3aGls
ZSAoZ192YXJpYW50X2l0ZXJfbmV4dCgmaXRlciwgIntzc30iLCAma2V5Lm91dFB0cigpLCAmdmFs
dWUub3V0UHRyKCkpKSB7CisgICAgICAgIHdoaWxlIChnX3ZhcmlhbnRfaXRlcl9uZXh0KCZpdGVy
LCAie3NzfSIsICZrZXkub3V0UHRyKCksICZ2YWx1ZS5vdXRQdHIoKSkpCiAgICAgICAgICAgICBk
YXRhT2JqZWN0LT5zZXRVbmtub3duVHlwZURhdGEoa2V5LmdldCgpLCB2YWx1ZS5nZXQoKSk7Ci0K
LSAgICAgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgR093blB0ciBiZSBzbWFydGVyIGFib3V0IHRo
aXMgYW5kIHJlcGxhY2UgdGhlIGV4aXN0aW5nIHB0ciB3aGVuIG91dFB0cigpIGlzIHVzZWQ/Ci0g
ICAgICAgICAgICBrZXkuY2xlYXIoKTsKLSAgICAgICAgICAgIHZhbHVlLmNsZWFyKCk7Ci0gICAg
ICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9SZW5kZXJUaGVtZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGsuY3BwCmluZGV4IDYyOWU4ZDYuLjU1YzQzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2lu
Y2x1ZGUgIkZpbGVMaXN0LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZv
bnREZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNs
dWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
Ikd0a1ZlcnNpb25pbmcuaCIKQEAgLTQ4LDYgKzQ3LDcgQEAKICNpbmNsdWRlIDxnZGsvZ2RrLmg+
CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAj
aWYgRU5BQkxFKFBST0dSRVNTX0VMRU1FTlQpCkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBSZW5k
ZXJUaGVtZUd0azo6c3lzdGVtRm9udChDU1NWYWx1ZUlELCBGb250RGVzY3JpcHRpb24mIGZvbnRE
ZXNjcmlwdGlvbikgY28KICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhpcyB3aWxsIGJlIGEg
Zm9udCBzZWxlY3Rpb24gc3RyaW5nIGxpa2UgIlNhbnMgMTAiIHNvIHdlIGNhbm5vdCB1c2UgaXQg
YXMgdGhlIGZhbWlseSBuYW1lLgotICAgIEdPd25QdHI8Z2NoYXI+IGZvbnROYW1lOworICAgIEdV
bmlxdWVPdXRQdHI8Z2NoYXI+IGZvbnROYW1lOwogICAgIGdfb2JqZWN0X2dldChzZXR0aW5ncywg
Imd0ay1mb250LW5hbWUiLCAmZm9udE5hbWUub3V0UHRyKCksIE5VTEwpOwogCiAgICAgUGFuZ29G
b250RGVzY3JpcHRpb24qIHBhbmdvRGVzY3JpcHRpb24gPSBwYW5nb19mb250X2Rlc2NyaXB0aW9u
X2Zyb21fc3RyaW5nKGZvbnROYW1lLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9TaGFyZWRCdWZmZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAKaW5kZXggYzdiNGYyNy4uZWQ4ZGU0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAKQEAgLTIw
LDcgKzIwLDcgQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogI2luY2x1ZGUgIkZpbGVT
eXN0ZW0uaCIKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
I2luY2x1ZGUgPGdsaWIuaD4KQEAgLTM0LDkgKzM0LDkgQEAgUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYg
ZmkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBDU3RyaW5nIGZpbGVuYW1lID0gZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKLSAgICBHT3duUHRyPGdjaGFyPiBjb250ZW50czsK
KyAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBjb250ZW50czsKICAgICBnc2l6ZSBzaXplOwotICAg
IEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7
CiAgICAgaWYgKCFnX2ZpbGVfZ2V0X2NvbnRlbnRzKGZpbGVuYW1lLmRhdGEoKSwgJmNvbnRlbnRz
Lm91dFB0cigpLCAmc2l6ZSwgJmVycm9yLm91dFB0cigpKSkgewogICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMgLSAlcyIsIGZpbGVuYW1l
Rm9yRGlzcGxheShmaWxlUGF0aCkudXRmOCgpLmRhdGEoKSwgZXJyb3ItPm1lc3NhZ2UpOwogICAg
ICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvZ3RrL0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMTQxMjAwMi4u
MDg2ZGJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ndGsv
Q3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAK
ICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPGxpYnNlY3JldC9zZWNyZXQu
aD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KICNlbmRpZgpAQCAtNzcsNyArNzYsNyBAQCBzdGF0aWMgdm9pZCBj
cmVkZW50aWFsRm9yQ2hhbGxlbmdlQXN5bmNSZWFkeUNhbGxiYWNrKFNlY3JldFNlcnZpY2UqIHNl
cnZpY2UsIEdBcwogICAgIHZvaWQqIGRhdGEgPSBjYWxsYmFja0RhdGEtPmRhdGE7CiAgICAgZGVs
ZXRlIGNhbGxiYWNrRGF0YTsKIAotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5p
cXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1VuaXF1ZVB0cjxHTGlzdD4gZWxlbWVudHMo
c2VjcmV0X3NlcnZpY2Vfc2VhcmNoX2ZpbmlzaChzZXJ2aWNlLCBhc3luY1Jlc3VsdCwgJmVycm9y
Lm91dFB0cigpKSk7CiAgICAgaWYgKGVycm9yIHx8ICFlbGVtZW50cyB8fCAhZWxlbWVudHMtPmRh
dGEpIHsKICAgICAgICAgY2FsbGJhY2soQ3JlZGVudGlhbCgpLCBkYXRhKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YmI0NGIzLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw1MSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5M
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
LSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC
b3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqLwotCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJHT3duUHRyU291cC5oIgotCi0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0K
LW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8U291cFVS
ST4oU291cFVSSSogcHRyKQotewotICAgIGlmIChwdHIpCi0gICAgICAgIHNvdXBfdXJpX2ZyZWUo
cHRyKTsKLX0KLQotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPFNvdXBDb29raWU+KFNv
dXBDb29raWUqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAgICAgICBzb3VwX2Nvb2tpZV9mcmVl
KHB0cik7Ci19Ci0KLXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxTb3VwTWVzc2FnZUhl
YWRlcnM+KFNvdXBNZXNzYWdlSGVhZGVycyogcHRyKQotewotICAgIGlmIChwdHIpCi0gICAgICAg
IHNvdXBfbWVzc2FnZV9oZWFkZXJzX2ZyZWUocHRyKTsKLX0KLQotdGVtcGxhdGUgPD4gdm9pZCBm
cmVlT3duZWRHUHRyPFNvdXBCdWZmZXI+KFNvdXBCdWZmZXIqIHB0cikKLXsKLSAgICBpZiAocHRy
KQotICAgICAgICBzb3VwX2J1ZmZlcl9mcmVlKHB0cik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25Q
dHJTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNv
dXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUyNTNiZC4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuaAorKysg
L2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDEwIEln
YWxpYSBTLkwKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBHT3duUHRyU291cF9oCi0jZGVmaW5lIEdPd25Q
dHJTb3VwX2gKLQotLy8gV2UgbmVlZCB0byBpbmNsdWRlIGxpYnNvdXAgaGVhZGVycyBoZXJlIGJl
Y2F1c2UgdGhlIHdheSB0aGF0IFNvdXBCdWZmZXIKLS8vIGlzIGRlZmluZWQgaXMgbm90IGNvbXBh
dGlibGUgd2l0aCBmb3J3YXJkIGRlY2xhcmF0aW9uLgotI2luY2x1ZGUgPGxpYnNvdXAvc291cC5o
PgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0K
LXRlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPFNvdXBVUkk+KFNvdXBVUkkqIHB0cik7Ci10
ZW1wbGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxTb3VwQ29va2llPihTb3VwQ29va2llKiBwdHIp
OwotdGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8U291cE1lc3NhZ2VIZWFkZXJzPihTb3Vw
TWVzc2FnZUhlYWRlcnMqKTsKLXRlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPFNvdXBCdWZm
ZXI+KFNvdXBCdWZmZXIqKTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5k
ZXggMjlkNzc3ZS4uZGIwM2JhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTMyLDcgKzMy
LDcgQEAKICNpbmNsdWRlICJDb29raWVKYXJTb3VwLmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlhbFN0
b3JhZ2UuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiR093blB0clNvdXAu
aCIKKyNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgi
CiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0
cnkuaCIKQEAgLTU1LDcgKzU1LDYgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgotI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpA
QCAtNTA0LDcgKzUwMyw3IEBAIHN0YXRpYyB2b2lkIHJlZGlyZWN0U2tpcENhbGxiYWNrKEdPYmpl
Y3QqLCBHQXN5bmNSZXN1bHQqIGFzeW5jUmVzdWx0LCBncG9pbnRlciBkCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0
cjxHRXJyb3I+IGVycm9yOwogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUt
PmdldEludGVybmFsKCk7CiAgICAgZ3NzaXplIGJ5dGVzU2tpcHBlZCA9IGdfaW5wdXRfc3RyZWFt
X3NraXBfZmluaXNoKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGFzeW5jUmVzdWx0LCAmZXJyb3Iu
b3V0UHRyKCkpOwogICAgIGlmIChlcnJvcikgewpAQCAtNjEwLDcgKzYwOSw3IEBAIHN0YXRpYyB2
b2lkIG5leHRNdWx0aXBhcnRSZXNwb25zZVBhcnRDYWxsYmFjayhHT2JqZWN0KiAvKnNvdXJjZSov
LCBHQXN5bmNSZXN1bHQqCiAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGhhbmRsZS0+
Z2V0SW50ZXJuYWwoKTsKICAgICBBU1NFUlQoIWQtPm1faW5wdXRTdHJlYW0pOwogCi0gICAgR093
blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAg
ICBkLT5tX2lucHV0U3RyZWFtID0gYWRvcHRHUmVmKHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVh
bV9uZXh0X3BhcnRfZmluaXNoKGQtPm1fbXVsdGlwYXJ0SW5wdXRTdHJlYW0uZ2V0KCksIHJlc3Vs
dCwgJmVycm9yLm91dFB0cigpKSk7CiAKICAgICBpZiAoZXJyb3IpIHsKQEAgLTY1Nyw3ICs2NTYs
NyBAQCBzdGF0aWMgdm9pZCBzZW5kUmVxdWVzdENhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1
bHQqIHJlc3VsdCwgZ3BvaW50ZXIgZGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7
CiAgICAgR1JlZlB0cjxHSW5wdXRTdHJlYW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKHNvdXBf
cmVxdWVzdF9zZW5kX2ZpbmlzaChkLT5tX3NvdXBSZXF1ZXN0LmdldCgpLCByZXN1bHQsICZlcnJv
ci5vdXRQdHIoKSkpOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBoYW5kbGUtPmNsaWVudCgp
LT5kaWRGYWlsKGhhbmRsZS5nZXQoKSwgUmVzb3VyY2VFcnJvcjo6aHR0cEVycm9yKHNvdXBNZXNz
YWdlLCBlcnJvci5nZXQoKSwgZC0+bV9zb3VwUmVxdWVzdC5nZXQoKSkpOwpAQCAtNzI3LDcgKzcy
Niw3IEBAIHN0YXRpYyB2b2lkIGNvbnRpbnVlQWZ0ZXJEaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSkKIAogc3RhdGljIGJvb2wgYWRkRmlsZVRvU291cE1lc3NhZ2VCb2R5
KFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lU3RyaW5nLCBzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoVG9TZW5kLCB1bnNpZ25lZCBsb25nJiB0b3RhbEJvZHlT
aXplKQogewotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdF
cnJvcj4gZXJyb3I7CiAgICAgQ1N0cmluZyBmaWxlTmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihmaWxlTmFtZVN0cmluZyk7CiAgICAgR01hcHBlZEZpbGUqIGZpbGVNYXBwaW5nID0gZ19t
YXBwZWRfZmlsZV9uZXcoZmlsZU5hbWUuZGF0YSgpLCBmYWxzZSwgJmVycm9yLm91dFB0cigpKTsK
ICAgICBpZiAoZXJyb3IpCkBAIC05NzgsMTIgKzk3NywxMSBAQCBzdGF0aWMgYm9vbCBjcmVhdGVT
b3VwUmVxdWVzdEFuZE1lc3NhZ2VGb3JIYW5kbGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29u
c3QgUgogewogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVy
bmFsKCk7CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0KICAgICBHVW5pcXVlUHRyPFNv
dXBVUkk+IHNvdXBVUkkgPSByZXF1ZXN0LmNyZWF0ZVNvdXBVUkkoKTsKICAgICBpZiAoIXNvdXBV
UkkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBl
cnJvcjsKICAgICBkLT5tX3NvdXBSZXF1ZXN0ID0gYWRvcHRHUmVmKHNvdXBfc2Vzc2lvbl9yZXF1
ZXN0X3VyaShkLT5zb3VwU2Vzc2lvbigpLCBzb3VwVVJJLmdldCgpLCAmZXJyb3Iub3V0UHRyKCkp
KTsKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgZC0+bV9zb3VwUmVxdWVzdC5jbGVhcigpOwpA
QCAtMTMwMSw3ICsxMjk5LDcgQEAgc3RhdGljIHZvaWQgcmVhZENhbGxiYWNrKEdPYmplY3QqLCBH
QXN5bmNSZXN1bHQqIGFzeW5jUmVzdWx0LCBncG9pbnRlciBkYXRhKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8
R0Vycm9yPiBlcnJvcjsKICAgICBnc3NpemUgYnl0ZXNSZWFkID0gZ19pbnB1dF9zdHJlYW1fcmVh
ZF9maW5pc2goZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwgYXN5bmNSZXN1bHQsICZlcnJvci5vdXRQ
dHIoKSk7CiAKICAgICBpZiAoZXJyb3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcApp
bmRleCA1NTA4ZjM2Li5jMDJiNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNvdXAuY3BwCkBA
IC00Miw3ICs0Miw3IEBACiAjaW5jbHVkZSA8Z2xpYi5oPgogCiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjZGVm
aW5lIFJFQURfQlVGRkVSX1NJWkUgMTAyNApAQCAtMTY4LDcgKzE2OCw3IEBAIGludCBTb2NrZXRT
dHJlYW1IYW5kbGU6OnBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQog
ICAgIGlmICghbV9vdXRwdXRTdHJlYW0gfHwgIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJv
cjsKICAgICBnc3NpemUgd3JpdHRlbiA9IGdfcG9sbGFibGVfb3V0cHV0X3N0cmVhbV93cml0ZV9u
b25ibG9ja2luZyhtX291dHB1dFN0cmVhbS5nZXQoKSwgZGF0YSwgbGVuZ3RoLCAwLCAmZXJyb3Iu
b3V0UHRyKCkpOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBpZiAoZ19lcnJvcl9tYXRjaGVz
KGVycm9yLmdldCgpLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX1dPVUxEX0JMT0NLKSkKQEAgLTE5
NCw3ICsxOTQsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1DbG9zZSgpCiAg
ICAgc3RvcFdhaXRpbmdGb3JTb2NrZXRXcml0YWJpbGl0eSgpOwogCiAgICAgaWYgKG1fc29ja2V0
Q29ubmVjdGlvbikgewotICAgICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAgIEdV
bmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgZ19pb19zdHJlYW1fY2xvc2UoR19J
T19TVFJFQU0obV9zb2NrZXRDb25uZWN0aW9uLmdldCgpKSwgMCwgJmVycm9yLm91dFB0cigpKTsK
ICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZEZhaWxTb2NrZXRT
dHJlYW0odGhpcywgU29ja2V0U3RyZWFtRXJyb3IoZXJyb3ItPmNvZGUsIGVycm9yLT5tZXNzYWdl
KSk7CkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnN0b3BXYWl0
aW5nRm9yU29ja2V0V3JpdGFiaWxpdHkoKQogc3RhdGljIHZvaWQgY29ubmVjdGVkQ2FsbGJhY2so
R1NvY2tldENsaWVudCogY2xpZW50LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogaWQpCiB7
CiAgICAgLy8gQWx3YXlzIGZpbmlzaCB0aGUgY29ubmVjdGlvbiwgZXZlbiBpZiB0aGlzIFNvY2tl
dFN0cmVhbUhhbmRsZSB3YXMgZGVhY3RpdmF0ZWQgZWFybGllci4KLSAgICBHT3duUHRyPEdFcnJv
cj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIEdTb2NrZXRD
b25uZWN0aW9uKiBzb2NrZXRDb25uZWN0aW9uID0gZ19zb2NrZXRfY2xpZW50X2Nvbm5lY3RfdG9f
aG9zdF9maW5pc2goY2xpZW50LCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSk7CiAKICAgICAvLyBU
aGUgU29ja2V0U3RyZWFtSGFuZGxlIGhhcyBiZWVuIGRlYWN0aXZhdGVkLCBzbyBqdXN0IGNsb3Nl
IHRoZSBjb25uZWN0aW9uLCBpZ25vcmluZyBlcnJvcnMuCkBAIC0yNjgsNyArMjY4LDcgQEAgc3Rh
dGljIHZvaWQgY29ubmVjdGVkQ2FsbGJhY2soR1NvY2tldENsaWVudCogY2xpZW50LCBHQXN5bmNS
ZXN1bHQqIHJlc3VsdCwgdm9pZCoKIHN0YXRpYyB2b2lkIHJlYWRSZWFkeUNhbGxiYWNrKEdJbnB1
dFN0cmVhbSogc3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogaWQpCiB7CiAgICAg
Ly8gQWx3YXlzIGZpbmlzaCB0aGUgcmVhZCwgZXZlbiBpZiB0aGlzIFNvY2tldFN0cmVhbUhhbmRs
ZSB3YXMgZGVhY3RpdmF0ZWQgZWFybGllci4KLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Cisg
ICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGdzc2l6ZSBieXRlc1JlYWQgPSBn
X2lucHV0X3N0cmVhbV9yZWFkX2ZpbmlzaChzdHJlYW0sIHJlc3VsdCwgJmVycm9yLm91dFB0cigp
KTsKIAogICAgIFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlID0gZ2V0SGFuZGxlRnJvbUlkKGlk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3Vw
TmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggNGY4Mzc5Ni4uYTQzNzljYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3
b3JrU2Vzc2lvbi5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiQ29va2llSmFyU291cC5oIgotI2luY2x1ZGUgIkdP
d25QdHJTb3VwLmgiCisjaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlIDxsaWJzb3VwL3Nv
dXAuaD4KQEAgLTIwOCw3ICsyMDgsNyBAQCBjaGFyKiBTb3VwTmV0d29ya1Nlc3Npb246Omh0dHBQ
cm94eSgpIGNvbnN0CiAgICAgaWYgKCFzb3VwUmVzb2x2ZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgR093blB0cjxTb3VwVVJJPiB1cmk7CisgICAgR1VuaXF1ZU91dFB0cjxTb3Vw
VVJJPiB1cmk7CiAgICAgZ19vYmplY3RfZ2V0KHNvdXBSZXNvbHZlciwgU09VUF9QUk9YWV9SRVNP
TFZFUl9XS19QUk9YWV9VUkksICZ1cmkub3V0UHRyKCksIG51bGxwdHIpOwogCiAgICAgcmV0dXJu
IHVyaSA/IHNvdXBfdXJpX3RvX3N0cmluZyh1cmkuZ2V0KCksIEZBTFNFKSA6IG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKaW5kZXggOTY3NmJhNC4uYzQxYzczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI0IEBACisyMDE0LTAxLTI0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR0xJQl0gQWRkIEdVbmlxdWVPdXRQdHIgYW5kIHVzZSBp
dCBpbnN0ZWFkIG9mIEdPd25QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNzU1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVzZSBHVW5pcXVlT3V0UHRyIGluc3RlYWQgb2YgR093blB0ci4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWQpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKiB3
ZWJraXQvd2Via2l0ZG93bmxvYWQuY3BwOgorICAgICAgICAod2Via2l0X2Rvd25sb2FkX29wZW5f
c3RyZWFtX2Zvcl91cmkpOgorICAgICAgICAod2Via2l0X2Rvd25sb2FkX3NldF9kZXN0aW5hdGlv
bl91cmkpOgorICAgICAgICAod2Via2l0X2Rvd25sb2FkX3JlY2VpdmVkX2RhdGEpOgorICAgICAg
ICAqIHdlYmtpdC93ZWJraXR3ZWJwbHVnaW4uY3BwOgorICAgICAgICAod2Via2l0X3dlYl9wbHVn
aW5fZ2V0X3BhdGgpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19leHBvc2VfZXZlbnQpOgorCiAyMDE0LTAxLTI3ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBNYWtl
IHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3dlYl92aWV3KCkgd29yayB3aXRoIEN1c3Rv
bVByb3RvY29scwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IDIxOTVhODguLmIyNGUwODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5jcHAKQEAgLTk1LDcgKzk1LDYgQEAKICNpbmNsdWRlIDxnbGliLmg+CiAjaW5j
bHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KQEAgLTEwNDAsNyArMTAzOSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKCFl
cnJvckZpbGUpCiAgICAgICAgIGNvbnRlbnQgPSBtYWtlU3RyaW5nKCI8aHRtbD48Ym9keT4iLCB3
ZWJFcnJvci0+bWVzc2FnZSwgIjwvYm9keT48L2h0bWw+Iik7CiAgICAgZWxzZSB7Ci0gICAgICAg
IEdPd25QdHI8Z2NoYXI+IGZpbGVDb250ZW50OworICAgICAgICBHVW5pcXVlT3V0UHRyPGdjaGFy
PiBmaWxlQ29udGVudDsKICAgICAgICAgaWYgKCFnX2ZpbGVfbG9hZF9jb250ZW50cyhlcnJvckZp
bGUuZ2V0KCksIDAsICZmaWxlQ29udGVudC5vdXRQdHIoKSwgMCwgMCwgMCkpCiAgICAgICAgICAg
ICBjb250ZW50ID0gbWFrZVN0cmluZygiPGh0bWw+PGJvZHk+Iiwgd2ViRXJyb3ItPm1lc3NhZ2Us
ICI8L2JvZHk+PC9odG1sPiIpOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEd0ay5jcHAKaW5kZXgg
MjMyMzhmNC4uZjk0ZDA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvVGV4dENoZWNrZXJDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50R3RrLmNwcApAQCAtMjgsNyArMjgsNiBAQAog
I2luY2x1ZGUgIndlYmtpdHNwZWxsY2hlY2tlci5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnNldHRp
bmdzcHJpdmF0ZS5oIgogI2luY2x1ZGUgPGdsaWIuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRk
b3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3Bw
CmluZGV4IGEzOTliZjAuLjdkNjQ0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRkb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdGRvd25sb2FkLmNwcApAQCAtMzksOCArMzksOCBAQAogI2luY2x1ZGUgPGdsaWIvZ2kxOG4t
bGliLmg+CiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZmRlZiBFUlJPUgpAQCAtNDY0LDcgKzQ2
NCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfZG93bmxvYWRfb3Blbl9zdHJlYW1fZm9yX3Vy
aShXZWJLaXREb3dubG9hZCogZG93bmxvYWQsIGNvCiAKICAgICBXZWJLaXREb3dubG9hZFByaXZh
dGUqIHByaXYgPSBkb3dubG9hZC0+cHJpdjsKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRv
cHRHUmVmKGdfZmlsZV9uZXdfZm9yX3VyaSh1cmkpKTsKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJy
b3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogCiAgICAgaWYgKGFwcGVuZCkK
ICAgICAgICAgcHJpdi0+b3V0cHV0U3RyZWFtID0gZ19maWxlX2FwcGVuZF90byhmaWxlLmdldCgp
LCBHX0ZJTEVfQ1JFQVRFX05PTkUsIE5VTEwsICZlcnJvci5vdXRQdHIoKSk7CkBAIC03MDUsNyAr
NzA1LDcgQEAgdm9pZCB3ZWJraXRfZG93bmxvYWRfc2V0X2Rlc3RpbmF0aW9uX3VyaShXZWJLaXRE
b3dubG9hZCogZG93bmxvYWQsIGNvbnN0IGdjaGFyKgogCiAgICAgICAgIEdSZWZQdHI8R0ZpbGU+
IHNyYyA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl91cmkocHJpdi0+ZGVzdGluYXRpb25VUkkp
KTsKICAgICAgICAgR1JlZlB0cjxHRmlsZT4gZGVzdCA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zv
cl91cmkoZGVzdGluYXRpb25fdXJpKSk7Ci0gICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsK
KyAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogCiAgICAgICAgIGdfZmlsZV9t
b3ZlKHNyYy5nZXQoKSwgZGVzdC5nZXQoKSwgR19GSUxFX0NPUFlfQkFDS1VQLCAwLCAwLCAwLCAm
ZXJyb3Iub3V0UHRyKCkpOwogCkBAIC04NjUsNyArODY1LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0
X2Rvd25sb2FkX3JlY2VpdmVkX2RhdGEoV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkLCBjb25zdCBn
Y2hhcioKICAgICBBU1NFUlQocHJpdi0+b3V0cHV0U3RyZWFtKTsKIAogICAgIGdzaXplIGJ5dGVz
X3dyaXR0ZW47Ci0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8
R0Vycm9yPiBlcnJvcjsKIAogICAgIGdfb3V0cHV0X3N0cmVhbV93cml0ZV9hbGwoR19PVVRQVVRf
U1RSRUFNKHByaXYtPm91dHB1dFN0cmVhbSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhLCBsZW5ndGgsICZieXRlc193cml0dGVuLCBOVUxMLCAmZXJyb3Iub3V0UHRyKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBsdWdpbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicGx1Z2luLmNwcAppbmRleCBjZWM2
MTRmLi5jNzE2MmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2VicGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicGx1
Z2luLmNwcApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUgIndlYmtpdGdsb2JhbHNwcml2YXRl
LmgiCiAjaW5jbHVkZSAid2Via2l0d2VicGx1Z2lucHJpdmF0ZS5oIgogI2luY2x1ZGUgPGdsaWIv
Z2kxOG4tbGliLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogLyoqCiAgKiBTRUNUSU9OOndlYmtpdHdlYnBs
dWdpbgpAQCAtMTkyLDcgKzE5Miw3IEBAIGNvbnN0IGNoYXIqIHdlYmtpdF93ZWJfcGx1Z2luX2dl
dF9wYXRoKFdlYktpdFdlYlBsdWdpbiogcGx1Z2luKQogICAgIGlmIChwcml2LT5wYXRoKQogICAg
ICAgICByZXR1cm4gcHJpdi0+cGF0aC5nZXQoKTsKIAotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJv
cjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgcHJpdi0+cGF0aC5yZXNl
dChnX2ZpbGVuYW1lX2Zyb21fdXRmOChwcml2LT5jb3JlUGx1Z2luLT5wYXRoKCkudXRmOCgpLmRh
dGEoKSwgLTEsIDAsIDAsICZlcnJvci5vdXRQdHIoKSkpOwogCiAgICAgaWYgKCFlcnJvcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCA3NTdmZWUzLi5h
MWU0MWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBA
IC0xMTksNyArMTE5LDYgQEAKICNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2lu
Y2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KLSNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKQEAgLTY3MCw3ICs2NjksNyBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVj
dCwgZ3VpbnQgcHJvcF9pZCwgY29uc3QgRwogc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmll
d19leHBvc2VfZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50RXhwb3NlKiBldmVudCkK
IHsKICAgICBpbnQgcmVjdENvdW50OwotICAgIEdPd25QdHI8R2RrUmVjdGFuZ2xlPiByZWN0czsK
KyAgICBHVW5pcXVlT3V0UHRyPEdka1JlY3RhbmdsZT4gcmVjdHM7CiAgICAgZ2RrX3JlZ2lvbl9n
ZXRfcmVjdGFuZ2xlcyhldmVudC0+cmVnaW9uLCAmcmVjdHMub3V0UHRyKCksICZyZWN0Q291bnQp
OwogCiAgICAgUmVmUHRyPGNhaXJvX3Q+IGNyID0gYWRvcHRSZWYoZ2RrX2NhaXJvX2NyZWF0ZShl
dmVudC0+d2luZG93KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzA5YjBmMi4uY2NmZjE4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM1IEBACisyMDE0LTAxLTI0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0xJQl0gQWRkIEdVbmlxdWVPdXRQdHIgYW5k
IHVzZSBpdCBpbnN0ZWFkIG9mIEdPd25QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNzU1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBHVW5pcXVlT3V0UHRyIGluc3RlYWQgb2YgR093blB0ci4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Z2V0Q2FjaGVEaXNrRnJlZVNpemUpOgorICAgICAgICAqIFNoYXJl
ZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGll
bnQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEZhdmljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChwcm9jZXNzUGVuZGluZ0ljb25zRm9yUGFn
ZVVSTCk6CisgICAgICAgICh3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRfZmF2aWNvbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHA6Cisg
ICAgICAgICh3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVhZENhbGxiYWNrKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKGdvdEZhdmljb25D
YWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9ndGsvV2ViSW5z
cGVjdG9yU2VydmVyR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yU2VydmVy
OjpwbGF0Zm9ybVJlc291cmNlRm9yUGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVy
L2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1
bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgv
UGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nl
c3NQcm94eTo6c2NhblBsdWdpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJQcmludE9wZXJhdGlvbkd0ay5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlBy
b2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2V0Q2FjaGVEaXNrRnJlZVNpemUpOgor
CiAyMDE0LTAxLTI5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBJREI6IFNlcmlhbGl6ZSBJREJLZXlEYXRhcyB0byBkaXNrLCBub3QgSURCS2V5cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1Nv
dXAuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vz
c1NvdXAuY3BwCmluZGV4IDU1YzE0ZmEuLjYyMDdmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKQEAg
LTM3LDggKzM3LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3Nv
dXAuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIHVpbnQ2
NF90IGdldENhY2hlRGlza0ZyZWVTaXplKFNvdXBDYWNoZSogY2FjaGUpCiB7CiAgICAgQVNTRVJU
KGNhY2hlKTsKIAotICAgIEdPd25QdHI8Y2hhcj4gY2FjaGVEaXI7CisgICAgR1VuaXF1ZU91dFB0
cjxjaGFyPiBjYWNoZURpcjsKICAgICBnX29iamVjdF9nZXQoR19PQkpFQ1QoY2FjaGUpLCAiY2Fj
aGUtZGlyIiwgJmNhY2hlRGlyLm91dFB0cigpLCBOVUxMKTsKICAgICBpZiAoIWNhY2hlRGlyKQog
ICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3du
bG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25s
b2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKaW5kZXggMzRmM2Q1Zi4uNDA3ZTQ0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291
cC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg+CiAjaW5jbHVk
ZSA8Z2lvL2dpby5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTEwNiw3ICsxMDUsNyBAQCBw
dWJsaWM6CiAKICAgICAgICAgU3RyaW5nIGludGVybWVkaWF0ZVVSSSA9IG1fZGVzdGluYXRpb25V
UkkgKyAiLndrZG93bmxvYWQiOwogICAgICAgICBtX2ludGVybWVkaWF0ZUZpbGUgPSBhZG9wdEdS
ZWYoZ19maWxlX25ld19mb3JfdXJpKGludGVybWVkaWF0ZVVSSS51dGY4KCkuZGF0YSgpKSk7Ci0g
ICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJy
b3I+IGVycm9yOwogICAgICAgICBtX291dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVw
bGFjZShtX2ludGVybWVkaWF0ZUZpbGUuZ2V0KCksIDAsIFRSVUUsIEdfRklMRV9DUkVBVEVfTk9O
RSwgMCwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgICAgIGlmICghbV9vdXRwdXRTdHJlYW0pIHsK
ICAgICAgICAgICAgIGRvd25sb2FkRmFpbGVkKHBsYXRmb3JtRG93bmxvYWREZXN0aW5hdGlvbkVy
cm9yKHJlc3BvbnNlLCBlcnJvci0+bWVzc2FnZSkpOwpAQCAtMTI0LDcgKzEyMyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgfQogCiAgICAgICAgIGdzaXplIGJ5dGVzV3JpdHRlbjsKLSAgICAgICAgR093
blB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7
CiAgICAgICAgIGdfb3V0cHV0X3N0cmVhbV93cml0ZV9hbGwoR19PVVRQVVRfU1RSRUFNKG1fb3V0
cHV0U3RyZWFtLmdldCgpKSwgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNXcml0dGVuLCAwLCAmZXJyb3Iu
b3V0UHRyKCkpOwogICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIGRvd25sb2FkRmFp
bGVkKHBsYXRmb3JtRG93bmxvYWREZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIGVycm9yLT5t
ZXNzYWdlKSk7CkBAIC0xMzksNyArMTM4LDcgQEAgcHVibGljOgogCiAgICAgICAgIEFTU0VSVCht
X2ludGVybWVkaWF0ZUZpbGUpOwogICAgICAgICBHUmVmUHRyPEdGaWxlPiBkZXN0aW5hdGlvbkZp
bGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfdXJpKG1fZGVzdGluYXRpb25VUkkudXRmOCgp
LmRhdGEoKSkpOwotICAgICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAgIEdVbmlx
dWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgaWYgKCFnX2ZpbGVfbW92ZShtX2ludGVy
bWVkaWF0ZUZpbGUuZ2V0KCksIGRlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19GSUxFX0NPUFlfTk9O
RSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgJmVycm9yLm91dFB0cigpKSkgewogICAgICAg
ICAgICAgZG93bmxvYWRGYWlsZWQocGxhdGZvcm1Eb3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9y
ZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZhdmljb25EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0
YWJhc2UuY3BwCmluZGV4IGMwMmE4MzQuLjBlZGEyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcApA
QCAtMjksOCArMjksOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KICNpbmNs
dWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0jaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMTY0LDEzICsxNjQs
MTMgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1BlbmRpbmdJY29uc0ZvclBhZ2VVUkwoV2ViS2l0RmF2
aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QKICAgICBpZiAoIXBlbmRpbmdJY29uUmVxdWVz
dHMpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBH
VW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
aWNvbiA9IGdldEljb25TdXJmYWNlU3luY2hyb25vdXNseShkYXRhYmFzZSwgcGFnZVVSTCwgJmVy
cm9yLm91dFB0cigpKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGVuZGluZ0ljb25S
ZXF1ZXN0cy0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAgR1Rhc2sqIHRhc2sgPSBwZW5kaW5nSWNv
blJlcXVlc3RzLT5hdChpKS5nZXQoKTsKICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAg
Z190YXNrX3JldHVybl9lcnJvcih0YXNrLCBlcnJvci5yZWxlYXNlKCkpOworICAgICAgICAgICAg
Z190YXNrX3JldHVybl9lcnJvcih0YXNrLCBlcnJvci5yZWxlYXNlKCkucmVsZWFzZSgpKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBHZXRGYXZpY29uU3VyZmFjZUFzeW5jRGF0YSogZGF0
YSA9IHN0YXRpY19jYXN0PEdldEZhdmljb25TdXJmYWNlQXN5bmNEYXRhKj4oZ190YXNrX2dldF90
YXNrX2RhdGEodGFzaykpOwogICAgICAgICAgICAgZGF0YS0+aWNvbiA9IGljb247CkBAIC0yOTAs
NyArMjkwLDcgQEAgdm9pZCB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRfZmF2aWNvbihXZWJL
aXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlLCBjb25zdAogCiAgICAgLy8gV2UgYXNrIGZvciB0
aGUgaWNvbiBkaXJlY3RseS4gSWYgd2UgZG9uJ3QgZ2V0IHRoZSBpY29uIGRhdGEgbm93LAogICAg
IC8vIHdlJ2xsIGJlIG5vdGlmaWVkIGxhdGVyIChldmVuIGlmIHRoZSBkYXRhYmFzZSBpcyBzdGls
bCBpbXBvcnRpbmcgaWNvbnMpLgotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5p
cXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgZGF0YS0+aWNvbiA9IGdldEljb25TdXJmYWNl
U3luY2hyb25vdXNseShkYXRhYmFzZSwgZGF0YS0+cGFnZVVSTCwgJmVycm9yLm91dFB0cigpKTsK
ICAgICBpZiAoZGF0YS0+aWNvbikgewogICAgICAgICBnX3Rhc2tfcmV0dXJuX2Jvb2xlYW4odGFz
ay5nZXQoKSwgVFJVRSk7CkBAIC0zMDEsNyArMzAxLDcgQEAgdm9pZCB3ZWJraXRfZmF2aWNvbl9k
YXRhYmFzZV9nZXRfZmF2aWNvbihXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlLCBjb25z
dAogICAgIGRhdGEtPnNob3VsZFJlbGVhc2VJY29uRm9yUGFnZVVSTCA9IHRydWU7CiAKICAgICBp
ZiAoZ19lcnJvcl9tYXRjaGVzKGVycm9yLmdldCgpLCBXRUJLSVRfRkFWSUNPTl9EQVRBQkFTRV9F
UlJPUiwgV0VCS0lUX0ZBVklDT05fREFUQUJBU0VfRVJST1JfRkFWSUNPTl9OT1RfRk9VTkQpKSB7
Ci0gICAgICAgIGdfdGFza19yZXR1cm5fZXJyb3IodGFzay5nZXQoKSwgZXJyb3IucmVsZWFzZSgp
KTsKKyAgICAgICAgZ190YXNrX3JldHVybl9lcnJvcih0YXNrLmdldCgpLCBlcnJvci5yZWxlYXNl
KCkucmVsZWFzZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
LmNwcAppbmRleCBkNjMyZDQ0Li42ZDhjNjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcApAQCAt
MjgsNyArMjgsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4K
LSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtMTU5LDcgKzE1
OCw3IEBAIFdlYktpdFdlYlZpZXcqIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3dlYl92
aWV3KFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlCiBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hl
bWVSZXF1ZXN0UmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jl
c3VsdCogcmVzdWx0LCBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiBzY2hlbWVSZXF1ZXN0KQogewog
ICAgIEdSZWZQdHI8V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0R1JlZihz
Y2hlbWVSZXF1ZXN0KTsKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGdzc2l6ZSBieXRlc1JlYWQgPSBnX2lucHV0X3N0cmVh
bV9yZWFkX2ZpbmlzaChpbnB1dFN0cmVhbSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOwogICAg
IGlmIChieXRlc1JlYWQgPT0gLTEpIHsKICAgICAgICAgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVz
dF9maW5pc2hfZXJyb3IocmVxdWVzdC5nZXQoKSwgZXJyb3IuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA2NGVj
ZTU5Li40NDExMzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNjYsNyArNjYsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
R3RrVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgogI2luY2x1
ZGUgPGdsaWIvZ2kxOG4tbGliLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKQEAgLTMzNiw3ICszMzUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q2Fu
Y2VsRmF2aWNvblJlcXVlc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIAogc3RhdGljIHZvaWQg
Z290RmF2aWNvbkNhbGxiYWNrKEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQs
IGdwb2ludGVyIHVzZXJEYXRhKQogewotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBH
VW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
ZmF2aWNvbiA9IGFkb3B0UmVmKHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uX2Zp
bmlzaChXRUJLSVRfRkFWSUNPTl9EQVRBQkFTRShvYmplY3QpLCByZXN1bHQsICZlcnJvci5vdXRQ
dHIoKSkpOwogICAgIGlmIChnX2Vycm9yX21hdGNoZXMoZXJyb3IuZ2V0KCksIEdfSU9fRVJST1Is
IEdfSU9fRVJST1JfQ0FOQ0VMTEVEKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9ndGsvV2ViSW5zcGVjdG9yU2Vy
dmVyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvZ3Rr
L1dlYkluc3BlY3RvclNlcnZlckd0ay5jcHAKaW5kZXggYjA2ZmE3My4uM2NmMDQ4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9ndGsvV2ViSW5z
cGVjdG9yU2VydmVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVj
dG9yU2VydmVyL2d0ay9XZWJJbnNwZWN0b3JTZXJ2ZXJHdGsuY3BwCkBAIC0zMyw3ICszMyw2IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8Z2lvL2dp
by5oPgogI2luY2x1ZGUgPGdsaWIuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC01NSw3
ICs1NCw3IEBAIGJvb2wgV2ViSW5zcGVjdG9yU2VydmVyOjpwbGF0Zm9ybVJlc291cmNlRm9yUGF0
aChjb25zdCBTdHJpbmcmIHBhdGgsIFZlY3RvcjxjaGFyCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfdXJp
KHJlc291cmNlVVJJLmRhdGEoKSkpOwotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBH
VW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHRmlsZUluZm8+IGZpbGVJ
bmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRS
SUJVVEVfU1RBTkRBUkRfU0laRSAiLCIgR19GSUxFX0FUVFJJQlVURV9TVEFOREFSRF9GQVNUX0NP
TlRFTlRfVFlQRSwgR19GSUxFX1FVRVJZX0lORk9fTk9ORSwgMCwgJmVycm9yLm91dFB0cigpKSk7
CiAgICAgaWYgKCFmaWxlSW5mbykgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NM
YXVuY2hlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1By
b2Nlc3NMYXVuY2hlckd0ay5jcHAKaW5kZXggNGZiNWM5MC4uZjY2ZWJlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xh
dW5jaGVyR3RrLmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR2xpYlV0aWxpdGll
cy5oPgogCkBAIC0xMjMsNyArMTIyLDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFBy
b2Nlc3MoKQogICAgIGFyZ3ZbaSsrXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHJlYWxQbHVnaW5QYXRo
LmRhdGEoKSk7CiAgICAgYXJndltpKytdID0gMDsKIAotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJv
cjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX3NwYXduX2Fz
eW5jKDAsIGFyZ3YsIDAsIEdfU1BBV05fTEVBVkVfREVTQ1JJUFRPUlNfT1BFTiwgY2hpbGRTZXR1
cEZ1bmN0aW9uLCBHSU5UX1RPX1BPSU5URVIoc29ja2V0c1sxXSksICZwaWQsICZlcnJvci5vdXRQ
dHIoKSkpIHsKICAgICAgICAgZ19wcmludGVycigiVW5hYmxlIHRvIGZvcmsgYSBuZXcgV2ViUHJv
Y2VzczogJXMuXG4iLCBlcnJvci0+bWVzc2FnZSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9Q
bHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKaW5kZXggY2MyMzQxMy4uNzgxNTJl
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVn
aW5Qcm9jZXNzUHJveHlVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCkBAIC0zNyw3ICszNyw3IEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShFRkwpCiAjaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjZW5kaWYKIAogI2lu
Y2x1ZGUgPHN5cy93YWl0Lmg+CkBAIC03NCw3ICs3NCw3IEBAIGJvb2wgUGx1Z2luUHJvY2Vzc1By
b3h5OjpzY2FuUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURh
dGEmCiAgICAgYXJndlszXSA9IDA7CiAKICAgICBpbnQgc3RhdHVzOwotICAgIEdPd25QdHI8Y2hh
cj4gc3RkT3V0OworICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gc3RkT3V0OwogCiAgICAgLy8gSWYg
dGhlIGRpc3Bvc2l0aW9uIG9mIFNJR0NMRCBzaWduYWwgaXMgc2V0IHRvIFNJR19JR04gKGRlZmF1
bHQpCiAgICAgLy8gdGhlbiB0aGUgc2lnbmFsIHdpbGwgYmUgaWdub3JlZCBhbmQgZ19zcGF3bl9z
eW5jKCkgd2lsbCBub3QgYmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKaW5kZXggY2I0Njg4
MS4uNDA0NjllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKQEAgLTQwLDcgKzQwLDYg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogI2lmZGVmIEhBVkVfR1RLX1VOSVhf
UFJJTlRJTkcKQEAgLTc5LDcgKzc4LDcgQEAgcHVibGljOgogICAgICAgICBHVW5pcXVlUHRyPGNo
YXI+am9iTmFtZShnX3N0cmR1cF9wcmludGYoIiVzIGpvYiAjJWQiLCBhcHBsaWNhdGlvbk5hbWUg
PyBhcHBsaWNhdGlvbk5hbWUgOiAiV2ViS2l0IiwgKytqb2JOdW1iZXIpKTsKICAgICAgICAgbV9w
cmludEpvYiA9IGFkb3B0R1JlZihndGtfcHJpbnRfam9iX25ldyhqb2JOYW1lLmdldCgpLCBwcmlu
dGVyLCBtX3ByaW50U2V0dGluZ3MuZ2V0KCksIG1fcGFnZVNldHVwLmdldCgpKSk7CiAKLSAgICAg
ICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4g
ZXJyb3I7CiAgICAgICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGd0a19wcmludF9qb2Jf
Z2V0X3N1cmZhY2UobV9wcmludEpvYi5nZXQoKSwgJmVycm9yLm91dFB0cigpKTsKICAgICAgICAg
aWYgKCFzdXJmYWNlKSB7CiAgICAgICAgICAgICBwcmludERvbmUocHJpbnRFcnJvcihmcmFtZVVS
TCgpLCBlcnJvci0+bWVzc2FnZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
c291cC9XZWJQcm9jZXNzU291cC5jcHAKaW5kZXggMzJiMjE3MS4uZWRiNGEyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCkBAIC00
MSw4ICs0MSw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU291cE5ldHdvcmtTZXNzaW9uLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3Vw
Lmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKICNp
ZiAhRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCiAjaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5h
Z2VyLmgiCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyB1aW50NjRfdCBnZXRDYWNoZURpc2tGcmVl
U2l6ZShTb3VwQ2FjaGUqIGNhY2hlKQogewogICAgIEFTU0VSVChjYWNoZSk7CiAKLSAgICBHT3du
UHRyPGNoYXI+IGNhY2hlRGlyOworICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gY2FjaGVEaXI7CiAg
ICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKGNhY2hlKSwgImNhY2hlLWRpciIsICZjYWNoZURpci5v
dXRQdHIoKSwgTlVMTCk7CiAgICAgaWYgKCFjYWNoZURpcikKICAgICAgICAgcmV0dXJuIDA7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDFlMzA5
OS4uMzg1MGMxNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE0LTAxLTI0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0xJQl0gQWRkIEdVbmlxdWVPdXRQdHIg
YW5kIHVzZSBpdCBpbnN0ZWFkIG9mIEdPd25QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzU1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVzZSBHVW5pcXVlT3V0UHRyIGluc3RlYWQgb2YgR093blB0
ci4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHA6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKGNy
ZWF0ZUtleVByZXNzRXZlbnQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2dv
YmplY3QvR1VuaXF1ZVB0ci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZXR1cm5PdXRD
aGFyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0Q29va2llTWFuYWdlci5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RJbnNwZWN0b3JTZXJ2ZXIuY3BwOgor
ICAgICAgICAodGVzdEluc3BlY3RvclNlcnZlclBhZ2VMaXN0KToKKyAgICAgICAgKG9wZW5SZW1v
dGVEZWJ1Z2dpbmdTZXNzaW9uKToKKyAgICAgICAgKHNlbmRJbmNvbXBsZXRlUmVxdWVzdCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RSZXNvdXJjZXMuY3Bw
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViRXh0ZW5z
aW9ucy5jcHA6CisgICAgICAgICh0ZXN0V2ViRXh0ZW5zaW9uV2luZG93T2JqZWN0Q2xlYXJlZCk6
CisgICAgICAgICh0ZXN0V2ViRXh0ZW5zaW9uSXNvbGF0ZWRXb3JsZCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJhc2UuY3Bw
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2Vi
Vmlldy5jcHA6CisgICAgICAgICh0ZXN0V2ViVmlld1J1bkphdmFTY3JpcHQpOgorICAgICAgICAo
dGVzdFdlYlZpZXdTYXZlKToKKyAgICAgICAgKHRlc3RXZWJWaWV3UGFnZVZpc2liaWxpdHkpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmll
d0dyb3VwLmNwcDoKKyAgICAgICAgKGlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYlZpZXdFZGl0
b3IuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRl
bnNpb25UZXN0LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
V2ViUHJvY2Vzc1Rlc3QuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvZ3RrL0lu
cHV0TWV0aG9kRmlsdGVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RJbnB1dE1l
dGhvZEZpbHRlcjo6c2VuZEtleUV2ZW50VG9GaWx0ZXIpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpk
b0tleVN0cm9rZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9UZXN0
TWFpbi5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViS2l0VGVz
dEJ1cy5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0QnVzOjpydW4pOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuY3BwOgorICAgICAgICAocmVzb3Vy
Y2VHZXREYXRhQ2FsbGJhY2spOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OmtleVN0cm9rZSk6Cisg
ICAgICAgIChvblNuYXBzaG90UmVhZHkpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZ3Rr
L0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5
OjprZXlEb3duKToKKwogMjAxNC0wMS0yOSAgS3J6eXN6dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBbQVRLXSBFeHBvc2UgYXJpYS1kZXNjcmliZWRieSB3aXRoIEFU
S19SRUxBVElPTl9ERVNDUklCRURfQlkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJl
bmRlclRyZWUuY3BwCmluZGV4IDA4ZDNjNzMuLjczZDcxMGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtNTQsNyArNTQsNiBAQAogI2luY2x1ZGUg
PGxvY2FsZS5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXQuaD4KICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HbGliVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDU4MjYw
MjcuLmZmNThjNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNl
bmRlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcApA
QCAtNDcsNyArNDcsNiBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5j
bHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KLSNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1
ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtODA1LDcgKzgwNCw3
IEBAIHN0YXRpYyBHZGtFdmVudCogY3JlYXRlS2V5UHJlc3NFdmVudChKU0NvbnRleHRSZWYgY29u
dGV4dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsCiAKICAgICAvLyBXaGVuIHN5bnRoZXNpemluZyBh
biBldmVudCwgYW4gaW52YWxpZCBoYXJkd2FyZV9rZXljb2RlIHZhbHVlCiAgICAgLy8gY2FuIGNh
dXNlIGl0IHRvIGJlIGJhZGx5IHByb2Nlc3NlZCBieSBHdGsrLgotICAgIEdPd25QdHI8R2RrS2V5
bWFwS2V5PiBrZXlzOworICAgIEdVbmlxdWVPdXRQdHI8R2RrS2V5bWFwS2V5PiBrZXlzOwogICAg
IGdpbnQgbktleXM7CiAgICAgaWYgKGdka19rZXltYXBfZ2V0X2VudHJpZXNfZm9yX2tleXZhbChn
ZGtfa2V5bWFwX2dldF9kZWZhdWx0KCksIGdka0tleVN5bSwgJmtleXMub3V0UHRyKCksICZuS2V5
cykpCiAgICAgICAgIHByZXNzRXZlbnQtPmtleS5oYXJkd2FyZV9rZXljb2RlID0ga2V5cy5nZXQo
KVswXS5rZXljb2RlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
Z29iamVjdC9HVW5pcXVlUHRyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2dv
YmplY3QvR1VuaXF1ZVB0ci5jcHAKaW5kZXggN2QyM2I1Ny4uODk0MmY4NiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvZ29iamVjdC9HVW5pcXVlUHRyLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9nb2JqZWN0L0dVbmlxdWVQdHIuY3BwCkBA
IC0xNDUsNCArMTQ1LDUxIEBAIFRFU1QoV1RGX0dVbmlxdWVQdHIsIEJhc2ljKQogICAgIGFjdHVh
bC5zdHIoIiIpOwogfQogCitzdGF0aWMgdm9pZCByZXR1cm5PdXRDaGFyKGNoYXIqKiBvdXRDaGFy
KQoreworICAgICpvdXRDaGFyID0gZ19zdHJkdXAoImEiKTsKK30KKworVEVTVChXVEZfR1VuaXF1
ZVB0ciwgT3V0UHRyKQoreworICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBhY3R1YWw7CisKKyAgICB7
CisgICAgICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gYTsKKyAgICAgICAgQVNTRVJUX0VRKG51bGxw
dHIsIGEuZ2V0KCkpOworICAgIH0KKyAgICBBU1NFUlRfU1RSRVEoYWN0dWFsLnN0cigpLmNfc3Ry
KCksIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKyAgICBhY3R1YWwuc3RyKCIiKTsKKworICAgIHsK
KyAgICAgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBhOworICAgICAgICByZXR1cm5PdXRDaGFyKCZh
Lm91dFB0cigpKTsKKyAgICAgICAgYWN0dWFsIDw8ICJnX2ZyZWUoIiA8PCBhLmdldCgpIDw8ICIp
OyI7CisgICAgfQorICAgIEFTU0VSVF9TVFJFUShhY3R1YWwuc3RyKCkuY19zdHIoKSwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOworICAgIGFjdHVhbC5zdHIoIiIpOworCisgICAgeworICAgICAgICBH
VW5pcXVlT3V0UHRyPGNoYXI+IGE7CisgICAgICAgIHJldHVybk91dENoYXIoJmEub3V0UHRyKCkp
OworICAgICAgICBhY3R1YWwgPDwgImdfZnJlZSgiIDw8IGEuZ2V0KCkgPDwgIik7IjsKKyAgICAg
ICAgcmV0dXJuT3V0Q2hhcigmYS5vdXRQdHIoKSk7CisgICAgICAgIEFTU0VSVF9TVFJFUShhY3R1
YWwuc3RyKCkuY19zdHIoKSwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworICAgICAgICBhY3R1YWwu
c3RyKCIiKTsKKyAgICAgICAgYWN0dWFsIDw8ICJnX2ZyZWUoIiA8PCBhLmdldCgpIDw8ICIpOyI7
CisgICAgfQorICAgIEFTU0VSVF9TVFJFUShhY3R1YWwuc3RyKCkuY19zdHIoKSwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOworICAgIGFjdHVhbC5zdHIoIiIpOworCisgICAgeworICAgICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGE7CisgICAgICAgIHJldHVybk91dENoYXIoJmEub3V0UHRyKCkpOwor
ICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGIgPSBhLnJlbGVhc2UoKTsKKyAgICAgICAgQVNTRVJU
X1NUUkVRKGFjdHVhbC5zdHIoKS5jX3N0cigpLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisgICAg
ICAgIGFjdHVhbCA8PCAiZ19mcmVlKCIgPDwgYi5nZXQoKSA8PCAiKTsiOworICAgIH0KKyAgICBB
U1NFUlRfU1RSRVEoYWN0dWFsLnN0cigpLmNfc3RyKCksIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
KyAgICBhY3R1YWwuc3RyKCIiKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb29r
aWVNYW5hZ2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
Q29va2llTWFuYWdlci5jcHAKaW5kZXggYmYzNTFlMS4uMmU5ODY0NSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb29raWVNYW5hZ2VyLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdENvb2tpZU1hbmFn
ZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGdldEFj
Y2VwdFBvbGljeVJlYWR5Q2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJl
c3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpCiAgICAgewotICAgICAgICBHT3duUHRyPEdFcnJvcj4g
ZXJyb3I7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgV2Vi
S2l0Q29va2llQWNjZXB0UG9saWN5IHBvbGljeSA9IHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRf
YWNjZXB0X3BvbGljeV9maW5pc2goV0VCS0lUX0NPT0tJRV9NQU5BR0VSKG9iamVjdCksIHJlc3Vs
dCwgJmVycm9yLm91dFB0cigpKTsKICAgICAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKIApA
QCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGdldERvbWFpbnNS
ZWFkeUNhbGxiYWNrKEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2lu
dGVyIHVzZXJEYXRhKQogICAgIHsKLSAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAg
ICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIGNoYXIqKiBkb21haW5z
ID0gd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9kb21haW5zX3dpdGhfY29va2llc19maW5pc2go
V0VCS0lUX0NPT0tJRV9NQU5BR0VSKG9iamVjdCksIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKTsK
ICAgICAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RJbnNwZWN0b3JTZXJ2ZXIuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RJbnNwZWN0b3JTZXJ2ZXIuY3Bw
CmluZGV4IGE2ODc4MjYuLjI1MjFkMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9UZXN0SW5zcGVjdG9yU2VydmVyLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEluc3BlY3RvclNlcnZlci5jcHAKQEAgLTE1
OCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAvLyBTaG91bGQgY29udGFpbiBvbmx5IG9uZSBlbnRyeSBw
b2ludGluZyB0byBodHRwOi8vMTI3LjAuMC4xOjI5OTkvd2ViaW5zcGVjdG9yL01haW4uaHRtbD9w
YWdlPTEKIHN0YXRpYyB2b2lkIHRlc3RJbnNwZWN0b3JTZXJ2ZXJQYWdlTGlzdChJbnNwZWN0b3JT
ZXJ2ZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIEdPd25QdHI8R0Vycm9yPiBl
cnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAKICAgICB0ZXN0LT5zaG93
SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoR1RLX1dJTkRPV19UT1BMRVZFTCk7CiAgICAgZ19h
c3NlcnQodGVzdC0+Z2V0UGFnZUxpc3QoKSk7CkBAIC0yMjgsNyArMjI4LDcgQEAgc3RhdGljIHZv
aWQgb3BlblJlbW90ZURlYnVnZ2luZ1Nlc3Npb24oSW5zcGVjdG9yU2VydmVyVGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKIAogICAgIGdfYXNzZXJ0KHRlc3QtPmdldFBhZ2VMaXN0KCkpOwogCi0g
ICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJv
cjsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+
cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJwYWdlc1swXS5pbnNwZWN0b3JVcmw7
IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKICAg
ICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHN0YXRpYyB2b2lk
IG9wZW5SZW1vdGVEZWJ1Z2dpbmdTZXNzaW9uKEluc3BlY3RvclNlcnZlclRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiAKIHN0YXRpYyB2b2lkIHNlbmRJbmNvbXBsZXRlUmVxdWVzdChJbnNwZWN0
b3JTZXJ2ZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIEdPd25QdHI8R0Vycm9y
PiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAKICAgICAvLyBDb25u
ZWN0IHRvIHRoZSBpbnNwZWN0b3Igc2VydmVyLgogICAgIEdSZWZQdHI8R1NvY2tldENsaWVudD4g
Y2xpZW50ID0gYWRvcHRHUmVmKGdfc29ja2V0X2NsaWVudF9uZXcoKSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFJlc291cmNlcy5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFJlc291cmNlcy5jcHAKaW5k
ZXggM2E0NTlhMC4uYTJlZTk3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1Rlc3RSZXNvdXJjZXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9UZXN0UmVzb3VyY2VzLmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgdm9pZCByZXNvdXJjZUdldERhdGFDYWxsYmFjayhHT2JqZWN0KiBv
YmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkKICAgICB7CiAg
ICAgICAgIHNpemVfdCBkYXRhU2l6ZTsKLSAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOwor
ICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIHVuc2lnbmVkIGNo
YXIqIGRhdGEgPSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9kYXRhX2ZpbmlzaChXRUJLSVRfV0VC
X1JFU09VUkNFKG9iamVjdCksIHJlc3VsdCwgJmRhdGFTaXplLCAmZXJyb3Iub3V0UHRyKCkpOwog
ICAgICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAgICAgICBnX2Fzc2VydChkYXRhKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2Vi
RXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dFdlYkV4dGVuc2lvbnMuY3BwCmluZGV4IDlhMTBlMzcuLjlmYmVhZjEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJFeHRlbnNp
b25zLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJFeHRlbnNpb25X
aW5kb3dPYmplY3RDbGVhcmVkKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyCiAgICAg
dGVzdC0+bG9hZEh0bWwoIjxodG1sPjxoZWFkZXI+PC9oZWFkZXI+PGJvZHk+PC9ib2R5PjwvaHRt
bD4iLCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAotICAgIEdPd25Q
dHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAg
V2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFT
Y3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgid2luZG93LmVjaG8oJ0ZvbycpOyIsICZlcnJvci5v
dXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnQo
IWVycm9yLmdldCgpKTsKQEAgLTEzMyw3ICsxMzMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0
ZW5zaW9uSXNvbGF0ZWRXb3JsZChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAg
ICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGhlYWRlcj48L2hlYWRlcj48Ym9keT48ZGl2IGlkPSdj
b25zb2xlJz48L2Rpdj48L2JvZHk+PC9odG1sPiIsIDApOwogICAgIHRlc3QtPndhaXRVbnRpbExv
YWRGaW5pc2hlZCgpOwogCi0gICAgR093blB0cjxjaGFyPiByZXN1bHQ7CisgICAgR1VuaXF1ZU91
dFB0cjxjaGFyPiByZXN1bHQ7CiAgICAgZ3Vsb25nIHNjcmlwdERpYWxvZ0lEID0gZ19zaWduYWxf
Y29ubmVjdCh0ZXN0LT5tX3dlYlZpZXcsICJzY3JpcHQtZGlhbG9nIiwgR19DQUxMQkFDSyhzY3Jp
cHREaWFsb2dDYWxsYmFjayksICZyZXN1bHQub3V0UHRyKCkpOwogCiAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIG1haW5Xb3JsZFNjcmlwdCA9CkBAIC0xNDMsNyArMTQzLDYgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYkV4dGVuc2lvbklzb2xhdGVkV29ybGQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiAgICAgICAgICJkb2N1bWVudC5vcGVuKDEsIDIsIDMpOyI7CiAgICAgdGVzdC0+cnVu
SmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKG1haW5Xb3JsZFNjcmlwdCwgMCk7CiAgICAg
Z19hc3NlcnRfY21wc3RyKHJlc3VsdC5nZXQoKSwgPT0sICJNYWluIFdvcmxkIik7Ci0gICAgcmVz
dWx0LmNsZWFyKCk7CiAKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVz
dWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCIsIDApOwogICAgIGdfYXNzZXJ0KGph
dmFzY3JpcHRSZXN1bHQpOwpAQCAtMTY1LDcgKzE2NCw2IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJF
eHRlbnNpb25Jc29sYXRlZFdvcmxkKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ICAgICAgICB0ZXN0KTsKICAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CiAg
ICAgZ19hc3NlcnRfY21wc3RyKHJlc3VsdC5nZXQoKSwgPT0sICJJc29sYXRlZCBXb3JsZCIpOwot
ICAgIHJlc3VsdC5jbGVhcigpOwogCiAgICAgLy8gQ2hlY2sgdGhhdCAndG9wLmZvbycgZGVmaW5l
ZCBpbiBtYWluIHdvcmxkIGlzIG5vdCB2aXNpYmxlIGluIGlzb2xhdGVkIHdvcmxkLgogICAgIGph
dmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQo
ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MIiwgMCk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdEZh
dmljb25EYXRhYmFzZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKaW5kZXggOTViNWMwMS4uMGY1YTgyMCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRG
YXZpY29uRGF0YWJhc2UuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAtMjMsNyArMjMsNiBAQAogI2lu
Y2x1ZGUgIldlYlZpZXdUZXN0LmgiCiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KICNpbmNsdWRl
IDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBzdGF0aWMgV2ViS2l0VGVzdFNlcnZl
cioga1NlcnZlcjsKQEAgLTM2LDcgKzM1LDYgQEAgcHVibGljOgogICAgIEZhdmljb25EYXRhYmFz
ZVRlc3QoKQogICAgICAgICA6IG1fd2ViQ29udGV4dCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Rl
ZmF1bHQoKSkKICAgICAgICAgLCBtX2Zhdmljb24oMCkKLSAgICAgICAgLCBtX2Vycm9yKDApCiAg
ICAgICAgICwgbV9mYXZpY29uTm90aWZpY2F0aW9uUmVjZWl2ZWQoZmFsc2UpCiAgICAgewogICAg
ICAgICBXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlID0gd2Via2l0X3dlYl9jb250ZXh0
X2dldF9mYXZpY29uX2RhdGFiYXNlKG1fd2ViQ29udGV4dCk7CkBAIC04NCw3ICs4Miw2IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZ2V0RmF2aWNvbkZvclBhZ2VVUklBbmRXYWl0VW50aWxSZWFkeShj
b25zdCBjaGFyKiBwYWdlVVJJKQogICAgIHsKLSAgICAgICAgbV9lcnJvci5jbGVhcigpOwogICAg
ICAgICBpZiAobV9mYXZpY29uKSB7CiAgICAgICAgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3ko
bV9mYXZpY29uKTsKICAgICAgICAgICAgIG1fZmF2aWNvbiA9IDA7CkBAIC05OCw3ICs5NSw3IEBA
IHB1YmxpYzoKICAgICBXZWJLaXRXZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7CiAgICAgY2Fpcm9f
c3VyZmFjZV90KiBtX2Zhdmljb247CiAgICAgQ1N0cmluZyBtX2Zhdmljb25VUkk7Ci0gICAgR093
blB0cjxHRXJyb3I+IG1fZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IG1fZXJyb3I7
CiAgICAgYm9vbCBtX2Zhdmljb25Ob3RpZmljYXRpb25SZWNlaXZlZDsKIH07CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmll
dy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdl
YlZpZXcuY3BwCmluZGV4IDczNDJiNjAuLmY5YmY2MzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApA
QCAtODYsNyArODYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1J1bkphdmFTY3JpcHQoV2Vi
Vmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+bG9hZEh0bWwoaHRtbCwg
MCk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKLSAgICBHT3duUHRyPEdF
cnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIFdlYktp
dEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0
QW5kV2FpdFVudGlsRmluaXNoZWQoIndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnV2Vi
S2l0TGluaycpLnRpdGxlOyIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNj
cmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKQEAgLTE0NCw3ICsxNDQs
NiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1J1bkphdmFTY3JpcHQoV2ViVmlld1Rlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFT
Y3JpcHRGcm9tR1Jlc291cmNlQW5kV2FpdFVudGlsRmluaXNoZWQoIi93cm9uZy9wYXRoL3RvL3Jl
c291cmNlLmpzIiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydCghamF2YXNjcmlwdFJl
c3VsdCk7CiAgICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIEdfUkVTT1VSQ0VfRVJST1Is
IEdfUkVTT1VSQ0VfRVJST1JfTk9UX0ZPVU5EKTsKLSAgICBlcnJvci5jbGVhcigpOwogCiAgICAg
amF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hl
ZCgiZm9vKCk7IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydCghamF2YXNjcmlwdFJl
c3VsdCk7CkBAIC0zNDYsNyArMzQ1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgd2Vi
Vmlld1NhdmVkVG9TdHJlYW1DYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCog
cmVzdWx0LCBTYXZlV2ViVmlld1Rlc3QqIHRlc3QpCiAgICAgewotICAgICAgICBHT3duUHRyPEdF
cnJvcj4gZXJyb3I7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAg
ICAgdGVzdC0+bV9pbnB1dFN0cmVhbSA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX3ZpZXdfc2F2ZV9m
aW5pc2godGVzdC0+bV93ZWJWaWV3LCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwogICAgICAg
ICBnX2Fzc2VydChHX0lTX0lOUFVUX1NUUkVBTSh0ZXN0LT5tX2lucHV0U3RyZWFtLmdldCgpKSk7
CiAgICAgICAgIGdfYXNzZXJ0KCFlcnJvcik7CkBAIC0zNTYsNyArMzU1LDcgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIHZvaWQgd2ViVmlld1NhdmVkVG9GaWxlQ2FsbGJhY2soR09iamVjdCogb2Jq
ZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgU2F2ZVdlYlZpZXdUZXN0KiB0ZXN0KQogICAgIHsK
LSAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICBHVW5pcXVlT3V0UHRyPEdF
cnJvcj4gZXJyb3I7CiAgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19zYXZlX3RvX2Zp
bGVfZmluaXNoKHRlc3QtPm1fd2ViVmlldywgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKICAg
ICAgICAgZ19hc3NlcnQoIWVycm9yKTsKIApAQCAtNDA1LDcgKzQwNCw3IEBAIHN0YXRpYyB2b2lk
IHRlc3RXZWJWaWV3U2F2ZShTYXZlV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAg
ICAgLy8gc3RyaW5ncyByZWFkIHNpbmNlIHRoZSAnRGF0ZScgZmllbGQgYW5kIHRoZSBib3VuZGFy
aWVzIHdpbGwgYmUKICAgICAvLyBkaWZmZXJlbnQgb24gZWFjaCBjYXNlLiBNSFRNTCBmdW5jdGlv
bmFsaXR5IHdpbGwgYmUgdGVzdGVkIGJ5CiAgICAgLy8gTGF5b3V0IHRlc3RzLCBzbyBjaGVja2lu
ZyB0aGUgYW1vdW50IG9mIGJ5dGVzIGlzIGVub3VnaC4KLSAgICBHT3duUHRyPEdFcnJvcj4gZXJy
b3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGdjaGFyIGJ1ZmZlcls1
MTJdID0geyAwIH07CiAgICAgZ3NzaXplIHJlYWRCeXRlcyA9IDA7CiAgICAgZ3NzaXplIHRvdGFs
Qnl0ZXNGcm9tU3RyZWFtID0gMDsKQEAgLTQ1OCw3ICs0NTcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld1BhZ2VWaXNpYmlsaXR5KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ICAgIC8vIFdhaXQgdW50aWxsIHRoZSBwYWdlIGlzIGxvYWRlZC4gSW5pdGlhbCB2aXNpYmlsaXR5
IHNob3VsZCBiZSAnaGlkZGVuJy4KICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsK
IAotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4g
ZXJyb3I7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRl
c3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQudmlzaWJpbGl0
eVN0YXRlOyIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3Vs
dCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKQEAgLTUwNyw3ICs1MDYsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgdm9pZCBvblNuYXBzaG90Q2FuY2VsbGVkUmVhZHkoV2ViS2l0V2Vi
Vmlldyogd2ViX3ZpZXcsIEdBc3luY1Jlc3VsdCogcmVzLCBTbmFwc2hvdFdlYlZpZXdUZXN0KiB0
ZXN0KQogICAgIHsKLSAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICBHVW5p
cXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIHRlc3QtPm1fc3VyZmFjZSA9IHdlYmtp
dF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoKHdlYl92aWV3LCByZXMsICZlcnJvci5vdXRQ
dHIoKSk7CiAgICAgICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3N1cmZhY2UpOwogICAgICAgICBnX2Fz
c2VydF9lcnJvcihlcnJvci5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9DQU5DRUxMRUQp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RX
ZWJLaXRXZWJWaWV3R3JvdXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXAuY3BwCmluZGV4IDc0MDA4ZWIuLjQ0OGFiZDIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0
V2ViVmlld0dyb3VwLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJH
dGsvVGVzdFdlYktpdFdlYlZpZXdHcm91cC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMg
Ym9vbCBpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aChXZWJWaWV3VGVzdCogdGVzdCwg
Y29uc3QgY2hhciogcGF0aAogICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0
aChwYXRoKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCi0g
ICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJv
cjsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+
cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKGtTdHlsZVNoZWV0VGVzdFNjcmlwdCwg
JmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBn
X2Fzc2VydCghZXJyb3IuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJWaWV3RWRpdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHAKaW5kZXggN2YwYTA2MS4u
OWU2OWJmYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1Rlc3RXZWJWaWV3RWRpdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyB2b2lkIGNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZFJlYWR5Q2FsbGJhY2so
R09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBFZGl0b3JUZXN0KiB0ZXN0KQogICAgIHsK
LSAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICBHVW5pcXVlT3V0UHRyPEdF
cnJvcj4gZXJyb3I7CiAgICAgICAgIHRlc3QtPm1fY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kID0g
d2Via2l0X3dlYl92aWV3X2Nhbl9leGVjdXRlX2VkaXRpbmdfY29tbWFuZF9maW5pc2godGVzdC0+
bV93ZWJWaWV3LCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgICAgIGdfYXNzZXJ0KCFl
cnJvci5nZXQoKSk7CiAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0
ZW5zaW9uVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2Vi
RXh0ZW5zaW9uVGVzdC5jcHAKaW5kZXggNzg5NDMwZi4uNmIyZWMyZiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0
LmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KLSNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CkBAIC0yNDQsNyArMjQzLDcgQEAgc3RhdGljIHZvaWQgYnVzQWNxdWlyZWRD
YWxsYmFjayhHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIqIG5hbWUsIGcK
ICAgICBpZiAoIWludHJvc3BlY3Rpb25EYXRhKQogICAgICAgICBpbnRyb3NwZWN0aW9uRGF0YSA9
IGdfZGJ1c19ub2RlX2luZm9fbmV3X2Zvcl94bWwoaW50cm9zcGVjdGlvblhNTCwgMCk7CiAKLSAg
ICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9y
OwogICAgIHVuc2lnbmVkIHJlZ2lzdHJhdGlvbklEID0gZ19kYnVzX2Nvbm5lY3Rpb25fcmVnaXN0
ZXJfb2JqZWN0KAogICAgICAgICBjb25uZWN0aW9uLAogICAgICAgICAiL29yZy93ZWJraXQvZ3Rr
L1dlYkV4dGVuc2lvblRlc3QiLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1dlYlByb2Nlc3NUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9XZWJQcm9jZXNzVGVzdC5jcHAKaW5kZXggOGMwMDgzNy4uY2ZmMWEyNSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYlByb2Nl
c3NUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2Vi
UHJvY2Vzc1Rlc3QuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Rl
c3QuaCIKIAogI2luY2x1ZGUgPGdpby9naW8uaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3du
UHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiB0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBzdGQ6OmZ1bmN0aW9uPFBhc3NPd25QdHI8V2ViUHJvY2Vzc1Rlc3Q+ICgp
Pj4gVGVzdHNNYXA7CiBzdGF0aWMgVGVzdHNNYXAmIHRlc3RzTWFwKCkKQEAgLTgwLDcgKzgwLDcg
QEAgc3RhdGljIHZvaWQgYnVzQWNxdWlyZWRDYWxsYmFjayhHREJ1c0Nvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24sIGNvbnN0IGNoYXIqIG5hbWUsIGcKICAgICBpZiAoIWludHJvc3BlY3Rpb25EYXRhKQog
ICAgICAgICBpbnRyb3NwZWN0aW9uRGF0YSA9IGdfZGJ1c19ub2RlX2luZm9fbmV3X2Zvcl94bWwo
aW50cm9zcGVjdGlvblhNTCwgMCk7CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAg
R1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIHVuc2lnbmVkIHJlZ2lzdHJhdGlvbklE
ID0gZ19kYnVzX2Nvbm5lY3Rpb25fcmVnaXN0ZXJfb2JqZWN0KAogICAgICAgICBjb25uZWN0aW9u
LAogICAgICAgICAiL29yZy93ZWJraXQvZ3RrL1dlYlByb2Nlc3NUZXN0IiwKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvZ3RrL0lucHV0TWV0aG9kRmlsdGVyLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvZ3RrL0lucHV0TWV0aG9kRmlsdGVyLmNwcAppbmRleCBi
ZmNjMTdkLi40YWFiN2MwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2d0
ay9JbnB1dE1ldGhvZEZpbHRlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9n
dGsvSW5wdXRNZXRob2RGaWx0ZXIuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiV1RG
U3RyaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KICNpbmNsdWRl
IDxndGsvZ3RrLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC02NCw3ICs2NCw3IEBAIHB1
YmxpYzoKICAgICAgICAgZ2RrX2V2ZW50X3NldF9kZXZpY2UoZXZlbnQsIGdka19kZXZpY2VfbWFu
YWdlcl9nZXRfY2xpZW50X3BvaW50ZXIoZ2RrX2Rpc3BsYXlfZ2V0X2RldmljZV9tYW5hZ2VyKGdk
a19kaXNwbGF5X2dldF9kZWZhdWx0KCkpKSk7CiAjZW5kaWYKIAotICAgICAgICBHT3duUHRyPEdk
a0tleW1hcEtleT4ga2V5czsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxHZGtLZXltYXBLZXk+IGtl
eXM7CiAgICAgICAgIGdpbnQgbktleXM7CiAgICAgICAgIGlmIChnZGtfa2V5bWFwX2dldF9lbnRy
aWVzX2Zvcl9rZXl2YWwoZ2RrX2tleW1hcF9nZXRfZGVmYXVsdCgpLCBnZGtLZXlWYWx1ZSwgJmtl
eXMub3V0UHRyKCksICZuS2V5cykpCiAgICAgICAgICAgICBldmVudC0+a2V5LmhhcmR3YXJlX2tl
eWNvZGUgPSBrZXlzLmdldCgpWzBdLmtleWNvZGU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9n
dGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcAppbmRleCAxMmVlZWQ3Li4wMzE2MDQxIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAKQEAgLTI4LDcg
KzI4LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0ckd0ay5oPgogI2luY2x1ZGUg
PGd0ay9ndGsuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAK
QEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIHZvaWQgZG9LZXlTdHJva2UoR3RrV2lkZ2V0KiB2aWV3
V2lkZ2V0LCB1bnNpZ25lZCBpbnQga2V5VmFsKQogICAgIGdka19ldmVudF9zZXRfZGV2aWNlKGV2
ZW50LmdldCgpLCBnZGtfZGV2aWNlX21hbmFnZXJfZ2V0X2NsaWVudF9wb2ludGVyKGdka19kaXNw
bGF5X2dldF9kZXZpY2VfbWFuYWdlcihndGtfd2lkZ2V0X2dldF9kaXNwbGF5KHZpZXdXaWRnZXQp
KSkpOwogCiAgICAgLy8gV2hlbiBzeW50aGVzaXppbmcgYW4gZXZlbnQsIGFuIGludmFsaWQgaGFy
ZHdhcmVfa2V5Y29kZSB2YWx1ZSBjYW4gY2F1c2UgaXQgdG8gYmUgYmFkbHkgcHJvY2Vzc2VkIGJ5
IEdUSysuCi0gICAgR093blB0cjxHZGtLZXltYXBLZXk+IGtleXM7CisgICAgR1VuaXF1ZU91dFB0
cjxHZGtLZXltYXBLZXk+IGtleXM7CiAgICAgaW50IGtleXNDb3VudDsKICAgICBpZiAoZ2RrX2tl
eW1hcF9nZXRfZW50cmllc19mb3Jfa2V5dmFsKGdka19rZXltYXBfZ2V0X2RlZmF1bHQoKSwga2V5
VmFsLCAma2V5cy5vdXRQdHIoKSwgJmtleXNDb3VudCkpCiAgICAgICAgIGV2ZW50LT5rZXkuaGFy
ZHdhcmVfa2V5Y29kZSA9IGtleXMuZ2V0KClbMF0ua2V5Y29kZTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvVGVzdE1haW4uaCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ3RrL1dlYktpdDJHdGsvVGVzdE1haW4uaAppbmRleCBkNWNlYWU4Li45ZmFiMGIyIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1Rlc3RNYWluLmgK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9UZXN0TWFpbi5oCkBAIC0y
Myw3ICsyMyw2IEBACiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNpbmNsdWRlIDxnbGliLW9iamVjdC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dl
YktpdDJHdGsvV2ViS2l0VGVzdEJ1cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJL
aXQyR3RrL1dlYktpdFRlc3RCdXMuY3BwCmluZGV4IGQwZGZhZTcuLjM1YmNmMWIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViS2l0VGVzdEJ1cy5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJLaXRUZXN0QnVzLmNw
cApAQCAtMjAsNyArMjAsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktp
dFRlc3RCdXMuaCIKIAotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTM4LDggKzM3LDggQEAgYm9vbCBXZWJLaXRUZXN0QnVzOjpydW4oKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgR093blB0cjxjaGFyPiBvdXRwdXQ7Ci0gICAg
R093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gb3V0cHV0Owor
ICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBpZiAoIWdfc3Bhd25fY29tbWFu
ZF9saW5lX3N5bmMoZGJ1c0xhdW5jaC5nZXQoKSwgJm91dHB1dC5vdXRQdHIoKSwgMCwgMCwgJmVy
cm9yLm91dFB0cigpKSkgewogICAgICAgICBnX3dhcm5pbmcoIkVycm9yIHN0YXJ0aW5nIERCVVMg
ZGFlbW9uOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcApp
bmRleCBlYjdiMGRmLi4xMTk4YjA4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0
ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0
ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgV2Vi
Vmlld1Rlc3Q6OnNlbGVjdEFsbCgpCiBzdGF0aWMgdm9pZCByZXNvdXJjZUdldERhdGFDYWxsYmFj
ayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0
YSkKIHsKICAgICBzaXplX3QgZGF0YVNpemU7Ci0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOwor
ICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICB1bnNpZ25lZCBjaGFyKiBkYXRh
ID0gd2Via2l0X3dlYl9yZXNvdXJjZV9nZXRfZGF0YV9maW5pc2goV0VCS0lUX1dFQl9SRVNPVVJD
RShvYmplY3QpLCByZXN1bHQsICZkYXRhU2l6ZSwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fz
c2VydChkYXRhKTsKIApAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgV2ViVmlld1Rlc3Q6OmtleVN0
cm9rZSh1bnNpZ25lZCBrZXlWYWwsIHVuc2lnbmVkIGtleU1vZGlmaWVycykKICAgICBldmVudC0+
a2V5LnN0YXRlID0ga2V5TW9kaWZpZXJzOwogCiAgICAgLy8gV2hlbiBzeW50aGVzaXppbmcgYW4g
ZXZlbnQsIGFuIGludmFsaWQgaGFyZHdhcmVfa2V5Y29kZSB2YWx1ZSBjYW4gY2F1c2UgaXQgdG8g
YmUgYmFkbHkgcHJvY2Vzc2VkIGJ5IEdUSysuCi0gICAgR093blB0cjxHZGtLZXltYXBLZXk+IGtl
eXM7CisgICAgR1VuaXF1ZU91dFB0cjxHZGtLZXltYXBLZXk+IGtleXM7CiAgICAgaW50IGtleXND
b3VudDsKICAgICBpZiAoZ2RrX2tleW1hcF9nZXRfZW50cmllc19mb3Jfa2V5dmFsKGdka19rZXlt
YXBfZ2V0X2RlZmF1bHQoKSwga2V5VmFsLCAma2V5cy5vdXRQdHIoKSwgJmtleXNDb3VudCkpCiAg
ICAgICAgIGV2ZW50LT5rZXkuaGFyZHdhcmVfa2V5Y29kZSA9IGtleXMuZ2V0KClbMF0ua2V5Y29k
ZTsKQEAgLTQyNSw3ICs0MjUsNyBAQCBib29sIFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0
SXNVbmRlZmluZWQoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdAogCiBzdGF0aWMg
dm9pZCBvblNuYXBzaG90UmVhZHkoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIEdBc3luY1Jlc3Vs
dCogcmVzLCBXZWJWaWV3VGVzdCogdGVzdCkKIHsKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7
CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIHRlc3QtPm1fc3VyZmFjZSA9
IHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoKHdlYl92aWV3LCByZXMsICZlcnJv
ci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoIXRlc3QtPm1fc3VyZmFjZSB8fCAhZXJyb3IuZ2V0
KCkpOwogICAgIGlmIChlcnJvcikKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Z3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsv
RXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKaW5kZXggMzgwNDM4Yy4uNWQ3YzIwYyAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKQEAg
LTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgogI2luY2x1ZGUgPGd0
ay9ndGsuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL2dv
YmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdUUiB7CkBAIC0yOTUs
NyArMjk1LDcgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUmVmIGtl
eVJlZiwgV0tFdmVudE1vZGlmaWVycyB3a01vZGlmaWVycywKICAgICBnX29iamVjdF9yZWYocHJl
c3NFdmVudC0+a2V5LndpbmRvdyk7CiAgICAgZ2RrX2V2ZW50X3NldF9kZXZpY2UocHJlc3NFdmVu
dCwgZ2RrX2RldmljZV9tYW5hZ2VyX2dldF9jbGllbnRfcG9pbnRlcihnZGtfZGlzcGxheV9nZXRf
ZGV2aWNlX21hbmFnZXIoZ2RrX3dpbmRvd19nZXRfZGlzcGxheShwcmVzc0V2ZW50LT5rZXkud2lu
ZG93KSkpKTsKIAotICAgIEdPd25QdHI8R2RrS2V5bWFwS2V5PiBrZXlzOworICAgIEdVbmlxdWVP
dXRQdHI8R2RrS2V5bWFwS2V5PiBrZXlzOwogICAgIGdpbnQgbktleXM7CiAgICAgaWYgKGdka19r
ZXltYXBfZ2V0X2VudHJpZXNfZm9yX2tleXZhbChnZGtfa2V5bWFwX2dldF9kZWZhdWx0KCksIGdk
a0tleVN5bSwgJmtleXMub3V0UHRyKCksICZuS2V5cykpCiAgICAgICAgIHByZXNzRXZlbnQtPmtl
eS5oYXJkd2FyZV9rZXljb2RlID0ga2V5cy5nZXQoKVswXS5rZXljb2RlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223627</attachid>
            <date>2014-02-09 05:15:21 -0800</date>
            <delta_ts>2014-02-10 05:53:08 -0800</delta_ts>
            <desc>Rebased patch</desc>
            <filename>wtf-unique-out-ptr.diff</filename>
            <type>text/plain</type>
            <size>85977</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNGMzMDNkYy4uYTZiOWY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNC0wMS0yNCAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dM
SUJdIEFkZCBHVW5pcXVlT3V0UHRyIGFuZCB1c2UgaXQgaW5zdGVhZCBvZiBHT3duUHRyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc1NTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHVW5pcXVlT3V0UHRy
IGlzIGEgc2ltcGxpZmllZCB2ZXJzaW9uIG9mIEdPd25QdHIgZm9yIHRoZSBjYXNlcworICAgICAg
ICB3aGVyZSB3ZSBuZWVkIHRoZSBhZGRyZXNzIG9mIHRoZSBjb250YWluZWQgcG9pbnRlci4gR1Vu
aXF1ZU91dFB0cgorICAgICAgICB1c2VzIEdVbmlxdWVQdHIgdG8gZnJlZSB0aGUgY29udGFpbmVk
IG9iamVjdCBhbmQgdG8gcmVsZWFzZSB0aGUKKyAgICAgICAgY29udGFpbmVyIHBvaW50ZXIuIFRo
ZSBBUEkgaXMgdmVyeSBzaW1wbGUgdG8gbWFrZSBzdXJlIHRoaXMgaXMKKyAgICAgICAgb25seSB1
c2VkIHdoZW4gb3V0UHRyKCkgaXMgbmVlZGVkLiBJdCBjYW4ndCBiZSBjb25zdHJ1Y3RlZCB3aXRo
IGEKKyAgICAgICAgcG9pbnRlciwgYW5kIHRoZXJlJ3Mgbm90IG1ldGhvZCB0byBzZXQgYSBuZXcg
cG9pbnRlci4gQW5vdGhlcgorICAgICAgICBkaWZmZXJlbmNlIHdpdGggdGhlIG9sZCBHT3duUHRy
IGlzIHRoYXQgb3V0UHRyKCkgY2FuIGJlIHVzZWQKKyAgICAgICAgbXVsdGlwbGUgdGltZXMsIGJl
Y2F1c2UgaXQgZnJlZXMgYW55IHBvaW50ZXIgcHJldmlvdXNseSBzZXQuCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVmbC5jbWFrZToKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogd3RmL2dvYmplY3QvR093
blB0ci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd3RmL2dvYmplY3QvR093blB0ci5oOiBSZW1v
dmVkLgorICAgICAgICAqIHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaDoKKyAgICAgICAgKFdURjo6
R1VuaXF1ZU91dFB0cjo6R1VuaXF1ZU91dFB0cik6CisgICAgICAgIChXVEY6OkdVbmlxdWVPdXRQ
dHI6On5HVW5pcXVlT3V0UHRyKToKKyAgICAgICAgKFdURjo6R1VuaXF1ZU91dFB0cjo6b3V0UHRy
KToKKyAgICAgICAgKFdURjo6R1VuaXF1ZU91dFB0cjo6cmVzZXQpOgorICAgICAgICAoV1RGOjpH
VW5pcXVlT3V0UHRyOjpyZWxlYXNlKToKKyAgICAgICAgKFdURjo6R1VuaXF1ZU91dFB0cjo6b3Bl
cmF0b3IqKToKKyAgICAgICAgKFdURjo6R1VuaXF1ZU91dFB0cjo6b3BlcmF0b3ItPik6CisgICAg
ICAgIChXVEY6OkdVbmlxdWVPdXRQdHI6OmdldCk6CisgICAgICAgIChXVEY6OkdVbmlxdWVPdXRQ
dHI6Om9wZXJhdG9yISk6CisgICAgICAgIChXVEY6OkdVbmlxdWVPdXRQdHI6Om9wZXJhdG9yIFVu
c3BlY2lmaWVkQm9vbFR5cGUpOgorCiAyMDE0LTAyLTA4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBnZXRDaGFyYWN0ZXJzV2l0aFVw
Y29udmVydCBpbiBKYXZhU2NyaXB0Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGI2NzBm
ZGQuLmYyYWVhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTIxMSw4ICsyMTEsNiBAQCB3
dGZfc291cmNlcyArPSBcCiAgICAgU291cmNlL1dURi93dGYvZHRvYS9zdHJ0b2QuaCBcCiAgICAg
U291cmNlL1dURi93dGYvZHRvYS91dGlscy5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9nb2JqZWN0
L0dNdXRleExvY2tlci5oIFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dPd25QdHIuY3Bw
IFwKLSAgICBTb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dPd25QdHIuaCBcCiAgICAgU291cmNlL1dU
Ri93dGYvZ29iamVjdC9HUmVmUHRyLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvZ29iamVjdC9H
UmVmUHRyLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1R5cGVkZWZzLmggXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBlMTBhNDQyLi5iNGUyMTBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtNCw3ICs0LDYgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAg
ICBlZmwvUmVmUHRyRWZsLmNwcAogICAgIGVmbC9SdW5Mb29wRWZsLmNwcAogCi0gICAgZ29iamVj
dC9HT3duUHRyLmNwcAogICAgIGdvYmplY3QvR1JlZlB0ci5jcHAKICkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUdUSy5jbWFrZQppbmRleCAzMmUxZmViLi43MDI2MmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5j
bWFrZQpAQCAtMSw1ICsxLDQgQEAKIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCi0gICAgZ29iamVj
dC9HT3duUHRyLmNwcAogICAgIGdvYmplY3QvR1JlZlB0ci5jcHAKICAgICBnb2JqZWN0L0dsaWJV
dGlsaXRpZXMuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR093blB0
ci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dPd25QdHIuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA1OTM1NmQ2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL2dv
YmplY3QvR093blB0ci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCi0gKgotICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0g
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBV
U0EKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR093blB0ci5oIgotCi0j
aWYgVVNFKEdMSUIpCi0KLSNpbmNsdWRlIDxnaW8vZ2lvLmg+Ci0jaW5jbHVkZSA8Z2xpYi5oPgot
Ci1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGUgPD4gV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZnJlZU93bmVkR1B0cjxHRXJyb3I+KEdFcnJvciogcHRyKQotewotICAgIGlmIChwdHIpCi0gICAg
ICAgIGdfZXJyb3JfZnJlZShwdHIpOwotfQotCi10ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQ
dHI8R0xpc3Q+KEdMaXN0KiBwdHIpCi17Ci0gICAgZ19saXN0X2ZyZWUocHRyKTsKLX0KLQotdGVt
cGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdTTGlzdD4oR1NMaXN0KiBwdHIpCi17Ci0gICAg
Z19zbGlzdF9mcmVlKHB0cik7Ci19Ci0KLXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxH
UGF0dGVyblNwZWM+KEdQYXR0ZXJuU3BlYyogcHRyKQotewotICAgIGlmIChwdHIpCi0gICAgICAg
IGdfcGF0dGVybl9zcGVjX2ZyZWUocHRyKTsKLX0KLQotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3du
ZWRHUHRyPEdEaXI+KEdEaXIqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAgICAgICBnX2Rpcl9j
bG9zZShwdHIpOwotfQotCi10ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8R1RpbWVyPihH
VGltZXIqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAgICAgICBnX3RpbWVyX2Rlc3Ryb3kocHRy
KTsKLX0KLQotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdLZXlGaWxlPihHS2V5Rmls
ZSogcHRyKQotewotICAgIGlmIChwdHIpCi0gICAgICAgIGdfa2V5X2ZpbGVfZnJlZShwdHIpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIFVTRShHTElCKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvZ29iamVjdC9HT3duUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9nb2Jq
ZWN0L0dPd25QdHIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2QyNjIzYi4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dPd25QdHIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDE0NCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4IENvbGxh
Ym9yYSBMdGQuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAq
Ci0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIEdPd25QdHJfaAotI2RlZmluZSBHT3du
UHRyX2gKLQotI2lmIFVTRShHTElCKQotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLWV4dGVy
biAiQyIgdm9pZCBnX2ZyZWUodm9pZCopOwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGZyZWVPd25lZEdQdHIoVCogcHRyKTsKLXRlbXBsYXRl
PD4gV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZnJlZU93bmVkR1B0cjxHRXJyb3I+KEdFcnJvciop
OwotdGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8R0xpc3Q+KEdMaXN0Kik7Ci10ZW1wbGF0
ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxHU0xpc3Q+KEdTTGlzdCopOwotdGVtcGxhdGU8PiB2b2lk
IGZyZWVPd25lZEdQdHI8R1BhdHRlcm5TcGVjPihHUGF0dGVyblNwZWMqKTsKLXRlbXBsYXRlPD4g
dm9pZCBmcmVlT3duZWRHUHRyPEdEaXI+KEdEaXIqKTsKLXRlbXBsYXRlPD4gdm9pZCBmcmVlT3du
ZWRHUHRyPEdUaW1lcj4oR1RpbWVyKik7Ci10ZW1wbGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxH
S2V5RmlsZT4oR0tleUZpbGUqKTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEdPd25Q
dHIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdPd25QdHIpOwotcHVibGljOgotICAgIGV4
cGxpY2l0IEdPd25QdHIoVCogcHRyID0gMCkgOiBtX3B0cihwdHIpIHsgfQotICAgIH5HT3duUHRy
KCkgeyBmcmVlT3duZWRHUHRyKG1fcHRyKTsgfQotCi0gICAgVCogZ2V0KCkgY29uc3QgeyByZXR1
cm4gbV9wdHI7IH0KLSAgICBUKiByZWxlYXNlKCkKLSAgICB7Ci0gICAgICAgIFQqIHB0ciA9IG1f
cHRyOwotICAgICAgICBtX3B0ciA9IDA7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0g
ICAgVComIG91dFB0cigpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fcHRyKTsKLSAgICAgICAg
cmV0dXJuIG1fcHRyOwotICAgIH0KLQotICAgIHZvaWQgc2V0KFQqIHB0cikKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVCghcHRyIHx8IG1fcHRyICE9IHB0cik7Ci0gICAgICAgIGZyZWVPd25lZEdQdHIo
bV9wdHIpOwotICAgICAgICBtX3B0ciA9IHB0cjsKLSAgICB9Ci0KLSAgICB2b2lkIGNsZWFyKCkK
LSAgICB7Ci0gICAgICAgIFQqIHB0ciA9IG1fcHRyOwotICAgICAgICBtX3B0ciA9IDA7Ci0gICAg
ICAgIGZyZWVPd25lZEdQdHIocHRyKTsKLSAgICB9Ci0KLSAgICBUJiBvcGVyYXRvciooKSBjb25z
dAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcHRyKTsKLSAgICAgICAgcmV0dXJuICptX3B0cjsK
LSAgICB9Ci0KLSAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChtX3B0cik7Ci0gICAgICAgIHJldHVybiBtX3B0cjsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJh
dG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQotCi0gICAgLy8gVGhpcyBjb252ZXJzaW9u
IG9wZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBv
dGhlciBpbnRlZ2VyIHR5cGVzLgotICAgIHR5cGVkZWYgVCogR093blB0cjo6KlVuc3BlY2lmaWVk
Qm9vbFR5cGU7Ci0gICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcHRyID8gJkdPd25QdHI6Om1fcHRyIDogMDsgfQotCi0gICAgdm9pZCBzd2FwKEdPd25Q
dHImIG8pIHsgc3RkOjpzd2FwKG1fcHRyLCBvLm1fcHRyKTsgfQotCi1wcml2YXRlOgotICAgIFQq
IG1fcHRyOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIHN3YXAoR093
blB0cjxUPiYgYSwgR093blB0cjxUPiYgYikKLXsKLSAgICBhLnN3YXAoYik7Ci19Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEdPd25QdHI8VD4mIGEsIFUqIGIpCi17IAotICAgIHJldHVybiBhLmdldCgpID09IGI7IAotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShUKiBhLCBjb25zdCBHT3duUHRyPFU+JiBiKSAKLXsKLSAgICByZXR1cm4gYSA9PSBiLmdldCgp
OyAKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgR093blB0cjxUPiYgYSwgVSogYikKLXsKLSAgICByZXR1cm4gYS5nZXQo
KSAhPSBiOyAKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBi
b29sIG9wZXJhdG9yIT0oVCogYSwgY29uc3QgR093blB0cjxVPiYgYikKLXsgCi0gICAgcmV0dXJu
IGEgIT0gYi5nZXQoKTsgCi19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdHlwZW5h
bWUgR093blB0cjxUPjo6UHRyVHlwZSBnZXRQdHIoY29uc3QgR093blB0cjxUPiYgcCkKLXsKLSAg
ICByZXR1cm4gcC5nZXQoKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lk
IGZyZWVPd25lZEdQdHIoVCogcHRyKQotewotICAgIGdfZnJlZShwdHIpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpHT3duUHRyOwotCi0jZW5kaWYgLy8gVVNFKEdMSUIp
Ci0KLSNlbmRpZiAvLyBHT3duUHRyX2gKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ29i
amVjdC9HVW5pcXVlUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaApp
bmRleCAyMjcxODEyLi5iY2ZhYTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0
L0dVbmlxdWVQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaApA
QCAtMjQsNiArMjQsNyBAQAogI2lmIFVTRShHTElCKQogCiAjaW5jbHVkZSA8Z2lvL2dpby5oPgor
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNTcs
OSArNTgsNjggQEAgdXNpbmcgR1VuaXF1ZVB0ciA9IHN0ZDo6dW5pcXVlX3B0cjxULCBHUHRyRGVs
ZXRlcjxUPj47CiBGT1JfRUFDSF9HTElCX0RFTEVURVIoV1RGX0RFRklORV9HUFRSX0RFTEVURVIp
CiAjdW5kZWYgRk9SX0VBQ0hfR0xJQl9ERUxFVEVSCiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBj
bGFzcyBHVW5pcXVlT3V0UHRyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHVW5pcXVlT3V0
UHRyKTsKK3B1YmxpYzoKKyAgICBHVW5pcXVlT3V0UHRyKCkKKyAgICAgICAgOiBtX3B0cihudWxs
cHRyKQorICAgIHsKKyAgICB9CisKKyAgICB+R1VuaXF1ZU91dFB0cigpCisgICAgeworICAgICAg
ICByZXNldCgpOworICAgIH0KKworICAgIFQqJiBvdXRQdHIoKQorICAgIHsKKyAgICAgICAgcmVz
ZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fcHRyOworICAgIH0KKworICAgIEdVbmlxdWVQdHI8VD4g
cmVsZWFzZSgpCisgICAgeworICAgICAgICBHVW5pcXVlUHRyPFQ+IHB0cihtX3B0cik7CisgICAg
ICAgIG1fcHRyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBU
JiBvcGVyYXRvciooKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcHRyKTsKKyAgICAg
ICAgcmV0dXJuICptX3B0cjsKKyAgICB9CisKKyAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX3B0cik7CisgICAgICAgIHJldHVybiBtX3B0cjsKKyAgICB9
CisKKyAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQorCisgICAgYm9vbCBvcGVy
YXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0KKworICAgIC8vIFRoaXMgY29udmVyc2lv
biBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8g
b3RoZXIgaW50ZWdlciB0eXBlcy4KKyAgICB0eXBlZGVmIFQqIEdVbmlxdWVPdXRQdHI6OipVbnNw
ZWNpZmllZEJvb2xUeXBlOworICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3B0ciA/ICZHVW5pcXVlT3V0UHRyOjptX3B0ciA6IDA7IH0KKworcHJpdmF0
ZToKKyAgICB2b2lkIHJlc2V0KCkKKyAgICB7CisgICAgICAgIGlmIChtX3B0cikgeworICAgICAg
ICAgICAgR1VuaXF1ZVB0cjxUPiBkZWxldGVQdHIobV9wdHIpOworICAgICAgICAgICAgbV9wdHIg
PSBudWxscHRyOworICAgICAgICB9CisgICAgfQorCisgICAgVCogbV9wdHI7Cit9OworCiB9IC8v
IG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpHVW5pcXVlUHRyOwordXNpbmcgV1RGOjpHVW5p
cXVlT3V0UHRyOwogCiAjZW5kaWYgLy8gVVNFKEdMSUIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NzlkMDMz
Li5hOTM4N2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTQtMDEtMjQgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTElCXSBB
ZGQgR1VuaXF1ZU91dFB0ciBhbmQgdXNlIGl0IGluc3RlYWQgb2YgR093blB0cgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NTU0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEdVbmlxdWVPdXRQdHIg
aW5zdGVhZCBvZiBHT3duUHRyLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAg
ICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpo
YW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9G
aWxlUmVhZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRl
cjo6aGFuZGxlTWVzc2FnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9CYXR0ZXJ5UHJvdmlk
ZXJVUG93ZXIuY3BwOgorICAgICAgICAoQmF0dGVyeVByb3ZpZGVyVVBvd2VyOjpzdGFydFVwZGF0
aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRp
bGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVHU3RyZWFtZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRUYWcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9h
ZFJlc291cmNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRGF0YU9iamVj
dEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpzZXRVUklMaXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZWFkRnJvbUZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlR3RrOjpyZWFkQ2FsbGJhY2spOgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtJbnB1dE1ldGhvZEZpbHRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHdGtJbnB1dE1ldGhvZEZpbHRlcjo6aGFuZGxlUHJlZWRpdENoYW5nZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhc3RlYm9hcmRIZWxwZXI6OmZpbGxEYXRhT2JqZWN0RnJvbURyb3BEYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVHdGs6OnN5c3RlbUZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9T
aGFyZWRCdWZmZXJHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvZ3RrL0Ny
ZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlZGVudGlhbEZv
ckNoYWxsZW5nZUFzeW5jUmVhZHlDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0dPd25QdHJTb3VwLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvR093blB0clNvdXAuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlZGly
ZWN0U2tpcENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRNdWx0aXBhcnRSZXNwb25z
ZVBhcnRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpzZW5kUmVxdWVzdENhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OmFkZEZpbGVUb1NvdXBNZXNzYWdlQm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVTb3VwUmVxdWVzdEFuZE1lc3NhZ2VGb3JIYW5kbGUpOgorICAgICAgICAo
V2ViQ29yZTo6cmVhZENhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
U29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJl
YW1IYW5kbGU6OnBsYXRmb3JtU2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1I
YW5kbGU6OnBsYXRmb3JtQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6Y29ubmVjdGVkQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFJlYWR5Q2FsbGJhY2spOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpodHRwUHJveHkpOgorCiAyMDE0LTAyLTA5ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBNYW5hZ2UgU2hhZG93
RGF0YSB0aHJvdWdoIHN0ZDo6dW5pcXVlX3B0cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
aW5kZXggODhhZGM2Zi4uMTNmMmNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC01ODU0LDggKzU4NTQsNiBAQCBwbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQldyaXRlQmF0Y2guaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCV3JpdGVCYXRjaC5jcHAgXAotCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5jcHAgXAotCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3VwLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGU3YjdjOTguLjgxYTc2MGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtRWZsLmNtYWtlCkBAIC0xNTcsNyArMTU3LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcAogICAg
IHBsYXRmb3JtL25ldHdvcmsvc291cC9DcmVkZW50aWFsU3RvcmFnZVNvdXAuY3BwCiAgICAgcGxh
dGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCi0gICAgcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0dPd25QdHJTb3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Tb3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVJlc29sdmVy
U291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3VwLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA5NDc4MTVlLi45YTRiZDhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTE1LDcgKzExNSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0b3JhZ2VTb3VwLmNwcAogICAg
IHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAotICAgIHBsYXRmb3JtL25ldHdvcmsv
c291cC9HT3duUHRyU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlSZXNv
bHZlclNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5j
cHAKQEAgLTI0NSw3ICsyNDQsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlUGxhdGZvcm1HVEtfU09V
UkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0b3JhZ2VTb3VwLmNwcAogICAgIHBs
YXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAotICAgIHBsYXRmb3JtL25ldHdvcmsvc291
cC9HT3duUHRyU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlSZXNvbHZl
clNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCA4MTYyNDk0Li4y
NWRkY2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC0y
NCwxMiArMjQsMTIgQEAKIAogI2luY2x1ZGUgIkF1ZGlvQ2hhbm5lbC5oIgogI2luY2x1ZGUgIkF1
ZGlvU291cmNlUHJvdmlkZXIuaCIKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAj
aW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJXZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgPGdzdC9nc3Qu
aD4KICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9wYnV0aWxzLmg+CisjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1VuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE1MCw4ICsxNTAs
OCBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OmZpbmlzaEJ1aWxkaW5nUGlwZWxp
bmVBZnRlcldhdlBhcnNlclBhZFJlYWR5KEdzdAogCiBnYm9vbGVhbiBBdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiB7Ci0gICAgR093
blB0cjxHRXJyb3I+IGVycm9yOwotICAgIEdPd25QdHI8Z2NoYXI+IGRlYnVnOworICAgIEdVbmlx
dWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBkZWJ1ZzsK
IAogICAgIHN3aXRjaCAoR1NUX01FU1NBR0VfVFlQRShtZXNzYWdlKSkgewogICAgIGNhc2UgR1NU
X01FU1NBR0VfV0FSTklORzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAK
aW5kZXggOGUxNGQzMS4uZTY4N2U1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJl
YW1lci5jcHAKQEAgLTMwLDggKzMwLDggQEAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVk
ZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgot
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiAjaW5jbHVk
ZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+CiAKQEAgLTIwMyw4ICsyMDMsOCBAQCBHc3RGbG93UmV0dXJu
IEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlU2FtcGxlKEdzdEFwcFNpbmsqIHNpbmspCiAKIGdib29s
ZWFuIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQog
ewotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBHT3duUHRyPGdjaGFyPiBkZWJ1ZzsK
KyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxnY2hh
cj4gZGVidWc7CiAKICAgICBzd2l0Y2ggKEdTVF9NRVNTQUdFX1RZUEUobWVzc2FnZSkpIHsKICAg
ICBjYXNlIEdTVF9NRVNTQUdFX0VPUzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyLmNwcAppbmRleCA2YTlmMWJmLi5lZmM4MDAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0JhdHRlcnlQcm92aWRl
clVQb3dlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9CYXR0ZXJ5UHJv
dmlkZXJVUG93ZXIuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiQmF0dGVyeVByb3Zp
ZGVyVVBvd2VyQ2xpZW50LmgiCiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8bGltaXRzPgot
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
VW5pcXVlUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01MSw3ICs1MSw3
IEBAIHZvaWQgQmF0dGVyeVByb3ZpZGVyVVBvd2VyOjpzdGFydFVwZGF0aW5nKCkKICAgICBBU1NF
UlQoIW1fdXBvd2VyQ2xpZW50KTsKICAgICBtX3Vwb3dlckNsaWVudCA9IGFkb3B0R1JlZih1cF9j
bGllbnRfbmV3KCkpOwogCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVP
dXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBpZiAoIXVwX2NsaWVudF9lbnVtZXJhdGVfZGV2aWNl
c19zeW5jKG1fdXBvd2VyQ2xpZW50LmdldCgpLCAwLCAmZXJyb3Iub3V0UHRyKCkpKSB7CiAgICAg
ICAgIG1fY2xpZW50LT51cGRhdGVCYXR0ZXJ5U3RhdHVzKE5vdEF2YWlsYWJsZSk7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAKaW5kZXggYzk2MzMwYy4u
YTZhYWUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAKQEAgLTI2LDcgKzI2
LDcgQEAKIAogI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgogI2luY2x1ZGUgPGdzdC9nc3Qu
aD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1VuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEyNiw3ICsxMjYs
NyBAQCBib29sIGluaXRpYWxpemVHU3RyZWFtZXIoKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNl
bmRpZgogCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vy
cm9yPiBlcnJvcjsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IHBhc3MgdGhlIGFy
Z3VtZW50cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCiAgICAgYm9vbCBnc3RJbml0aWFsaXplZCA9
IGdzdF9pbml0X2NoZWNrKDAsIDAsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShnc3RJbml0aWFsaXplZCwgIkdTdHJlYW1lciBpbml0aWFsaXphdGlvbiBmYWlsZWQ6
ICVzIiwgZXJyb3IgPyBlcnJvci0+bWVzc2FnZSA6ICJ1bmtub3duIGVycm9yIG9jY3VycmVkIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4
IDE0YzU1OGYuLmYyNjY2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgog
I2luY2x1ZGUgPGdzdC9wYnV0aWxzL21pc3NpbmctcGx1Z2lucy5oPgogI2luY2x1ZGUgPGxpbWl0
cz4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtOTQ1
LDggKzk0NCw4IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpidWZmZXJlZCgpIGNvbnN0CiAKIGdib29sZWFuIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogewotICAgIEdPd25Q
dHI8R0Vycm9yPiBlcnI7Ci0gICAgR093blB0cjxnY2hhcj4gZGVidWc7CisgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycjsKKyAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBkZWJ1ZzsKICAgICBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIGVycm9yOwogICAgIGJvb2wgaXNzdWVFcnJvciA9IHRy
dWU7CiAgICAgYm9vbCBhdHRlbXB0TmV4dExvY2F0aW9uID0gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKaW5kZXggYTZmOTI3Zi4uNDVmNGZhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Ry
YWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcApAQCAtMzQs
NyArMzQsNyBAQAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJhc2UuaCIKICNpbmNsdWRlIDxnbGli
LW9iamVjdC5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBHU1RfREVC
VUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tZWRpYV9wbGF5ZXJfZGVidWcpOwogI2RlZmluZSBH
U1RfQ0FUX0RFRkFVTFQgd2Via2l0X21lZGlhX3BsYXllcl9kZWJ1ZwpAQCAtMTQzLDcgKzE0Myw3
IEBAIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZkFjdGl2ZUNo
YW5nZWQoKQogCiBib29sIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmdldFRhZyhHc3RUYWdM
aXN0KiB0YWdzLCBjb25zdCBnY2hhciogdGFnTmFtZSwgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBH
T3duUHRyPGdjaGFyPiB0YWdWYWx1ZTsKKyAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiB0YWdWYWx1
ZTsKICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgdGFnTmFtZSwgJnRhZ1Zh
bHVlLm91dFB0cigpKSkgewogICAgICAgICBJTkZPX01FRElBX01FU1NBR0UoIlRyYWNrICVkIGdv
dCAlcyAlcy4iLCBtX2luZGV4LCB0YWdOYW1lLCB0YWdWYWx1ZS5nZXQoKSk7CiAgICAgICAgIHZh
bHVlID0gdGFnVmFsdWUuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcAppbmRleCA3NjZmNmM1Li43OGE2MGMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VC
dWZmZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9J
bWFnZUJ1ZmZlckd0ay5jcHAKQEAgLTI1LDE0ICsyNSwxNCBAQAogI2luY2x1ZGUgIk1JTUVUeXBl
UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1Vu
aXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShjYWlyb19zdXJmYWNlX3Qq
IHN1cmZhY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVhbGl0eSwg
R093blB0cjxnY2hhcj4mIGJ1ZmZlciwgZ3NpemUmIGJ1ZmZlclNpemUpCitzdGF0aWMgYm9vbCBl
bmNvZGVJbWFnZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IGRvdWJsZSogcXVhbGl0eSwgR1VuaXF1ZU91dFB0cjxnY2hhcj4mIGJ1ZmZlciwg
Z3NpemUmIGJ1ZmZlclNpemUpCiB7CiAgICAgLy8gTGlzdCBvZiBzdXBwb3J0ZWQgaW1hZ2UgZW5j
b2RpbmcgdHlwZXMgY29tZXMgZnJvbSB0aGUgR2RrUGl4YnVmIGRvY3VtZW50YXRpb24uCiAgICAg
Ly8gaHR0cDovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2RrLXBpeGJ1Zi9zdGFibGUvZ2RrLXBpeGJ1
Zi1GaWxlLXNhdmluZy5odG1sI2dkay1waXhidWYtc2F2ZS10by1idWZmZXJ2CkBAIC02NSw3ICs2
NSw3IEBAIHN0YXRpYyBib29sIGVuY29kZUltYWdlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QKICAgICBpZiAoIXBpeGJ1ZikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVP
dXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBpZiAodHlwZSA9PSAianBlZyIgJiYgcXVhbGl0eSAm
JiAqcXVhbGl0eSA+PSAwLjAgJiYgKnF1YWxpdHkgPD0gMS4wKSB7CiAgICAgICAgIFN0cmluZyBx
dWFsaXR5U3RyaW5nID0gU3RyaW5nOjpmb3JtYXQoIiVkIiwgc3RhdGljX2Nhc3Q8aW50PigqcXVh
bGl0eSAqIDEwMC4wICsgMC41KSk7CiAgICAgICAgIGdka19waXhidWZfc2F2ZV90b19idWZmZXIo
cGl4YnVmLmdldCgpLCAmYnVmZmVyLm91dFB0cigpLCAmYnVmZmVyU2l6ZSwgdHlwZS51dGY4KCku
ZGF0YSgpLCAmZXJyb3Iub3V0UHRyKCksICJxdWFsaXR5IiwgcXVhbGl0eVN0cmluZy51dGY4KCku
ZGF0YSgpLCBOVUxMKTsKQEAgLTc5LDcgKzc5LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0b0Rh
dGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5LCBDb28K
IHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
Rm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAotICAgIEdPd25QdHI8Z2NoYXI+IGJ1ZmZlcjsKKyAg
ICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBidWZmZXI7CiAgICAgZ3NpemUgYnVmZmVyU2l6ZTsKICAg
ICBpZiAoIWVuY29kZUltYWdlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIG1pbWVUeXBlLCBxdWFs
aXR5LCBidWZmZXIsIGJ1ZmZlclNpemUpKQogICAgICAgICByZXR1cm4gImRhdGE6LCI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcAppbmRl
eCAyZTdjNDRjLi42MjA4ZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJHVW5p
cXVlUHRyR3RrLmgiCiAjaW5jbHVkZSAiR2RrQ2Fpcm9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KICNpbmNsdWRlIDxjYWlyby5oPgpAQCAtNjcsNyArNjYsNyBAQCBzdGF0aWMgQ1N0cmluZyBn
ZXRUaGVtZUljb25GaWxlTmFtZShjb25zdCBjaGFyKiBuYW1lLCBpbnQgc2l6ZSkKIAogc3RhdGlj
IFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VTaGFyZWRCdWZmZXIoQ1N0cmlu
ZyBuYW1lKQogewotICAgIEdPd25QdHI8Z2NoYXI+IGNvbnRlbnQ7CisgICAgR1VuaXF1ZU91dFB0
cjxnY2hhcj4gY29udGVudDsKICAgICBnc2l6ZSBsZW5ndGg7CiAgICAgaWYgKCFnX2ZpbGVfZ2V0
X2NvbnRlbnRzKG5hbWUuZGF0YSgpLCAmY29udGVudC5vdXRQdHIoKSwgJmxlbmd0aCwgMCkpCiAg
ICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwCmluZGV4IDc3MTU1MDAuLmJjMzNiYjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAKQEAgLTIx
LDcgKzIxLDYgQEAKIAogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPGd0ay9ndGsuaD4K
LSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAt
MTAyLDcgKzEwMSw3IEBAIHZvaWQgRGF0YU9iamVjdEd0azo6c2V0VVJJTGlzdChjb25zdCBTdHJp
bmcmIHVyaUxpc3RTdHJpbmcpCiAgICAgICAgICAgICAgICAgc2V0VVJMID0gdHJ1ZTsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICAg
ICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICAgICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gZmlsZW5hbWUoZ19maWxlbmFtZV9mcm9tX3VyaShsaW5lLnV0ZjgoKS5kYXRhKCksIDAs
ICZlcnJvci5vdXRQdHIoKSkpOwogICAgICAgICAgICAgaWYgKCFlcnJvciAmJiBmaWxlbmFtZSkK
ICAgICAgICAgICAgICAgICBtX2ZpbGVuYW1lcy5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChmaWxl
bmFtZS5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Zp
bGVTeXN0ZW1HdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1H
dGsuY3BwCmluZGV4IDdmN2U1MjguLjllYmVjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlIDxn
aW8vZ2lvLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+Ci0j
aW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR2xpYlV0aWxpdGllcy5oPgpAQCAtMzQwLDcgKzMzOSw3IEBAIGludCB3cml0
ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoKQogCiBpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNo
YXIqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAg
IEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBkbyB7CiAgICAgICAgIGdzc2l6ZSBi
eXRlc1JlYWQgPSBnX2lucHV0X3N0cmVhbV9yZWFkKGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJl
YW0oR19JT19TVFJFQU0oaGFuZGxlKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGEsIGxlbmd0aCwgMCwgJmVycm9yLm91dFB0cigpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR2FtZXBhZHNHdGsuY3BwCmluZGV4IDQ0MmJiZWUuLjM3
Zjg0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HYW1lcGFkc0d0
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcApA
QCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgPGd1ZGV2L2d1ZGV2Lmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KQEAgLTgwLDcgKzc5LDcgQEAgR2FtZXBhZERldmljZUd0azo6fkdhbWVwYWREZXZpY2VH
dGsoKQogZ2Jvb2xlYW4gR2FtZXBhZERldmljZUd0azo6cmVhZENhbGxiYWNrKEdPYmplY3QqIHBv
bGxhYmxlU3RyZWFtLCBncG9pbnRlciBkYXRhKQogewogICAgIEdhbWVwYWREZXZpY2VHdGsqIGdh
bWVwYWREZXZpY2UgPSByZWludGVycHJldF9jYXN0PEdhbWVwYWREZXZpY2VHdGsqPihkYXRhKTsK
LSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVy
cm9yOwogICAgIHN0cnVjdCBqc19ldmVudCBldmVudDsKIAogICAgIGdzc2l6ZSBsZW4gPSBnX3Bv
bGxhYmxlX2lucHV0X3N0cmVhbV9yZWFkX25vbmJsb2NraW5nKEdfUE9MTEFCTEVfSU5QVVRfU1RS
RUFNKHBvbGxhYmxlU3RyZWFtKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtJbnB1dE1ldGhvZEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvR3RrSW5wdXRNZXRob2RGaWx0ZXIuY3BwCmluZGV4IDBhMDI2NjUuLjhhNTJiNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtJbnB1dE1ldGhvZEZpbHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVy
LmNwcApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CiAjaW5j
bHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8
d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIu
aD4KIAogLy8gVGhlIFdpbmRvd3MgY29tcG9zaXRpb24ga2V5IGV2ZW50IGNvZGUgaXMgMjk5IG9y
IFZLX1BST0NFU1NLRVkuIFdlIG5lZWQgdG8KIC8vIGVtaXQgdGhpcyBjb2RlIGZvciB3ZWIgY29t
cGF0aWJpbGl0eSByZWFzb25zIHdoZW4ga2V5IGV2ZW50cyB0cmlnZ2VyCkBAIC0zMTcsNyArMzE3
LDcgQEAgdm9pZCBHdGtJbnB1dE1ldGhvZEZpbHRlcjo6aGFuZGxlUHJlZWRpdENoYW5nZWQoKQog
ICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBHT3duUHRyPGdjaGFy
PiBuZXdQcmVlZGl0OworICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IG5ld1ByZWVkaXQ7CiAgICAg
Z3RrX2ltX2NvbnRleHRfZ2V0X3ByZWVkaXRfc3RyaW5nKG1fY29udGV4dC5nZXQoKSwgJm5ld1By
ZWVkaXQub3V0UHRyKCksIDAsICZtX2N1cnNvck9mZnNldCk7CiAKICAgICBpZiAobV9wcmV2ZW50
TmV4dENvbW1pdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bh
c3RlYm9hcmRIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9h
cmRIZWxwZXIuY3BwCmluZGV4IDU1NzM0MTYuLjg5YjlmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKQEAgLTMyLDcgKzMyLDYgQEAK
ICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5o
IgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0yNTksMTggKzI1OCwxMyBAQCB2b2lkIFBhc3RlYm9hcmRIZWxwZXI6OmZpbGxEYXRh
T2JqZWN0RnJvbURyb3BEYXRhKEd0a1NlbGVjdGlvbkRhdGEqIGRhdGEsIGd1aW50CiAgICAgfSBl
bHNlIGlmICh0YXJnZXQgPT0gdW5rbm93bkF0b20pIHsKICAgICAgICAgR1JlZlB0cjxHVmFyaWFu
dD4gdmFyaWFudCA9IGdfdmFyaWFudF9uZXdfcGFyc2VkKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YShkYXRhKSkpOwogCi0gICAgICAgIEdP
d25QdHI8Z2NoYXI+IGtleTsKLSAgICAgICAgR093blB0cjxnY2hhcj4gdmFsdWU7CisgICAgICAg
IEdVbmlxdWVPdXRQdHI8Z2NoYXI+IGtleTsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4g
dmFsdWU7CiAgICAgICAgIEdWYXJpYW50SXRlciBpdGVyOwogCiAgICAgICAgIGdfdmFyaWFudF9p
dGVyX2luaXQoJml0ZXIsIHZhcmlhbnQuZ2V0KCkpOwotICAgICAgICB3aGlsZSAoZ192YXJpYW50
X2l0ZXJfbmV4dCgmaXRlciwgIntzc30iLCAma2V5Lm91dFB0cigpLCAmdmFsdWUub3V0UHRyKCkp
KSB7CisgICAgICAgIHdoaWxlIChnX3ZhcmlhbnRfaXRlcl9uZXh0KCZpdGVyLCAie3NzfSIsICZr
ZXkub3V0UHRyKCksICZ2YWx1ZS5vdXRQdHIoKSkpCiAgICAgICAgICAgICBkYXRhT2JqZWN0LT5z
ZXRVbmtub3duVHlwZURhdGEoa2V5LmdldCgpLCB2YWx1ZS5nZXQoKSk7Ci0KLSAgICAgICAgICAg
IC8vIEZJWE1FOiBzaG91bGQgR093blB0ciBiZSBzbWFydGVyIGFib3V0IHRoaXMgYW5kIHJlcGxh
Y2UgdGhlIGV4aXN0aW5nIHB0ciB3aGVuIG91dFB0cigpIGlzIHVzZWQ/Ci0gICAgICAgICAgICBr
ZXkuY2xlYXIoKTsKLSAgICAgICAgICAgIHZhbHVlLmNsZWFyKCk7Ci0gICAgICAgIH0KICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3Bw
CmluZGV4IDYyOWU4ZDYuLjU1YzQzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkZpbGVM
aXN0LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlv
bi5oIgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlICJHcmFkaWVu
dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkd0a1ZlcnNpb25p
bmcuaCIKQEAgLTQ4LDYgKzQ3LDcgQEAKICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAjaW5jbHVkZSA8
Z2xpYi5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5p
cXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5BQkxFKFBS
T0dSRVNTX0VMRU1FTlQpCkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUd0azo6
c3lzdGVtRm9udChDU1NWYWx1ZUlELCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikg
Y28KICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhpcyB3aWxsIGJlIGEgZm9udCBzZWxlY3Rp
b24gc3RyaW5nIGxpa2UgIlNhbnMgMTAiIHNvIHdlIGNhbm5vdCB1c2UgaXQgYXMgdGhlIGZhbWls
eSBuYW1lLgotICAgIEdPd25QdHI8Z2NoYXI+IGZvbnROYW1lOworICAgIEdVbmlxdWVPdXRQdHI8
Z2NoYXI+IGZvbnROYW1lOwogICAgIGdfb2JqZWN0X2dldChzZXR0aW5ncywgImd0ay1mb250LW5h
bWUiLCAmZm9udE5hbWUub3V0UHRyKCksIE5VTEwpOwogCiAgICAgUGFuZ29Gb250RGVzY3JpcHRp
b24qIHBhbmdvRGVzY3JpcHRpb24gPSBwYW5nb19mb250X2Rlc2NyaXB0aW9uX2Zyb21fc3RyaW5n
KGZvbnROYW1lLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9TaGFyZWRCdWZmZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJl
ZEJ1ZmZlckd0ay5jcHAKaW5kZXggYzdiNGYyNy4uZWQ4ZGU0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAKQEAgLTIwLDcgKzIwLDcgQEAK
ICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLSNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1Vu
aXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2luY2x1ZGUgPGds
aWIuaD4KQEAgLTM0LDkgKzM0LDkgQEAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmkKICAgICAgICAg
cmV0dXJuIDA7CiAKICAgICBDU3RyaW5nIGZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGZpbGVQYXRoKTsKLSAgICBHT3duUHRyPGdjaGFyPiBjb250ZW50czsKKyAgICBHVW5pcXVl
T3V0UHRyPGdjaGFyPiBjb250ZW50czsKICAgICBnc2l6ZSBzaXplOwotICAgIEdPd25QdHI8R0Vy
cm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFn
X2ZpbGVfZ2V0X2NvbnRlbnRzKGZpbGVuYW1lLmRhdGEoKSwgJmNvbnRlbnRzLm91dFB0cigpLCAm
c2l6ZSwgJmVycm9yLm91dFB0cigpKSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBm
dWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMgLSAlcyIsIGZpbGVuYW1lRm9yRGlzcGxheShm
aWxlUGF0aCkudXRmOCgpLmRhdGEoKSwgZXJyb3ItPm1lc3NhZ2UpOwogICAgICAgICByZXR1cm4g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvZ3RrL0NyZWRl
bnRpYWxCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9n
dGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMTQxMjAwMi4uMDg2ZGJjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJh
Y2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ndGsv
Q3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlIDxn
bGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPGxpYnNlY3JldC9zZWNyZXQuaD4KICNpbmNsdWRl
IDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KICNlbmRpZgpAQCAtNzcsNyArNzYsNyBAQCBzdGF0aWMgdm9pZCBjcmVkZW50aWFsRm9y
Q2hhbGxlbmdlQXN5bmNSZWFkeUNhbGxiYWNrKFNlY3JldFNlcnZpY2UqIHNlcnZpY2UsIEdBcwog
ICAgIHZvaWQqIGRhdGEgPSBjYWxsYmFja0RhdGEtPmRhdGE7CiAgICAgZGVsZXRlIGNhbGxiYWNr
RGF0YTsKIAotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdF
cnJvcj4gZXJyb3I7CiAgICAgR1VuaXF1ZVB0cjxHTGlzdD4gZWxlbWVudHMoc2VjcmV0X3NlcnZp
Y2Vfc2VhcmNoX2ZpbmlzaChzZXJ2aWNlLCBhc3luY1Jlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7
CiAgICAgaWYgKGVycm9yIHx8ICFlbGVtZW50cyB8fCAhZWxlbWVudHMtPmRhdGEpIHsKICAgICAg
ICAgY2FsbGJhY2soQ3JlZGVudGlhbCgpLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5YmI0NGIzLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSAr
MCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCi0gKgotICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAw
MjExMC0xMzAxICBVU0EKLSAqLwotCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJH
T3duUHRyU291cC5oIgotCi0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0KLW5hbWVzcGFjZSBX
VEYgewotCi10ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8U291cFVSST4oU291cFVSSSog
cHRyKQotewotICAgIGlmIChwdHIpCi0gICAgICAgIHNvdXBfdXJpX2ZyZWUocHRyKTsKLX0KLQot
dGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPFNvdXBDb29raWU+KFNvdXBDb29raWUqIHB0
cikKLXsKLSAgICBpZiAocHRyKQotICAgICAgICBzb3VwX2Nvb2tpZV9mcmVlKHB0cik7Ci19Ci0K
LXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxTb3VwTWVzc2FnZUhlYWRlcnM+KFNvdXBN
ZXNzYWdlSGVhZGVycyogcHRyKQotewotICAgIGlmIChwdHIpCi0gICAgICAgIHNvdXBfbWVzc2Fn
ZV9oZWFkZXJzX2ZyZWUocHRyKTsKLX0KLQotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRy
PFNvdXBCdWZmZXI+KFNvdXBCdWZmZXIqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAgICAgICBz
b3VwX2J1ZmZlcl9mcmVlKHB0cik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25QdHJTb3VwLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUyNTNiZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuaAorKysgL2Rldi9udWxsCkBA
IC0xLDM3ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKLSAq
Ci0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
LSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0gKi8KLQotI2lmbmRlZiBHT3duUHRyU291cF9oCi0jZGVmaW5lIEdPd25QdHJTb3VwX2gKLQot
Ly8gV2UgbmVlZCB0byBpbmNsdWRlIGxpYnNvdXAgaGVhZGVycyBoZXJlIGJlY2F1c2UgdGhlIHdh
eSB0aGF0IFNvdXBCdWZmZXIKLS8vIGlzIGRlZmluZWQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBm
b3J3YXJkIGRlY2xhcmF0aW9uLgotI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgotI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPD4g
dm9pZCBmcmVlT3duZWRHUHRyPFNvdXBVUkk+KFNvdXBVUkkqIHB0cik7Ci10ZW1wbGF0ZTw+IHZv
aWQgZnJlZU93bmVkR1B0cjxTb3VwQ29va2llPihTb3VwQ29va2llKiBwdHIpOwotdGVtcGxhdGU8
PiB2b2lkIGZyZWVPd25lZEdQdHI8U291cE1lc3NhZ2VIZWFkZXJzPihTb3VwTWVzc2FnZUhlYWRl
cnMqKTsKLXRlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPFNvdXBCdWZmZXI+KFNvdXBCdWZm
ZXIqKTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggMjlkNzc3ZS4u
ZGIwM2JhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNs
dWRlICJDb29raWVKYXJTb3VwLmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKICNp
bmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiR093blB0clNvdXAuaCIKKyNpbmNsdWRl
ICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAi
TG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKQEAgLTU1
LDcgKzU1LDYgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNTA0LDcgKzUw
Myw3IEBAIHN0YXRpYyB2b2lkIHJlZGlyZWN0U2tpcENhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNS
ZXN1bHQqIGFzeW5jUmVzdWx0LCBncG9pbnRlciBkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVy
cm9yOwogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFs
KCk7CiAgICAgZ3NzaXplIGJ5dGVzU2tpcHBlZCA9IGdfaW5wdXRfc3RyZWFtX3NraXBfZmluaXNo
KGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGFzeW5jUmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOwog
ICAgIGlmIChlcnJvcikgewpAQCAtNjEwLDcgKzYwOSw3IEBAIHN0YXRpYyB2b2lkIG5leHRNdWx0
aXBhcnRSZXNwb25zZVBhcnRDYWxsYmFjayhHT2JqZWN0KiAvKnNvdXJjZSovLCBHQXN5bmNSZXN1
bHQqCiAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwo
KTsKICAgICBBU1NFUlQoIWQtPm1faW5wdXRTdHJlYW0pOwogCi0gICAgR093blB0cjxHRXJyb3I+
IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBkLT5tX2lucHV0
U3RyZWFtID0gYWRvcHRHUmVmKHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9uZXh0X3BhcnRf
ZmluaXNoKGQtPm1fbXVsdGlwYXJ0SW5wdXRTdHJlYW0uZ2V0KCksIHJlc3VsdCwgJmVycm9yLm91
dFB0cigpKSk7CiAKICAgICBpZiAoZXJyb3IpIHsKQEAgLTY1Nyw3ICs2NTYsNyBAQCBzdGF0aWMg
dm9pZCBzZW5kUmVxdWVzdENhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwg
Z3BvaW50ZXIgZGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEdPd25QdHI8R0Vy
cm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0
cjxHSW5wdXRTdHJlYW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKHNvdXBfcmVxdWVzdF9zZW5k
X2ZpbmlzaChkLT5tX3NvdXBSZXF1ZXN0LmdldCgpLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkp
OwogICAgIGlmIChlcnJvcikgewogICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRGYWlsKGhh
bmRsZS5nZXQoKSwgUmVzb3VyY2VFcnJvcjo6aHR0cEVycm9yKHNvdXBNZXNzYWdlLCBlcnJvci5n
ZXQoKSwgZC0+bV9zb3VwUmVxdWVzdC5nZXQoKSkpOwpAQCAtNzI3LDcgKzcyNiw3IEBAIHN0YXRp
YyB2b2lkIGNvbnRpbnVlQWZ0ZXJEaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhh
bmRsZSkKIAogc3RhdGljIGJvb2wgYWRkRmlsZVRvU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdl
KiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lU3RyaW5nLCBzaXplX3Qgb2Zmc2V0LCBz
aXplX3QgbGVuZ3RoVG9TZW5kLCB1bnNpZ25lZCBsb25nJiB0b3RhbEJvZHlTaXplKQogewotICAg
IEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7
CiAgICAgQ1N0cmluZyBmaWxlTmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlTmFt
ZVN0cmluZyk7CiAgICAgR01hcHBlZEZpbGUqIGZpbGVNYXBwaW5nID0gZ19tYXBwZWRfZmlsZV9u
ZXcoZmlsZU5hbWUuZGF0YSgpLCBmYWxzZSwgJmVycm9yLm91dFB0cigpKTsKICAgICBpZiAoZXJy
b3IpCkBAIC05NzgsMTIgKzk3NywxMSBAQCBzdGF0aWMgYm9vbCBjcmVhdGVTb3VwUmVxdWVzdEFu
ZE1lc3NhZ2VGb3JIYW5kbGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUgogewogICAg
IFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7CiAKLSAg
ICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0KICAgICBHVW5pcXVlUHRyPFNvdXBVUkk+IHNvdXBV
UkkgPSByZXF1ZXN0LmNyZWF0ZVNvdXBVUkkoKTsKICAgICBpZiAoIXNvdXBVUkkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAorICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBk
LT5tX3NvdXBSZXF1ZXN0ID0gYWRvcHRHUmVmKHNvdXBfc2Vzc2lvbl9yZXF1ZXN0X3VyaShkLT5z
b3VwU2Vzc2lvbigpLCBzb3VwVVJJLmdldCgpLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAo
ZXJyb3IpIHsKICAgICAgICAgZC0+bV9zb3VwUmVxdWVzdC5jbGVhcigpOwpAQCAtMTMwMSw3ICsx
Mjk5LDcgQEAgc3RhdGljIHZvaWQgcmVhZENhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQq
IGFzeW5jUmVzdWx0LCBncG9pbnRlciBkYXRhKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJv
cjsKICAgICBnc3NpemUgYnl0ZXNSZWFkID0gZ19pbnB1dF9zdHJlYW1fcmVhZF9maW5pc2goZC0+
bV9pbnB1dFN0cmVhbS5nZXQoKSwgYXN5bmNSZXN1bHQsICZlcnJvci5vdXRQdHIoKSk7CiAKICAg
ICBpZiAoZXJyb3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcAppbmRleCA1NTA4ZjM2
Li5jMDJiNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNvdXAuY3BwCkBAIC00Miw3ICs0Miw3
IEBACiAjaW5jbHVkZSA8Z2xpYi5oPgogCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVl
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjZGVmaW5lIFJFQURfQlVG
RkVSX1NJWkUgMTAyNApAQCAtMTY4LDcgKzE2OCw3IEBAIGludCBTb2NrZXRTdHJlYW1IYW5kbGU6
OnBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogICAgIGlmICghbV9v
dXRwdXRTdHJlYW0gfHwgIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgR093blB0cjxH
RXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBnc3Np
emUgd3JpdHRlbiA9IGdfcG9sbGFibGVfb3V0cHV0X3N0cmVhbV93cml0ZV9ub25ibG9ja2luZyht
X291dHB1dFN0cmVhbS5nZXQoKSwgZGF0YSwgbGVuZ3RoLCAwLCAmZXJyb3Iub3V0UHRyKCkpOwog
ICAgIGlmIChlcnJvcikgewogICAgICAgICBpZiAoZ19lcnJvcl9tYXRjaGVzKGVycm9yLmdldCgp
LCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX1dPVUxEX0JMT0NLKSkKQEAgLTE5NCw3ICsxOTQsNyBA
QCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1DbG9zZSgpCiAgICAgc3RvcFdhaXRp
bmdGb3JTb2NrZXRXcml0YWJpbGl0eSgpOwogCiAgICAgaWYgKG1fc29ja2V0Q29ubmVjdGlvbikg
ewotICAgICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8
R0Vycm9yPiBlcnJvcjsKICAgICAgICAgZ19pb19zdHJlYW1fY2xvc2UoR19JT19TVFJFQU0obV9z
b2NrZXRDb25uZWN0aW9uLmdldCgpKSwgMCwgJmVycm9yLm91dFB0cigpKTsKICAgICAgICAgaWYg
KGVycm9yKQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZEZhaWxTb2NrZXRTdHJlYW0odGhpcywg
U29ja2V0U3RyZWFtRXJyb3IoZXJyb3ItPmNvZGUsIGVycm9yLT5tZXNzYWdlKSk7CkBAIC0yNTEs
NyArMjUxLDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnN0b3BXYWl0aW5nRm9yU29ja2V0
V3JpdGFiaWxpdHkoKQogc3RhdGljIHZvaWQgY29ubmVjdGVkQ2FsbGJhY2soR1NvY2tldENsaWVu
dCogY2xpZW50LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogaWQpCiB7CiAgICAgLy8gQWx3
YXlzIGZpbmlzaCB0aGUgY29ubmVjdGlvbiwgZXZlbiBpZiB0aGlzIFNvY2tldFN0cmVhbUhhbmRs
ZSB3YXMgZGVhY3RpdmF0ZWQgZWFybGllci4KLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Cisg
ICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIEdTb2NrZXRDb25uZWN0aW9uKiBz
b2NrZXRDb25uZWN0aW9uID0gZ19zb2NrZXRfY2xpZW50X2Nvbm5lY3RfdG9faG9zdF9maW5pc2go
Y2xpZW50LCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSk7CiAKICAgICAvLyBUaGUgU29ja2V0U3Ry
ZWFtSGFuZGxlIGhhcyBiZWVuIGRlYWN0aXZhdGVkLCBzbyBqdXN0IGNsb3NlIHRoZSBjb25uZWN0
aW9uLCBpZ25vcmluZyBlcnJvcnMuCkBAIC0yNjgsNyArMjY4LDcgQEAgc3RhdGljIHZvaWQgY29u
bmVjdGVkQ2FsbGJhY2soR1NvY2tldENsaWVudCogY2xpZW50LCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgdm9pZCoKIHN0YXRpYyB2b2lkIHJlYWRSZWFkeUNhbGxiYWNrKEdJbnB1dFN0cmVhbSogc3Ry
ZWFtLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogaWQpCiB7CiAgICAgLy8gQWx3YXlzIGZp
bmlzaCB0aGUgcmVhZCwgZXZlbiBpZiB0aGlzIFNvY2tldFN0cmVhbUhhbmRsZSB3YXMgZGVhY3Rp
dmF0ZWQgZWFybGllci4KLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGdzc2l6ZSBieXRlc1JlYWQgPSBnX2lucHV0X3N0cmVh
bV9yZWFkX2ZpbmlzaChzdHJlYW0sIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKTsKIAogICAgIFNv
Y2tldFN0cmVhbUhhbmRsZSogaGFuZGxlID0gZ2V0SGFuZGxlRnJvbUlkKGlkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Np
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3Jr
U2Vzc2lvbi5jcHAKaW5kZXggYzgyN2I0Ni4uMTM5M2RlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5j
cHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmgiCiAjaW5jbHVkZSAiQ29va2llSmFyU291cC5oIgotI2luY2x1ZGUgIkdPd25QdHJTb3VwLmgi
CisjaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KQEAgLTIx
MCw3ICsyMTAsNyBAQCBjaGFyKiBTb3VwTmV0d29ya1Nlc3Npb246Omh0dHBQcm94eSgpIGNvbnN0
CiAgICAgaWYgKCFzb3VwUmVzb2x2ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
R093blB0cjxTb3VwVVJJPiB1cmk7CisgICAgR1VuaXF1ZU91dFB0cjxTb3VwVVJJPiB1cmk7CiAg
ICAgZ19vYmplY3RfZ2V0KHNvdXBSZXNvbHZlciwgU09VUF9QUk9YWV9SRVNPTFZFUl9XS19QUk9Y
WV9VUkksICZ1cmkub3V0UHRyKCksIG51bGxwdHIpOwogCiAgICAgcmV0dXJuIHVyaSA/IHNvdXBf
dXJpX3RvX3N0cmluZyh1cmkuZ2V0KCksIEZBTFNFKSA6IG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggNDVjNmZlOC4uODViMDU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBA
CisyMDE0LTAxLTI0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
KworICAgICAgICBbR0xJQl0gQWRkIEdVbmlxdWVPdXRQdHIgYW5kIHVzZSBpdCBpbnN0ZWFkIG9m
IEdPd25QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNzU1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBHVW5pcXVlT3V0UHRyIGluc3RlYWQgb2YgR093blB0ci4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWQpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1RleHRDaGVja2VyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
ZG93bmxvYWQuY3BwOgorICAgICAgICAod2Via2l0X2Rvd25sb2FkX29wZW5fc3RyZWFtX2Zvcl91
cmkpOgorICAgICAgICAod2Via2l0X2Rvd25sb2FkX3NldF9kZXN0aW5hdGlvbl91cmkpOgorICAg
ICAgICAod2Via2l0X2Rvd25sb2FkX3JlY2VpdmVkX2RhdGEpOgorICAgICAgICAqIHdlYmtpdC93
ZWJraXR3ZWJwbHVnaW4uY3BwOgorICAgICAgICAod2Via2l0X3dlYl9wbHVnaW5fZ2V0X3BhdGgp
OgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19leHBvc2VfZXZlbnQpOgorCiAyMDE0LTAyLTA5ICBDYXJsb3MgR2FybmFjaG8gIDxj
YXJsb3NnQGdub21lLm9yZz4KIAogICAgICAgICBbR1RLXSBBbGxvdyBidWlsZGluZyB3aXRoIHRv
dWNoIGV2ZW50cyBlbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKaW5kZXggMjE5NWE4OC4uYjI0ZTA4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcApAQCAtOTUsNyArOTUsNiBAQAogI2luY2x1ZGUgPGdsaWIu
aD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5j
bHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgpAQCAtMTA0MCw3ICsxMDM5LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAg
ICBpZiAoIWVycm9yRmlsZSkKICAgICAgICAgY29udGVudCA9IG1ha2VTdHJpbmcoIjxodG1sPjxi
b2R5PiIsIHdlYkVycm9yLT5tZXNzYWdlLCAiPC9ib2R5PjwvaHRtbD4iKTsKICAgICBlbHNlIHsK
LSAgICAgICAgR093blB0cjxnY2hhcj4gZmlsZUNvbnRlbnQ7CisgICAgICAgIEdVbmlxdWVPdXRQ
dHI8Z2NoYXI+IGZpbGVDb250ZW50OwogICAgICAgICBpZiAoIWdfZmlsZV9sb2FkX2NvbnRlbnRz
KGVycm9yRmlsZS5nZXQoKSwgMCwgJmZpbGVDb250ZW50Lm91dFB0cigpLCAwLCAwLCAwKSkKICAg
ICAgICAgICAgIGNvbnRlbnQgPSBtYWtlU3RyaW5nKCI8aHRtbD48Ym9keT4iLCB3ZWJFcnJvci0+
bWVzc2FnZSwgIjwvYm9keT48L2h0bWw+Iik7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50R3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50R3RrLmNw
cAppbmRleCBiYzJhZThhLi40OTZkMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRHdGsuY3BwCkBAIC0yOCw3ICsy
OCw2IEBACiAjaW5jbHVkZSAid2Via2l0c3BlbGxjaGVja2VyLmgiCiAjaW5jbHVkZSAid2Via2l0
d2Vic2V0dGluZ3Nwcml2YXRlLmgiCiAjaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdGRvd25sb2FkLmNwcAppbmRleCBhMzk5YmYwLi43ZDY0NGNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRkb3dubG9hZC5jcHAKQEAgLTM5LDggKzM5LDggQEAKICNpbmNs
dWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
VW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWZkZWYgRVJS
T1IKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2Rvd25sb2FkX29w
ZW5fc3RyZWFtX2Zvcl91cmkoV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkLCBjbwogCiAgICAgV2Vi
S2l0RG93bmxvYWRQcml2YXRlKiBwcml2ID0gZG93bmxvYWQtPnByaXY7CiAgICAgR1JlZlB0cjxH
RmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl91cmkodXJpKSk7Ci0gICAgR093
blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKIAog
ICAgIGlmIChhcHBlbmQpCiAgICAgICAgIHByaXYtPm91dHB1dFN0cmVhbSA9IGdfZmlsZV9hcHBl
bmRfdG8oZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCBOVUxMLCAmZXJyb3Iub3V0UHRy
KCkpOwpAQCAtNzA1LDcgKzcwNSw3IEBAIHZvaWQgd2Via2l0X2Rvd25sb2FkX3NldF9kZXN0aW5h
dGlvbl91cmkoV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkLCBjb25zdCBnY2hhcioKIAogICAgICAg
ICBHUmVmUHRyPEdGaWxlPiBzcmMgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfdXJpKHByaXYt
PmRlc3RpbmF0aW9uVVJJKSk7CiAgICAgICAgIEdSZWZQdHI8R0ZpbGU+IGRlc3QgPSBhZG9wdEdS
ZWYoZ19maWxlX25ld19mb3JfdXJpKGRlc3RpbmF0aW9uX3VyaSkpOwotICAgICAgICBHT3duUHRy
PEdFcnJvcj4gZXJyb3I7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKIAog
ICAgICAgICBnX2ZpbGVfbW92ZShzcmMuZ2V0KCksIGRlc3QuZ2V0KCksIEdfRklMRV9DT1BZX0JB
Q0tVUCwgMCwgMCwgMCwgJmVycm9yLm91dFB0cigpKTsKIApAQCAtODY1LDcgKzg2NSw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF9kb3dubG9hZF9yZWNlaXZlZF9kYXRhKFdlYktpdERvd25sb2FkKiBk
b3dubG9hZCwgY29uc3QgZ2NoYXIqCiAgICAgQVNTRVJUKHByaXYtPm91dHB1dFN0cmVhbSk7CiAK
ICAgICBnc2l6ZSBieXRlc193cml0dGVuOwotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAg
ICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAKICAgICBnX291dHB1dF9zdHJlYW1fd3Jp
dGVfYWxsKEdfT1VUUFVUX1NUUkVBTShwcml2LT5vdXRwdXRTdHJlYW0pLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNfd3JpdHRlbiwgTlVMTCwgJmVy
cm9yLm91dFB0cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJwbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBsdWdp
bi5jcHAKaW5kZXggY2VjNjE0Zi4uYzcxNjJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnBsdWdpbi5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJ3ZWJr
aXRnbG9iYWxzcHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnBsdWdpbnByaXZhdGUuaCIK
ICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIC8qKgogICogU0VD
VElPTjp3ZWJraXR3ZWJwbHVnaW4KQEAgLTE5Miw3ICsxOTIsNyBAQCBjb25zdCBjaGFyKiB3ZWJr
aXRfd2ViX3BsdWdpbl9nZXRfcGF0aChXZWJLaXRXZWJQbHVnaW4qIHBsdWdpbikKICAgICBpZiAo
cHJpdi0+cGF0aCkKICAgICAgICAgcmV0dXJuIHByaXYtPnBhdGguZ2V0KCk7CiAKLSAgICBHT3du
UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAg
IHByaXYtPnBhdGgucmVzZXQoZ19maWxlbmFtZV9mcm9tX3V0ZjgocHJpdi0+Y29yZVBsdWdpbi0+
cGF0aCgpLnV0ZjgoKS5kYXRhKCksIC0xLCAwLCAwLCAmZXJyb3Iub3V0UHRyKCkpKTsKIAogICAg
IGlmICghZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAK
aW5kZXggMDc5NzEzMS4uZGU0NmEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcApAQCAtMTE5LDcgKzExOSw2IEBACiAjaW5jbHVkZSA8YmluZGluZ3MvU2Ny
aXB0VmFsdWUuaD4KICNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgogI2luY2x1ZGUgPGdsaWIv
Z2kxOG4tbGliLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCkBA
IC02NzAsNyArNjY5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9wcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEcKIHN0YXRpYyBnYm9vbGVh
biB3ZWJraXRfd2ViX3ZpZXdfZXhwb3NlX2V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVu
dEV4cG9zZSogZXZlbnQpCiB7CiAgICAgaW50IHJlY3RDb3VudDsKLSAgICBHT3duUHRyPEdka1Jl
Y3RhbmdsZT4gcmVjdHM7CisgICAgR1VuaXF1ZU91dFB0cjxHZGtSZWN0YW5nbGU+IHJlY3RzOwog
ICAgIGdka19yZWdpb25fZ2V0X3JlY3RhbmdsZXMoZXZlbnQtPnJlZ2lvbiwgJnJlY3RzLm91dFB0
cigpLCAmcmVjdENvdW50KTsKIAogICAgIFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGdk
a19jYWlyb19jcmVhdGUoZXZlbnQtPndpbmRvdykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGM0NzBhNDMuLjVm
ODM4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxNC0wMS0yNCAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dMSUJdIEFkZCBH
VW5pcXVlT3V0UHRyIGFuZCB1c2UgaXQgaW5zdGVhZCBvZiBHT3duUHRyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc1NTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgR1VuaXF1ZU91dFB0ciBpbnN0
ZWFkIG9mIEdPd25QdHIuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQ
cm9jZXNzU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdldENhY2hlRGlza0ZyZWVTaXplKToK
KyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAocHJvY2Vzc1Bl
bmRpbmdJY29uc0ZvclBhZ2VVUkwpOgorICAgICAgICAod2Via2l0X2Zhdmljb25fZGF0YWJhc2Vf
Z2V0X2Zhdmljb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVt
ZVJlcXVlc3QuY3BwOgorICAgICAgICAod2Via2l0VVJJU2NoZW1lUmVxdWVzdFJlYWRDYWxsYmFj
ayk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAg
ICAgIChnb3RGYXZpY29uQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JT
ZXJ2ZXIvZ3RrL1dlYkluc3BlY3RvclNlcnZlckd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclNlcnZlcjo6cGxhdGZvcm1SZXNvdXJjZUZvclBhdGgpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdldENhY2hl
RGlza0ZyZWVTaXplKToKKwogMjAxNC0wMi0wOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIEFQSSB0byBjcmVhdGUgYSB3ZWJ2
aWV3IHJlbGF0ZWQgdG8gYW5vdGhlciBvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCA1NWMxNGZh
Li42MjA3ZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0zNyw4ICszNyw4IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU291cE5ldHdv
cmtTZXNzaW9uLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL2dv
YmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyB1aW50NjRfdCBnZXRDYWNoZURpc2tGcmVlU2l6
ZShTb3VwQ2FjaGUqIGNhY2hlKQogewogICAgIEFTU0VSVChjYWNoZSk7CiAKLSAgICBHT3duUHRy
PGNoYXI+IGNhY2hlRGlyOworICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gY2FjaGVEaXI7CiAgICAg
Z19vYmplY3RfZ2V0KEdfT0JKRUNUKGNhY2hlKSwgImNhY2hlLWRpciIsICZjYWNoZURpci5vdXRQ
dHIoKSwgTlVMTCk7CiAgICAgaWYgKCFjYWNoZURpcikKICAgICAgICAgcmV0dXJuIDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3Vw
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAu
Y3BwCmluZGV4IDM0ZjNkNWYuLjQwN2U0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCkBAIC0zMiw3ICszMiw2IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oPgogI2luY2x1ZGUgPGdpby9naW8uaD4KLSNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CkBAIC0xMDYsNyArMTA1LDcgQEAgcHVibGljOgogCiAgICAgICAgIFN0cmlu
ZyBpbnRlcm1lZGlhdGVVUkkgPSBtX2Rlc3RpbmF0aW9uVVJJICsgIi53a2Rvd25sb2FkIjsKICAg
ICAgICAgbV9pbnRlcm1lZGlhdGVGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3VyaShp
bnRlcm1lZGlhdGVVUkkudXRmOCgpLmRhdGEoKSkpOwotICAgICAgICBHT3duUHRyPEdFcnJvcj4g
ZXJyb3I7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgbV9v
dXRwdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19maWxlX3JlcGxhY2UobV9pbnRlcm1lZGlhdGVGaWxl
LmdldCgpLCAwLCBUUlVFLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAsICZlcnJvci5vdXRQdHIoKSkp
OwogICAgICAgICBpZiAoIW1fb3V0cHV0U3RyZWFtKSB7CiAgICAgICAgICAgICBkb3dubG9hZEZh
aWxlZChwbGF0Zm9ybURvd25sb2FkRGVzdGluYXRpb25FcnJvcihyZXNwb25zZSwgZXJyb3ItPm1l
c3NhZ2UpKTsKQEAgLTEyNCw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAg
ICBnc2l6ZSBieXRlc1dyaXR0ZW47Ci0gICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAg
ICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICBnX291dHB1dF9zdHJl
YW1fd3JpdGVfYWxsKEdfT1VUUFVUX1NUUkVBTShtX291dHB1dFN0cmVhbS5nZXQoKSksIGRhdGEs
IGxlbmd0aCwgJmJ5dGVzV3JpdHRlbiwgMCwgJmVycm9yLm91dFB0cigpKTsKICAgICAgICAgaWYg
KGVycm9yKSB7CiAgICAgICAgICAgICBkb3dubG9hZEZhaWxlZChwbGF0Zm9ybURvd25sb2FkRGVz
dGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBlcnJvci0+bWVzc2FnZSkpOwpAQCAtMTM5LDcgKzEz
OCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBBU1NFUlQobV9pbnRlcm1lZGlhdGVGaWxlKTsKICAg
ICAgICAgR1JlZlB0cjxHRmlsZT4gZGVzdGluYXRpb25GaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9u
ZXdfZm9yX3VyaShtX2Rlc3RpbmF0aW9uVVJJLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICAgICAgR093
blB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7
CiAgICAgICAgIGlmICghZ19maWxlX21vdmUobV9pbnRlcm1lZGlhdGVGaWxlLmdldCgpLCBkZXN0
aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DT1BZX05PTkUsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsICZlcnJvci5vdXRQdHIoKSkpIHsKICAgICAgICAgICAgIGRvd25sb2FkRmFpbGVkKHBs
YXRmb3JtRG93bmxvYWREZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIGVycm9yLT5tZXNzYWdl
KSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAppbmRleCBjMDJhODM0
Li4wZWRhMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKQEAgLTI5LDggKzI5LDggQEAKICNpbmNs
dWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4K
ICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKQEAgLTE2NCwxMyArMTY0LDEzIEBAIHN0YXRpYyB2b2lkIHByb2Nl
c3NQZW5kaW5nSWNvbnNGb3JQYWdlVVJMKFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2Us
IGNvbnN0CiAgICAgaWYgKCFwZW5kaW5nSWNvblJlcXVlc3RzKQogICAgICAgICByZXR1cm47CiAK
LSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVy
cm9yOwogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGljb24gPSBnZXRJY29uU3VyZmFjZVN5
bmNocm9ub3VzbHkoZGF0YWJhc2UsIHBhZ2VVUkwsICZlcnJvci5vdXRQdHIoKSk7CiAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHBlbmRpbmdJY29uUmVxdWVzdHMtPnNpemUoKTsgKytpKSB7
CiAgICAgICAgIEdUYXNrKiB0YXNrID0gcGVuZGluZ0ljb25SZXF1ZXN0cy0+YXQoaSkuZ2V0KCk7
CiAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgIGdfdGFza19yZXR1cm5fZXJyb3IodGFz
aywgZXJyb3IucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIGdfdGFza19yZXR1cm5fZXJyb3IodGFz
aywgZXJyb3IucmVsZWFzZSgpLnJlbGVhc2UoKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgR2V0RmF2aWNvblN1cmZhY2VBc3luY0RhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxHZXRGYXZp
Y29uU3VyZmFjZUFzeW5jRGF0YSo+KGdfdGFza19nZXRfdGFza19kYXRhKHRhc2spKTsKICAgICAg
ICAgICAgIGRhdGEtPmljb24gPSBpY29uOwpAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgd2Via2l0
X2Zhdmljb25fZGF0YWJhc2VfZ2V0X2Zhdmljb24oV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRh
YmFzZSwgY29uc3QKIAogICAgIC8vIFdlIGFzayBmb3IgdGhlIGljb24gZGlyZWN0bHkuIElmIHdl
IGRvbid0IGdldCB0aGUgaWNvbiBkYXRhIG5vdywKICAgICAvLyB3ZSdsbCBiZSBub3RpZmllZCBs
YXRlciAoZXZlbiBpZiB0aGUgZGF0YWJhc2UgaXMgc3RpbGwgaW1wb3J0aW5nIGljb25zKS4KLSAg
ICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9y
OwogICAgIGRhdGEtPmljb24gPSBnZXRJY29uU3VyZmFjZVN5bmNocm9ub3VzbHkoZGF0YWJhc2Us
IGRhdGEtPnBhZ2VVUkwsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgaWYgKGRhdGEtPmljb24pIHsK
ICAgICAgICAgZ190YXNrX3JldHVybl9ib29sZWFuKHRhc2suZ2V0KCksIFRSVUUpOwpAQCAtMzAx
LDcgKzMwMSw3IEBAIHZvaWQgd2Via2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0X2Zhdmljb24oV2Vi
S2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QKICAgICBkYXRhLT5zaG91bGRSZWxl
YXNlSWNvbkZvclBhZ2VVUkwgPSB0cnVlOwogCiAgICAgaWYgKGdfZXJyb3JfbWF0Y2hlcyhlcnJv
ci5nZXQoKSwgV0VCS0lUX0ZBVklDT05fREFUQUJBU0VfRVJST1IsIFdFQktJVF9GQVZJQ09OX0RB
VEFCQVNFX0VSUk9SX0ZBVklDT05fTk9UX0ZPVU5EKSkgewotICAgICAgICBnX3Rhc2tfcmV0dXJu
X2Vycm9yKHRhc2suZ2V0KCksIGVycm9yLnJlbGVhc2UoKSk7CisgICAgICAgIGdfdGFza19yZXR1
cm5fZXJyb3IodGFzay5nZXQoKSwgZXJyb3IucmVsZWFzZSgpLnJlbGVhc2UoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKaW5kZXggZDYzMmQ0NC4uNmQ4
YzY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VVJJU2NoZW1lUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVy
cm9yLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTE1OSw3ICsxNTgsNyBAQCBXZWJLaXRXZWJWaWV3KiB3
ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF93ZWJfdmlldyhXZWJLaXRVUklTY2hlbWVSZXF1
ZXN0KiByZQogc3RhdGljIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdFJlYWRDYWxsYmFjayhH
SW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgV2ViS2l0VVJJ
U2NoZW1lUmVxdWVzdCogc2NoZW1lUmVxdWVzdCkKIHsKICAgICBHUmVmUHRyPFdlYktpdFVSSVNj
aGVtZVJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYoc2NoZW1lUmVxdWVzdCk7Ci0gICAgR093
blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAg
ICBnc3NpemUgYnl0ZXNSZWFkID0gZ19pbnB1dF9zdHJlYW1fcmVhZF9maW5pc2goaW5wdXRTdHJl
YW0sIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKTsKICAgICBpZiAoYnl0ZXNSZWFkID09IC0xKSB7
CiAgICAgICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKHJlcXVlc3Qu
Z2V0KCksIGVycm9yLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggMWI2NTIzZC4uOTk0MmFlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAg
LTY2LDcgKzY2LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0d0a1V0aWxpdGllcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgot
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC0zMzgsNyArMzM3
LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NhbmNlbEZhdmljb25SZXF1ZXN0KFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCiAKIHN0YXRpYyB2b2lkIGdvdEZhdmljb25DYWxsYmFjayhHT2Jq
ZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkKIHsK
LSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVy
cm9yOwogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGZhdmljb24gPSBhZG9wdFJlZih3ZWJr
aXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRfZmF2aWNvbl9maW5pc2goV0VCS0lUX0ZBVklDT05fREFU
QUJBU0Uob2JqZWN0KSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoZ19lcnJv
cl9tYXRjaGVzKGVycm9yLmdldCgpLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX0NBTkNFTExFRCkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9J
bnNwZWN0b3JTZXJ2ZXIvZ3RrL1dlYkluc3BlY3RvclNlcnZlckd0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2d0ay9XZWJJbnNwZWN0b3JTZXJ2ZXJHdGsu
Y3BwCmluZGV4IGIwNmZhNzMuLjNjZjA0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvZ3RrL1dlYkluc3BlY3RvclNlcnZlckd0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9ndGsvV2ViSW5zcGVj
dG9yU2VydmVyR3RrLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTUlN
RVR5cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlIDxnbGliLmg+
Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtNTUsNyArNTQsNyBAQCBib29sIFdlYkluc3Bl
Y3RvclNlcnZlcjo6cGxhdGZvcm1SZXNvdXJjZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBW
ZWN0b3I8Y2hhcgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBHUmVmUHRyPEdGaWxlPiBm
aWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3VyaShyZXNvdXJjZVVSSS5kYXRhKCkpKTsK
LSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVy
cm9yOwogICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVf
cXVlcnlfaW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX1NJWkUgIiwi
IEdfRklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfRkFTVF9DT05URU5UX1RZUEUsIEdfRklMRV9RVUVS
WV9JTkZPX05PTkUsIDAsICZlcnJvci5vdXRQdHIoKSkpOwogICAgIGlmICghZmlsZUluZm8pIHsK
ICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCmlu
ZGV4IDRmYjVjOTAuLmY2NmViZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKQEAgLTM5LDcg
KzM5LDYgQEAKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dsaWJVdGlsaXRpZXMuaD4KIApAQCAtMTIzLDcgKzEyMiw3
IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICBhcmd2W2krK10g
PSBjb25zdF9jYXN0PGNoYXIqPihyZWFsUGx1Z2luUGF0aC5kYXRhKCkpOwogICAgIGFyZ3ZbaSsr
XSA9IDA7CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxH
RXJyb3I+IGVycm9yOwogICAgIGlmICghZ19zcGF3bl9hc3luYygwLCBhcmd2LCAwLCBHX1NQQVdO
X0xFQVZFX0RFU0NSSVBUT1JTX09QRU4sIGNoaWxkU2V0dXBGdW5jdGlvbiwgR0lOVF9UT19QT0lO
VEVSKHNvY2tldHNbMV0pLCAmcGlkLCAmZXJyb3Iub3V0UHRyKCkpKSB7CiAgICAgICAgIGdfcHJp
bnRlcnIoIlVuYWJsZSB0byBmb3JrIGEgbmV3IFdlYlByb2Nlc3M6ICVzLlxuIiwgZXJyb3ItPm1l
c3NhZ2UpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQ
cm94eVVuaXguY3BwCmluZGV4IGNjMjM0MTMuLjc4MTUyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNz
UHJveHlVbml4LmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUgPGds
aWIuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR1VuaXF1ZVB0ci5oPgogI2VuZGlmCiAKICNpbmNsdWRlIDxzeXMvd2FpdC5oPgpAQCAt
NzQsNyArNzQsNyBAQCBib29sIFBsdWdpblByb2Nlc3NQcm94eTo6c2NhblBsdWdpbihjb25zdCBT
dHJpbmcmIHBsdWdpblBhdGgsIFJhd1BsdWdpbk1ldGFEYXRhJgogICAgIGFyZ3ZbM10gPSAwOwog
CiAgICAgaW50IHN0YXR1czsKLSAgICBHT3duUHRyPGNoYXI+IHN0ZE91dDsKKyAgICBHVW5pcXVl
T3V0UHRyPGNoYXI+IHN0ZE91dDsKIAogICAgIC8vIElmIHRoZSBkaXNwb3NpdGlvbiBvZiBTSUdD
TEQgc2lnbmFsIGlzIHNldCB0byBTSUdfSUdOIChkZWZhdWx0KQogICAgIC8vIHRoZW4gdGhlIHNp
Z25hbCB3aWxsIGJlIGlnbm9yZWQgYW5kIGdfc3Bhd25fc3luYygpIHdpbGwgbm90IGJlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3Bl
cmF0aW9uR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2Vi
UHJpbnRPcGVyYXRpb25HdGsuY3BwCmluZGV4IGNiNDY4ODEuLjQwNDY5ZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25H
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJp
bnRPcGVyYXRpb25HdGsuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9V
UkwuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5p
cXVlUHRyLmg+CiAKICNpZmRlZiBIQVZFX0dUS19VTklYX1BSSU5USU5HCkBAIC03OSw3ICs3OCw3
IEBAIHB1YmxpYzoKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPmpvYk5hbWUoZ19zdHJkdXBfcHJp
bnRmKCIlcyBqb2IgIyVkIiwgYXBwbGljYXRpb25OYW1lID8gYXBwbGljYXRpb25OYW1lIDogIldl
YktpdCIsICsram9iTnVtYmVyKSk7CiAgICAgICAgIG1fcHJpbnRKb2IgPSBhZG9wdEdSZWYoZ3Rr
X3ByaW50X2pvYl9uZXcoam9iTmFtZS5nZXQoKSwgcHJpbnRlciwgbV9wcmludFNldHRpbmdzLmdl
dCgpLCBtX3BhZ2VTZXR1cC5nZXQoKSkpOwogCi0gICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJv
cjsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICBjYWlyb19z
dXJmYWNlX3QqIHN1cmZhY2UgPSBndGtfcHJpbnRfam9iX2dldF9zdXJmYWNlKG1fcHJpbnRKb2Iu
Z2V0KCksICZlcnJvci5vdXRQdHIoKSk7CiAgICAgICAgIGlmICghc3VyZmFjZSkgewogICAgICAg
ICAgICAgcHJpbnREb25lKHByaW50RXJyb3IoZnJhbWVVUkwoKSwgZXJyb3ItPm1lc3NhZ2UpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3Bw
CmluZGV4IDMyYjIxNzEuLmVkYjRhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcApAQCAtNDEsOCArNDEsOCBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvdXBOZXR3b3Jr
U2Vzc2lvbi5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgotI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiAjaWYgIUVOQUJMRShDVVNUT01fUFJPVE9D
T0xTKQogI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlci5oIgpAQCAtNTQsNyArNTQsNyBA
QCBzdGF0aWMgdWludDY0X3QgZ2V0Q2FjaGVEaXNrRnJlZVNpemUoU291cENhY2hlKiBjYWNoZSkK
IHsKICAgICBBU1NFUlQoY2FjaGUpOwogCi0gICAgR093blB0cjxjaGFyPiBjYWNoZURpcjsKKyAg
ICBHVW5pcXVlT3V0UHRyPGNoYXI+IGNhY2hlRGlyOwogICAgIGdfb2JqZWN0X2dldChHX09CSkVD
VChjYWNoZSksICJjYWNoZS1kaXIiLCAmY2FjaGVEaXIub3V0UHRyKCksIE5VTEwpOwogICAgIGlm
ICghY2FjaGVEaXIpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDRkM2VlN2MuLmY5NzVlNjMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAor
MjAxNC0wMS0yNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0dMSUJdIEFkZCBHVW5pcXVlT3V0UHRyIGFuZCB1c2UgaXQgaW5zdGVhZCBvZiBH
T3duUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Mjc1NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgR1VuaXF1ZU91dFB0ciBpbnN0ZWFkIG9mIEdPd25QdHIuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2d0ay9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChjcmVhdGVLZXlQcmVzc0V2ZW50KToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9nb2JqZWN0L0dVbmlxdWVQdHIuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6cmV0dXJuT3V0Q2hhcik6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdENvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mkd0ay9UZXN0SW5zcGVjdG9yU2VydmVyLmNwcDoKKyAgICAgICAgKHRlc3RJbnNwZWN0b3JT
ZXJ2ZXJQYWdlTGlzdCk6CisgICAgICAgIChvcGVuUmVtb3RlRGVidWdnaW5nU2Vzc2lvbik6Cisg
ICAgICAgIChzZW5kSW5jb21wbGV0ZVJlcXVlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9UZXN0UmVzb3VyY2VzLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMuY3BwOgorICAgICAgICAodGVz
dFdlYkV4dGVuc2lvbldpbmRvd09iamVjdENsZWFyZWQpOgorICAgICAgICAodGVzdFdlYkV4dGVu
c2lvbklzb2xhdGVkV29ybGQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAodGVz
dFdlYlZpZXdSdW5KYXZhU2NyaXB0KToKKyAgICAgICAgKHRlc3RXZWJWaWV3U2F2ZSk6CisgICAg
ICAgICh0ZXN0V2ViVmlld1BhZ2VWaXNpYmlsaXR5KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXdHcm91cC5jcHA6CisgICAgICAgIChp
c1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJWaWV3RWRpdG9yLmNwcDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHA6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYlByb2Nlc3NUZXN0LmNwcDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2d0ay9JbnB1dE1ldGhvZEZpbHRlci5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0SW5wdXRNZXRob2RGaWx0ZXI6OnNlbmRLZXlFdmVu
dFRvRmlsdGVyKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2d0ay9QbGF0Zm9ybVdlYlZpZXdH
dGsuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZG9LZXlTdHJva2UpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvVGVzdE1haW4uaDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYktpdFRlc3RCdXMuY3BwOgorICAgICAgICAoV2Vi
S2l0VGVzdEJ1czo6cnVuKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3Rr
L1dlYlZpZXdUZXN0LmNwcDoKKyAgICAgICAgKHJlc291cmNlR2V0RGF0YUNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYlZpZXdUZXN0OjprZXlTdHJva2UpOgorICAgICAgICAob25TbmFwc2hvdFJlYWR5
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNw
cDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bik6CisKIDIwMTQtMDIt
MDkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdIEFkZCBBUEkgdG8gY3JlYXRlIGEgd2VidmlldyByZWxhdGVkIHRvIGFub3RoZXIgb25l
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBjZmE5
ZWRiLi4wNTIxNDAzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJl
bmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJl
ZS5jcHAKQEAgLTU0LDcgKzU0LDYgQEAKICNpbmNsdWRlIDxsb2NhbGUuaD4KICNpbmNsdWRlIDx3
ZWJraXQvd2Via2l0Lmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR2xpYlV0aWxpdGll
cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcAppbmRleCBjMGNiNDUyLi5iZDhlNGZiIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAKICNpbmNs
dWRlIDx3ZWJraXQvd2Via2l0d2Vidmlldy5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+
CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKQEAgLTgwNSw3ICs4MDQsNyBAQCBzdGF0aWMgR2RrRXZlbnQqIGNy
ZWF0ZUtleVByZXNzRXZlbnQoSlNDb250ZXh0UmVmIGNvbnRleHQsIHNpemVfdCBhcmd1bWVudENv
dW50LAogCiAgICAgLy8gV2hlbiBzeW50aGVzaXppbmcgYW4gZXZlbnQsIGFuIGludmFsaWQgaGFy
ZHdhcmVfa2V5Y29kZSB2YWx1ZQogICAgIC8vIGNhbiBjYXVzZSBpdCB0byBiZSBiYWRseSBwcm9j
ZXNzZWQgYnkgR3RrKy4KLSAgICBHT3duUHRyPEdka0tleW1hcEtleT4ga2V5czsKKyAgICBHVW5p
cXVlT3V0UHRyPEdka0tleW1hcEtleT4ga2V5czsKICAgICBnaW50IG5LZXlzOwogICAgIGlmIChn
ZGtfa2V5bWFwX2dldF9lbnRyaWVzX2Zvcl9rZXl2YWwoZ2RrX2tleW1hcF9nZXRfZGVmYXVsdCgp
LCBnZGtLZXlTeW0sICZrZXlzLm91dFB0cigpLCAmbktleXMpKQogICAgICAgICBwcmVzc0V2ZW50
LT5rZXkuaGFyZHdhcmVfa2V5Y29kZSA9IGtleXMuZ2V0KClbMF0ua2V5Y29kZTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2dvYmplY3QvR1VuaXF1ZVB0ci5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9nb2JqZWN0L0dVbmlxdWVQdHIuY3BwCmlu
ZGV4IDdkMjNiNTcuLjg5NDJmODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL2dvYmplY3QvR1VuaXF1ZVB0ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvZ29iamVjdC9HVW5pcXVlUHRyLmNwcApAQCAtMTQ1LDQgKzE0NSw1MSBAQCBURVNU
KFdURl9HVW5pcXVlUHRyLCBCYXNpYykKICAgICBhY3R1YWwuc3RyKCIiKTsKIH0KIAorc3RhdGlj
IHZvaWQgcmV0dXJuT3V0Q2hhcihjaGFyKiogb3V0Q2hhcikKK3sKKyAgICAqb3V0Q2hhciA9IGdf
c3RyZHVwKCJhIik7Cit9CisKK1RFU1QoV1RGX0dVbmlxdWVQdHIsIE91dFB0cikKK3sKKyAgICBz
dGQ6Om9zdHJpbmdzdHJlYW0gYWN0dWFsOworCisgICAgeworICAgICAgICBHVW5pcXVlT3V0UHRy
PGNoYXI+IGE7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBhLmdldCgpKTsKKyAgICB9Cisg
ICAgQVNTRVJUX1NUUkVRKGFjdHVhbC5zdHIoKS5jX3N0cigpLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7CisgICAgYWN0dWFsLnN0cigiIik7CisKKyAgICB7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8
Y2hhcj4gYTsKKyAgICAgICAgcmV0dXJuT3V0Q2hhcigmYS5vdXRQdHIoKSk7CisgICAgICAgIGFj
dHVhbCA8PCAiZ19mcmVlKCIgPDwgYS5nZXQoKSA8PCAiKTsiOworICAgIH0KKyAgICBBU1NFUlRf
U1RSRVEoYWN0dWFsLnN0cigpLmNfc3RyKCksIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKyAgICBh
Y3R1YWwuc3RyKCIiKTsKKworICAgIHsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBhOwor
ICAgICAgICByZXR1cm5PdXRDaGFyKCZhLm91dFB0cigpKTsKKyAgICAgICAgYWN0dWFsIDw8ICJn
X2ZyZWUoIiA8PCBhLmdldCgpIDw8ICIpOyI7CisgICAgICAgIHJldHVybk91dENoYXIoJmEub3V0
UHRyKCkpOworICAgICAgICBBU1NFUlRfU1RSRVEoYWN0dWFsLnN0cigpLmNfc3RyKCksIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKKyAgICAgICAgYWN0dWFsLnN0cigiIik7CisgICAgICAgIGFjdHVh
bCA8PCAiZ19mcmVlKCIgPDwgYS5nZXQoKSA8PCAiKTsiOworICAgIH0KKyAgICBBU1NFUlRfU1RS
RVEoYWN0dWFsLnN0cigpLmNfc3RyKCksIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKyAgICBhY3R1
YWwuc3RyKCIiKTsKKworICAgIHsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBhOworICAg
ICAgICByZXR1cm5PdXRDaGFyKCZhLm91dFB0cigpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFy
PiBiID0gYS5yZWxlYXNlKCk7CisgICAgICAgIEFTU0VSVF9TVFJFUShhY3R1YWwuc3RyKCkuY19z
dHIoKSwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworICAgICAgICBhY3R1YWwgPDwgImdfZnJlZSgi
IDw8IGIuZ2V0KCkgPDwgIik7IjsKKyAgICB9CisgICAgQVNTRVJUX1NUUkVRKGFjdHVhbC5zdHIo
KS5jX3N0cigpLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisgICAgYWN0dWFsLnN0cigiIik7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0Q29va2llTWFuYWdlci5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdENvb2tpZU1hbmFnZXIuY3BwCmluZGV4
IGJmMzUxZTEuLjJlOTg2NDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9UZXN0Q29va2llTWFuYWdlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb29raWVNYW5hZ2VyLmNwcApAQCAtODgsNyArODgsNyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBnZXRBY2NlcHRQb2xpY3lSZWFkeUNhbGxiYWNr
KEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRh
KQogICAgIHsKLSAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIFdlYktpdENvb2tpZUFjY2VwdFBvbGljeSBw
b2xpY3kgPSB3ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X2FjY2VwdF9wb2xpY3lfZmluaXNoKFdF
QktJVF9DT09LSUVfTUFOQUdFUihvYmplY3QpLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSk7CiAg
ICAgICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgdm9pZCBnZXREb21haW5zUmVhZHlDYWxsYmFjayhHT2JqZWN0KiBv
YmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkKICAgICB7Ci0g
ICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJy
b3I+IGVycm9yOwogICAgICAgICBjaGFyKiogZG9tYWlucyA9IHdlYmtpdF9jb29raWVfbWFuYWdl
cl9nZXRfZG9tYWluc193aXRoX2Nvb2tpZXNfZmluaXNoKFdFQktJVF9DT09LSUVfTUFOQUdFUihv
YmplY3QpLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgICAgIGdfYXNzZXJ0KCFlcnJv
ci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0SW5zcGVjdG9yU2VydmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9UZXN0SW5zcGVjdG9yU2VydmVyLmNwcAppbmRleCBhNjg3ODI2Li4yNTIxZDJl
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdElu
c3BlY3RvclNlcnZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1Rlc3RJbnNwZWN0b3JTZXJ2ZXIuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgcHVibGljOgog
Ly8gU2hvdWxkIGNvbnRhaW4gb25seSBvbmUgZW50cnkgcG9pbnRpbmcgdG8gaHR0cDovLzEyNy4w
LjAuMToyOTk5L3dlYmluc3BlY3Rvci9NYWluLmh0bWw/cGFnZT0xCiBzdGF0aWMgdm9pZCB0ZXN0
SW5zcGVjdG9yU2VydmVyUGFnZUxpc3QoSW5zcGVjdG9yU2VydmVyVGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKIHsKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0
cjxHRXJyb3I+IGVycm9yOwogCiAgICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFw
cGVkKEdUS19XSU5ET1dfVE9QTEVWRUwpOwogICAgIGdfYXNzZXJ0KHRlc3QtPmdldFBhZ2VMaXN0
KCkpOwpAQCAtMjI4LDcgKzIyOCw3IEBAIHN0YXRpYyB2b2lkIG9wZW5SZW1vdGVEZWJ1Z2dpbmdT
ZXNzaW9uKEluc3BlY3RvclNlcnZlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICBn
X2Fzc2VydCh0ZXN0LT5nZXRQYWdlTGlzdCgpKTsKIAotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJv
cjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgV2ViS2l0SmF2YXNjcmlw
dFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50
aWxGaW5pc2hlZCgicGFnZXNbMF0uaW5zcGVjdG9yVXJsOyIsICZlcnJvci5vdXRQdHIoKSk7CiAg
ICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgp
KTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBzdGF0aWMgdm9pZCBvcGVuUmVtb3RlRGVidWdnaW5nU2Vz
c2lvbihJbnNwZWN0b3JTZXJ2ZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogCiBzdGF0aWMg
dm9pZCBzZW5kSW5jb21wbGV0ZVJlcXVlc3QoSW5zcGVjdG9yU2VydmVyVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKIHsKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOwogCiAgICAgLy8gQ29ubmVjdCB0byB0aGUgaW5zcGVjdG9yIHNl
cnZlci4KICAgICBHUmVmUHRyPEdTb2NrZXRDbGllbnQ+IGNsaWVudCA9IGFkb3B0R1JlZihnX3Nv
Y2tldF9jbGllbnRfbmV3KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1Rlc3RSZXNvdXJjZXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1Rlc3RSZXNvdXJjZXMuY3BwCmluZGV4IDNhNDU5YTAuLmEyZWU5NzcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0UmVzb3Vy
Y2VzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFJl
c291cmNlcy5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
cmVzb3VyY2VHZXREYXRhQ2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJl
c3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpCiAgICAgewogICAgICAgICBzaXplX3QgZGF0YVNpemU7
Ci0gICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxH
RXJyb3I+IGVycm9yOwogICAgICAgICB1bnNpZ25lZCBjaGFyKiBkYXRhID0gd2Via2l0X3dlYl9y
ZXNvdXJjZV9nZXRfZGF0YV9maW5pc2goV0VCS0lUX1dFQl9SRVNPVVJDRShvYmplY3QpLCByZXN1
bHQsICZkYXRhU2l6ZSwgJmVycm9yLm91dFB0cigpKTsKICAgICAgICAgZ19hc3NlcnQoIWVycm9y
LmdldCgpKTsKICAgICAgICAgZ19hc3NlcnQoZGF0YSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJFeHRlbnNpb25zLmNwcAppbmRl
eCA5YTEwZTM3Li45ZmJlYWYxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKQEAgLTEwNiw3ICsxMDYs
NyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uV2luZG93T2JqZWN0Q2xlYXJlZChXZWJW
aWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcgogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48
aGVhZGVyPjwvaGVhZGVyPjxib2R5PjwvYm9keT48L2h0bWw+IiwgMCk7CiAgICAgdGVzdC0+d2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAg
R1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQq
IGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNo
ZWQoIndpbmRvdy5lY2hvKCdGb28nKTsiLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0
KGphdmFzY3JpcHRSZXN1bHQpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CkBAIC0xMzMs
NyArMTMzLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkV4dGVuc2lvbklzb2xhdGVkV29ybGQoV2Vi
Vmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1s
PjxoZWFkZXI+PC9oZWFkZXI+PGJvZHk+PGRpdiBpZD0nY29uc29sZSc+PC9kaXY+PC9ib2R5Pjwv
aHRtbD4iLCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAotICAgIEdP
d25QdHI8Y2hhcj4gcmVzdWx0OworICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gcmVzdWx0OwogICAg
IGd1bG9uZyBzY3JpcHREaWFsb2dJRCA9IGdfc2lnbmFsX2Nvbm5lY3QodGVzdC0+bV93ZWJWaWV3
LCAic2NyaXB0LWRpYWxvZyIsIEdfQ0FMTEJBQ0soc2NyaXB0RGlhbG9nQ2FsbGJhY2spLCAmcmVz
dWx0Lm91dFB0cigpKTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBtYWluV29ybGRTY3JpcHQg
PQpAQCAtMTQzLDcgKzE0Myw2IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJFeHRlbnNpb25Jc29sYXRl
ZFdvcmxkKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgICAgICAiZG9jdW1l
bnQub3BlbigxLCAyLCAzKTsiOwogICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxG
aW5pc2hlZChtYWluV29ybGRTY3JpcHQsIDApOwogICAgIGdfYXNzZXJ0X2NtcHN0cihyZXN1bHQu
Z2V0KCksID09LCAiTWFpbiBXb3JsZCIpOwotICAgIHJlc3VsdC5jbGVhcigpOwogCiAgICAgV2Vi
S2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3Jp
cHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUn
KS5pbm5lckhUTUwiLCAwKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKQEAgLTE2
NSw3ICsxNjQsNiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uSXNvbGF0ZWRXb3JsZChX
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICAgICAgdGVzdCk7CiAgICAgZ19t
YWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOwogICAgIGdfYXNzZXJ0X2NtcHN0cihyZXN1
bHQuZ2V0KCksID09LCAiSXNvbGF0ZWQgV29ybGQiKTsKLSAgICByZXN1bHQuY2xlYXIoKTsKIAog
ICAgIC8vIENoZWNrIHRoYXQgJ3RvcC5mb28nIGRlZmluZWQgaW4gbWFpbiB3b3JsZCBpcyBub3Qg
dmlzaWJsZSBpbiBpc29sYXRlZCB3b3JsZC4KICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+
cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY29uc29sZScpLmlubmVySFRNTCIsIDApOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJh
c2UuY3BwCmluZGV4IDk1YjVjMDEuLjBmNWE4MjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdEZhdmljb25E
YXRhYmFzZS5jcHAKQEAgLTIzLDcgKzIzLDYgQEAKICNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgog
I2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5j
bHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlx
dWVQdHIuaD4KIAogc3RhdGljIFdlYktpdFRlc3RTZXJ2ZXIqIGtTZXJ2ZXI7CkBAIC0zNiw3ICsz
NSw2IEBAIHB1YmxpYzoKICAgICBGYXZpY29uRGF0YWJhc2VUZXN0KCkKICAgICAgICAgOiBtX3dl
YkNvbnRleHQod2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCkpCiAgICAgICAgICwgbV9m
YXZpY29uKDApCi0gICAgICAgICwgbV9lcnJvcigwKQogICAgICAgICAsIG1fZmF2aWNvbk5vdGlm
aWNhdGlvblJlY2VpdmVkKGZhbHNlKQogICAgIHsKICAgICAgICAgV2ViS2l0RmF2aWNvbkRhdGFi
YXNlKiBkYXRhYmFzZSA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZSht
X3dlYkNvbnRleHQpOwpAQCAtODQsNyArODIsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldEZh
dmljb25Gb3JQYWdlVVJJQW5kV2FpdFVudGlsUmVhZHkoY29uc3QgY2hhciogcGFnZVVSSSkKICAg
ICB7Ci0gICAgICAgIG1fZXJyb3IuY2xlYXIoKTsKICAgICAgICAgaWYgKG1fZmF2aWNvbikgewog
ICAgICAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KG1fZmF2aWNvbik7CiAgICAgICAgICAg
ICBtX2Zhdmljb24gPSAwOwpAQCAtOTgsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgV2ViS2l0V2Vi
Q29udGV4dCogbV93ZWJDb250ZXh0OwogICAgIGNhaXJvX3N1cmZhY2VfdCogbV9mYXZpY29uOwog
ICAgIENTdHJpbmcgbV9mYXZpY29uVVJJOwotICAgIEdPd25QdHI8R0Vycm9yPiBtX2Vycm9yOwor
ICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBtX2Vycm9yOwogICAgIGJvb2wgbV9mYXZpY29uTm90
aWZpY2F0aW9uUmVjZWl2ZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAppbmRleCA3MzQyYjYw
Li5mOWJmNjMyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJH
dGsvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYlZpZXdSdW5KYXZhU2NyaXB0KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQogICAgIHRlc3QtPmxvYWRIdG1sKGh0bWwsIDApOwogICAgIHRlc3QtPndhaXRVbnRp
bExvYWRGaW5pc2hlZCgpOwogCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlx
dWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZh
c2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3
aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1dlYktpdExpbmsnKS50aXRsZTsiLCAmZXJy
b3Iub3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwogICAgIGdfYXNz
ZXJ0KCFlcnJvci5nZXQoKSk7CkBAIC0xNDQsNyArMTQ0LDYgQEAgc3RhdGljIHZvaWQgdGVzdFdl
YlZpZXdSdW5KYXZhU2NyaXB0KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAg
IGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0RnJvbUdSZXNvdXJjZUFuZFdh
aXRVbnRpbEZpbmlzaGVkKCIvd3JvbmcvcGF0aC90by9yZXNvdXJjZS5qcyIsICZlcnJvci5vdXRQ
dHIoKSk7CiAgICAgZ19hc3NlcnQoIWphdmFzY3JpcHRSZXN1bHQpOwogICAgIGdfYXNzZXJ0X2Vy
cm9yKGVycm9yLmdldCgpLCBHX1JFU09VUkNFX0VSUk9SLCBHX1JFU09VUkNFX0VSUk9SX05PVF9G
T1VORCk7Ci0gICAgZXJyb3IuY2xlYXIoKTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0
LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImZvbygpOyIsICZlcnJvci5vdXRQ
dHIoKSk7CiAgICAgZ19hc3NlcnQoIWphdmFzY3JpcHRSZXN1bHQpOwpAQCAtMzQ2LDcgKzM0NSw3
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHdlYlZpZXdTYXZlZFRvU3RyZWFtQ2FsbGJh
Y2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgU2F2ZVdlYlZpZXdUZXN0
KiB0ZXN0KQogICAgIHsKLSAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICBH
VW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIHRlc3QtPm1faW5wdXRTdHJlYW0g
PSBhZG9wdEdSZWYod2Via2l0X3dlYl92aWV3X3NhdmVfZmluaXNoKHRlc3QtPm1fd2ViVmlldywg
cmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICAgICAgZ19hc3NlcnQoR19JU19JTlBVVF9T
VFJFQU0odGVzdC0+bV9pbnB1dFN0cmVhbS5nZXQoKSkpOwogICAgICAgICBnX2Fzc2VydCghZXJy
b3IpOwpAQCAtMzU2LDcgKzM1NSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHdlYlZp
ZXdTYXZlZFRvRmlsZUNhbGxiYWNrKEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1
bHQsIFNhdmVXZWJWaWV3VGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIEdPd25QdHI8R0Vycm9y
PiBlcnJvcjsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICBn
X2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfc2F2ZV90b19maWxlX2ZpbmlzaCh0ZXN0LT5tX3dlYlZp
ZXcsIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgICAgIGdfYXNzZXJ0KCFlcnJvcik7
CiAKQEAgLTQwNSw3ICs0MDQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1NhdmUoU2F2ZVdl
YlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIC8vIHN0cmluZ3MgcmVhZCBzaW5j
ZSB0aGUgJ0RhdGUnIGZpZWxkIGFuZCB0aGUgYm91bmRhcmllcyB3aWxsIGJlCiAgICAgLy8gZGlm
ZmVyZW50IG9uIGVhY2ggY2FzZS4gTUhUTUwgZnVuY3Rpb25hbGl0eSB3aWxsIGJlIHRlc3RlZCBi
eQogICAgIC8vIExheW91dCB0ZXN0cywgc28gY2hlY2tpbmcgdGhlIGFtb3VudCBvZiBieXRlcyBp
cyBlbm91Z2guCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8
R0Vycm9yPiBlcnJvcjsKICAgICBnY2hhciBidWZmZXJbNTEyXSA9IHsgMCB9OwogICAgIGdzc2l6
ZSByZWFkQnl0ZXMgPSAwOwogICAgIGdzc2l6ZSB0b3RhbEJ5dGVzRnJvbVN0cmVhbSA9IDA7CkBA
IC00NTgsNyArNDU3LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdQYWdlVmlzaWJpbGl0eShX
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICAvLyBXYWl0IHVudGlsbCB0aGUg
cGFnZSBpcyBsb2FkZWQuIEluaXRpYWwgdmlzaWJpbGl0eSBzaG91bGQgYmUgJ2hpZGRlbicuCiAg
ICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKLSAgICBHT3duUHRyPEdFcnJvcj4g
ZXJyb3I7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIFdlYktpdEphdmFz
Y3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2Fp
dFVudGlsRmluaXNoZWQoImRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZTsiLCAmZXJyb3Iub3V0UHRy
KCkpOwogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwogICAgIGdfYXNzZXJ0KCFlcnJv
ci5nZXQoKSk7CkBAIC01MDcsNyArNTA2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQg
b25TbmFwc2hvdENhbmNlbGxlZFJlYWR5KFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBHQXN5bmNS
ZXN1bHQqIHJlcywgU25hcHNob3RXZWJWaWV3VGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIEdP
d25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9y
OwogICAgICAgICB0ZXN0LT5tX3N1cmZhY2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90
X2ZpbmlzaCh3ZWJfdmlldywgcmVzLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgICAgICBnX2Fzc2Vy
dCghdGVzdC0+bV9zdXJmYWNlKTsKICAgICAgICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCks
IEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVEKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlld0dy
b3VwLmNwcAppbmRleCA3NDAwOGViLi40NDhhYmQyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXdHcm91cC5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3R3Jv
dXAuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIGJvb2wgaXNTdHlsZVNoZWV0SW5qZWN0
ZWRGb3JVUkxBdFBhdGgoV2ViVmlld1Rlc3QqIHRlc3QsIGNvbnN0IGNoYXIqIHBhdGgKICAgICB0
ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgocGF0aCkuZGF0YSgpKTsKICAgICB0
ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJv
cjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgV2ViS2l0SmF2YXNjcmlw
dFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50
aWxGaW5pc2hlZChrU3R5bGVTaGVldFRlc3RTY3JpcHQsICZlcnJvci5vdXRQdHIoKSk7CiAgICAg
Z19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2Vi
Vmlld0VkaXRvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dFdlYlZpZXdFZGl0b3IuY3BwCmluZGV4IDdmMGEwNjEuLjllNjliZmEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJWaWV3RWRp
dG9yLmNwcApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBjYW5F
eGVjdXRlRWRpdGluZ0NvbW1hbmRSZWFkeUNhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQq
IHJlc3VsdCwgRWRpdG9yVGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIEdPd25QdHI8R0Vycm9y
PiBlcnJvcjsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICB0
ZXN0LT5tX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZCA9IHdlYmtpdF93ZWJfdmlld19jYW5fZXhl
Y3V0ZV9lZGl0aW5nX2NvbW1hbmRfZmluaXNoKHRlc3QtPm1fd2ViVmlldywgcmVzdWx0LCAmZXJy
b3Iub3V0UHRyKCkpOwogICAgICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAgICAgICBn
X21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwCmluZGV4
IDc4OTQzMGYuLjZiMmVjMmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAK
ICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMjQ0LDcg
KzI0Myw3IEBAIHN0YXRpYyB2b2lkIGJ1c0FjcXVpcmVkQ2FsbGJhY2soR0RCdXNDb25uZWN0aW9u
KiBjb25uZWN0aW9uLCBjb25zdCBjaGFyKiBuYW1lLCBnCiAgICAgaWYgKCFpbnRyb3NwZWN0aW9u
RGF0YSkKICAgICAgICAgaW50cm9zcGVjdGlvbkRhdGEgPSBnX2RidXNfbm9kZV9pbmZvX25ld19m
b3JfeG1sKGludHJvc3BlY3Rpb25YTUwsIDApOwogCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9y
OworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICB1bnNpZ25lZCByZWdpc3Ry
YXRpb25JRCA9IGdfZGJ1c19jb25uZWN0aW9uX3JlZ2lzdGVyX29iamVjdCgKICAgICAgICAgY29u
bmVjdGlvbiwKICAgICAgICAgIi9vcmcvd2Via2l0L2d0ay9XZWJFeHRlbnNpb25UZXN0IiwKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJQcm9jZXNz
VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViUHJvY2Vz
c1Rlc3QuY3BwCmluZGV4IDhjMDA4MzcuLmNmZjFhMjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJQcm9jZXNzVGVzdC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYlByb2Nlc3NUZXN0LmNwcApAQCAtMjEs
NyArMjEsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NUZXN0LmgiCiAKICNpbmNsdWRlIDxnaW8v
Z2lvLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgc3RkOjpmdW5j
dGlvbjxQYXNzT3duUHRyPFdlYlByb2Nlc3NUZXN0PiAoKT4+IFRlc3RzTWFwOwogc3RhdGljIFRl
c3RzTWFwJiB0ZXN0c01hcCgpCkBAIC04MCw3ICs4MCw3IEBAIHN0YXRpYyB2b2lkIGJ1c0FjcXVp
cmVkQ2FsbGJhY2soR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBjaGFyKiBuYW1l
LCBnCiAgICAgaWYgKCFpbnRyb3NwZWN0aW9uRGF0YSkKICAgICAgICAgaW50cm9zcGVjdGlvbkRh
dGEgPSBnX2RidXNfbm9kZV9pbmZvX25ld19mb3JfeG1sKGludHJvc3BlY3Rpb25YTUwsIDApOwog
Ci0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBl
cnJvcjsKICAgICB1bnNpZ25lZCByZWdpc3RyYXRpb25JRCA9IGdfZGJ1c19jb25uZWN0aW9uX3Jl
Z2lzdGVyX29iamVjdCgKICAgICAgICAgY29ubmVjdGlvbiwKICAgICAgICAgIi9vcmcvd2Via2l0
L2d0ay9XZWJQcm9jZXNzVGVzdCIsCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL2d0ay9JbnB1dE1ldGhvZEZpbHRlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L2d0ay9JbnB1dE1ldGhvZEZpbHRlci5jcHAKaW5kZXggYmZjYzE3ZC4uNGFhYjdjMCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9ndGsvSW5wdXRNZXRob2RGaWx0ZXIuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvZ3RrL0lucHV0TWV0aG9kRmlsdGVyLmNw
cApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIldURlN0cmluZ1V0aWxpdGllcy5oIgogI2lu
Y2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgotI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGdka19ldmVu
dF9zZXRfZGV2aWNlKGV2ZW50LCBnZGtfZGV2aWNlX21hbmFnZXJfZ2V0X2NsaWVudF9wb2ludGVy
KGdka19kaXNwbGF5X2dldF9kZXZpY2VfbWFuYWdlcihnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgp
KSkpOwogI2VuZGlmCiAKLSAgICAgICAgR093blB0cjxHZGtLZXltYXBLZXk+IGtleXM7CisgICAg
ICAgIEdVbmlxdWVPdXRQdHI8R2RrS2V5bWFwS2V5PiBrZXlzOwogICAgICAgICBnaW50IG5LZXlz
OwogICAgICAgICBpZiAoZ2RrX2tleW1hcF9nZXRfZW50cmllc19mb3Jfa2V5dmFsKGdka19rZXlt
YXBfZ2V0X2RlZmF1bHQoKSwgZ2RrS2V5VmFsdWUsICZrZXlzLm91dFB0cigpLCAmbktleXMpKQog
ICAgICAgICAgICAgZXZlbnQtPmtleS5oYXJkd2FyZV9rZXljb2RlID0ga2V5cy5nZXQoKVswXS5r
ZXljb2RlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvUGxhdGZvcm1XZWJW
aWV3R3RrLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5j
cHAKaW5kZXggMTJlZWVkNy4uMDMxNjA0MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0
ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlIDxX
ZWJDb3JlL0dVbmlxdWVQdHJHdGsuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0jaW5jbHVkZSA8
d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIu
aD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRp
YyB2b2lkIGRvS2V5U3Ryb2tlKEd0a1dpZGdldCogdmlld1dpZGdldCwgdW5zaWduZWQgaW50IGtl
eVZhbCkKICAgICBnZGtfZXZlbnRfc2V0X2RldmljZShldmVudC5nZXQoKSwgZ2RrX2RldmljZV9t
YW5hZ2VyX2dldF9jbGllbnRfcG9pbnRlcihnZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIo
Z3RrX3dpZGdldF9nZXRfZGlzcGxheSh2aWV3V2lkZ2V0KSkpKTsKIAogICAgIC8vIFdoZW4gc3lu
dGhlc2l6aW5nIGFuIGV2ZW50LCBhbiBpbnZhbGlkIGhhcmR3YXJlX2tleWNvZGUgdmFsdWUgY2Fu
IGNhdXNlIGl0IHRvIGJlIGJhZGx5IHByb2Nlc3NlZCBieSBHVEsrLgotICAgIEdPd25QdHI8R2Rr
S2V5bWFwS2V5PiBrZXlzOworICAgIEdVbmlxdWVPdXRQdHI8R2RrS2V5bWFwS2V5PiBrZXlzOwog
ICAgIGludCBrZXlzQ291bnQ7CiAgICAgaWYgKGdka19rZXltYXBfZ2V0X2VudHJpZXNfZm9yX2tl
eXZhbChnZGtfa2V5bWFwX2dldF9kZWZhdWx0KCksIGtleVZhbCwgJmtleXMub3V0UHRyKCksICZr
ZXlzQ291bnQpKQogICAgICAgICBldmVudC0+a2V5LmhhcmR3YXJlX2tleWNvZGUgPSBrZXlzLmdl
dCgpWzBdLmtleWNvZGU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJL
aXQyR3RrL1Rlc3RNYWluLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1Rl
c3RNYWluLmgKaW5kZXggZDVjZWFlOC4uOWZhYjBiMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9UZXN0TWFpbi5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ3RrL1dlYktpdDJHdGsvVGVzdE1haW4uaApAQCAtMjMsNyArMjMsNiBAQAogI2luY2x1ZGUg
PGNhaXJvLmg+CiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYktpdFRlc3RCdXMu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJLaXRUZXN0QnVzLmNw
cAppbmRleCBkMGRmYWU3Li4zNWJjZjFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2d0ay9XZWJLaXQyR3RrL1dlYktpdFRlc3RCdXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ3RrL1dlYktpdDJHdGsvV2ViS2l0VGVzdEJ1cy5jcHAKQEAgLTIwLDcgKzIwLDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRUZXN0QnVzLmgiCiAKLSNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zOCw4ICszNyw4IEBA
IGJvb2wgV2ViS2l0VGVzdEJ1czo6cnVuKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIEdPd25QdHI8Y2hhcj4gb3V0cHV0OwotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsK
KyAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IG91dHB1dDsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJv
cj4gZXJyb3I7CiAgICAgaWYgKCFnX3NwYXduX2NvbW1hbmRfbGluZV9zeW5jKGRidXNMYXVuY2gu
Z2V0KCksICZvdXRwdXQub3V0UHRyKCksIDAsIDAsICZlcnJvci5vdXRQdHIoKSkpIHsKICAgICAg
ICAgZ193YXJuaW5nKCJFcnJvciBzdGFydGluZyBEQlVTIGRhZW1vbjogJXMiLCBlcnJvci0+bWVz
c2FnZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5jcHAKaW5kZXggZWI3YjBkZi4uMTE5OGIwOCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVz
dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVz
dC5jcHAKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFdlYlZpZXdUZXN0OjpzZWxlY3RBbGwoKQog
c3RhdGljIHZvaWQgcmVzb3VyY2VHZXREYXRhQ2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5
bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpCiB7CiAgICAgc2l6ZV90IGRhdGFT
aXplOwotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJv
cj4gZXJyb3I7CiAgICAgdW5zaWduZWQgY2hhciogZGF0YSA9IHdlYmtpdF93ZWJfcmVzb3VyY2Vf
Z2V0X2RhdGFfZmluaXNoKFdFQktJVF9XRUJfUkVTT1VSQ0Uob2JqZWN0KSwgcmVzdWx0LCAmZGF0
YVNpemUsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoZGF0YSk7CiAKQEAgLTI4OCw3
ICsyODgsNyBAQCB2b2lkIFdlYlZpZXdUZXN0OjprZXlTdHJva2UodW5zaWduZWQga2V5VmFsLCB1
bnNpZ25lZCBrZXlNb2RpZmllcnMpCiAgICAgZXZlbnQtPmtleS5zdGF0ZSA9IGtleU1vZGlmaWVy
czsKIAogICAgIC8vIFdoZW4gc3ludGhlc2l6aW5nIGFuIGV2ZW50LCBhbiBpbnZhbGlkIGhhcmR3
YXJlX2tleWNvZGUgdmFsdWUgY2FuIGNhdXNlIGl0IHRvIGJlIGJhZGx5IHByb2Nlc3NlZCBieSBH
VEsrLgotICAgIEdPd25QdHI8R2RrS2V5bWFwS2V5PiBrZXlzOworICAgIEdVbmlxdWVPdXRQdHI8
R2RrS2V5bWFwS2V5PiBrZXlzOwogICAgIGludCBrZXlzQ291bnQ7CiAgICAgaWYgKGdka19rZXlt
YXBfZ2V0X2VudHJpZXNfZm9yX2tleXZhbChnZGtfa2V5bWFwX2dldF9kZWZhdWx0KCksIGtleVZh
bCwgJmtleXMub3V0UHRyKCksICZrZXlzQ291bnQpKQogICAgICAgICBldmVudC0+a2V5LmhhcmR3
YXJlX2tleWNvZGUgPSBrZXlzLmdldCgpWzBdLmtleWNvZGU7CkBAIC00MjUsNyArNDI1LDcgQEAg
Ym9vbCBXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdElzVW5kZWZpbmVkKFdlYktpdEphdmFz
Y3JpcHRSZXN1bHQqIGphdmFzY3JpcHQKIAogc3RhdGljIHZvaWQgb25TbmFwc2hvdFJlYWR5KFdl
YktpdFdlYlZpZXcqIHdlYl92aWV3LCBHQXN5bmNSZXN1bHQqIHJlcywgV2ViVmlld1Rlc3QqIHRl
c3QpCiB7Ci0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVPdXRQdHI8R0Vy
cm9yPiBlcnJvcjsKICAgICB0ZXN0LT5tX3N1cmZhY2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nu
YXBzaG90X2ZpbmlzaCh3ZWJfdmlldywgcmVzLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNz
ZXJ0KCF0ZXN0LT5tX3N1cmZhY2UgfHwgIWVycm9yLmdldCgpKTsKICAgICBpZiAoZXJyb3IpCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3Rr
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3Bw
CmluZGV4IDQyYmVkZmYuLjhmZGRjNDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVk
ZSA8Z2RrL2dka2tleXN5bXMuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXVFIgewpAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQgRXZlbnRT
ZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1JlZiBrZXlSZWYsIFdLRXZlbnRNb2RpZmllcnMg
d2tNb2RpZmllcnMsCiAgICAgZ19vYmplY3RfcmVmKHByZXNzRXZlbnQtPmtleS53aW5kb3cpOwog
ICAgIGdka19ldmVudF9zZXRfZGV2aWNlKHByZXNzRXZlbnQsIGdka19kZXZpY2VfbWFuYWdlcl9n
ZXRfY2xpZW50X3BvaW50ZXIoZ2RrX2Rpc3BsYXlfZ2V0X2RldmljZV9tYW5hZ2VyKGdka193aW5k
b3dfZ2V0X2Rpc3BsYXkocHJlc3NFdmVudC0+a2V5LndpbmRvdykpKSk7CiAKLSAgICBHT3duUHRy
PEdka0tleW1hcEtleT4ga2V5czsKKyAgICBHVW5pcXVlT3V0UHRyPEdka0tleW1hcEtleT4ga2V5
czsKICAgICBnaW50IG5LZXlzOwogICAgIGlmIChnZGtfa2V5bWFwX2dldF9lbnRyaWVzX2Zvcl9r
ZXl2YWwoZ2RrX2tleW1hcF9nZXRfZGVmYXVsdCgpLCBnZGtLZXlTeW0sICZrZXlzLm91dFB0cigp
LCAmbktleXMpKQogICAgICAgICBwcmVzc0V2ZW50LT5rZXkuaGFyZHdhcmVfa2V5Y29kZSA9IGtl
eXMuZ2V0KClbMF0ua2V5Y29kZTsK
</data>
<flag name="review"
          id="247680"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>