<?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>72426</bug_id>
          
          <creation_ts>2011-11-15 14:47:37 -0800</creation_ts>
          <short_desc>[chromium] Fuse MainThread and CCThread</short_desc>
          <delta_ts>2011-11-15 17:16:06 -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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nat Duca">nduca</reporter>
          <assigned_to name="Nat Duca">nduca</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jamesr</cc>
    
    <cc>levin</cc>
    
    <cc>levin+threading</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>503306</commentid>
    <comment_count>0</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-15 14:47:37 -0800</bug_when>
    <thetext>[chromium] Fuse MainThread and CCThread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503307</commentid>
    <comment_count>1</comment_count>
      <attachid>115253</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-15 14:48:19 -0800</bug_when>
    <thetext>Created attachment 115253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503309</commentid>
    <comment_count>2</comment_count>
      <attachid>115254</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-15 14:48:49 -0800</bug_when>
    <thetext>Created attachment 115254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503316</commentid>
    <comment_count>3</comment_count>
      <attachid>115254</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-15 14:59:14 -0800</bug_when>
    <thetext>Comment on attachment 115254
Patch

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

Just a drive by comment.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScopedThreadProxy.h:35
&gt; +// any point from the main thread after which no more tasks posted to the proxy will run. In other words, all

Are these references (line 35 and 39) to main thread still true?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503332</commentid>
    <comment_count>4</comment_count>
      <attachid>115253</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-15 15:12:08 -0800</bug_when>
    <thetext>Comment on attachment 115253
Patch

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

R=me but please fix comments before landing

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScopedThreadProxy.h:35
&gt; +// any point from the main thread after which no more tasks posted to the proxy will run. In other words, all

this comment and others still refer to the &apos;main thread&apos; even though this could apply to any thread pair.  Could you update the rest of this comment block?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScopedThreadProxy.h:52
&gt; +    // Can be called from any thread. Posts a task to the main thread that runs unless

references main thread, but should be perhaps &apos;target&apos; thread?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScopedThreadProxy.h:82
&gt; +    bool m_shutdown; // Only accessed on the main thread

update comment

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:66
&gt; +    m_mainThreadProxy = CCScopedThreadProxy::create(CCProxy::mainThread());

is there a reason this was moved from the initialization list to here?

&gt; Source/WebKit/chromium/src/CCThreadImpl.cpp:108
&gt; +      m_threadID = currentThread();
&gt; +      return;

4-space intend please, this is webkit

&gt; Source/WebKit/chromium/src/WebKit.cpp:35
&gt; +#include &quot;cc/CCProxy.h&quot;

i don&apos;t think this sorting is right - we normally do case-sensitive sorting, right?

&gt; Source/WebKit/chromium/src/WebKit.cpp:53
&gt; +

extra newline here - please remove

&gt; Source/WebKit/chromium/src/WebKit.cpp:109
&gt; +    delete WebCore::CCProxy::mainThread();

For the impl thread we just leak the CCThreadImpl, since there&apos;s only one per address space and it just holds a couple pointers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503333</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-15 15:12:17 -0800</bug_when>
    <thetext>Stupid bugzilla...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503335</commentid>
    <comment_count>6</comment_count>
      <attachid>115254</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-15 15:13:11 -0800</bug_when>
    <thetext>Comment on attachment 115254
Patch

Same comments as last time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503365</commentid>
    <comment_count>7</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-15 15:46:12 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebKit/chromium/src/WebKit.cpp:35
&gt; &gt; +#include &quot;cc/CCProxy.h&quot;
&gt; 
&gt; i don&apos;t think this sorting is right - we normally do case-sensitive sorting, right?

check-webkit-style cries unless this is here. I&apos;m stumped...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503371</commentid>
    <comment_count>8</comment_count>
      <attachid>115254</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-15 15:50:32 -0800</bug_when>
    <thetext>Comment on attachment 115254
Patch

Attachment 115254 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10484542</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503452</commentid>
    <comment_count>9</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-15 16:56:24 -0800</bug_when>
    <thetext>Committed r100370: &lt;http://trac.webkit.org/changeset/100370&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503461</commentid>
    <comment_count>10</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-15 17:16:06 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; &gt; Source/WebKit/chromium/src/WebKit.cpp:35
&gt; &gt; &gt; +#include &quot;cc/CCProxy.h&quot;
&gt; &gt; 
&gt; &gt; i don&apos;t think this sorting is right - we normally do case-sensitive sorting, right?
&gt; 
&gt; check-webkit-style cries unless this is here. I&apos;m stumped...

What do you mean by unless this is here?

If you put it before CCThreadImpl.h, it should be upset, but this looks incorrect as well. (Note by default check-webkit-style is going to run on the diff which may omit some errors that you introduce like an incorrect sorting of #include &quot;Logging.h&quot;.  You can run check-webkit-style filename to get all the errors for that file.)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115253</attachid>
            <date>2011-11-15 14:48:19 -0800</date>
            <delta_ts>2011-11-15 15:12:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72426-20111115144818.patch</filename>
            <type>text/plain</type>
            <size>64473</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2JhN2I2ZmRhZmVlYzJi
NGNjZTczNjc2NzFkMTk4MzBkMjFiZGExYi4uZDk4ZTZkNTcwZjRmNmEzMGUzYWU3YzUxYmY3ZTNh
MThhZmE5MzYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDExLTExLTE1ICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEZ1c2UgTWFp
blRocmVhZCBhbmQgQ0NUaHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTcyNDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWFpblRocmVhZC5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYWluVGhyZWFkLmg6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYWlu
VGhyZWFkVGFzay5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcm94eTo6c2V0TWFpblRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Byb3h5OjptYWluVGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDUHJveHk6OnNldEltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQ
cm94eTo6aW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Byb3h5Ojppc01haW5UaHJl
YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcm94eTo6aXNJbXBsVGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDUHJveHk6On5DQ1Byb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRNYWluVGhyZWFkUHJveHku
aC4KKyAgICAgICAgKFdlYkNvcmU6OkNDU2NvcGVkVGhyZWFkUHJveHk6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1Njb3BlZFRocmVhZFByb3h5Ojpwb3N0VGFzayk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1Njb3BlZFRocmVhZFByb3h5OjpzaHV0ZG93bik6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1Njb3BlZFRocmVhZFByb3h5OjpDQ1Njb3BlZFRocmVhZFByb3h5KToKKyAgICAgICAgKFdl
YkNvcmU6OkNDU2NvcGVkVGhyZWFkUHJveHk6OnJ1blRhc2tJZk5vdFNodXRkb3duKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OkNDVGhyZWFkUHJveHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Y29tcG9zaXRlQW5kUmVhZGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQW5pbWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXcpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RocmVhZFByb3h5OjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFBy
b3h5OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6Om9idGFpbkJlZ2lu
RnJhbWVBbmRDb21taXRUYXNrRnJvbUNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhy
ZWFkUHJveHk6OmNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25JbXBsVGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUltcGxPbkltcGxU
aHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaDoKKwogMjAxMS0xMS0xNSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSB1c2VsZXNzIGNvbnN0IG1vZGlmaWVyIGZyb20gS1VSTDo6aW5p
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1MzIzMmMyMGU0Y2JhMGRlZGI4OWY3ZWE2
ZDlmZDNmODVkZGMxNjhiLi5kODQ2OTAyOTRkOTZkNTNhZTgwZWQ3ZjE4ZGE5MTM3M2NjYjViYmRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTExLTE1
ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEZ1
c2UgTWFpblRocmVhZCBhbmQgQ0NUaHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcyNDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIFdlYktpdC5neXBpOgor
ICAgICAgICAqIHNyYy9DQ01haW5UaHJlYWRJbXBsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBz
cmMvQ0NUaHJlYWRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q0NUaHJlYWRJbXBsOjpDQ1Ro
cmVhZEltcGwpOgorICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNldFRocmVhZCk6CisgICAgICAgICogc3JjL1dlYktp
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVXaXRob3V0VjgpOgorICAgICAgICAo
V2ViS2l0OjpzaHV0ZG93bik6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5j
cHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3Q6OkNDTGF5ZXJUcmVlSG9zdFRl
c3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0OjplbmRUZXN0KToKKyAgICAg
ICAgKiB0ZXN0cy9DQ1RocmVhZFRlc3QuY3BwOiBSZW1vdmVkLgorCiAyMDExLTExLTE0ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgSG9zdFdpbmRvdyBp
bnZhbGlkYXRpb24gZnVuY3Rpb25zIHNob3VsZCB1c2Ugcm9vdCB2aWV3IGNvb3JkaW5hdGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggZTgzMDYxZDJiNTk2ZjQxNTlmYTg3NjE3Nzk2ZTI5MmQzZGZmNzIy
Mi4uMGU1NzY5YWViN2NjNjk3ZTVhODg3ZWY4YmU1ZTg3YzNkOWEzYmMyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQpAQCAtMzU3Niw5ICszNTc2LDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCcs
Ci0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYWluVGhyZWFk
LmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYWlu
VGhyZWFkLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TWFpblRocmVhZFRhc2suaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQbHVnaW5MYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcCcsCkBAIC0zNTg5LDcgKzM1ODYs
NyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1
bGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaCcsCi0gICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRNYWluVGhyZWFkUHJveHkuaCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUaHJlYWRQ
cm94eS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
cm9sbENvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCAxMzRiYjA1MmMyNzhmMGQzOGE0ZjE5NmFmYWJl
MGU5ZDk0OTkwOGU3Li45MjE0YmJkYWJlOGU4MzY3MjMyMjc4OGMyMjcxNDFhMmIyNTYxYzMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTU1LDggKzU1LDcgQEAK
ICNpbmNsdWRlICJXZWJHTExheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1w
bC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgotI2luY2x1ZGUgImNj
L0NDTWFpblRocmVhZFRhc2suaCIKLSNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCisjaW5j
bHVkZSAiY2MvQ0NQcm94eS5oIgogI2lmIFVTRShTS0lBKQogI2luY2x1ZGUgIkV4dGVuc2lvbnMz
RC5oIgogI2luY2x1ZGUgIkdyQ29udGV4dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5j
cHAKaW5kZXggYmE0MzBlYzUxN2IwMjdhNzY2ZTYzZGFhZWUwNjhmODI5MWY0NDhmMS4uNmY5OGRk
M2I5Nzg2M2E2NmFmYTYyNmNjMTcwZjNmY2FhNDgzZTE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiVHJlZVN5bmNocm9uaXpl
ci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgogI2luY2x1ZGUgImNj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKLSNpbmNsdWRlICJjYy9DQ01haW5UaHJlYWQuaCIKICNp
bmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWQu
aCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCkBAIC02MCw3ICs1OSw2IEBAIENDTGF5
ZXJUcmVlSG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50
LCBjb25zdCBDQ1NldHRpbmdzCiAgICAgLCBtX21pblBhZ2VTY2FsZSgxKQogICAgICwgbV9tYXhQ
YWdlU2NhbGUoMSkKIHsKLSAgICBDQ01haW5UaHJlYWQ6OmluaXRpYWxpemUoKTsKICAgICBBU1NF
UlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCmluZGV4IDI1YTgxODA1N2ZmYjFiMGE3NzE0YTU3M2I5ZTE0N2ZlZjRh
M2QxNTIuLmEwNjA1NzhjMjdkYjE2YjAxZTRhMDViNTY1MzYyMTM2MzViNTY2NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0zMSw4ICszMSw2IEBACiAjaW5j
bHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgog
I2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgotI2luY2x1ZGUgImNjL0NDTWFpblRocmVh
ZC5oIgotI2luY2x1ZGUgImNjL0NDTWFpblRocmVhZFRhc2suaCIKICNpbmNsdWRlICJjYy9DQ1Ro
cmVhZFRhc2suaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYWluVGhyZWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWFp
blRocmVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3OWYwNTYwOTk4ZWM2
ZWU2MjRlYjIyNDM4MWYyZTU1NTBjMzNlMmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NNYWluVGhyZWFkLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJDQ01haW5UaHJlYWQu
aCIKLQotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXVEY7
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBDQ01haW5UaHJlYWQ6OnBlcmZvcm1UYXNr
KHZvaWQqIHVzZXJkYXRhKQotewotICAgIFRhc2sqIHRhc2sgPSBzdGF0aWNfY2FzdDxUYXNrKj4o
dXNlcmRhdGEpOwotICAgIHRhc2stPnBlcmZvcm1UYXNrKCk7Ci0gICAgZGVsZXRlIHRhc2s7Ci19
Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTWFpblRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NNYWluVGhyZWFkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAzOTA3YWMwYjFmNjc1OWRjMDVlOGQzMTE1OTQ0OWNjYmRmNWIzYmUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYWluVGhyZWFkLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotI2lmbmRlZiBDQ01haW5UaHJlYWRfaAotI2RlZmluZSBD
Q01haW5UaHJlYWRfaAotCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDQ1Njb3Bl
ZE1haW5UaHJlYWRQcm94eTsKLQotLy8gVGFzayB3cmFwcGVyIGFyb3VuZCBXVEY6OmNhbGxPbk1h
aW5UaHJlYWRUaHJlYWQKLS8vIFRvIHBvc3QgYSBUYXNrIHRvIHJ1biBvbiB0aGUgbWFpbiB0aHJl
YWQsIHNlZSBDQ1Njb3BlZE1haW5UaHJlYWRQcm94eS4KLWNsYXNzIENDTWFpblRocmVhZCB7Ci1w
dWJsaWM6Ci0gICAgY2xhc3MgVGFzayB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRh
c2spOwotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+VGFzaygpIHsgfQotICAgICAgICB2
aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soKSA9IDA7Ci0gICAgICAgIHZvaWQqIGluc3RhbmNlKCkg
Y29uc3QgeyByZXR1cm4gbV9pbnN0YW5jZTsgfQotICAgIHByb3RlY3RlZDoKLSAgICAgICAgVGFz
ayh2b2lkKiBpbnN0YW5jZSkgOiBtX2luc3RhbmNlKGluc3RhbmNlKSB7IH0KLSAgICAgICAgdm9p
ZCogbV9pbnN0YW5jZTsKLSAgICB9OwotCi0gICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwot
cHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgQ0NTY29wZWRNYWluVGhyZWFkUHJveHk7Ci0gICAg
Ly8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gbWFpbiB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCi0gICAg
Ly8gT25seSB2aXNpYmxlIHRvIENDU2NvcGVkTWFpblRocmVhZFByb3h5LgotICAgIHN0YXRpYyB2
b2lkIHBvc3RUYXNrKFBhc3NPd25QdHI8VGFzaz4pOwotCi0gICAgc3RhdGljIHZvaWQgcGVyZm9y
bVRhc2sodm9pZCopOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
Q0NNYWluVGhyZWFkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTWFpblRocmVhZFRhc2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWFpblRocmVhZFRhc2suaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZGU0MWNiYTBkYTQ3ZmQ1NjVkMWIyM2YxYjY2MmRjNWY5OTAzNDE4
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01haW5UaHJlYWRUYXNrLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwzMzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSNpZm5kZWYgQ0NN
YWluVGhyZWFkVGFza19oCi0jZGVmaW5lIENDTWFpblRocmVhZFRhc2tfaAotCi0jaW5jbHVkZSAi
Q3Jvc3NUaHJlYWRDb3BpZXIuaCIKLSNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKLSNpbmNs
dWRlICJjYy9DQ01haW5UaHJlYWQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLWNsYXNzIE1haW5UaHJlYWRUYXNrMCA6IHB1YmxpYyBDQ01haW5UaHJl
YWQ6OlRhc2sgewotcHVibGljOgotICAgIHR5cGVkZWYgdm9pZCAoVDo6Kk1ldGhvZCkoKTsKLSAg
ICB0eXBlZGVmIE1haW5UaHJlYWRUYXNrMDxUPiBNYWluVGhyZWFkVGFza0ltcGw7Ci0KLSAgICBz
dGF0aWMgUGFzc093blB0cjxNYWluVGhyZWFkVGFza0ltcGw+IGNyZWF0ZShUKiBpbnN0YW5jZSwg
TWV0aG9kIG1ldGhvZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWFpblRo
cmVhZFRhc2tJbXBsKGluc3RhbmNlLCBtZXRob2QpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
TWFpblRocmVhZFRhc2swKFQqIGluc3RhbmNlLCBNZXRob2QgbWV0aG9kKQotICAgICAgICA6IEND
TWFpblRocmVhZDo6VGFzayhpbnN0YW5jZSkKLSAgICAgICAgLCBtX21ldGhvZChtZXRob2QpCi0g
ICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzaygpCi0gICAgewotICAg
ICAgICAoKnN0YXRpY19jYXN0PFQqPihpbnN0YW5jZSgpKS4qbV9tZXRob2QpKCk7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIE1ldGhvZCBtX21ldGhvZDsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDE+Ci1jbGFzcyBNYWluVGhyZWFkVGFzazEgOiBw
dWJsaWMgQ0NNYWluVGhyZWFkOjpUYXNrIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQgKFQ6
OipNZXRob2QpKE1QMSk7Ci0gICAgdHlwZWRlZiBNYWluVGhyZWFkVGFzazE8VCwgUDEsIE1QMT4g
TWFpblRocmVhZFRhc2tJbXBsOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNr
VHJhaXRzPFAxPjo6UGFyYW1UeXBlIFBhcmFtMTsKLQotICAgIHN0YXRpYyBQYXNzT3duUHRyPE1h
aW5UaHJlYWRUYXNrSW1wbD4gY3JlYXRlKFQqIGluc3RhbmNlLCBNZXRob2QgbWV0aG9kLCBQYXJh
bTEgcGFyYW1ldGVyMSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWFpblRo
cmVhZFRhc2tJbXBsKGluc3RhbmNlLCBtZXRob2QsIHBhcmFtZXRlcjEpKTsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgTWFpblRocmVhZFRhc2sxKFQqIGluc3RhbmNlLCBNZXRob2QgbWV0aG9kLCBQ
YXJhbTEgcGFyYW1ldGVyMSkKLSAgICAgICAgOiBDQ01haW5UaHJlYWQ6OlRhc2soaW5zdGFuY2Up
Ci0gICAgICAgICwgbV9tZXRob2QobWV0aG9kKQotICAgICAgICAsIG1fcGFyYW1ldGVyMShwYXJh
bWV0ZXIxKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soKQot
ICAgIHsKLSAgICAgICAgKCpzdGF0aWNfY2FzdDxUKj4oaW5zdGFuY2UoKSkuKm1fbWV0aG9kKSht
X3BhcmFtZXRlcjEpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBNZXRob2QgbV9tZXRob2Q7Ci0g
ICAgUDEgbV9wYXJhbWV0ZXIxOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
UDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMj4KLWNsYXNzIE1haW5U
aHJlYWRUYXNrMiA6IHB1YmxpYyBDQ01haW5UaHJlYWQ6OlRhc2sgewotcHVibGljOgotICAgIHR5
cGVkZWYgdm9pZCAoVDo6Kk1ldGhvZCkoTVAxLCBNUDIpOwotICAgIHR5cGVkZWYgTWFpblRocmVh
ZFRhc2syPFQsIFAxLCBNUDEsIFAyLCBNUDI+IE1haW5UaHJlYWRUYXNrSW1wbDsKLSAgICB0eXBl
ZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7
Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDI+OjpQYXJhbVR5
cGUgUGFyYW0yOwotCi0gICAgc3RhdGljIFBhc3NPd25QdHI8TWFpblRocmVhZFRhc2tJbXBsPiBj
cmVhdGUoVCogaW5zdGFuY2UsIE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJh
bTIgcGFyYW1ldGVyMikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWFpblRo
cmVhZFRhc2tJbXBsKGluc3RhbmNlLCBtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpKTsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgTWFpblRocmVhZFRhc2syKFQqIGluc3RhbmNlLCBNZXRo
b2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIpCi0gICAgICAg
IDogQ0NNYWluVGhyZWFkOjpUYXNrKGluc3RhbmNlKQotICAgICAgICAsIG1fbWV0aG9kKG1ldGhv
ZCkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKLSAgICAgICAgLCBtX3BhcmFt
ZXRlcjIocGFyYW1ldGVyMikKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHBlcmZv
cm1UYXNrKCkKLSAgICB7Ci0gICAgICAgICgqc3RhdGljX2Nhc3Q8VCo+KGluc3RhbmNlKCkpLipt
X21ldGhvZCkobV9wYXJhbWV0ZXIxLCBtX3BhcmFtZXRlcjIpOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBNZXRob2QgbV9tZXRob2Q7Ci0gICAgUDEgbV9wYXJhbWV0ZXIxOwotICAgIFAyIG1fcGFy
YW1ldGVyMjsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFt
ZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBN
UDM+Ci1jbGFzcyBNYWluVGhyZWFkVGFzazMgOiBwdWJsaWMgQ0NNYWluVGhyZWFkOjpUYXNrIHsK
LXB1YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQgKFQ6OipNZXRob2QpKE1QMSwgTVAyLCBNUDMpOwot
ICAgIHR5cGVkZWYgTWFpblRocmVhZFRhc2szPFQsIFAxLCBNUDEsIFAyLCBNUDIsIFAzLCBNUDM+
IE1haW5UaHJlYWRUYXNrSW1wbDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFz
a1RyYWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9z
c1RocmVhZFRhc2tUcmFpdHM8UDI+OjpQYXJhbVR5cGUgUGFyYW0yOwotICAgIHR5cGVkZWYgdHlw
ZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFAzPjo6UGFyYW1UeXBlIFBhcmFtMzsKLQotICAg
IHN0YXRpYyBQYXNzT3duUHRyPE1haW5UaHJlYWRUYXNrSW1wbD4gY3JlYXRlKFQqIGluc3RhbmNl
LCBNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBh
cmFtMyBwYXJhbWV0ZXIzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNYWlu
VGhyZWFkVGFza0ltcGwoaW5zdGFuY2UsIG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwg
cGFyYW1ldGVyMykpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBNYWluVGhyZWFkVGFzazMoVCog
aW5zdGFuY2UsIE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1l
dGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMpCi0gICAgICAgIDogQ0NNYWluVGhyZWFkOjpUYXNrKGlu
c3RhbmNlKQotICAgICAgICAsIG1fbWV0aG9kKG1ldGhvZCkKLSAgICAgICAgLCBtX3BhcmFtZXRl
cjEocGFyYW1ldGVyMSkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikKLSAgICAg
ICAgLCBtX3BhcmFtZXRlcjMocGFyYW1ldGVyMykKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVh
bCB2b2lkIHBlcmZvcm1UYXNrKCkKLSAgICB7Ci0gICAgICAgICgqc3RhdGljX2Nhc3Q8VCo+KGlu
c3RhbmNlKCkpLiptX21ldGhvZCkobV9wYXJhbWV0ZXIxLCBtX3BhcmFtZXRlcjIsIG1fcGFyYW1l
dGVyMyk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIE1ldGhvZCBtX21ldGhvZDsKLSAgICBQMSBt
X3BhcmFtZXRlcjE7Ci0gICAgUDIgbV9wYXJhbWV0ZXIyOwotICAgIFAzIG1fcGFyYW1ldGVyMzsK
LX07Ci0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwg
dHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlw
ZW5hbWUgUDQsIHR5cGVuYW1lIE1QND4KLWNsYXNzIE1haW5UaHJlYWRUYXNrNCA6IHB1YmxpYyBD
Q01haW5UaHJlYWQ6OlRhc2sgewotcHVibGljOgotICAgIHR5cGVkZWYgdm9pZCAoVDo6Kk1ldGhv
ZCkoTVAxLCBNUDIsIE1QMywgTVA0KTsKLSAgICB0eXBlZGVmIE1haW5UaHJlYWRUYXNrNDxULCBQ
MSwgTVAxLCBQMiwgTVAyLCBQMywgTVAzLCBQNCwgTVA0PiBNYWluVGhyZWFkVGFza0ltcGw7Ci0g
ICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDE+OjpQYXJhbVR5cGUg
UGFyYW0xOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFAyPjo6
UGFyYW1UeXBlIFBhcmFtMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1Ry
YWl0czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1Ro
cmVhZFRhc2tUcmFpdHM8UDQ+OjpQYXJhbVR5cGUgUGFyYW00OwotCi0gICAgc3RhdGljIFBhc3NP
d25QdHI8TWFpblRocmVhZFRhc2tJbXBsPiBjcmVhdGUoVCogaW5zdGFuY2UsIE1ldGhvZCBtZXRo
b2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRl
cjMsIFBhcmFtNCBwYXJhbWV0ZXI0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBNYWluVGhyZWFkVGFza0ltcGwoaW5zdGFuY2UsIG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1l
dGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBN
YWluVGhyZWFkVGFzazQoVCogaW5zdGFuY2UsIE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0
ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0
ZXI0KQotICAgICAgICA6IENDTWFpblRocmVhZDo6VGFzayhpbnN0YW5jZSkKLSAgICAgICAgLCBt
X21ldGhvZChtZXRob2QpCi0gICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCi0gICAg
ICAgICwgbV9wYXJhbWV0ZXIyKHBhcmFtZXRlcjIpCi0gICAgICAgICwgbV9wYXJhbWV0ZXIzKHBh
cmFtZXRlcjMpCi0gICAgICAgICwgbV9wYXJhbWV0ZXI0KHBhcmFtZXRlcjQpCi0gICAgewotICAg
IH0KLQotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzaygpCi0gICAgewotICAgICAgICAoKnN0
YXRpY19jYXN0PFQqPihpbnN0YW5jZSgpKS4qbV9tZXRob2QpKG1fcGFyYW1ldGVyMSwgbV9wYXJh
bWV0ZXIyLCBtX3BhcmFtZXRlcjMsIG1fcGFyYW1ldGVyNCk7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIE1ldGhvZCBtX21ldGhvZDsKLSAgICBQMSBtX3BhcmFtZXRlcjE7Ci0gICAgUDIgbV9wYXJh
bWV0ZXIyOwotICAgIFAzIG1fcGFyYW1ldGVyMzsKLSAgICBQNCBtX3BhcmFtZXRlcjQ7Ci19Owot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFt
ZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQ
NCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1PgotY2xhc3MgTWFpblRo
cmVhZFRhc2s1IDogcHVibGljIENDTWFpblRocmVhZDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgdHlw
ZWRlZiB2b2lkIChUOjoqTWV0aG9kKShNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSk7Ci0gICAgdHlw
ZWRlZiBNYWluVGhyZWFkVGFzazU8VCwgUDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMywgUDQsIE1Q
NCwgUDUsIE1QNT4gTWFpblRocmVhZFRhc2tJbXBsOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jv
c3NUaHJlYWRUYXNrVHJhaXRzPFAxPjo6UGFyYW1UeXBlIFBhcmFtMTsKLSAgICB0eXBlZGVmIHR5
cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7Ci0gICAg
dHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDM+OjpQYXJhbVR5cGUgUGFy
YW0zOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFA0Pjo6UGFy
YW1UeXBlIFBhcmFtNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0
czxQNT46OlBhcmFtVHlwZSBQYXJhbTU7Ci0KLSAgICBzdGF0aWMgUGFzc093blB0cjxNYWluVGhy
ZWFkVGFza0ltcGw+IGNyZWF0ZShUKiBpbnN0YW5jZSwgTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBh
cmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBh
cmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBNYWluVGhyZWFkVGFza0ltcGwoaW5zdGFuY2UsIG1ldGhvZCwgcGFyYW1ldGVyMSwg
cGFyYW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCwgcGFyYW1ldGVyNSkpOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBNYWluVGhyZWFkVGFzazUoVCogaW5zdGFuY2UsIE1ldGhvZCBtZXRo
b2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRl
cjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSkKLSAgICAgICAgOiBDQ01h
aW5UaHJlYWQ6OlRhc2soaW5zdGFuY2UpCi0gICAgICAgICwgbV9tZXRob2QobWV0aG9kKQotICAg
ICAgICAsIG1fcGFyYW1ldGVyMShwYXJhbWV0ZXIxKQotICAgICAgICAsIG1fcGFyYW1ldGVyMihw
YXJhbWV0ZXIyKQotICAgICAgICAsIG1fcGFyYW1ldGVyMyhwYXJhbWV0ZXIzKQotICAgICAgICAs
IG1fcGFyYW1ldGVyNChwYXJhbWV0ZXI0KQotICAgICAgICAsIG1fcGFyYW1ldGVyNShwYXJhbWV0
ZXI1KQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soKQotICAg
IHsKLSAgICAgICAgKCpzdGF0aWNfY2FzdDxUKj4oaW5zdGFuY2UoKSkuKm1fbWV0aG9kKShtX3Bh
cmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFy
YW1ldGVyNSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIE1ldGhvZCBtX21ldGhvZDsKLSAgICBQ
MSBtX3BhcmFtZXRlcjE7Ci0gICAgUDIgbV9wYXJhbWV0ZXIyOwotICAgIFAzIG1fcGFyYW1ldGVy
MzsKLSAgICBQNCBtX3BhcmFtZXRlcjQ7Ci0gICAgUDUgbV9wYXJhbWV0ZXI1OwotfTsKLQotdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLVBhc3NPd25QdHI8Q0NNYWluVGhyZWFkOjpUYXNrPiBjcmVhdGVN
YWluVGhyZWFkVGFzaygKLSAgICBUKiBjb25zdCBjYWxsZWUsCi0gICAgdm9pZCAoVDo6Km1ldGhv
ZCkoKSkKLXsKLSAgICByZXR1cm4gTWFpblRocmVhZFRhc2swPFQ+OjpjcmVhdGUoCi0gICAgICAg
IGNhbGxlZSwKLSAgICAgICAgbWV0aG9kKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgUDEsIHR5cGVuYW1lIE1QMT4KLVBhc3NPd25QdHI8Q0NNYWluVGhyZWFkOjpUYXNrPiBj
cmVhdGVNYWluVGhyZWFkVGFzaygKLSAgICBUKiBjb25zdCBjYWxsZWUsCi0gICAgdm9pZCAoVDo6
Km1ldGhvZCkoTVAxKSwKLSAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSkKLXsKLSAgICByZXR1cm4g
TWFpblRocmVhZFRhc2sxPFQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwg
TVAxPjo6Y3JlYXRlKAotICAgICAgICBjYWxsZWUsCi0gICAgICAgIG1ldGhvZCwKLSAgICAgICAg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpKTsKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVu
YW1lIE1QMj4KLVBhc3NPd25QdHI8Q0NNYWluVGhyZWFkOjpUYXNrPiBjcmVhdGVNYWluVGhyZWFk
VGFzaygKLSAgICBUKiBjb25zdCBjYWxsZWUsCi0gICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBN
UDIpLAotICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAotICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIy
KQotewotICAgIHJldHVybiBNYWluVGhyZWFkVGFzazI8VCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlw
ZSwgTVAyPjo6Y3JlYXRlKAotICAgICAgICBjYWxsZWUsCi0gICAgICAgIG1ldGhvZCwKLSAgICAg
ICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAotICAgICAgICBDcm9z
c1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMikpOwotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUg
TVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzPgotUGFzc093blB0cjxDQ01haW5UaHJlYWQ6
OlRhc2s+IGNyZWF0ZU1haW5UaHJlYWRUYXNrKAotICAgIFQqIGNvbnN0IGNhbGxlZSwKLSAgICB2
b2lkIChUOjoqbWV0aG9kKShNUDEsIE1QMiwgTVAzKSwKLSAgICBjb25zdCBQMSYgcGFyYW1ldGVy
MSwKLSAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKLSAgICBjb25zdCBQMyYgcGFyYW1ldGVyMykK
LXsKLSAgICByZXR1cm4gTWFpblRocmVhZFRhc2szPFQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29w
aWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUs
IE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBNUDM+OjpjcmVhdGUo
Ci0gICAgICAgIGNhbGxlZSwKLSAgICAgICAgbWV0aG9kLAotICAgICAgICBDcm9zc1RocmVhZENv
cGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCi0gICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAy
Pjo6Y29weShwYXJhbWV0ZXIyKSwKLSAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5
KHBhcmFtZXRlcjMpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5
cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVu
YW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QND4KLVBhc3NPd25QdHI8Q0NNYWluVGhy
ZWFkOjpUYXNrPiBjcmVhdGVNYWluVGhyZWFkVGFzaygKLSAgICBUKiBjb25zdCBjYWxsZWUsCi0g
ICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0KSwKLSAgICBjb25zdCBQMSYg
cGFyYW1ldGVyMSwKLSAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKLSAgICBjb25zdCBQMyYgcGFy
YW1ldGVyMywKLSAgICBjb25zdCBQNCYgcGFyYW1ldGVyNCkKLXsKLSAgICByZXR1cm4gTWFpblRo
cmVhZFRhc2s0PFQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0
eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBNUDMsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA0
Pjo6VHlwZSwgTVA0Pjo6Y3JlYXRlKAotICAgICAgICBjYWxsZWUsCi0gICAgICAgIG1ldGhvZCwK
LSAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAotICAgICAg
ICBDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCi0gICAgICAgIENyb3Nz
VGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwKLSAgICAgICAgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpKTsKLQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0
eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBl
bmFtZSBQNSwgdHlwZW5hbWUgTVA1PgotUGFzc093blB0cjxDQ01haW5UaHJlYWQ6OlRhc2s+IGNy
ZWF0ZU1haW5UaHJlYWRUYXNrKAotICAgIFQqIGNvbnN0IGNhbGxlZSwKLSAgICB2b2lkIChUOjoq
bWV0aG9kKShNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSksCi0gICAgY29uc3QgUDEmIHBhcmFtZXRl
cjEsCi0gICAgY29uc3QgUDImIHBhcmFtZXRlcjIsCi0gICAgY29uc3QgUDMmIHBhcmFtZXRlcjMs
Ci0gICAgY29uc3QgUDQmIHBhcmFtZXRlcjQsCi0gICAgY29uc3QgUDUmIHBhcmFtZXRlcjUpCi17
Ci0gICAgcmV0dXJuIE1haW5UaHJlYWRUYXNrNTxULCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGll
cjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBN
UDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLCB0eXBlbmFtZSBD
cm9zc1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDU+OjpUeXBlLCBNUDU+OjpjcmVhdGUoCi0gICAgICAgIGNhbGxlZSwKLSAgICAgICAgbWV0
aG9kLAotICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCi0g
ICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKLSAgICAgICAg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLAotICAgICAgICBDcm9zc1Ro
cmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCi0gICAgICAgIENyb3NzVGhyZWFkQ29w
aWVyPFA1Pjo6Y29weShwYXJhbWV0ZXI1KSk7Ci0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gTWFpblRocmVhZFRhc2tfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcAppbmRleCBjNmVh
NjA4NDE0MjkyMzhkNzgxMmY4ZDNmM2RkYWRhY2QyNDY3NzM2Li45NWMyYTVjOWJlZWIwYThiNmIz
NmY3ZDdiMjQ0YWVlMGVkNzVmZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcApAQCAtMjgsNyArMjgsNiBA
QAogCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9z
dC5oIgotI2luY2x1ZGUgImNjL0NDTWFpblRocmVhZFRhc2suaCIKICNpbmNsdWRlICJjYy9DQ1Ro
cmVhZFRhc2suaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC00MCwzMyArMzks
NDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewogYm9vbCBmYWtlSW1wbFRo
cmVhZCA9IGZhbHNlOwotc3RhdGljIFdURjo6VGhyZWFkSWRlbnRpZmllciBpbXBsVGhyZWFkSUQ7
Ci1zdGF0aWMgV1RGOjpUaHJlYWRJZGVudGlmaWVyIG1haW5UaHJlYWRJRDsKK0NDVGhyZWFkKiBz
X21haW5UaHJlYWQgPSAwOworQ0NUaHJlYWQqIHNfaW1wbFRocmVhZCA9IDA7CiB9CiAKLWJvb2wg
Q0NQcm94eTo6aXNNYWluVGhyZWFkKCkKK3ZvaWQgQ0NQcm94eTo6c2V0TWFpblRocmVhZChDQ1Ro
cmVhZCogdGhyZWFkKQogewotICAgIHJldHVybiAhZmFrZUltcGxUaHJlYWQgJiYgY3VycmVudFRo
cmVhZCgpID09IG1haW5UaHJlYWRJRDsKKyAgICBzX21haW5UaHJlYWQgPSB0aHJlYWQ7CiB9CiAK
LWJvb2wgQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkKK0NDVGhyZWFkKiBDQ1Byb3h5OjptYWluVGhy
ZWFkKCkKIHsKLSAgICByZXR1cm4gZmFrZUltcGxUaHJlYWQgfHwgY3VycmVudFRocmVhZCgpID09
IGltcGxUaHJlYWRJRDsKKyAgICByZXR1cm4gc19tYWluVGhyZWFkOwogfQogCi12b2lkIENDUHJv
eHk6OnNldEltcGxUaHJlYWQoYm9vbCBpc0ltcGxUaHJlYWQpCit2b2lkIENDUHJveHk6OnNldElt
cGxUaHJlYWQoQ0NUaHJlYWQqIHRocmVhZCkKIHsKLSAgICBmYWtlSW1wbFRocmVhZCA9IGlzSW1w
bFRocmVhZDsKKyAgICBzX2ltcGxUaHJlYWQgPSB0aHJlYWQ7CiB9CiAKLXZvaWQgQ0NQcm94eTo6
c2V0SW1wbFRocmVhZChXVEY6OlRocmVhZElkZW50aWZpZXIgaWQpCitDQ1RocmVhZCogQ0NQcm94
eTo6aW1wbFRocmVhZCgpCiB7Ci0gICAgaW1wbFRocmVhZElEID0gaWQ7CisgICAgcmV0dXJuIHNf
aW1wbFRocmVhZDsKIH0KIAotdm9pZCBDQ1Byb3h5OjpzZXRNYWluVGhyZWFkKFdURjo6VGhyZWFk
SWRlbnRpZmllciBpZCkKKyNpZm5kZWYgTkRFQlVHCitib29sIENDUHJveHk6OmlzTWFpblRocmVh
ZCgpCiB7Ci0gICAgbWFpblRocmVhZElEID0gaWQ7CisgICAgQVNTRVJUKHNfbWFpblRocmVhZCk7
CisgICAgcmV0dXJuICFmYWtlSW1wbFRocmVhZCAmJiBjdXJyZW50VGhyZWFkKCkgPT0gc19tYWlu
VGhyZWFkLT50aHJlYWRJRCgpOworfQorCitib29sIENDUHJveHk6OmlzSW1wbFRocmVhZCgpCit7
CisgICAgV1RGOjpUaHJlYWRJZGVudGlmaWVyIGltcGxUaHJlYWRJRCA9IHNfaW1wbFRocmVhZCA/
IHNfaW1wbFRocmVhZC0+dGhyZWFkSUQoKSA6IDA7CisgICAgcmV0dXJuIGZha2VJbXBsVGhyZWFk
IHx8IGN1cnJlbnRUaHJlYWQoKSA9PSBpbXBsVGhyZWFkSUQ7Cit9CisjZW5kaWYKKwordm9pZCBD
Q1Byb3h5OjpzZXRJbXBsVGhyZWFkKGJvb2wgaXNJbXBsVGhyZWFkKQoreworICAgIGZha2VJbXBs
VGhyZWFkID0gaXNJbXBsVGhyZWFkOwogfQogCiAjZW5kaWYgLy8gIU5ERUJVRwpAQCAtNzYsNCAr
ODksOSBAQCBDQ1Byb3h5OjpDQ1Byb3h5KCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
fQogCitDQ1Byb3h5Ojp+Q0NQcm94eSgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
K30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IDUxNmI2Nzk1NjU1MjljMzkzNTEzNjNlNWE2ZWZhMTE3
YzdhMDEzNTkuLmE2MjMwZWFjZDU2ODlkNWJlYTQyZjBkMGNkYjljNjM4NTMzNzg4YWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Byb3h5LmgKQEAgLTUwLDcgKzUwLDEzIEBAIGNsYXNzIFRleHR1cmVNYW5hZ2VyOwogY2xhc3Mg
Q0NQcm94eSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NQcm94eSk7CiBwdWJsaWM6Ci0g
ICAgdmlydHVhbCB+Q0NQcm94eSgpIHsgfQorICAgIHN0YXRpYyB2b2lkIHNldE1haW5UaHJlYWQo
Q0NUaHJlYWQqKTsKKyAgICBzdGF0aWMgQ0NUaHJlYWQqIG1haW5UaHJlYWQoKTsKKworICAgIHN0
YXRpYyB2b2lkIHNldEltcGxUaHJlYWQoQ0NUaHJlYWQqKTsKKyAgICBzdGF0aWMgQ0NUaHJlYWQq
IGltcGxUaHJlYWQoKTsKKworICAgIHZpcnR1YWwgfkNDUHJveHkoKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBjb21wb3NpdGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKSA9
IDA7CiAKQEAgLTg2LDggKzkyLDYgQEAgcHVibGljOgogCiAjaWZuZGVmIE5ERUJVRwogICAgIHN0
YXRpYyB2b2lkIHNldEltcGxUaHJlYWQoYm9vbCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0SW1wbFRo
cmVhZChXVEY6OlRocmVhZElkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIHNldE1haW5UaHJl
YWQoV1RGOjpUaHJlYWRJZGVudGlmaWVyKTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3Bl
ZE1haW5UaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY29wZWRNYWluVGhyZWFkUHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYmZkZjVmYjg4MjY1MDk0MGU3MTBjZWM0N2Y5Njc4ZTAxZTFmOTdkOS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZE1haW5UaHJlYWRQcm94eS5oCisr
KyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDQ1Nj
b3BlZE1haW5UaHJlYWRQcm94eV9oCi0jZGVmaW5lIENDU2NvcGVkTWFpblRocmVhZFByb3h5X2gK
LQotI2luY2x1ZGUgImNjL0NDTWFpblRocmVhZFRhc2suaCIKLSNpbmNsdWRlICJjYy9DQ1Byb3h5
LmgiCi0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotLy8gVGhpcyBjbGFzcyBpcyBhIHByb3h5IHVzZWQgdG8gcG9zdCB0YXNrcyB0
byB0aGUgbWFpbiB0aHJlYWQgZnJvbSBhbnkgb3RoZXIgdGhyZWFkLiBUaGUgcHJveHkgbWF5IGJl
IHNodXQgZG93biBhdAotLy8gYW55IHBvaW50IGZyb20gdGhlIG1haW4gdGhyZWFkIGFmdGVyIHdo
aWNoIG5vIG1vcmUgdGFza3MgcG9zdGVkIHRvIHRoZSBwcm94eSB3aWxsIHJ1bi4gSW4gb3RoZXIg
d29yZHMsIGFsbAotLy8gdGFza3MgcG9zdGVkIHZpYSBhIHByb3h5IGFyZSBzY29wZWQgdG8gdGhl
IGxpZmVjeWNsZSBvZiB0aGUgcHJveHkuIFVzZSB0aGlzIHdoZW4gcG9zdGluZyB0YXNrcyB0byBh
biBvYmplY3QgdGhhdAotLy8gbWlnaHQgZGllIHdpdGggdGFza3MgaW4gZmxpZ2h0LgotLy8KLS8v
IFRoZSBwcm94eSBtdXN0IGJlIGNyZWF0ZWQgYW5kIHNodXQgZG93biBmcm9tIHRoZSBtYWluIHRo
cmVhZCwgdGFza3MgbWF5IGJlIHBvc3RlZCBmcm9tIGFueSB0aHJlYWQuCi0vLwotLy8gSW1wbGVt
ZW50YXRpb24gbm90ZTogVW5saWtlIFNjb3BlZFJ1bm5hYmxlTWV0aG9kRmFjdG9yeSBpbiBDaHJv
bWl1bSwgcGVuZGluZyB0YXNrcyBhcmUgbm90IGNhbmNlbGxlZCBieSBhY3R1YWxseQotLy8gZGVz
dHJveWluZyB0aGUgcHJveHkuIEluc3RlYWQgZWFjaCBwZW5kaW5nIHRhc2sgaG9sZHMgYSByZWZl
cmVuY2UgdG8gdGhlIHByb3h5IHRvIGF2b2lkIG1haW50YWluaW5nIGFuIGV4cGxpY2l0Ci0vLyBs
aXN0IG9mIG91dHN0YW5kaW5nIHRhc2tzLgotY2xhc3MgQ0NTY29wZWRNYWluVGhyZWFkUHJveHkg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q0NTY29wZWRNYWluVGhyZWFkUHJveHk+IHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDQ1Njb3BlZE1haW5UaHJlYWRQcm94eT4g
Y3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ0NTY29wZWRNYWluVGhyZWFkUHJveHkpOwot
ICAgIH0KLQotICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLiBQb3N0cyBhIHRh
c2sgdG8gdGhlIG1haW4gdGhyZWFkIHRoYXQgcnVucyB1bmxlc3MKLSAgICAvLyBzaHV0ZG93bigp
IGlzIGNhbGxlZCBiZWZvcmUgaXQgcnVucy4KLSAgICB2b2lkIHBvc3RUYXNrKFBhc3NPd25QdHI8
Q0NNYWluVGhyZWFkOjpUYXNrPiB0YXNrKQotICAgIHsKLSAgICAgICAgcmVmKCk7Ci0gICAgICAg
IENDTWFpblRocmVhZDo6cG9zdFRhc2soY3JlYXRlTWFpblRocmVhZFRhc2sodGhpcywgJkNDU2Nv
cGVkTWFpblRocmVhZFByb3h5OjpydW5UYXNrSWZOb3RTaHV0ZG93biwgdGFzaykpOwotICAgIH0K
LQotICAgIHZvaWQgc2h1dGRvd24oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKENDUHJveHk6Omlz
TWFpblRocmVhZCgpKTsKLSAgICAgICAgQVNTRVJUKCFtX3NodXRkb3duKTsKLSAgICAgICAgbV9z
aHV0ZG93biA9IHRydWU7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIENDU2NvcGVkTWFpblRocmVh
ZFByb3h5KCkKLSAgICAgICAgOiBtX3NodXRkb3duKGZhbHNlKQotICAgIHsKLSAgICB9Ci0KLSAg
ICB2b2lkIHJ1blRhc2tJZk5vdFNodXRkb3duKFBhc3NPd25QdHI8Q0NNYWluVGhyZWFkOjpUYXNr
PiBwb3BUYXNrKQotICAgIHsKLSAgICAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgp
KTsKLSAgICAgICAgT3duUHRyPENDTWFpblRocmVhZDo6VGFzaz4gdGFzayA9IHBvcFRhc2s7Ci0g
ICAgICAgIGlmICghbV9zaHV0ZG93bikKLSAgICAgICAgICAgIHRhc2stPnBlcmZvcm1UYXNrKCk7
Ci0gICAgICAgIGRlcmVmKCk7Ci0gICAgfQotCi0gICAgYm9vbCBtX3NodXRkb3duOyAvLyBPbmx5
IGFjY2Vzc2VkIG9uIHRoZSBtYWluIHRocmVhZAotfTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVk
VGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2NvcGVkVGhyZWFkUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWRhNzBhZGQyZWNjOGIyYmVh
MzA2ZGIwNjNjYmE0ZjA0MzA2MWMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oCkBAIC0w
LDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NTY29wZWRUaHJlYWRQcm94eV9o
CisjZGVmaW5lIENDU2NvcGVkVGhyZWFkUHJveHlfaAorCisjaW5jbHVkZSAiY2MvQ0NQcm94eS5o
IgorI2luY2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFRoaXMgY2xhc3MgaXMg
YSBwcm94eSB1c2VkIHRvIHBvc3QgdGFza3MgdG8gYSBnaXZlbiB0aHJlYWQgZnJvbSBhbnkgb3Ro
ZXIgdGhyZWFkLiBUaGUgcHJveHkgbWF5IGJlIHNodXQgZG93biBhdAorLy8gYW55IHBvaW50IGZy
b20gdGhlIG1haW4gdGhyZWFkIGFmdGVyIHdoaWNoIG5vIG1vcmUgdGFza3MgcG9zdGVkIHRvIHRo
ZSBwcm94eSB3aWxsIHJ1bi4gSW4gb3RoZXIgd29yZHMsIGFsbAorLy8gdGFza3MgcG9zdGVkIHZp
YSBhIHByb3h5IGFyZSBzY29wZWQgdG8gdGhlIGxpZmVjeWNsZSBvZiB0aGUgcHJveHkuIFVzZSB0
aGlzIHdoZW4gcG9zdGluZyB0YXNrcyB0byBhbiBvYmplY3QgdGhhdAorLy8gbWlnaHQgZGllIHdp
dGggdGFza3MgaW4gZmxpZ2h0LgorLy8KKy8vIFRoZSBwcm94eSBtdXN0IGJlIGNyZWF0ZWQgYW5k
IHNodXQgZG93biBmcm9tIHRoZSBtYWluIHRocmVhZCwgdGFza3MgbWF5IGJlIHBvc3RlZCBmcm9t
IGFueSB0aHJlYWQuCisvLworLy8gSW1wbGVtZW50YXRpb24gbm90ZTogVW5saWtlIFNjb3BlZFJ1
bm5hYmxlTWV0aG9kRmFjdG9yeSBpbiBDaHJvbWl1bSwgcGVuZGluZyB0YXNrcyBhcmUgbm90IGNh
bmNlbGxlZCBieSBhY3R1YWxseQorLy8gZGVzdHJveWluZyB0aGUgcHJveHkuIEluc3RlYWQgZWFj
aCBwZW5kaW5nIHRhc2sgaG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIHByb3h5IHRvIGF2b2lkIG1h
aW50YWluaW5nIGFuIGV4cGxpY2l0CisvLyBsaXN0IG9mIG91dHN0YW5kaW5nIHRhc2tzLgorY2xh
c3MgQ0NTY29wZWRUaHJlYWRQcm94eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDQ1Nj
b3BlZFRocmVhZFByb3h5PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NTY29w
ZWRUaHJlYWRQcm94eT4gY3JlYXRlKENDVGhyZWFkKiB0aHJlYWQpCisgICAgeworICAgICAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IHRocmVhZC0+dGhyZWFkSUQoKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ0NTY29wZWRUaHJlYWRQcm94eSh0aHJlYWQpKTsKKyAgICB9CisK
KyAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4gUG9zdHMgYSB0YXNrIHRvIHRo
ZSBtYWluIHRocmVhZCB0aGF0IHJ1bnMgdW5sZXNzCisgICAgLy8gc2h1dGRvd24oKSBpcyBjYWxs
ZWQgYmVmb3JlIGl0IHJ1bnMuCisgICAgdm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPENDVGhyZWFk
OjpUYXNrPiB0YXNrKQorICAgIHsKKyAgICAgICAgcmVmKCk7CisgICAgICAgIG1fdGhyZWFkLT5w
b3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDU2NvcGVkVGhyZWFkUHJveHk6OnJ1
blRhc2tJZk5vdFNodXRkb3duLCB0YXNrKSk7CisgICAgfQorCisgICAgdm9pZCBzaHV0ZG93bigp
CisgICAgeworICAgICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdGhyZWFkLT50aHJl
YWRJRCgpKTsKKyAgICAgICAgQVNTRVJUKCFtX3NodXRkb3duKTsKKyAgICAgICAgbV9zaHV0ZG93
biA9IHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IENDU2NvcGVkVGhyZWFk
UHJveHkoQ0NUaHJlYWQqIHRocmVhZCkKKyAgICAgICAgOiBtX3RocmVhZCh0aHJlYWQpCisgICAg
ICAgICwgbV9zaHV0ZG93bihmYWxzZSkgeyB9CisKKyAgICB2b2lkIHJ1blRhc2tJZk5vdFNodXRk
b3duKFBhc3NPd25QdHI8Q0NUaHJlYWQ6OlRhc2s+IHBvcFRhc2spCisgICAgeworICAgICAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdGhyZWFkLT50aHJlYWRJRCgpKTsKKyAgICAgICAg
T3duUHRyPENDVGhyZWFkOjpUYXNrPiB0YXNrID0gcG9wVGFzazsKKyAgICAgICAgaWYgKCFtX3No
dXRkb3duKQorICAgICAgICAgICAgdGFzay0+cGVyZm9ybVRhc2soKTsKKyAgICAgICAgZGVyZWYo
KTsKKyAgICB9CisKKyAgICBDQ1RocmVhZCogbV90aHJlYWQ7CisgICAgYm9vbCBtX3NodXRkb3du
OyAvLyBPbmx5IGFjY2Vzc2VkIG9uIHRoZSBtYWluIHRocmVhZAorfTsKKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggYzE2MGUxOThiNGI5
NDQ2NzNkYWMwMTQ1ZGMxMTFjNDViYzY4Y2Q2Yi4uZGRjMDFjMTQwOWI4YzkxMjlkMWNmYTM5Mjdj
NDQxMzhkZmU1ZWM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAK
QEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNp
bmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCi0j
aW5jbHVkZSAiY2MvQ0NNYWluVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgImNjL0NDU2Nyb2xsQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggNmY0ZWQ5
MGQxMGE2ODg1MzBiNDNlZTMyYjlkYTQ1NjNkZGY3OGI3ZS4uOGQwZWZkNzM2ZDc0MzFkNTg0MTU0
ZTkwODkxMThkNjQzNGViNDM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTMy
LDkgKzMyLDggQEAKICNpbmNsdWRlICJjYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJjYy9DQ0lucHV0SGFuZGxlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5o
IgotI2luY2x1ZGUgImNjL0NDTWFpblRocmVhZFRhc2suaCIKICNpbmNsdWRlICJjYy9DQ1NjaGVk
dWxlci5oIgotI2luY2x1ZGUgImNjL0NDU2NvcGVkTWFpblRocmVhZFByb3h5LmgiCisjaW5jbHVk
ZSAiY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUgImNjL0NDU2Nyb2xsQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9D
Q1RocmVhZFRhc2suaCIKQEAgLTQ1LDE2ICs0NCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0NUaHJlYWQqIENDVGhyZWFkUHJveHk6OnNfY2NUaHJl
YWQgPSAwOwotCi12b2lkIENDVGhyZWFkUHJveHk6OnNldFRocmVhZChDQ1RocmVhZCogY2NUaHJl
YWQpCi17Ci0gICAgc19jY1RocmVhZCA9IGNjVGhyZWFkOwotI2lmbmRlZiBOREVCVUcKLSAgICBD
Q1Byb3h5OjpzZXRJbXBsVGhyZWFkKHNfY2NUaHJlYWQtPnRocmVhZElEKCkpOwotI2VuZGlmCi19
Ci0KIFBhc3NPd25QdHI8Q0NQcm94eT4gQ0NUaHJlYWRQcm94eTo6Y3JlYXRlKENDTGF5ZXJUcmVl
SG9zdCogbGF5ZXJUcmVlSG9zdCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDVGhyZWFk
UHJveHkobGF5ZXJUcmVlSG9zdCkpOwpAQCAtNjcsNyArNTYsNiBAQCBDQ1RocmVhZFByb3h5OjpD
Q1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKICAgICAsIG1fc3Rh
cnRlZChmYWxzZSkKICAgICAsIG1fbGFzdEV4ZWN1dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNlcXVl
bmNlTnVtYmVyKC0xKQogICAgICwgbV9udW1CZWdpbkZyYW1lQW5kQ29tbWl0c0lzc3VlZE9uSW1w
bFRocmVhZCgwKQotICAgICwgbV9tYWluVGhyZWFkUHJveHkoQ0NTY29wZWRNYWluVGhyZWFkUHJv
eHk6OmNyZWF0ZSgpKQogICAgICwgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQoMCkKICAg
ICAsIG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKDApCiAg
ICAgLCBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCgwKQpAQCAtNzUsNiArNjMs
NyBAQCBDQ1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJU
cmVlSG9zdCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94
eSIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgbV9tYWluVGhy
ZWFkUHJveHkgPSBDQ1Njb3BlZFRocmVhZFByb3h5OjpjcmVhdGUoQ0NQcm94eTo6bWFpblRocmVh
ZCgpKTsKIH0KIAogQ0NUaHJlYWRQcm94eTo6fkNDVGhyZWFkUHJveHkoKQpAQCAtOTYsMTEgKzg1
LDExIEBAIGJvb2wgQ0NUaHJlYWRQcm94eTo6Y29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4
ZWxzLCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgICAgICAvLyBwb2ludGVycyB2aWEgdGhlIEND
VGhyZWFkIHRhc2sgbW9kZWwgaXMgcmVhbGx5IG1lc3N5LiBFZmZlY3RpdmVseSwgd2UKICAgICAg
ICAgLy8gYXJlIG1ha2luZyBhIGJsb2NraW5nIGNhbGwgdG8gY3JlYXRlQmVnaW5GcmFtZUFuZENv
bW1pdFRhc2tPbkltcGxUaHJlYWQsCiAgICAgICAgIC8vIGFuZCB0cnlpbmcgdG8gZ2V0IHRoZSBD
Q01haW5UaHJlYWQ6OlRhc2sgaXQgcmV0dXJucyBzbyB3ZSBjYW4gcnVuIGl0LgotICAgICAgICBP
d25QdHI8Q0NNYWluVGhyZWFkOjpUYXNrPiBiZWdpbkZyYW1lQW5kQ29tbWl0VGFzazsKKyAgICAg
ICAgT3duUHRyPENDVGhyZWFkOjpUYXNrPiBiZWdpbkZyYW1lQW5kQ29tbWl0VGFzazsKICAgICAg
ICAgewotICAgICAgICAgICAgQ0NNYWluVGhyZWFkOjpUYXNrKiB0YXNrUHRyID0gMDsKKyAgICAg
ICAgICAgIENDVGhyZWFkOjpUYXNrKiB0YXNrUHRyID0gMDsKICAgICAgICAgICAgIENDQ29tcGxl
dGlvbkV2ZW50IGNvbXBsZXRpb247Ci0gICAgICAgICAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhj
cmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6Om9idGFpbkJlZ2luRnJhbWVB
bmRDb21taXRUYXNrRnJvbUNDVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0
aW9uKSwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmdGFza1B0cikpKTsKKyAgICAgICAgICAgIEND
UHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZD
Q1RocmVhZFByb3h5OjpvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVhZCwg
QWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbiksIEFsbG93Q3Jvc3NUaHJlYWRBY2Nl
c3MoJnRhc2tQdHIpKSk7CiAgICAgICAgICAgICBjb21wbGV0aW9uLndhaXQoKTsKICAgICAgICAg
ICAgIGJlZ2luRnJhbWVBbmRDb21taXRUYXNrID0gYWRvcHRQdHIodGFza1B0cik7CiAgICAgICAg
IH0KQEAgLTExMiw3ICsxMDEsNyBAQCBib29sIENDVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUFuZFJl
YWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBSZWFkYmFja1Jl
cXVlc3QgcmVxdWVzdDsKICAgICByZXF1ZXN0LnJlY3QgPSByZWN0OwogICAgIHJlcXVlc3QucGl4
ZWxzID0gcGl4ZWxzOwotICAgIHNfY2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFz
ayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6cmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkLCBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKCZyZXF1ZXN0KSkpOworICAgIENDUHJveHk6OmltcGxUaHJlYWQo
KS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpyZXF1
ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJnJlcXVlc3Qp
KSk7CiAgICAgcmVxdWVzdC5jb21wbGV0aW9uLndhaXQoKTsKICAgICByZXR1cm4gcmVxdWVzdC5z
dWNjZXNzOwogfQpAQCAtMTQxLDcgKzEzMCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZmluaXNo
QWxsUmVuZGVyaW5nKCkKIAogICAgIC8vIE1ha2Ugc3VyZSBhbGwgR0wgZHJhd2luZyBpcyBmaW5p
c2hlZCBvbiB0aGUgaW1wbCB0aHJlYWQuCiAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlv
bjsKLSAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkND
VGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZCwgQWxsb3dDcm9zc1Ro
cmVhZEFjY2VzcygmY29tcGxldGlvbikpKTsKKyAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBv
c3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxs
UmVuZGVyaW5nT25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9u
KSkpOwogICAgIGNvbXBsZXRpb24ud2FpdCgpOwogfQogCkBAIC0xNjgsNyArMTU3LDcgQEAgYm9v
bCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCiAgICAgQ0NDb21wbGV0
aW9uRXZlbnQgY29tcGxldGlvbjsKICAgICBib29sIGluaXRpYWxpemVTdWNjZWVkZWQgPSBmYWxz
ZTsKICAgICBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllczsKLSAgICBzX2Nj
VGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6
OmluaXRpYWxpemVMYXllclJlbmRlcmVyT25JbXBsVGhyZWFkLAorICAgIENDUHJveHk6OmltcGxU
aHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5
Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoY29udGV4dFB0
ciksIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmaW5pdGlh
bGl6ZVN1Y2NlZWRlZCksIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNhcGFiaWxpdGllcyksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFk
QWNjZXNzKCZtX2NvbXBvc2l0b3JJZGVudGlmaWVyKSkpOwpAQCAtMjAzLDcgKzE5Miw3IEBAIHZv
aWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNBbmltYXRlKCkKIAogICAgIFRSQUNFX0VWRU5UKCJD
Q1RocmVhZFByb3h5OjpzZXROZWVkc0FuaW1hdGlvbiIsIHRoaXMsIDApOwogICAgIG1fY29tbWl0
UmVxdWVzdGVkID0gdHJ1ZTsKLSAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVh
ZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQW5pbWF0ZU9uSW1wbFRocmVhZCkp
OworICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNr
KHRoaXMsICZDQ1RocmVhZFByb3h5OjpzZXROZWVkc0FuaW1hdGVPbkltcGxUaHJlYWQpKTsKIH0K
IAogdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCgpCkBAIC0yMTQsNyArMjAzLDcg
QEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCgpCiAKICAgICBUUkFDRV9FVkVO
VCgiQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXQiLCB0aGlzLCAwKTsKICAgICBtX2NvbW1p
dFJlcXVlc3RlZCA9IHRydWU7Ci0gICAgc19jY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJl
YWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCkp
OworICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNr
KHRoaXMsICZDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCkpOwogfQog
CiB2b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRzQW5pbWF0ZU9uSW1wbFRocmVhZCgpCkBAIC0y
MjksNyArMjE4LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpvblN3YXBCdWZmZXJzQ29tcGxldGVP
bkltcGxUaHJlYWQoKQogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgVFJBQ0VfRVZF
TlQoIkNDVGhyZWFkUHJveHk6Om9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVhZCIsIHRo
aXMsIDApOwogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5kaWRTd2FwQnVmZmVyc0NvbXBs
ZXRlKCk7Ci0gICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZU1haW5UaHJlYWRU
YXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKSk7CisgICAg
bV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NU
aHJlYWRQcm94eTo6ZGlkQ29tcGxldGVTd2FwQnVmZmVycykpOwogfQogCiB2b2lkIENDVGhyZWFk
UHJveHk6OnNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkKQEAgLTI0MywxNCArMjMyLDE0IEBA
IHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXcoKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVk
cmF3IiwgdGhpcywgMCk7Ci0gICAgc19jY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRU
YXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCkpOwor
ICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRo
aXMsICZDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCkpOwogfQogCiB2
b2lkIENDVGhyZWFkUHJveHk6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKLSAg
ICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFk
UHJveHk6OnNldFZpc2libGVPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNv
bXBsZXRpb24pLCB2aXNpYmxlKSk7CisgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFz
ayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnNldFZpc2libGVPbklt
cGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pLCB2aXNpYmxlKSk7
CiAgICAgY29tcGxldGlvbi53YWl0KCk7CiB9CiAKQEAgLTI3NiwxMCArMjY1LDEwIEBAIHZvaWQg
Q0NUaHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKQogdm9pZCBDQ1RocmVh
ZFByb3h5OjpzdGFydCgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NF
UlQoc19jY1RocmVhZCk7CisgICAgQVNTRVJUKENDUHJveHk6OmltcGxUaHJlYWQoKSk7CiAgICAg
Ly8gQ3JlYXRlIExheWVyVHJlZUhvc3RJbXBsLgogICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBs
ZXRpb247Ci0gICAgc19jY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMs
ICZDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9uSW1wbFRocmVhZCwgQWxsb3dDcm9zc1Ro
cmVhZEFjY2VzcygmY29tcGxldGlvbikpKTsKKyAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBv
c3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6
ZUltcGxPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pKSk7
CiAgICAgY29tcGxldGlvbi53YWl0KCk7CiAKICAgICBtX3N0YXJ0ZWQgPSB0cnVlOwpAQCAtMjkz
LDcgKzI4Miw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RvcCgpCiAKICAgICAvLyBTeW5jaHJv
bm91c2x5IGRlbGV0ZXMgdGhlIGltcGwuCiAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlv
bjsKLSAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkND
VGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pKSk7CisgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5w
b3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmxheWVyVHJl
ZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRp
b24pKSk7CiAgICAgY29tcGxldGlvbi53YWl0KCk7CiAKICAgICBtX21haW5UaHJlYWRQcm94eS0+
c2h1dGRvd24oKTsgLy8gU3RvcCBydW5uaW5nIHRhc2tzIHBvc3RlZCB0byB1cy4KQEAgLTMxOSwx
NCArMzA4LDE0IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFt
ZSgpCiAgICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUJlZ2luRnJhbWVBbmRD
b21taXRUYXNrT25JbXBsVGhyZWFkKCkpOwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6Om9idGFp
bkJlZ2luRnJhbWVBbmRDb21taXRUYXNrRnJvbUNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBj
b21wbGV0aW9uLCBDQ01haW5UaHJlYWQ6OlRhc2sqKiB0YXNrUHRyKQordm9pZCBDQ1RocmVhZFBy
b3h5OjpvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVhZChDQ0NvbXBsZXRp
b25FdmVudCogY29tcGxldGlvbiwgQ0NUaHJlYWQ6OlRhc2sqKiB0YXNrUHRyKQogewotICAgIE93
blB0cjxDQ01haW5UaHJlYWQ6OlRhc2s+IHRhc2sgPSBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0
VGFza09uSW1wbFRocmVhZCgpOworICAgIE93blB0cjxDQ1RocmVhZDo6VGFzaz4gdGFzayA9IGNy
ZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25JbXBsVGhyZWFkKCk7CiAgICAgKnRhc2tQdHIg
PSB0YXNrLmxlYWtQdHIoKTsKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKIH0KIAotUGFzc093
blB0cjxDQ01haW5UaHJlYWQ6OlRhc2s+IENDVGhyZWFkUHJveHk6OmNyZWF0ZUJlZ2luRnJhbWVB
bmRDb21taXRUYXNrT25JbXBsVGhyZWFkKCkKK1Bhc3NPd25QdHI8Q0NUaHJlYWQ6OlRhc2s+IEND
VGhyZWFkUHJveHk6OmNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25JbXBsVGhyZWFkKCkK
IHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6Y3JlYXRlQmVnaW5GcmFtZUFuZENv
bW1pdFRhc2tPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFk
KCkpOwpAQCAtMzM0LDcgKzMyMyw3IEBAIFBhc3NPd25QdHI8Q0NNYWluVGhyZWFkOjpUYXNrPiBD
Q1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1wCiAKICAgICAv
LyBOT1RFLCBpdCBpcyBwb3NzaWJsZSB0byByZWNlaWV2ZSBhIHJlcXVlc3QgZm9yIGEKICAgICAv
LyBiZWdpbkZyYW1lQW5kQ29tbWl0T25JbXBsVGhyZWFkIGZyb20gZmluaXNoQWxsUmVuZGVyaW5n
IHdoaWxlIGEKLSAgICAvLyBiZWdpbkZyYW1lQW5kQ29tbWl0T25JbXBsVGhyZWFkIGlzIGVucXVl
dWVkLiBTaW5jZSBDQ01haW5UaHJlYWQgZG9lc24ndAorICAgIC8vIGJlZ2luRnJhbWVBbmRDb21t
aXRPbkltcGxUaHJlYWQgaXMgZW5xdWV1ZWQuIFNpbmNlIENDVGhyZWFkIGRvZXNuJ3QKICAgICAv
LyBwcm92aWRlIGEgdGhyZWFkc2FmZSB3YXkgdG8gY2FuY2VsIHRhc2tzLCBpdCBpcyBpbXBvcnRh
bnQgdGhhdAogICAgIC8vIGJlZ2luRnJhbWVBbmRDb21taXQgYmUgc3RydWN0dXJlZCB0byB1bmRl
cnN0YW5kIHRoYXQgaXQgbWF5IGdldCBjYWxsZWQgYXQKICAgICAvLyBhIHBvaW50IHRoYXQgaXQg
c2hvdWxkbid0LiBXZSBkbyB0aGlzIGJ5IGFzc2lnbmluZyBhIHNlcXVlbmNlIG51bWJlciB0bwpA
QCAtMzQ0LDcgKzMzMyw3IEBAIFBhc3NPd25QdHI8Q0NNYWluVGhyZWFkOjpUYXNrPiBDQ1RocmVh
ZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1wCiAgICAgaW50IHRoaXNU
YXNrU2VxdWVuY2VOdW1iZXIgPSBtX251bUJlZ2luRnJhbWVBbmRDb21taXRzSXNzdWVkT25JbXBs
VGhyZWFkOwogICAgIG1fbnVtQmVnaW5GcmFtZUFuZENvbW1pdHNJc3N1ZWRPbkltcGxUaHJlYWQr
KzsKICAgICBPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5mbyA9IG1fbGF5ZXJU
cmVlSG9zdEltcGwtPnByb2Nlc3NTY3JvbGxEZWx0YXMoKTsKLSAgICByZXR1cm4gY3JlYXRlTWFp
blRocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQsIHRo
aXNUYXNrU2VxdWVuY2VOdW1iZXIsIGZyYW1lQmVnaW5UaW1lLCBzY3JvbGxJbmZvLnJlbGVhc2Uo
KSk7CisgICAgcmV0dXJuIGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6
YmVnaW5GcmFtZUFuZENvbW1pdCwgdGhpc1Rhc2tTZXF1ZW5jZU51bWJlciwgZnJhbWVCZWdpblRp
bWUsIHNjcm9sbEluZm8ucmVsZWFzZSgpKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdp
bkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW1l
LCBQYXNzT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+IHNjcm9sbEluZm8pCkBAIC0zODcsNyAr
Mzc2LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1
ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICAgICAgLy8gY29vcmRpbmF0ZWQg
YnkgdGhlIENDU2NoZWR1bGVyLgogICAgICAgICBUUkFDRV9FVkVOVCgiY29tbWl0IiwgdGhpcywg
MCk7CiAgICAgICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247Ci0gICAgICAgIHNfY2NU
aHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6
YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZj
b21wbGV0aW9uKSkpOworICAgICAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNy
ZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRl
T25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSkpOwogICAg
ICAgICBjb21wbGV0aW9uLndhaXQoKTsKICAgICB9CiAKQEAgLTQ4OCw3ICs0NzcsNyBAQCB2b2lk
IENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCkKICAgICAvLyBUZWxs
IHRoZSBtYWluIHRocmVhZCB0aGF0IHRoZSB0aGUgbmV3bHktY29tbWl0ZWQgZnJhbWUgd2FzIGRy
YXduLgogICAgIGlmIChtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZU9uSW1wbFRocmVh
ZCkgewogICAgICAgICBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZU9uSW1wbFRocmVh
ZCA9IGZhbHNlOwotICAgICAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlTWFp
blRocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmRpZENvbW1pdEFuZERyYXdGcmFtZSkp
OworICAgICAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNr
KHRoaXMsICZDQ1RocmVhZFByb3h5OjpkaWRDb21taXRBbmREcmF3RnJhbWUpKTsKICAgICB9CiB9
CiAKQEAgLTUxNCw3ICs1MDMsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVJbXBs
T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogICAgIEFTU0VSVChp
c0ltcGxUaHJlYWQoKSk7CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbCA9IG1fbGF5ZXJUcmVlSG9z
dC0+Y3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwodGhpcyk7CiAgICAgY29uc3QgZG91YmxlIGRpc3Bs
YXlSZWZyZXNoSW50ZXJ2YWxNcyA9IDEwMDAuMCAvIDYwLjA7Ci0gICAgT3duUHRyPENDRnJhbWVS
YXRlQ29udHJvbGxlcj4gZnJhbWVSYXRlQ29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBDQ0ZyYW1l
UmF0ZUNvbnRyb2xsZXIoQ0NEZWxheUJhc2VkVGltZVNvdXJjZTo6Y3JlYXRlKGRpc3BsYXlSZWZy
ZXNoSW50ZXJ2YWxNcywgc19jY1RocmVhZCkpKTsKKyAgICBPd25QdHI8Q0NGcmFtZVJhdGVDb250
cm9sbGVyPiBmcmFtZVJhdGVDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IENDRnJhbWVSYXRlQ29u
dHJvbGxlcihDQ0RlbGF5QmFzZWRUaW1lU291cmNlOjpjcmVhdGUoZGlzcGxheVJlZnJlc2hJbnRl
cnZhbE1zLCBDQ1Byb3h5OjppbXBsVGhyZWFkKCkpKSk7CiAgICAgbV9zY2hlZHVsZXJPbkltcGxU
aHJlYWQgPSBDQ1NjaGVkdWxlcjo6Y3JlYXRlKHRoaXMsIGZyYW1lUmF0ZUNvbnRyb2xsZXIucmVs
ZWFzZSgpKTsKICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0VmlzaWJsZShtX2xheWVy
VHJlZUhvc3RJbXBsLT52aXNpYmxlKCkpOwogICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDAxNDBhNzE1ZGVmZjM4YmNkMzAwNjYzNzE3N2JiNTNm
YTY0OWU2YmMuLmViZjQzMjg4MzljMmFhNDFiMjk5NDIyNGI4MTljYjg0ZDM1MTQzMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTI3LDkgKzI3LDkgQEAKIAogI2luY2x1ZGUgImNjL0ND
Q29tcGxldGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgot
I2luY2x1ZGUgImNjL0NDTWFpblRocmVhZC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNp
bmNsdWRlICJjYy9DQ1NjaGVkdWxlci5oIgorI2luY2x1ZGUgImNjL0NDVGhyZWFkLmgiCiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNywxNCArMzcs
MTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0NJbnB1dEhhbmRsZXI7CiBjbGFzcyBD
Q0xheWVyVHJlZUhvc3Q7CiBjbGFzcyBDQ1NjaGVkdWxlcjsKLWNsYXNzIENDU2NvcGVkTWFpblRo
cmVhZFByb3h5OworY2xhc3MgQ0NTY29wZWRUaHJlYWRQcm94eTsKIGNsYXNzIENDVGV4dHVyZVVw
ZGF0ZXI7CiBjbGFzcyBDQ1RocmVhZDsKIAogY2xhc3MgQ0NUaHJlYWRQcm94eSA6IHB1YmxpYyBD
Q1Byb3h5LCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50LCBDQ1NjaGVkdWxlckNsaWVudCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgc2V0VGhyZWFkKENDVGhyZWFkKik7Ci0KICAgICBzdGF0
aWMgUGFzc093blB0cjxDQ1Byb3h5PiBjcmVhdGUoQ0NMYXllclRyZWVIb3N0Kik7CiAKICAgICB2
aXJ0dWFsIH5DQ1RocmVhZFByb3h5KCk7CkBAIC04MCwyMCArNzgsMjAgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwogCi0g
ICAgLy8gQ2FsbGVkIG9uIENDTWFpblRocmVhZAorICAgIC8vIENhbGxlZCBvbiBtYWluIHRocmVh
ZAogICAgIHZvaWQgYmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJs
ZSBmcmFtZUJlZ2luVGltZSwgUGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0Pik7CiAgICAg
dm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKTsKICAgICB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1
ZmZlcnMoKTsKIAotICAgIC8vIENhbGxlZCBvbiBDQ1RocmVhZAorICAgIC8vIENhbGxlZCBvbiBp
bXBsIHRocmVhZAogICAgIHN0cnVjdCBSZWFkYmFja1JlcXVlc3QgewogICAgICAgICBDQ0NvbXBs
ZXRpb25FdmVudCBjb21wbGV0aW9uOwogICAgICAgICBib29sIHN1Y2Nlc3M7CiAgICAgICAgIHZv
aWQqIHBpeGVsczsKICAgICAgICAgSW50UmVjdCByZWN0OwogICAgIH07Ci0gICAgUGFzc093blB0
cjxDQ01haW5UaHJlYWQ6OlRhc2s+IGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25JbXBs
VGhyZWFkKCk7Ci0gICAgdm9pZCBvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1Ro
cmVhZChDQ0NvbXBsZXRpb25FdmVudCosIENDTWFpblRocmVhZDo6VGFzayoqKTsKKyAgICBQYXNz
T3duUHRyPENDVGhyZWFkOjpUYXNrPiBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1w
bFRocmVhZCgpOworICAgIHZvaWQgb2J0YWluQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tGcm9tQ0NU
aHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBDQ1RocmVhZDo6VGFzayoqKTsKICAgICB2b2lkIGJl
Z2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAgIHZv
aWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNrUmVxdWVzdCopOwogICAgIHZv
aWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CkBA
IC0xMjAsNyArMTE4LDcgQEAgcHJpdmF0ZToKIAogICAgIE93blB0cjxDQ1NjaGVkdWxlcj4gbV9z
Y2hlZHVsZXJPbkltcGxUaHJlYWQ7CiAKLSAgICBSZWZQdHI8Q0NTY29wZWRNYWluVGhyZWFkUHJv
eHk+IG1fbWFpblRocmVhZFByb3h5OworICAgIFJlZlB0cjxDQ1Njb3BlZFRocmVhZFByb3h5PiBt
X21haW5UaHJlYWRQcm94eTsKIAogICAgIC8vIFNldCB3aGVuIHRoZSBtYWluIHRocmVhZCBpcyB3
YWlpbmcgb24gYSByZWFkYmFjay4KICAgICBSZWFkYmFja1JlcXVlc3QqIG1fcmVhZGJhY2tSZXF1
ZXN0T25JbXBsVGhyZWFkOwpAQCAtMTM0LDggKzEzMiw2IEBAIHByaXZhdGU6CiAKICAgICAvLyBT
ZXQgd2hlbiB0aGUgbmV4dCBkcmF3IHNob3VsZCBwb3N0IGRpZENvbW1pdEFuZERyYXdGcmFtZSB0
byB0aGUgbWFpbiB0aHJlYWQuCiAgICAgYm9vbCBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRG
cmFtZU9uSW1wbFRocmVhZDsKLQotICAgIHN0YXRpYyBDQ1RocmVhZCogc19jY1RocmVhZDsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBkMzBiMjYxYmE0ODkwNTJlZDEy
YTZiNzA3ODJjZDFiNzY2NDJlYjNjLi4yNjIyNWZmMDhjM2UyYWRkMmI0ZWY3NmFlMGZjOGViMDM0
NDM3ZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0zNDksNyArMzQ5LDYgQEAK
ICAgICAgICAgICAgICAgICAnc3JjL0Jsb2JSZWdpc3RyeVByb3h5LmgnLAogICAgICAgICAgICAg
ICAgICdzcmMvQm91bmRPYmplY3QuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0JvdW5kT2Jq
ZWN0LmgnLAotICAgICAgICAgICAgICAgICdzcmMvQ0NNYWluVGhyZWFkSW1wbC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvQ0NUaHJlYWRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9DQ1RocmVhZEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9DaHJvbWVDbGllbnRJbXBs
LmNwcCcsCkBAIC02OTYsNyArNjk1LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzISc6IFsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIyBXZSBzaG91bGQgbm90IGluY2x1ZGUgZmlsZXMgZGVwZW5k
aW5nIG9uIHdlYmtpdF9zdXBwb3J0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
dGVzdHMvQ0NUaHJlYWRUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMgVGhlc2UgdGVzdHMgZGVwZW5kIG9uIHdlYmtpdF9zdXBwb3J0IGFuZAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjIGZ1bmN0aW9ucyBkZWZpbmVkIG9ubHkgaW4gIVdFQktJVF9J
TVBMRU1FTlRBVElPTi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0Fz
c29jaWF0ZWRVUkxMb2FkZXJUZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpp
bmRleCA2MDkzMjY2Yjk0YTFjMjdmNWQwMjc1MTA4MWY1ZWE4MDY4MGIxMjA5Li5jYzJiYTE5MWU0
MDRjOWE5M2M4ZjllOTczZTEyZDU1NGI4ZjY5MWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cGkKQEAgLTY1LDcgKzY1LDYgQEAKICAgICAgICAgICAgICd0ZXN0cy9DQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1NjaGVkdWxlclRlc3RD
b21tb24uaCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NUaHJlYWRUYXNrVGVzdC5jcHAnLAotICAg
ICAgICAgICAgJ3Rlc3RzL0NDVGhyZWFkVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0Zy
YW1lVGVzdEhlbHBlcnMuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9GcmFtZVRlc3RIZWxwZXJz
LmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DQ01haW5UaHJlYWRJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NDTWFpblRocmVhZEltcGwuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGVjMTMyMjk3OGI2NTgxOTBjYWRiMjAzNjI4MDJj
YTg5YTNmNjVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NDTWFpblRocmVhZEltcGwuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJjYy9DQ01haW5UaHJlYWQuaCIKLQotI2luY2x1ZGUgIldlYktpdC5oIgotI2luY2x1ZGUg
IldlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgotI2luY2x1ZGUgIldlYlRocmVhZC5oIgotI2luY2x1
ZGUgImNjL0NDUHJveHkuaCIKLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQotbmFtZXNwYWNlIHsKLQot
Ym9vbCBzX2luaXRpYWxpemVkVGhyZWFkID0gZmFsc2U7Ci1XZWJLaXQ6OldlYlRocmVhZCogc19j
bGllbnRUaHJlYWQgPSAwOwotCi1jbGFzcyBUYXNrV3JhcHBlciA6IHB1YmxpYyBXZWJLaXQ6Oldl
YlRocmVhZDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgVGFza1dyYXBwZXIoUGFzc093blB0cjxXZWJD
b3JlOjpDQ01haW5UaHJlYWQ6OlRhc2s+IHRhc2spIDogbV90YXNrKHRhc2spIHsgfQotICAgIHZp
cnR1YWwgflRhc2tXcmFwcGVyKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcnVuKCkKLSAgICB7
Ci0gICAgICAgIG1fdGFzay0+cGVyZm9ybVRhc2soKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
T3duUHRyPFdlYkNvcmU6OkNDTWFpblRocmVhZDo6VGFzaz4gbV90YXNrOwotfTsKLQotfSAvLyBh
bm9ueW1vdXMgbmFtZXNwYWNlCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBDQ01haW5U
aHJlYWQ6OmluaXRpYWxpemUoKQotewotICAgIGlmIChzX2luaXRpYWxpemVkVGhyZWFkKQotICAg
ICAgICByZXR1cm47Ci0gICAgQVNTRVJUKFdlYktpdDo6d2ViS2l0UGxhdGZvcm1TdXBwb3J0KCkp
OwotI2lmbmRlZiBOREVCVUcKLSAgICBXZWJDb3JlOjpDQ1Byb3h5OjpzZXRNYWluVGhyZWFkKGN1
cnJlbnRUaHJlYWQoKSk7Ci0jZW5kaWYKLSAgICBzX2NsaWVudFRocmVhZCA9IFdlYktpdDo6d2Vi
S2l0UGxhdGZvcm1TdXBwb3J0KCktPmN1cnJlbnRUaHJlYWQoKTsKLSAgICBzX2luaXRpYWxpemVk
VGhyZWFkID0gdHJ1ZTsKLX0KLQotdm9pZCBDQ01haW5UaHJlYWQ6OnBvc3RUYXNrKFBhc3NPd25Q
dHI8VGFzaz4gdGFzaykKLXsKLSAgICBBU1NFUlQoc19pbml0aWFsaXplZFRocmVhZCk7Ci0gICAg
aWYgKHNfY2xpZW50VGhyZWFkKQotICAgICAgICBzX2NsaWVudFRocmVhZC0+cG9zdFRhc2sobmV3
IFRhc2tXcmFwcGVyKHRhc2spKTsKLSAgICBlbHNlCi0gICAgICAgIFdURjo6Y2FsbE9uTWFpblRo
cmVhZChwZXJmb3JtVGFzaywgdGFzay5sZWFrUHRyKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DQ1RocmVhZElt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ0NUaHJlYWRJbXBsLmNwcAppbmRl
eCA1MGFjNGMyNzM5ZmFmNDhiN2YxOWIyYmJmNTU5YmFkNmRkNTNiZjgxLi5kNzBkNmRiZWUxMzE1
YjcxNzU4NDAzYjM1ZjFlOWI0OGM2ZDU2NTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9DQ1RocmVhZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0NDVGhyZWFkSW1wbC5jcHAKQEAgLTEwMyw2ICsxMDMsMTEgQEAgVGhyZWFkSWRlbnRpZmll
ciBDQ1RocmVhZEltcGw6OnRocmVhZElEKCkgY29uc3QKIENDVGhyZWFkSW1wbDo6Q0NUaHJlYWRJ
bXBsKFdlYlRocmVhZCogdGhyZWFkKQogICAgIDogbV90aHJlYWQodGhyZWFkKQogeworICAgIGlm
ICh0aHJlYWQgPT0gd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmN1cnJlbnRUaHJlYWQoKSkgewor
ICAgICAgbV90aHJlYWRJRCA9IGN1cnJlbnRUaHJlYWQoKTsKKyAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICAvLyBHZXQgdGhlIHRocmVhZElkIGZvciB0aGUgbmV3bHktY3JlYXRlZCB0aHJlYWQg
YnkgcnVubmluZyBhIHRhc2sKICAgICAvLyBvbiB0aGF0IHRocmVhZCwgYmxvY2tpbmcgb24gdGhl
IHJlc3VsdC4KICAgICBtX3RocmVhZElEID0gY3VycmVudFRocmVhZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwCmluZGV4IGNmMzMzMzU2
NmU0MzE4OGQ5ZTUzMGFjOWI1ZjE4ZDlmMzRmNzlmZTguLjgxZGVlMmYxYjI1YTg3NWI2ZGUxOGEy
NTllNzJhNTgwYWM3ZDBhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkNvbXBvc2l0b3JJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJDb21wb3NpdG9ySW1wbC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiB2b2lkIFdlYkNvbXBvc2l0b3I6OnNldFRocmVhZChXZWJUaHJlYWQqIGNvbXBvc2l0b3JUaHJl
YWQpCiB7CiAgICAgQVNTRVJUKGNvbXBvc2l0b3JUaHJlYWQpOwotICAgIENDVGhyZWFkUHJveHk6
OnNldFRocmVhZChDQ1RocmVhZEltcGw6OmNyZWF0ZShjb21wb3NpdG9yVGhyZWFkKS5sZWFrUHRy
KCkpOworICAgIENDVGhyZWFkUHJveHk6OnNldEltcGxUaHJlYWQoQ0NUaHJlYWRJbXBsOjpjcmVh
dGUoY29tcG9zaXRvclRocmVhZCkubGVha1B0cigpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViS2l0LmNwcAppbmRleCA0MjNjNDVhZTMyNGUxNWI3YjJkNDRlMGQ1ZGFjNDNmYzlj
MzQxMDRiLi5hMTNiMTAxN2Q3NGNiZjYxYjE4YWFiMTBmZDE2OTdlYmRjMmMyMDU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKIAorI2luY2x1ZGUgIkNDVGhyZWFkSW1w
bC5oIgorI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKQEAgLTQ4
LDYgKzUwLDcgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg+CiAKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIE1ha2Ugc3Vy
ZSB3ZSBhcmUgbm90IHJlLWluaXRpYWxpemVkIGluIHRoZSBzYW1lIGFkZHJlc3Mgc3BhY2UuCkBA
IC05NywxMiArMTAwLDE0IEBAIHZvaWQgaW5pdGlhbGl6ZVdpdGhvdXRWOChXZWJLaXRQbGF0Zm9y
bVN1cHBvcnQqIHdlYktpdFBsYXRmb3JtU3VwcG9ydCkKICAgICAvLyB0aGlzLCBpbml0aWFsaXpp
bmcgdGhpcyBsYXppbHkgcHJvYmFibHkgZG9lc24ndCBidXkgdXMgbXVjaC4KICAgICBXZWJDb3Jl
OjpVVEY4RW5jb2RpbmcoKTsKIAotIAorICAgIFdlYkNvcmU6OkNDUHJveHk6OnNldE1haW5UaHJl
YWQoQ0NUaHJlYWRJbXBsOjpjcmVhdGUod2ViS2l0UGxhdGZvcm1TdXBwb3J0LT5jdXJyZW50VGhy
ZWFkKCkpLmxlYWtQdHIoKSk7CiB9CiAKIAogdm9pZCBzaHV0ZG93bigpCiB7CisgICAgZGVsZXRl
IFdlYkNvcmU6OkNDUHJveHk6Om1haW5UaHJlYWQoKTsKKyAgICBXZWJDb3JlOjpDQ1Byb3h5Ojpz
ZXRNYWluVGhyZWFkKDApOwogICAgIHNfd2ViS2l0UGxhdGZvcm1TdXBwb3J0ID0gMDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVz
dC5jcHAKaW5kZXggN2MxMjM1MmE3MGQ0MDE1ODk0ODEwOTMxYzgxZjA1ODBmYmUzNzc2Yi4uZDFk
Y2Y1ZDg2NmYyZjE1YzEwZTI1YWYyZmFlZTIxNWJlOTNiMjc3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0yOCw4
ICsyOCw3IEBACiAKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuaCIKLSNpbmNsdWRlICJjYy9DQ01haW5UaHJlYWRUYXNrLmgiCi0j
aW5jbHVkZSAiY2MvQ0NTY29wZWRNYWluVGhyZWFkUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1Nj
b3BlZFRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRUYXNrLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
QEAgLTIzNiwxMiArMjM1LDExIEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBtX3RpbWVkT3V0KGZh
bHNlKQogICAgIHsKICAgICAgICAgbV93ZWJUaHJlYWQgPSBhZG9wdFB0cih3ZWJLaXRQbGF0Zm9y
bVN1cHBvcnQoKS0+Y3JlYXRlVGhyZWFkKCJDQ0xheWVyVHJlZUhvc3RUZXN0IikpOworICAgICAg
ICBBU1NFUlQoQ0NQcm94eTo6bWFpblRocmVhZCgpKTsKKwogICAgICAgICBXZWJDb21wb3NpdG9y
OjpzZXRUaHJlYWQobV93ZWJUaHJlYWQuZ2V0KCkpOwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAg
Q0NQcm94eTo6c2V0TWFpblRocmVhZChjdXJyZW50VGhyZWFkKCkpOwotI2VuZGlmCiAgICAgICAg
IEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIG1fbWFpblRocmVhZFBy
b3h5ID0gQ0NTY29wZWRNYWluVGhyZWFkUHJveHk6OmNyZWF0ZSgpOworICAgICAgICBtX21haW5U
aHJlYWRQcm94eSA9IENDU2NvcGVkVGhyZWFkUHJveHk6OmNyZWF0ZShDQ1Byb3h5OjptYWluVGhy
ZWFkKCkpOwogICAgIH0KIAogICAgIHZvaWQgZG9CZWdpblRlc3QoKTsKQEAgLTM1OCw3ICszNTYs
NyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9vdExheWVyOwog
ICAgIE93blB0cjxXZWJUaHJlYWQ+IG1fd2ViVGhyZWFkOwotICAgIFJlZlB0cjxDQ1Njb3BlZE1h
aW5UaHJlYWRQcm94eT4gbV9tYWluVGhyZWFkUHJveHk7CisgICAgUmVmUHRyPENDU2NvcGVkVGhy
ZWFkUHJveHk+IG1fbWFpblRocmVhZFByb3h5OwogICAgIFRpbWVvdXRUYXNrKiBtX3RpbWVvdXRU
YXNrOwogfTsKIApAQCAtMzgzLDcgKzM4MSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0VGVzdDo6
ZW5kVGVzdCgpCiB7CiAgICAgLy8gSWYgd2UgYXJlIGNhbGxlZCBmcm9tIHRoZSBDQ1RocmVhZCwg
cmUtY2FsbCBlbmRUZXN0IG9uIHRoZSBtYWluIHRocmVhZC4KICAgICBpZiAoIWlzTWFpblRocmVh
ZCgpKQotICAgICAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlTWFpblRocmVh
ZFRhc2sodGhpcywgJkNDTGF5ZXJUcmVlSG9zdFRlc3Q6OmVuZFRlc3QpKTsKKyAgICAgICAgbV9t
YWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NMYXll
clRyZWVIb3N0VGVzdDo6ZW5kVGVzdCkpOwogICAgIGVsc2UgewogICAgICAgICAvLyBGb3IgdGhl
IGNhc2Ugd2hlcmUgd2UgZW5kVGVzdCBkdXJpbmcgYmVnaW5UZXN0KCksIHNldCBhIGZsYWcgdG8g
aW5kaWNhdGUgdGhhdAogICAgICAgICAvLyB0aGUgdGVzdCBzaG91bGQgZW5kIHRoZSBzZWNvbmQg
YmVnaW5UZXN0IHJlZ2FpbnMgY29udHJvbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NUaHJlYWRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NUaHJlYWRUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNkYmNk
ZWY2YWMzYTI3ODZjNzEwNTA2NzU3ZmQzYWI5ZTUyYzAxYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
VGhyZWFkVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiY2MvQ0NUaHJlYWQuaCIKLQot
I2luY2x1ZGUgIkNDVGhyZWFkSW1wbC5oIgotI2luY2x1ZGUgIldlYktpdC5oIgotI2luY2x1ZGUg
IldlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgotI2luY2x1ZGUgIldlYlRocmVhZC5oIgotI2luY2x1
ZGUgImNjL0NDQ29tcGxldGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAiY2MvQ0NNYWluVGhyZWFkVGFz
ay5oIgotI2luY2x1ZGUgImNjL0NDU2NvcGVkTWFpblRocmVhZFByb3h5LmgiCi0jaW5jbHVkZSAi
Y2MvQ0NUaHJlYWRUYXNrLmgiCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotI2luY2x1ZGUg
PHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwotCi1uYW1lc3BhY2UgewotCi1jbGFzcyBQaW5nUG9uZ1VzaW5nQ29uZGl0aW9uIHsKLXB1Ymxp
YzoKLSAgICB2b2lkIHBpbmcoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCi0gICAgewot
ICAgICAgICBoaXRUaHJlYWRJRCA9IGN1cnJlbnRUaHJlYWQoKTsKLSAgICAgICAgY29tcGxldGlv
bi0+c2lnbmFsKCk7Ci0gICAgfQotCi0gICAgVGhyZWFkSWRlbnRpZmllciBoaXRUaHJlYWRJRDsK
LX07Ci0KLQotVEVTVChDQ1RocmVhZFRlc3QsIHBpbmdQb25nVXNpbmdDb25kaXRpb24pCi17Ci0g
ICAgT3duUHRyPFdlYlRocmVhZD4gd2ViVGhyZWFkID0gYWRvcHRQdHIod2ViS2l0UGxhdGZvcm1T
dXBwb3J0KCktPmNyZWF0ZVRocmVhZCgidGVzdCIpKTsKLQotICAgIE93blB0cjxDQ1RocmVhZD4g
dGhyZWFkID0gV2ViS2l0OjpDQ1RocmVhZEltcGw6OmNyZWF0ZSh3ZWJUaHJlYWQuZ2V0KCkpOwot
ICAgIFBpbmdQb25nVXNpbmdDb25kaXRpb24gdGFyZ2V0OwotICAgIENDQ29tcGxldGlvbkV2ZW50
IGNvbXBsZXRpb247Ci0gICAgdGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2soJnRh
cmdldCwgJlBpbmdQb25nVXNpbmdDb25kaXRpb246OnBpbmcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbikp
KTsKLSAgICBjb21wbGV0aW9uLndhaXQoKTsKLQotICAgIEVYUEVDVF9FUSh0aHJlYWQtPnRocmVh
ZElEKCksIHRhcmdldC5oaXRUaHJlYWRJRCk7Ci19Ci0KLWNsYXNzIFBpbmdQb25nVGVzdFVzaW5n
VGFza3MgewotcHVibGljOgotICAgIFBpbmdQb25nVGVzdFVzaW5nVGFza3MoKQotICAgICAgICA6
IG1fbWFpblRocmVhZFByb3h5KENDU2NvcGVkTWFpblRocmVhZFByb3h5OjpjcmVhdGUoKSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgdm9pZCBwaW5nKCkKLSAgICB7Ci0gICAgICAgIG1fbWFpblRocmVh
ZFByb3h5LT5wb3N0VGFzayhjcmVhdGVNYWluVGhyZWFkVGFzayh0aGlzLCAmUGluZ1BvbmdUZXN0
VXNpbmdUYXNrczo6cG9uZykpOwotICAgICAgICBoaXQgPSB0cnVlOwotICAgIH0KLQotICAgIHZv
aWQgcG9uZygpCi0gICAgewotICAgICAgICBFWFBFQ1RfVFJVRShpc01haW5UaHJlYWQoKSk7Ci0g
ICAgICAgIHdlYmtpdF9zdXBwb3J0OjpRdWl0TWVzc2FnZUxvb3AoKTsKLSAgICB9Ci0KLSAgICBi
b29sIGhpdDsKLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8Q0NTY29wZWRNYWluVGhyZWFkUHJveHk+
IG1fbWFpblRocmVhZFByb3h5OwotfTsKLQotI2lmIE9TKFdJTkRPV1MpIHx8IE9TKE1BQ19PU19Y
KQotI2RlZmluZSBNQVlCRV9zdGFydFBvc3RBbmRXYWl0T25Db25kaXRpb24gRElTQUJMRURfc3Rh
cnRQb3N0QW5kV2FpdE9uQ29uZGl0aW9uCi0jZWxzZQotI2RlZmluZSBNQVlCRV9zdGFydFBvc3RB
bmRXYWl0T25Db25kaXRpb24gc3RhcnRQb3N0QW5kV2FpdE9uQ29uZGl0aW9uCi0jZW5kaWYKLQot
VEVTVChDQ1RocmVhZFRlc3QsIE1BWUJFX3N0YXJ0UG9zdEFuZFdhaXRPbkNvbmRpdGlvbikKLXsK
LSAgICAvLyBDQ01haW5UaHJlYWQgaXMgbm9ybWFsbHkgaW5pdGlhbGl6ZWQgYnkgQ0NMYXllclRy
ZWVIb3N0LCBidXQgaW4gdGhpcyBjYXNlCi0gICAgLy8gd2UgbWF5IHJ1biB0aGlzIHRlc3QsIGJl
Zm9yZSBhbnkgQ0NMYXllclRyZWVIb3N0IGdldHMgaW5zdGFudGlhdGVkLgotICAgIENDTWFpblRo
cmVhZDo6aW5pdGlhbGl6ZSgpOwotICAgIE93blB0cjxXZWJUaHJlYWQ+IHdlYlRocmVhZCA9IGFk
b3B0UHRyKHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jcmVhdGVUaHJlYWQoInRlc3QiKSk7Ci0K
LSAgICBPd25QdHI8Q0NUaHJlYWQ+IHRocmVhZCA9IFdlYktpdDo6Q0NUaHJlYWRJbXBsOjpjcmVh
dGUod2ViVGhyZWFkLmdldCgpKTsKLQotICAgIFBpbmdQb25nVGVzdFVzaW5nVGFza3MgdGFyZ2V0
OwotICAgIHRocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKCZ0YXJnZXQsICZQaW5n
UG9uZ1Rlc3RVc2luZ1Rhc2tzOjpwaW5nKSk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bk1lc3Nh
Z2VMb29wKCk7Ci0KLSAgICBFWFBFQ1RfVFJVRSh0YXJnZXQuaGl0KTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115254</attachid>
            <date>2011-11-15 14:48:49 -0800</date>
            <delta_ts>2011-11-15 15:50:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72426-20111115144848.patch</filename>
            <type>text/plain</type>
            <size>64473</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2JhN2I2ZmRhZmVlYzJi
NGNjZTczNjc2NzFkMTk4MzBkMjFiZGExYi4uZDk4ZTZkNTcwZjRmNmEzMGUzYWU3YzUxYmY3ZTNh
MThhZmE5MzYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDExLTExLTE1ICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEZ1c2UgTWFp
blRocmVhZCBhbmQgQ0NUaHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTcyNDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWFpblRocmVhZC5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYWluVGhyZWFkLmg6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYWlu
VGhyZWFkVGFzay5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcm94eTo6c2V0TWFpblRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Byb3h5OjptYWluVGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDUHJveHk6OnNldEltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQ
cm94eTo6aW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Byb3h5Ojppc01haW5UaHJl
YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcm94eTo6aXNJbXBsVGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDUHJveHk6On5DQ1Byb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRNYWluVGhyZWFkUHJveHku
aC4KKyAgICAgICAgKFdlYkNvcmU6OkNDU2NvcGVkVGhyZWFkUHJveHk6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1Njb3BlZFRocmVhZFByb3h5Ojpwb3N0VGFzayk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1Njb3BlZFRocmVhZFByb3h5OjpzaHV0ZG93bik6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1Njb3BlZFRocmVhZFByb3h5OjpDQ1Njb3BlZFRocmVhZFByb3h5KToKKyAgICAgICAgKFdl
YkNvcmU6OkNDU2NvcGVkVGhyZWFkUHJveHk6OnJ1blRhc2tJZk5vdFNodXRkb3duKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OkNDVGhyZWFkUHJveHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Y29tcG9zaXRlQW5kUmVhZGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQW5pbWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXcpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RocmVhZFByb3h5OjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFBy
b3h5OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6Om9idGFpbkJlZ2lu
RnJhbWVBbmRDb21taXRUYXNrRnJvbUNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhy
ZWFkUHJveHk6OmNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25JbXBsVGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUltcGxPbkltcGxU
aHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaDoKKwogMjAxMS0xMS0xNSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSB1c2VsZXNzIGNvbnN0IG1vZGlmaWVyIGZyb20gS1VSTDo6aW5p
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1MzIzMmMyMGU0Y2JhMGRlZGI4OWY3ZWE2
ZDlmZDNmODVkZGMxNjhiLi5kODQ2OTAyOTRkOTZkNTNhZTgwZWQ3ZjE4ZGE5MTM3M2NjYjViYmRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTExLTE1
ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEZ1
c2UgTWFpblRocmVhZCBhbmQgQ0NUaHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcyNDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIFdlYktpdC5neXBpOgor
ICAgICAgICAqIHNyYy9DQ01haW5UaHJlYWRJbXBsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBz
cmMvQ0NUaHJlYWRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q0NUaHJlYWRJbXBsOjpDQ1Ro
cmVhZEltcGwpOgorICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNldFRocmVhZCk6CisgICAgICAgICogc3JjL1dlYktp
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVXaXRob3V0VjgpOgorICAgICAgICAo
V2ViS2l0OjpzaHV0ZG93bik6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5j
cHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3Q6OkNDTGF5ZXJUcmVlSG9zdFRl
c3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0OjplbmRUZXN0KToKKyAgICAg
ICAgKiB0ZXN0cy9DQ1RocmVhZFRlc3QuY3BwOiBSZW1vdmVkLgorCiAyMDExLTExLTE0ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgSG9zdFdpbmRvdyBp
bnZhbGlkYXRpb24gZnVuY3Rpb25zIHNob3VsZCB1c2Ugcm9vdCB2aWV3IGNvb3JkaW5hdGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggZTgzMDYxZDJiNTk2ZjQxNTlmYTg3NjE3Nzk2ZTI5MmQzZGZmNzIy
Mi4uMGU1NzY5YWViN2NjNjk3ZTVhODg3ZWY4YmU1ZTg3YzNkOWEzYmMyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQpAQCAtMzU3Niw5ICszNTc2LDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCcs
Ci0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYWluVGhyZWFk
LmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYWlu
VGhyZWFkLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TWFpblRocmVhZFRhc2suaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQbHVnaW5MYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcCcsCkBAIC0zNTg5LDcgKzM1ODYs
NyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1
bGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaCcsCi0gICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRNYWluVGhyZWFkUHJveHkuaCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUaHJlYWRQ
cm94eS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
cm9sbENvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCAxMzRiYjA1MmMyNzhmMGQzOGE0ZjE5NmFmYWJl
MGU5ZDk0OTkwOGU3Li45MjE0YmJkYWJlOGU4MzY3MjMyMjc4OGMyMjcxNDFhMmIyNTYxYzMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTU1LDggKzU1LDcgQEAK
ICNpbmNsdWRlICJXZWJHTExheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1w
bC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgotI2luY2x1ZGUgImNj
L0NDTWFpblRocmVhZFRhc2suaCIKLSNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCisjaW5j
bHVkZSAiY2MvQ0NQcm94eS5oIgogI2lmIFVTRShTS0lBKQogI2luY2x1ZGUgIkV4dGVuc2lvbnMz
RC5oIgogI2luY2x1ZGUgIkdyQ29udGV4dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5j
cHAKaW5kZXggYmE0MzBlYzUxN2IwMjdhNzY2ZTYzZGFhZWUwNjhmODI5MWY0NDhmMS4uNmY5OGRk
M2I5Nzg2M2E2NmFmYTYyNmNjMTcwZjNmY2FhNDgzZTE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiVHJlZVN5bmNocm9uaXpl
ci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgogI2luY2x1ZGUgImNj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKLSNpbmNsdWRlICJjYy9DQ01haW5UaHJlYWQuaCIKICNp
bmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWQu
aCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCkBAIC02MCw3ICs1OSw2IEBAIENDTGF5
ZXJUcmVlSG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50
LCBjb25zdCBDQ1NldHRpbmdzCiAgICAgLCBtX21pblBhZ2VTY2FsZSgxKQogICAgICwgbV9tYXhQ
YWdlU2NhbGUoMSkKIHsKLSAgICBDQ01haW5UaHJlYWQ6OmluaXRpYWxpemUoKTsKICAgICBBU1NF
UlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCmluZGV4IDI1YTgxODA1N2ZmYjFiMGE3NzE0YTU3M2I5ZTE0N2ZlZjRh
M2QxNTIuLmEwNjA1NzhjMjdkYjE2YjAxZTRhMDViNTY1MzYyMTM2MzViNTY2NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0zMSw4ICszMSw2IEBACiAjaW5j
bHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgog
I2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgotI2luY2x1ZGUgImNjL0NDTWFpblRocmVh
ZC5oIgotI2luY2x1ZGUgImNjL0NDTWFpblRocmVhZFRhc2suaCIKICNpbmNsdWRlICJjYy9DQ1Ro
cmVhZFRhc2suaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYWluVGhyZWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWFp
blRocmVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3OWYwNTYwOTk4ZWM2
ZWU2MjRlYjIyNDM4MWYyZTU1NTBjMzNlMmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NNYWluVGhyZWFkLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJDQ01haW5UaHJlYWQu
aCIKLQotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXVEY7
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBDQ01haW5UaHJlYWQ6OnBlcmZvcm1UYXNr
KHZvaWQqIHVzZXJkYXRhKQotewotICAgIFRhc2sqIHRhc2sgPSBzdGF0aWNfY2FzdDxUYXNrKj4o
dXNlcmRhdGEpOwotICAgIHRhc2stPnBlcmZvcm1UYXNrKCk7Ci0gICAgZGVsZXRlIHRhc2s7Ci19
Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTWFpblRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NNYWluVGhyZWFkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAzOTA3YWMwYjFmNjc1OWRjMDVlOGQzMTE1OTQ0OWNjYmRmNWIzYmUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYWluVGhyZWFkLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotI2lmbmRlZiBDQ01haW5UaHJlYWRfaAotI2RlZmluZSBD
Q01haW5UaHJlYWRfaAotCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDQ1Njb3Bl
ZE1haW5UaHJlYWRQcm94eTsKLQotLy8gVGFzayB3cmFwcGVyIGFyb3VuZCBXVEY6OmNhbGxPbk1h
aW5UaHJlYWRUaHJlYWQKLS8vIFRvIHBvc3QgYSBUYXNrIHRvIHJ1biBvbiB0aGUgbWFpbiB0aHJl
YWQsIHNlZSBDQ1Njb3BlZE1haW5UaHJlYWRQcm94eS4KLWNsYXNzIENDTWFpblRocmVhZCB7Ci1w
dWJsaWM6Ci0gICAgY2xhc3MgVGFzayB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRh
c2spOwotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+VGFzaygpIHsgfQotICAgICAgICB2
aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soKSA9IDA7Ci0gICAgICAgIHZvaWQqIGluc3RhbmNlKCkg
Y29uc3QgeyByZXR1cm4gbV9pbnN0YW5jZTsgfQotICAgIHByb3RlY3RlZDoKLSAgICAgICAgVGFz
ayh2b2lkKiBpbnN0YW5jZSkgOiBtX2luc3RhbmNlKGluc3RhbmNlKSB7IH0KLSAgICAgICAgdm9p
ZCogbV9pbnN0YW5jZTsKLSAgICB9OwotCi0gICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwot
cHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgQ0NTY29wZWRNYWluVGhyZWFkUHJveHk7Ci0gICAg
Ly8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gbWFpbiB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCi0gICAg
Ly8gT25seSB2aXNpYmxlIHRvIENDU2NvcGVkTWFpblRocmVhZFByb3h5LgotICAgIHN0YXRpYyB2
b2lkIHBvc3RUYXNrKFBhc3NPd25QdHI8VGFzaz4pOwotCi0gICAgc3RhdGljIHZvaWQgcGVyZm9y
bVRhc2sodm9pZCopOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
Q0NNYWluVGhyZWFkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTWFpblRocmVhZFRhc2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWFpblRocmVhZFRhc2suaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZGU0MWNiYTBkYTQ3ZmQ1NjVkMWIyM2YxYjY2MmRjNWY5OTAzNDE4
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01haW5UaHJlYWRUYXNrLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwzMzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSNpZm5kZWYgQ0NN
YWluVGhyZWFkVGFza19oCi0jZGVmaW5lIENDTWFpblRocmVhZFRhc2tfaAotCi0jaW5jbHVkZSAi
Q3Jvc3NUaHJlYWRDb3BpZXIuaCIKLSNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKLSNpbmNs
dWRlICJjYy9DQ01haW5UaHJlYWQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLWNsYXNzIE1haW5UaHJlYWRUYXNrMCA6IHB1YmxpYyBDQ01haW5UaHJl
YWQ6OlRhc2sgewotcHVibGljOgotICAgIHR5cGVkZWYgdm9pZCAoVDo6Kk1ldGhvZCkoKTsKLSAg
ICB0eXBlZGVmIE1haW5UaHJlYWRUYXNrMDxUPiBNYWluVGhyZWFkVGFza0ltcGw7Ci0KLSAgICBz
dGF0aWMgUGFzc093blB0cjxNYWluVGhyZWFkVGFza0ltcGw+IGNyZWF0ZShUKiBpbnN0YW5jZSwg
TWV0aG9kIG1ldGhvZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWFpblRo
cmVhZFRhc2tJbXBsKGluc3RhbmNlLCBtZXRob2QpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
TWFpblRocmVhZFRhc2swKFQqIGluc3RhbmNlLCBNZXRob2QgbWV0aG9kKQotICAgICAgICA6IEND
TWFpblRocmVhZDo6VGFzayhpbnN0YW5jZSkKLSAgICAgICAgLCBtX21ldGhvZChtZXRob2QpCi0g
ICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzaygpCi0gICAgewotICAg
ICAgICAoKnN0YXRpY19jYXN0PFQqPihpbnN0YW5jZSgpKS4qbV9tZXRob2QpKCk7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIE1ldGhvZCBtX21ldGhvZDsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDE+Ci1jbGFzcyBNYWluVGhyZWFkVGFzazEgOiBw
dWJsaWMgQ0NNYWluVGhyZWFkOjpUYXNrIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQgKFQ6
OipNZXRob2QpKE1QMSk7Ci0gICAgdHlwZWRlZiBNYWluVGhyZWFkVGFzazE8VCwgUDEsIE1QMT4g
TWFpblRocmVhZFRhc2tJbXBsOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNr
VHJhaXRzPFAxPjo6UGFyYW1UeXBlIFBhcmFtMTsKLQotICAgIHN0YXRpYyBQYXNzT3duUHRyPE1h
aW5UaHJlYWRUYXNrSW1wbD4gY3JlYXRlKFQqIGluc3RhbmNlLCBNZXRob2QgbWV0aG9kLCBQYXJh
bTEgcGFyYW1ldGVyMSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWFpblRo
cmVhZFRhc2tJbXBsKGluc3RhbmNlLCBtZXRob2QsIHBhcmFtZXRlcjEpKTsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgTWFpblRocmVhZFRhc2sxKFQqIGluc3RhbmNlLCBNZXRob2QgbWV0aG9kLCBQ
YXJhbTEgcGFyYW1ldGVyMSkKLSAgICAgICAgOiBDQ01haW5UaHJlYWQ6OlRhc2soaW5zdGFuY2Up
Ci0gICAgICAgICwgbV9tZXRob2QobWV0aG9kKQotICAgICAgICAsIG1fcGFyYW1ldGVyMShwYXJh
bWV0ZXIxKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soKQot
ICAgIHsKLSAgICAgICAgKCpzdGF0aWNfY2FzdDxUKj4oaW5zdGFuY2UoKSkuKm1fbWV0aG9kKSht
X3BhcmFtZXRlcjEpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBNZXRob2QgbV9tZXRob2Q7Ci0g
ICAgUDEgbV9wYXJhbWV0ZXIxOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
UDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMj4KLWNsYXNzIE1haW5U
aHJlYWRUYXNrMiA6IHB1YmxpYyBDQ01haW5UaHJlYWQ6OlRhc2sgewotcHVibGljOgotICAgIHR5
cGVkZWYgdm9pZCAoVDo6Kk1ldGhvZCkoTVAxLCBNUDIpOwotICAgIHR5cGVkZWYgTWFpblRocmVh
ZFRhc2syPFQsIFAxLCBNUDEsIFAyLCBNUDI+IE1haW5UaHJlYWRUYXNrSW1wbDsKLSAgICB0eXBl
ZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7
Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDI+OjpQYXJhbVR5
cGUgUGFyYW0yOwotCi0gICAgc3RhdGljIFBhc3NPd25QdHI8TWFpblRocmVhZFRhc2tJbXBsPiBj
cmVhdGUoVCogaW5zdGFuY2UsIE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJh
bTIgcGFyYW1ldGVyMikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWFpblRo
cmVhZFRhc2tJbXBsKGluc3RhbmNlLCBtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpKTsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgTWFpblRocmVhZFRhc2syKFQqIGluc3RhbmNlLCBNZXRo
b2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIpCi0gICAgICAg
IDogQ0NNYWluVGhyZWFkOjpUYXNrKGluc3RhbmNlKQotICAgICAgICAsIG1fbWV0aG9kKG1ldGhv
ZCkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKLSAgICAgICAgLCBtX3BhcmFt
ZXRlcjIocGFyYW1ldGVyMikKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHBlcmZv
cm1UYXNrKCkKLSAgICB7Ci0gICAgICAgICgqc3RhdGljX2Nhc3Q8VCo+KGluc3RhbmNlKCkpLipt
X21ldGhvZCkobV9wYXJhbWV0ZXIxLCBtX3BhcmFtZXRlcjIpOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBNZXRob2QgbV9tZXRob2Q7Ci0gICAgUDEgbV9wYXJhbWV0ZXIxOwotICAgIFAyIG1fcGFy
YW1ldGVyMjsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFt
ZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBN
UDM+Ci1jbGFzcyBNYWluVGhyZWFkVGFzazMgOiBwdWJsaWMgQ0NNYWluVGhyZWFkOjpUYXNrIHsK
LXB1YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQgKFQ6OipNZXRob2QpKE1QMSwgTVAyLCBNUDMpOwot
ICAgIHR5cGVkZWYgTWFpblRocmVhZFRhc2szPFQsIFAxLCBNUDEsIFAyLCBNUDIsIFAzLCBNUDM+
IE1haW5UaHJlYWRUYXNrSW1wbDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFz
a1RyYWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9z
c1RocmVhZFRhc2tUcmFpdHM8UDI+OjpQYXJhbVR5cGUgUGFyYW0yOwotICAgIHR5cGVkZWYgdHlw
ZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFAzPjo6UGFyYW1UeXBlIFBhcmFtMzsKLQotICAg
IHN0YXRpYyBQYXNzT3duUHRyPE1haW5UaHJlYWRUYXNrSW1wbD4gY3JlYXRlKFQqIGluc3RhbmNl
LCBNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBh
cmFtMyBwYXJhbWV0ZXIzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNYWlu
VGhyZWFkVGFza0ltcGwoaW5zdGFuY2UsIG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwg
cGFyYW1ldGVyMykpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBNYWluVGhyZWFkVGFzazMoVCog
aW5zdGFuY2UsIE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1l
dGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMpCi0gICAgICAgIDogQ0NNYWluVGhyZWFkOjpUYXNrKGlu
c3RhbmNlKQotICAgICAgICAsIG1fbWV0aG9kKG1ldGhvZCkKLSAgICAgICAgLCBtX3BhcmFtZXRl
cjEocGFyYW1ldGVyMSkKLSAgICAgICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikKLSAgICAg
ICAgLCBtX3BhcmFtZXRlcjMocGFyYW1ldGVyMykKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVh
bCB2b2lkIHBlcmZvcm1UYXNrKCkKLSAgICB7Ci0gICAgICAgICgqc3RhdGljX2Nhc3Q8VCo+KGlu
c3RhbmNlKCkpLiptX21ldGhvZCkobV9wYXJhbWV0ZXIxLCBtX3BhcmFtZXRlcjIsIG1fcGFyYW1l
dGVyMyk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIE1ldGhvZCBtX21ldGhvZDsKLSAgICBQMSBt
X3BhcmFtZXRlcjE7Ci0gICAgUDIgbV9wYXJhbWV0ZXIyOwotICAgIFAzIG1fcGFyYW1ldGVyMzsK
LX07Ci0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwg
dHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlw
ZW5hbWUgUDQsIHR5cGVuYW1lIE1QND4KLWNsYXNzIE1haW5UaHJlYWRUYXNrNCA6IHB1YmxpYyBD
Q01haW5UaHJlYWQ6OlRhc2sgewotcHVibGljOgotICAgIHR5cGVkZWYgdm9pZCAoVDo6Kk1ldGhv
ZCkoTVAxLCBNUDIsIE1QMywgTVA0KTsKLSAgICB0eXBlZGVmIE1haW5UaHJlYWRUYXNrNDxULCBQ
MSwgTVAxLCBQMiwgTVAyLCBQMywgTVAzLCBQNCwgTVA0PiBNYWluVGhyZWFkVGFza0ltcGw7Ci0g
ICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDE+OjpQYXJhbVR5cGUg
UGFyYW0xOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFAyPjo6
UGFyYW1UeXBlIFBhcmFtMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1Ry
YWl0czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1Ro
cmVhZFRhc2tUcmFpdHM8UDQ+OjpQYXJhbVR5cGUgUGFyYW00OwotCi0gICAgc3RhdGljIFBhc3NP
d25QdHI8TWFpblRocmVhZFRhc2tJbXBsPiBjcmVhdGUoVCogaW5zdGFuY2UsIE1ldGhvZCBtZXRo
b2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRl
cjMsIFBhcmFtNCBwYXJhbWV0ZXI0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBNYWluVGhyZWFkVGFza0ltcGwoaW5zdGFuY2UsIG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1l
dGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBN
YWluVGhyZWFkVGFzazQoVCogaW5zdGFuY2UsIE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0
ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0
ZXI0KQotICAgICAgICA6IENDTWFpblRocmVhZDo6VGFzayhpbnN0YW5jZSkKLSAgICAgICAgLCBt
X21ldGhvZChtZXRob2QpCi0gICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCi0gICAg
ICAgICwgbV9wYXJhbWV0ZXIyKHBhcmFtZXRlcjIpCi0gICAgICAgICwgbV9wYXJhbWV0ZXIzKHBh
cmFtZXRlcjMpCi0gICAgICAgICwgbV9wYXJhbWV0ZXI0KHBhcmFtZXRlcjQpCi0gICAgewotICAg
IH0KLQotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzaygpCi0gICAgewotICAgICAgICAoKnN0
YXRpY19jYXN0PFQqPihpbnN0YW5jZSgpKS4qbV9tZXRob2QpKG1fcGFyYW1ldGVyMSwgbV9wYXJh
bWV0ZXIyLCBtX3BhcmFtZXRlcjMsIG1fcGFyYW1ldGVyNCk7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIE1ldGhvZCBtX21ldGhvZDsKLSAgICBQMSBtX3BhcmFtZXRlcjE7Ci0gICAgUDIgbV9wYXJh
bWV0ZXIyOwotICAgIFAzIG1fcGFyYW1ldGVyMzsKLSAgICBQNCBtX3BhcmFtZXRlcjQ7Ci19Owot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFt
ZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQ
NCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1PgotY2xhc3MgTWFpblRo
cmVhZFRhc2s1IDogcHVibGljIENDTWFpblRocmVhZDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgdHlw
ZWRlZiB2b2lkIChUOjoqTWV0aG9kKShNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSk7Ci0gICAgdHlw
ZWRlZiBNYWluVGhyZWFkVGFzazU8VCwgUDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMywgUDQsIE1Q
NCwgUDUsIE1QNT4gTWFpblRocmVhZFRhc2tJbXBsOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jv
c3NUaHJlYWRUYXNrVHJhaXRzPFAxPjo6UGFyYW1UeXBlIFBhcmFtMTsKLSAgICB0eXBlZGVmIHR5
cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7Ci0gICAg
dHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDM+OjpQYXJhbVR5cGUgUGFy
YW0zOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFA0Pjo6UGFy
YW1UeXBlIFBhcmFtNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0
czxQNT46OlBhcmFtVHlwZSBQYXJhbTU7Ci0KLSAgICBzdGF0aWMgUGFzc093blB0cjxNYWluVGhy
ZWFkVGFza0ltcGw+IGNyZWF0ZShUKiBpbnN0YW5jZSwgTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBh
cmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBh
cmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBNYWluVGhyZWFkVGFza0ltcGwoaW5zdGFuY2UsIG1ldGhvZCwgcGFyYW1ldGVyMSwg
cGFyYW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCwgcGFyYW1ldGVyNSkpOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBNYWluVGhyZWFkVGFzazUoVCogaW5zdGFuY2UsIE1ldGhvZCBtZXRo
b2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRl
cjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSkKLSAgICAgICAgOiBDQ01h
aW5UaHJlYWQ6OlRhc2soaW5zdGFuY2UpCi0gICAgICAgICwgbV9tZXRob2QobWV0aG9kKQotICAg
ICAgICAsIG1fcGFyYW1ldGVyMShwYXJhbWV0ZXIxKQotICAgICAgICAsIG1fcGFyYW1ldGVyMihw
YXJhbWV0ZXIyKQotICAgICAgICAsIG1fcGFyYW1ldGVyMyhwYXJhbWV0ZXIzKQotICAgICAgICAs
IG1fcGFyYW1ldGVyNChwYXJhbWV0ZXI0KQotICAgICAgICAsIG1fcGFyYW1ldGVyNShwYXJhbWV0
ZXI1KQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soKQotICAg
IHsKLSAgICAgICAgKCpzdGF0aWNfY2FzdDxUKj4oaW5zdGFuY2UoKSkuKm1fbWV0aG9kKShtX3Bh
cmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFy
YW1ldGVyNSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIE1ldGhvZCBtX21ldGhvZDsKLSAgICBQ
MSBtX3BhcmFtZXRlcjE7Ci0gICAgUDIgbV9wYXJhbWV0ZXIyOwotICAgIFAzIG1fcGFyYW1ldGVy
MzsKLSAgICBQNCBtX3BhcmFtZXRlcjQ7Ci0gICAgUDUgbV9wYXJhbWV0ZXI1OwotfTsKLQotdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLVBhc3NPd25QdHI8Q0NNYWluVGhyZWFkOjpUYXNrPiBjcmVhdGVN
YWluVGhyZWFkVGFzaygKLSAgICBUKiBjb25zdCBjYWxsZWUsCi0gICAgdm9pZCAoVDo6Km1ldGhv
ZCkoKSkKLXsKLSAgICByZXR1cm4gTWFpblRocmVhZFRhc2swPFQ+OjpjcmVhdGUoCi0gICAgICAg
IGNhbGxlZSwKLSAgICAgICAgbWV0aG9kKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgUDEsIHR5cGVuYW1lIE1QMT4KLVBhc3NPd25QdHI8Q0NNYWluVGhyZWFkOjpUYXNrPiBj
cmVhdGVNYWluVGhyZWFkVGFzaygKLSAgICBUKiBjb25zdCBjYWxsZWUsCi0gICAgdm9pZCAoVDo6
Km1ldGhvZCkoTVAxKSwKLSAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSkKLXsKLSAgICByZXR1cm4g
TWFpblRocmVhZFRhc2sxPFQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwg
TVAxPjo6Y3JlYXRlKAotICAgICAgICBjYWxsZWUsCi0gICAgICAgIG1ldGhvZCwKLSAgICAgICAg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpKTsKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVu
YW1lIE1QMj4KLVBhc3NPd25QdHI8Q0NNYWluVGhyZWFkOjpUYXNrPiBjcmVhdGVNYWluVGhyZWFk
VGFzaygKLSAgICBUKiBjb25zdCBjYWxsZWUsCi0gICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBN
UDIpLAotICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAotICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIy
KQotewotICAgIHJldHVybiBNYWluVGhyZWFkVGFzazI8VCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlw
ZSwgTVAyPjo6Y3JlYXRlKAotICAgICAgICBjYWxsZWUsCi0gICAgICAgIG1ldGhvZCwKLSAgICAg
ICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAotICAgICAgICBDcm9z
c1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMikpOwotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUg
TVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzPgotUGFzc093blB0cjxDQ01haW5UaHJlYWQ6
OlRhc2s+IGNyZWF0ZU1haW5UaHJlYWRUYXNrKAotICAgIFQqIGNvbnN0IGNhbGxlZSwKLSAgICB2
b2lkIChUOjoqbWV0aG9kKShNUDEsIE1QMiwgTVAzKSwKLSAgICBjb25zdCBQMSYgcGFyYW1ldGVy
MSwKLSAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKLSAgICBjb25zdCBQMyYgcGFyYW1ldGVyMykK
LXsKLSAgICByZXR1cm4gTWFpblRocmVhZFRhc2szPFQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29w
aWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUs
IE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBNUDM+OjpjcmVhdGUo
Ci0gICAgICAgIGNhbGxlZSwKLSAgICAgICAgbWV0aG9kLAotICAgICAgICBDcm9zc1RocmVhZENv
cGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCi0gICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAy
Pjo6Y29weShwYXJhbWV0ZXIyKSwKLSAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5
KHBhcmFtZXRlcjMpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5
cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVu
YW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QND4KLVBhc3NPd25QdHI8Q0NNYWluVGhy
ZWFkOjpUYXNrPiBjcmVhdGVNYWluVGhyZWFkVGFzaygKLSAgICBUKiBjb25zdCBjYWxsZWUsCi0g
ICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0KSwKLSAgICBjb25zdCBQMSYg
cGFyYW1ldGVyMSwKLSAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKLSAgICBjb25zdCBQMyYgcGFy
YW1ldGVyMywKLSAgICBjb25zdCBQNCYgcGFyYW1ldGVyNCkKLXsKLSAgICByZXR1cm4gTWFpblRo
cmVhZFRhc2s0PFQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0
eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBNUDMsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA0
Pjo6VHlwZSwgTVA0Pjo6Y3JlYXRlKAotICAgICAgICBjYWxsZWUsCi0gICAgICAgIG1ldGhvZCwK
LSAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAotICAgICAg
ICBDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCi0gICAgICAgIENyb3Nz
VGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwKLSAgICAgICAgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpKTsKLQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0
eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBl
bmFtZSBQNSwgdHlwZW5hbWUgTVA1PgotUGFzc093blB0cjxDQ01haW5UaHJlYWQ6OlRhc2s+IGNy
ZWF0ZU1haW5UaHJlYWRUYXNrKAotICAgIFQqIGNvbnN0IGNhbGxlZSwKLSAgICB2b2lkIChUOjoq
bWV0aG9kKShNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSksCi0gICAgY29uc3QgUDEmIHBhcmFtZXRl
cjEsCi0gICAgY29uc3QgUDImIHBhcmFtZXRlcjIsCi0gICAgY29uc3QgUDMmIHBhcmFtZXRlcjMs
Ci0gICAgY29uc3QgUDQmIHBhcmFtZXRlcjQsCi0gICAgY29uc3QgUDUmIHBhcmFtZXRlcjUpCi17
Ci0gICAgcmV0dXJuIE1haW5UaHJlYWRUYXNrNTxULCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGll
cjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBN
UDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLCB0eXBlbmFtZSBD
cm9zc1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDU+OjpUeXBlLCBNUDU+OjpjcmVhdGUoCi0gICAgICAgIGNhbGxlZSwKLSAgICAgICAgbWV0
aG9kLAotICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCi0g
ICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKLSAgICAgICAg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLAotICAgICAgICBDcm9zc1Ro
cmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCi0gICAgICAgIENyb3NzVGhyZWFkQ29w
aWVyPFA1Pjo6Y29weShwYXJhbWV0ZXI1KSk7Ci0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gTWFpblRocmVhZFRhc2tfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcAppbmRleCBjNmVh
NjA4NDE0MjkyMzhkNzgxMmY4ZDNmM2RkYWRhY2QyNDY3NzM2Li45NWMyYTVjOWJlZWIwYThiNmIz
NmY3ZDdiMjQ0YWVlMGVkNzVmZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcApAQCAtMjgsNyArMjgsNiBA
QAogCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9z
dC5oIgotI2luY2x1ZGUgImNjL0NDTWFpblRocmVhZFRhc2suaCIKICNpbmNsdWRlICJjYy9DQ1Ro
cmVhZFRhc2suaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC00MCwzMyArMzks
NDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewogYm9vbCBmYWtlSW1wbFRo
cmVhZCA9IGZhbHNlOwotc3RhdGljIFdURjo6VGhyZWFkSWRlbnRpZmllciBpbXBsVGhyZWFkSUQ7
Ci1zdGF0aWMgV1RGOjpUaHJlYWRJZGVudGlmaWVyIG1haW5UaHJlYWRJRDsKK0NDVGhyZWFkKiBz
X21haW5UaHJlYWQgPSAwOworQ0NUaHJlYWQqIHNfaW1wbFRocmVhZCA9IDA7CiB9CiAKLWJvb2wg
Q0NQcm94eTo6aXNNYWluVGhyZWFkKCkKK3ZvaWQgQ0NQcm94eTo6c2V0TWFpblRocmVhZChDQ1Ro
cmVhZCogdGhyZWFkKQogewotICAgIHJldHVybiAhZmFrZUltcGxUaHJlYWQgJiYgY3VycmVudFRo
cmVhZCgpID09IG1haW5UaHJlYWRJRDsKKyAgICBzX21haW5UaHJlYWQgPSB0aHJlYWQ7CiB9CiAK
LWJvb2wgQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkKK0NDVGhyZWFkKiBDQ1Byb3h5OjptYWluVGhy
ZWFkKCkKIHsKLSAgICByZXR1cm4gZmFrZUltcGxUaHJlYWQgfHwgY3VycmVudFRocmVhZCgpID09
IGltcGxUaHJlYWRJRDsKKyAgICByZXR1cm4gc19tYWluVGhyZWFkOwogfQogCi12b2lkIENDUHJv
eHk6OnNldEltcGxUaHJlYWQoYm9vbCBpc0ltcGxUaHJlYWQpCit2b2lkIENDUHJveHk6OnNldElt
cGxUaHJlYWQoQ0NUaHJlYWQqIHRocmVhZCkKIHsKLSAgICBmYWtlSW1wbFRocmVhZCA9IGlzSW1w
bFRocmVhZDsKKyAgICBzX2ltcGxUaHJlYWQgPSB0aHJlYWQ7CiB9CiAKLXZvaWQgQ0NQcm94eTo6
c2V0SW1wbFRocmVhZChXVEY6OlRocmVhZElkZW50aWZpZXIgaWQpCitDQ1RocmVhZCogQ0NQcm94
eTo6aW1wbFRocmVhZCgpCiB7Ci0gICAgaW1wbFRocmVhZElEID0gaWQ7CisgICAgcmV0dXJuIHNf
aW1wbFRocmVhZDsKIH0KIAotdm9pZCBDQ1Byb3h5OjpzZXRNYWluVGhyZWFkKFdURjo6VGhyZWFk
SWRlbnRpZmllciBpZCkKKyNpZm5kZWYgTkRFQlVHCitib29sIENDUHJveHk6OmlzTWFpblRocmVh
ZCgpCiB7Ci0gICAgbWFpblRocmVhZElEID0gaWQ7CisgICAgQVNTRVJUKHNfbWFpblRocmVhZCk7
CisgICAgcmV0dXJuICFmYWtlSW1wbFRocmVhZCAmJiBjdXJyZW50VGhyZWFkKCkgPT0gc19tYWlu
VGhyZWFkLT50aHJlYWRJRCgpOworfQorCitib29sIENDUHJveHk6OmlzSW1wbFRocmVhZCgpCit7
CisgICAgV1RGOjpUaHJlYWRJZGVudGlmaWVyIGltcGxUaHJlYWRJRCA9IHNfaW1wbFRocmVhZCA/
IHNfaW1wbFRocmVhZC0+dGhyZWFkSUQoKSA6IDA7CisgICAgcmV0dXJuIGZha2VJbXBsVGhyZWFk
IHx8IGN1cnJlbnRUaHJlYWQoKSA9PSBpbXBsVGhyZWFkSUQ7Cit9CisjZW5kaWYKKwordm9pZCBD
Q1Byb3h5OjpzZXRJbXBsVGhyZWFkKGJvb2wgaXNJbXBsVGhyZWFkKQoreworICAgIGZha2VJbXBs
VGhyZWFkID0gaXNJbXBsVGhyZWFkOwogfQogCiAjZW5kaWYgLy8gIU5ERUJVRwpAQCAtNzYsNCAr
ODksOSBAQCBDQ1Byb3h5OjpDQ1Byb3h5KCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
fQogCitDQ1Byb3h5Ojp+Q0NQcm94eSgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
K30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IDUxNmI2Nzk1NjU1MjljMzkzNTEzNjNlNWE2ZWZhMTE3
YzdhMDEzNTkuLmE2MjMwZWFjZDU2ODlkNWJlYTQyZjBkMGNkYjljNjM4NTMzNzg4YWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Byb3h5LmgKQEAgLTUwLDcgKzUwLDEzIEBAIGNsYXNzIFRleHR1cmVNYW5hZ2VyOwogY2xhc3Mg
Q0NQcm94eSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NQcm94eSk7CiBwdWJsaWM6Ci0g
ICAgdmlydHVhbCB+Q0NQcm94eSgpIHsgfQorICAgIHN0YXRpYyB2b2lkIHNldE1haW5UaHJlYWQo
Q0NUaHJlYWQqKTsKKyAgICBzdGF0aWMgQ0NUaHJlYWQqIG1haW5UaHJlYWQoKTsKKworICAgIHN0
YXRpYyB2b2lkIHNldEltcGxUaHJlYWQoQ0NUaHJlYWQqKTsKKyAgICBzdGF0aWMgQ0NUaHJlYWQq
IGltcGxUaHJlYWQoKTsKKworICAgIHZpcnR1YWwgfkNDUHJveHkoKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBjb21wb3NpdGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKSA9
IDA7CiAKQEAgLTg2LDggKzkyLDYgQEAgcHVibGljOgogCiAjaWZuZGVmIE5ERUJVRwogICAgIHN0
YXRpYyB2b2lkIHNldEltcGxUaHJlYWQoYm9vbCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0SW1wbFRo
cmVhZChXVEY6OlRocmVhZElkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIHNldE1haW5UaHJl
YWQoV1RGOjpUaHJlYWRJZGVudGlmaWVyKTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3Bl
ZE1haW5UaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY29wZWRNYWluVGhyZWFkUHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYmZkZjVmYjg4MjY1MDk0MGU3MTBjZWM0N2Y5Njc4ZTAxZTFmOTdkOS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZE1haW5UaHJlYWRQcm94eS5oCisr
KyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDQ1Nj
b3BlZE1haW5UaHJlYWRQcm94eV9oCi0jZGVmaW5lIENDU2NvcGVkTWFpblRocmVhZFByb3h5X2gK
LQotI2luY2x1ZGUgImNjL0NDTWFpblRocmVhZFRhc2suaCIKLSNpbmNsdWRlICJjYy9DQ1Byb3h5
LmgiCi0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotLy8gVGhpcyBjbGFzcyBpcyBhIHByb3h5IHVzZWQgdG8gcG9zdCB0YXNrcyB0
byB0aGUgbWFpbiB0aHJlYWQgZnJvbSBhbnkgb3RoZXIgdGhyZWFkLiBUaGUgcHJveHkgbWF5IGJl
IHNodXQgZG93biBhdAotLy8gYW55IHBvaW50IGZyb20gdGhlIG1haW4gdGhyZWFkIGFmdGVyIHdo
aWNoIG5vIG1vcmUgdGFza3MgcG9zdGVkIHRvIHRoZSBwcm94eSB3aWxsIHJ1bi4gSW4gb3RoZXIg
d29yZHMsIGFsbAotLy8gdGFza3MgcG9zdGVkIHZpYSBhIHByb3h5IGFyZSBzY29wZWQgdG8gdGhl
IGxpZmVjeWNsZSBvZiB0aGUgcHJveHkuIFVzZSB0aGlzIHdoZW4gcG9zdGluZyB0YXNrcyB0byBh
biBvYmplY3QgdGhhdAotLy8gbWlnaHQgZGllIHdpdGggdGFza3MgaW4gZmxpZ2h0LgotLy8KLS8v
IFRoZSBwcm94eSBtdXN0IGJlIGNyZWF0ZWQgYW5kIHNodXQgZG93biBmcm9tIHRoZSBtYWluIHRo
cmVhZCwgdGFza3MgbWF5IGJlIHBvc3RlZCBmcm9tIGFueSB0aHJlYWQuCi0vLwotLy8gSW1wbGVt
ZW50YXRpb24gbm90ZTogVW5saWtlIFNjb3BlZFJ1bm5hYmxlTWV0aG9kRmFjdG9yeSBpbiBDaHJv
bWl1bSwgcGVuZGluZyB0YXNrcyBhcmUgbm90IGNhbmNlbGxlZCBieSBhY3R1YWxseQotLy8gZGVz
dHJveWluZyB0aGUgcHJveHkuIEluc3RlYWQgZWFjaCBwZW5kaW5nIHRhc2sgaG9sZHMgYSByZWZl
cmVuY2UgdG8gdGhlIHByb3h5IHRvIGF2b2lkIG1haW50YWluaW5nIGFuIGV4cGxpY2l0Ci0vLyBs
aXN0IG9mIG91dHN0YW5kaW5nIHRhc2tzLgotY2xhc3MgQ0NTY29wZWRNYWluVGhyZWFkUHJveHkg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q0NTY29wZWRNYWluVGhyZWFkUHJveHk+IHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDQ1Njb3BlZE1haW5UaHJlYWRQcm94eT4g
Y3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ0NTY29wZWRNYWluVGhyZWFkUHJveHkpOwot
ICAgIH0KLQotICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLiBQb3N0cyBhIHRh
c2sgdG8gdGhlIG1haW4gdGhyZWFkIHRoYXQgcnVucyB1bmxlc3MKLSAgICAvLyBzaHV0ZG93bigp
IGlzIGNhbGxlZCBiZWZvcmUgaXQgcnVucy4KLSAgICB2b2lkIHBvc3RUYXNrKFBhc3NPd25QdHI8
Q0NNYWluVGhyZWFkOjpUYXNrPiB0YXNrKQotICAgIHsKLSAgICAgICAgcmVmKCk7Ci0gICAgICAg
IENDTWFpblRocmVhZDo6cG9zdFRhc2soY3JlYXRlTWFpblRocmVhZFRhc2sodGhpcywgJkNDU2Nv
cGVkTWFpblRocmVhZFByb3h5OjpydW5UYXNrSWZOb3RTaHV0ZG93biwgdGFzaykpOwotICAgIH0K
LQotICAgIHZvaWQgc2h1dGRvd24oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKENDUHJveHk6Omlz
TWFpblRocmVhZCgpKTsKLSAgICAgICAgQVNTRVJUKCFtX3NodXRkb3duKTsKLSAgICAgICAgbV9z
aHV0ZG93biA9IHRydWU7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIENDU2NvcGVkTWFpblRocmVh
ZFByb3h5KCkKLSAgICAgICAgOiBtX3NodXRkb3duKGZhbHNlKQotICAgIHsKLSAgICB9Ci0KLSAg
ICB2b2lkIHJ1blRhc2tJZk5vdFNodXRkb3duKFBhc3NPd25QdHI8Q0NNYWluVGhyZWFkOjpUYXNr
PiBwb3BUYXNrKQotICAgIHsKLSAgICAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgp
KTsKLSAgICAgICAgT3duUHRyPENDTWFpblRocmVhZDo6VGFzaz4gdGFzayA9IHBvcFRhc2s7Ci0g
ICAgICAgIGlmICghbV9zaHV0ZG93bikKLSAgICAgICAgICAgIHRhc2stPnBlcmZvcm1UYXNrKCk7
Ci0gICAgICAgIGRlcmVmKCk7Ci0gICAgfQotCi0gICAgYm9vbCBtX3NodXRkb3duOyAvLyBPbmx5
IGFjY2Vzc2VkIG9uIHRoZSBtYWluIHRocmVhZAotfTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVk
VGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2NvcGVkVGhyZWFkUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWRhNzBhZGQyZWNjOGIyYmVh
MzA2ZGIwNjNjYmE0ZjA0MzA2MWMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oCkBAIC0w
LDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NTY29wZWRUaHJlYWRQcm94eV9o
CisjZGVmaW5lIENDU2NvcGVkVGhyZWFkUHJveHlfaAorCisjaW5jbHVkZSAiY2MvQ0NQcm94eS5o
IgorI2luY2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFRoaXMgY2xhc3MgaXMg
YSBwcm94eSB1c2VkIHRvIHBvc3QgdGFza3MgdG8gYSBnaXZlbiB0aHJlYWQgZnJvbSBhbnkgb3Ro
ZXIgdGhyZWFkLiBUaGUgcHJveHkgbWF5IGJlIHNodXQgZG93biBhdAorLy8gYW55IHBvaW50IGZy
b20gdGhlIG1haW4gdGhyZWFkIGFmdGVyIHdoaWNoIG5vIG1vcmUgdGFza3MgcG9zdGVkIHRvIHRo
ZSBwcm94eSB3aWxsIHJ1bi4gSW4gb3RoZXIgd29yZHMsIGFsbAorLy8gdGFza3MgcG9zdGVkIHZp
YSBhIHByb3h5IGFyZSBzY29wZWQgdG8gdGhlIGxpZmVjeWNsZSBvZiB0aGUgcHJveHkuIFVzZSB0
aGlzIHdoZW4gcG9zdGluZyB0YXNrcyB0byBhbiBvYmplY3QgdGhhdAorLy8gbWlnaHQgZGllIHdp
dGggdGFza3MgaW4gZmxpZ2h0LgorLy8KKy8vIFRoZSBwcm94eSBtdXN0IGJlIGNyZWF0ZWQgYW5k
IHNodXQgZG93biBmcm9tIHRoZSBtYWluIHRocmVhZCwgdGFza3MgbWF5IGJlIHBvc3RlZCBmcm9t
IGFueSB0aHJlYWQuCisvLworLy8gSW1wbGVtZW50YXRpb24gbm90ZTogVW5saWtlIFNjb3BlZFJ1
bm5hYmxlTWV0aG9kRmFjdG9yeSBpbiBDaHJvbWl1bSwgcGVuZGluZyB0YXNrcyBhcmUgbm90IGNh
bmNlbGxlZCBieSBhY3R1YWxseQorLy8gZGVzdHJveWluZyB0aGUgcHJveHkuIEluc3RlYWQgZWFj
aCBwZW5kaW5nIHRhc2sgaG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIHByb3h5IHRvIGF2b2lkIG1h
aW50YWluaW5nIGFuIGV4cGxpY2l0CisvLyBsaXN0IG9mIG91dHN0YW5kaW5nIHRhc2tzLgorY2xh
c3MgQ0NTY29wZWRUaHJlYWRQcm94eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDQ1Nj
b3BlZFRocmVhZFByb3h5PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NTY29w
ZWRUaHJlYWRQcm94eT4gY3JlYXRlKENDVGhyZWFkKiB0aHJlYWQpCisgICAgeworICAgICAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IHRocmVhZC0+dGhyZWFkSUQoKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ0NTY29wZWRUaHJlYWRQcm94eSh0aHJlYWQpKTsKKyAgICB9CisK
KyAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4gUG9zdHMgYSB0YXNrIHRvIHRo
ZSBtYWluIHRocmVhZCB0aGF0IHJ1bnMgdW5sZXNzCisgICAgLy8gc2h1dGRvd24oKSBpcyBjYWxs
ZWQgYmVmb3JlIGl0IHJ1bnMuCisgICAgdm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPENDVGhyZWFk
OjpUYXNrPiB0YXNrKQorICAgIHsKKyAgICAgICAgcmVmKCk7CisgICAgICAgIG1fdGhyZWFkLT5w
b3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDU2NvcGVkVGhyZWFkUHJveHk6OnJ1
blRhc2tJZk5vdFNodXRkb3duLCB0YXNrKSk7CisgICAgfQorCisgICAgdm9pZCBzaHV0ZG93bigp
CisgICAgeworICAgICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdGhyZWFkLT50aHJl
YWRJRCgpKTsKKyAgICAgICAgQVNTRVJUKCFtX3NodXRkb3duKTsKKyAgICAgICAgbV9zaHV0ZG93
biA9IHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IENDU2NvcGVkVGhyZWFk
UHJveHkoQ0NUaHJlYWQqIHRocmVhZCkKKyAgICAgICAgOiBtX3RocmVhZCh0aHJlYWQpCisgICAg
ICAgICwgbV9zaHV0ZG93bihmYWxzZSkgeyB9CisKKyAgICB2b2lkIHJ1blRhc2tJZk5vdFNodXRk
b3duKFBhc3NPd25QdHI8Q0NUaHJlYWQ6OlRhc2s+IHBvcFRhc2spCisgICAgeworICAgICAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdGhyZWFkLT50aHJlYWRJRCgpKTsKKyAgICAgICAg
T3duUHRyPENDVGhyZWFkOjpUYXNrPiB0YXNrID0gcG9wVGFzazsKKyAgICAgICAgaWYgKCFtX3No
dXRkb3duKQorICAgICAgICAgICAgdGFzay0+cGVyZm9ybVRhc2soKTsKKyAgICAgICAgZGVyZWYo
KTsKKyAgICB9CisKKyAgICBDQ1RocmVhZCogbV90aHJlYWQ7CisgICAgYm9vbCBtX3NodXRkb3du
OyAvLyBPbmx5IGFjY2Vzc2VkIG9uIHRoZSBtYWluIHRocmVhZAorfTsKKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggYzE2MGUxOThiNGI5
NDQ2NzNkYWMwMTQ1ZGMxMTFjNDViYzY4Y2Q2Yi4uZGRjMDFjMTQwOWI4YzkxMjlkMWNmYTM5Mjdj
NDQxMzhkZmU1ZWM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAK
QEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNp
bmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCi0j
aW5jbHVkZSAiY2MvQ0NNYWluVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgImNjL0NDU2Nyb2xsQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggNmY0ZWQ5
MGQxMGE2ODg1MzBiNDNlZTMyYjlkYTQ1NjNkZGY3OGI3ZS4uOGQwZWZkNzM2ZDc0MzFkNTg0MTU0
ZTkwODkxMThkNjQzNGViNDM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTMy
LDkgKzMyLDggQEAKICNpbmNsdWRlICJjYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJjYy9DQ0lucHV0SGFuZGxlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5o
IgotI2luY2x1ZGUgImNjL0NDTWFpblRocmVhZFRhc2suaCIKICNpbmNsdWRlICJjYy9DQ1NjaGVk
dWxlci5oIgotI2luY2x1ZGUgImNjL0NDU2NvcGVkTWFpblRocmVhZFByb3h5LmgiCisjaW5jbHVk
ZSAiY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUgImNjL0NDU2Nyb2xsQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9D
Q1RocmVhZFRhc2suaCIKQEAgLTQ1LDE2ICs0NCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0NUaHJlYWQqIENDVGhyZWFkUHJveHk6OnNfY2NUaHJl
YWQgPSAwOwotCi12b2lkIENDVGhyZWFkUHJveHk6OnNldFRocmVhZChDQ1RocmVhZCogY2NUaHJl
YWQpCi17Ci0gICAgc19jY1RocmVhZCA9IGNjVGhyZWFkOwotI2lmbmRlZiBOREVCVUcKLSAgICBD
Q1Byb3h5OjpzZXRJbXBsVGhyZWFkKHNfY2NUaHJlYWQtPnRocmVhZElEKCkpOwotI2VuZGlmCi19
Ci0KIFBhc3NPd25QdHI8Q0NQcm94eT4gQ0NUaHJlYWRQcm94eTo6Y3JlYXRlKENDTGF5ZXJUcmVl
SG9zdCogbGF5ZXJUcmVlSG9zdCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDVGhyZWFk
UHJveHkobGF5ZXJUcmVlSG9zdCkpOwpAQCAtNjcsNyArNTYsNiBAQCBDQ1RocmVhZFByb3h5OjpD
Q1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKICAgICAsIG1fc3Rh
cnRlZChmYWxzZSkKICAgICAsIG1fbGFzdEV4ZWN1dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNlcXVl
bmNlTnVtYmVyKC0xKQogICAgICwgbV9udW1CZWdpbkZyYW1lQW5kQ29tbWl0c0lzc3VlZE9uSW1w
bFRocmVhZCgwKQotICAgICwgbV9tYWluVGhyZWFkUHJveHkoQ0NTY29wZWRNYWluVGhyZWFkUHJv
eHk6OmNyZWF0ZSgpKQogICAgICwgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQoMCkKICAg
ICAsIG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKDApCiAg
ICAgLCBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCgwKQpAQCAtNzUsNiArNjMs
NyBAQCBDQ1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJU
cmVlSG9zdCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94
eSIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgbV9tYWluVGhy
ZWFkUHJveHkgPSBDQ1Njb3BlZFRocmVhZFByb3h5OjpjcmVhdGUoQ0NQcm94eTo6bWFpblRocmVh
ZCgpKTsKIH0KIAogQ0NUaHJlYWRQcm94eTo6fkNDVGhyZWFkUHJveHkoKQpAQCAtOTYsMTEgKzg1
LDExIEBAIGJvb2wgQ0NUaHJlYWRQcm94eTo6Y29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4
ZWxzLCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgICAgICAvLyBwb2ludGVycyB2aWEgdGhlIEND
VGhyZWFkIHRhc2sgbW9kZWwgaXMgcmVhbGx5IG1lc3N5LiBFZmZlY3RpdmVseSwgd2UKICAgICAg
ICAgLy8gYXJlIG1ha2luZyBhIGJsb2NraW5nIGNhbGwgdG8gY3JlYXRlQmVnaW5GcmFtZUFuZENv
bW1pdFRhc2tPbkltcGxUaHJlYWQsCiAgICAgICAgIC8vIGFuZCB0cnlpbmcgdG8gZ2V0IHRoZSBD
Q01haW5UaHJlYWQ6OlRhc2sgaXQgcmV0dXJucyBzbyB3ZSBjYW4gcnVuIGl0LgotICAgICAgICBP
d25QdHI8Q0NNYWluVGhyZWFkOjpUYXNrPiBiZWdpbkZyYW1lQW5kQ29tbWl0VGFzazsKKyAgICAg
ICAgT3duUHRyPENDVGhyZWFkOjpUYXNrPiBiZWdpbkZyYW1lQW5kQ29tbWl0VGFzazsKICAgICAg
ICAgewotICAgICAgICAgICAgQ0NNYWluVGhyZWFkOjpUYXNrKiB0YXNrUHRyID0gMDsKKyAgICAg
ICAgICAgIENDVGhyZWFkOjpUYXNrKiB0YXNrUHRyID0gMDsKICAgICAgICAgICAgIENDQ29tcGxl
dGlvbkV2ZW50IGNvbXBsZXRpb247Ci0gICAgICAgICAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhj
cmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6Om9idGFpbkJlZ2luRnJhbWVB
bmRDb21taXRUYXNrRnJvbUNDVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0
aW9uKSwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmdGFza1B0cikpKTsKKyAgICAgICAgICAgIEND
UHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZD
Q1RocmVhZFByb3h5OjpvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVhZCwg
QWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbiksIEFsbG93Q3Jvc3NUaHJlYWRBY2Nl
c3MoJnRhc2tQdHIpKSk7CiAgICAgICAgICAgICBjb21wbGV0aW9uLndhaXQoKTsKICAgICAgICAg
ICAgIGJlZ2luRnJhbWVBbmRDb21taXRUYXNrID0gYWRvcHRQdHIodGFza1B0cik7CiAgICAgICAg
IH0KQEAgLTExMiw3ICsxMDEsNyBAQCBib29sIENDVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUFuZFJl
YWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBSZWFkYmFja1Jl
cXVlc3QgcmVxdWVzdDsKICAgICByZXF1ZXN0LnJlY3QgPSByZWN0OwogICAgIHJlcXVlc3QucGl4
ZWxzID0gcGl4ZWxzOwotICAgIHNfY2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFz
ayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6cmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkLCBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKCZyZXF1ZXN0KSkpOworICAgIENDUHJveHk6OmltcGxUaHJlYWQo
KS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpyZXF1
ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJnJlcXVlc3Qp
KSk7CiAgICAgcmVxdWVzdC5jb21wbGV0aW9uLndhaXQoKTsKICAgICByZXR1cm4gcmVxdWVzdC5z
dWNjZXNzOwogfQpAQCAtMTQxLDcgKzEzMCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZmluaXNo
QWxsUmVuZGVyaW5nKCkKIAogICAgIC8vIE1ha2Ugc3VyZSBhbGwgR0wgZHJhd2luZyBpcyBmaW5p
c2hlZCBvbiB0aGUgaW1wbCB0aHJlYWQuCiAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlv
bjsKLSAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkND
VGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZCwgQWxsb3dDcm9zc1Ro
cmVhZEFjY2VzcygmY29tcGxldGlvbikpKTsKKyAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBv
c3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxs
UmVuZGVyaW5nT25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9u
KSkpOwogICAgIGNvbXBsZXRpb24ud2FpdCgpOwogfQogCkBAIC0xNjgsNyArMTU3LDcgQEAgYm9v
bCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCiAgICAgQ0NDb21wbGV0
aW9uRXZlbnQgY29tcGxldGlvbjsKICAgICBib29sIGluaXRpYWxpemVTdWNjZWVkZWQgPSBmYWxz
ZTsKICAgICBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllczsKLSAgICBzX2Nj
VGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6
OmluaXRpYWxpemVMYXllclJlbmRlcmVyT25JbXBsVGhyZWFkLAorICAgIENDUHJveHk6OmltcGxU
aHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5
Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoY29udGV4dFB0
ciksIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmaW5pdGlh
bGl6ZVN1Y2NlZWRlZCksIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNhcGFiaWxpdGllcyksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFk
QWNjZXNzKCZtX2NvbXBvc2l0b3JJZGVudGlmaWVyKSkpOwpAQCAtMjAzLDcgKzE5Miw3IEBAIHZv
aWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNBbmltYXRlKCkKIAogICAgIFRSQUNFX0VWRU5UKCJD
Q1RocmVhZFByb3h5OjpzZXROZWVkc0FuaW1hdGlvbiIsIHRoaXMsIDApOwogICAgIG1fY29tbWl0
UmVxdWVzdGVkID0gdHJ1ZTsKLSAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVh
ZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQW5pbWF0ZU9uSW1wbFRocmVhZCkp
OworICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNr
KHRoaXMsICZDQ1RocmVhZFByb3h5OjpzZXROZWVkc0FuaW1hdGVPbkltcGxUaHJlYWQpKTsKIH0K
IAogdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCgpCkBAIC0yMTQsNyArMjAzLDcg
QEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCgpCiAKICAgICBUUkFDRV9FVkVO
VCgiQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXQiLCB0aGlzLCAwKTsKICAgICBtX2NvbW1p
dFJlcXVlc3RlZCA9IHRydWU7Ci0gICAgc19jY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJl
YWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCkp
OworICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNr
KHRoaXMsICZDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCkpOwogfQog
CiB2b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRzQW5pbWF0ZU9uSW1wbFRocmVhZCgpCkBAIC0y
MjksNyArMjE4LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpvblN3YXBCdWZmZXJzQ29tcGxldGVP
bkltcGxUaHJlYWQoKQogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgVFJBQ0VfRVZF
TlQoIkNDVGhyZWFkUHJveHk6Om9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVhZCIsIHRo
aXMsIDApOwogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5kaWRTd2FwQnVmZmVyc0NvbXBs
ZXRlKCk7Ci0gICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZU1haW5UaHJlYWRU
YXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKSk7CisgICAg
bV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NU
aHJlYWRQcm94eTo6ZGlkQ29tcGxldGVTd2FwQnVmZmVycykpOwogfQogCiB2b2lkIENDVGhyZWFk
UHJveHk6OnNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkKQEAgLTI0MywxNCArMjMyLDE0IEBA
IHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXcoKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVk
cmF3IiwgdGhpcywgMCk7Ci0gICAgc19jY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRU
YXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCkpOwor
ICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRo
aXMsICZDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCkpOwogfQogCiB2
b2lkIENDVGhyZWFkUHJveHk6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKLSAg
ICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFk
UHJveHk6OnNldFZpc2libGVPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNv
bXBsZXRpb24pLCB2aXNpYmxlKSk7CisgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFz
ayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnNldFZpc2libGVPbklt
cGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pLCB2aXNpYmxlKSk7
CiAgICAgY29tcGxldGlvbi53YWl0KCk7CiB9CiAKQEAgLTI3NiwxMCArMjY1LDEwIEBAIHZvaWQg
Q0NUaHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKQogdm9pZCBDQ1RocmVh
ZFByb3h5OjpzdGFydCgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NF
UlQoc19jY1RocmVhZCk7CisgICAgQVNTRVJUKENDUHJveHk6OmltcGxUaHJlYWQoKSk7CiAgICAg
Ly8gQ3JlYXRlIExheWVyVHJlZUhvc3RJbXBsLgogICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBs
ZXRpb247Ci0gICAgc19jY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMs
ICZDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9uSW1wbFRocmVhZCwgQWxsb3dDcm9zc1Ro
cmVhZEFjY2VzcygmY29tcGxldGlvbikpKTsKKyAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBv
c3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6
ZUltcGxPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pKSk7
CiAgICAgY29tcGxldGlvbi53YWl0KCk7CiAKICAgICBtX3N0YXJ0ZWQgPSB0cnVlOwpAQCAtMjkz
LDcgKzI4Miw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RvcCgpCiAKICAgICAvLyBTeW5jaHJv
bm91c2x5IGRlbGV0ZXMgdGhlIGltcGwuCiAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlv
bjsKLSAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkND
VGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pKSk7CisgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5w
b3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmxheWVyVHJl
ZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRp
b24pKSk7CiAgICAgY29tcGxldGlvbi53YWl0KCk7CiAKICAgICBtX21haW5UaHJlYWRQcm94eS0+
c2h1dGRvd24oKTsgLy8gU3RvcCBydW5uaW5nIHRhc2tzIHBvc3RlZCB0byB1cy4KQEAgLTMxOSwx
NCArMzA4LDE0IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFt
ZSgpCiAgICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUJlZ2luRnJhbWVBbmRD
b21taXRUYXNrT25JbXBsVGhyZWFkKCkpOwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6Om9idGFp
bkJlZ2luRnJhbWVBbmRDb21taXRUYXNrRnJvbUNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBj
b21wbGV0aW9uLCBDQ01haW5UaHJlYWQ6OlRhc2sqKiB0YXNrUHRyKQordm9pZCBDQ1RocmVhZFBy
b3h5OjpvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVhZChDQ0NvbXBsZXRp
b25FdmVudCogY29tcGxldGlvbiwgQ0NUaHJlYWQ6OlRhc2sqKiB0YXNrUHRyKQogewotICAgIE93
blB0cjxDQ01haW5UaHJlYWQ6OlRhc2s+IHRhc2sgPSBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0
VGFza09uSW1wbFRocmVhZCgpOworICAgIE93blB0cjxDQ1RocmVhZDo6VGFzaz4gdGFzayA9IGNy
ZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25JbXBsVGhyZWFkKCk7CiAgICAgKnRhc2tQdHIg
PSB0YXNrLmxlYWtQdHIoKTsKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKIH0KIAotUGFzc093
blB0cjxDQ01haW5UaHJlYWQ6OlRhc2s+IENDVGhyZWFkUHJveHk6OmNyZWF0ZUJlZ2luRnJhbWVB
bmRDb21taXRUYXNrT25JbXBsVGhyZWFkKCkKK1Bhc3NPd25QdHI8Q0NUaHJlYWQ6OlRhc2s+IEND
VGhyZWFkUHJveHk6OmNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25JbXBsVGhyZWFkKCkK
IHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6Y3JlYXRlQmVnaW5GcmFtZUFuZENv
bW1pdFRhc2tPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFk
KCkpOwpAQCAtMzM0LDcgKzMyMyw3IEBAIFBhc3NPd25QdHI8Q0NNYWluVGhyZWFkOjpUYXNrPiBD
Q1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1wCiAKICAgICAv
LyBOT1RFLCBpdCBpcyBwb3NzaWJsZSB0byByZWNlaWV2ZSBhIHJlcXVlc3QgZm9yIGEKICAgICAv
LyBiZWdpbkZyYW1lQW5kQ29tbWl0T25JbXBsVGhyZWFkIGZyb20gZmluaXNoQWxsUmVuZGVyaW5n
IHdoaWxlIGEKLSAgICAvLyBiZWdpbkZyYW1lQW5kQ29tbWl0T25JbXBsVGhyZWFkIGlzIGVucXVl
dWVkLiBTaW5jZSBDQ01haW5UaHJlYWQgZG9lc24ndAorICAgIC8vIGJlZ2luRnJhbWVBbmRDb21t
aXRPbkltcGxUaHJlYWQgaXMgZW5xdWV1ZWQuIFNpbmNlIENDVGhyZWFkIGRvZXNuJ3QKICAgICAv
LyBwcm92aWRlIGEgdGhyZWFkc2FmZSB3YXkgdG8gY2FuY2VsIHRhc2tzLCBpdCBpcyBpbXBvcnRh
bnQgdGhhdAogICAgIC8vIGJlZ2luRnJhbWVBbmRDb21taXQgYmUgc3RydWN0dXJlZCB0byB1bmRl
cnN0YW5kIHRoYXQgaXQgbWF5IGdldCBjYWxsZWQgYXQKICAgICAvLyBhIHBvaW50IHRoYXQgaXQg
c2hvdWxkbid0LiBXZSBkbyB0aGlzIGJ5IGFzc2lnbmluZyBhIHNlcXVlbmNlIG51bWJlciB0bwpA
QCAtMzQ0LDcgKzMzMyw3IEBAIFBhc3NPd25QdHI8Q0NNYWluVGhyZWFkOjpUYXNrPiBDQ1RocmVh
ZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1wCiAgICAgaW50IHRoaXNU
YXNrU2VxdWVuY2VOdW1iZXIgPSBtX251bUJlZ2luRnJhbWVBbmRDb21taXRzSXNzdWVkT25JbXBs
VGhyZWFkOwogICAgIG1fbnVtQmVnaW5GcmFtZUFuZENvbW1pdHNJc3N1ZWRPbkltcGxUaHJlYWQr
KzsKICAgICBPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5mbyA9IG1fbGF5ZXJU
cmVlSG9zdEltcGwtPnByb2Nlc3NTY3JvbGxEZWx0YXMoKTsKLSAgICByZXR1cm4gY3JlYXRlTWFp
blRocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQsIHRo
aXNUYXNrU2VxdWVuY2VOdW1iZXIsIGZyYW1lQmVnaW5UaW1lLCBzY3JvbGxJbmZvLnJlbGVhc2Uo
KSk7CisgICAgcmV0dXJuIGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6
YmVnaW5GcmFtZUFuZENvbW1pdCwgdGhpc1Rhc2tTZXF1ZW5jZU51bWJlciwgZnJhbWVCZWdpblRp
bWUsIHNjcm9sbEluZm8ucmVsZWFzZSgpKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdp
bkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW1l
LCBQYXNzT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+IHNjcm9sbEluZm8pCkBAIC0zODcsNyAr
Mzc2LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1
ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICAgICAgLy8gY29vcmRpbmF0ZWQg
YnkgdGhlIENDU2NoZWR1bGVyLgogICAgICAgICBUUkFDRV9FVkVOVCgiY29tbWl0IiwgdGhpcywg
MCk7CiAgICAgICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247Ci0gICAgICAgIHNfY2NU
aHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6
YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZj
b21wbGV0aW9uKSkpOworICAgICAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNy
ZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRl
T25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSkpOwogICAg
ICAgICBjb21wbGV0aW9uLndhaXQoKTsKICAgICB9CiAKQEAgLTQ4OCw3ICs0NzcsNyBAQCB2b2lk
IENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCkKICAgICAvLyBUZWxs
IHRoZSBtYWluIHRocmVhZCB0aGF0IHRoZSB0aGUgbmV3bHktY29tbWl0ZWQgZnJhbWUgd2FzIGRy
YXduLgogICAgIGlmIChtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZU9uSW1wbFRocmVh
ZCkgewogICAgICAgICBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZU9uSW1wbFRocmVh
ZCA9IGZhbHNlOwotICAgICAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlTWFp
blRocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmRpZENvbW1pdEFuZERyYXdGcmFtZSkp
OworICAgICAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNr
KHRoaXMsICZDQ1RocmVhZFByb3h5OjpkaWRDb21taXRBbmREcmF3RnJhbWUpKTsKICAgICB9CiB9
CiAKQEAgLTUxNCw3ICs1MDMsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVJbXBs
T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogICAgIEFTU0VSVChp
c0ltcGxUaHJlYWQoKSk7CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbCA9IG1fbGF5ZXJUcmVlSG9z
dC0+Y3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwodGhpcyk7CiAgICAgY29uc3QgZG91YmxlIGRpc3Bs
YXlSZWZyZXNoSW50ZXJ2YWxNcyA9IDEwMDAuMCAvIDYwLjA7Ci0gICAgT3duUHRyPENDRnJhbWVS
YXRlQ29udHJvbGxlcj4gZnJhbWVSYXRlQ29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBDQ0ZyYW1l
UmF0ZUNvbnRyb2xsZXIoQ0NEZWxheUJhc2VkVGltZVNvdXJjZTo6Y3JlYXRlKGRpc3BsYXlSZWZy
ZXNoSW50ZXJ2YWxNcywgc19jY1RocmVhZCkpKTsKKyAgICBPd25QdHI8Q0NGcmFtZVJhdGVDb250
cm9sbGVyPiBmcmFtZVJhdGVDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IENDRnJhbWVSYXRlQ29u
dHJvbGxlcihDQ0RlbGF5QmFzZWRUaW1lU291cmNlOjpjcmVhdGUoZGlzcGxheVJlZnJlc2hJbnRl
cnZhbE1zLCBDQ1Byb3h5OjppbXBsVGhyZWFkKCkpKSk7CiAgICAgbV9zY2hlZHVsZXJPbkltcGxU
aHJlYWQgPSBDQ1NjaGVkdWxlcjo6Y3JlYXRlKHRoaXMsIGZyYW1lUmF0ZUNvbnRyb2xsZXIucmVs
ZWFzZSgpKTsKICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0VmlzaWJsZShtX2xheWVy
VHJlZUhvc3RJbXBsLT52aXNpYmxlKCkpOwogICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDAxNDBhNzE1ZGVmZjM4YmNkMzAwNjYzNzE3N2JiNTNm
YTY0OWU2YmMuLmViZjQzMjg4MzljMmFhNDFiMjk5NDIyNGI4MTljYjg0ZDM1MTQzMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTI3LDkgKzI3LDkgQEAKIAogI2luY2x1ZGUgImNjL0ND
Q29tcGxldGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgot
I2luY2x1ZGUgImNjL0NDTWFpblRocmVhZC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNp
bmNsdWRlICJjYy9DQ1NjaGVkdWxlci5oIgorI2luY2x1ZGUgImNjL0NDVGhyZWFkLmgiCiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNywxNCArMzcs
MTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0NJbnB1dEhhbmRsZXI7CiBjbGFzcyBD
Q0xheWVyVHJlZUhvc3Q7CiBjbGFzcyBDQ1NjaGVkdWxlcjsKLWNsYXNzIENDU2NvcGVkTWFpblRo
cmVhZFByb3h5OworY2xhc3MgQ0NTY29wZWRUaHJlYWRQcm94eTsKIGNsYXNzIENDVGV4dHVyZVVw
ZGF0ZXI7CiBjbGFzcyBDQ1RocmVhZDsKIAogY2xhc3MgQ0NUaHJlYWRQcm94eSA6IHB1YmxpYyBD
Q1Byb3h5LCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50LCBDQ1NjaGVkdWxlckNsaWVudCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgc2V0VGhyZWFkKENDVGhyZWFkKik7Ci0KICAgICBzdGF0
aWMgUGFzc093blB0cjxDQ1Byb3h5PiBjcmVhdGUoQ0NMYXllclRyZWVIb3N0Kik7CiAKICAgICB2
aXJ0dWFsIH5DQ1RocmVhZFByb3h5KCk7CkBAIC04MCwyMCArNzgsMjAgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwogCi0g
ICAgLy8gQ2FsbGVkIG9uIENDTWFpblRocmVhZAorICAgIC8vIENhbGxlZCBvbiBtYWluIHRocmVh
ZAogICAgIHZvaWQgYmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJs
ZSBmcmFtZUJlZ2luVGltZSwgUGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0Pik7CiAgICAg
dm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKTsKICAgICB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1
ZmZlcnMoKTsKIAotICAgIC8vIENhbGxlZCBvbiBDQ1RocmVhZAorICAgIC8vIENhbGxlZCBvbiBp
bXBsIHRocmVhZAogICAgIHN0cnVjdCBSZWFkYmFja1JlcXVlc3QgewogICAgICAgICBDQ0NvbXBs
ZXRpb25FdmVudCBjb21wbGV0aW9uOwogICAgICAgICBib29sIHN1Y2Nlc3M7CiAgICAgICAgIHZv
aWQqIHBpeGVsczsKICAgICAgICAgSW50UmVjdCByZWN0OwogICAgIH07Ci0gICAgUGFzc093blB0
cjxDQ01haW5UaHJlYWQ6OlRhc2s+IGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25JbXBs
VGhyZWFkKCk7Ci0gICAgdm9pZCBvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1Ro
cmVhZChDQ0NvbXBsZXRpb25FdmVudCosIENDTWFpblRocmVhZDo6VGFzayoqKTsKKyAgICBQYXNz
T3duUHRyPENDVGhyZWFkOjpUYXNrPiBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1w
bFRocmVhZCgpOworICAgIHZvaWQgb2J0YWluQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tGcm9tQ0NU
aHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBDQ1RocmVhZDo6VGFzayoqKTsKICAgICB2b2lkIGJl
Z2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAgIHZv
aWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNrUmVxdWVzdCopOwogICAgIHZv
aWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CkBA
IC0xMjAsNyArMTE4LDcgQEAgcHJpdmF0ZToKIAogICAgIE93blB0cjxDQ1NjaGVkdWxlcj4gbV9z
Y2hlZHVsZXJPbkltcGxUaHJlYWQ7CiAKLSAgICBSZWZQdHI8Q0NTY29wZWRNYWluVGhyZWFkUHJv
eHk+IG1fbWFpblRocmVhZFByb3h5OworICAgIFJlZlB0cjxDQ1Njb3BlZFRocmVhZFByb3h5PiBt
X21haW5UaHJlYWRQcm94eTsKIAogICAgIC8vIFNldCB3aGVuIHRoZSBtYWluIHRocmVhZCBpcyB3
YWlpbmcgb24gYSByZWFkYmFjay4KICAgICBSZWFkYmFja1JlcXVlc3QqIG1fcmVhZGJhY2tSZXF1
ZXN0T25JbXBsVGhyZWFkOwpAQCAtMTM0LDggKzEzMiw2IEBAIHByaXZhdGU6CiAKICAgICAvLyBT
ZXQgd2hlbiB0aGUgbmV4dCBkcmF3IHNob3VsZCBwb3N0IGRpZENvbW1pdEFuZERyYXdGcmFtZSB0
byB0aGUgbWFpbiB0aHJlYWQuCiAgICAgYm9vbCBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRG
cmFtZU9uSW1wbFRocmVhZDsKLQotICAgIHN0YXRpYyBDQ1RocmVhZCogc19jY1RocmVhZDsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBkMzBiMjYxYmE0ODkwNTJlZDEy
YTZiNzA3ODJjZDFiNzY2NDJlYjNjLi4yNjIyNWZmMDhjM2UyYWRkMmI0ZWY3NmFlMGZjOGViMDM0
NDM3ZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0zNDksNyArMzQ5LDYgQEAK
ICAgICAgICAgICAgICAgICAnc3JjL0Jsb2JSZWdpc3RyeVByb3h5LmgnLAogICAgICAgICAgICAg
ICAgICdzcmMvQm91bmRPYmplY3QuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0JvdW5kT2Jq
ZWN0LmgnLAotICAgICAgICAgICAgICAgICdzcmMvQ0NNYWluVGhyZWFkSW1wbC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvQ0NUaHJlYWRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9DQ1RocmVhZEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9DaHJvbWVDbGllbnRJbXBs
LmNwcCcsCkBAIC02OTYsNyArNjk1LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzISc6IFsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIyBXZSBzaG91bGQgbm90IGluY2x1ZGUgZmlsZXMgZGVwZW5k
aW5nIG9uIHdlYmtpdF9zdXBwb3J0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
dGVzdHMvQ0NUaHJlYWRUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMgVGhlc2UgdGVzdHMgZGVwZW5kIG9uIHdlYmtpdF9zdXBwb3J0IGFuZAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjIGZ1bmN0aW9ucyBkZWZpbmVkIG9ubHkgaW4gIVdFQktJVF9J
TVBMRU1FTlRBVElPTi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0Fz
c29jaWF0ZWRVUkxMb2FkZXJUZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpp
bmRleCA2MDkzMjY2Yjk0YTFjMjdmNWQwMjc1MTA4MWY1ZWE4MDY4MGIxMjA5Li5jYzJiYTE5MWU0
MDRjOWE5M2M4ZjllOTczZTEyZDU1NGI4ZjY5MWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cGkKQEAgLTY1LDcgKzY1LDYgQEAKICAgICAgICAgICAgICd0ZXN0cy9DQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1NjaGVkdWxlclRlc3RD
b21tb24uaCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NUaHJlYWRUYXNrVGVzdC5jcHAnLAotICAg
ICAgICAgICAgJ3Rlc3RzL0NDVGhyZWFkVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0Zy
YW1lVGVzdEhlbHBlcnMuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9GcmFtZVRlc3RIZWxwZXJz
LmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DQ01haW5UaHJlYWRJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NDTWFpblRocmVhZEltcGwuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGVjMTMyMjk3OGI2NTgxOTBjYWRiMjAzNjI4MDJj
YTg5YTNmNjVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NDTWFpblRocmVhZEltcGwuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJjYy9DQ01haW5UaHJlYWQuaCIKLQotI2luY2x1ZGUgIldlYktpdC5oIgotI2luY2x1ZGUg
IldlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgotI2luY2x1ZGUgIldlYlRocmVhZC5oIgotI2luY2x1
ZGUgImNjL0NDUHJveHkuaCIKLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQotbmFtZXNwYWNlIHsKLQot
Ym9vbCBzX2luaXRpYWxpemVkVGhyZWFkID0gZmFsc2U7Ci1XZWJLaXQ6OldlYlRocmVhZCogc19j
bGllbnRUaHJlYWQgPSAwOwotCi1jbGFzcyBUYXNrV3JhcHBlciA6IHB1YmxpYyBXZWJLaXQ6Oldl
YlRocmVhZDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgVGFza1dyYXBwZXIoUGFzc093blB0cjxXZWJD
b3JlOjpDQ01haW5UaHJlYWQ6OlRhc2s+IHRhc2spIDogbV90YXNrKHRhc2spIHsgfQotICAgIHZp
cnR1YWwgflRhc2tXcmFwcGVyKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcnVuKCkKLSAgICB7
Ci0gICAgICAgIG1fdGFzay0+cGVyZm9ybVRhc2soKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
T3duUHRyPFdlYkNvcmU6OkNDTWFpblRocmVhZDo6VGFzaz4gbV90YXNrOwotfTsKLQotfSAvLyBh
bm9ueW1vdXMgbmFtZXNwYWNlCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBDQ01haW5U
aHJlYWQ6OmluaXRpYWxpemUoKQotewotICAgIGlmIChzX2luaXRpYWxpemVkVGhyZWFkKQotICAg
ICAgICByZXR1cm47Ci0gICAgQVNTRVJUKFdlYktpdDo6d2ViS2l0UGxhdGZvcm1TdXBwb3J0KCkp
OwotI2lmbmRlZiBOREVCVUcKLSAgICBXZWJDb3JlOjpDQ1Byb3h5OjpzZXRNYWluVGhyZWFkKGN1
cnJlbnRUaHJlYWQoKSk7Ci0jZW5kaWYKLSAgICBzX2NsaWVudFRocmVhZCA9IFdlYktpdDo6d2Vi
S2l0UGxhdGZvcm1TdXBwb3J0KCktPmN1cnJlbnRUaHJlYWQoKTsKLSAgICBzX2luaXRpYWxpemVk
VGhyZWFkID0gdHJ1ZTsKLX0KLQotdm9pZCBDQ01haW5UaHJlYWQ6OnBvc3RUYXNrKFBhc3NPd25Q
dHI8VGFzaz4gdGFzaykKLXsKLSAgICBBU1NFUlQoc19pbml0aWFsaXplZFRocmVhZCk7Ci0gICAg
aWYgKHNfY2xpZW50VGhyZWFkKQotICAgICAgICBzX2NsaWVudFRocmVhZC0+cG9zdFRhc2sobmV3
IFRhc2tXcmFwcGVyKHRhc2spKTsKLSAgICBlbHNlCi0gICAgICAgIFdURjo6Y2FsbE9uTWFpblRo
cmVhZChwZXJmb3JtVGFzaywgdGFzay5sZWFrUHRyKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DQ1RocmVhZElt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ0NUaHJlYWRJbXBsLmNwcAppbmRl
eCA1MGFjNGMyNzM5ZmFmNDhiN2YxOWIyYmJmNTU5YmFkNmRkNTNiZjgxLi5kNzBkNmRiZWUxMzE1
YjcxNzU4NDAzYjM1ZjFlOWI0OGM2ZDU2NTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9DQ1RocmVhZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0NDVGhyZWFkSW1wbC5jcHAKQEAgLTEwMyw2ICsxMDMsMTEgQEAgVGhyZWFkSWRlbnRpZmll
ciBDQ1RocmVhZEltcGw6OnRocmVhZElEKCkgY29uc3QKIENDVGhyZWFkSW1wbDo6Q0NUaHJlYWRJ
bXBsKFdlYlRocmVhZCogdGhyZWFkKQogICAgIDogbV90aHJlYWQodGhyZWFkKQogeworICAgIGlm
ICh0aHJlYWQgPT0gd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmN1cnJlbnRUaHJlYWQoKSkgewor
ICAgICAgbV90aHJlYWRJRCA9IGN1cnJlbnRUaHJlYWQoKTsKKyAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICAvLyBHZXQgdGhlIHRocmVhZElkIGZvciB0aGUgbmV3bHktY3JlYXRlZCB0aHJlYWQg
YnkgcnVubmluZyBhIHRhc2sKICAgICAvLyBvbiB0aGF0IHRocmVhZCwgYmxvY2tpbmcgb24gdGhl
IHJlc3VsdC4KICAgICBtX3RocmVhZElEID0gY3VycmVudFRocmVhZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwCmluZGV4IGNmMzMzMzU2
NmU0MzE4OGQ5ZTUzMGFjOWI1ZjE4ZDlmMzRmNzlmZTguLjgxZGVlMmYxYjI1YTg3NWI2ZGUxOGEy
NTllNzJhNTgwYWM3ZDBhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkNvbXBvc2l0b3JJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJDb21wb3NpdG9ySW1wbC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiB2b2lkIFdlYkNvbXBvc2l0b3I6OnNldFRocmVhZChXZWJUaHJlYWQqIGNvbXBvc2l0b3JUaHJl
YWQpCiB7CiAgICAgQVNTRVJUKGNvbXBvc2l0b3JUaHJlYWQpOwotICAgIENDVGhyZWFkUHJveHk6
OnNldFRocmVhZChDQ1RocmVhZEltcGw6OmNyZWF0ZShjb21wb3NpdG9yVGhyZWFkKS5sZWFrUHRy
KCkpOworICAgIENDVGhyZWFkUHJveHk6OnNldEltcGxUaHJlYWQoQ0NUaHJlYWRJbXBsOjpjcmVh
dGUoY29tcG9zaXRvclRocmVhZCkubGVha1B0cigpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViS2l0LmNwcAppbmRleCA0MjNjNDVhZTMyNGUxNWI3YjJkNDRlMGQ1ZGFjNDNmYzlj
MzQxMDRiLi5hMTNiMTAxN2Q3NGNiZjYxYjE4YWFiMTBmZDE2OTdlYmRjMmMyMDU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKIAorI2luY2x1ZGUgIkNDVGhyZWFkSW1w
bC5oIgorI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKQEAgLTQ4
LDYgKzUwLDcgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg+CiAKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIE1ha2Ugc3Vy
ZSB3ZSBhcmUgbm90IHJlLWluaXRpYWxpemVkIGluIHRoZSBzYW1lIGFkZHJlc3Mgc3BhY2UuCkBA
IC05NywxMiArMTAwLDE0IEBAIHZvaWQgaW5pdGlhbGl6ZVdpdGhvdXRWOChXZWJLaXRQbGF0Zm9y
bVN1cHBvcnQqIHdlYktpdFBsYXRmb3JtU3VwcG9ydCkKICAgICAvLyB0aGlzLCBpbml0aWFsaXpp
bmcgdGhpcyBsYXppbHkgcHJvYmFibHkgZG9lc24ndCBidXkgdXMgbXVjaC4KICAgICBXZWJDb3Jl
OjpVVEY4RW5jb2RpbmcoKTsKIAotIAorICAgIFdlYkNvcmU6OkNDUHJveHk6OnNldE1haW5UaHJl
YWQoQ0NUaHJlYWRJbXBsOjpjcmVhdGUod2ViS2l0UGxhdGZvcm1TdXBwb3J0LT5jdXJyZW50VGhy
ZWFkKCkpLmxlYWtQdHIoKSk7CiB9CiAKIAogdm9pZCBzaHV0ZG93bigpCiB7CisgICAgZGVsZXRl
IFdlYkNvcmU6OkNDUHJveHk6Om1haW5UaHJlYWQoKTsKKyAgICBXZWJDb3JlOjpDQ1Byb3h5Ojpz
ZXRNYWluVGhyZWFkKDApOwogICAgIHNfd2ViS2l0UGxhdGZvcm1TdXBwb3J0ID0gMDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVz
dC5jcHAKaW5kZXggN2MxMjM1MmE3MGQ0MDE1ODk0ODEwOTMxYzgxZjA1ODBmYmUzNzc2Yi4uZDFk
Y2Y1ZDg2NmYyZjE1YzEwZTI1YWYyZmFlZTIxNWJlOTNiMjc3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0yOCw4
ICsyOCw3IEBACiAKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuaCIKLSNpbmNsdWRlICJjYy9DQ01haW5UaHJlYWRUYXNrLmgiCi0j
aW5jbHVkZSAiY2MvQ0NTY29wZWRNYWluVGhyZWFkUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1Nj
b3BlZFRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRUYXNrLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
QEAgLTIzNiwxMiArMjM1LDExIEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBtX3RpbWVkT3V0KGZh
bHNlKQogICAgIHsKICAgICAgICAgbV93ZWJUaHJlYWQgPSBhZG9wdFB0cih3ZWJLaXRQbGF0Zm9y
bVN1cHBvcnQoKS0+Y3JlYXRlVGhyZWFkKCJDQ0xheWVyVHJlZUhvc3RUZXN0IikpOworICAgICAg
ICBBU1NFUlQoQ0NQcm94eTo6bWFpblRocmVhZCgpKTsKKwogICAgICAgICBXZWJDb21wb3NpdG9y
OjpzZXRUaHJlYWQobV93ZWJUaHJlYWQuZ2V0KCkpOwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAg
Q0NQcm94eTo6c2V0TWFpblRocmVhZChjdXJyZW50VGhyZWFkKCkpOwotI2VuZGlmCiAgICAgICAg
IEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIG1fbWFpblRocmVhZFBy
b3h5ID0gQ0NTY29wZWRNYWluVGhyZWFkUHJveHk6OmNyZWF0ZSgpOworICAgICAgICBtX21haW5U
aHJlYWRQcm94eSA9IENDU2NvcGVkVGhyZWFkUHJveHk6OmNyZWF0ZShDQ1Byb3h5OjptYWluVGhy
ZWFkKCkpOwogICAgIH0KIAogICAgIHZvaWQgZG9CZWdpblRlc3QoKTsKQEAgLTM1OCw3ICszNTYs
NyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9vdExheWVyOwog
ICAgIE93blB0cjxXZWJUaHJlYWQ+IG1fd2ViVGhyZWFkOwotICAgIFJlZlB0cjxDQ1Njb3BlZE1h
aW5UaHJlYWRQcm94eT4gbV9tYWluVGhyZWFkUHJveHk7CisgICAgUmVmUHRyPENDU2NvcGVkVGhy
ZWFkUHJveHk+IG1fbWFpblRocmVhZFByb3h5OwogICAgIFRpbWVvdXRUYXNrKiBtX3RpbWVvdXRU
YXNrOwogfTsKIApAQCAtMzgzLDcgKzM4MSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0VGVzdDo6
ZW5kVGVzdCgpCiB7CiAgICAgLy8gSWYgd2UgYXJlIGNhbGxlZCBmcm9tIHRoZSBDQ1RocmVhZCwg
cmUtY2FsbCBlbmRUZXN0IG9uIHRoZSBtYWluIHRocmVhZC4KICAgICBpZiAoIWlzTWFpblRocmVh
ZCgpKQotICAgICAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlTWFpblRocmVh
ZFRhc2sodGhpcywgJkNDTGF5ZXJUcmVlSG9zdFRlc3Q6OmVuZFRlc3QpKTsKKyAgICAgICAgbV9t
YWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NMYXll
clRyZWVIb3N0VGVzdDo6ZW5kVGVzdCkpOwogICAgIGVsc2UgewogICAgICAgICAvLyBGb3IgdGhl
IGNhc2Ugd2hlcmUgd2UgZW5kVGVzdCBkdXJpbmcgYmVnaW5UZXN0KCksIHNldCBhIGZsYWcgdG8g
aW5kaWNhdGUgdGhhdAogICAgICAgICAvLyB0aGUgdGVzdCBzaG91bGQgZW5kIHRoZSBzZWNvbmQg
YmVnaW5UZXN0IHJlZ2FpbnMgY29udHJvbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NUaHJlYWRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NUaHJlYWRUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNkYmNk
ZWY2YWMzYTI3ODZjNzEwNTA2NzU3ZmQzYWI5ZTUyYzAxYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
VGhyZWFkVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiY2MvQ0NUaHJlYWQuaCIKLQot
I2luY2x1ZGUgIkNDVGhyZWFkSW1wbC5oIgotI2luY2x1ZGUgIldlYktpdC5oIgotI2luY2x1ZGUg
IldlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgotI2luY2x1ZGUgIldlYlRocmVhZC5oIgotI2luY2x1
ZGUgImNjL0NDQ29tcGxldGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAiY2MvQ0NNYWluVGhyZWFkVGFz
ay5oIgotI2luY2x1ZGUgImNjL0NDU2NvcGVkTWFpblRocmVhZFByb3h5LmgiCi0jaW5jbHVkZSAi
Y2MvQ0NUaHJlYWRUYXNrLmgiCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotI2luY2x1ZGUg
PHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwotCi1uYW1lc3BhY2UgewotCi1jbGFzcyBQaW5nUG9uZ1VzaW5nQ29uZGl0aW9uIHsKLXB1Ymxp
YzoKLSAgICB2b2lkIHBpbmcoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCi0gICAgewot
ICAgICAgICBoaXRUaHJlYWRJRCA9IGN1cnJlbnRUaHJlYWQoKTsKLSAgICAgICAgY29tcGxldGlv
bi0+c2lnbmFsKCk7Ci0gICAgfQotCi0gICAgVGhyZWFkSWRlbnRpZmllciBoaXRUaHJlYWRJRDsK
LX07Ci0KLQotVEVTVChDQ1RocmVhZFRlc3QsIHBpbmdQb25nVXNpbmdDb25kaXRpb24pCi17Ci0g
ICAgT3duUHRyPFdlYlRocmVhZD4gd2ViVGhyZWFkID0gYWRvcHRQdHIod2ViS2l0UGxhdGZvcm1T
dXBwb3J0KCktPmNyZWF0ZVRocmVhZCgidGVzdCIpKTsKLQotICAgIE93blB0cjxDQ1RocmVhZD4g
dGhyZWFkID0gV2ViS2l0OjpDQ1RocmVhZEltcGw6OmNyZWF0ZSh3ZWJUaHJlYWQuZ2V0KCkpOwot
ICAgIFBpbmdQb25nVXNpbmdDb25kaXRpb24gdGFyZ2V0OwotICAgIENDQ29tcGxldGlvbkV2ZW50
IGNvbXBsZXRpb247Ci0gICAgdGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2soJnRh
cmdldCwgJlBpbmdQb25nVXNpbmdDb25kaXRpb246OnBpbmcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbikp
KTsKLSAgICBjb21wbGV0aW9uLndhaXQoKTsKLQotICAgIEVYUEVDVF9FUSh0aHJlYWQtPnRocmVh
ZElEKCksIHRhcmdldC5oaXRUaHJlYWRJRCk7Ci19Ci0KLWNsYXNzIFBpbmdQb25nVGVzdFVzaW5n
VGFza3MgewotcHVibGljOgotICAgIFBpbmdQb25nVGVzdFVzaW5nVGFza3MoKQotICAgICAgICA6
IG1fbWFpblRocmVhZFByb3h5KENDU2NvcGVkTWFpblRocmVhZFByb3h5OjpjcmVhdGUoKSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgdm9pZCBwaW5nKCkKLSAgICB7Ci0gICAgICAgIG1fbWFpblRocmVh
ZFByb3h5LT5wb3N0VGFzayhjcmVhdGVNYWluVGhyZWFkVGFzayh0aGlzLCAmUGluZ1BvbmdUZXN0
VXNpbmdUYXNrczo6cG9uZykpOwotICAgICAgICBoaXQgPSB0cnVlOwotICAgIH0KLQotICAgIHZv
aWQgcG9uZygpCi0gICAgewotICAgICAgICBFWFBFQ1RfVFJVRShpc01haW5UaHJlYWQoKSk7Ci0g
ICAgICAgIHdlYmtpdF9zdXBwb3J0OjpRdWl0TWVzc2FnZUxvb3AoKTsKLSAgICB9Ci0KLSAgICBi
b29sIGhpdDsKLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8Q0NTY29wZWRNYWluVGhyZWFkUHJveHk+
IG1fbWFpblRocmVhZFByb3h5OwotfTsKLQotI2lmIE9TKFdJTkRPV1MpIHx8IE9TKE1BQ19PU19Y
KQotI2RlZmluZSBNQVlCRV9zdGFydFBvc3RBbmRXYWl0T25Db25kaXRpb24gRElTQUJMRURfc3Rh
cnRQb3N0QW5kV2FpdE9uQ29uZGl0aW9uCi0jZWxzZQotI2RlZmluZSBNQVlCRV9zdGFydFBvc3RB
bmRXYWl0T25Db25kaXRpb24gc3RhcnRQb3N0QW5kV2FpdE9uQ29uZGl0aW9uCi0jZW5kaWYKLQot
VEVTVChDQ1RocmVhZFRlc3QsIE1BWUJFX3N0YXJ0UG9zdEFuZFdhaXRPbkNvbmRpdGlvbikKLXsK
LSAgICAvLyBDQ01haW5UaHJlYWQgaXMgbm9ybWFsbHkgaW5pdGlhbGl6ZWQgYnkgQ0NMYXllclRy
ZWVIb3N0LCBidXQgaW4gdGhpcyBjYXNlCi0gICAgLy8gd2UgbWF5IHJ1biB0aGlzIHRlc3QsIGJl
Zm9yZSBhbnkgQ0NMYXllclRyZWVIb3N0IGdldHMgaW5zdGFudGlhdGVkLgotICAgIENDTWFpblRo
cmVhZDo6aW5pdGlhbGl6ZSgpOwotICAgIE93blB0cjxXZWJUaHJlYWQ+IHdlYlRocmVhZCA9IGFk
b3B0UHRyKHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jcmVhdGVUaHJlYWQoInRlc3QiKSk7Ci0K
LSAgICBPd25QdHI8Q0NUaHJlYWQ+IHRocmVhZCA9IFdlYktpdDo6Q0NUaHJlYWRJbXBsOjpjcmVh
dGUod2ViVGhyZWFkLmdldCgpKTsKLQotICAgIFBpbmdQb25nVGVzdFVzaW5nVGFza3MgdGFyZ2V0
OwotICAgIHRocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKCZ0YXJnZXQsICZQaW5n
UG9uZ1Rlc3RVc2luZ1Rhc2tzOjpwaW5nKSk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bk1lc3Nh
Z2VMb29wKCk7Ci0KLSAgICBFWFBFQ1RfVFJVRSh0YXJnZXQuaGl0KTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UK
</data>
<flag name="review"
          id="114111"
          type_id="1"
          status="+"
          setter="jamesr"
    />
    <flag name="commit-queue"
          id="114120"
          type_id="3"
          status="-"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>