<?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>220464</bug_id>
          
          <creation_ts>2021-01-08 09:42:13 -0800</creation_ts>
          <short_desc>Use HashSet&lt;RefPtr&lt;Node&gt;&gt; instead of HashSet&lt;Node*&gt;</short_desc>
          <delta_ts>2021-05-12 11:40:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>225622</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>hi</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mifenton</cc>
    
    <cc>rniwa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1718316</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-01-08 09:42:13 -0800</bug_when>
    <thetext>Use WeakHashSet&lt;Node&gt; instead of HashSet&lt;Node*&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718317</commentid>
    <comment_count>1</comment_count>
      <attachid>417271</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-01-08 09:43:28 -0800</bug_when>
    <thetext>Created attachment 417271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718318</commentid>
    <comment_count>2</comment_count>
      <attachid>417272</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-01-08 09:44:11 -0800</bug_when>
    <thetext>Created attachment 417272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718371</commentid>
    <comment_count>3</comment_count>
      <attachid>417272</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-01-08 11:55:10 -0800</bug_when>
    <thetext>Comment on attachment 417272
Patch

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

&gt; Source/WebCore/ChangeLog:7
&gt; +

Needs more words, this isn&apos;t what a WebKit ChangeLog entry should look like</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718376</commentid>
    <comment_count>4</comment_count>
      <attachid>417272</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-01-08 11:58:50 -0800</bug_when>
    <thetext>Comment on attachment 417272
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:7
&gt;&gt; +
&gt; 
&gt; Needs more words, this isn&apos;t what a WebKit ChangeLog entry should look like

Will add before landing:
WeakHashSet is resistent to use-after-free bugs, which can occur when storing raw pointers in a HashSet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719906</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-15 09:43:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/73252016&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725327</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-02-03 13:32:03 -0800</bug_when>
    <thetext>RefPtr&lt;Node&gt; can be less expensive than WeakPtr&lt;Node&gt;, since the first WeakPtr for any Node needs to allocate the WeakPtrImpl.

Do we have a specific motivation to allow these nodes to be deleted? (I didn&apos;t see a case where we do.)

In any case where we do not specifically want to enable deletion, I think we should use RefPtr&lt;Node&gt; instead. That might be all of these cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758232</commentid>
    <comment_count>7</comment_count>
      <attachid>417272</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-05-08 17:18:29 -0700</bug_when>
    <thetext>Comment on attachment 417272
Patch

True.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758534</commentid>
    <comment_count>8</comment_count>
      <attachid>428181</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-05-10 10:28:23 -0700</bug_when>
    <thetext>Created attachment 428181
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758558</commentid>
    <comment_count>9</comment_count>
      <attachid>428185</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-05-10 11:14:58 -0700</bug_when>
    <thetext>Created attachment 428185
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758560</commentid>
    <comment_count>10</comment_count>
      <attachid>428185</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-10 11:20:00 -0700</bug_when>
    <thetext>Comment on attachment 428185
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Use HashSet&lt;RefPtr&lt;Node&gt;&gt; instead of HashSet&lt;Node*&gt;

Why not a WeakHashSet&lt;Node&gt;? Container of ref pointers are often sources of leaks. This seems to be impacting lifetime management in a potentially significant way just to fix potential lifetime bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758561</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-05-10 11:21:25 -0700</bug_when>
    <thetext>That was my initial approach, but Geoff gave the feedback to use RefPtr/Ref instead.  I think it&apos;s ok in this case because the containers are basically all created, used, and destroyed within the scope of a function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758562</commentid>
    <comment_count>12</comment_count>
      <attachid>428185</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-10 11:25:35 -0700</bug_when>
    <thetext>Comment on attachment 428185
Patch

Fair point. 2 cases seem to be static vectors though. However, they are apparently only used for debugging purposes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758587</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-10 12:09:43 -0700</bug_when>
    <thetext>Committed r277281 (237546@main): &lt;https://commits.webkit.org/237546@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428185.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758718</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-05-10 16:51:28 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 225622</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758724</commentid>
    <comment_count>15</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2021-05-10 16:56:43 -0700</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #14)
&gt; Re-opened since this is blocked by bug 225622

Link to test run showing crashes:
https://build.webkit.org/results/Apple-BigSur-Debug-WK2-Tests/r277293%20(1735)/results.html

All the ones I clicked appear to be
ASSERTION FAILED: isMainThread()
/Volumes/Data/worker/bigsur-debug/build/Source/WebCore/dom/Node.h(776) : void WebCore::Node::ref() const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758759</commentid>
    <comment_count>16</comment_count>
      <attachid>428185</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-05-10 17:50:36 -0700</bug_when>
    <thetext>Comment on attachment 428185
Patch

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

&gt; Source/WebCore/dom/MutationObserver.cpp:172
&gt; +HashSet&lt;Ref&lt;Node&gt;&gt; MutationObserver::observedNodes() const

This is called from the GC thread.  I&apos;ll remove this change from this patch to be conservative.  We may want to revisit, though.  Pun intended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758760</commentid>
    <comment_count>17</comment_count>
      <attachid>428231</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-05-10 17:52:04 -0700</bug_when>
    <thetext>Created attachment 428231
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758994</commentid>
    <comment_count>18</comment_count>
      <attachid>428231</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-11 11:13:07 -0700</bug_when>
    <thetext>Comment on attachment 428231
Patch

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

&gt; Source/WebCore/dom/Node.cpp:100
&gt; -    static NeverDestroyed&lt;HashSet&lt;Node*&gt;&gt; liveNodes;
&gt; +    static NeverDestroyed&lt;HashSet&lt;Ref&lt;Node&gt;&gt;&gt; liveNodes;

We can&apos;t do this. This will leak everything!
We only remove the node from this set inside ~Node.
So if we use Ref&lt;Node&gt; here, then it would never get deleted.
We need to use WeakHashSet instead.

&gt; Source/WebCore/dom/Node.cpp:300
&gt; -    static NeverDestroyed&lt;HashSet&lt;Node*&gt;&gt; ignore;
&gt; +    static NeverDestroyed&lt;HashSet&lt;Ref&lt;Node&gt;&gt;&gt; ignore;

Same issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759027</commentid>
    <comment_count>19</comment_count>
      <attachid>428305</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-05-11 12:25:55 -0700</bug_when>
    <thetext>Created attachment 428305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759331</commentid>
    <comment_count>20</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-05-12 11:40:54 -0700</bug_when>
    <thetext>http://trac.webkit.org/r277382</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417271</attachid>
            <date>2021-01-08 09:43:28 -0800</date>
            <delta_ts>2021-01-08 09:44:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220464-20210108094328.patch</filename>
            <type>text/plain</type>
            <size>44735</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg1Mjg1ZGRmNTc5N2Y5YmQyNzE0Yjlh
NmY1MWZhNTE1MTcwNGFmMjMuLjQ0YWU2ZTRhMzg4MTIyNDRlNDU1MDQzNWI1MDUzNjlhYzkzYjQ2
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDEtMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgV2Vha0hhc2hTZXQ8Tm9kZT4g
aW5zdGVhZCBvZiBIYXNoU2V0PE5vZGUqPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIwNDY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOgorICAgICAgICAqIHd0Zi9XZWFrSGFz
aFNldC5oOgorCiAyMDIxLTAxLTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgTWFrZSBpdCBzYWZlIHRvIHJlLWVudGVyIEhhc2hNYXA6OmNsZWFyKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA2YjE1MjZkZDE3NWUwYjdiMzRmYTY5NGZiNGJkYTc2ZGU3NjhjODBlLi40YmQ1ZTA4
ZGIwMjk3OGI0NzVlMmU1ZWI2OTNkN2M0YzEzNjdkYTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
OTMgQEAKKzIwMjEtMDEtMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KKworICAgICAgICBVc2UgV2Vha0hhc2hTZXQ8Tm9kZT4gaW5zdGVhZCBvZiBIYXNoU2V0
PE5vZGUqPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIwNDY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
ZGl0aW9uYWxseUFkZE5vZGVUb0ZpbHRlckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsdGVy
VmVjdG9yUGFpckZvclJlbW92YWwpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsdGVyTWFwRm9yUmVt
b3ZhbCk6CisgICAgICAgIChXZWJDb3JlOjpmaWx0ZXJMaXN0Rm9yUmVtb3ZhbCk6CisgICAgICAg
IChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwcmVwYXJlRm9yRG9jdW1lbnREZXN0cnVjdGlvbik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25PYnNlcnZlck93bmVyOjppc1JlYWNoYWJsZUZyb21P
cGFxdWVSb290cyk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZWROb2RlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjogY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9i
c2VydmVyLmg6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6YWRkUmVn
aXN0cmF0aW9uTm9kZXNUb1NldCBjb25zdCk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2
ZXJSZWdpc3RyYXRpb24uaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpsaXZlTm9kZVNldCk6CisgICAgICAgIChXZWJDb3JlOjppZ25vcmVTZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bW92ZU5v
ZGVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZE5vZGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFu
ZCk6CisgICAgICAgICogZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5oOgorICAgICAgICAqIGVk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdENv
bW1hbmRDb21wb3NpdGlvbjo6Z2V0Tm9kZXNJbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcv
Q29tcG9zaXRlRWRpdENvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZUZyb21UZXh0
Tm9kZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlRnJvbVRleHROb2RlQ29t
bWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlRnJvbVRl
eHROb2RlQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdENvbW1hbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2ltcGxlRWRpdENvbW1hbmQ6OmFkZE5vZGVBbmREZXNjZW5kYW50cyk6
CisgICAgICAgICogZWRpdGluZy9FZGl0Q29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvSW5z
ZXJ0SW50b1RleHROb2RlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRJbnRv
VGV4dE5vZGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAgICogZWRpdGluZy9J
bnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9JbnNlcnROb2Rl
QmVmb3JlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnROb2RlQmVmb3JlQ29t
bWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0Tm9kZUJl
Zm9yZUNvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHND
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21t
YW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAgICogZWRpdGluZy9NZXJnZUlkZW50aWNh
bEVsZW1lbnRzQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlTm9kZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21t
YW5kKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmg6CisgICAgICAgICog
ZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQpOgorICAgICAg
ICAqIGVkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0
aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldE5v
ZGVBdHRyaWJ1dGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAgICogZWRpdGlu
Zy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvU2V0U2VsZWN0
aW9uQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFu
ZC5jcHA6CisgICAgICAgICogZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNwbGl0RWxlbWVudENvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKToKKyAg
ICAgICAgKiBlZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5n
L1NwbGl0VGV4dE5vZGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwbGl0VGV4dE5v
ZGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAgICogZWRpdGluZy9TcGxpdFRl
eHROb2RlQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6
Om9ic2VydmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyOjpkaWRDcmVhdGVSZW5kZXJlckZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OmRpZFVwZGF0ZUNvbnRlbnRGb3JUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpkaWRDcmVhdGVS
ZW5kZXJlckZvclRleHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyOjpzY2hlZHVsZU9ic2VydmF0aW9uVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpyZW1vdmVOb2RlKToKKyAgICAgICAgKiBlZGl0
aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmg6CisgICAgICAgICogZWRpdGluZy9XcmFw
Q29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V3JhcENv
bnRlbnRzSW5EdW1teVNwYW5Db21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAgICog
ZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyQ2FjaGVz
Ojppc0FuY2VzdG9yc09mU3RhcnRUb0JlQ29udmVydGVkIGNvbnN0KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRTZWxlY3Rvcik6CisgICAgICAgICogeG1sL1hQYXRo
RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5JZDo6ZXZhbHVhdGUg
Y29uc3QpOgorICAgICAgICAqIHhtbC9YUGF0aE5vZGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WFBhdGg6OnNvcnRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6Tm9kZVNldDo6
dHJhdmVyc2FsU29ydCBjb25zdCk6CisgICAgICAgICogeG1sL1hQYXRoUGF0aC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpYUGF0aDo6TG9jYXRpb25QYXRoOjpldmFsdWF0ZSBjb25zdCk6CisgICAg
ICAgICogeG1sL1hQYXRoUHJlZGljYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpV
bmlvbjo6ZXZhbHVhdGUgY29uc3QpOgorCiAyMDIxLTAxLTA4ICBTaWh1aSBMaXUgIDxzaWh1aV9s
aXVAYXBwZS5jb20+CiAKICAgICAgICAgW01vamF2ZSBEZWJ1Z10gQVNTRVJUSU9OIEZBSUxFRDog
IW1fcmVxdWVzdHMuY29udGFpbnMoY2xpZW50SWRlbnRpZmllcikgaW4gV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcjo6c3RhcnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRm9y
d2FyZC5oIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCmluZGV4IGE0NWEzNTRjNDc3ODIwM2Rm
Y2ViMGI5OGUwNTgwODVkOWI4MjYwNmYuLmJhMGU0MWZiOWU4NTAyNDRmOTUxOWZmYmFhYjhhZjMz
YzU1MTRkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9Gb3J3YXJkLmgKQEAgLTc4LDYgKzc4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWU+
IGNsYXNzIFVuaXF1ZVJlZjsKIHRlbXBsYXRlPHR5cGVuYW1lLi4uPiBjbGFzcyBWYXJpYW50Owog
dGVtcGxhdGU8dHlwZW5hbWUsIHNpemVfdCA9IDAsIHR5cGVuYW1lID0gQ3Jhc2hPbk92ZXJmbG93
LCBzaXplX3QgPSAxNiwgdHlwZW5hbWUgTWFsbG9jID0gVmVjdG9yTWFsbG9jPiBjbGFzcyBWZWN0
b3I7CiB0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUgPSBFbXB0eUNvdW50ZXI+IGNsYXNzIFdl
YWtQdHI7Cit0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUgPSBFbXB0eUNvdW50ZXI+IGNsYXNz
IFdlYWtIYXNoU2V0OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IERlZmF1bHRIYXNoOwog
dGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8QXRvbVN0cmluZz47CkBAIC0xMzksNiArMTQw
LDcgQEAgdXNpbmcgV1RGOjpVUkw7CiB1c2luZyBXVEY6OlVuaXF1ZVJlZjsKIHVzaW5nIFdURjo6
VmFyaWFudDsKIHVzaW5nIFdURjo6VmVjdG9yOwordXNpbmcgV1RGOjpXZWFrSGFzaFNldDsKIAog
dGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gdXNpbmcgRXhwZWN0ZWQgPSBzdGQ6OmV4cGVyaW1l
bnRhbDo6ZXhwZWN0ZWQ8VCwgRT47CiB0ZW1wbGF0ZTxjbGFzcyBFPiB1c2luZyBVbmV4cGVjdGVk
ID0gc3RkOjpleHBlcmltZW50YWw6OnVuZXhwZWN0ZWQ8RT47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9XZWFrSGFzaFNldC5oIGIvU291cmNlL1dURi93dGYvV2Vha0hhc2hTZXQuaAppbmRl
eCBlOTcwOGRhZDhjMWJmNjY3MDU2ZDYxNzBhYjkyZWE3MTk1MjIzMjUyLi4yMDI0NDNiYmRhNjQ2
MWM1NmU1NjEwMmI0N2UwYzZkNmI3NGEwMDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9X
ZWFrSGFzaFNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dlYWtIYXNoU2V0LmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtMzksNyArNDAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBD
b3VudGVyPiBzdHJ1Y3QgSGFzaFRyYWl0czxSZWY8V2Vha1B0ckltcGw8Q291bnRlcj4+PiA6IFJl
ZkhhcwogICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvdW50ZXIg
PSBFbXB0eUNvdW50ZXI+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDb3VudGVyPgog
Y2xhc3MgV2Vha0hhc2hTZXQgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgpAQCAtMTgwLDcgKzE4MSw0IEBAIGlubGluZSBhdXRvIGNvcHlUb1ZlY3Rvcihjb25z
dCBXZWFrSGFzaFNldDxUPiYgY29sbGVjdGlvbikgLT4gVmVjdG9yPFdlYWtQdHI8VD4+CiAgICAg
cmV0dXJuIFdURjo6bWFwKGNvbGxlY3Rpb24sIFtdIChhdXRvJiB2KSAtPiBXZWFrUHRyPFQ+IHsg
cmV0dXJuIG1ha2VXZWFrUHRyPFQ+KHYpOyB9KTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBXVEYK
LQotdXNpbmcgV1RGOjpXZWFrSGFzaFNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGU4NjdmZGYwODliYmNkZDZlYmM0MDhmNmIzN2Vh
YjAzZTY4YWE0NGMuLmE4NTg3NzI4NDY3ODczM2Y2ZjU4NGIwZDE1NTY4MDRjYzFmNTYzNzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAt
MzA0MiwxNCArMzA0MiwxNCBAQCBjb25zdCBFbGVtZW50KiBBWE9iamVjdENhY2hlOjpyb290QVhF
ZGl0YWJsZUVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1zdGF0aWMgdm9pZCBjb25kaXRpb25hbGx5QWRkTm9kZVRvRmlsdGVyTGlzdChOb2RlKiBub2Rl
LCBjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIEhhc2hTZXQ8Tm9kZSo+JiBub2Rlc1RvUmVtb3Zl
KQorc3RhdGljIHZvaWQgY29uZGl0aW9uYWxseUFkZE5vZGVUb0ZpbHRlckxpc3QoTm9kZSogbm9k
ZSwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFrSGFzaFNldDxOb2RlPiYgbm9kZXNUb1Jl
bW92ZSkKIHsKICAgICBpZiAobm9kZSAmJiAoIW5vZGUtPmlzQ29ubmVjdGVkKCkgfHwgJm5vZGUt
PmRvY3VtZW50KCkgPT0gJmRvY3VtZW50KSkKICAgICAgICAgbm9kZXNUb1JlbW92ZS5hZGQobm9k
ZSk7CiB9CiAgICAgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RhdGljIHZvaWQgZmlsdGVyVmVj
dG9yUGFpckZvclJlbW92YWwoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxULCBUPj4mIGxpc3QsIGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCwgSGFzaFNldDxOb2RlKj4mIG5vZGVzVG9SZW1vdmUpCitz
dGF0aWMgdm9pZCBmaWx0ZXJWZWN0b3JQYWlyRm9yUmVtb3ZhbChjb25zdCBWZWN0b3I8c3RkOjpw
YWlyPFQsIFQ+PiYgbGlzdCwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFrSGFzaFNldDxO
b2RlPiYgbm9kZXNUb1JlbW92ZSkKIHsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbGlzdCkgewog
ICAgICAgICBjb25kaXRpb25hbGx5QWRkTm9kZVRvRmlsdGVyTGlzdChlbnRyeS5maXJzdCwgZG9j
dW1lbnQsIG5vZGVzVG9SZW1vdmUpOwpAQCAtMzA1OCwxNCArMzA1OCwxNCBAQCBzdGF0aWMgdm9p
ZCBmaWx0ZXJWZWN0b3JQYWlyRm9yUmVtb3ZhbChjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFQsIFQ+
PiYgbGlzdCwgY29ucwogfQogICAgIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4K
LXN0YXRpYyB2b2lkIGZpbHRlck1hcEZvclJlbW92YWwoY29uc3QgSGFzaE1hcDxULCBVPiYgbGlz
dCwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBIYXNoU2V0PE5vZGUqPiYgbm9kZXNUb1JlbW92
ZSkKK3N0YXRpYyB2b2lkIGZpbHRlck1hcEZvclJlbW92YWwoY29uc3QgSGFzaE1hcDxULCBVPiYg
bGlzdCwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFrSGFzaFNldDxOb2RlPiYgbm9kZXNU
b1JlbW92ZSkKIHsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbGlzdCkKICAgICAgICAgY29uZGl0
aW9uYWxseUFkZE5vZGVUb0ZpbHRlckxpc3QoZW50cnkua2V5LCBkb2N1bWVudCwgbm9kZXNUb1Jl
bW92ZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgdm9pZCBmaWx0ZXJMaXN0
Rm9yUmVtb3ZhbChjb25zdCBMaXN0SGFzaFNldDxUPiYgbGlzdCwgY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZW50LCBIYXNoU2V0PE5vZGUqPiYgbm9kZXNUb1JlbW92ZSkKK3N0YXRpYyB2b2lkIGZpbHRl
ckxpc3RGb3JSZW1vdmFsKGNvbnN0IExpc3RIYXNoU2V0PFQ+JiBsaXN0LCBjb25zdCBEb2N1bWVu
dCYgZG9jdW1lbnQsIFdlYWtIYXNoU2V0PE5vZGU+JiBub2Rlc1RvUmVtb3ZlKQogewogICAgIGZv
ciAoYXV0byogbm9kZSA6IGxpc3QpCiAgICAgICAgIGNvbmRpdGlvbmFsbHlBZGROb2RlVG9GaWx0
ZXJMaXN0KG5vZGUsIGRvY3VtZW50LCBub2Rlc1RvUmVtb3ZlKTsKQEAgLTMwNzMsNyArMzA3Myw3
IEBAIHN0YXRpYyB2b2lkIGZpbHRlckxpc3RGb3JSZW1vdmFsKGNvbnN0IExpc3RIYXNoU2V0PFQ+
JiBsaXN0LCBjb25zdCBEb2N1bWVudCYgZG9jCiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6cHJlcGFy
ZUZvckRvY3VtZW50RGVzdHJ1Y3Rpb24oY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAg
IEhhc2hTZXQ8Tm9kZSo+IG5vZGVzVG9SZW1vdmU7CisgICAgV2Vha0hhc2hTZXQ8Tm9kZT4gbm9k
ZXNUb1JlbW92ZTsKICAgICBmaWx0ZXJMaXN0Rm9yUmVtb3ZhbChtX3RleHRNYXJrZXJOb2Rlcywg
ZG9jdW1lbnQsIG5vZGVzVG9SZW1vdmUpOwogICAgIGZpbHRlckxpc3RGb3JSZW1vdmFsKG1fbW9k
YWxFbGVtZW50c1NldCwgZG9jdW1lbnQsIG5vZGVzVG9SZW1vdmUpOwogICAgIGZpbHRlckxpc3RG
b3JSZW1vdmFsKG1fZGVmZXJyZWRUZXh0Q2hhbmdlZExpc3QsIGRvY3VtZW50LCBub2Rlc1RvUmVt
b3ZlKTsKQEAgLTMwODIsOCArMzA4Miw4IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cHJlcGFyZUZv
ckRvY3VtZW50RGVzdHJ1Y3Rpb24oY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIGZpbHRl
ck1hcEZvclJlbW92YWwobV9kZWZlcnJlZEF0dHJpYnV0ZUNoYW5nZSwgZG9jdW1lbnQsIG5vZGVz
VG9SZW1vdmUpOwogICAgIGZpbHRlclZlY3RvclBhaXJGb3JSZW1vdmFsKG1fZGVmZXJyZWRGb2N1
c2VkTm9kZUNoYW5nZSwgZG9jdW1lbnQsIG5vZGVzVG9SZW1vdmUpOwogICAgIAotICAgIGZvciAo
YXV0byogbm9kZSA6IG5vZGVzVG9SZW1vdmUpCi0gICAgICAgIHJlbW92ZSgqbm9kZSk7CisgICAg
Zm9yIChhdXRvJiBub2RlIDogbm9kZXNUb1JlbW92ZSkKKyAgICAgICAgcmVtb3ZlKG5vZGUpOwog
fQogICAgIAogYm9vbCBBWE9iamVjdENhY2hlOjpub2RlSXNUZXh0Q29udHJvbChjb25zdCBOb2Rl
KiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlv
bk9ic2VydmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRp
b25PYnNlcnZlckN1c3RvbS5jcHAKaW5kZXggMTk1YWQwMTVjZDU5OWI0NTYxYWU1ZWExMGZjMDkz
NDY2NzRiZjU1Ny4uZWE2NzI0YzEzYzc1OTA1ZjAzNGEwOTVjYTg0MTBmZjA4YjdhNzJkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2
ZXJDdXN0b20uY3BwCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgSlNNdXRhdGlvbk9ic2VydmVyOjp2
aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiBib29s
IEpTTXV0YXRpb25PYnNlcnZlck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9y
LCBjb25zdCBjaGFyKipyZWFzb24pCiB7Ci0gICAgZm9yIChhdXRvKiBub2RlIDoganNDYXN0PEpT
TXV0YXRpb25PYnNlcnZlcio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKS0+d3JhcHBlZCgpLm9i
c2VydmVkTm9kZXMoKSkgeworICAgIGZvciAoYXV0byYgbm9kZSA6IGpzQ2FzdDxKU011dGF0aW9u
T2JzZXJ2ZXIqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSktPndyYXBwZWQoKS5vYnNlcnZlZE5v
ZGVzKCkpIHsKICAgICAgICAgaWYgKHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3Qobm9k
ZSkpKSB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkocmVhc29uKSkKICAgICAgICAgICAgICAg
ICAqcmVhc29uID0gIlJlYWNoYWJsZSBmcm9tIG9ic2VydmVkIG5vZGVzIjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCBhNGFjMGViN2U1NzE3N2NmMDQyMzdlNmE5
MjNjYzUwMzA2ZTJiYmQ2Li5jMWQ5YWNlZjNmM2UyNjc3MDMyNDJhZmFiNjIxOWY2YTY4NGJkMWZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC0xNjksOSArMTY5
LDkgQEAgdm9pZCBNdXRhdGlvbk9ic2VydmVyOjpzZXRIYXNUcmFuc2llbnRSZWdpc3RyYXRpb24o
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgIGV2ZW50TG9vcC0+cXVldWVNdXRhdGlvbk9ic2VydmVy
Q29tcG91bmRNaWNyb3Rhc2soKTsKIH0KIAotSGFzaFNldDxOb2RlKj4gTXV0YXRpb25PYnNlcnZl
cjo6b2JzZXJ2ZWROb2RlcygpIGNvbnN0CitXZWFrSGFzaFNldDxOb2RlPiBNdXRhdGlvbk9ic2Vy
dmVyOjpvYnNlcnZlZE5vZGVzKCkgY29uc3QKIHsKLSAgICBIYXNoU2V0PE5vZGUqPiBvYnNlcnZl
ZE5vZGVzOworICAgIFdlYWtIYXNoU2V0PE5vZGU+IG9ic2VydmVkTm9kZXM7CiAgICAgZm9yIChh
dXRvKiByZWdpc3RyYXRpb24gOiBtX3JlZ2lzdHJhdGlvbnMpCiAgICAgICAgIHJlZ2lzdHJhdGlv
bi0+YWRkUmVnaXN0cmF0aW9uTm9kZXNUb1NldChvYnNlcnZlZE5vZGVzKTsKICAgICByZXR1cm4g
b2JzZXJ2ZWROb2RlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9i
c2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5oCmluZGV4IDQ3
N2YwZjkzZDI2ZmYzZjk3MDFlODdjMmI4YmYxZDMyNmU3ZWQ5MjYuLmI0YWM1YjIyMjRiYTJlMjRj
YjBhOGM3MDhlMzk4OTk0ZDNlYWRjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
dXRhdGlvbk9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2
ZXIuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc1RyYW5zaWVu
dFJlZ2lzdHJhdGlvbihEb2N1bWVudCYpOwogICAgIGJvb2wgY2FuRGVsaXZlcigpOwogCi0gICAg
SGFzaFNldDxOb2RlKj4gb2JzZXJ2ZWROb2RlcygpIGNvbnN0OworICAgIFdlYWtIYXNoU2V0PE5v
ZGU+IG9ic2VydmVkTm9kZXMoKSBjb25zdDsKIAogICAgIE11dGF0aW9uQ2FsbGJhY2smIGNhbGxi
YWNrKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFjay5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggMGVj
YjA1YjQ4ODYwYzc3NzE0MThkOGJmOWQyNjEyOTNhODg2NWFlMy4uMzgzODkzMDc3YzBjNmQzOWMw
MmI3NTllZWNhOGE0OWE0NTI5ODI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011
dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
dXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wg
TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6c2hvdWxkUmVjZWl2ZU11dGF0aW9uRnJvbShO
b2RlJiBub2RlLCBNdXRhdGlvCiAgICAgcmV0dXJuIG1fYXR0cmlidXRlRmlsdGVyLmNvbnRhaW5z
KGF0dHJpYnV0ZU5hbWUtPmxvY2FsTmFtZSgpKTsKIH0KIAotdm9pZCBNdXRhdGlvbk9ic2VydmVy
UmVnaXN0cmF0aW9uOjphZGRSZWdpc3RyYXRpb25Ob2Rlc1RvU2V0KEhhc2hTZXQ8Tm9kZSo+JiBu
b2RlcykgY29uc3QKK3ZvaWQgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6YWRkUmVnaXN0
cmF0aW9uTm9kZXNUb1NldChXZWFrSGFzaFNldDxOb2RlPiYgbm9kZXMpIGNvbnN0CiB7CiAgICAg
bm9kZXMuYWRkKCZtX25vZGUpOwogICAgIGlmICghbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2Rl
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0
cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlv
bi5oCmluZGV4IGU2OTQwNDgzYTMxM2M4ZmQxYmQxNmRjMTdjYjk2YjEzYWNkMjJhM2EuLjQyM2U1
NjgxOTYzYTdiOTU1Y2QyMWNmODU3MTc3ZjE4NWQwOWMyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaApAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAgICAgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgZGVsaXZlcnlPcHRp
b25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zICYgKE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJp
YnV0ZU9sZFZhbHVlIHwgTXV0YXRpb25PYnNlcnZlcjo6Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKTsg
fQogICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIG11dGF0aW9uVHlwZXMoKSBjb25zdCB7IHJl
dHVybiBtX29wdGlvbnMgJiBNdXRhdGlvbk9ic2VydmVyOjpBbGxNdXRhdGlvblR5cGVzOyB9CiAK
LSAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbk5vZGVzVG9TZXQoSGFzaFNldDxOb2RlKj4mKSBjb25z
dDsKKyAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbk5vZGVzVG9TZXQoV2Vha0hhc2hTZXQ8Tm9kZT4m
KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBSZWY8TXV0YXRpb25PYnNlcnZlcj4gbV9vYnNlcnZl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAppbmRleCA0NmIxYWRhMjI2ZDhjMjRjYzUzYzY3YjgxN2NjNDQ2ZDgz
NGZkMjdiLi4yOTBhODI1MTc0YzhiNTI1ZmNhZTczY2VjNmI0MGFkMDU4ZTJjMjEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCkBAIC05NSw5ICs5NSw5IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChO
b2RlKTsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKICNpZiBEVU1QX05PREVfU1RBVElT
VElDUwotc3RhdGljIEhhc2hTZXQ8Tm9kZSo+JiBsaXZlTm9kZVNldCgpCitzdGF0aWMgV2Vha0hh
c2hTZXQ8Tm9kZT4mIGxpdmVOb2RlU2V0KCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaFNldDxOb2RlKj4+IGxpdmVOb2RlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2Vh
a0hhc2hTZXQ8Tm9kZT4+IGxpdmVOb2RlczsKICAgICByZXR1cm4gbGl2ZU5vZGVzOwogfQogCkBA
IC0yOTUsOSArMjk1LDkgQEAgREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRl
ZExlYWtDb3VudGVyLCBub2RlQ291bnRlciwgKCJXZWJDb3JlTm9kZSIKICNpZm5kZWYgTkRFQlVH
CiBzdGF0aWMgYm9vbCBzaG91bGRJZ25vcmVMZWFrcyA9IGZhbHNlOwogCi1zdGF0aWMgSGFzaFNl
dDxOb2RlKj4mIGlnbm9yZVNldCgpCitzdGF0aWMgV2Vha0hhc2hTZXQ8Tm9kZT4mIGlnbm9yZVNl
dCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8Tm9kZSo+PiBpZ25vcmU7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYWtIYXNoU2V0PE5vZGU+PiBpZ25vcmU7CiAK
ICAgICByZXR1cm4gaWdub3JlOwogfQpAQCAtMzUzLDcgKzM1Myw3IEBAIE5vZGU6On5Ob2RlKCkK
ICAgICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKIAogI2lmbmRlZiBOREVCVUcKLSAg
ICBpZiAoIWlnbm9yZVNldCgpLnJlbW92ZSh0aGlzKSkKKyAgICBpZiAoIWlnbm9yZVNldCgpLnJl
bW92ZSgqdGhpcykpCiAgICAgICAgIG5vZGVDb3VudGVyLmRlY3JlbWVudCgpOwogI2VuZGlmCiAK
QEAgLTM3MSw3ICszNzEsNyBAQCBOb2RlOjp+Tm9kZSgpCiAKICAgICBhdXRvKiB0ZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlciA9IGRvY3VtZW50KCkudGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXJJ
ZkV4aXN0cygpOwogICAgIGlmIChVTkxJS0VMWSh0ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcikp
Ci0gICAgICAgIHRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLT5yZW1vdmVOb2RlKHRoaXMpOwor
ICAgICAgICB0ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci0+cmVtb3ZlTm9kZSgqdGhpcyk7CiAK
ICAgICBpZiAoIWlzQ29udGFpbmVyTm9kZSgpKQogICAgICAgICB3aWxsQmVEZWxldGVkRnJvbShk
b2N1bWVudCgpKTsKQEAgLTIwNjcsNyArMjA2Nyw3IEBAIHZvaWQgTm9kZTo6bW92ZU5vZGVUb05l
d0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQog
CiAgICAgYXV0byogdGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIgPSBvbGREb2N1bWVudC50ZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlcklmRXhpc3RzKCk7CiAgICAgaWYgKFVOTElLRUxZKHRleHRN
YW5pcHVsYXRpb25Db250cm9sbGVyKSkKLSAgICAgICAgdGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xs
ZXItPnJlbW92ZU5vZGUodGhpcyk7CisgICAgICAgIHRleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
LT5yZW1vdmVOb2RlKCp0aGlzKTsKIAogICAgIGlmIChhdXRvKiBldmVudFRhcmdldERhdGEgPSB0
aGlzLT5ldmVudFRhcmdldERhdGEoKSkgewogICAgICAgICBpZiAoIWV2ZW50VGFyZ2V0RGF0YS0+
ZXZlbnRMaXN0ZW5lck1hcC5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQXBwZW5kTm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
cHBlbmROb2RlQ29tbWFuZC5jcHAKaW5kZXggMmQ1OThmY2JiMjFjZTIxNjNjNWJjMjg3YjlhMDcz
NTZiNDI1YTI5OS4uM2VkYjFjYjdmZjEyMDZiZWQ3YmFmMjNkODRkMjEwODRkZDk1OTgwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5jcHAKQEAgLTYwLDcg
KzYwLDcgQEAgdm9pZCBBcHBlbmROb2RlQ29tbWFuZDo6ZG9VbmFwcGx5KCkKIH0KIAogI2lmbmRl
ZiBOREVCVUcKLXZvaWQgQXBwZW5kTm9kZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hT
ZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgQXBwZW5kTm9kZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21t
YW5kKFdlYWtIYXNoU2V0PE5vZGU+JiBub2RlcykKIHsKICAgICBhZGROb2RlQW5kRGVzY2VuZGFu
dHMobV9wYXJlbnQucHRyKCksIG5vZGVzKTsKICAgICBhZGROb2RlQW5kRGVzY2VuZGFudHMobV9u
b2RlLnB0cigpLCBub2Rlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Fw
cGVuZE5vZGVDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5vZGVDb21t
YW5kLmgKaW5kZXggM2NkOTE0NDMyMmM4NTg4NjU0YjljMjZmNWYyNzliZDk3NWRlMzkzOS4uZTc0
MjJmYmQ5MzliZGRmYTVlNTA4ZDBjM2U3NDhhNzY5YjkyMWQxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQXBwZW5kTm9kZUNvbW1hbmQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZG9VbmFwcGx5KCkgb3ZlcnJpZGU7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9p
ZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQg
Z2V0Tm9kZXNJbkNvbW1hbmQoV2Vha0hhc2hTZXQ8Tm9kZT4mKSBvdmVycmlkZTsKICNlbmRpZgog
CiAgICAgUmVmPENvbnRhaW5lck5vZGU+IG1fcGFyZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCBiYzY4ZDE5OTNhMmU0ZmMzZjk1
ZDIwNjg2OGE5YzIyZjVjYzg4ZmEyLi41OWFmYjlkYzUzMzZhNDQxNDYzNjBjODM4OWFlNTBhNzI4
MzE3ZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcApAQCAtMjk3LDcgKzI5Nyw3IEBAIHZvaWQgRWRpdENvbW1hbmRDb21wb3NpdGlvbjo6
c2V0UmFuZ2VEZWxldGVkQnlVbmFwcGx5KGNvbnN0IFZpc2libGVQb3NpdGlvbkluZGV4CiB9CiAK
ICNpZm5kZWYgTkRFQlVHCi12b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRpb246OmdldE5vZGVzSW5D
b21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgRWRpdENvbW1hbmRDb21wb3NpdGlv
bjo6Z2V0Tm9kZXNJbkNvbW1hbmQoV2Vha0hhc2hTZXQ8Tm9kZT4mIG5vZGVzKQogewogICAgIGZv
ciAoYXV0byYgY29tbWFuZCA6IG1fY29tbWFuZHMpCiAgICAgICAgIGNvbW1hbmQtPmdldE5vZGVz
SW5Db21tYW5kKG5vZGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuaAppbmRleCA0MjY4MTk2Zjg5MmFmMzA1NTEwM2M0ODcyZmU4ZWNiZGQ1ZjExYWQy
Li4wYjA4YWZkMzlkMmI3YTY0M2YyOTFmOWJiMWFiZTUyZmY3MjM4YTM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCkBAIC04Myw3ICs4Myw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFJhbmdlRGVsZXRlZEJ5VW5hcHBseShjb25zdCBWaXNpYmxl
UG9zaXRpb25JbmRleFJhbmdlJik7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdmlydHVhbCB2b2lk
IGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jik7CisgICAgdmlydHVhbCB2b2lkIGdl
dE5vZGVzSW5Db21tYW5kKFdlYWtIYXNoU2V0PE5vZGU+Jik7CiAjZW5kaWYKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUZyb21UZXh0Tm9kZUNvbW1h
bmQuY3BwCmluZGV4IGRlZjhhZmQ5ODgxOGNjM2ZiNzdmNmU1MmZkN2Y4YjQyZDllODNjNzUuLmI5
YmFhOTUxNTAwZTMxMzQ2ZDdkNGQwMjQyNDY0Yjg1MzE3NzhkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmNwcApAQCAtNjMs
NyArNjMsNyBAQCB2b2lkIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQ6OmRvVW5hcHBseSgpCiB9
CiAKICNpZm5kZWYgTkRFQlVHCi12b2lkIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQ6OmdldE5v
ZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgRGVsZXRlRnJvbVRleHRO
b2RlQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQoV2Vha0hhc2hTZXQ8Tm9kZT4mIG5vZGVzKQog
ewogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX25vZGUucHRyKCksIG5vZGVzKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFu
ZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmgK
aW5kZXggZGExZGY2YjEwMjkwMmIyMmIzMDE3OGM2MjBiMzkwZGZkYzYwMjQyMC4uODU1ZWYxMjU0
MWYwMTU3NTQ1ODZjZWU0ZTdlODMzNjcwZWQ1NmZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmgKQEAgLTQ2LDcgKzQ2LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOwogICAgIAogI2lmbmRlZiBO
REVCVUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChXZWFrSGFzaFNldDxOb2RlPiYpIG92ZXJy
aWRlOwogI2VuZGlmCiAgICAgCiAgICAgUmVmPFRleHQ+IG1fbm9kZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0Q29tbWFuZC5jcHAKaW5kZXggMWY1YjZhY2I5ZGIxODhlYTY5MGY2MDA1NmM3NzM3
NzAwZTJiOGY0NS4uNjA3MDNkNWJlNWY4ODg4MmI0NzhkNTBkMDhjM2VlMWRmZGFlMGFlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAKQEAgLTIyNSw3ICsyMjUsNyBAQCB2
b2lkIFNpbXBsZUVkaXRDb21tYW5kOjpkb1JlYXBwbHkoKQogfQogCiAjaWZuZGVmIE5ERUJVRwot
dm9pZCBTaW1wbGVFZGl0Q29tbWFuZDo6YWRkTm9kZUFuZERlc2NlbmRhbnRzKE5vZGUqIHN0YXJ0
Tm9kZSwgSGFzaFNldDxOb2RlKj4mIG5vZGVzKQordm9pZCBTaW1wbGVFZGl0Q29tbWFuZDo6YWRk
Tm9kZUFuZERlc2NlbmRhbnRzKE5vZGUqIHN0YXJ0Tm9kZSwgV2Vha0hhc2hTZXQ8Tm9kZT4mIG5v
ZGVzKQogewogICAgIGZvciAoTm9kZSogbm9kZSA9IHN0YXJ0Tm9kZTsgbm9kZTsgbm9kZSA9IE5v
ZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUsIHN0YXJ0Tm9kZSkpCiAgICAgICAgIG5vZGVzLmFkZChu
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaAppbmRleCAyZjY3Y2Q3MzM0YzJj
OGJkNTY5MGYxMTM1YzEwZDAwMGRjMzA0M2RjLi42ZWY3ZjE1OTY4NzZjNWY1ZDlhYWQ5MmZmNjRi
OTgxNDZkNWZkM2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21t
YW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCkBAIC05Mywx
NCArOTMsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkb1JlYXBwbHkoKTsgLy8gY2Fs
bHMgZG9BcHBseSgpCiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdmlydHVhbCB2b2lkIGdldE5vZGVz
SW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXROb2Rl
c0luQ29tbWFuZChXZWFrSGFzaFNldDxOb2RlPiYpID0gMDsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6
CiAgICAgZXhwbGljaXQgU2ltcGxlRWRpdENvbW1hbmQoRG9jdW1lbnQmLCBFZGl0QWN0aW9uID0g
RWRpdEFjdGlvbjo6VW5zcGVjaWZpZWQpOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIHZvaWQgYWRk
Tm9kZUFuZERlc2NlbmRhbnRzKE5vZGUqLCBIYXNoU2V0PE5vZGUqPiYpOworICAgIHZvaWQgYWRk
Tm9kZUFuZERlc2NlbmRhbnRzKE5vZGUqLCBXZWFrSGFzaFNldDxOb2RlPiYpOwogI2VuZGlmCiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9U
ZXh0Tm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4
dE5vZGVDb21tYW5kLmNwcAppbmRleCBkZjAxODI2ZjM5M2EwMmU5YmMwMzQzMjRlZjhjZDM4ZGJh
YzNmZmRjLi42NTg0NmEyOWYzYWZhMzA5N2M3YmVmZTA4YWE0NTdhMGUyMWU1ZTU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5j
cHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kOjpkb1Vu
YXBwbHkoKQogCiAjaWZuZGVmIE5ERUJVRwogCi12b2lkIEluc2VydEludG9UZXh0Tm9kZUNvbW1h
bmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgSW5zZXJ0
SW50b1RleHROb2RlQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQoV2Vha0hhc2hTZXQ8Tm9kZT4m
IG5vZGVzKQogewogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX25vZGUucHRyKCksIG5vZGVz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHRO
b2RlQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVD
b21tYW5kLmgKaW5kZXggMjM2ZGQ2ZjUyODA4NzIxNTk3YzdmMWQ0ZWNjNDBmODUxY2M5OGE4ZS4u
YTVlMGM3NjEzMjhkNTQyN2E4NGJmMzExNzlmMzQ3ZjdmNTU3ZTExNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmgKQEAgLTQ5LDcg
KzQ5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvUmVhcHBseSgpIG92ZXJyaWRlOwogICAgIAog
I2lmbmRlZiBOREVCVUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChXZWFrSGFzaFNldDxOb2Rl
PiYpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgCiAgICAgUmVmPFRleHQ+IG1fbm9kZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5jcHAKaW5k
ZXggZjA0MzVlNzQ3NzAxNmI1MGYyNzBmYWQzNDhmMDFjYmQ0M2M0YmMzYS4uODNjZmU1ZWEyZDA4
OGJmZjViMjQ0MjM2MGMwYTEwOGRjODVkNjc5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9p
ZCBJbnNlcnROb2RlQmVmb3JlQ29tbWFuZDo6ZG9VbmFwcGx5KCkKIH0KIAogI2lmbmRlZiBOREVC
VUcKLXZvaWQgSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hT
ZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQ6OmdldE5vZGVz
SW5Db21tYW5kKFdlYWtIYXNoU2V0PE5vZGU+JiBub2RlcykKIHsKICAgICBhZGROb2RlQW5kRGVz
Y2VuZGFudHMobV9pbnNlcnRDaGlsZC5wdHIoKSwgbm9kZXMpOwogICAgIGFkZE5vZGVBbmREZXNj
ZW5kYW50cyhtX3JlZkNoaWxkLnB0cigpLCBub2Rlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmgKaW5kZXggMjVkMzQzYzhlMTMzMTY0MThl
NzQwMGFkYzgyNWEwZjhjZTUxNjY3Yi4uNTc3YzhmZWIyZTk4ZjZiOWNiMGE4ZDNjODY1OTQxZjNl
NjdlYjBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnROb2RlQmVm
b3JlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9y
ZUNvbW1hbmQuaApAQCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZG9VbmFwcGx5
KCkgb3ZlcnJpZGU7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFu
ZChIYXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQo
V2Vha0hhc2hTZXQ8Tm9kZT4mKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgUmVmPE5vZGU+IG1f
aW5zZXJ0Q2hpbGQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRl
bnRpY2FsRWxlbWVudHNDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJ
ZGVudGljYWxFbGVtZW50c0NvbW1hbmQuY3BwCmluZGV4IGQ2MWRlYjdmODFhODEyNzE3MTA5Nzg0
YjgxNmNiMzg2ZDE4YjdiYTIuLjIwODQ0YzVmMmQzODViMjYzYjdiNzk1MzkzZDgwNmE1ZTc3YzYx
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVt
ZW50c0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGlj
YWxFbGVtZW50c0NvbW1hbmQuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgTWVyZ2VJZGVudGlj
YWxFbGVtZW50c0NvbW1hbmQ6OmRvVW5hcHBseSgpCiB9CiAKICNpZm5kZWYgTkRFQlVHCi12b2lk
IE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0
PE5vZGUqPiYgbm9kZXMpCit2b2lkIE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpnZXRO
b2Rlc0luQ29tbWFuZChXZWFrSGFzaFNldDxOb2RlPiYgbm9kZXMpCiB7CiAgICAgYWRkTm9kZUFu
ZERlc2NlbmRhbnRzKG1fZWxlbWVudDEucHRyKCksIG5vZGVzKTsKICAgICBhZGROb2RlQW5kRGVz
Y2VuZGFudHMobV9lbGVtZW50Mi5wdHIoKSwgbm9kZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5oCmluZGV4IDk3YTc3
MzJjNDNmNzlmM2Y3NjJmMjZkYzUzNTBmNmU4Y2VkOWUxN2UuLmE0NGI1N2U1Njk0MmFjNjRiMzZk
NmU1OTk5M2ZjOTNjYmQ0ZGNiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
TWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOwogICAgIAogI2lmbmRlZiBOREVC
VUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikgb3ZlcnJpZGU7
CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChXZWFrSGFzaFNldDxOb2RlPiYpIG92ZXJyaWRl
OwogI2VuZGlmCiAgICAgCiAgICAgUmVmPEVsZW1lbnQ+IG1fZWxlbWVudDE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwCmluZGV4IGUzNjU3YzQ1NTRiMTQ3
NzNkNjY0ZGY3NTU1NmE4MDM2NWM4MjMzNmQuLjQ2MjNjZWUyMzE1ZTkzMTQ3NTI1NmRhNDNhZTg1
MDE4ZWQzZDFkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9k
ZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1h
bmQuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgUmVtb3ZlTm9kZUNvbW1hbmQ6OmRvVW5hcHBs
eSgpCiB9CiAKICNpZm5kZWYgTkRFQlVHCi12b2lkIFJlbW92ZU5vZGVDb21tYW5kOjpnZXROb2Rl
c0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYgbm9kZXMpCit2b2lkIFJlbW92ZU5vZGVDb21tYW5k
OjpnZXROb2Rlc0luQ29tbWFuZChXZWFrSGFzaFNldDxOb2RlPiYgbm9kZXMpCiB7CiAgICAgYWRk
Tm9kZUFuZERlc2NlbmRhbnRzKG1fcGFyZW50LmdldCgpLCBub2Rlcyk7CiAgICAgYWRkTm9kZUFu
ZERlc2NlbmRhbnRzKG1fcmVmQ2hpbGQuZ2V0KCksIG5vZGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuaAppbmRleCAzMTZlMmE0OTc3NjcwNTk0OGUxNTY0MjU5
ZDVkMmIxNjNlZGQxNzIwLi5lMmM1NmUxZWIzNmJiOWY3NDkwYmUyODVlMTlhMTJjM2RhY2QyMWE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5oCkBAIC00Myw3
ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1VuYXBwbHkoKSBvdmVycmlkZTsKIAogI2lm
bmRlZiBOREVCVUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChXZWFrSGFzaFNldDxOb2RlPiYp
IG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBSZWY8Tm9kZT4gbV9ub2RlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcAppbmRl
eCA3MzRlMDNjOWJkMTBiMDc1MDliOTg0ZThhYzIzNjU2ZTZlZTA0OWI0Li45ZTVhYjA2ODA5OWI1
NjZmNzMzNDJjN2QxY2E2YTkwYTIwMGM3NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcApAQCAtNzQsNyArNzQsNyBA
QCB2b2lkIFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kOjpkb1VuYXBwbHkoKQogfQogCiAjaWZu
ZGVmIE5ERUJVRwotdm9pZCBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZDo6Z2V0Tm9kZXNJbkNv
bW1hbmQoSGFzaFNldDxOb2RlKj4mIG5vZGVzKQordm9pZCBSZXBsYWNlTm9kZVdpdGhTcGFuQ29t
bWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQoV2Vha0hhc2hTZXQ8Tm9kZT4mIG5vZGVzKQogewogICAg
IGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX2VsZW1lbnRUb1JlcGxhY2UucHRyKCksIG5vZGVzKTsK
ICAgICBhZGROb2RlQW5kRGVzY2VuZGFudHMobV9zcGFuRWxlbWVudC5nZXQoKSwgbm9kZXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29t
bWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFu
ZC5oCmluZGV4IGU1ZDMwZmM1ZjI3MTYwZGZjNzdmYjk5NTk0YzBiYmRjNjA2OTkwYzMuLjUzYWQ5
ZGI4YWRmZWFhOWZjMTkxNmMxNDE0NGJiMmQyZjYyMDhlM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmgKQEAgLTUzLDcgKzUz
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOwogICAgIAogI2lm
bmRlZiBOREVCVUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChXZWFrSGFzaFNldDxOb2RlPiYp
IG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBSZWY8SFRNTEVsZW1lbnQ+IG1fZWxlbWVudFRvUmVw
bGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0Tm9kZUF0dHJpYnV0
ZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29t
bWFuZC5jcHAKaW5kZXggODBjMTQ2YTE4NDBlOGU0Zjg5NGM4NmZiZmI2NGE2NWYyMWI5YjgwZS4u
Mzk2ZWQ1NzBiMGRjYTVjMTRhZmYxOWE2MDJjNTFlNDliY2ZlYTU4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHAKQEAgLTUzLDcg
KzUzLDcgQEAgdm9pZCBTZXROb2RlQXR0cmlidXRlQ29tbWFuZDo6ZG9VbmFwcGx5KCkKIH0KIAog
I2lmbmRlZiBOREVCVUcKLXZvaWQgU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQ6OmdldE5vZGVzSW5D
b21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgU2V0Tm9kZUF0dHJpYnV0ZUNvbW1h
bmQ6OmdldE5vZGVzSW5Db21tYW5kKFdlYWtIYXNoU2V0PE5vZGU+JiBub2RlcykKIHsKICAgICBh
ZGROb2RlQW5kRGVzY2VuZGFudHMobV9lbGVtZW50LnB0cigpLCBub2Rlcyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmggYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmgKaW5kZXggZGU1
MTJjNTBlNzI3MGUwNDljNDhhZWNkMWNmNzdkOWE1Yjg3M2VkMC4uMTk0ZWJjODE0MDhmM2EzZmRh
MTRkNTcxZjhiNDQ2Njc0MTk2YzkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZG9VbmFwcGx5KCkgb3ZlcnJpZGU7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBn
ZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0
Tm9kZXNJbkNvbW1hbmQoV2Vha0hhc2hTZXQ8Tm9kZT4mKSBvdmVycmlkZTsKICNlbmRpZgogCiAg
ICAgUmVmPEVsZW1lbnQ+IG1fZWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU2V0U2VsZWN0aW9uQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRT
ZWxlY3Rpb25Db21tYW5kLmgKaW5kZXggZjZjOWYwNjMwYjVmZjFiOGJhMWNkNTkyNGNlZDE1Y2Mz
OWEzZmJiZS4uNzdlMDNhN2EzMTQ0ZjExMWY3MjkwOGY1OTM5YWM1YTFhYTgzMmJkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmgKQEAgLTQ0LDcgKzQ0
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOwogCiAjaWZuZGVm
IE5ERUJVRwotICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mKSBvdmVy
cmlkZSB7IH0KKyAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKFdlYWtIYXNoU2V0PE5vZGU+Jikg
b3ZlcnJpZGUgeyB9CiAjZW5kaWYKIAogICAgIE9wdGlvblNldDxGcmFtZVNlbGVjdGlvbjo6U2V0
U2VsZWN0aW9uT3B0aW9uPiBtX29wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcAppbmRleCBhODQ4NjYzNjUzYTBmN2Zm
Mjk3MzczNmIxMTk3MmM4YzY0YzhjYWFkLi40Mzk4YjU0MzUxZDE4NzljZmViZTJkNTY4MmRjYmU3
ZDdkM2ZjNmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29y
cmVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB9CiAK
ICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUq
PiYpIG92ZXJyaWRlCisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChXZWFrSGFzaFNldDxOb2Rl
PiYpIG92ZXJyaWRlCiAgICAgewogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAKaW5kZXggZDIxYmNmMDlkZWVlNjVhMTY4MzUz
MWYzNDhhZjRkZDNmOWQ5NmE4NC4uZTA3ZjM3OGJjYzRkNzE5NDY3MWM2MDNhMDdmMDNhN2UwZmRm
NDJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21t
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQu
Y3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBTcGxpdEVsZW1lbnRDb21tYW5kOjpkb1JlYXBw
bHkoKQogfQogCiAjaWZuZGVmIE5ERUJVRwotdm9pZCBTcGxpdEVsZW1lbnRDb21tYW5kOjpnZXRO
b2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYgbm9kZXMpCit2b2lkIFNwbGl0RWxlbWVudENv
bW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKFdlYWtIYXNoU2V0PE5vZGU+JiBub2RlcykKIHsKICAg
ICBhZGROb2RlQW5kRGVzY2VuZGFudHMobV9lbGVtZW50MS5nZXQoKSwgbm9kZXMpOwogICAgIGFk
ZE5vZGVBbmREZXNjZW5kYW50cyhtX2VsZW1lbnQyLnB0cigpLCBub2Rlcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5oCmluZGV4IDk4MzE2NTFiMDAwYWE3
NTRkYmZiNjE3MDQ3NmQ3Y2NjNzQzOTBlZjIuLmZjYjZkZWQxYWYxYzc2YTk5OTkwYWE1MzU4N2Y1
ZDY4NGU0NWNiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVt
ZW50Q29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29t
bWFuZC5oCkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBleGVjdXRlQXBwbHko
KTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8
Tm9kZSo+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChXZWFrSGFzaFNl
dDxOb2RlPiYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBSZWZQdHI8RWxlbWVudD4gbV9lbGVt
ZW50MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRUZXh0Tm9kZUNv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5j
cHAKaW5kZXggNzNkNjA5Y2FjOThlMWU1MjgyN2JmYzNhN2EzN2UyYzg1YjFkZmUxZC4uZjc1MTAx
MzhmOWUxYTRkOGU1NjRjMjdhNTMyMjNiYzFjYWE3MTZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2
b2lkIFNwbGl0VGV4dE5vZGVDb21tYW5kOjppbnNlcnRUZXh0MUFuZFRyaW1UZXh0MigpCiAKICNp
Zm5kZWYgTkRFQlVHCiAKLXZvaWQgU3BsaXRUZXh0Tm9kZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21t
YW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgU3BsaXRUZXh0Tm9kZUNvbW1hbmQ6Omdl
dE5vZGVzSW5Db21tYW5kKFdlYWtIYXNoU2V0PE5vZGU+JiBub2RlcykKIHsKICAgICBhZGROb2Rl
QW5kRGVzY2VuZGFudHMobV90ZXh0MS5nZXQoKSwgbm9kZXMpOwogICAgIGFkZE5vZGVBbmREZXNj
ZW5kYW50cyhtX3RleHQyLnB0cigpLCBub2Rlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NwbGl0VGV4dE5vZGVDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NwbGl0VGV4dE5vZGVDb21tYW5kLmgKaW5kZXggYjk5MTlkNjcwODcxOTIyMjljMDVjMzg3M2Zm
OWYyMDEyOTEyOGZkMC4uYzMxZTRkYTI3YjU5MTYxOTlhOTJjNTFkNzZiYTNiNmEyY2M3ZmRmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQuaApAQCAt
NDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5zZXJ0VGV4dDFBbmRUcmltVGV4dDIo
KTsKICAgICAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNo
U2V0PE5vZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoV2Vha0hh
c2hTZXQ8Tm9kZT4mKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgUmVmUHRyPFRleHQ+IG1fdGV4
dDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXIuY3BwCmluZGV4IDZlZjlmZTBhYTYyOTY5OTcwNTBhZDJhNjAxZWYxYTk2YTAyZTIy
YzQuLjY1ZmQ1YjVjNTM1MDQ5ZDY5NjU3MjI3N2M1NTIyMzNmMzA5NDBjNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3Bw
CkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6b2Jz
ZXJ2ZVBhcmFncmFwaHMoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdAogICAgICAgICAgICAg
ZW5jbG9zaW5nSXRlbUJvdW5kYXJ5RWxlbWVudHMucmVtb3ZlTGFzdCgpOwogICAgICAgICB9CiAK
LSAgICAgICAgaWYgKG1fbWFuaXB1bGF0ZWROb2Rlcy5jb250YWlucyhjb250ZW50Tm9kZSkpIHsK
KyAgICAgICAgaWYgKGNvbnRlbnROb2RlICYmIG1fbWFuaXB1bGF0ZWROb2Rlcy5jb250YWlucygq
Y29udGVudE5vZGUpKSB7CiAgICAgICAgICAgICBhZGRJdGVtSWZQb3NzaWJsZShzdGQ6OmV4Y2hh
bmdlKHVuaXRzSW5DdXJyZW50UGFyYWdyYXBoLCB7IH0pKTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlcjo6b2JzZXJ2ZVBhcmFncmFwaHMoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdAog
CiB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpkaWRDcmVhdGVSZW5kZXJlckZvckVs
ZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBpZiAobV9tYW5pcHVsYXRlZE5vZGVzLmNv
bnRhaW5zKCZlbGVtZW50KSkKKyAgICBpZiAobV9tYW5pcHVsYXRlZE5vZGVzLmNvbnRhaW5zKGVs
ZW1lbnQpKQogICAgICAgICByZXR1cm47CiAKICAgICBzY2hlZHVsZU9ic2VydmF0aW9uVXBkYXRl
KCk7CkBAIC01NDYsMTcgKzU0NiwxNyBAQCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
OjpkaWRDcmVhdGVSZW5kZXJlckZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIAogdm9pZCBU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6ZGlkVXBkYXRlQ29udGVudEZvclRleHQoVGV4dCYg
dGV4dCkKIHsKLSAgICBpZiAoIW1fbWFuaXB1bGF0ZWROb2Rlcy5jb250YWlucygmdGV4dCkpCisg
ICAgaWYgKCFtX21hbmlwdWxhdGVkTm9kZXMuY29udGFpbnModGV4dCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIHNjaGVkdWxlT2JzZXJ2YXRpb25VcGRhdGUoKTsKIAotICAgIG1fbWFuaXB1bGF0
ZWRUZXh0c1dpdGhOZXdDb250ZW50LmFkZCgmdGV4dCk7CisgICAgbV9tYW5pcHVsYXRlZFRleHRz
V2l0aE5ld0NvbnRlbnQuYWRkKHRleHQpOwogfQogCiB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250
cm9sbGVyOjpkaWRDcmVhdGVSZW5kZXJlckZvclRleHROb2RlKFRleHQmIHRleHQpCiB7Ci0gICAg
aWYgKG1fbWFuaXB1bGF0ZWROb2Rlcy5jb250YWlucygmdGV4dCkpCisgICAgaWYgKG1fbWFuaXB1
bGF0ZWROb2Rlcy5jb250YWlucyh0ZXh0KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2NoZWR1
bGVPYnNlcnZhdGlvblVwZGF0ZSgpOwpAQCAtNTg2LDE2ICs1ODYsMTYgQEAgdm9pZCBUZXh0TWFu
aXB1bGF0aW9uQ29udHJvbGxlcjo6c2NoZWR1bGVPYnNlcnZhdGlvblVwZGF0ZSgpCiAgICAgICAg
ICAgICBub2Rlc1RvT2JzZXJ2ZS5hZGQod2Vha0VsZW1lbnQpOwogICAgICAgICBjb250cm9sbGVy
LT5tX2VsZW1lbnRzV2l0aE5ld1JlbmRlcmVyLmNsZWFyKCk7CiAKLSAgICAgICAgZm9yIChhdXRv
KiB0ZXh0IDogY29udHJvbGxlci0+bV9tYW5pcHVsYXRlZFRleHRzV2l0aE5ld0NvbnRlbnQpIHsK
KyAgICAgICAgZm9yIChhdXRvJiB0ZXh0IDogY29udHJvbGxlci0+bV9tYW5pcHVsYXRlZFRleHRz
V2l0aE5ld0NvbnRlbnQpIHsKICAgICAgICAgICAgIGlmICghY29udHJvbGxlci0+bV9tYW5pcHVs
YXRlZE5vZGVzLmNvbnRhaW5zKHRleHQpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgY29udHJvbGxlci0+bV9tYW5pcHVsYXRlZE5vZGVzLnJlbW92ZSh0ZXh0KTsKLSAg
ICAgICAgICAgIG5vZGVzVG9PYnNlcnZlLmFkZCgqdGV4dCk7CisgICAgICAgICAgICBub2Rlc1Rv
T2JzZXJ2ZS5hZGQodGV4dCk7CiAgICAgICAgIH0KICAgICAgICAgY29udHJvbGxlci0+bV9tYW5p
cHVsYXRlZFRleHRzV2l0aE5ld0NvbnRlbnQuY2xlYXIoKTsKIAotICAgICAgICBmb3IgKGF1dG8q
IHRleHQgOiBjb250cm9sbGVyLT5tX3RleHROb2Rlc1dpdGhOZXdSZW5kZXJlcikKLSAgICAgICAg
ICAgIG5vZGVzVG9PYnNlcnZlLmFkZCgqdGV4dCk7CisgICAgICAgIGZvciAoYXV0byYgdGV4dCA6
IGNvbnRyb2xsZXItPm1fdGV4dE5vZGVzV2l0aE5ld1JlbmRlcmVyKQorICAgICAgICAgICAgbm9k
ZXNUb09ic2VydmUuYWRkKHRleHQpOwogICAgICAgICBjb250cm9sbGVyLT5tX3RleHROb2Rlc1dp
dGhOZXdSZW5kZXJlci5jbGVhcigpOwogCiAgICAgICAgIGlmIChub2Rlc1RvT2JzZXJ2ZS5pc0Vt
cHR5KCkpCkBAIC05MzYsNyArOTM2LDcgQEAgYXV0byBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxl
cjo6cmVwbGFjZShjb25zdCBNYW5pcHVsYXRpb25JdGVtRGF0YSYgaXRlbSwgY29uc3QKICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi12b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
OjpyZW1vdmVOb2RlKE5vZGUqIG5vZGUpCit2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
OjpyZW1vdmVOb2RlKE5vZGUmIG5vZGUpCiB7CiAgICAgbV9tYW5pcHVsYXRlZE5vZGVzLnJlbW92
ZShub2RlKTsKICAgICBtX3RleHROb2Rlc1dpdGhOZXdSZW5kZXJlci5yZW1vdmUobm9kZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
LmgKaW5kZXggZGU3YmU1MzI0ODRmNjE5MWFhZTljNmIxNzYxZjQ3MDk2MmQyNzBmYi4uMTA2NGM4
NGU0MzhhNDg0MmMyNjAyNDBlNDYxYTM1YzU1YzU0ZjVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaApAQCAtODAsNyArODAs
NyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHN0cnVjdCBFeGNsdXNpb25SdWxlIHsKLSAgICAg
ICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7IEV4Y2x1ZGUsIEluY2x1ZGUgfTsKKyAgICAg
ICAgZW51bSBjbGFzcyBUeXBlIDogYm9vbCB7IEV4Y2x1ZGUsIEluY2x1ZGUgfTsKIAogICAgICAg
ICBzdHJ1Y3QgRWxlbWVudFJ1bGUgewogICAgICAgICAgICAgQXRvbVN0cmluZyBsb2NhbE5hbWU7
CkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ3JlYXRlUmVuZGVyZXJG
b3JFbGVtZW50KEVsZW1lbnQmKTsKICAgICB2b2lkIGRpZENyZWF0ZVJlbmRlcmVyRm9yVGV4dE5v
ZGUoVGV4dCYpOwogICAgIHZvaWQgZGlkVXBkYXRlQ29udGVudEZvclRleHQoVGV4dCYpOwotICAg
IHZvaWQgcmVtb3ZlTm9kZShOb2RlKik7CisgICAgdm9pZCByZW1vdmVOb2RlKE5vZGUmKTsKIAog
ICAgIGVudW0gY2xhc3MgTWFuaXB1bGF0aW9uRmFpbHVyZVR5cGUgOiB1aW50OF90IHsKICAgICAg
ICAgQ29udGVudENoYW5nZWQsCkBAIC0xODIsOSArMTgyLDkgQEAgcHJpdmF0ZToKIAogICAgIFdl
YWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgV2Vha0hhc2hTZXQ8RWxlbWVudD4gbV9l
bGVtZW50c1dpdGhOZXdSZW5kZXJlcjsKLSAgICBIYXNoU2V0PFRleHQqPiBtX21hbmlwdWxhdGVk
VGV4dHNXaXRoTmV3Q29udGVudDsKLSAgICBIYXNoU2V0PE5vZGUqPiBtX3RleHROb2Rlc1dpdGhO
ZXdSZW5kZXJlcjsKLSAgICBIYXNoU2V0PE5vZGUqPiBtX21hbmlwdWxhdGVkTm9kZXM7CisgICAg
V2Vha0hhc2hTZXQ8VGV4dD4gbV9tYW5pcHVsYXRlZFRleHRzV2l0aE5ld0NvbnRlbnQ7CisgICAg
V2Vha0hhc2hTZXQ8Tm9kZT4gbV90ZXh0Tm9kZXNXaXRoTmV3UmVuZGVyZXI7CisgICAgV2Vha0hh
c2hTZXQ8Tm9kZT4gbV9tYW5pcHVsYXRlZE5vZGVzOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIGJv
b2w+IG1fY2FjaGVkRm9udEZhbWlseUV4Y2x1c2lvblJlc3VsdHM7CiAKQEAgLTM1MiwxNSArMzUy
LDYgQEAgT3B0aW9uYWw8VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkZh
aWx1cmU+IFRleHRNYW5pcHVsYXRpb25Db250cm8KIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xs
ZXI6OkV4Y2x1c2lvblJ1bGU6OlR5cGU+IHsKLSAgICB1c2luZyBFeGNsdXNpb25SdWxlID0gV2Vi
Q29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU7Ci0gICAgdXNp
bmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgRXhjbHVzaW9uUnVsZTo6VHlwZSwKLSAg
ICAgICAgRXhjbHVzaW9uUnVsZTo6VHlwZTo6SW5jbHVkZSwKLSAgICAgICAgRXhjbHVzaW9uUnVs
ZTo6VHlwZTo6RXhjbHVkZQotICAgID47Ci19OwotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25GYWls
dXJlVHlwZT4gewogICAgIHVzaW5nIE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlID0gV2ViQ29yZTo6
VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlOwogICAg
IHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1dyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1dyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5jcHAKaW5kZXggNDAwNmZh
OGVkMWZiM2UyYjZlZTFiZGY3NmYwM2I4YmJjYWQ2NzZlNi4uMGI4ZTIwYzhmNmY0ZjVkNDEyMmM4
N2RiN2ExNDAwNWZkYmYwOTk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9X
cmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmNwcApAQCAtNzksNyArNzksNyBA
QCB2b2lkIFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZDo6ZG9SZWFwcGx5KCkKIH0KIAog
I2lmbmRlZiBOREVCVUcKLXZvaWQgV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kOjpnZXRO
b2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYgbm9kZXMpCit2b2lkIFdyYXBDb250ZW50c0lu
RHVtbXlTcGFuQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQoV2Vha0hhc2hTZXQ8Tm9kZT4mIG5v
ZGVzKQogewogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX2VsZW1lbnQucHRyKCksIG5vZGVz
KTsKICAgICBhZGROb2RlQW5kRGVzY2VuZGFudHMobV9kdW1teVNwYW4uZ2V0KCksIG5vZGVzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV3JhcENvbnRlbnRzSW5EdW1teVNw
YW5Db21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dyYXBDb250ZW50c0luRHVtbXlT
cGFuQ29tbWFuZC5oCmluZGV4IGZiZDBhMWQ2ZmI1NjI0OWJlYjhhYzc4ZjQyODJlMzY4NDliOWFi
YzguLjFlMjhlNmY0NTExMGI4ZmI5NGIxOTJlYzgzZTc1YmZjMzhkMWQxNmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1h
bmQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhlY3V0ZUFwcGx5KCk7
CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5v
ZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoV2Vha0hhc2hTZXQ8
Tm9kZT4mKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgUmVmPEVsZW1lbnQ+IG1fZWxlbWVudDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCA1
N2RlOWQyNzdhMDk5MjQ4MGRlZDc1NzYyMTUyNjMyZjIwMDZlZWIzLi43NTIzODMwZTIxYTUyN2Mx
ZjkzMWEyZDQzNjg1OTc1ZjM4ZjNjNGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC02Niw2ICs2Niw3IEBACiAjaW1wb3J0IDxvYmpjL3J1
bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+
CiAjaW1wb3J0IDx3dGYvQVNDSUlDVHlwZS5oPgorI2ltcG9ydCA8d3RmL1dlYWtIYXNoU2V0Lmg+
CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQpAQCAtMjUzLDExICsyNTQsMTEgQEAgcHVibGljOgogICAgIFJlZlB0cjxDU1NWYWx1
ZT4gaW5saW5lU3R5bGVQcm9wZXJ0eUZvckVsZW1lbnQoRWxlbWVudCYsIENTU1Byb3BlcnR5SUQp
OwogCiAgICAgTm9kZSogY2FjaGVBbmNlc3RvcnNPZlN0YXJ0VG9CZUNvbnZlcnRlZChjb25zdCBQ
b3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7Ci0gICAgYm9vbCBpc0FuY2VzdG9yc09mU3RhcnRU
b0JlQ29udmVydGVkKE5vZGUmIG5vZGUpIGNvbnN0IHsgcmV0dXJuIG1fYW5jZXN0b3JzVW5kZXJD
b21tb25BbmNlc3Rvci5jb250YWlucygmbm9kZSk7IH0KKyAgICBib29sIGlzQW5jZXN0b3JzT2ZT
dGFydFRvQmVDb252ZXJ0ZWQoTm9kZSYgbm9kZSkgY29uc3QgeyByZXR1cm4gbV9hbmNlc3RvcnNV
bmRlckNvbW1vbkFuY2VzdG9yLmNvbnRhaW5zKG5vZGUpOyB9CiAKIHByaXZhdGU6CiAgICAgSGFz
aE1hcDxFbGVtZW50Kiwgc3RkOjp1bmlxdWVfcHRyPENvbXB1dGVkU3R5bGVFeHRyYWN0b3I+PiBt
X2NvbXB1dGVkU3R5bGVzOwotICAgIEhhc2hTZXQ8Tm9kZSo+IG1fYW5jZXN0b3JzVW5kZXJDb21t
b25BbmNlc3RvcjsKKyAgICBXZWFrSGFzaFNldDxOb2RlPiBtX2FuY2VzdG9yc1VuZGVyQ29tbW9u
QW5jZXN0b3I7CiB9OwogCiBAaW50ZXJmYWNlIE5TVGV4dExpc3QgKFdlYkNvcmVOU1RleHRMaXN0
RGV0YWlscykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKaW5kZXggNTdmNGVjNDQ0MGM4YjU0YTQ4Y2E0NTYzMjdjMzNlNGM1
MjE2ODVkOS4uYjY1N2YyODI0NDFkNjM5N2QwYTliMjExZjk2NDA3OGFjYWE4Zjc5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKQEAgLTEzMzAsNyArMTMzMCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+
IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRTZWxlY3RvcihSZWY8SlNPTjo6T2JqCiAgICAg
U2VsZWN0b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlcigqZG9jdW1lbnQpOwogCiAgICAgVmVjdG9y
PFJlZjxOb2RlPj4gbm9kZUxpc3Q7Ci0gICAgSGFzaFNldDxOb2RlKj4gc2Vlbk5vZGVzOworICAg
IFdlYWtIYXNoU2V0PE5vZGU+IHNlZW5Ob2RlczsKIAogICAgIGZvciAoYXV0byYgZGVzY2VuZGFu
dCA6IGNvbXBvc2VkVHJlZURlc2NlbmRhbnRzKCpkb2N1bWVudCkpIHsKICAgICAgICAgaWYgKCFp
czxFbGVtZW50PihkZXNjZW5kYW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3Bw
CmluZGV4IDlmZGZiYThiMTAyM2FlNjVjYjJmZjhjMmZhZjQyMzA0MGEwMzhhMDYuLjYxNjYxZDll
YTEwMTFjNGY5MmI0MDY0YzdiYWE1MGE1NWM4NjJjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
RnVuY3Rpb25zLmNwcApAQCAtMzI4LDcgKzMyOCw3IEBAIFZhbHVlIEZ1bklkOjpldmFsdWF0ZSgp
IGNvbnN0CiAgICAgCiAgICAgVHJlZVNjb3BlJiBjb250ZXh0U2NvcGUgPSBldmFsdWF0aW9uQ29u
dGV4dCgpLm5vZGUtPnRyZWVTY29wZSgpOwogICAgIE5vZGVTZXQgcmVzdWx0OwotICAgIEhhc2hT
ZXQ8Tm9kZSo+IHJlc3VsdFNldDsKKyAgICBXZWFrSGFzaFNldDxOb2RlPiByZXN1bHRTZXQ7CiAK
ICAgICB1bnNpZ25lZCBzdGFydFBvcyA9IDA7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gaWRMaXN0
Lmxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9kZVNldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmNwcAppbmRleCBkMDRiZDYyYzE0
NDNhMWE4Nzk5OWY5NmIwMDNjMmY3MmM4ODYzMDI0Li5iNDRlMjllYTQ0NWU1NjdkZDM5ZTZmNjc0
MTRiOTIwY2ViZTEyZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2Rl
U2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmNwcApAQCAtMTA3
LDE3ICsxMDcsMTcgQEAgc3RhdGljIHZvaWQgc29ydEJsb2NrKHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIHRvLCBWZWN0b3I8VmVjdG9yPE5vZGUqPj4mIHBhcmVudE0KIAogICAgIC8vIENoaWxkcmVu
IG5vZGVzIG9mIHRoZSBjb21tb24gYW5jZXN0b3IgaW5kdWNlIGEgc3ViZGl2aXNpb24gb2Ygb3Vy
IG5vZGUtc2V0LgogICAgIC8vIFNvcnQgaXQgYWNjb3JkaW5nIHRvIHRoaXMgc3ViZGl2aXNpb24s
IGFuZCByZWN1cnNpdmVseSBzb3J0IGVhY2ggZ3JvdXAuCi0gICAgSGFzaFNldDxOb2RlKj4gcGFy
ZW50Tm9kZXM7CisgICAgV2Vha0hhc2hTZXQ8Tm9kZT4gcGFyZW50Tm9kZXM7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gZnJvbTsgaSA8IHRvOyArK2kpCiAgICAgICAgIHBhcmVudE5vZGVzLmFkZChw
YXJlbnRXaXRoRGVwdGgoY29tbW9uQW5jZXN0b3JEZXB0aCArIDEsIHBhcmVudE1hdHJpeFtpXSkp
OwogCiAgICAgdW5zaWduZWQgcHJldmlvdXNHcm91cEVuZCA9IGZyb207CiAgICAgdW5zaWduZWQg
Z3JvdXBFbmQgPSBmcm9tOwotICAgIGZvciAoTm9kZSogbiA9IGNvbW1vbkFuY2VzdG9yLT5maXJz
dENoaWxkKCk7IG47IG4gPSBuLT5uZXh0U2libGluZygpKSB7CisgICAgZm9yIChhdXRvKiBub2Rl
ID0gY29tbW9uQW5jZXN0b3ItPmZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkp
IHsKICAgICAgICAgLy8gSWYgcGFyZW50Tm9kZXMgY29udGFpbnMgdGhlIG5vZGUsIHBlcmZvcm0g
YSBsaW5lYXIgc2VhcmNoIHRvIG1vdmUgaXRzIGNoaWxkcmVuIGluIHRoZSBub2RlLXNldCB0byB0
aGUgYmVnaW5uaW5nLgotICAgICAgICBpZiAocGFyZW50Tm9kZXMuY29udGFpbnMobikpIHsKKyAg
ICAgICAgaWYgKHBhcmVudE5vZGVzLmNvbnRhaW5zKCpub2RlKSkgewogICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gZ3JvdXBFbmQ7IGkgPCB0bzsgKytpKQotICAgICAgICAgICAgICAgIGlm
IChwYXJlbnRXaXRoRGVwdGgoY29tbW9uQW5jZXN0b3JEZXB0aCArIDEsIHBhcmVudE1hdHJpeFtp
XSkgPT0gbikKKyAgICAgICAgICAgICAgICBpZiAocGFyZW50V2l0aERlcHRoKGNvbW1vbkFuY2Vz
dG9yRGVwdGggKyAxLCBwYXJlbnRNYXRyaXhbaV0pID09IG5vZGUpCiAgICAgICAgICAgICAgICAg
ICAgIHBhcmVudE1hdHJpeFtpXS5zd2FwKHBhcmVudE1hdHJpeFtncm91cEVuZCsrXSk7CiAKICAg
ICAgICAgICAgIGlmIChncm91cEVuZCAtIHByZXZpb3VzR3JvdXBFbmQgPiAxKQpAQCAtMTI2LDEy
ICsxMjYsMTIgQEAgc3RhdGljIHZvaWQgc29ydEJsb2NrKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVk
IHRvLCBWZWN0b3I8VmVjdG9yPE5vZGUqPj4mIHBhcmVudE0KICAgICAgICAgICAgIEFTU0VSVChw
cmV2aW91c0dyb3VwRW5kICE9IGdyb3VwRW5kKTsKICAgICAgICAgICAgIHByZXZpb3VzR3JvdXBF
bmQgPSBncm91cEVuZDsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAgICBwYXJlbnROb2Rlcy5y
ZW1vdmUobik7CisgICAgICAgICAgICBwYXJlbnROb2Rlcy5yZW1vdmUoKm5vZGUpOwogI2VuZGlm
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBBU1NFUlQocGFyZW50Tm9kZXMuaXNFbXB0eSgpKTsK
KyAgICBBU1NFUlQocGFyZW50Tm9kZXMuY29tcHV0ZXNFbXB0eSgpKTsKIH0KIAogdm9pZCBOb2Rl
U2V0Ojpzb3J0KCkgY29uc3QKQEAgLTE5Miw3ICsxOTIsNyBAQCBzdGF0aWMgTm9kZSogZmluZFJv
b3ROb2RlKE5vZGUqIG5vZGUpCiAKIHZvaWQgTm9kZVNldDo6dHJhdmVyc2FsU29ydCgpIGNvbnN0
CiB7Ci0gICAgSGFzaFNldDxOb2RlKj4gbm9kZXM7CisgICAgV2Vha0hhc2hTZXQ8Tm9kZT4gbm9k
ZXM7CiAgICAgYm9vbCBjb250YWluc0F0dHJpYnV0ZU5vZGVzID0gZmFsc2U7CiAKICAgICB1bnNp
Z25lZCBub2RlQ291bnQgPSBtX25vZGVzLnNpemUoKTsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lk
IE5vZGVTZXQ6OnRyYXZlcnNhbFNvcnQoKSBjb25zdAogICAgIHNvcnRlZE5vZGVzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkobm9kZUNvdW50KTsKIAogICAgIGZvciAoTm9kZSogbm9kZSA9IGZpbmRS
b290Tm9kZShtX25vZGVzLmZpcnN0KCkuZ2V0KCkpOyBub2RlOyBub2RlID0gTm9kZVRyYXZlcnNh
bDo6bmV4dCgqbm9kZSkpIHsKLSAgICAgICAgaWYgKG5vZGVzLmNvbnRhaW5zKG5vZGUpKQorICAg
ICAgICBpZiAobm9kZXMuY29udGFpbnMoKm5vZGUpKQogICAgICAgICAgICAgc29ydGVkTm9kZXMu
YXBwZW5kKG5vZGUpOwogCiAgICAgICAgIGlmICghY29udGFpbnNBdHRyaWJ1dGVOb2RlcyB8fCAh
aXM8RWxlbWVudD4oKm5vZGUpKQpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgTm9kZVNldDo6dHJh
dmVyc2FsU29ydCgpIGNvbnN0CiAKICAgICAgICAgZm9yIChjb25zdCBBdHRyaWJ1dGUmIGF0dHJp
YnV0ZSA6IGVsZW1lbnQuYXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKICAgICAgICAgICAgIFJlZlB0
cjxBdHRyPiBhdHRyID0gZWxlbWVudC5hdHRySWZFeGlzdHMoYXR0cmlidXRlLm5hbWUoKSk7Ci0g
ICAgICAgICAgICBpZiAoYXR0ciAmJiBub2Rlcy5jb250YWlucyhhdHRyLmdldCgpKSkKKyAgICAg
ICAgICAgIGlmIChhdHRyICYmIG5vZGVzLmNvbnRhaW5zKCphdHRyKSkKICAgICAgICAgICAgICAg
ICBzb3J0ZWROb2Rlcy5hcHBlbmQoYXR0cik7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aFBhdGguY3BwCmluZGV4IGEyMDUyNGQ5YzJkMjhmZjBlNzVkNjA4NjRjZGZkZDNkNjBhYTE1
YjkuLjBkZmIzMmI2MWU3MzU3YmYzYWViZjRmYjFiNzA4NGQ3NTM1MmM5YWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aFBhdGguY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBMb2NhdGlvblBhdGg6OmV2
YWx1YXRlKE5vZGVTZXQmIG5vZGVzKSBjb25zdAogCiAgICAgZm9yIChhdXRvJiBzdGVwIDogbV9z
dGVwcykgewogICAgICAgICBOb2RlU2V0IG5ld05vZGVzOwotICAgICAgICBIYXNoU2V0PE5vZGUq
PiBuZXdOb2Rlc1NldDsKKyAgICAgICAgV2Vha0hhc2hTZXQ8Tm9kZT4gbmV3Tm9kZXNTZXQ7CiAK
ICAgICAgICAgYm9vbCBuZWVkVG9DaGVja0ZvckR1cGxpY2F0ZU5vZGVzID0gIW5vZGVzLnN1YnRy
ZWVzQXJlRGlzam9pbnQoKSB8fCAoc3RlcC0+YXhpcygpICE9IFN0ZXA6OkNoaWxkQXhpcyAmJiBz
dGVwLT5heGlzKCkgIT0gU3RlcDo6U2VsZkF4aXMKICAgICAgICAgICAgICYmIHN0ZXAtPmF4aXMo
KSAhPSBTdGVwOjpEZXNjZW5kYW50QXhpcyAmJiBzdGVwLT5heGlzKCkgIT0gU3RlcDo6RGVzY2Vu
ZGFudE9yU2VsZkF4aXMgJiYgc3RlcC0+YXhpcygpICE9IFN0ZXA6OkF0dHJpYnV0ZUF4aXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKaW5kZXggYzFiYmM1NGViODMwMTY5MTE5
Yzg2ODMxYTRmMmE2ZTdjMDA0NTY4ZC4uNjIwMzViMWRhNGU5Y2IyY2I1NDk1NmQzNmE0MGQzMGYx
MWRiZGRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCkBAIC0yNDEsNyAr
MjQxLDcgQEAgVmFsdWUgVW5pb246OmV2YWx1YXRlKCkgY29uc3QKICAgICBOb2RlU2V0JiByZXN1
bHRTZXQgPSBsaHNSZXN1bHQubW9kaWZpYWJsZU5vZGVTZXQoKTsKICAgICBjb25zdCBOb2RlU2V0
JiByaHNOb2RlcyA9IHJocy50b05vZGVTZXQoKTsKIAotICAgIEhhc2hTZXQ8Tm9kZSo+IG5vZGVz
OworICAgIFdlYWtIYXNoU2V0PE5vZGU+IG5vZGVzOwogICAgIGZvciAoYXV0byYgcmVzdWx0IDog
cmVzdWx0U2V0KQogICAgICAgICBub2Rlcy5hZGQocmVzdWx0LmdldCgpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417272</attachid>
            <date>2021-01-08 09:44:11 -0800</date>
            <delta_ts>2021-05-10 10:28:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220464-20210108094410.patch</filename>
            <type>text/plain</type>
            <size>44744</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg1Mjg1ZGRmNTc5N2Y5YmQyNzE0Yjlh
NmY1MWZhNTE1MTcwNGFmMjMuLjQ0YWU2ZTRhMzg4MTIyNDRlNDU1MDQzNWI1MDUzNjlhYzkzYjQ2
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDEtMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgV2Vha0hhc2hTZXQ8Tm9kZT4g
aW5zdGVhZCBvZiBIYXNoU2V0PE5vZGUqPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIwNDY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOgorICAgICAgICAqIHd0Zi9XZWFrSGFz
aFNldC5oOgorCiAyMDIxLTAxLTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgTWFrZSBpdCBzYWZlIHRvIHJlLWVudGVyIEhhc2hNYXA6OmNsZWFyKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA2YjE1MjZkZDE3NWUwYjdiMzRmYTY5NGZiNGJkYTc2ZGU3NjhjODBlLi40YmQ1ZTA4
ZGIwMjk3OGI0NzVlMmU1ZWI2OTNkN2M0YzEzNjdkYTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
OTMgQEAKKzIwMjEtMDEtMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KKworICAgICAgICBVc2UgV2Vha0hhc2hTZXQ8Tm9kZT4gaW5zdGVhZCBvZiBIYXNoU2V0
PE5vZGUqPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIwNDY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
ZGl0aW9uYWxseUFkZE5vZGVUb0ZpbHRlckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsdGVy
VmVjdG9yUGFpckZvclJlbW92YWwpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsdGVyTWFwRm9yUmVt
b3ZhbCk6CisgICAgICAgIChXZWJDb3JlOjpmaWx0ZXJMaXN0Rm9yUmVtb3ZhbCk6CisgICAgICAg
IChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwcmVwYXJlRm9yRG9jdW1lbnREZXN0cnVjdGlvbik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25PYnNlcnZlck93bmVyOjppc1JlYWNoYWJsZUZyb21P
cGFxdWVSb290cyk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZWROb2RlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjogY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9i
c2VydmVyLmg6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6YWRkUmVn
aXN0cmF0aW9uTm9kZXNUb1NldCBjb25zdCk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2
ZXJSZWdpc3RyYXRpb24uaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpsaXZlTm9kZVNldCk6CisgICAgICAgIChXZWJDb3JlOjppZ25vcmVTZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bW92ZU5v
ZGVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZE5vZGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFu
ZCk6CisgICAgICAgICogZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5oOgorICAgICAgICAqIGVk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdENv
bW1hbmRDb21wb3NpdGlvbjo6Z2V0Tm9kZXNJbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcv
Q29tcG9zaXRlRWRpdENvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZUZyb21UZXh0
Tm9kZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlRnJvbVRleHROb2RlQ29t
bWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlRnJvbVRl
eHROb2RlQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdENvbW1hbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2ltcGxlRWRpdENvbW1hbmQ6OmFkZE5vZGVBbmREZXNjZW5kYW50cyk6
CisgICAgICAgICogZWRpdGluZy9FZGl0Q29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvSW5z
ZXJ0SW50b1RleHROb2RlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRJbnRv
VGV4dE5vZGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAgICogZWRpdGluZy9J
bnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9JbnNlcnROb2Rl
QmVmb3JlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnROb2RlQmVmb3JlQ29t
bWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0Tm9kZUJl
Zm9yZUNvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHND
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21t
YW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAgICogZWRpdGluZy9NZXJnZUlkZW50aWNh
bEVsZW1lbnRzQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlTm9kZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21t
YW5kKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmg6CisgICAgICAgICog
ZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQpOgorICAgICAg
ICAqIGVkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0
aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldE5v
ZGVBdHRyaWJ1dGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAgICogZWRpdGlu
Zy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvU2V0U2VsZWN0
aW9uQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFu
ZC5jcHA6CisgICAgICAgICogZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNwbGl0RWxlbWVudENvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKToKKyAg
ICAgICAgKiBlZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5n
L1NwbGl0VGV4dE5vZGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwbGl0VGV4dE5v
ZGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAgICogZWRpdGluZy9TcGxpdFRl
eHROb2RlQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6
Om9ic2VydmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyOjpkaWRDcmVhdGVSZW5kZXJlckZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OmRpZFVwZGF0ZUNvbnRlbnRGb3JUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpkaWRDcmVhdGVS
ZW5kZXJlckZvclRleHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyOjpzY2hlZHVsZU9ic2VydmF0aW9uVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpyZW1vdmVOb2RlKToKKyAgICAgICAgKiBlZGl0
aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmg6CisgICAgICAgICogZWRpdGluZy9XcmFw
Q29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V3JhcENv
bnRlbnRzSW5EdW1teVNwYW5Db21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAgICog
ZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyQ2FjaGVz
Ojppc0FuY2VzdG9yc09mU3RhcnRUb0JlQ29udmVydGVkIGNvbnN0KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRTZWxlY3Rvcik6CisgICAgICAgICogeG1sL1hQYXRo
RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5JZDo6ZXZhbHVhdGUg
Y29uc3QpOgorICAgICAgICAqIHhtbC9YUGF0aE5vZGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WFBhdGg6OnNvcnRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6Tm9kZVNldDo6
dHJhdmVyc2FsU29ydCBjb25zdCk6CisgICAgICAgICogeG1sL1hQYXRoUGF0aC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpYUGF0aDo6TG9jYXRpb25QYXRoOjpldmFsdWF0ZSBjb25zdCk6CisgICAg
ICAgICogeG1sL1hQYXRoUHJlZGljYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpV
bmlvbjo6ZXZhbHVhdGUgY29uc3QpOgorCiAyMDIxLTAxLTA4ICBTaWh1aSBMaXUgIDxzaWh1aV9s
aXVAYXBwZS5jb20+CiAKICAgICAgICAgW01vamF2ZSBEZWJ1Z10gQVNTRVJUSU9OIEZBSUxFRDog
IW1fcmVxdWVzdHMuY29udGFpbnMoY2xpZW50SWRlbnRpZmllcikgaW4gV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcjo6c3RhcnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRm9y
d2FyZC5oIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCmluZGV4IGE0NWEzNTRjNDc3ODIwM2Rm
Y2ViMGI5OGUwNTgwODVkOWI4MjYwNmYuLmJhMGU0MWZiOWU4NTAyNDRmOTUxOWZmYmFhYjhhZjMz
YzU1MTRkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9Gb3J3YXJkLmgKQEAgLTc4LDYgKzc4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWU+
IGNsYXNzIFVuaXF1ZVJlZjsKIHRlbXBsYXRlPHR5cGVuYW1lLi4uPiBjbGFzcyBWYXJpYW50Owog
dGVtcGxhdGU8dHlwZW5hbWUsIHNpemVfdCA9IDAsIHR5cGVuYW1lID0gQ3Jhc2hPbk92ZXJmbG93
LCBzaXplX3QgPSAxNiwgdHlwZW5hbWUgTWFsbG9jID0gVmVjdG9yTWFsbG9jPiBjbGFzcyBWZWN0
b3I7CiB0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUgPSBFbXB0eUNvdW50ZXI+IGNsYXNzIFdl
YWtQdHI7Cit0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUgPSBFbXB0eUNvdW50ZXI+IGNsYXNz
IFdlYWtIYXNoU2V0OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IERlZmF1bHRIYXNoOwog
dGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8QXRvbVN0cmluZz47CkBAIC0xMzksNiArMTQw
LDcgQEAgdXNpbmcgV1RGOjpVUkw7CiB1c2luZyBXVEY6OlVuaXF1ZVJlZjsKIHVzaW5nIFdURjo6
VmFyaWFudDsKIHVzaW5nIFdURjo6VmVjdG9yOwordXNpbmcgV1RGOjpXZWFrSGFzaFNldDsKIAog
dGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gdXNpbmcgRXhwZWN0ZWQgPSBzdGQ6OmV4cGVyaW1l
bnRhbDo6ZXhwZWN0ZWQ8VCwgRT47CiB0ZW1wbGF0ZTxjbGFzcyBFPiB1c2luZyBVbmV4cGVjdGVk
ID0gc3RkOjpleHBlcmltZW50YWw6OnVuZXhwZWN0ZWQ8RT47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9XZWFrSGFzaFNldC5oIGIvU291cmNlL1dURi93dGYvV2Vha0hhc2hTZXQuaAppbmRl
eCBlOTcwOGRhZDhjMWJmNjY3MDU2ZDYxNzBhYjkyZWE3MTk1MjIzMjUyLi4yMDI0NDNiYmRhNjQ2
MWM1NmU1NjEwMmI0N2UwYzZkNmI3NGEwMDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9X
ZWFrSGFzaFNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dlYWtIYXNoU2V0LmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtMzksNyArNDAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBD
b3VudGVyPiBzdHJ1Y3QgSGFzaFRyYWl0czxSZWY8V2Vha1B0ckltcGw8Q291bnRlcj4+PiA6IFJl
ZkhhcwogICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvdW50ZXIg
PSBFbXB0eUNvdW50ZXI+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDb3VudGVyPgog
Y2xhc3MgV2Vha0hhc2hTZXQgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgpAQCAtMTgwLDcgKzE4MSw0IEBAIGlubGluZSBhdXRvIGNvcHlUb1ZlY3Rvcihjb25z
dCBXZWFrSGFzaFNldDxUPiYgY29sbGVjdGlvbikgLT4gVmVjdG9yPFdlYWtQdHI8VD4+CiAgICAg
cmV0dXJuIFdURjo6bWFwKGNvbGxlY3Rpb24sIFtdIChhdXRvJiB2KSAtPiBXZWFrUHRyPFQ+IHsg
cmV0dXJuIG1ha2VXZWFrUHRyPFQ+KHYpOyB9KTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBXVEYK
LQotdXNpbmcgV1RGOjpXZWFrSGFzaFNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGU4NjdmZGYwODliYmNkZDZlYmM0MDhmNmIzN2Vh
YjAzZTY4YWE0NGMuLmE4NTg3NzI4NDY3ODczM2Y2ZjU4NGIwZDE1NTY4MDRjYzFmNTYzNzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAt
MzA0MiwxNCArMzA0MiwxNCBAQCBjb25zdCBFbGVtZW50KiBBWE9iamVjdENhY2hlOjpyb290QVhF
ZGl0YWJsZUVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1zdGF0aWMgdm9pZCBjb25kaXRpb25hbGx5QWRkTm9kZVRvRmlsdGVyTGlzdChOb2RlKiBub2Rl
LCBjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIEhhc2hTZXQ8Tm9kZSo+JiBub2Rlc1RvUmVtb3Zl
KQorc3RhdGljIHZvaWQgY29uZGl0aW9uYWxseUFkZE5vZGVUb0ZpbHRlckxpc3QoTm9kZSogbm9k
ZSwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFrSGFzaFNldDxOb2RlPiYgbm9kZXNUb1Jl
bW92ZSkKIHsKICAgICBpZiAobm9kZSAmJiAoIW5vZGUtPmlzQ29ubmVjdGVkKCkgfHwgJm5vZGUt
PmRvY3VtZW50KCkgPT0gJmRvY3VtZW50KSkKICAgICAgICAgbm9kZXNUb1JlbW92ZS5hZGQobm9k
ZSk7CiB9CiAgICAgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RhdGljIHZvaWQgZmlsdGVyVmVj
dG9yUGFpckZvclJlbW92YWwoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxULCBUPj4mIGxpc3QsIGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCwgSGFzaFNldDxOb2RlKj4mIG5vZGVzVG9SZW1vdmUpCitz
dGF0aWMgdm9pZCBmaWx0ZXJWZWN0b3JQYWlyRm9yUmVtb3ZhbChjb25zdCBWZWN0b3I8c3RkOjpw
YWlyPFQsIFQ+PiYgbGlzdCwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFrSGFzaFNldDxO
b2RlPiYgbm9kZXNUb1JlbW92ZSkKIHsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbGlzdCkgewog
ICAgICAgICBjb25kaXRpb25hbGx5QWRkTm9kZVRvRmlsdGVyTGlzdChlbnRyeS5maXJzdCwgZG9j
dW1lbnQsIG5vZGVzVG9SZW1vdmUpOwpAQCAtMzA1OCwxNCArMzA1OCwxNCBAQCBzdGF0aWMgdm9p
ZCBmaWx0ZXJWZWN0b3JQYWlyRm9yUmVtb3ZhbChjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFQsIFQ+
PiYgbGlzdCwgY29ucwogfQogICAgIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4K
LXN0YXRpYyB2b2lkIGZpbHRlck1hcEZvclJlbW92YWwoY29uc3QgSGFzaE1hcDxULCBVPiYgbGlz
dCwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBIYXNoU2V0PE5vZGUqPiYgbm9kZXNUb1JlbW92
ZSkKK3N0YXRpYyB2b2lkIGZpbHRlck1hcEZvclJlbW92YWwoY29uc3QgSGFzaE1hcDxULCBVPiYg
bGlzdCwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFrSGFzaFNldDxOb2RlPiYgbm9kZXNU
b1JlbW92ZSkKIHsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbGlzdCkKICAgICAgICAgY29uZGl0
aW9uYWxseUFkZE5vZGVUb0ZpbHRlckxpc3QoZW50cnkua2V5LCBkb2N1bWVudCwgbm9kZXNUb1Jl
bW92ZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgdm9pZCBmaWx0ZXJMaXN0
Rm9yUmVtb3ZhbChjb25zdCBMaXN0SGFzaFNldDxUPiYgbGlzdCwgY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZW50LCBIYXNoU2V0PE5vZGUqPiYgbm9kZXNUb1JlbW92ZSkKK3N0YXRpYyB2b2lkIGZpbHRl
ckxpc3RGb3JSZW1vdmFsKGNvbnN0IExpc3RIYXNoU2V0PFQ+JiBsaXN0LCBjb25zdCBEb2N1bWVu
dCYgZG9jdW1lbnQsIFdlYWtIYXNoU2V0PE5vZGU+JiBub2Rlc1RvUmVtb3ZlKQogewogICAgIGZv
ciAoYXV0byogbm9kZSA6IGxpc3QpCiAgICAgICAgIGNvbmRpdGlvbmFsbHlBZGROb2RlVG9GaWx0
ZXJMaXN0KG5vZGUsIGRvY3VtZW50LCBub2Rlc1RvUmVtb3ZlKTsKQEAgLTMwNzMsNyArMzA3Myw3
IEBAIHN0YXRpYyB2b2lkIGZpbHRlckxpc3RGb3JSZW1vdmFsKGNvbnN0IExpc3RIYXNoU2V0PFQ+
JiBsaXN0LCBjb25zdCBEb2N1bWVudCYgZG9jCiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6cHJlcGFy
ZUZvckRvY3VtZW50RGVzdHJ1Y3Rpb24oY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAg
IEhhc2hTZXQ8Tm9kZSo+IG5vZGVzVG9SZW1vdmU7CisgICAgV2Vha0hhc2hTZXQ8Tm9kZT4gbm9k
ZXNUb1JlbW92ZTsKICAgICBmaWx0ZXJMaXN0Rm9yUmVtb3ZhbChtX3RleHRNYXJrZXJOb2Rlcywg
ZG9jdW1lbnQsIG5vZGVzVG9SZW1vdmUpOwogICAgIGZpbHRlckxpc3RGb3JSZW1vdmFsKG1fbW9k
YWxFbGVtZW50c1NldCwgZG9jdW1lbnQsIG5vZGVzVG9SZW1vdmUpOwogICAgIGZpbHRlckxpc3RG
b3JSZW1vdmFsKG1fZGVmZXJyZWRUZXh0Q2hhbmdlZExpc3QsIGRvY3VtZW50LCBub2Rlc1RvUmVt
b3ZlKTsKQEAgLTMwODIsOCArMzA4Miw4IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cHJlcGFyZUZv
ckRvY3VtZW50RGVzdHJ1Y3Rpb24oY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIGZpbHRl
ck1hcEZvclJlbW92YWwobV9kZWZlcnJlZEF0dHJpYnV0ZUNoYW5nZSwgZG9jdW1lbnQsIG5vZGVz
VG9SZW1vdmUpOwogICAgIGZpbHRlclZlY3RvclBhaXJGb3JSZW1vdmFsKG1fZGVmZXJyZWRGb2N1
c2VkTm9kZUNoYW5nZSwgZG9jdW1lbnQsIG5vZGVzVG9SZW1vdmUpOwogICAgIAotICAgIGZvciAo
YXV0byogbm9kZSA6IG5vZGVzVG9SZW1vdmUpCi0gICAgICAgIHJlbW92ZSgqbm9kZSk7CisgICAg
Zm9yIChhdXRvJiBub2RlIDogbm9kZXNUb1JlbW92ZSkKKyAgICAgICAgcmVtb3ZlKG5vZGUpOwog
fQogICAgIAogYm9vbCBBWE9iamVjdENhY2hlOjpub2RlSXNUZXh0Q29udHJvbChjb25zdCBOb2Rl
KiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlv
bk9ic2VydmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRp
b25PYnNlcnZlckN1c3RvbS5jcHAKaW5kZXggMTk1YWQwMTVjZDU5OWI0NTYxYWU1ZWExMGZjMDkz
NDY2NzRiZjU1Ny4uZWE2NzI0YzEzYzc1OTA1ZjAzNGEwOTVjYTg0MTBmZjA4YjdhNzJkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2
ZXJDdXN0b20uY3BwCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgSlNNdXRhdGlvbk9ic2VydmVyOjp2
aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiBib29s
IEpTTXV0YXRpb25PYnNlcnZlck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9y
LCBjb25zdCBjaGFyKipyZWFzb24pCiB7Ci0gICAgZm9yIChhdXRvKiBub2RlIDoganNDYXN0PEpT
TXV0YXRpb25PYnNlcnZlcio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKS0+d3JhcHBlZCgpLm9i
c2VydmVkTm9kZXMoKSkgeworICAgIGZvciAoYXV0byYgbm9kZSA6IGpzQ2FzdDxKU011dGF0aW9u
T2JzZXJ2ZXIqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSktPndyYXBwZWQoKS5vYnNlcnZlZE5v
ZGVzKCkpIHsKICAgICAgICAgaWYgKHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3Qobm9k
ZSkpKSB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkocmVhc29uKSkKICAgICAgICAgICAgICAg
ICAqcmVhc29uID0gIlJlYWNoYWJsZSBmcm9tIG9ic2VydmVkIG5vZGVzIjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCBhNGFjMGViN2U1NzE3N2NmMDQyMzdlNmE5
MjNjYzUwMzA2ZTJiYmQ2Li5jMWQ5YWNlZjNmM2UyNjc3MDMyNDJhZmFiNjIxOWY2YTY4NGJkMWZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC0xNjksOSArMTY5
LDkgQEAgdm9pZCBNdXRhdGlvbk9ic2VydmVyOjpzZXRIYXNUcmFuc2llbnRSZWdpc3RyYXRpb24o
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgIGV2ZW50TG9vcC0+cXVldWVNdXRhdGlvbk9ic2VydmVy
Q29tcG91bmRNaWNyb3Rhc2soKTsKIH0KIAotSGFzaFNldDxOb2RlKj4gTXV0YXRpb25PYnNlcnZl
cjo6b2JzZXJ2ZWROb2RlcygpIGNvbnN0CitXZWFrSGFzaFNldDxOb2RlPiBNdXRhdGlvbk9ic2Vy
dmVyOjpvYnNlcnZlZE5vZGVzKCkgY29uc3QKIHsKLSAgICBIYXNoU2V0PE5vZGUqPiBvYnNlcnZl
ZE5vZGVzOworICAgIFdlYWtIYXNoU2V0PE5vZGU+IG9ic2VydmVkTm9kZXM7CiAgICAgZm9yIChh
dXRvKiByZWdpc3RyYXRpb24gOiBtX3JlZ2lzdHJhdGlvbnMpCiAgICAgICAgIHJlZ2lzdHJhdGlv
bi0+YWRkUmVnaXN0cmF0aW9uTm9kZXNUb1NldChvYnNlcnZlZE5vZGVzKTsKICAgICByZXR1cm4g
b2JzZXJ2ZWROb2RlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9i
c2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5oCmluZGV4IDQ3
N2YwZjkzZDI2ZmYzZjk3MDFlODdjMmI4YmYxZDMyNmU3ZWQ5MjYuLmI0YWM1YjIyMjRiYTJlMjRj
YjBhOGM3MDhlMzk4OTk0ZDNlYWRjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
dXRhdGlvbk9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2
ZXIuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc1RyYW5zaWVu
dFJlZ2lzdHJhdGlvbihEb2N1bWVudCYpOwogICAgIGJvb2wgY2FuRGVsaXZlcigpOwogCi0gICAg
SGFzaFNldDxOb2RlKj4gb2JzZXJ2ZWROb2RlcygpIGNvbnN0OworICAgIFdlYWtIYXNoU2V0PE5v
ZGU+IG9ic2VydmVkTm9kZXMoKSBjb25zdDsKIAogICAgIE11dGF0aW9uQ2FsbGJhY2smIGNhbGxi
YWNrKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFjay5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggMGVj
YjA1YjQ4ODYwYzc3NzE0MThkOGJmOWQyNjEyOTNhODg2NWFlMy4uMzgzODkzMDc3YzBjNmQzOWMw
MmI3NTllZWNhOGE0OWE0NTI5ODI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011
dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
dXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wg
TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6c2hvdWxkUmVjZWl2ZU11dGF0aW9uRnJvbShO
b2RlJiBub2RlLCBNdXRhdGlvCiAgICAgcmV0dXJuIG1fYXR0cmlidXRlRmlsdGVyLmNvbnRhaW5z
KGF0dHJpYnV0ZU5hbWUtPmxvY2FsTmFtZSgpKTsKIH0KIAotdm9pZCBNdXRhdGlvbk9ic2VydmVy
UmVnaXN0cmF0aW9uOjphZGRSZWdpc3RyYXRpb25Ob2Rlc1RvU2V0KEhhc2hTZXQ8Tm9kZSo+JiBu
b2RlcykgY29uc3QKK3ZvaWQgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6YWRkUmVnaXN0
cmF0aW9uTm9kZXNUb1NldChXZWFrSGFzaFNldDxOb2RlPiYgbm9kZXMpIGNvbnN0CiB7CiAgICAg
bm9kZXMuYWRkKCZtX25vZGUpOwogICAgIGlmICghbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2Rl
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0
cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlv
bi5oCmluZGV4IGU2OTQwNDgzYTMxM2M4ZmQxYmQxNmRjMTdjYjk2YjEzYWNkMjJhM2EuLjQyM2U1
NjgxOTYzYTdiOTU1Y2QyMWNmODU3MTc3ZjE4NWQwOWMyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaApAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAgICAgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgZGVsaXZlcnlPcHRp
b25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zICYgKE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJp
YnV0ZU9sZFZhbHVlIHwgTXV0YXRpb25PYnNlcnZlcjo6Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKTsg
fQogICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIG11dGF0aW9uVHlwZXMoKSBjb25zdCB7IHJl
dHVybiBtX29wdGlvbnMgJiBNdXRhdGlvbk9ic2VydmVyOjpBbGxNdXRhdGlvblR5cGVzOyB9CiAK
LSAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbk5vZGVzVG9TZXQoSGFzaFNldDxOb2RlKj4mKSBjb25z
dDsKKyAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbk5vZGVzVG9TZXQoV2Vha0hhc2hTZXQ8Tm9kZT4m
KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBSZWY8TXV0YXRpb25PYnNlcnZlcj4gbV9vYnNlcnZl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAppbmRleCA0NmIxYWRhMjI2ZDhjMjRjYzUzYzY3YjgxN2NjNDQ2ZDgz
NGZkMjdiLi4yOTBhODI1MTc0YzhiNTI1ZmNhZTczY2VjNmI0MGFkMDU4ZTJjMjEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCkBAIC05NSw5ICs5NSw5IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChO
b2RlKTsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKICNpZiBEVU1QX05PREVfU1RBVElT
VElDUwotc3RhdGljIEhhc2hTZXQ8Tm9kZSo+JiBsaXZlTm9kZVNldCgpCitzdGF0aWMgV2Vha0hh
c2hTZXQ8Tm9kZT4mIGxpdmVOb2RlU2V0KCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaFNldDxOb2RlKj4+IGxpdmVOb2RlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2Vh
a0hhc2hTZXQ8Tm9kZT4+IGxpdmVOb2RlczsKICAgICByZXR1cm4gbGl2ZU5vZGVzOwogfQogCkBA
IC0yOTUsOSArMjk1LDkgQEAgREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRl
ZExlYWtDb3VudGVyLCBub2RlQ291bnRlciwgKCJXZWJDb3JlTm9kZSIKICNpZm5kZWYgTkRFQlVH
CiBzdGF0aWMgYm9vbCBzaG91bGRJZ25vcmVMZWFrcyA9IGZhbHNlOwogCi1zdGF0aWMgSGFzaFNl
dDxOb2RlKj4mIGlnbm9yZVNldCgpCitzdGF0aWMgV2Vha0hhc2hTZXQ8Tm9kZT4mIGlnbm9yZVNl
dCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8Tm9kZSo+PiBpZ25vcmU7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYWtIYXNoU2V0PE5vZGU+PiBpZ25vcmU7CiAK
ICAgICByZXR1cm4gaWdub3JlOwogfQpAQCAtMzUzLDcgKzM1Myw3IEBAIE5vZGU6On5Ob2RlKCkK
ICAgICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKIAogI2lmbmRlZiBOREVCVUcKLSAg
ICBpZiAoIWlnbm9yZVNldCgpLnJlbW92ZSh0aGlzKSkKKyAgICBpZiAoIWlnbm9yZVNldCgpLnJl
bW92ZSgqdGhpcykpCiAgICAgICAgIG5vZGVDb3VudGVyLmRlY3JlbWVudCgpOwogI2VuZGlmCiAK
QEAgLTM3MSw3ICszNzEsNyBAQCBOb2RlOjp+Tm9kZSgpCiAKICAgICBhdXRvKiB0ZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlciA9IGRvY3VtZW50KCkudGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXJJ
ZkV4aXN0cygpOwogICAgIGlmIChVTkxJS0VMWSh0ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcikp
Ci0gICAgICAgIHRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLT5yZW1vdmVOb2RlKHRoaXMpOwor
ICAgICAgICB0ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci0+cmVtb3ZlTm9kZSgqdGhpcyk7CiAK
ICAgICBpZiAoIWlzQ29udGFpbmVyTm9kZSgpKQogICAgICAgICB3aWxsQmVEZWxldGVkRnJvbShk
b2N1bWVudCgpKTsKQEAgLTIwNjcsNyArMjA2Nyw3IEBAIHZvaWQgTm9kZTo6bW92ZU5vZGVUb05l
d0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQog
CiAgICAgYXV0byogdGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIgPSBvbGREb2N1bWVudC50ZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlcklmRXhpc3RzKCk7CiAgICAgaWYgKFVOTElLRUxZKHRleHRN
YW5pcHVsYXRpb25Db250cm9sbGVyKSkKLSAgICAgICAgdGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xs
ZXItPnJlbW92ZU5vZGUodGhpcyk7CisgICAgICAgIHRleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
LT5yZW1vdmVOb2RlKCp0aGlzKTsKIAogICAgIGlmIChhdXRvKiBldmVudFRhcmdldERhdGEgPSB0
aGlzLT5ldmVudFRhcmdldERhdGEoKSkgewogICAgICAgICBpZiAoIWV2ZW50VGFyZ2V0RGF0YS0+
ZXZlbnRMaXN0ZW5lck1hcC5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQXBwZW5kTm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
cHBlbmROb2RlQ29tbWFuZC5jcHAKaW5kZXggMmQ1OThmY2JiMjFjZTIxNjNjNWJjMjg3YjlhMDcz
NTZiNDI1YTI5OS4uM2VkYjFjYjdmZjEyMDZiZWQ3YmFmMjNkODRkMjEwODRkZDk1OTgwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5jcHAKQEAgLTYwLDcg
KzYwLDcgQEAgdm9pZCBBcHBlbmROb2RlQ29tbWFuZDo6ZG9VbmFwcGx5KCkKIH0KIAogI2lmbmRl
ZiBOREVCVUcKLXZvaWQgQXBwZW5kTm9kZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hT
ZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgQXBwZW5kTm9kZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21t
YW5kKFdlYWtIYXNoU2V0PE5vZGU+JiBub2RlcykKIHsKICAgICBhZGROb2RlQW5kRGVzY2VuZGFu
dHMobV9wYXJlbnQucHRyKCksIG5vZGVzKTsKICAgICBhZGROb2RlQW5kRGVzY2VuZGFudHMobV9u
b2RlLnB0cigpLCBub2Rlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Fw
cGVuZE5vZGVDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5vZGVDb21t
YW5kLmgKaW5kZXggM2NkOTE0NDMyMmM4NTg4NjU0YjljMjZmNWYyNzliZDk3NWRlMzkzOS4uZTc0
MjJmYmQ5MzliZGRmYTVlNTA4ZDBjM2U3NDhhNzY5YjkyMWQxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQXBwZW5kTm9kZUNvbW1hbmQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZG9VbmFwcGx5KCkgb3ZlcnJpZGU7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9p
ZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQg
Z2V0Tm9kZXNJbkNvbW1hbmQoV2Vha0hhc2hTZXQ8Tm9kZT4mKSBvdmVycmlkZTsKICNlbmRpZgog
CiAgICAgUmVmPENvbnRhaW5lck5vZGU+IG1fcGFyZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCBiYzY4ZDE5OTNhMmU0ZmMzZjk1
ZDIwNjg2OGE5YzIyZjVjYzg4ZmEyLi41OWFmYjlkYzUzMzZhNDQxNDYzNjBjODM4OWFlNTBhNzI4
MzE3ZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcApAQCAtMjk3LDcgKzI5Nyw3IEBAIHZvaWQgRWRpdENvbW1hbmRDb21wb3NpdGlvbjo6
c2V0UmFuZ2VEZWxldGVkQnlVbmFwcGx5KGNvbnN0IFZpc2libGVQb3NpdGlvbkluZGV4CiB9CiAK
ICNpZm5kZWYgTkRFQlVHCi12b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRpb246OmdldE5vZGVzSW5D
b21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgRWRpdENvbW1hbmRDb21wb3NpdGlv
bjo6Z2V0Tm9kZXNJbkNvbW1hbmQoV2Vha0hhc2hTZXQ8Tm9kZT4mIG5vZGVzKQogewogICAgIGZv
ciAoYXV0byYgY29tbWFuZCA6IG1fY29tbWFuZHMpCiAgICAgICAgIGNvbW1hbmQtPmdldE5vZGVz
SW5Db21tYW5kKG5vZGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuaAppbmRleCA0MjY4MTk2Zjg5MmFmMzA1NTEwM2M0ODcyZmU4ZWNiZGQ1ZjExYWQy
Li4wYjA4YWZkMzlkMmI3YTY0M2YyOTFmOWJiMWFiZTUyZmY3MjM4YTM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCkBAIC04Myw3ICs4Myw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFJhbmdlRGVsZXRlZEJ5VW5hcHBseShjb25zdCBWaXNpYmxl
UG9zaXRpb25JbmRleFJhbmdlJik7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdmlydHVhbCB2b2lk
IGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jik7CisgICAgdmlydHVhbCB2b2lkIGdl
dE5vZGVzSW5Db21tYW5kKFdlYWtIYXNoU2V0PE5vZGU+Jik7CiAjZW5kaWYKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUZyb21UZXh0Tm9kZUNvbW1h
bmQuY3BwCmluZGV4IGRlZjhhZmQ5ODgxOGNjM2ZiNzdmNmU1MmZkN2Y4YjQyZDllODNjNzUuLmI5
YmFhOTUxNTAwZTMxMzQ2ZDdkNGQwMjQyNDY0Yjg1MzE3NzhkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmNwcApAQCAtNjMs
NyArNjMsNyBAQCB2b2lkIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQ6OmRvVW5hcHBseSgpCiB9
CiAKICNpZm5kZWYgTkRFQlVHCi12b2lkIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQ6OmdldE5v
ZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgRGVsZXRlRnJvbVRleHRO
b2RlQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQoV2Vha0hhc2hTZXQ8Tm9kZT4mIG5vZGVzKQog
ewogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX25vZGUucHRyKCksIG5vZGVzKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFu
ZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmgK
aW5kZXggZGExZGY2YjEwMjkwMmIyMmIzMDE3OGM2MjBiMzkwZGZkYzYwMjQyMC4uODU1ZWYxMjU0
MWYwMTU3NTQ1ODZjZWU0ZTdlODMzNjcwZWQ1NmZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmgKQEAgLTQ2LDcgKzQ2LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOwogICAgIAogI2lmbmRlZiBO
REVCVUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChXZWFrSGFzaFNldDxOb2RlPiYpIG92ZXJy
aWRlOwogI2VuZGlmCiAgICAgCiAgICAgUmVmPFRleHQ+IG1fbm9kZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0Q29tbWFuZC5jcHAKaW5kZXggMWY1YjZhY2I5ZGIxODhlYTY5MGY2MDA1NmM3NzM3
NzAwZTJiOGY0NS4uNjA3MDNkNWJlNWY4ODg4MmI0NzhkNTBkMDhjM2VlMWRmZGFlMGFlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAKQEAgLTIyNSw3ICsyMjUsNyBAQCB2
b2lkIFNpbXBsZUVkaXRDb21tYW5kOjpkb1JlYXBwbHkoKQogfQogCiAjaWZuZGVmIE5ERUJVRwot
dm9pZCBTaW1wbGVFZGl0Q29tbWFuZDo6YWRkTm9kZUFuZERlc2NlbmRhbnRzKE5vZGUqIHN0YXJ0
Tm9kZSwgSGFzaFNldDxOb2RlKj4mIG5vZGVzKQordm9pZCBTaW1wbGVFZGl0Q29tbWFuZDo6YWRk
Tm9kZUFuZERlc2NlbmRhbnRzKE5vZGUqIHN0YXJ0Tm9kZSwgV2Vha0hhc2hTZXQ8Tm9kZT4mIG5v
ZGVzKQogewogICAgIGZvciAoTm9kZSogbm9kZSA9IHN0YXJ0Tm9kZTsgbm9kZTsgbm9kZSA9IE5v
ZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUsIHN0YXJ0Tm9kZSkpCiAgICAgICAgIG5vZGVzLmFkZChu
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaAppbmRleCAyZjY3Y2Q3MzM0YzJj
OGJkNTY5MGYxMTM1YzEwZDAwMGRjMzA0M2RjLi42ZWY3ZjE1OTY4NzZjNWY1ZDlhYWQ5MmZmNjRi
OTgxNDZkNWZkM2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21t
YW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCkBAIC05Mywx
NCArOTMsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkb1JlYXBwbHkoKTsgLy8gY2Fs
bHMgZG9BcHBseSgpCiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdmlydHVhbCB2b2lkIGdldE5vZGVz
SW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXROb2Rl
c0luQ29tbWFuZChXZWFrSGFzaFNldDxOb2RlPiYpID0gMDsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6
CiAgICAgZXhwbGljaXQgU2ltcGxlRWRpdENvbW1hbmQoRG9jdW1lbnQmLCBFZGl0QWN0aW9uID0g
RWRpdEFjdGlvbjo6VW5zcGVjaWZpZWQpOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIHZvaWQgYWRk
Tm9kZUFuZERlc2NlbmRhbnRzKE5vZGUqLCBIYXNoU2V0PE5vZGUqPiYpOworICAgIHZvaWQgYWRk
Tm9kZUFuZERlc2NlbmRhbnRzKE5vZGUqLCBXZWFrSGFzaFNldDxOb2RlPiYpOwogI2VuZGlmCiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9U
ZXh0Tm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4
dE5vZGVDb21tYW5kLmNwcAppbmRleCBkZjAxODI2ZjM5M2EwMmU5YmMwMzQzMjRlZjhjZDM4ZGJh
YzNmZmRjLi42NTg0NmEyOWYzYWZhMzA5N2M3YmVmZTA4YWE0NTdhMGUyMWU1ZTU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5j
cHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kOjpkb1Vu
YXBwbHkoKQogCiAjaWZuZGVmIE5ERUJVRwogCi12b2lkIEluc2VydEludG9UZXh0Tm9kZUNvbW1h
bmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgSW5zZXJ0
SW50b1RleHROb2RlQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQoV2Vha0hhc2hTZXQ8Tm9kZT4m
IG5vZGVzKQogewogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX25vZGUucHRyKCksIG5vZGVz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHRO
b2RlQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVD
b21tYW5kLmgKaW5kZXggMjM2ZGQ2ZjUyODA4NzIxNTk3YzdmMWQ0ZWNjNDBmODUxY2M5OGE4ZS4u
YTVlMGM3NjEzMjhkNTQyN2E4NGJmMzExNzlmMzQ3ZjdmNTU3ZTExNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmgKQEAgLTQ5LDcg
KzQ5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvUmVhcHBseSgpIG92ZXJyaWRlOwogICAgIAog
I2lmbmRlZiBOREVCVUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChXZWFrSGFzaFNldDxOb2Rl
PiYpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgCiAgICAgUmVmPFRleHQ+IG1fbm9kZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5jcHAKaW5k
ZXggZjA0MzVlNzQ3NzAxNmI1MGYyNzBmYWQzNDhmMDFjYmQ0M2M0YmMzYS4uODNjZmU1ZWEyZDA4
OGJmZjViMjQ0MjM2MGMwYTEwOGRjODVkNjc5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9p
ZCBJbnNlcnROb2RlQmVmb3JlQ29tbWFuZDo6ZG9VbmFwcGx5KCkKIH0KIAogI2lmbmRlZiBOREVC
VUcKLXZvaWQgSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hT
ZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQ6OmdldE5vZGVz
SW5Db21tYW5kKFdlYWtIYXNoU2V0PE5vZGU+JiBub2RlcykKIHsKICAgICBhZGROb2RlQW5kRGVz
Y2VuZGFudHMobV9pbnNlcnRDaGlsZC5wdHIoKSwgbm9kZXMpOwogICAgIGFkZE5vZGVBbmREZXNj
ZW5kYW50cyhtX3JlZkNoaWxkLnB0cigpLCBub2Rlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmgKaW5kZXggMjVkMzQzYzhlMTMzMTY0MThl
NzQwMGFkYzgyNWEwZjhjZTUxNjY3Yi4uNTc3YzhmZWIyZTk4ZjZiOWNiMGE4ZDNjODY1OTQxZjNl
NjdlYjBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnROb2RlQmVm
b3JlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9y
ZUNvbW1hbmQuaApAQCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZG9VbmFwcGx5
KCkgb3ZlcnJpZGU7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFu
ZChIYXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQo
V2Vha0hhc2hTZXQ8Tm9kZT4mKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgUmVmPE5vZGU+IG1f
aW5zZXJ0Q2hpbGQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRl
bnRpY2FsRWxlbWVudHNDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJ
ZGVudGljYWxFbGVtZW50c0NvbW1hbmQuY3BwCmluZGV4IGQ2MWRlYjdmODFhODEyNzE3MTA5Nzg0
YjgxNmNiMzg2ZDE4YjdiYTIuLjIwODQ0YzVmMmQzODViMjYzYjdiNzk1MzkzZDgwNmE1ZTc3YzYx
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVt
ZW50c0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGlj
YWxFbGVtZW50c0NvbW1hbmQuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgTWVyZ2VJZGVudGlj
YWxFbGVtZW50c0NvbW1hbmQ6OmRvVW5hcHBseSgpCiB9CiAKICNpZm5kZWYgTkRFQlVHCi12b2lk
IE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0
PE5vZGUqPiYgbm9kZXMpCit2b2lkIE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpnZXRO
b2Rlc0luQ29tbWFuZChXZWFrSGFzaFNldDxOb2RlPiYgbm9kZXMpCiB7CiAgICAgYWRkTm9kZUFu
ZERlc2NlbmRhbnRzKG1fZWxlbWVudDEucHRyKCksIG5vZGVzKTsKICAgICBhZGROb2RlQW5kRGVz
Y2VuZGFudHMobV9lbGVtZW50Mi5wdHIoKSwgbm9kZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5oCmluZGV4IDk3YTc3
MzJjNDNmNzlmM2Y3NjJmMjZkYzUzNTBmNmU4Y2VkOWUxN2UuLmE0NGI1N2U1Njk0MmFjNjRiMzZk
NmU1OTk5M2ZjOTNjYmQ0ZGNiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
TWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOwogICAgIAogI2lmbmRlZiBOREVC
VUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikgb3ZlcnJpZGU7
CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChXZWFrSGFzaFNldDxOb2RlPiYpIG92ZXJyaWRl
OwogI2VuZGlmCiAgICAgCiAgICAgUmVmPEVsZW1lbnQ+IG1fZWxlbWVudDE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwCmluZGV4IGUzNjU3YzQ1NTRiMTQ3
NzNkNjY0ZGY3NTU1NmE4MDM2NWM4MjMzNmQuLjQ2MjNjZWUyMzE1ZTkzMTQ3NTI1NmRhNDNhZTg1
MDE4ZWQzZDFkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9k
ZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1h
bmQuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgUmVtb3ZlTm9kZUNvbW1hbmQ6OmRvVW5hcHBs
eSgpCiB9CiAKICNpZm5kZWYgTkRFQlVHCi12b2lkIFJlbW92ZU5vZGVDb21tYW5kOjpnZXROb2Rl
c0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYgbm9kZXMpCit2b2lkIFJlbW92ZU5vZGVDb21tYW5k
OjpnZXROb2Rlc0luQ29tbWFuZChXZWFrSGFzaFNldDxOb2RlPiYgbm9kZXMpCiB7CiAgICAgYWRk
Tm9kZUFuZERlc2NlbmRhbnRzKG1fcGFyZW50LmdldCgpLCBub2Rlcyk7CiAgICAgYWRkTm9kZUFu
ZERlc2NlbmRhbnRzKG1fcmVmQ2hpbGQuZ2V0KCksIG5vZGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuaAppbmRleCAzMTZlMmE0OTc3NjcwNTk0OGUxNTY0MjU5
ZDVkMmIxNjNlZGQxNzIwLi5lMmM1NmUxZWIzNmJiOWY3NDkwYmUyODVlMTlhMTJjM2RhY2QyMWE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5oCkBAIC00Myw3
ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1VuYXBwbHkoKSBvdmVycmlkZTsKIAogI2lm
bmRlZiBOREVCVUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChXZWFrSGFzaFNldDxOb2RlPiYp
IG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBSZWY8Tm9kZT4gbV9ub2RlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcAppbmRl
eCA3MzRlMDNjOWJkMTBiMDc1MDliOTg0ZThhYzIzNjU2ZTZlZTA0OWI0Li45ZTVhYjA2ODA5OWI1
NjZmNzMzNDJjN2QxY2E2YTkwYTIwMGM3NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcApAQCAtNzQsNyArNzQsNyBA
QCB2b2lkIFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kOjpkb1VuYXBwbHkoKQogfQogCiAjaWZu
ZGVmIE5ERUJVRwotdm9pZCBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZDo6Z2V0Tm9kZXNJbkNv
bW1hbmQoSGFzaFNldDxOb2RlKj4mIG5vZGVzKQordm9pZCBSZXBsYWNlTm9kZVdpdGhTcGFuQ29t
bWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQoV2Vha0hhc2hTZXQ8Tm9kZT4mIG5vZGVzKQogewogICAg
IGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX2VsZW1lbnRUb1JlcGxhY2UucHRyKCksIG5vZGVzKTsK
ICAgICBhZGROb2RlQW5kRGVzY2VuZGFudHMobV9zcGFuRWxlbWVudC5nZXQoKSwgbm9kZXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29t
bWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFu
ZC5oCmluZGV4IGU1ZDMwZmM1ZjI3MTYwZGZjNzdmYjk5NTk0YzBiYmRjNjA2OTkwYzMuLjUzYWQ5
ZGI4YWRmZWFhOWZjMTkxNmMxNDE0NGJiMmQyZjYyMDhlM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmgKQEAgLTUzLDcgKzUz
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOwogICAgIAogI2lm
bmRlZiBOREVCVUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChXZWFrSGFzaFNldDxOb2RlPiYp
IG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBSZWY8SFRNTEVsZW1lbnQ+IG1fZWxlbWVudFRvUmVw
bGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0Tm9kZUF0dHJpYnV0
ZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29t
bWFuZC5jcHAKaW5kZXggODBjMTQ2YTE4NDBlOGU0Zjg5NGM4NmZiZmI2NGE2NWYyMWI5YjgwZS4u
Mzk2ZWQ1NzBiMGRjYTVjMTRhZmYxOWE2MDJjNTFlNDliY2ZlYTU4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHAKQEAgLTUzLDcg
KzUzLDcgQEAgdm9pZCBTZXROb2RlQXR0cmlidXRlQ29tbWFuZDo6ZG9VbmFwcGx5KCkKIH0KIAog
I2lmbmRlZiBOREVCVUcKLXZvaWQgU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQ6OmdldE5vZGVzSW5D
b21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgU2V0Tm9kZUF0dHJpYnV0ZUNvbW1h
bmQ6OmdldE5vZGVzSW5Db21tYW5kKFdlYWtIYXNoU2V0PE5vZGU+JiBub2RlcykKIHsKICAgICBh
ZGROb2RlQW5kRGVzY2VuZGFudHMobV9lbGVtZW50LnB0cigpLCBub2Rlcyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmggYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmgKaW5kZXggZGU1
MTJjNTBlNzI3MGUwNDljNDhhZWNkMWNmNzdkOWE1Yjg3M2VkMC4uMTk0ZWJjODE0MDhmM2EzZmRh
MTRkNTcxZjhiNDQ2Njc0MTk2YzkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZG9VbmFwcGx5KCkgb3ZlcnJpZGU7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBn
ZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0
Tm9kZXNJbkNvbW1hbmQoV2Vha0hhc2hTZXQ8Tm9kZT4mKSBvdmVycmlkZTsKICNlbmRpZgogCiAg
ICAgUmVmPEVsZW1lbnQ+IG1fZWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU2V0U2VsZWN0aW9uQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRT
ZWxlY3Rpb25Db21tYW5kLmgKaW5kZXggZjZjOWYwNjMwYjVmZjFiOGJhMWNkNTkyNGNlZDE1Y2Mz
OWEzZmJiZS4uNzdlMDNhN2EzMTQ0ZjExMWY3MjkwOGY1OTM5YWM1YTFhYTgzMmJkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmgKQEAgLTQ0LDcgKzQ0
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOwogCiAjaWZuZGVm
IE5ERUJVRwotICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mKSBvdmVy
cmlkZSB7IH0KKyAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKFdlYWtIYXNoU2V0PE5vZGU+Jikg
b3ZlcnJpZGUgeyB9CiAjZW5kaWYKIAogICAgIE9wdGlvblNldDxGcmFtZVNlbGVjdGlvbjo6U2V0
U2VsZWN0aW9uT3B0aW9uPiBtX29wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcAppbmRleCBhODQ4NjYzNjUzYTBmN2Zm
Mjk3MzczNmIxMTk3MmM4YzY0YzhjYWFkLi40Mzk4YjU0MzUxZDE4NzljZmViZTJkNTY4MmRjYmU3
ZDdkM2ZjNmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29y
cmVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB9CiAK
ICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUq
PiYpIG92ZXJyaWRlCisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChXZWFrSGFzaFNldDxOb2Rl
PiYpIG92ZXJyaWRlCiAgICAgewogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAKaW5kZXggZDIxYmNmMDlkZWVlNjVhMTY4MzUz
MWYzNDhhZjRkZDNmOWQ5NmE4NC4uZTA3ZjM3OGJjYzRkNzE5NDY3MWM2MDNhMDdmMDNhN2UwZmRm
NDJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21t
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQu
Y3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBTcGxpdEVsZW1lbnRDb21tYW5kOjpkb1JlYXBw
bHkoKQogfQogCiAjaWZuZGVmIE5ERUJVRwotdm9pZCBTcGxpdEVsZW1lbnRDb21tYW5kOjpnZXRO
b2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYgbm9kZXMpCit2b2lkIFNwbGl0RWxlbWVudENv
bW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKFdlYWtIYXNoU2V0PE5vZGU+JiBub2RlcykKIHsKICAg
ICBhZGROb2RlQW5kRGVzY2VuZGFudHMobV9lbGVtZW50MS5nZXQoKSwgbm9kZXMpOwogICAgIGFk
ZE5vZGVBbmREZXNjZW5kYW50cyhtX2VsZW1lbnQyLnB0cigpLCBub2Rlcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5oCmluZGV4IDk4MzE2NTFiMDAwYWE3
NTRkYmZiNjE3MDQ3NmQ3Y2NjNzQzOTBlZjIuLmZjYjZkZWQxYWYxYzc2YTk5OTkwYWE1MzU4N2Y1
ZDY4NGU0NWNiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVt
ZW50Q29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29t
bWFuZC5oCkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBleGVjdXRlQXBwbHko
KTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8
Tm9kZSo+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChXZWFrSGFzaFNl
dDxOb2RlPiYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBSZWZQdHI8RWxlbWVudD4gbV9lbGVt
ZW50MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRUZXh0Tm9kZUNv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5j
cHAKaW5kZXggNzNkNjA5Y2FjOThlMWU1MjgyN2JmYzNhN2EzN2UyYzg1YjFkZmUxZC4uZjc1MTAx
MzhmOWUxYTRkOGU1NjRjMjdhNTMyMjNiYzFjYWE3MTZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2
b2lkIFNwbGl0VGV4dE5vZGVDb21tYW5kOjppbnNlcnRUZXh0MUFuZFRyaW1UZXh0MigpCiAKICNp
Zm5kZWYgTkRFQlVHCiAKLXZvaWQgU3BsaXRUZXh0Tm9kZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21t
YW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgU3BsaXRUZXh0Tm9kZUNvbW1hbmQ6Omdl
dE5vZGVzSW5Db21tYW5kKFdlYWtIYXNoU2V0PE5vZGU+JiBub2RlcykKIHsKICAgICBhZGROb2Rl
QW5kRGVzY2VuZGFudHMobV90ZXh0MS5nZXQoKSwgbm9kZXMpOwogICAgIGFkZE5vZGVBbmREZXNj
ZW5kYW50cyhtX3RleHQyLnB0cigpLCBub2Rlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NwbGl0VGV4dE5vZGVDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NwbGl0VGV4dE5vZGVDb21tYW5kLmgKaW5kZXggYjk5MTlkNjcwODcxOTIyMjljMDVjMzg3M2Zm
OWYyMDEyOTEyOGZkMC4uYzMxZTRkYTI3YjU5MTYxOTlhOTJjNTFkNzZiYTNiNmEyY2M3ZmRmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQuaApAQCAt
NDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5zZXJ0VGV4dDFBbmRUcmltVGV4dDIo
KTsKICAgICAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNo
U2V0PE5vZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoV2Vha0hh
c2hTZXQ8Tm9kZT4mKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgUmVmUHRyPFRleHQ+IG1fdGV4
dDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXIuY3BwCmluZGV4IDZlZjlmZTBhYTYyOTY5OTcwNTBhZDJhNjAxZWYxYTk2YTAyZTIy
YzQuLjY1ZmQ1YjVjNTM1MDQ5ZDY5NjU3MjI3N2M1NTIyMzNmMzA5NDBjNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3Bw
CkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6b2Jz
ZXJ2ZVBhcmFncmFwaHMoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdAogICAgICAgICAgICAg
ZW5jbG9zaW5nSXRlbUJvdW5kYXJ5RWxlbWVudHMucmVtb3ZlTGFzdCgpOwogICAgICAgICB9CiAK
LSAgICAgICAgaWYgKG1fbWFuaXB1bGF0ZWROb2Rlcy5jb250YWlucyhjb250ZW50Tm9kZSkpIHsK
KyAgICAgICAgaWYgKGNvbnRlbnROb2RlICYmIG1fbWFuaXB1bGF0ZWROb2Rlcy5jb250YWlucygq
Y29udGVudE5vZGUpKSB7CiAgICAgICAgICAgICBhZGRJdGVtSWZQb3NzaWJsZShzdGQ6OmV4Y2hh
bmdlKHVuaXRzSW5DdXJyZW50UGFyYWdyYXBoLCB7IH0pKTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlcjo6b2JzZXJ2ZVBhcmFncmFwaHMoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdAog
CiB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpkaWRDcmVhdGVSZW5kZXJlckZvckVs
ZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBpZiAobV9tYW5pcHVsYXRlZE5vZGVzLmNv
bnRhaW5zKCZlbGVtZW50KSkKKyAgICBpZiAobV9tYW5pcHVsYXRlZE5vZGVzLmNvbnRhaW5zKGVs
ZW1lbnQpKQogICAgICAgICByZXR1cm47CiAKICAgICBzY2hlZHVsZU9ic2VydmF0aW9uVXBkYXRl
KCk7CkBAIC01NDYsMTcgKzU0NiwxNyBAQCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
OjpkaWRDcmVhdGVSZW5kZXJlckZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIAogdm9pZCBU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6ZGlkVXBkYXRlQ29udGVudEZvclRleHQoVGV4dCYg
dGV4dCkKIHsKLSAgICBpZiAoIW1fbWFuaXB1bGF0ZWROb2Rlcy5jb250YWlucygmdGV4dCkpCisg
ICAgaWYgKCFtX21hbmlwdWxhdGVkTm9kZXMuY29udGFpbnModGV4dCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIHNjaGVkdWxlT2JzZXJ2YXRpb25VcGRhdGUoKTsKIAotICAgIG1fbWFuaXB1bGF0
ZWRUZXh0c1dpdGhOZXdDb250ZW50LmFkZCgmdGV4dCk7CisgICAgbV9tYW5pcHVsYXRlZFRleHRz
V2l0aE5ld0NvbnRlbnQuYWRkKHRleHQpOwogfQogCiB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250
cm9sbGVyOjpkaWRDcmVhdGVSZW5kZXJlckZvclRleHROb2RlKFRleHQmIHRleHQpCiB7Ci0gICAg
aWYgKG1fbWFuaXB1bGF0ZWROb2Rlcy5jb250YWlucygmdGV4dCkpCisgICAgaWYgKG1fbWFuaXB1
bGF0ZWROb2Rlcy5jb250YWlucyh0ZXh0KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2NoZWR1
bGVPYnNlcnZhdGlvblVwZGF0ZSgpOwpAQCAtNTg2LDE2ICs1ODYsMTYgQEAgdm9pZCBUZXh0TWFu
aXB1bGF0aW9uQ29udHJvbGxlcjo6c2NoZWR1bGVPYnNlcnZhdGlvblVwZGF0ZSgpCiAgICAgICAg
ICAgICBub2Rlc1RvT2JzZXJ2ZS5hZGQod2Vha0VsZW1lbnQpOwogICAgICAgICBjb250cm9sbGVy
LT5tX2VsZW1lbnRzV2l0aE5ld1JlbmRlcmVyLmNsZWFyKCk7CiAKLSAgICAgICAgZm9yIChhdXRv
KiB0ZXh0IDogY29udHJvbGxlci0+bV9tYW5pcHVsYXRlZFRleHRzV2l0aE5ld0NvbnRlbnQpIHsK
KyAgICAgICAgZm9yIChhdXRvJiB0ZXh0IDogY29udHJvbGxlci0+bV9tYW5pcHVsYXRlZFRleHRz
V2l0aE5ld0NvbnRlbnQpIHsKICAgICAgICAgICAgIGlmICghY29udHJvbGxlci0+bV9tYW5pcHVs
YXRlZE5vZGVzLmNvbnRhaW5zKHRleHQpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgY29udHJvbGxlci0+bV9tYW5pcHVsYXRlZE5vZGVzLnJlbW92ZSh0ZXh0KTsKLSAg
ICAgICAgICAgIG5vZGVzVG9PYnNlcnZlLmFkZCgqdGV4dCk7CisgICAgICAgICAgICBub2Rlc1Rv
T2JzZXJ2ZS5hZGQodGV4dCk7CiAgICAgICAgIH0KICAgICAgICAgY29udHJvbGxlci0+bV9tYW5p
cHVsYXRlZFRleHRzV2l0aE5ld0NvbnRlbnQuY2xlYXIoKTsKIAotICAgICAgICBmb3IgKGF1dG8q
IHRleHQgOiBjb250cm9sbGVyLT5tX3RleHROb2Rlc1dpdGhOZXdSZW5kZXJlcikKLSAgICAgICAg
ICAgIG5vZGVzVG9PYnNlcnZlLmFkZCgqdGV4dCk7CisgICAgICAgIGZvciAoYXV0byYgdGV4dCA6
IGNvbnRyb2xsZXItPm1fdGV4dE5vZGVzV2l0aE5ld1JlbmRlcmVyKQorICAgICAgICAgICAgbm9k
ZXNUb09ic2VydmUuYWRkKHRleHQpOwogICAgICAgICBjb250cm9sbGVyLT5tX3RleHROb2Rlc1dp
dGhOZXdSZW5kZXJlci5jbGVhcigpOwogCiAgICAgICAgIGlmIChub2Rlc1RvT2JzZXJ2ZS5pc0Vt
cHR5KCkpCkBAIC05MzYsNyArOTM2LDcgQEAgYXV0byBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxl
cjo6cmVwbGFjZShjb25zdCBNYW5pcHVsYXRpb25JdGVtRGF0YSYgaXRlbSwgY29uc3QKICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi12b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
OjpyZW1vdmVOb2RlKE5vZGUqIG5vZGUpCit2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
OjpyZW1vdmVOb2RlKE5vZGUmIG5vZGUpCiB7CiAgICAgbV9tYW5pcHVsYXRlZE5vZGVzLnJlbW92
ZShub2RlKTsKICAgICBtX3RleHROb2Rlc1dpdGhOZXdSZW5kZXJlci5yZW1vdmUobm9kZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
LmgKaW5kZXggZGU3YmU1MzI0ODRmNjE5MWFhZTljNmIxNzYxZjQ3MDk2MmQyNzBmYi4uMTA2NGM4
NGU0MzhhNDg0MmMyNjAyNDBlNDYxYTM1YzU1YzU0ZjVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaApAQCAtODAsNyArODAs
NyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHN0cnVjdCBFeGNsdXNpb25SdWxlIHsKLSAgICAg
ICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7IEV4Y2x1ZGUsIEluY2x1ZGUgfTsKKyAgICAg
ICAgZW51bSBjbGFzcyBUeXBlIDogYm9vbCB7IEV4Y2x1ZGUsIEluY2x1ZGUgfTsKIAogICAgICAg
ICBzdHJ1Y3QgRWxlbWVudFJ1bGUgewogICAgICAgICAgICAgQXRvbVN0cmluZyBsb2NhbE5hbWU7
CkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ3JlYXRlUmVuZGVyZXJG
b3JFbGVtZW50KEVsZW1lbnQmKTsKICAgICB2b2lkIGRpZENyZWF0ZVJlbmRlcmVyRm9yVGV4dE5v
ZGUoVGV4dCYpOwogICAgIHZvaWQgZGlkVXBkYXRlQ29udGVudEZvclRleHQoVGV4dCYpOwotICAg
IHZvaWQgcmVtb3ZlTm9kZShOb2RlKik7CisgICAgdm9pZCByZW1vdmVOb2RlKE5vZGUmKTsKIAog
ICAgIGVudW0gY2xhc3MgTWFuaXB1bGF0aW9uRmFpbHVyZVR5cGUgOiB1aW50OF90IHsKICAgICAg
ICAgQ29udGVudENoYW5nZWQsCkBAIC0xODIsOSArMTgyLDkgQEAgcHJpdmF0ZToKIAogICAgIFdl
YWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgV2Vha0hhc2hTZXQ8RWxlbWVudD4gbV9l
bGVtZW50c1dpdGhOZXdSZW5kZXJlcjsKLSAgICBIYXNoU2V0PFRleHQqPiBtX21hbmlwdWxhdGVk
VGV4dHNXaXRoTmV3Q29udGVudDsKLSAgICBIYXNoU2V0PE5vZGUqPiBtX3RleHROb2Rlc1dpdGhO
ZXdSZW5kZXJlcjsKLSAgICBIYXNoU2V0PE5vZGUqPiBtX21hbmlwdWxhdGVkTm9kZXM7CisgICAg
V2Vha0hhc2hTZXQ8VGV4dD4gbV9tYW5pcHVsYXRlZFRleHRzV2l0aE5ld0NvbnRlbnQ7CisgICAg
V2Vha0hhc2hTZXQ8Tm9kZT4gbV90ZXh0Tm9kZXNXaXRoTmV3UmVuZGVyZXI7CisgICAgV2Vha0hh
c2hTZXQ8Tm9kZT4gbV9tYW5pcHVsYXRlZE5vZGVzOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIGJv
b2w+IG1fY2FjaGVkRm9udEZhbWlseUV4Y2x1c2lvblJlc3VsdHM7CiAKQEAgLTM1MiwxNSArMzUy
LDYgQEAgT3B0aW9uYWw8VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkZh
aWx1cmU+IFRleHRNYW5pcHVsYXRpb25Db250cm8KIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xs
ZXI6OkV4Y2x1c2lvblJ1bGU6OlR5cGU+IHsKLSAgICB1c2luZyBFeGNsdXNpb25SdWxlID0gV2Vi
Q29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU7Ci0gICAgdXNp
bmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgRXhjbHVzaW9uUnVsZTo6VHlwZSwKLSAg
ICAgICAgRXhjbHVzaW9uUnVsZTo6VHlwZTo6SW5jbHVkZSwKLSAgICAgICAgRXhjbHVzaW9uUnVs
ZTo6VHlwZTo6RXhjbHVkZQotICAgID47Ci19OwotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25GYWls
dXJlVHlwZT4gewogICAgIHVzaW5nIE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlID0gV2ViQ29yZTo6
VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlOwogICAg
IHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1dyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1dyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5jcHAKaW5kZXggNDAwNmZh
OGVkMWZiM2UyYjZlZTFiZGY3NmYwM2I4YmJjYWQ2NzZlNi4uMGI4ZTIwYzhmNmY0ZjVkNDEyMmM4
N2RiN2ExNDAwNWZkYmYwOTk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9X
cmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmNwcApAQCAtNzksNyArNzksNyBA
QCB2b2lkIFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZDo6ZG9SZWFwcGx5KCkKIH0KIAog
I2lmbmRlZiBOREVCVUcKLXZvaWQgV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kOjpnZXRO
b2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYgbm9kZXMpCit2b2lkIFdyYXBDb250ZW50c0lu
RHVtbXlTcGFuQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQoV2Vha0hhc2hTZXQ8Tm9kZT4mIG5v
ZGVzKQogewogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX2VsZW1lbnQucHRyKCksIG5vZGVz
KTsKICAgICBhZGROb2RlQW5kRGVzY2VuZGFudHMobV9kdW1teVNwYW4uZ2V0KCksIG5vZGVzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV3JhcENvbnRlbnRzSW5EdW1teVNw
YW5Db21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dyYXBDb250ZW50c0luRHVtbXlT
cGFuQ29tbWFuZC5oCmluZGV4IGZiZDBhMWQ2ZmI1NjI0OWJlYjhhYzc4ZjQyODJlMzY4NDliOWFi
YzguLjFlMjhlNmY0NTExMGI4ZmI5NGIxOTJlYzgzZTc1YmZjMzhkMWQxNmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1h
bmQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhlY3V0ZUFwcGx5KCk7
CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5v
ZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoV2Vha0hhc2hTZXQ8
Tm9kZT4mKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgUmVmPEVsZW1lbnQ+IG1fZWxlbWVudDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCA1
N2RlOWQyNzdhMDk5MjQ4MGRlZDc1NzYyMTUyNjMyZjIwMDZlZWIzLi43NTIzODMwZTIxYTUyN2Mx
ZjkzMWEyZDQzNjg1OTc1ZjM4ZjNjNGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC02Niw2ICs2Niw3IEBACiAjaW1wb3J0IDxvYmpjL3J1
bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+
CiAjaW1wb3J0IDx3dGYvQVNDSUlDVHlwZS5oPgorI2ltcG9ydCA8d3RmL1dlYWtIYXNoU2V0Lmg+
CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQpAQCAtMjUzLDExICsyNTQsMTEgQEAgcHVibGljOgogICAgIFJlZlB0cjxDU1NWYWx1
ZT4gaW5saW5lU3R5bGVQcm9wZXJ0eUZvckVsZW1lbnQoRWxlbWVudCYsIENTU1Byb3BlcnR5SUQp
OwogCiAgICAgTm9kZSogY2FjaGVBbmNlc3RvcnNPZlN0YXJ0VG9CZUNvbnZlcnRlZChjb25zdCBQ
b3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7Ci0gICAgYm9vbCBpc0FuY2VzdG9yc09mU3RhcnRU
b0JlQ29udmVydGVkKE5vZGUmIG5vZGUpIGNvbnN0IHsgcmV0dXJuIG1fYW5jZXN0b3JzVW5kZXJD
b21tb25BbmNlc3Rvci5jb250YWlucygmbm9kZSk7IH0KKyAgICBib29sIGlzQW5jZXN0b3JzT2ZT
dGFydFRvQmVDb252ZXJ0ZWQoTm9kZSYgbm9kZSkgY29uc3QgeyByZXR1cm4gbV9hbmNlc3RvcnNV
bmRlckNvbW1vbkFuY2VzdG9yLmNvbnRhaW5zKG5vZGUpOyB9CiAKIHByaXZhdGU6CiAgICAgSGFz
aE1hcDxFbGVtZW50Kiwgc3RkOjp1bmlxdWVfcHRyPENvbXB1dGVkU3R5bGVFeHRyYWN0b3I+PiBt
X2NvbXB1dGVkU3R5bGVzOwotICAgIEhhc2hTZXQ8Tm9kZSo+IG1fYW5jZXN0b3JzVW5kZXJDb21t
b25BbmNlc3RvcjsKKyAgICBXZWFrSGFzaFNldDxOb2RlPiBtX2FuY2VzdG9yc1VuZGVyQ29tbW9u
QW5jZXN0b3I7CiB9OwogCiBAaW50ZXJmYWNlIE5TVGV4dExpc3QgKFdlYkNvcmVOU1RleHRMaXN0
RGV0YWlscykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKaW5kZXggNTdmNGVjNDQ0MGM4YjU0YTQ4Y2E0NTYzMjdjMzNlNGM1
MjE2ODVkOS4uYjY1N2YyODI0NDFkNjM5N2QwYTliMjExZjk2NDA3OGFjYWE4Zjc5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKQEAgLTEzMzAsNyArMTMzMCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+
IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRTZWxlY3RvcihSZWY8SlNPTjo6T2JqCiAgICAg
U2VsZWN0b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlcigqZG9jdW1lbnQpOwogCiAgICAgVmVjdG9y
PFJlZjxOb2RlPj4gbm9kZUxpc3Q7Ci0gICAgSGFzaFNldDxOb2RlKj4gc2Vlbk5vZGVzOworICAg
IFdlYWtIYXNoU2V0PE5vZGU+IHNlZW5Ob2RlczsKIAogICAgIGZvciAoYXV0byYgZGVzY2VuZGFu
dCA6IGNvbXBvc2VkVHJlZURlc2NlbmRhbnRzKCpkb2N1bWVudCkpIHsKICAgICAgICAgaWYgKCFp
czxFbGVtZW50PihkZXNjZW5kYW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3Bw
CmluZGV4IDlmZGZiYThiMTAyM2FlNjVjYjJmZjhjMmZhZjQyMzA0MGEwMzhhMDYuLjYxNjYxZDll
YTEwMTFjNGY5MmI0MDY0YzdiYWE1MGE1NWM4NjJjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
RnVuY3Rpb25zLmNwcApAQCAtMzI4LDcgKzMyOCw3IEBAIFZhbHVlIEZ1bklkOjpldmFsdWF0ZSgp
IGNvbnN0CiAgICAgCiAgICAgVHJlZVNjb3BlJiBjb250ZXh0U2NvcGUgPSBldmFsdWF0aW9uQ29u
dGV4dCgpLm5vZGUtPnRyZWVTY29wZSgpOwogICAgIE5vZGVTZXQgcmVzdWx0OwotICAgIEhhc2hT
ZXQ8Tm9kZSo+IHJlc3VsdFNldDsKKyAgICBXZWFrSGFzaFNldDxOb2RlPiByZXN1bHRTZXQ7CiAK
ICAgICB1bnNpZ25lZCBzdGFydFBvcyA9IDA7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gaWRMaXN0
Lmxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9kZVNldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmNwcAppbmRleCBkMDRiZDYyYzE0
NDNhMWE4Nzk5OWY5NmIwMDNjMmY3MmM4ODYzMDI0Li4zM2MzZDk0NTcyNmQwOTlhM2Y5OTI1YjE0
YjA2OGRkYWFiNjYzN2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2Rl
U2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmNwcApAQCAtMTA3
LDE3ICsxMDcsMTcgQEAgc3RhdGljIHZvaWQgc29ydEJsb2NrKHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIHRvLCBWZWN0b3I8VmVjdG9yPE5vZGUqPj4mIHBhcmVudE0KIAogICAgIC8vIENoaWxkcmVu
IG5vZGVzIG9mIHRoZSBjb21tb24gYW5jZXN0b3IgaW5kdWNlIGEgc3ViZGl2aXNpb24gb2Ygb3Vy
IG5vZGUtc2V0LgogICAgIC8vIFNvcnQgaXQgYWNjb3JkaW5nIHRvIHRoaXMgc3ViZGl2aXNpb24s
IGFuZCByZWN1cnNpdmVseSBzb3J0IGVhY2ggZ3JvdXAuCi0gICAgSGFzaFNldDxOb2RlKj4gcGFy
ZW50Tm9kZXM7CisgICAgV2Vha0hhc2hTZXQ8Tm9kZT4gcGFyZW50Tm9kZXM7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gZnJvbTsgaSA8IHRvOyArK2kpCiAgICAgICAgIHBhcmVudE5vZGVzLmFkZChw
YXJlbnRXaXRoRGVwdGgoY29tbW9uQW5jZXN0b3JEZXB0aCArIDEsIHBhcmVudE1hdHJpeFtpXSkp
OwogCiAgICAgdW5zaWduZWQgcHJldmlvdXNHcm91cEVuZCA9IGZyb207CiAgICAgdW5zaWduZWQg
Z3JvdXBFbmQgPSBmcm9tOwotICAgIGZvciAoTm9kZSogbiA9IGNvbW1vbkFuY2VzdG9yLT5maXJz
dENoaWxkKCk7IG47IG4gPSBuLT5uZXh0U2libGluZygpKSB7CisgICAgZm9yIChhdXRvKiBub2Rl
ID0gY29tbW9uQW5jZXN0b3ItPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRT
aWJsaW5nKCkpIHsKICAgICAgICAgLy8gSWYgcGFyZW50Tm9kZXMgY29udGFpbnMgdGhlIG5vZGUs
IHBlcmZvcm0gYSBsaW5lYXIgc2VhcmNoIHRvIG1vdmUgaXRzIGNoaWxkcmVuIGluIHRoZSBub2Rl
LXNldCB0byB0aGUgYmVnaW5uaW5nLgotICAgICAgICBpZiAocGFyZW50Tm9kZXMuY29udGFpbnMo
bikpIHsKKyAgICAgICAgaWYgKHBhcmVudE5vZGVzLmNvbnRhaW5zKCpub2RlKSkgewogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gZ3JvdXBFbmQ7IGkgPCB0bzsgKytpKQotICAgICAgICAg
ICAgICAgIGlmIChwYXJlbnRXaXRoRGVwdGgoY29tbW9uQW5jZXN0b3JEZXB0aCArIDEsIHBhcmVu
dE1hdHJpeFtpXSkgPT0gbikKKyAgICAgICAgICAgICAgICBpZiAocGFyZW50V2l0aERlcHRoKGNv
bW1vbkFuY2VzdG9yRGVwdGggKyAxLCBwYXJlbnRNYXRyaXhbaV0pID09IG5vZGUpCiAgICAgICAg
ICAgICAgICAgICAgIHBhcmVudE1hdHJpeFtpXS5zd2FwKHBhcmVudE1hdHJpeFtncm91cEVuZCsr
XSk7CiAKICAgICAgICAgICAgIGlmIChncm91cEVuZCAtIHByZXZpb3VzR3JvdXBFbmQgPiAxKQpA
QCAtMTI2LDEyICsxMjYsMTIgQEAgc3RhdGljIHZvaWQgc29ydEJsb2NrKHVuc2lnbmVkIGZyb20s
IHVuc2lnbmVkIHRvLCBWZWN0b3I8VmVjdG9yPE5vZGUqPj4mIHBhcmVudE0KICAgICAgICAgICAg
IEFTU0VSVChwcmV2aW91c0dyb3VwRW5kICE9IGdyb3VwRW5kKTsKICAgICAgICAgICAgIHByZXZp
b3VzR3JvdXBFbmQgPSBncm91cEVuZDsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAgICBwYXJl
bnROb2Rlcy5yZW1vdmUobik7CisgICAgICAgICAgICBwYXJlbnROb2Rlcy5yZW1vdmUoKm5vZGUp
OwogI2VuZGlmCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBBU1NFUlQocGFyZW50Tm9kZXMuaXNF
bXB0eSgpKTsKKyAgICBBU1NFUlQocGFyZW50Tm9kZXMuY29tcHV0ZXNFbXB0eSgpKTsKIH0KIAog
dm9pZCBOb2RlU2V0Ojpzb3J0KCkgY29uc3QKQEAgLTE5Miw3ICsxOTIsNyBAQCBzdGF0aWMgTm9k
ZSogZmluZFJvb3ROb2RlKE5vZGUqIG5vZGUpCiAKIHZvaWQgTm9kZVNldDo6dHJhdmVyc2FsU29y
dCgpIGNvbnN0CiB7Ci0gICAgSGFzaFNldDxOb2RlKj4gbm9kZXM7CisgICAgV2Vha0hhc2hTZXQ8
Tm9kZT4gbm9kZXM7CiAgICAgYm9vbCBjb250YWluc0F0dHJpYnV0ZU5vZGVzID0gZmFsc2U7CiAK
ICAgICB1bnNpZ25lZCBub2RlQ291bnQgPSBtX25vZGVzLnNpemUoKTsKQEAgLTIwNyw3ICsyMDcs
NyBAQCB2b2lkIE5vZGVTZXQ6OnRyYXZlcnNhbFNvcnQoKSBjb25zdAogICAgIHNvcnRlZE5vZGVz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobm9kZUNvdW50KTsKIAogICAgIGZvciAoTm9kZSogbm9k
ZSA9IGZpbmRSb290Tm9kZShtX25vZGVzLmZpcnN0KCkuZ2V0KCkpOyBub2RlOyBub2RlID0gTm9k
ZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSkpIHsKLSAgICAgICAgaWYgKG5vZGVzLmNvbnRhaW5zKG5v
ZGUpKQorICAgICAgICBpZiAobm9kZXMuY29udGFpbnMoKm5vZGUpKQogICAgICAgICAgICAgc29y
dGVkTm9kZXMuYXBwZW5kKG5vZGUpOwogCiAgICAgICAgIGlmICghY29udGFpbnNBdHRyaWJ1dGVO
b2RlcyB8fCAhaXM8RWxlbWVudD4oKm5vZGUpKQpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgTm9k
ZVNldDo6dHJhdmVyc2FsU29ydCgpIGNvbnN0CiAKICAgICAgICAgZm9yIChjb25zdCBBdHRyaWJ1
dGUmIGF0dHJpYnV0ZSA6IGVsZW1lbnQuYXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKICAgICAgICAg
ICAgIFJlZlB0cjxBdHRyPiBhdHRyID0gZWxlbWVudC5hdHRySWZFeGlzdHMoYXR0cmlidXRlLm5h
bWUoKSk7Ci0gICAgICAgICAgICBpZiAoYXR0ciAmJiBub2Rlcy5jb250YWlucyhhdHRyLmdldCgp
KSkKKyAgICAgICAgICAgIGlmIChhdHRyICYmIG5vZGVzLmNvbnRhaW5zKCphdHRyKSkKICAgICAg
ICAgICAgICAgICBzb3J0ZWROb2Rlcy5hcHBlbmQoYXR0cik7CiAgICAgICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXRoLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aFBhdGguY3BwCmluZGV4IGEyMDUyNGQ5YzJkMjhmZjBlNzVkNjA4NjRjZGZk
ZDNkNjBhYTE1YjkuLjBkZmIzMmI2MWU3MzU3YmYzYWViZjRmYjFiNzA4NGQ3NTM1MmM5YWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhdGguY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YUGF0aFBhdGguY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBMb2NhdGlv
blBhdGg6OmV2YWx1YXRlKE5vZGVTZXQmIG5vZGVzKSBjb25zdAogCiAgICAgZm9yIChhdXRvJiBz
dGVwIDogbV9zdGVwcykgewogICAgICAgICBOb2RlU2V0IG5ld05vZGVzOwotICAgICAgICBIYXNo
U2V0PE5vZGUqPiBuZXdOb2Rlc1NldDsKKyAgICAgICAgV2Vha0hhc2hTZXQ8Tm9kZT4gbmV3Tm9k
ZXNTZXQ7CiAKICAgICAgICAgYm9vbCBuZWVkVG9DaGVja0ZvckR1cGxpY2F0ZU5vZGVzID0gIW5v
ZGVzLnN1YnRyZWVzQXJlRGlzam9pbnQoKSB8fCAoc3RlcC0+YXhpcygpICE9IFN0ZXA6OkNoaWxk
QXhpcyAmJiBzdGVwLT5heGlzKCkgIT0gU3RlcDo6U2VsZkF4aXMKICAgICAgICAgICAgICYmIHN0
ZXAtPmF4aXMoKSAhPSBTdGVwOjpEZXNjZW5kYW50QXhpcyAmJiBzdGVwLT5heGlzKCkgIT0gU3Rl
cDo6RGVzY2VuZGFudE9yU2VsZkF4aXMgJiYgc3RlcC0+YXhpcygpICE9IFN0ZXA6OkF0dHJpYnV0
ZUF4aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKaW5kZXggYzFiYmM1NGVi
ODMwMTY5MTE5Yzg2ODMxYTRmMmE2ZTdjMDA0NTY4ZC4uNjIwMzViMWRhNGU5Y2IyY2I1NDk1NmQz
NmE0MGQzMGYxMWRiZGRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJl
ZGljYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCkBA
IC0yNDEsNyArMjQxLDcgQEAgVmFsdWUgVW5pb246OmV2YWx1YXRlKCkgY29uc3QKICAgICBOb2Rl
U2V0JiByZXN1bHRTZXQgPSBsaHNSZXN1bHQubW9kaWZpYWJsZU5vZGVTZXQoKTsKICAgICBjb25z
dCBOb2RlU2V0JiByaHNOb2RlcyA9IHJocy50b05vZGVTZXQoKTsKIAotICAgIEhhc2hTZXQ8Tm9k
ZSo+IG5vZGVzOworICAgIFdlYWtIYXNoU2V0PE5vZGU+IG5vZGVzOwogICAgIGZvciAoYXV0byYg
cmVzdWx0IDogcmVzdWx0U2V0KQogICAgICAgICBub2Rlcy5hZGQocmVzdWx0LmdldCgpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428181</attachid>
            <date>2021-05-10 10:28:23 -0700</date>
            <delta_ts>2021-05-10 11:18:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220464-20210510102822.patch</filename>
            <type>text/plain</type>
            <size>36127</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZhNTVkNTMzZmNmNjc1
MzIzMzQyMzA4ZTc0ZmE2ZDg4Y2VmZTMyNy4uNDYxZDU2NzI1ZmNiYWIyOGNjYzViNWEzNTBlOTM3
ZmYyNDBhMmVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDIxLTA1LTEwICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIEhh
c2hTZXQ8UmVmUHRyPE5vZGU+PiBpbnN0ZWFkIG9mIEhhc2hTZXQ8Tm9kZSo+CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA0NjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1ha2VzIHVzIG1vcmUg
cmVzaXN0ZW50IHRvIHVzZS1hZnRlci1mcmVlIGJ1Z3MuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uZGl0aW9uYWxseUFk
ZE5vZGVUb0ZpbHRlckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsdGVyVmVjdG9yUGFpckZv
clJlbW92YWwpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsdGVyTWFwRm9yUmVtb3ZhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpmaWx0ZXJMaXN0Rm9yUmVtb3ZhbCk6CisgICAgICAgIChXZWJDb3JlOjpB
WE9iamVjdENhY2hlOjpwcmVwYXJlRm9yRG9jdW1lbnREZXN0cnVjdGlvbik6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTTXV0YXRpb25PYnNlcnZlck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6
CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TXV0YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZWROb2RlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjogY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmg6Cisg
ICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6YWRkUmVnaXN0cmF0aW9uTm9k
ZXNUb1NldCBjb25zdCk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRp
b24uaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsaXZlTm9k
ZVNldCk6CisgICAgICAgIChXZWJDb3JlOjppZ25vcmVTZXQpOgorICAgICAgICAqIGVkaXRpbmcv
QXBwZW5kTm9kZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kTm9kZUNvbW1h
bmQ6OmdldE5vZGVzSW5Db21tYW5kKToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGVuZE5vZGVDb21t
YW5kLmg6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjpnZXROb2Rlc0luQ29tbWFuZCk6
CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oOgorICAgICAgICAqIGVk
aXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
ZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAgICog
ZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9F
ZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVFZGl0Q29tbWFuZDo6YWRk
Tm9kZUFuZERlc2NlbmRhbnRzKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRDb21tYW5kLmg6Cisg
ICAgICAgICogZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKToK
KyAgICAgICAgKiBlZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuaDoKKyAgICAgICAg
KiBlZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc2VydE5vZGVCZWZvcmVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAgICog
ZWRpdGluZy9JbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvTWVy
Z2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVyZ2VJ
ZGVudGljYWxFbGVtZW50c0NvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKToKKyAgICAgICAgKiBl
ZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmg6CisgICAgICAgICogZWRpdGlu
Zy9SZW1vdmVOb2RlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdmVOb2RlQ29t
bWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvUmVtb3ZlTm9kZUNv
bW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kOjpnZXROb2Rl
c0luQ29tbWFuZCk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFu
ZC5oOgorICAgICAgICAqIGVkaXRpbmcvU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5k
KToKKyAgICAgICAgKiBlZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmg6CisgICAgICAg
ICogZWRpdGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9TcGVs
bGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL1NwbGl0RWxlbWVu
dENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BsaXRFbGVtZW50Q29tbWFuZDo6Z2V0
Tm9kZXNJbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5o
OgorICAgICAgICAqIGVkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3BsaXRUZXh0Tm9kZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKToKKyAgICAg
ICAgKiBlZGl0aW5nL1NwbGl0VGV4dE5vZGVDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9X
cmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V3Jh
cENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAg
ICogZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyQ2Fj
aGVzOjpjYWNoZUFuY2VzdG9yc09mU3RhcnRUb0JlQ29udmVydGVkKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRTZWxlY3Rvcik6CisgICAgICAgICogeG1sL1hQYXRo
RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5JZDo6ZXZhbHVhdGUg
Y29uc3QpOgorICAgICAgICAqIHhtbC9YUGF0aE5vZGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WFBhdGg6OnNvcnRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6Tm9kZVNldDo6
dHJhdmVyc2FsU29ydCBjb25zdCk6CisgICAgICAgICogeG1sL1hQYXRoUGF0aC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpYUGF0aDo6TG9jYXRpb25QYXRoOjpldmFsdWF0ZSBjb25zdCk6CisgICAg
ICAgICogeG1sL1hQYXRoUHJlZGljYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpV
bmlvbjo6ZXZhbHVhdGUgY29uc3QpOgorCiAyMDIxLTA1LTA0ICBDYW1lcm9uIE1jQ29ybWFjayAg
PGhleWNhbUBhcHBsZS5jb20+CiAKICAgICAgICAgSGFuZGxlIGNsYW1waW5nIG9mIGhlaWdodHMg
Zm9yIGltYWdlcyBhZmZlY3RlZCBieSBiYWNrZ3JvdW5kLXNpemUgYW5kIEVYSUYgb3JpZW50YXRp
b24gY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAppbmRleCBlYzgxNjFlNDBhNzUxNGQ4MTcyMTViYzZjODI2Y2Q3NTYwZWE0ODU2Li4z
ZDJjNTI1OTg0NjgxMDg3ZDgwNjYxZmYzMDVlNzc4MDYyYTVjMDVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTMwNzksMTQgKzMwNzks
MTQgQEAgY29uc3QgRWxlbWVudCogQVhPYmplY3RDYWNoZTo6cm9vdEFYRWRpdGFibGVFbGVtZW50
KGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIHZvaWQg
Y29uZGl0aW9uYWxseUFkZE5vZGVUb0ZpbHRlckxpc3QoTm9kZSogbm9kZSwgY29uc3QgRG9jdW1l
bnQmIGRvY3VtZW50LCBIYXNoU2V0PE5vZGUqPiYgbm9kZXNUb1JlbW92ZSkKK3N0YXRpYyB2b2lk
IGNvbmRpdGlvbmFsbHlBZGROb2RlVG9GaWx0ZXJMaXN0KE5vZGUqIG5vZGUsIGNvbnN0IERvY3Vt
ZW50JiBkb2N1bWVudCwgSGFzaFNldDxSZWY8Tm9kZT4+JiBub2Rlc1RvUmVtb3ZlKQogewogICAg
IGlmIChub2RlICYmICghbm9kZS0+aXNDb25uZWN0ZWQoKSB8fCAmbm9kZS0+ZG9jdW1lbnQoKSA9
PSAmZG9jdW1lbnQpKQotICAgICAgICBub2Rlc1RvUmVtb3ZlLmFkZChub2RlKTsKKyAgICAgICAg
bm9kZXNUb1JlbW92ZS5hZGQoKm5vZGUpOwogfQogICAgIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LXN0YXRpYyB2b2lkIGZpbHRlclZlY3RvclBhaXJGb3JSZW1vdmFsKGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8VCwgVD4+JiBsaXN0LCBjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIEhhc2hTZXQ8Tm9k
ZSo+JiBub2Rlc1RvUmVtb3ZlKQorc3RhdGljIHZvaWQgZmlsdGVyVmVjdG9yUGFpckZvclJlbW92
YWwoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxULCBUPj4mIGxpc3QsIGNvbnN0IERvY3VtZW50JiBk
b2N1bWVudCwgSGFzaFNldDxSZWY8Tm9kZT4+JiBub2Rlc1RvUmVtb3ZlKQogewogICAgIGZvciAo
YXV0byYgZW50cnkgOiBsaXN0KSB7CiAgICAgICAgIGNvbmRpdGlvbmFsbHlBZGROb2RlVG9GaWx0
ZXJMaXN0KGVudHJ5LmZpcnN0LCBkb2N1bWVudCwgbm9kZXNUb1JlbW92ZSk7CkBAIC0zMDk1LDE0
ICszMDk1LDE0IEBAIHN0YXRpYyB2b2lkIGZpbHRlclZlY3RvclBhaXJGb3JSZW1vdmFsKGNvbnN0
IFZlY3RvcjxzdGQ6OnBhaXI8VCwgVD4+JiBsaXN0LCBjb25zCiB9CiAgICAgCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotc3RhdGljIHZvaWQgZmlsdGVyTWFwRm9yUmVtb3ZhbChj
b25zdCBIYXNoTWFwPFQsIFU+JiBsaXN0LCBjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIEhhc2hT
ZXQ8Tm9kZSo+JiBub2Rlc1RvUmVtb3ZlKQorc3RhdGljIHZvaWQgZmlsdGVyTWFwRm9yUmVtb3Zh
bChjb25zdCBIYXNoTWFwPFQsIFU+JiBsaXN0LCBjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIEhh
c2hTZXQ8UmVmPE5vZGU+PiYgbm9kZXNUb1JlbW92ZSkKIHsKICAgICBmb3IgKGF1dG8mIGVudHJ5
IDogbGlzdCkKICAgICAgICAgY29uZGl0aW9uYWxseUFkZE5vZGVUb0ZpbHRlckxpc3QoZW50cnku
a2V5LCBkb2N1bWVudCwgbm9kZXNUb1JlbW92ZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci1zdGF0aWMgdm9pZCBmaWx0ZXJMaXN0Rm9yUmVtb3ZhbChjb25zdCBMaXN0SGFzaFNldDxUPiYg
bGlzdCwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBIYXNoU2V0PE5vZGUqPiYgbm9kZXNUb1Jl
bW92ZSkKK3N0YXRpYyB2b2lkIGZpbHRlckxpc3RGb3JSZW1vdmFsKGNvbnN0IExpc3RIYXNoU2V0
PFQ+JiBsaXN0LCBjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIEhhc2hTZXQ8UmVmPE5vZGU+PiYg
bm9kZXNUb1JlbW92ZSkKIHsKICAgICBmb3IgKGF1dG8qIG5vZGUgOiBsaXN0KQogICAgICAgICBj
b25kaXRpb25hbGx5QWRkTm9kZVRvRmlsdGVyTGlzdChub2RlLCBkb2N1bWVudCwgbm9kZXNUb1Jl
bW92ZSk7CkBAIC0zMTEwLDcgKzMxMTAsNyBAQCBzdGF0aWMgdm9pZCBmaWx0ZXJMaXN0Rm9yUmVt
b3ZhbChjb25zdCBMaXN0SGFzaFNldDxUPiYgbGlzdCwgY29uc3QgRG9jdW1lbnQmIGRvYwogCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnByZXBhcmVGb3JEb2N1bWVudERlc3RydWN0aW9uKGNvbnN0IERv
Y3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBIYXNoU2V0PE5vZGUqPiBub2Rlc1RvUmVtb3ZlOwor
ICAgIEhhc2hTZXQ8UmVmPE5vZGU+PiBub2Rlc1RvUmVtb3ZlOwogICAgIGZpbHRlckxpc3RGb3JS
ZW1vdmFsKG1fdGV4dE1hcmtlck5vZGVzLCBkb2N1bWVudCwgbm9kZXNUb1JlbW92ZSk7CiAgICAg
ZmlsdGVyTGlzdEZvclJlbW92YWwobV9tb2RhbEVsZW1lbnRzU2V0LCBkb2N1bWVudCwgbm9kZXNU
b1JlbW92ZSk7CiAgICAgZmlsdGVyTGlzdEZvclJlbW92YWwobV9kZWZlcnJlZFRleHRDaGFuZ2Vk
TGlzdCwgZG9jdW1lbnQsIG5vZGVzVG9SZW1vdmUpOwpAQCAtMzExOSw4ICszMTE5LDggQEAgdm9p
ZCBBWE9iamVjdENhY2hlOjpwcmVwYXJlRm9yRG9jdW1lbnREZXN0cnVjdGlvbihjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQpCiAgICAgZmlsdGVyTWFwRm9yUmVtb3ZhbChtX2RlZmVycmVkQXR0cmli
dXRlQ2hhbmdlLCBkb2N1bWVudCwgbm9kZXNUb1JlbW92ZSk7CiAgICAgZmlsdGVyVmVjdG9yUGFp
ckZvclJlbW92YWwobV9kZWZlcnJlZEZvY3VzZWROb2RlQ2hhbmdlLCBkb2N1bWVudCwgbm9kZXNU
b1JlbW92ZSk7CiAgICAgCi0gICAgZm9yIChhdXRvKiBub2RlIDogbm9kZXNUb1JlbW92ZSkKLSAg
ICAgICAgcmVtb3ZlKCpub2RlKTsKKyAgICBmb3IgKGF1dG8mIG5vZGUgOiBub2Rlc1RvUmVtb3Zl
KQorICAgICAgICByZW1vdmUobm9kZSk7CiB9CiAgICAgCiBib29sIEFYT2JqZWN0Q2FjaGU6Om5v
ZGVJc1RleHRDb250cm9sKGNvbnN0IE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAppbmRleCAyNTVh
NjZlZGVkZWU5NzBmNjcyM2VjMTU2NjQ5MzY3NDE4NjNmMGI5Li4zNTNiNzg4ZDRlYzRjNzQ1NmI0
MWExZDExNTkxODE2N2RlMDY4NGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAg
REVGSU5FX1ZJU0lUX0FERElUSU9OQUxfQ0hJTERSRU4oSlNNdXRhdGlvbk9ic2VydmVyKTsKIAog
Ym9vbCBKU011dGF0aW9uT2JzZXJ2ZXJPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBBYnN0cmFjdFNsb3RWaXNp
dG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKipyZWFzb24pCiB7Ci0gICAgZm9yIChhdXRvKiBub2Rl
IDoganNDYXN0PEpTTXV0YXRpb25PYnNlcnZlcio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKS0+
d3JhcHBlZCgpLm9ic2VydmVkTm9kZXMoKSkgeworICAgIGZvciAoYXV0byYgbm9kZSA6IGpzQ2Fz
dDxKU011dGF0aW9uT2JzZXJ2ZXIqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSktPndyYXBwZWQo
KS5vYnNlcnZlZE5vZGVzKCkpIHsKICAgICAgICAgaWYgKHZpc2l0b3IuY29udGFpbnNPcGFxdWVS
b290KHJvb3Qobm9kZSkpKSB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkocmVhc29uKSkKICAg
ICAgICAgICAgICAgICAqcmVhc29uID0gIlJlYWNoYWJsZSBmcm9tIG9ic2VydmVkIG5vZGVzIjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCBhNGFjMGViN2U1NzE3
N2NmMDQyMzdlNmE5MjNjYzUwMzA2ZTJiYmQ2Li42ZjUwZjAxNGFlNmYyZmMwOGEwODdhNWU4ZTI4
MDQzNTM0MzQ2OTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCkBA
IC0xNjksOSArMTY5LDkgQEAgdm9pZCBNdXRhdGlvbk9ic2VydmVyOjpzZXRIYXNUcmFuc2llbnRS
ZWdpc3RyYXRpb24oRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIGV2ZW50TG9vcC0+cXVldWVNdXRh
dGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2soKTsKIH0KIAotSGFzaFNldDxOb2RlKj4gTXV0
YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZWROb2RlcygpIGNvbnN0CitIYXNoU2V0PFJlZjxOb2RlPj4g
TXV0YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZWROb2RlcygpIGNvbnN0CiB7Ci0gICAgSGFzaFNldDxO
b2RlKj4gb2JzZXJ2ZWROb2RlczsKKyAgICBIYXNoU2V0PFJlZjxOb2RlPj4gb2JzZXJ2ZWROb2Rl
czsKICAgICBmb3IgKGF1dG8qIHJlZ2lzdHJhdGlvbiA6IG1fcmVnaXN0cmF0aW9ucykKICAgICAg
ICAgcmVnaXN0cmF0aW9uLT5hZGRSZWdpc3RyYXRpb25Ob2Rlc1RvU2V0KG9ic2VydmVkTm9kZXMp
OwogICAgIHJldHVybiBvYnNlcnZlZE5vZGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVyLmgKaW5kZXggNDc3ZjBmOTNkMjZmZjNmOTcwMWU4N2MyYjhiZjFkMzI2ZTdlZDkyNi4uY2I5
NzU3YjAzYWQ0NTQ1YzU0MjFlYWYwMjAyZDEwOTM3MmNjNzI4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25PYnNlcnZlci5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0SGFzVHJhbnNpZW50UmVnaXN0cmF0aW9uKERvY3VtZW50Jik7CiAgICAgYm9vbCBjYW5EZWxp
dmVyKCk7CiAKLSAgICBIYXNoU2V0PE5vZGUqPiBvYnNlcnZlZE5vZGVzKCkgY29uc3Q7CisgICAg
SGFzaFNldDxSZWY8Tm9kZT4+IG9ic2VydmVkTm9kZXMoKSBjb25zdDsKIAogICAgIE11dGF0aW9u
Q2FsbGJhY2smIGNhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFjay5nZXQoKTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlv
bi5jcHAKaW5kZXggMGVjYjA1YjQ4ODYwYzc3NzE0MThkOGJmOWQyNjEyOTNhODg2NWFlMy4uYzgy
ODM2YWY0ZGJhMGNiMDkwNWRhNDI0MTYxMGFlMDU2NGI5YWJjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtMTEyLDEz
ICsxMTIsMTMgQEAgYm9vbCBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpzaG91bGRSZWNl
aXZlTXV0YXRpb25Gcm9tKE5vZGUmIG5vZGUsIE11dGF0aW8KICAgICByZXR1cm4gbV9hdHRyaWJ1
dGVGaWx0ZXIuY29udGFpbnMoYXR0cmlidXRlTmFtZS0+bG9jYWxOYW1lKCkpOwogfQogCi12b2lk
IE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246OmFkZFJlZ2lzdHJhdGlvbk5vZGVzVG9TZXQo
SGFzaFNldDxOb2RlKj4mIG5vZGVzKSBjb25zdAordm9pZCBNdXRhdGlvbk9ic2VydmVyUmVnaXN0
cmF0aW9uOjphZGRSZWdpc3RyYXRpb25Ob2Rlc1RvU2V0KEhhc2hTZXQ8UmVmPE5vZGU+PiYgbm9k
ZXMpIGNvbnN0CiB7Ci0gICAgbm9kZXMuYWRkKCZtX25vZGUpOworICAgIG5vZGVzLmFkZChtX25v
ZGUpOwogICAgIGlmICghbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2RlcykKICAgICAgICAgcmV0
dXJuOwogICAgIGZvciAoYXV0byYgbm9kZSA6ICptX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVz
KQotICAgICAgICBub2Rlcy5hZGQobm9kZS5wdHIoKSk7CisgICAgICAgIG5vZGVzLmFkZChub2Rl
LmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmgKaW5kZXggZTY5NDA0ODNhMzEz
YzhmZDFiZDE2ZGMxN2NiOTZiMTNhY2QyMmEzYS4uYTQ1NTg4OWU0NTM4NWJkZTEyZWU1YTI4Njlj
ZGUzNjQ0NGEyYjE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2Jz
ZXJ2ZXJSZWdpc3RyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJhdGlvbi5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBNdXRhdGlv
blJlY29yZERlbGl2ZXJ5T3B0aW9ucyBkZWxpdmVyeU9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBt
X29wdGlvbnMgJiAoTXV0YXRpb25PYnNlcnZlcjo6QXR0cmlidXRlT2xkVmFsdWUgfCBNdXRhdGlv
bk9ic2VydmVyOjpDaGFyYWN0ZXJEYXRhT2xkVmFsdWUpOyB9CiAgICAgTXV0YXRpb25PYnNlcnZl
ck9wdGlvbnMgbXV0YXRpb25UeXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucyAmIE11dGF0
aW9uT2JzZXJ2ZXI6OkFsbE11dGF0aW9uVHlwZXM7IH0KIAotICAgIHZvaWQgYWRkUmVnaXN0cmF0
aW9uTm9kZXNUb1NldChIYXNoU2V0PE5vZGUqPiYpIGNvbnN0OworICAgIHZvaWQgYWRkUmVnaXN0
cmF0aW9uTm9kZXNUb1NldChIYXNoU2V0PFJlZjxOb2RlPj4mKSBjb25zdDsKIAogcHJpdmF0ZToK
ICAgICBSZWY8TXV0YXRpb25PYnNlcnZlcj4gbV9vYnNlcnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRl
eCA3OGYwZTk5NWE2NjkxYWJkNmFkZjc5ZmE5MmYwOTI5NmE4YjIzMmUzLi40NGQ3OTc0NTBjNTNj
NjRkOTg4MmU3YzAwYzkyZTA4MDU1MjJmYWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC05NSw5ICs5
NSw5IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChOb2RlKTsKIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiAKICNpZiBEVU1QX05PREVfU1RBVElTVElDUwotc3RhdGljIEhhc2hTZXQ8
Tm9kZSo+JiBsaXZlTm9kZVNldCgpCitzdGF0aWMgSGFzaFNldDxSZWY8Tm9kZT4+JiBsaXZlTm9k
ZVNldCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8Tm9kZSo+PiBsaXZl
Tm9kZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8UmVmPE5vZGU+Pj4gbGl2
ZU5vZGVzOwogICAgIHJldHVybiBsaXZlTm9kZXM7CiB9CiAKQEAgLTI5NSw5ICsyOTUsOSBAQCBE
RUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIG5vZGVD
b3VudGVyLCAoIldlYkNvcmVOb2RlIgogI2lmbmRlZiBOREVCVUcKIHN0YXRpYyBib29sIHNob3Vs
ZElnbm9yZUxlYWtzID0gZmFsc2U7CiAKLXN0YXRpYyBIYXNoU2V0PE5vZGUqPiYgaWdub3JlU2V0
KCkKK3N0YXRpYyBIYXNoU2V0PFJlZjxOb2RlPj4mIGlnbm9yZVNldCgpCiB7Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8Tm9kZSo+PiBpZ25vcmU7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEhhc2hTZXQ8UmVmPE5vZGU+Pj4gaWdub3JlOwogCiAgICAgcmV0dXJuIGlnbm9y
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwZW5kTm9kZUNvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5jcHAKaW5k
ZXggNzZlMDRjZjAxOWI5MDBjOTAxZWYyODI5NTYxODRiNDBkYzI4MTU4YS4uNDQ4NmRkYWYyNDlk
YjQzYWFjZGY4NDM0ZWRlZGJiMmQ0ZjUxMGE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9BcHBlbmROb2RlQ29tbWFuZC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBBcHBlbmROb2Rl
Q29tbWFuZDo6ZG9VbmFwcGx5KCkKIH0KIAogI2lmbmRlZiBOREVCVUcKLXZvaWQgQXBwZW5kTm9k
ZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQg
QXBwZW5kTm9kZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYg
bm9kZXMpCiB7CiAgICAgYWRkTm9kZUFuZERlc2NlbmRhbnRzKG1fcGFyZW50LnB0cigpLCBub2Rl
cyk7CiAgICAgYWRkTm9kZUFuZERlc2NlbmRhbnRzKG1fbm9kZS5wdHIoKSwgbm9kZXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5oCmluZGV4IDNjZDkxNDQzMjJj
ODU4ODY1NGI5YzI2ZjVmMjc5YmQ5NzVkZTM5MzkuLjdkMDhmNmQzMWMyMDNkMWUyYTQ0YzQ2NzQ2
MzFmZjIwNWQyMzcxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwZW5k
Tm9kZUNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5vZGVDb21t
YW5kLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvVW5hcHBseSgpIG92
ZXJyaWRlOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFz
aFNldDxOb2RlKj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hT
ZXQ8UmVmPE5vZGU+PiYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBSZWY8Q29udGFpbmVyTm9k
ZT4gbV9wYXJlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0
ZUVkaXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwCmluZGV4IGM3MDExNDU3MWJiZmM3MjhiNTBlZDcyNzJkODk4ZWQ4Y2M3NWNlMzEu
LmJjMjM0YTcyYzJjNGE0YzNlMjBkMWVlMzY4Y2NkOTU4NDc3MGEzMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCkBAIC0zMTksNyArMzE5
LDcgQEAgdm9pZCBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjpzZXRSYW5nZURlbGV0ZWRCeVVuYXBw
bHkoY29uc3QgVmlzaWJsZVBvc2l0aW9uSW5kZXgKIH0KIAogI2lmbmRlZiBOREVCVUcKLXZvaWQg
RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6Z2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4m
IG5vZGVzKQordm9pZCBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjpnZXROb2Rlc0luQ29tbWFuZChI
YXNoU2V0PFJlZjxOb2RlPj4mIG5vZGVzKQogewogICAgIGZvciAoYXV0byYgY29tbWFuZCA6IG1f
Y29tbWFuZHMpCiAgICAgICAgIGNvbW1hbmQtPmdldE5vZGVzSW5Db21tYW5kKG5vZGVzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAppbmRleCAxZWI2
ZmVjMDA2ZDQ3ZGUxYmE3NzhmNjEyNDk4ZDY5ZDM4YmQ0YjE5Li5jOTZlNDlhY2IxZmQxMzFhZDc5
ZWRhNmVhZWY0Nzc0YzAyMjdmMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21w
b3NpdGVFZGl0Q29tbWFuZC5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFJhbmdlRGVsZXRlZEJ5VW5hcHBseShjb25zdCBWaXNpYmxlUG9zaXRpb25JbmRleFJhbmdlJik7
CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdmlydHVhbCB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhh
c2hTZXQ8Tm9kZSo+Jik7CisgICAgdmlydHVhbCB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hT
ZXQ8UmVmPE5vZGU+PiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmNwcAppbmRleCA3YjNkOWYy
MWM2MjUyMDU1YzAwMmE4ZDMzZGQ5ODc3NjJjN2IwYzE2Li5mZWExNzA1ZjU5ZmYzZmYwZGVjMWIw
OGEwMzUxNjc1MTI5ZGJkMThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Rl
bGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBEZWxl
dGVGcm9tVGV4dE5vZGVDb21tYW5kOjpkb1VuYXBwbHkoKQogfQogCiAjaWZuZGVmIE5ERUJVRwot
dm9pZCBEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0
PE5vZGUqPiYgbm9kZXMpCit2b2lkIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQ6OmdldE5vZGVz
SW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYgbm9kZXMpCiB7CiAgICAgYWRkTm9kZUFuZERl
c2NlbmRhbnRzKG1fbm9kZS5wdHIoKSwgbm9kZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0RlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuaAppbmRleCBkYTFkZjZiMTAyOTAy
YjIyYjMwMTc4YzYyMGIzOTBkZmRjNjAyNDIwLi41ZDhjZTk5NGM4YmUzOTUxNjI0MjUwMzZiODE3
ZGM4Y2I5NTQ5ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUZy
b21UZXh0Tm9kZUNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUZy
b21UZXh0Tm9kZUNvbW1hbmQuaApAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZG9VbmFwcGx5KCkgb3ZlcnJpZGU7CiAgICAgCiAjaWZuZGVmIE5ERUJVRwotICAgIHZvaWQgZ2V0
Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldE5v
ZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAg
CiAgICAgUmVmPFRleHQ+IG1fbm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5j
cHAKaW5kZXggOTBmOTE0ZDM3YjJkOTcxNTgxZjUzNzEwNDc3M2MzOWY3MjAzYmRjNS4uYzk5YjA2
YjJkNDhkM2RlMTRjOTM1ZTJmMzFjMjhkZDkxZmJmOGI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0Q29tbWFuZC5jcHAKQEAgLTIxNiwxMCArMjE2LDEwIEBAIHZvaWQgU2ltcGxlRWRpdENv
bW1hbmQ6OmRvUmVhcHBseSgpCiB9CiAKICNpZm5kZWYgTkRFQlVHCi12b2lkIFNpbXBsZUVkaXRD
b21tYW5kOjphZGROb2RlQW5kRGVzY2VuZGFudHMoTm9kZSogc3RhcnROb2RlLCBIYXNoU2V0PE5v
ZGUqPiYgbm9kZXMpCit2b2lkIFNpbXBsZUVkaXRDb21tYW5kOjphZGROb2RlQW5kRGVzY2VuZGFu
dHMoTm9kZSogc3RhcnROb2RlLCBIYXNoU2V0PFJlZjxOb2RlPj4mIG5vZGVzKQogewogICAgIGZv
ciAoTm9kZSogbm9kZSA9IHN0YXJ0Tm9kZTsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5l
eHQoKm5vZGUsIHN0YXJ0Tm9kZSkpCi0gICAgICAgIG5vZGVzLmFkZChub2RlKTsKKyAgICAgICAg
bm9kZXMuYWRkKCpub2RlKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21t
YW5kLmgKaW5kZXggZTVhMWRhYmI1OTdlMGZlN2I2NTIwZmM1Y2E1YjQ5MjQ5MzllZWFlNi4uMGYy
MWUyYTg5ZTk4YzJjMmY1OTFkNTc3MTM2YzBiMWU5NjA2YjU0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdENvbW1hbmQuaApAQCAtOTQsMTQgKzk0LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZG9SZWFwcGx5KCk7IC8vIGNhbGxzIGRvQXBwbHkoKQogCiAjaWZuZGVmIE5ERUJVRwot
ICAgIHZpcnR1YWwgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+Jikg
PSAwOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBTaW1wbGVFZGl0Q29tbWFu
ZChEb2N1bWVudCYsIEVkaXRBY3Rpb24gPSBFZGl0QWN0aW9uOjpVbnNwZWNpZmllZCk7CiAKICNp
Zm5kZWYgTkRFQlVHCi0gICAgdm9pZCBhZGROb2RlQW5kRGVzY2VuZGFudHMoTm9kZSosIEhhc2hT
ZXQ8Tm9kZSo+Jik7CisgICAgdm9pZCBhZGROb2RlQW5kRGVzY2VuZGFudHMoTm9kZSosIEhhc2hT
ZXQ8UmVmPE5vZGU+PiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNwcAppbmRleCA4YmJiN2Q3
MmUxYWJjNjAzNjAyNTJhOGE5NzViYjg4ODQzYTljYmNjLi4zNWU4OTQyMDFmNTkxOTBjMzQwZmVh
ZjRlYWRjNTk3ZGRmNjY2YTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0lu
c2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBJbnNl
cnRJbnRvVGV4dE5vZGVDb21tYW5kOjpkb1VuYXBwbHkoKQogCiAjaWZuZGVmIE5ERUJVRwogCi12
b2lkIEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8
Tm9kZSo+JiBub2RlcykKK3ZvaWQgSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZDo6Z2V0Tm9kZXNJ
bkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+JiBub2RlcykKIHsKICAgICBhZGROb2RlQW5kRGVz
Y2VuZGFudHMobV9ub2RlLnB0cigpLCBub2Rlcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oCmluZGV4IDIzNmRkNmY1MjgwODcy
MTU5N2M3ZjFkNGVjYzQwZjg1MWNjOThhOGUuLjE1NTk3YzYyMTZlM2Q4NDM0ZDc0YzkxY2FmNTMw
M2FjYjhlOTFjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50
b1RleHROb2RlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50
b1RleHROb2RlQ29tbWFuZC5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
b1JlYXBwbHkoKSBvdmVycmlkZTsKICAgICAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBnZXRO
b2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Tm9k
ZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+Jikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICAK
ICAgICBSZWY8VGV4dD4gbV9ub2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9JbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0lu
c2VydE5vZGVCZWZvcmVDb21tYW5kLmNwcAppbmRleCBkYTFkZjY4YmY3NWZlMmUxNmY2MDk4ZWI4
ZTVmMjA1Y2EzMDg1MmE2Li5mNGQ3MGJjNzkxZjliYTM2M2JhN2QyN2NmOGY2YTlkZjU3MzY0ODMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21t
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21t
YW5kLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEluc2VydE5vZGVCZWZvcmVDb21tYW5kOjpk
b1VuYXBwbHkoKQogfQogCiAjaWZuZGVmIE5ERUJVRwotdm9pZCBJbnNlcnROb2RlQmVmb3JlQ29t
bWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mIG5vZGVzKQordm9pZCBJbnNl
cnROb2RlQmVmb3JlQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+
JiBub2RlcykKIHsKICAgICBhZGROb2RlQW5kRGVzY2VuZGFudHMobV9pbnNlcnRDaGlsZC5wdHIo
KSwgbm9kZXMpOwogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX3JlZkNoaWxkLnB0cigpLCBu
b2Rlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydE5vZGVCZWZv
cmVDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21t
YW5kLmgKaW5kZXggMjVkMzQzYzhlMTMzMTY0MThlNzQwMGFkYzgyNWEwZjhjZTUxNjY3Yi4uYWI0
MGZjZjc3YmJhNmMxODM0OThkOTczZWE5MDhjMjE5NTcwOWU4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuaApAQCAtNDUsNyArNDUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZG9VbmFwcGx5KCkgb3ZlcnJpZGU7CiAKICNpZm5kZWYgTkRF
QlVHCi0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRl
OworICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+Jikgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAogICAgIFJlZjxOb2RlPiBtX2luc2VydENoaWxkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmNw
cAppbmRleCBkNjFkZWI3ZjgxYTgxMjcxNzEwOTc4NGI4MTZjYjM4NmQxOGI3YmEyLi4zMjkzNTM0
OWMwYjFiZjE1Mzc5ZWM4MzhiNDU2NzY4MjI1YjhhMjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmNwcApAQCAt
NzUsNyArNzUsNyBAQCB2b2lkIE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpkb1VuYXBw
bHkoKQogfQogCiAjaWZuZGVmIE5ERUJVRwotdm9pZCBNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29t
bWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mIG5vZGVzKQordm9pZCBNZXJn
ZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8
Tm9kZT4+JiBub2RlcykKIHsKICAgICBhZGROb2RlQW5kRGVzY2VuZGFudHMobV9lbGVtZW50MS5w
dHIoKSwgbm9kZXMpOwogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX2VsZW1lbnQyLnB0cigp
LCBub2Rlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRp
Y2FsRWxlbWVudHNDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRp
Y2FsRWxlbWVudHNDb21tYW5kLmgKaW5kZXggNjg2YWJhNmM4MjZiNzdlY2Q5MzViNmM0Y2ExN2I1
YTEzMzE1MThlZS4uY2Q4ZDMzM2ExZTdhMTg3YTcxMzUwNTEyZWM4NzUxNTcxNjcwZmRmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29t
bWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50
c0NvbW1hbmQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZG9VbmFwcGx5
KCkgb3ZlcnJpZGU7CiAgICAgCiAjaWZuZGVmIE5ERUJVRwotICAgIHZvaWQgZ2V0Tm9kZXNJbkNv
bW1hbmQoSGFzaFNldDxOb2RlKj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldE5vZGVzSW5Db21t
YW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgCiAgICAgUmVm
PEVsZW1lbnQ+IG1fZWxlbWVudDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlbW92ZU5vZGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9k
ZUNvbW1hbmQuY3BwCmluZGV4IDA5YWUxOTY1M2QyZWY0NDEyY2Y1MjViODllYzE1YzI1OWQzODYx
YzMuLmFkMzY2Mzg1MGYzM2I1OGRmZDJiZWM1MWJkYTA2NjJkMWQ1MmM5YzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwCkBAIC02Niw3ICs2Niw3IEBA
IHZvaWQgUmVtb3ZlTm9kZUNvbW1hbmQ6OmRvVW5hcHBseSgpCiB9CiAKICNpZm5kZWYgTkRFQlVH
Ci12b2lkIFJlbW92ZU5vZGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUq
PiYgbm9kZXMpCit2b2lkIFJlbW92ZU5vZGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNo
U2V0PFJlZjxOb2RlPj4mIG5vZGVzKQogewogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX3Bh
cmVudC5nZXQoKSwgbm9kZXMpOwogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX3JlZkNoaWxk
LmdldCgpLCBub2Rlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92
ZU5vZGVDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5k
LmgKaW5kZXggMzE2ZTJhNDk3NzY3MDU5NDhlMTU2NDI1OWQ1ZDJiMTYzZWRkMTcyMC4uMGE2ZWE3
YzY0ZDk1ZGE4NGQ0YjQzMzIwY2ViNmZlNTNlMWMxMDU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZG9VbmFwcGx5KCkgb3ZlcnJpZGU7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBn
ZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0
Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAog
ICAgIFJlZjxOb2RlPiBtX25vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwCmluZGV4IDczNGUwM2M5YmQxMGIwNzUwOWI5
ODRlOGFjMjM2NTZlNmVlMDQ5YjQuLmI4ZDk5ZjBhZTc0MjJjYTU1ODM4ZjFmMTM1NzBlZDgxODk2
YjlkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRo
U3BhbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVX
aXRoU3BhbkNvbW1hbmQuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgUmVwbGFjZU5vZGVXaXRo
U3BhbkNvbW1hbmQ6OmRvVW5hcHBseSgpCiB9CiAKICNpZm5kZWYgTkRFQlVHCi12b2lkIFJlcGxh
Y2VOb2RlV2l0aFNwYW5Db21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYg
bm9kZXMpCit2b2lkIFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kOjpnZXROb2Rlc0luQ29tbWFu
ZChIYXNoU2V0PFJlZjxOb2RlPj4mIG5vZGVzKQogewogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50
cyhtX2VsZW1lbnRUb1JlcGxhY2UucHRyKCksIG5vZGVzKTsKICAgICBhZGROb2RlQW5kRGVzY2Vu
ZGFudHMobV9zcGFuRWxlbWVudC5nZXQoKSwgbm9kZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5oCmluZGV4IGU1ZDMwZmM1ZjI3
MTYwZGZjNzdmYjk5NTk0YzBiYmRjNjA2OTkwYzMuLjQ2MGMwNzNiMzZmMzQ0YjI3NTE1YzE1ZTMw
ZWFlYTJjZTFhMWU4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZU5vZGVXaXRoU3BhbkNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VOb2RlV2l0aFNwYW5Db21tYW5kLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOwogICAgIAogI2lmbmRlZiBOREVCVUcKLSAgICB2b2lk
IGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBn
ZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PFJlZjxOb2RlPj4mKSBvdmVycmlkZTsKICNlbmRpZgog
CiAgICAgUmVmPEhUTUxFbGVtZW50PiBtX2VsZW1lbnRUb1JlcGxhY2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuY3BwCmluZGV4IDFlMmJi
YmNmYmU1NjgxNmZkM2FiZWYwNDlhNjNjOWY3MGMwZmIwYTQuLmQ2NjJkZDViYzhjMGJhOWM1YjBk
MmE1N2VhNDcyZWI3ZWQxZDEyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgU2V0Tm9k
ZUF0dHJpYnV0ZUNvbW1hbmQ6OmRvVW5hcHBseSgpCiB9CiAKICNpZm5kZWYgTkRFQlVHCi12b2lk
IFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUq
PiYgbm9kZXMpCit2b2lkIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFu
ZChIYXNoU2V0PFJlZjxOb2RlPj4mIG5vZGVzKQogewogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50
cyhtX2VsZW1lbnQucHRyKCksIG5vZGVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuaAppbmRleCBkZTUxMmM1MGU3MjcwZTA0OWM0OGFl
Y2QxY2Y3N2Q5YTViODczZWQwLi43ZTllNTljYTFmYWVlMWU3NzIyMWM3M2ZmMzU1OTE4ZDUxM2Rh
ZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVD
b21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29t
bWFuZC5oCkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1VuYXBwbHkoKSBv
dmVycmlkZTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhh
c2hTZXQ8Tm9kZSo+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNo
U2V0PFJlZjxOb2RlPj4mKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgUmVmPEVsZW1lbnQ+IG1f
ZWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0U2VsZWN0aW9u
Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmgK
aW5kZXggZjZjOWYwNjMwYjVmZjFiOGJhMWNkNTkyNGNlZDE1Y2MzOWEzZmJiZS4uMGFiNzU4YjE1
ZDU0ZmYwOWUwOTFhY2Q3NzgwNmQzOGZhMTRhNWJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIHZvaWQg
Z2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mKSBvdmVycmlkZSB7IH0KKyAgICB2b2lk
IGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYpIG92ZXJyaWRlIHsgfQogI2Vu
ZGlmCiAKICAgICBPcHRpb25TZXQ8RnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbj4g
bV9vcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0Nv
cnJlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3Jy
ZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggYTg0ODY2MzY1M2EwZjdmZjI5NzM3MzZiMTE5NzJjOGM2
NGM4Y2FhZC4uOWJkMjljNzI2NDNmMGFhN2UzMTVmMzdiZDYzNTcxYzkwZGRhZGVkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQu
Y3BwCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAjaWZuZGVmIE5ERUJVRwot
ICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mKSBvdmVycmlkZQorICAg
IHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+Jikgb3ZlcnJpZGUKICAg
ICB7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
bGl0RWxlbWVudENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1l
bnRDb21tYW5kLmNwcAppbmRleCBmNTZmOTZhODgwOTc0N2E1YzUyZmQ5NzZkMDFkNjRjNDQwNDcy
M2E3Li45NDJmN2VmZmYzZDM2M2RmMzZjNmVlMjY4MThhODYwYTI1MzNhMTlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAKQEAgLTEwMSw3ICsx
MDEsNyBAQCB2b2lkIFNwbGl0RWxlbWVudENvbW1hbmQ6OmRvUmVhcHBseSgpCiB9CiAKICNpZm5k
ZWYgTkRFQlVHCi12b2lkIFNwbGl0RWxlbWVudENvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhh
c2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgU3BsaXRFbGVtZW50Q29tbWFuZDo6Z2V0Tm9kZXNJ
bkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+JiBub2RlcykKIHsKICAgICBhZGROb2RlQW5kRGVz
Y2VuZGFudHMobV9lbGVtZW50MS5nZXQoKSwgbm9kZXMpOwogICAgIGFkZE5vZGVBbmREZXNjZW5k
YW50cyhtX2VsZW1lbnQyLnB0cigpLCBub2Rlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U3BsaXRFbGVtZW50Q29tbWFuZC5oCmluZGV4IDk4MzE2NTFiMDAwYWE3NTRkYmZiNjE3MDQ3NmQ3
Y2NjNzQzOTBlZjIuLjQ5YzE2YTE4MWM0ZjhhZGZjNWI0ZGY1YzNjYWVmMmQ1YjA0YWQyNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5oCkBAIC00NSw3
ICs0NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBleGVjdXRlQXBwbHkoKTsKIAogI2lmbmRlZiBO
REVCVUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PFJlZjxOb2RlPj4mKSBvdmVy
cmlkZTsKICNlbmRpZgogCiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fZWxlbWVudDE7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0VGV4dE5vZGVDb21tYW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3BwCmluZGV4IGExNjQ1
MmM2YTRhYTM1ZGE5YWFmMGZhMDllMGNkMGM1YjA1MjQ1OWYuLjA5MDNiYzA3ZmY4M2YxNjE0ZWU4
MzViNzNkNTVlNDUwMWZmMDI3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bs
aXRUZXh0Tm9kZUNvbW1hbmQuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBTcGxpdFRleHRO
b2RlQ29tbWFuZDo6aW5zZXJ0VGV4dDFBbmRUcmltVGV4dDIoKQogCiAjaWZuZGVmIE5ERUJVRwog
Ci12b2lkIFNwbGl0VGV4dE5vZGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5v
ZGUqPiYgbm9kZXMpCit2b2lkIFNwbGl0VGV4dE5vZGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFu
ZChIYXNoU2V0PFJlZjxOb2RlPj4mIG5vZGVzKQogewogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50
cyhtX3RleHQxLmdldCgpLCBub2Rlcyk7CiAgICAgYWRkTm9kZUFuZERlc2NlbmRhbnRzKG1fdGV4
dDIucHRyKCksIG5vZGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bs
aXRUZXh0Tm9kZUNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRUZXh0Tm9k
ZUNvbW1hbmQuaAppbmRleCBiOTkxOWQ2NzA4NzE5MjIyOWMwNWMzODczZmY5ZjIwMTI5MTI4ZmQw
Li45YWQwODQ0OGVmNTRhZTg3MTU0MmFhYzNmM2E3OTNlOWYxODI0M2ZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0VGV4dE5vZGVDb21tYW5kLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5oCkBAIC00Nyw3ICs0Nyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBpbnNlcnRUZXh0MUFuZFRyaW1UZXh0MigpOwogICAgIAogI2lm
bmRlZiBOREVCVUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PFJlZjxOb2RlPj4m
KSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgUmVmUHRyPFRleHQ+IG1fdGV4dDE7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dyYXBDb250ZW50c0luRHVtbXlTcGFuQ29t
bWFuZC5jcHAKaW5kZXggNDAwNmZhOGVkMWZiM2UyYjZlZTFiZGY3NmYwM2I4YmJjYWQ2NzZlNi4u
MThiZGIzMDhiYThhNDRjNzVkZjFlNjk4NzU4MDFmMWRiZmFkYTJmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5k
LmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFu
ZDo6ZG9SZWFwcGx5KCkKIH0KIAogI2lmbmRlZiBOREVCVUcKLXZvaWQgV3JhcENvbnRlbnRzSW5E
dW1teVNwYW5Db21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYgbm9kZXMp
Cit2b2lkIFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQo
SGFzaFNldDxSZWY8Tm9kZT4+JiBub2RlcykKIHsKICAgICBhZGROb2RlQW5kRGVzY2VuZGFudHMo
bV9lbGVtZW50LnB0cigpLCBub2Rlcyk7CiAgICAgYWRkTm9kZUFuZERlc2NlbmRhbnRzKG1fZHVt
bXlTcGFuLmdldCgpLCBub2Rlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1dyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuaAppbmRleCBmYmQwYTFkNmZiNTYyNDli
ZWI4YWM3OGY0MjgyZTM2ODQ5YjlhYmM4Li5mODM4MTFmNTcyZjE3MWRiZTlhMzU2MzI0MDgwYWY1
MjQyZmEzZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dyYXBDb250ZW50
c0luRHVtbXlTcGFuQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV3JhcENv
bnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGV4ZWN1dGVBcHBseSgpOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIHZvaWQgZ2V0Tm9k
ZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldE5vZGVz
SW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBS
ZWY8RWxlbWVudD4gbV9lbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9I
VE1MQ29udmVydGVyLm1tCmluZGV4IDA2ODI2ZjEyNDE4N2JkYmQ0ZjFhNDljNDM3MGVjNmVmNGQw
ZDhlZjUuLjEwZGIzMjJhNmI5ZDczYjM0OGMxMDk4MjAyNThiMDI5Y2Y0OGQ0YmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTI2MSw3ICsy
NjEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSGFzaE1hcDxFbGVtZW50Kiwgc3RkOjp1
bmlxdWVfcHRyPENvbXB1dGVkU3R5bGVFeHRyYWN0b3I+PiBtX2NvbXB1dGVkU3R5bGVzOwotICAg
IEhhc2hTZXQ8Tm9kZSo+IG1fYW5jZXN0b3JzVW5kZXJDb21tb25BbmNlc3RvcjsKKyAgICBIYXNo
U2V0PFJlZjxOb2RlPj4gbV9hbmNlc3RvcnNVbmRlckNvbW1vbkFuY2VzdG9yOwogfTsKIAogQGlu
dGVyZmFjZSBOU1RleHRMaXN0IChXZWJDb3JlTlNUZXh0TGlzdERldGFpbHMpCkBAIC0yMjgzLDcg
KzIyODMsNyBAQCBOb2RlKiBIVE1MQ29udmVydGVyQ2FjaGVzOjpjYWNoZUFuY2VzdG9yc09mU3Rh
cnRUb0JlQ29udmVydGVkKGNvbnN0IFBvc2l0aW9uJiBzdAogICAgIE5vZGUqIGFuY2VzdG9yID0g
c3RhcnQuY29udGFpbmVyTm9kZSgpOwogCiAgICAgd2hpbGUgKGFuY2VzdG9yKSB7Ci0gICAgICAg
IG1fYW5jZXN0b3JzVW5kZXJDb21tb25BbmNlc3Rvci5hZGQoYW5jZXN0b3IpOworICAgICAgICBt
X2FuY2VzdG9yc1VuZGVyQ29tbW9uQW5jZXN0b3IuYWRkKCphbmNlc3Rvcik7CiAgICAgICAgIGlm
IChhbmNlc3RvciA9PSBjb21tb25BbmNlc3RvcikKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnRJbkNvbXBvc2VkVHJlZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApp
bmRleCA1ZTM0M2E1NGJhNzIxNzI5YjgxMjkyYzYwNjM5OTI1ZGMxZDBkZWExLi42Yjg0MGViNTg2
NWNjODRkODE0NTM5NjMwY2VmMzcyODZkMTdlZjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMTMzNSw3ICsx
MzM1LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NQWdlbnQ6
OmhpZ2hsaWdodFNlbGVjdG9yKFJlZjxKU09OOjpPYmoKICAgICBTZWxlY3RvckNoZWNrZXIgc2Vs
ZWN0b3JDaGVja2VyKCpkb2N1bWVudCk7CiAKICAgICBWZWN0b3I8UmVmPE5vZGU+PiBub2RlTGlz
dDsKLSAgICBIYXNoU2V0PE5vZGUqPiBzZWVuTm9kZXM7CisgICAgSGFzaFNldDxSZWY8Tm9kZT4+
IHNlZW5Ob2RlczsKIAogICAgIGZvciAoYXV0byYgZGVzY2VuZGFudCA6IGNvbXBvc2VkVHJlZURl
c2NlbmRhbnRzKCpkb2N1bWVudCkpIHsKICAgICAgICAgaWYgKCFpczxFbGVtZW50PihkZXNjZW5k
YW50KSkKQEAgLTEzNTUsNyArMTM1NSw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+
IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRTZWxlY3RvcihSZWY8SlNPTjo6T2JqCiAgICAg
ICAgICAgICBjb250ZXh0LnBzZXVkb0lkID0gcHNldWRvSWQ7CiAKICAgICAgICAgICAgIGlmIChz
ZWxlY3RvckNoZWNrZXIubWF0Y2goKnNlbGVjdG9yLCBkZXNjZW5kYW50RWxlbWVudCwgY29udGV4
dCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2Vlbk5vZGVzLmFkZCgmZGVzY2VuZGFudEVsZW1l
bnQpKQorICAgICAgICAgICAgICAgIGlmIChzZWVuTm9kZXMuYWRkKGRlc2NlbmRhbnRFbGVtZW50
KSkKICAgICAgICAgICAgICAgICAgICAgbm9kZUxpc3QuYXBwZW5kKGRlc2NlbmRhbnRFbGVtZW50
KTsKICAgICAgICAgICAgIH0KIApAQCAtMTM2NSw3ICsxMzY1LDcgQEAgUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFNlbGVjdG9yKFJlZjxK
U09OOjpPYmoKICAgICAgICAgICAgICAgICBpZiAocHNldWRvSURzLmhhcyhQc2V1ZG9JZDo6QmVm
b3JlKSkgewogICAgICAgICAgICAgICAgICAgICBwc2V1ZG9JRHMucmVtb3ZlKFBzZXVkb0lkOjpC
ZWZvcmUpOwogICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogYmVmb3JlUHNldWRvRWxlbWVu
dCA9IGRlc2NlbmRhbnRFbGVtZW50LmJlZm9yZVBzZXVkb0VsZW1lbnQoKSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHNlZW5Ob2Rlcy5hZGQoYmVmb3JlUHNldWRvRWxlbWVudCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2Vlbk5vZGVzLmFkZCgqYmVmb3JlUHNldWRvRWxl
bWVudCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUxpc3QuYXBwZW5kKCpiZWZv
cmVQc2V1ZG9FbGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0KQEAgLTEzNzMsMTMgKzEzNzMsMTMgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4g
SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFNlbGVjdG9yKFJlZjxKU09OOjpPYmoKICAgICAg
ICAgICAgICAgICBpZiAocHNldWRvSURzLmhhcyhQc2V1ZG9JZDo6QWZ0ZXIpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHBzZXVkb0lEcy5yZW1vdmUoUHNldWRvSWQ6OkFmdGVyKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGF1dG8qIGFmdGVyUHNldWRvRWxlbWVudCA9IGRlc2NlbmRhbnRFbGVt
ZW50LmFmdGVyUHNldWRvRWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
c2Vlbk5vZGVzLmFkZChhZnRlclBzZXVkb0VsZW1lbnQpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHNlZW5Ob2Rlcy5hZGQoKmFmdGVyUHNldWRvRWxlbWVudCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZUxpc3QuYXBwZW5kKCphZnRlclBzZXVkb0VsZW1lbnQpOwogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
aWYgKHBzZXVkb0lEcykgewotICAgICAgICAgICAgICAgICAgICBpZiAoc2Vlbk5vZGVzLmFkZCgm
ZGVzY2VuZGFudEVsZW1lbnQpKQorICAgICAgICAgICAgICAgICAgICBpZiAoc2Vlbk5vZGVzLmFk
ZChkZXNjZW5kYW50RWxlbWVudCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlTGlzdC5h
cHBlbmQoZGVzY2VuZGFudEVsZW1lbnQpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCmluZGV4IDEwZjBjMjJkNGI2N2Nl
NWZmYTNiODMwNjljYmY0MDYwNTEyMWVlZDUuLmFjZDNjOTQ0MmNhNTA0MTkwMjNkN2U0OWNjYWJh
YzIwNDUzOTdjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9u
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcApAQCAtMzI5
LDcgKzMyOSw3IEBAIFZhbHVlIEZ1bklkOjpldmFsdWF0ZSgpIGNvbnN0CiAgICAgCiAgICAgVHJl
ZVNjb3BlJiBjb250ZXh0U2NvcGUgPSBldmFsdWF0aW9uQ29udGV4dCgpLm5vZGUtPnRyZWVTY29w
ZSgpOwogICAgIE5vZGVTZXQgcmVzdWx0OwotICAgIEhhc2hTZXQ8Tm9kZSo+IHJlc3VsdFNldDsK
KyAgICBIYXNoU2V0PFJlZjxOb2RlPj4gcmVzdWx0U2V0OwogCiAgICAgdW5zaWduZWQgc3RhcnRQ
b3MgPSAwOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlkTGlzdC5sZW5ndGgoKTsKQEAgLTM0Nyw3
ICszNDcsNyBAQCBWYWx1ZSBGdW5JZDo6ZXZhbHVhdGUoKSBjb25zdAogICAgICAgICAvLyBJZiB0
aGVyZSBhcmUgc2V2ZXJhbCBub2RlcyB3aXRoIHRoZSBzYW1lIGlkLCBpZCgpIHNob3VsZCByZXR1
cm4gdGhlIGZpcnN0IG9uZS4KICAgICAgICAgLy8gSW4gV2ViS2l0LCBnZXRFbGVtZW50QnlJZCBi
ZWhhdmVzIHNvLCB0b28sIGFsdGhvdWdoIGl0cyBiZWhhdmlvciBpbiB0aGlzIGNhc2UgaXMgZm9y
bWFsbHkgdW5kZWZpbmVkLgogICAgICAgICBOb2RlKiBub2RlID0gY29udGV4dFNjb3BlLmdldEVs
ZW1lbnRCeUlkKHRvU3RyaW5nVmlldyhpZExpc3QpLnN1YnN0cmluZyhzdGFydFBvcywgZW5kUG9z
IC0gc3RhcnRQb3MpKTsKLSAgICAgICAgaWYgKG5vZGUgJiYgcmVzdWx0U2V0LmFkZChub2RlKS5p
c05ld0VudHJ5KQorICAgICAgICBpZiAobm9kZSAmJiByZXN1bHRTZXQuYWRkKCpub2RlKS5pc05l
d0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChub2RlKTsKICAgICAgICAgCiAgICAg
ICAgIHN0YXJ0UG9zID0gZW5kUG9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoTm9kZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmNwcAppbmRl
eCBkMDRiZDYyYzE0NDNhMWE4Nzk5OWY5NmIwMDNjMmY3MmM4ODYzMDI0Li4zMGRjNTVhYmM3MTc5
MzBlOWZkYzVhY2UzOGIwYjE3NzlmNGUzYTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhOb2RlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0
LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB2b2lkIHNvcnRCbG9jayh1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCB0bywgVmVjdG9yPFZlY3RvcjxOb2RlKj4+JiBwYXJlbnRNCiAKICAgICAv
LyBDaGlsZHJlbiBub2RlcyBvZiB0aGUgY29tbW9uIGFuY2VzdG9yIGluZHVjZSBhIHN1YmRpdmlz
aW9uIG9mIG91ciBub2RlLXNldC4KICAgICAvLyBTb3J0IGl0IGFjY29yZGluZyB0byB0aGlzIHN1
YmRpdmlzaW9uLCBhbmQgcmVjdXJzaXZlbHkgc29ydCBlYWNoIGdyb3VwLgotICAgIEhhc2hTZXQ8
Tm9kZSo+IHBhcmVudE5vZGVzOworICAgIEhhc2hTZXQ8UmVmUHRyPE5vZGU+PiBwYXJlbnROb2Rl
czsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBmcm9tOyBpIDwgdG87ICsraSkKICAgICAgICAgcGFy
ZW50Tm9kZXMuYWRkKHBhcmVudFdpdGhEZXB0aChjb21tb25BbmNlc3RvckRlcHRoICsgMSwgcGFy
ZW50TWF0cml4W2ldKSk7CiAKQEAgLTE5Miw3ICsxOTIsNyBAQCBzdGF0aWMgTm9kZSogZmluZFJv
b3ROb2RlKE5vZGUqIG5vZGUpCiAKIHZvaWQgTm9kZVNldDo6dHJhdmVyc2FsU29ydCgpIGNvbnN0
CiB7Ci0gICAgSGFzaFNldDxOb2RlKj4gbm9kZXM7CisgICAgSGFzaFNldDxSZWZQdHI8Tm9kZT4+
IG5vZGVzOwogICAgIGJvb2wgY29udGFpbnNBdHRyaWJ1dGVOb2RlcyA9IGZhbHNlOwogCiAgICAg
dW5zaWduZWQgbm9kZUNvdW50ID0gbV9ub2Rlcy5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFBhdGhQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhdGgu
Y3BwCmluZGV4IGEyMDUyNGQ5YzJkMjhmZjBlNzVkNjA4NjRjZGZkZDNkNjBhYTE1YjkuLjVjZjNi
MzY5MjQyOWFmNjY0MmEyZjg4MGQxMTRjMGRkZWNmMjVmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YUGF0aFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBh
dGguY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBMb2NhdGlvblBhdGg6OmV2YWx1YXRlKE5v
ZGVTZXQmIG5vZGVzKSBjb25zdAogCiAgICAgZm9yIChhdXRvJiBzdGVwIDogbV9zdGVwcykgewog
ICAgICAgICBOb2RlU2V0IG5ld05vZGVzOwotICAgICAgICBIYXNoU2V0PE5vZGUqPiBuZXdOb2Rl
c1NldDsKKyAgICAgICAgSGFzaFNldDxSZWZQdHI8Tm9kZT4+IG5ld05vZGVzU2V0OwogCiAgICAg
ICAgIGJvb2wgbmVlZFRvQ2hlY2tGb3JEdXBsaWNhdGVOb2RlcyA9ICFub2Rlcy5zdWJ0cmVlc0Fy
ZURpc2pvaW50KCkgfHwgKHN0ZXAtPmF4aXMoKSAhPSBTdGVwOjpDaGlsZEF4aXMgJiYgc3RlcC0+
YXhpcygpICE9IFN0ZXA6OlNlbGZBeGlzCiAgICAgICAgICAgICAmJiBzdGVwLT5heGlzKCkgIT0g
U3RlcDo6RGVzY2VuZGFudEF4aXMgJiYgc3RlcC0+YXhpcygpICE9IFN0ZXA6OkRlc2NlbmRhbnRP
clNlbGZBeGlzICYmIHN0ZXAtPmF4aXMoKSAhPSBTdGVwOjpBdHRyaWJ1dGVBeGlzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCmluZGV4IGMxYmJjNTRlYjgzMDE2OTExOWM4Njgz
MWE0ZjJhNmU3YzAwNDU2OGQuLmYzNWVkMjhiNDE5MmQ4OTk2MTljOWFhZWU5NWI1ZDUzYWUzNTEy
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcApAQCAtMjQxLDcgKzI0MSw3
IEBAIFZhbHVlIFVuaW9uOjpldmFsdWF0ZSgpIGNvbnN0CiAgICAgTm9kZVNldCYgcmVzdWx0U2V0
ID0gbGhzUmVzdWx0Lm1vZGlmaWFibGVOb2RlU2V0KCk7CiAgICAgY29uc3QgTm9kZVNldCYgcmhz
Tm9kZXMgPSByaHMudG9Ob2RlU2V0KCk7CiAKLSAgICBIYXNoU2V0PE5vZGUqPiBub2RlczsKKyAg
ICBIYXNoU2V0PFJlZlB0cjxOb2RlPj4gbm9kZXM7CiAgICAgZm9yIChhdXRvJiByZXN1bHQgOiBy
ZXN1bHRTZXQpCiAgICAgICAgIG5vZGVzLmFkZChyZXN1bHQuZ2V0KCkpOwogCg==
</data>
<flag name="commit-queue"
          id="449034"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428185</attachid>
            <date>2021-05-10 11:14:58 -0700</date>
            <delta_ts>2021-05-10 17:52:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220464-20210510111457.patch</filename>
            <type>text/plain</type>
            <size>36396</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDAzYTZjYWRlMWE5NWY3
NjdkYmQ2MjAzZDJjN2VlMTNjMjZlZDQ1Ny4uYTcyOTg3MTk2ZjkwYmUxZDVhNjBlMTY5ODEwYmJj
MmJmNGFkM2JkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDIxLTA1LTEwICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIEhh
c2hTZXQ8UmVmUHRyPE5vZGU+PiBpbnN0ZWFkIG9mIEhhc2hTZXQ8Tm9kZSo+CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA0NjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1ha2VzIHVzIG1vcmUg
cmVzaXN0ZW50IHRvIGxpZmV0aW1lIGJ1Z3MuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uZGl0aW9uYWxseUFkZE5vZGVU
b0ZpbHRlckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsdGVyVmVjdG9yUGFpckZvclJlbW92
YWwpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsdGVyTWFwRm9yUmVtb3ZhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpmaWx0ZXJMaXN0Rm9yUmVtb3ZhbCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVj
dENhY2hlOjpwcmVwYXJlRm9yRG9jdW1lbnREZXN0cnVjdGlvbik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
TXV0YXRpb25PYnNlcnZlck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAg
ICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRp
b25PYnNlcnZlcjo6b2JzZXJ2ZWROb2RlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjogY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmg6CisgICAgICAg
ICogZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6YWRkUmVnaXN0cmF0aW9uTm9kZXNUb1Nl
dCBjb25zdCk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaDoK
KyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsaXZlTm9kZVNldCk6
CisgICAgICAgIChXZWJDb3JlOjppZ25vcmVTZXQpOgorICAgICAgICAqIGVkaXRpbmcvQXBwZW5k
Tm9kZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kTm9kZUNvbW1hbmQ6Omdl
dE5vZGVzSW5Db21tYW5kKToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmg6
CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAg
ICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcv
RGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVG
cm9tVGV4dE5vZGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAgICogZWRpdGlu
Zy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0Q29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVFZGl0Q29tbWFuZDo6YWRkTm9kZUFu
ZERlc2NlbmRhbnRzKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRDb21tYW5kLmg6CisgICAgICAg
ICogZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKToKKyAgICAg
ICAgKiBlZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0
aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2Vy
dE5vZGVCZWZvcmVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAgICogZWRpdGlu
Zy9JbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvTWVyZ2VJZGVu
dGljYWxFbGVtZW50c0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVyZ2VJZGVudGlj
YWxFbGVtZW50c0NvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKToKKyAgICAgICAgKiBlZGl0aW5n
L01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9SZW1v
dmVOb2RlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdmVOb2RlQ29tbWFuZDo6
Z2V0Tm9kZXNJbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQu
aDoKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kOjpnZXROb2Rlc0luQ29t
bWFuZCk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5oOgor
ICAgICAgICAqIGVkaXRpbmcvU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKToKKyAg
ICAgICAgKiBlZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmg6CisgICAgICAgICogZWRp
dGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9TcGVsbGluZ0Nv
cnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL1NwbGl0RWxlbWVudENvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BsaXRFbGVtZW50Q29tbWFuZDo6Z2V0Tm9kZXNJ
bkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5oOgorICAg
ICAgICAqIGVkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3BsaXRUZXh0Tm9kZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKToKKyAgICAgICAgKiBl
ZGl0aW5nL1NwbGl0VGV4dE5vZGVDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9XcmFwQ29u
dGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V3JhcENvbnRl
bnRzSW5EdW1teVNwYW5Db21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAgICogZWRp
dGluZy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyQ2FjaGVzOjpj
YWNoZUFuY2VzdG9yc09mU3RhcnRUb0JlQ29udmVydGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpoaWdobGlnaHRTZWxlY3Rvcik6CisgICAgICAgICogeG1sL1hQYXRoRnVuY3Rp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5JZDo6ZXZhbHVhdGUgY29uc3Qp
OgorICAgICAgICAqIHhtbC9YUGF0aE5vZGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBh
dGg6OnNvcnRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6Tm9kZVNldDo6dHJhdmVy
c2FsU29ydCBjb25zdCk6CisgICAgICAgICogeG1sL1hQYXRoUGF0aC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpYUGF0aDo6TG9jYXRpb25QYXRoOjpldmFsdWF0ZSBjb25zdCk6CisgICAgICAgICog
eG1sL1hQYXRoUHJlZGljYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpVbmlvbjo6
ZXZhbHVhdGUgY29uc3QpOgorCiAyMDIxLTA1LTEwICBBbGljaWEgQm95YSBHYXJjw61hICA8YWJv
eWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbTVNFXVtHU3RyZWFtZXJdIFJlbW92ZSBzdGFsZSBQ
bGF5YmFja1BpcGVsaW5lLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHAKaW5kZXggZWM4MTYxZTQwYTc1MTRkODE3MjE1YmM2YzgyNmNkNzU2MGVh
NDg1Ni4uM2QyYzUyNTk4NDY4MTA4N2Q4MDY2MWZmMzA1ZTc3ODA2MmE1YzA1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0zMDc5LDE0
ICszMDc5LDE0IEBAIGNvbnN0IEVsZW1lbnQqIEFYT2JqZWN0Q2FjaGU6OnJvb3RBWEVkaXRhYmxl
RWxlbWVudChjb25zdCBOb2RlKiBub2RlKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRp
YyB2b2lkIGNvbmRpdGlvbmFsbHlBZGROb2RlVG9GaWx0ZXJMaXN0KE5vZGUqIG5vZGUsIGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCwgSGFzaFNldDxOb2RlKj4mIG5vZGVzVG9SZW1vdmUpCitzdGF0
aWMgdm9pZCBjb25kaXRpb25hbGx5QWRkTm9kZVRvRmlsdGVyTGlzdChOb2RlKiBub2RlLCBjb25z
dCBEb2N1bWVudCYgZG9jdW1lbnQsIEhhc2hTZXQ8UmVmPE5vZGU+PiYgbm9kZXNUb1JlbW92ZSkK
IHsKICAgICBpZiAobm9kZSAmJiAoIW5vZGUtPmlzQ29ubmVjdGVkKCkgfHwgJm5vZGUtPmRvY3Vt
ZW50KCkgPT0gJmRvY3VtZW50KSkKLSAgICAgICAgbm9kZXNUb1JlbW92ZS5hZGQobm9kZSk7Cisg
ICAgICAgIG5vZGVzVG9SZW1vdmUuYWRkKCpub2RlKTsKIH0KICAgICAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci1zdGF0aWMgdm9pZCBmaWx0ZXJWZWN0b3JQYWlyRm9yUmVtb3ZhbChjb25zdCBWZWN0
b3I8c3RkOjpwYWlyPFQsIFQ+PiYgbGlzdCwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBIYXNo
U2V0PE5vZGUqPiYgbm9kZXNUb1JlbW92ZSkKK3N0YXRpYyB2b2lkIGZpbHRlclZlY3RvclBhaXJG
b3JSZW1vdmFsKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8VCwgVD4+JiBsaXN0LCBjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQsIEhhc2hTZXQ8UmVmPE5vZGU+PiYgbm9kZXNUb1JlbW92ZSkKIHsKICAg
ICBmb3IgKGF1dG8mIGVudHJ5IDogbGlzdCkgewogICAgICAgICBjb25kaXRpb25hbGx5QWRkTm9k
ZVRvRmlsdGVyTGlzdChlbnRyeS5maXJzdCwgZG9jdW1lbnQsIG5vZGVzVG9SZW1vdmUpOwpAQCAt
MzA5NSwxNCArMzA5NSwxNCBAQCBzdGF0aWMgdm9pZCBmaWx0ZXJWZWN0b3JQYWlyRm9yUmVtb3Zh
bChjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFQsIFQ+PiYgbGlzdCwgY29ucwogfQogICAgIAogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXN0YXRpYyB2b2lkIGZpbHRlck1hcEZvclJl
bW92YWwoY29uc3QgSGFzaE1hcDxULCBVPiYgbGlzdCwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
LCBIYXNoU2V0PE5vZGUqPiYgbm9kZXNUb1JlbW92ZSkKK3N0YXRpYyB2b2lkIGZpbHRlck1hcEZv
clJlbW92YWwoY29uc3QgSGFzaE1hcDxULCBVPiYgbGlzdCwgY29uc3QgRG9jdW1lbnQmIGRvY3Vt
ZW50LCBIYXNoU2V0PFJlZjxOb2RlPj4mIG5vZGVzVG9SZW1vdmUpCiB7CiAgICAgZm9yIChhdXRv
JiBlbnRyeSA6IGxpc3QpCiAgICAgICAgIGNvbmRpdGlvbmFsbHlBZGROb2RlVG9GaWx0ZXJMaXN0
KGVudHJ5LmtleSwgZG9jdW1lbnQsIG5vZGVzVG9SZW1vdmUpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotc3RhdGljIHZvaWQgZmlsdGVyTGlzdEZvclJlbW92YWwoY29uc3QgTGlzdEhhc2hT
ZXQ8VD4mIGxpc3QsIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgSGFzaFNldDxOb2RlKj4mIG5v
ZGVzVG9SZW1vdmUpCitzdGF0aWMgdm9pZCBmaWx0ZXJMaXN0Rm9yUmVtb3ZhbChjb25zdCBMaXN0
SGFzaFNldDxUPiYgbGlzdCwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBIYXNoU2V0PFJlZjxO
b2RlPj4mIG5vZGVzVG9SZW1vdmUpCiB7CiAgICAgZm9yIChhdXRvKiBub2RlIDogbGlzdCkKICAg
ICAgICAgY29uZGl0aW9uYWxseUFkZE5vZGVUb0ZpbHRlckxpc3Qobm9kZSwgZG9jdW1lbnQsIG5v
ZGVzVG9SZW1vdmUpOwpAQCAtMzExMCw3ICszMTEwLDcgQEAgc3RhdGljIHZvaWQgZmlsdGVyTGlz
dEZvclJlbW92YWwoY29uc3QgTGlzdEhhc2hTZXQ8VD4mIGxpc3QsIGNvbnN0IERvY3VtZW50JiBk
b2MKIAogdm9pZCBBWE9iamVjdENhY2hlOjpwcmVwYXJlRm9yRG9jdW1lbnREZXN0cnVjdGlvbihj
b25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgSGFzaFNldDxOb2RlKj4gbm9kZXNUb1Jl
bW92ZTsKKyAgICBIYXNoU2V0PFJlZjxOb2RlPj4gbm9kZXNUb1JlbW92ZTsKICAgICBmaWx0ZXJM
aXN0Rm9yUmVtb3ZhbChtX3RleHRNYXJrZXJOb2RlcywgZG9jdW1lbnQsIG5vZGVzVG9SZW1vdmUp
OwogICAgIGZpbHRlckxpc3RGb3JSZW1vdmFsKG1fbW9kYWxFbGVtZW50c1NldCwgZG9jdW1lbnQs
IG5vZGVzVG9SZW1vdmUpOwogICAgIGZpbHRlckxpc3RGb3JSZW1vdmFsKG1fZGVmZXJyZWRUZXh0
Q2hhbmdlZExpc3QsIGRvY3VtZW50LCBub2Rlc1RvUmVtb3ZlKTsKQEAgLTMxMTksOCArMzExOSw4
IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cHJlcGFyZUZvckRvY3VtZW50RGVzdHJ1Y3Rpb24oY29u
c3QgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIGZpbHRlck1hcEZvclJlbW92YWwobV9kZWZlcnJl
ZEF0dHJpYnV0ZUNoYW5nZSwgZG9jdW1lbnQsIG5vZGVzVG9SZW1vdmUpOwogICAgIGZpbHRlclZl
Y3RvclBhaXJGb3JSZW1vdmFsKG1fZGVmZXJyZWRGb2N1c2VkTm9kZUNoYW5nZSwgZG9jdW1lbnQs
IG5vZGVzVG9SZW1vdmUpOwogICAgIAotICAgIGZvciAoYXV0byogbm9kZSA6IG5vZGVzVG9SZW1v
dmUpCi0gICAgICAgIHJlbW92ZSgqbm9kZSk7CisgICAgZm9yIChhdXRvJiBub2RlIDogbm9kZXNU
b1JlbW92ZSkKKyAgICAgICAgcmVtb3ZlKG5vZGUpOwogfQogICAgIAogYm9vbCBBWE9iamVjdENh
Y2hlOjpub2RlSXNUZXh0Q29udHJvbChjb25zdCBOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKaW5k
ZXggMjU1YTY2ZWRlZGVlOTcwZjY3MjNlYzE1NjY0OTM2NzQxODYzZjBiOS4uMzUzYjc4OGQ0ZWM0
Yzc0NTZiNDFhMWQxMTU5MTgxNjdkZTA2ODRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCkBAIC00OSw3ICs0
OSw3IEBAIERFRklORV9WSVNJVF9BRERJVElPTkFMX0NISUxEUkVOKEpTTXV0YXRpb25PYnNlcnZl
cik7CiAKIGJvb2wgSlNNdXRhdGlvbk9ic2VydmVyT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgQWJzdHJhY3RT
bG90VmlzaXRvciYgdmlzaXRvciwgY29uc3QgY2hhcioqcmVhc29uKQogewotICAgIGZvciAoYXV0
byogbm9kZSA6IGpzQ2FzdDxKU011dGF0aW9uT2JzZXJ2ZXIqPihoYW5kbGUuc2xvdCgpLT5hc0Nl
bGwoKSktPndyYXBwZWQoKS5vYnNlcnZlZE5vZGVzKCkpIHsKKyAgICBmb3IgKGF1dG8mIG5vZGUg
OiBqc0Nhc3Q8SlNNdXRhdGlvbk9ic2VydmVyKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpLT53
cmFwcGVkKCkub2JzZXJ2ZWROb2RlcygpKSB7CiAgICAgICAgIGlmICh2aXNpdG9yLmNvbnRhaW5z
T3BhcXVlUm9vdChyb290KG5vZGUpKSkgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKHJlYXNv
bikpCiAgICAgICAgICAgICAgICAgKnJlYXNvbiA9ICJSZWFjaGFibGUgZnJvbSBvYnNlcnZlZCBu
b2RlcyI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKaW5kZXggYTRhYzBl
YjdlNTcxNzdjZjA0MjM3ZTZhOTIzY2M1MDMwNmUyYmJkNi4uNmY1MGYwMTRhZTZmMmZjMDhhMDg3
YTVlOGUyODA0MzUzNDM0NjkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVy
LmNwcApAQCAtMTY5LDkgKzE2OSw5IEBAIHZvaWQgTXV0YXRpb25PYnNlcnZlcjo6c2V0SGFzVHJh
bnNpZW50UmVnaXN0cmF0aW9uKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBldmVudExvb3AtPnF1
ZXVlTXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrKCk7CiB9CiAKLUhhc2hTZXQ8Tm9k
ZSo+IE11dGF0aW9uT2JzZXJ2ZXI6Om9ic2VydmVkTm9kZXMoKSBjb25zdAorSGFzaFNldDxSZWY8
Tm9kZT4+IE11dGF0aW9uT2JzZXJ2ZXI6Om9ic2VydmVkTm9kZXMoKSBjb25zdAogewotICAgIEhh
c2hTZXQ8Tm9kZSo+IG9ic2VydmVkTm9kZXM7CisgICAgSGFzaFNldDxSZWY8Tm9kZT4+IG9ic2Vy
dmVkTm9kZXM7CiAgICAgZm9yIChhdXRvKiByZWdpc3RyYXRpb24gOiBtX3JlZ2lzdHJhdGlvbnMp
CiAgICAgICAgIHJlZ2lzdHJhdGlvbi0+YWRkUmVnaXN0cmF0aW9uTm9kZXNUb1NldChvYnNlcnZl
ZE5vZGVzKTsKICAgICByZXR1cm4gb2JzZXJ2ZWROb2RlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlci5oCmluZGV4IDQ3N2YwZjkzZDI2ZmYzZjk3MDFlODdjMmI4YmYxZDMyNmU3ZWQ5
MjYuLmNiOTc1N2IwM2FkNDU0NWM1NDIxZWFmMDIwMmQxMDkzNzJjYzcyOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEhhc1RyYW5zaWVudFJlZ2lzdHJhdGlvbihEb2N1bWVudCYpOwogICAgIGJvb2wg
Y2FuRGVsaXZlcigpOwogCi0gICAgSGFzaFNldDxOb2RlKj4gb2JzZXJ2ZWROb2RlcygpIGNvbnN0
OworICAgIEhhc2hTZXQ8UmVmPE5vZGU+PiBvYnNlcnZlZE5vZGVzKCkgY29uc3Q7CiAKICAgICBN
dXRhdGlvbkNhbGxiYWNrJiBjYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2suZ2V0
KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJS
ZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdp
c3RyYXRpb24uY3BwCmluZGV4IDBlY2IwNWI0ODg2MGM3NzcxNDE4ZDhiZjlkMjYxMjkzYTg4NjVh
ZTMuLmM4MjgzNmFmNGRiYTBjYjA5MDVkYTQyNDE2MTBhZTA1NjRiOWFiYzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKQEAg
LTExMiwxMyArMTEyLDEzIEBAIGJvb2wgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6c2hv
dWxkUmVjZWl2ZU11dGF0aW9uRnJvbShOb2RlJiBub2RlLCBNdXRhdGlvCiAgICAgcmV0dXJuIG1f
YXR0cmlidXRlRmlsdGVyLmNvbnRhaW5zKGF0dHJpYnV0ZU5hbWUtPmxvY2FsTmFtZSgpKTsKIH0K
IAotdm9pZCBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjphZGRSZWdpc3RyYXRpb25Ob2Rl
c1RvU2V0KEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykgY29uc3QKK3ZvaWQgTXV0YXRpb25PYnNlcnZl
clJlZ2lzdHJhdGlvbjo6YWRkUmVnaXN0cmF0aW9uTm9kZXNUb1NldChIYXNoU2V0PFJlZjxOb2Rl
Pj4mIG5vZGVzKSBjb25zdAogewotICAgIG5vZGVzLmFkZCgmbV9ub2RlKTsKKyAgICBub2Rlcy5h
ZGQobV9ub2RlKTsKICAgICBpZiAoIW1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMpCiAgICAg
ICAgIHJldHVybjsKICAgICBmb3IgKGF1dG8mIG5vZGUgOiAqbV90cmFuc2llbnRSZWdpc3RyYXRp
b25Ob2RlcykKLSAgICAgICAgbm9kZXMuYWRkKG5vZGUucHRyKCkpOworICAgICAgICBub2Rlcy5h
ZGQobm9kZS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oCmluZGV4IGU2OTQw
NDgzYTMxM2M4ZmQxYmQxNmRjMTdjYjk2YjEzYWNkMjJhM2EuLmE0NTU4ODllNDUzODViZGUxMmVl
NWEyODY5Y2RlMzY0NDRhMmIxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRh
dGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAg
TXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgZGVsaXZlcnlPcHRpb25zKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcHRpb25zICYgKE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZU9sZFZhbHVlIHwg
TXV0YXRpb25PYnNlcnZlcjo6Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKTsgfQogICAgIE11dGF0aW9u
T2JzZXJ2ZXJPcHRpb25zIG11dGF0aW9uVHlwZXMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMg
JiBNdXRhdGlvbk9ic2VydmVyOjpBbGxNdXRhdGlvblR5cGVzOyB9CiAKLSAgICB2b2lkIGFkZFJl
Z2lzdHJhdGlvbk5vZGVzVG9TZXQoSGFzaFNldDxOb2RlKj4mKSBjb25zdDsKKyAgICB2b2lkIGFk
ZFJlZ2lzdHJhdGlvbk5vZGVzVG9TZXQoSGFzaFNldDxSZWY8Tm9kZT4+JikgY29uc3Q7CiAKIHBy
aXZhdGU6CiAgICAgUmVmPE11dGF0aW9uT2JzZXJ2ZXI+IG1fb2JzZXJ2ZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKaW5kZXggNzhmMGU5OTVhNjY5MWFiZDZhZGY3OWZhOTJmMDkyOTZhOGIyMzJlMy4uNDRlMWNl
ZGNiOTdkZjgxZGMwZjM2MjRmMDEyOWE0ODMwZDNhOGZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAt
OTUsOSArOTUsOSBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTm9kZSk7CiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogCiAjaWYgRFVNUF9OT0RFX1NUQVRJU1RJQ1MKLXN0YXRpYyBI
YXNoU2V0PE5vZGUqPiYgbGl2ZU5vZGVTZXQoKQorc3RhdGljIEhhc2hTZXQ8UmVmPE5vZGU+PiYg
bGl2ZU5vZGVTZXQoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PE5vZGUq
Pj4gbGl2ZU5vZGVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFJlZjxOb2Rl
Pj4+IGxpdmVOb2RlczsKICAgICByZXR1cm4gbGl2ZU5vZGVzOwogfQogCkBAIC0yOTUsOSArMjk1
LDkgQEAgREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVy
LCBub2RlQ291bnRlciwgKCJXZWJDb3JlTm9kZSIKICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgYm9v
bCBzaG91bGRJZ25vcmVMZWFrcyA9IGZhbHNlOwogCi1zdGF0aWMgSGFzaFNldDxOb2RlKj4mIGln
bm9yZVNldCgpCitzdGF0aWMgSGFzaFNldDxSZWY8Tm9kZT4+JiBpZ25vcmVTZXQoKQogewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PE5vZGUqPj4gaWdub3JlOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFJlZjxOb2RlPj4+IGlnbm9yZTsKIAogICAgIHJldHVy
biBpZ25vcmU7CiB9CkBAIC0zMjIsMTMgKzMyMiwxMyBAQCB2b2lkIE5vZGU6OnRyYWNrRm9yRGVi
dWdnaW5nKCkKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKHNob3VsZElnbm9yZUxlYWtzKQot
ICAgICAgICBpZ25vcmVTZXQoKS5hZGQodGhpcyk7CisgICAgICAgIGlnbm9yZVNldCgpLmFkZCgq
dGhpcyk7CiAgICAgZWxzZQogICAgICAgICBub2RlQ291bnRlci5pbmNyZW1lbnQoKTsKICNlbmRp
ZgogCiAjaWYgRFVNUF9OT0RFX1NUQVRJU1RJQ1MKLSAgICBsaXZlTm9kZVNldCgpLmFkZCh0aGlz
KTsKKyAgICBsaXZlTm9kZVNldCgpLmFkZCgqdGhpcyk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmNwcAppbmRleCA3NmUwNGNmMDE5Yjkw
MGM5MDFlZjI4Mjk1NjE4NGI0MGRjMjgxNThhLi40NDg2ZGRhZjI0OWRiNDNhYWNkZjg0MzRlZGVk
YmIyZDRmNTEwYTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5v
ZGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5vZGVDb21t
YW5kLmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEFwcGVuZE5vZGVDb21tYW5kOjpkb1VuYXBw
bHkoKQogfQogCiAjaWZuZGVmIE5ERUJVRwotdm9pZCBBcHBlbmROb2RlQ29tbWFuZDo6Z2V0Tm9k
ZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mIG5vZGVzKQordm9pZCBBcHBlbmROb2RlQ29tbWFu
ZDo6Z2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+JiBub2RlcykKIHsKICAgICBh
ZGROb2RlQW5kRGVzY2VuZGFudHMobV9wYXJlbnQucHRyKCksIG5vZGVzKTsKICAgICBhZGROb2Rl
QW5kRGVzY2VuZGFudHMobV9ub2RlLnB0cigpLCBub2Rlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0FwcGVuZE5vZGVDb21tYW5kLmgKaW5kZXggM2NkOTE0NDMyMmM4NTg4NjU0YjljMjZmNWYy
NzliZDk3NWRlMzkzOS4uN2QwOGY2ZDMxYzIwM2QxZTJhNDRjNDY3NDYzMWZmMjA1ZDIzNzE5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwZW5kTm9kZUNvbW1hbmQuaApAQCAtNDMsNyAr
NDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZG9VbmFwcGx5KCkgb3ZlcnJpZGU7CiAKICNpZm5k
ZWYgTkRFQlVHCi0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpIG92
ZXJyaWRlOworICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+Jikg
b3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIFJlZjxDb250YWluZXJOb2RlPiBtX3BhcmVudDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXgg
YzcwMTE0NTcxYmJmYzcyOGI1MGVkNzI3MmQ4OThlZDhjYzc1Y2UzMS4uYmMyMzRhNzJjMmM0YTRj
M2UyMGQxZWUzNjhjY2Q5NTg0NzcwYTMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIEVkaXRD
b21tYW5kQ29tcG9zaXRpb246OnNldFJhbmdlRGVsZXRlZEJ5VW5hcHBseShjb25zdCBWaXNpYmxl
UG9zaXRpb25JbmRleAogfQogCiAjaWZuZGVmIE5ERUJVRwotdm9pZCBFZGl0Q29tbWFuZENvbXBv
c2l0aW9uOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYgbm9kZXMpCit2b2lkIEVk
aXRDb21tYW5kQ29tcG9zaXRpb246OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+
PiYgbm9kZXMpCiB7CiAgICAgZm9yIChhdXRvJiBjb21tYW5kIDogbV9jb21tYW5kcykKICAgICAg
ICAgY29tbWFuZC0+Z2V0Tm9kZXNJbkNvbW1hbmQobm9kZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCmluZGV4IDFlYjZmZWMwMDZkNDdkZTFiYTc3
OGY2MTI0OThkNjlkMzhiZDRiMTkuLmM5NmU0OWFjYjFmZDEzMWFkNzllZGE2ZWFlZjQ3NzRjMDIy
N2YwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmFuZ2VEZWxldGVkQnlV
bmFwcGx5KGNvbnN0IFZpc2libGVQb3NpdGlvbkluZGV4UmFuZ2UmKTsKIAogI2lmbmRlZiBOREVC
VUcKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+Jik7
CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Rl
bGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwCmluZGV4IDdiM2Q5ZjIxYzYyNTIwNTVjMDAyYThk
MzNkZDk4Nzc2MmM3YjBjMTYuLmZlYTE3MDVmNTlmZjNmZjBkZWMxYjA4YTAzNTE2NzUxMjlkYmQx
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2Rl
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5v
ZGVDb21tYW5kLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIERlbGV0ZUZyb21UZXh0Tm9kZUNv
bW1hbmQ6OmRvVW5hcHBseSgpCiB9CiAKICNpZm5kZWYgTkRFQlVHCi12b2lkIERlbGV0ZUZyb21U
ZXh0Tm9kZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykK
K3ZvaWQgRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNl
dDxSZWY8Tm9kZT4+JiBub2RlcykKIHsKICAgICBhZGROb2RlQW5kRGVzY2VuZGFudHMobV9ub2Rl
LnB0cigpLCBub2Rlcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Rl
bGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRl
RnJvbVRleHROb2RlQ29tbWFuZC5oCmluZGV4IGRhMWRmNmIxMDI5MDJiMjJiMzAxNzhjNjIwYjM5
MGRmZGM2MDI0MjAuLjVkOGNlOTk0YzhiZTM5NTE2MjQyNTAzNmI4MTdkYzhjYjk1NDk4MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFu
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFu
ZC5oCkBAIC00Niw3ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1VuYXBwbHkoKSBvdmVy
cmlkZTsKICAgICAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChI
YXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFz
aFNldDxSZWY8Tm9kZT4+Jikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICAKICAgICBSZWY8VGV4dD4g
bV9ub2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAppbmRleCA5MGY5MTRk
MzdiMmQ5NzE1ODFmNTM3MTA0NzczYzM5ZjcyMDNiZGM1Li5jOTliMDZiMmQ0OGQzZGUxNGM5MzVl
MmYzMWMyOGRkOTFmYmY4YjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNw
cApAQCAtMjE2LDEwICsyMTYsMTAgQEAgdm9pZCBTaW1wbGVFZGl0Q29tbWFuZDo6ZG9SZWFwcGx5
KCkKIH0KIAogI2lmbmRlZiBOREVCVUcKLXZvaWQgU2ltcGxlRWRpdENvbW1hbmQ6OmFkZE5vZGVB
bmREZXNjZW5kYW50cyhOb2RlKiBzdGFydE5vZGUsIEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3Zv
aWQgU2ltcGxlRWRpdENvbW1hbmQ6OmFkZE5vZGVBbmREZXNjZW5kYW50cyhOb2RlKiBzdGFydE5v
ZGUsIEhhc2hTZXQ8UmVmPE5vZGU+PiYgbm9kZXMpCiB7CiAgICAgZm9yIChOb2RlKiBub2RlID0g
c3RhcnROb2RlOyBub2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSwgc3RhcnRO
b2RlKSkKLSAgICAgICAgbm9kZXMuYWRkKG5vZGUpOworICAgICAgICBub2Rlcy5hZGQoKm5vZGUp
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENv
bW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaAppbmRleCBlNWEx
ZGFiYjU5N2UwZmU3YjY1MjBmYzVjYTViNDkyNDkzOWVlYWU2Li4wZjIxZTJhODllOThjMmMyZjU5
MWQ1NzcxMzZjMGIxZTk2MDZiNTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5o
CkBAIC05NCwxNCArOTQsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkb1JlYXBwbHko
KTsgLy8gY2FsbHMgZG9BcHBseSgpCiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdmlydHVhbCB2b2lk
IGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+JikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PFJlZjxOb2RlPj4mKSA9IDA7CiAjZW5kaWYKIAog
cHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNpbXBsZUVkaXRDb21tYW5kKERvY3VtZW50JiwgRWRp
dEFjdGlvbiA9IEVkaXRBY3Rpb246OlVuc3BlY2lmaWVkKTsKIAogI2lmbmRlZiBOREVCVUcKLSAg
ICB2b2lkIGFkZE5vZGVBbmREZXNjZW5kYW50cyhOb2RlKiwgSGFzaFNldDxOb2RlKj4mKTsKKyAg
ICB2b2lkIGFkZE5vZGVBbmREZXNjZW5kYW50cyhOb2RlKiwgSGFzaFNldDxSZWY8Tm9kZT4+Jik7
CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0lu
c2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwCmluZGV4IDhiYmI3ZDcyZTFhYmM2MDM2MDI1MmE4
YTk3NWJiODg4NDNhOWNiY2MuLjM1ZTg5NDIwMWY1OTE5MGMzNDBmZWFmNGVhZGM1OTdkZGY2NjZh
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2Rl
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5v
ZGVDb21tYW5kLmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lkIEluc2VydEludG9UZXh0Tm9kZUNv
bW1hbmQ6OmRvVW5hcHBseSgpCiAKICNpZm5kZWYgTkRFQlVHCiAKLXZvaWQgSW5zZXJ0SW50b1Rl
eHROb2RlQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mIG5vZGVzKQor
dm9pZCBJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0
PFJlZjxOb2RlPj4mIG5vZGVzKQogewogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX25vZGUu
cHRyKCksIG5vZGVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5z
ZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJ
bnRvVGV4dE5vZGVDb21tYW5kLmgKaW5kZXggMjM2ZGQ2ZjUyODA4NzIxNTk3YzdmMWQ0ZWNjNDBm
ODUxY2M5OGE4ZS4uMTU1OTdjNjIxNmUzZDg0MzRkNzRjOTFjYWY1MzAzYWNiOGU5MWMxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5k
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5k
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvUmVhcHBseSgpIG92ZXJy
aWRlOwogICAgIAogI2lmbmRlZiBOREVCVUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhh
c2hTZXQ8Tm9kZSo+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNo
U2V0PFJlZjxOb2RlPj4mKSBvdmVycmlkZTsKICNlbmRpZgogICAgIAogICAgIFJlZjxUZXh0PiBt
X25vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydE5vZGVCZWZv
cmVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNv
bW1hbmQuY3BwCmluZGV4IGRhMWRmNjhiZjc1ZmUyZTE2ZjYwOThlYjhlNWYyMDVjYTMwODUyYTYu
LmY0ZDcwYmM3OTFmOWJhMzYzYmE3ZDI3Y2Y4ZjZhOWRmNTczNjQ4MzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuY3BwCkBAIC02NSw3
ICs2NSw3IEBAIHZvaWQgSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQ6OmRvVW5hcHBseSgpCiB9CiAK
ICNpZm5kZWYgTkRFQlVHCi12b2lkIEluc2VydE5vZGVCZWZvcmVDb21tYW5kOjpnZXROb2Rlc0lu
Q29tbWFuZChIYXNoU2V0PE5vZGUqPiYgbm9kZXMpCit2b2lkIEluc2VydE5vZGVCZWZvcmVDb21t
YW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PFJlZjxOb2RlPj4mIG5vZGVzKQogewogICAg
IGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX2luc2VydENoaWxkLnB0cigpLCBub2Rlcyk7CiAgICAg
YWRkTm9kZUFuZERlc2NlbmRhbnRzKG1fcmVmQ2hpbGQucHRyKCksIG5vZGVzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuaAppbmRleCAyNWQz
NDNjOGUxMzMxNjQxOGU3NDAwYWRjODI1YTBmOGNlNTE2NjdiLi5hYjQwZmNmNzdiYmE2YzE4MzQ5
OGQ5NzNlYTkwOGMyMTk1NzA5ZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9J
bnNlcnROb2RlQmVmb3JlQ29tbWFuZC5oCkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkb1VuYXBwbHkoKSBvdmVycmlkZTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICB2b2lkIGdl
dE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRO
b2Rlc0luQ29tbWFuZChIYXNoU2V0PFJlZjxOb2RlPj4mKSBvdmVycmlkZTsKICNlbmRpZgogCiAg
ICAgUmVmPE5vZGU+IG1faW5zZXJ0Q2hpbGQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuY3BwCmluZGV4IGQ2MWRlYjdm
ODFhODEyNzE3MTA5Nzg0YjgxNmNiMzg2ZDE4YjdiYTIuLjMyOTM1MzQ5YzBiMWJmMTUzNzllYzgz
OGI0NTY3NjgyMjViOGEyMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWVy
Z2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZv
aWQgTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQ6OmRvVW5hcHBseSgpCiB9CiAKICNpZm5k
ZWYgTkRFQlVHCi12b2lkIE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpnZXROb2Rlc0lu
Q29tbWFuZChIYXNoU2V0PE5vZGUqPiYgbm9kZXMpCit2b2lkIE1lcmdlSWRlbnRpY2FsRWxlbWVu
dHNDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PFJlZjxOb2RlPj4mIG5vZGVzKQog
ewogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX2VsZW1lbnQxLnB0cigpLCBub2Rlcyk7CiAg
ICAgYWRkTm9kZUFuZERlc2NlbmRhbnRzKG1fZWxlbWVudDIucHRyKCksIG5vZGVzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1h
bmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1h
bmQuaAppbmRleCA2ODZhYmE2YzgyNmI3N2VjZDkzNWI2YzRjYTE3YjVhMTMzMTUxOGVlLi5jZDhk
MzMzYTFlN2ExODdhNzEzNTA1MTJlYzg3NTE1NzE2NzBmZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5oCkBAIC00
Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1VuYXBwbHkoKSBvdmVycmlkZTsKICAg
ICAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5v
ZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8
Tm9kZT4+Jikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICAKICAgICBSZWY8RWxlbWVudD4gbV9lbGVt
ZW50MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKaW5k
ZXggMDlhZTE5NjUzZDJlZjQ0MTJjZjUyNWI4OWVjMTVjMjU5ZDM4NjFjMy4uYWQzNjYzODUwZjMz
YjU4ZGZkMmJlYzUxYmRhMDY2MmQxZDUyYzljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBSZW1vdmVOb2Rl
Q29tbWFuZDo6ZG9VbmFwcGx5KCkKIH0KIAogI2lmbmRlZiBOREVCVUcKLXZvaWQgUmVtb3ZlTm9k
ZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQg
UmVtb3ZlTm9kZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYg
bm9kZXMpCiB7CiAgICAgYWRkTm9kZUFuZERlc2NlbmRhbnRzKG1fcGFyZW50LmdldCgpLCBub2Rl
cyk7CiAgICAgYWRkTm9kZUFuZERlc2NlbmRhbnRzKG1fcmVmQ2hpbGQuZ2V0KCksIG5vZGVzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuaAppbmRleCAzMTZlMmE0
OTc3NjcwNTk0OGUxNTY0MjU5ZDVkMmIxNjNlZGQxNzIwLi4wYTZlYTdjNjRkOTVkYTg0ZDRiNDMz
MjBjZWI2ZmU1M2UxYzEwNThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
bW92ZU5vZGVDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2Rl
Q29tbWFuZC5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1VuYXBwbHko
KSBvdmVycmlkZTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5k
KEhhc2hTZXQ8Tm9kZSo+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChI
YXNoU2V0PFJlZjxOb2RlPj4mKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgUmVmPE5vZGU+IG1f
bm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRo
U3BhbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhT
cGFuQ29tbWFuZC5jcHAKaW5kZXggNzM0ZTAzYzliZDEwYjA3NTA5Yjk4NGU4YWMyMzY1NmU2ZWUw
NDliNC4uYjhkOTlmMGFlNzQyMmNhNTU4MzhmMWYxMzU3MGVkODE4OTZiOWQ3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5j
cHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZDo6ZG9V
bmFwcGx5KCkKIH0KIAogI2lmbmRlZiBOREVCVUcKLXZvaWQgUmVwbGFjZU5vZGVXaXRoU3BhbkNv
bW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgUmVw
bGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5v
ZGU+PiYgbm9kZXMpCiB7CiAgICAgYWRkTm9kZUFuZERlc2NlbmRhbnRzKG1fZWxlbWVudFRvUmVw
bGFjZS5wdHIoKSwgbm9kZXMpOwogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX3NwYW5FbGVt
ZW50LmdldCgpLCBub2Rlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VOb2RlV2l0aFNwYW5Db21tYW5kLmgKaW5kZXggZTVkMzBmYzVmMjcxNjBkZmM3N2ZiOTk1OTRj
MGJiZGM2MDY5OTBjMy4uNDYwYzA3M2IzNmYzNDRiMjc1MTVjMTVlMzBlYWVhMmNlMWExZThmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29t
bWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNv
bW1hbmQuaApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZG9VbmFwcGx5KCkg
b3ZlcnJpZGU7CiAgICAgCiAjaWZuZGVmIE5ERUJVRwotICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1h
bmQoSGFzaFNldDxOb2RlKj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5k
KEhhc2hTZXQ8UmVmPE5vZGU+PiYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBSZWY8SFRNTEVs
ZW1lbnQ+IG1fZWxlbWVudFRvUmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHAKaW5kZXggMWUyYmJiY2ZiZTU2ODE2ZmQzYWJl
ZjA0OWE2M2M5ZjcwYzBmYjBhNC4uZDY2MmRkNWJjOGMwYmE5YzViMGQyYTU3ZWE0NzJlYjdlZDFk
MTIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRl
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRl
Q29tbWFuZC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBTZXROb2RlQXR0cmlidXRlQ29tbWFu
ZDo6ZG9VbmFwcGx5KCkKIH0KIAogI2lmbmRlZiBOREVCVUcKLXZvaWQgU2V0Tm9kZUF0dHJpYnV0
ZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQg
U2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5v
ZGU+PiYgbm9kZXMpCiB7CiAgICAgYWRkTm9kZUFuZERlc2NlbmRhbnRzKG1fZWxlbWVudC5wdHIo
KSwgbm9kZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXROb2Rl
QXR0cmlidXRlQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmli
dXRlQ29tbWFuZC5oCmluZGV4IGRlNTEyYzUwZTcyNzBlMDQ5YzQ4YWVjZDFjZjc3ZDlhNWI4NzNl
ZDAuLjdlOWU1OWNhMWZhZWUxZTc3MjIxYzczZmYzNTU5MThkNTEzZGFlNWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmgKQEAgLTQ0LDcg
KzQ0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOwogCiAjaWZu
ZGVmIE5ERUJVRwotICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mKSBv
dmVycmlkZTsKKyAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYp
IG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBSZWY8RWxlbWVudD4gbV9lbGVtZW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1NldFNlbGVjdGlvbkNvbW1hbmQuaAppbmRleCBmNmM5ZjA2MzBi
NWZmMWI4YmExY2Q1OTI0Y2VkMTVjYzM5YTNmYmJlLi4wYWI3NThiMTVkNTRmZjA5ZTA5MWFjZDc3
ODA2ZDM4ZmExNGE1YmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldFNl
bGVjdGlvbkNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldFNlbGVjdGlv
bkNvbW1hbmQuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZG9VbmFwcGx5
KCkgb3ZlcnJpZGU7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFu
ZChIYXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1h
bmQoSGFzaFNldDxSZWY8Tm9kZT4+Jikgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKIAogICAgIE9wdGlv
blNldDxGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9uPiBtX29wdGlvbnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNw
cAppbmRleCBhODQ4NjYzNjUzYTBmN2ZmMjk3MzczNmIxMTk3MmM4YzY0YzhjYWFkLi45YmQyOWM3
MjY0M2YwYWE3ZTMxNWYzN2JkNjM1NzFjOTBkZGFkZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTcyLDcgKzcy
LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBnZXROb2Rl
c0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRlCisgICAgdm9pZCBnZXROb2Rlc0lu
Q29tbWFuZChIYXNoU2V0PFJlZjxOb2RlPj4mKSBvdmVycmlkZQogICAgIHsKICAgICB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3BwCmlu
ZGV4IGY1NmY5NmE4ODA5NzQ3YTVjNTJmZDk3NmQwMWQ2NGM0NDA0NzIzYTcuLjk0MmY3ZWZmZjNk
MzYzZGYzNmM2ZWUyNjgxOGE4NjBhMjUzM2ExOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgU3Bs
aXRFbGVtZW50Q29tbWFuZDo6ZG9SZWFwcGx5KCkKIH0KIAogI2lmbmRlZiBOREVCVUcKLXZvaWQg
U3BsaXRFbGVtZW50Q29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mIG5v
ZGVzKQordm9pZCBTcGxpdEVsZW1lbnRDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0
PFJlZjxOb2RlPj4mIG5vZGVzKQogewogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX2VsZW1l
bnQxLmdldCgpLCBub2Rlcyk7CiAgICAgYWRkTm9kZUFuZERlc2NlbmRhbnRzKG1fZWxlbWVudDIu
cHRyKCksIG5vZGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRF
bGVtZW50Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21t
YW5kLmgKaW5kZXggOTgzMTY1MWIwMDBhYTc1NGRiZmI2MTcwNDc2ZDdjY2M3NDM5MGVmMi4uNDlj
MTZhMTgxYzRmOGFkZmM1YjRkZjVjM2NhZWYyZDViMDRhZDI0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGV4ZWN1dGVBcHBseSgpOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIHZvaWQg
Z2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGdl
dE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYpIG92ZXJyaWRlOwogI2VuZGlmCiAK
ICAgICBSZWZQdHI8RWxlbWVudD4gbV9lbGVtZW50MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHAKaW5kZXggYTE2NDUyYzZhNGFhMzVkYTlhYWYw
ZmEwOWUwY2QwYzViMDUyNDU5Zi4uMDkwM2JjMDdmZjgzZjE2MTRlZTgzNWI3M2Q1NWU0NTAxZmYw
MjdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFu
ZC5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFNwbGl0VGV4dE5vZGVDb21tYW5kOjppbnNl
cnRUZXh0MUFuZFRyaW1UZXh0MigpCiAKICNpZm5kZWYgTkRFQlVHCiAKLXZvaWQgU3BsaXRUZXh0
Tm9kZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3Zv
aWQgU3BsaXRUZXh0Tm9kZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5v
ZGU+PiYgbm9kZXMpCiB7CiAgICAgYWRkTm9kZUFuZERlc2NlbmRhbnRzKG1fdGV4dDEuZ2V0KCks
IG5vZGVzKTsKICAgICBhZGROb2RlQW5kRGVzY2VuZGFudHMobV90ZXh0Mi5wdHIoKSwgbm9kZXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFu
ZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5oCmluZGV4
IGI5OTE5ZDY3MDg3MTkyMjI5YzA1YzM4NzNmZjlmMjAxMjkxMjhmZDAuLjlhZDA4NDQ4ZWY1NGFl
ODcxNTQyYWFjM2YzYTc5M2U5ZjE4MjQzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NwbGl0VGV4dE5vZGVDb21tYW5kLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGluc2VydFRleHQxQW5kVHJpbVRleHQyKCk7CiAgICAgCiAjaWZuZGVmIE5ERUJVRwotICAg
IHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mKSBvdmVycmlkZTsKKyAgICB2
b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKICAgICBSZWZQdHI8VGV4dD4gbV90ZXh0MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmNwcAppbmRleCA0
MDA2ZmE4ZWQxZmIzZTJiNmVlMWJkZjc2ZjAzYjhiYmNhZDY3NmU2Li4xOGJkYjMwOGJhOGE0NGM3
NWRmMWU2OTg3NTgwMWYxZGJmYWRhMmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1dyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwCkBAIC03OSw3ICs3
OSw3IEBAIHZvaWQgV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kOjpkb1JlYXBwbHkoKQog
fQogCiAjaWZuZGVmIE5ERUJVRwotdm9pZCBXcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQ6
OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgV3JhcENvbnRl
bnRzSW5EdW1teVNwYW5Db21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PFJlZjxOb2Rl
Pj4mIG5vZGVzKQogewogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX2VsZW1lbnQucHRyKCks
IG5vZGVzKTsKICAgICBhZGROb2RlQW5kRGVzY2VuZGFudHMobV9kdW1teVNwYW4uZ2V0KCksIG5v
ZGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV3JhcENvbnRlbnRzSW5E
dW1teVNwYW5Db21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dyYXBDb250ZW50c0lu
RHVtbXlTcGFuQ29tbWFuZC5oCmluZGV4IGZiZDBhMWQ2ZmI1NjI0OWJlYjhhYzc4ZjQyODJlMzY4
NDliOWFiYzguLmY4MzgxMWY1NzJmMTcxZGJlOWEzNTYzMjQwODBhZjUyNDJmYTNlYjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21t
YW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3Bh
bkNvbW1hbmQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhlY3V0ZUFw
cGx5KCk7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNo
U2V0PE5vZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNl
dDxSZWY8Tm9kZT4+Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIFJlZjxFbGVtZW50PiBtX2Vs
ZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0K
aW5kZXggMDY4MjZmMTI0MTg3YmRiZDRmMWE0OWM0MzcwZWM2ZWY0ZDBkOGVmNS4uMTBkYjMyMmE2
YjlkNzNiMzQ4YzEwOTgyMDI1OGIwMjljZjQ4ZDRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMjYxLDcgKzI2MSw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBIYXNoTWFwPEVsZW1lbnQqLCBzdGQ6OnVuaXF1ZV9wdHI8Q29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcj4+IG1fY29tcHV0ZWRTdHlsZXM7Ci0gICAgSGFzaFNldDxOb2RlKj4g
bV9hbmNlc3RvcnNVbmRlckNvbW1vbkFuY2VzdG9yOworICAgIEhhc2hTZXQ8UmVmPE5vZGU+PiBt
X2FuY2VzdG9yc1VuZGVyQ29tbW9uQW5jZXN0b3I7CiB9OwogCiBAaW50ZXJmYWNlIE5TVGV4dExp
c3QgKFdlYkNvcmVOU1RleHRMaXN0RGV0YWlscykKQEAgLTIyODMsNyArMjI4Myw3IEBAIE5vZGUq
IEhUTUxDb252ZXJ0ZXJDYWNoZXM6OmNhY2hlQW5jZXN0b3JzT2ZTdGFydFRvQmVDb252ZXJ0ZWQo
Y29uc3QgUG9zaXRpb24mIHN0CiAgICAgTm9kZSogYW5jZXN0b3IgPSBzdGFydC5jb250YWluZXJO
b2RlKCk7CiAKICAgICB3aGlsZSAoYW5jZXN0b3IpIHsKLSAgICAgICAgbV9hbmNlc3RvcnNVbmRl
ckNvbW1vbkFuY2VzdG9yLmFkZChhbmNlc3Rvcik7CisgICAgICAgIG1fYW5jZXN0b3JzVW5kZXJD
b21tb25BbmNlc3Rvci5hZGQoKmFuY2VzdG9yKTsKICAgICAgICAgaWYgKGFuY2VzdG9yID09IGNv
bW1vbkFuY2VzdG9yKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGFuY2VzdG9yID0gYW5j
ZXN0b3ItPnBhcmVudEluQ29tcG9zZWRUcmVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDVlMzQzYTU0YmE3
MjE3MjliODEyOTJjNjA2Mzk5MjVkYzFkMGRlYTEuLjZiODQwZWI1ODY1Y2M4NGQ4MTQ1Mzk2MzBj
ZWYzNzI4NmQxN2VmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMzM1LDcgKzEzMzUsNyBAQCBQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0U2VsZWN0
b3IoUmVmPEpTT046Ok9iagogICAgIFNlbGVjdG9yQ2hlY2tlciBzZWxlY3RvckNoZWNrZXIoKmRv
Y3VtZW50KTsKIAogICAgIFZlY3RvcjxSZWY8Tm9kZT4+IG5vZGVMaXN0OwotICAgIEhhc2hTZXQ8
Tm9kZSo+IHNlZW5Ob2RlczsKKyAgICBIYXNoU2V0PFJlZjxOb2RlPj4gc2Vlbk5vZGVzOwogCiAg
ICAgZm9yIChhdXRvJiBkZXNjZW5kYW50IDogY29tcG9zZWRUcmVlRGVzY2VuZGFudHMoKmRvY3Vt
ZW50KSkgewogICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KGRlc2NlbmRhbnQpKQpAQCAtMTM1NSw3
ICsxMzU1LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NQWdl
bnQ6OmhpZ2hsaWdodFNlbGVjdG9yKFJlZjxKU09OOjpPYmoKICAgICAgICAgICAgIGNvbnRleHQu
cHNldWRvSWQgPSBwc2V1ZG9JZDsKIAogICAgICAgICAgICAgaWYgKHNlbGVjdG9yQ2hlY2tlci5t
YXRjaCgqc2VsZWN0b3IsIGRlc2NlbmRhbnRFbGVtZW50LCBjb250ZXh0KSkgewotICAgICAgICAg
ICAgICAgIGlmIChzZWVuTm9kZXMuYWRkKCZkZXNjZW5kYW50RWxlbWVudCkpCisgICAgICAgICAg
ICAgICAgaWYgKHNlZW5Ob2Rlcy5hZGQoZGVzY2VuZGFudEVsZW1lbnQpKQogICAgICAgICAgICAg
ICAgICAgICBub2RlTGlzdC5hcHBlbmQoZGVzY2VuZGFudEVsZW1lbnQpOwogICAgICAgICAgICAg
fQogCkBAIC0xMzY1LDcgKzEzNjUsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJ
bnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0U2VsZWN0b3IoUmVmPEpTT046Ok9iagogICAgICAg
ICAgICAgICAgIGlmIChwc2V1ZG9JRHMuaGFzKFBzZXVkb0lkOjpCZWZvcmUpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHBzZXVkb0lEcy5yZW1vdmUoUHNldWRvSWQ6OkJlZm9yZSk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChhdXRvKiBiZWZvcmVQc2V1ZG9FbGVtZW50ID0gZGVzY2VuZGFudEVs
ZW1lbnQuYmVmb3JlUHNldWRvRWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoc2Vlbk5vZGVzLmFkZChiZWZvcmVQc2V1ZG9FbGVtZW50KSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChzZWVuTm9kZXMuYWRkKCpiZWZvcmVQc2V1ZG9FbGVtZW50KSkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBub2RlTGlzdC5hcHBlbmQoKmJlZm9yZVBzZXVkb0VsZW1lbnQp
OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMTM3MywxMyAr
MTM3MywxMyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2Vu
dDo6aGlnaGxpZ2h0U2VsZWN0b3IoUmVmPEpTT046Ok9iagogICAgICAgICAgICAgICAgIGlmIChw
c2V1ZG9JRHMuaGFzKFBzZXVkb0lkOjpBZnRlcikpIHsKICAgICAgICAgICAgICAgICAgICAgcHNl
dWRvSURzLnJlbW92ZShQc2V1ZG9JZDo6QWZ0ZXIpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
YXV0byogYWZ0ZXJQc2V1ZG9FbGVtZW50ID0gZGVzY2VuZGFudEVsZW1lbnQuYWZ0ZXJQc2V1ZG9F
bGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWVuTm9kZXMuYWRkKGFm
dGVyUHNldWRvRWxlbWVudCkpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2Vlbk5vZGVz
LmFkZCgqYWZ0ZXJQc2V1ZG9FbGVtZW50KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
b2RlTGlzdC5hcHBlbmQoKmFmdGVyUHNldWRvRWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAocHNldWRvSURzKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzZWVuTm9kZXMuYWRkKCZkZXNjZW5kYW50RWxlbWVu
dCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChzZWVuTm9kZXMuYWRkKGRlc2NlbmRhbnRFbGVt
ZW50KSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVMaXN0LmFwcGVuZChkZXNjZW5kYW50
RWxlbWVudCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEZ1bmN0aW9ucy5jcHAKaW5kZXggMTBmMGMyMmQ0YjY3Y2U1ZmZhM2I4MzA2OWNiZjQw
NjA1MTIxZWVkNS4uYWNkM2M5NDQyY2E1MDQxOTAyM2Q3ZTQ5Y2NhYmFjMjA0NTM5N2MwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCkBAIC0zMjksNyArMzI5LDcgQEAgVmFs
dWUgRnVuSWQ6OmV2YWx1YXRlKCkgY29uc3QKICAgICAKICAgICBUcmVlU2NvcGUmIGNvbnRleHRT
Y29wZSA9IGV2YWx1YXRpb25Db250ZXh0KCkubm9kZS0+dHJlZVNjb3BlKCk7CiAgICAgTm9kZVNl
dCByZXN1bHQ7Ci0gICAgSGFzaFNldDxOb2RlKj4gcmVzdWx0U2V0OworICAgIEhhc2hTZXQ8UmVm
PE5vZGU+PiByZXN1bHRTZXQ7CiAKICAgICB1bnNpZ25lZCBzdGFydFBvcyA9IDA7CiAgICAgdW5z
aWduZWQgbGVuZ3RoID0gaWRMaXN0Lmxlbmd0aCgpOwpAQCAtMzQ3LDcgKzM0Nyw3IEBAIFZhbHVl
IEZ1bklkOjpldmFsdWF0ZSgpIGNvbnN0CiAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBzZXZlcmFs
IG5vZGVzIHdpdGggdGhlIHNhbWUgaWQsIGlkKCkgc2hvdWxkIHJldHVybiB0aGUgZmlyc3Qgb25l
LgogICAgICAgICAvLyBJbiBXZWJLaXQsIGdldEVsZW1lbnRCeUlkIGJlaGF2ZXMgc28sIHRvbywg
YWx0aG91Z2ggaXRzIGJlaGF2aW9yIGluIHRoaXMgY2FzZSBpcyBmb3JtYWxseSB1bmRlZmluZWQu
CiAgICAgICAgIE5vZGUqIG5vZGUgPSBjb250ZXh0U2NvcGUuZ2V0RWxlbWVudEJ5SWQodG9TdHJp
bmdWaWV3KGlkTGlzdCkuc3Vic3RyaW5nKHN0YXJ0UG9zLCBlbmRQb3MgLSBzdGFydFBvcykpOwot
ICAgICAgICBpZiAobm9kZSAmJiByZXN1bHRTZXQuYWRkKG5vZGUpLmlzTmV3RW50cnkpCisgICAg
ICAgIGlmIChub2RlICYmIHJlc3VsdFNldC5hZGQoKm5vZGUpLmlzTmV3RW50cnkpCiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKG5vZGUpOwogICAgICAgICAKICAgICAgICAgc3RhcnRQb3MgPSBl
bmRQb3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuY3BwCmluZGV4IGQwNGJkNjJjMTQ0M2Ex
YTg3OTk5Zjk2YjAwM2MyZjcyYzg4NjMwMjQuLjMwZGM1NWFiYzcxNzkzMGU5ZmRjNWFjZTM4YjBi
MTc3OWY0ZTNhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuY3BwCkBAIC0xMDcsNyAr
MTA3LDcgQEAgc3RhdGljIHZvaWQgc29ydEJsb2NrKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRv
LCBWZWN0b3I8VmVjdG9yPE5vZGUqPj4mIHBhcmVudE0KIAogICAgIC8vIENoaWxkcmVuIG5vZGVz
IG9mIHRoZSBjb21tb24gYW5jZXN0b3IgaW5kdWNlIGEgc3ViZGl2aXNpb24gb2Ygb3VyIG5vZGUt
c2V0LgogICAgIC8vIFNvcnQgaXQgYWNjb3JkaW5nIHRvIHRoaXMgc3ViZGl2aXNpb24sIGFuZCBy
ZWN1cnNpdmVseSBzb3J0IGVhY2ggZ3JvdXAuCi0gICAgSGFzaFNldDxOb2RlKj4gcGFyZW50Tm9k
ZXM7CisgICAgSGFzaFNldDxSZWZQdHI8Tm9kZT4+IHBhcmVudE5vZGVzOwogICAgIGZvciAodW5z
aWduZWQgaSA9IGZyb207IGkgPCB0bzsgKytpKQogICAgICAgICBwYXJlbnROb2Rlcy5hZGQocGFy
ZW50V2l0aERlcHRoKGNvbW1vbkFuY2VzdG9yRGVwdGggKyAxLCBwYXJlbnRNYXRyaXhbaV0pKTsK
IApAQCAtMTkyLDcgKzE5Miw3IEBAIHN0YXRpYyBOb2RlKiBmaW5kUm9vdE5vZGUoTm9kZSogbm9k
ZSkKIAogdm9pZCBOb2RlU2V0Ojp0cmF2ZXJzYWxTb3J0KCkgY29uc3QKIHsKLSAgICBIYXNoU2V0
PE5vZGUqPiBub2RlczsKKyAgICBIYXNoU2V0PFJlZlB0cjxOb2RlPj4gbm9kZXM7CiAgICAgYm9v
bCBjb250YWluc0F0dHJpYnV0ZU5vZGVzID0gZmFsc2U7CiAKICAgICB1bnNpZ25lZCBub2RlQ291
bnQgPSBtX25vZGVzLnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0
aFBhdGguY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGF0aC5jcHAKaW5kZXggYTIwNTI0
ZDljMmQyOGZmMGU3NWQ2MDg2NGNkZmRkM2Q2MGFhMTViOS4uNWNmM2IzNjkyNDI5YWY2NjQyYTJm
ODgwZDExNGMwZGRlY2YyNWZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGF0aC5jcHAKQEAgLTEwNSw3
ICsxMDUsNyBAQCB2b2lkIExvY2F0aW9uUGF0aDo6ZXZhbHVhdGUoTm9kZVNldCYgbm9kZXMpIGNv
bnN0CiAKICAgICBmb3IgKGF1dG8mIHN0ZXAgOiBtX3N0ZXBzKSB7CiAgICAgICAgIE5vZGVTZXQg
bmV3Tm9kZXM7Ci0gICAgICAgIEhhc2hTZXQ8Tm9kZSo+IG5ld05vZGVzU2V0OworICAgICAgICBI
YXNoU2V0PFJlZlB0cjxOb2RlPj4gbmV3Tm9kZXNTZXQ7CiAKICAgICAgICAgYm9vbCBuZWVkVG9D
aGVja0ZvckR1cGxpY2F0ZU5vZGVzID0gIW5vZGVzLnN1YnRyZWVzQXJlRGlzam9pbnQoKSB8fCAo
c3RlcC0+YXhpcygpICE9IFN0ZXA6OkNoaWxkQXhpcyAmJiBzdGVwLT5heGlzKCkgIT0gU3RlcDo6
U2VsZkF4aXMKICAgICAgICAgICAgICYmIHN0ZXAtPmF4aXMoKSAhPSBTdGVwOjpEZXNjZW5kYW50
QXhpcyAmJiBzdGVwLT5heGlzKCkgIT0gU3RlcDo6RGVzY2VuZGFudE9yU2VsZkF4aXMgJiYgc3Rl
cC0+YXhpcygpICE9IFN0ZXA6OkF0dHJpYnV0ZUF4aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBy
ZWRpY2F0ZS5jcHAKaW5kZXggYzFiYmM1NGViODMwMTY5MTE5Yzg2ODMxYTRmMmE2ZTdjMDA0NTY4
ZC4uZjM1ZWQyOGI0MTkyZDg5OTYxOWM5YWFlZTk1YjVkNTNhZTM1MTI2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgVmFsdWUgVW5pb246
OmV2YWx1YXRlKCkgY29uc3QKICAgICBOb2RlU2V0JiByZXN1bHRTZXQgPSBsaHNSZXN1bHQubW9k
aWZpYWJsZU5vZGVTZXQoKTsKICAgICBjb25zdCBOb2RlU2V0JiByaHNOb2RlcyA9IHJocy50b05v
ZGVTZXQoKTsKIAotICAgIEhhc2hTZXQ8Tm9kZSo+IG5vZGVzOworICAgIEhhc2hTZXQ8UmVmUHRy
PE5vZGU+PiBub2RlczsKICAgICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJlc3VsdFNldCkKICAgICAg
ICAgbm9kZXMuYWRkKHJlc3VsdC5nZXQoKSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428231</attachid>
            <date>2021-05-10 17:52:04 -0700</date>
            <delta_ts>2021-05-11 12:25:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220464-20210510175204.patch</filename>
            <type>text/plain</type>
            <size>32378</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI1NzczYzRiYTY5MTAy
YTViODkwZmM2MjdjNTEwZGFkMTlhOTE4Ny4uZWIzNGViMTc0NDc3NWRlNWNmODZkYTlhN2Q0NzI2
MGIwNTZhOTRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDIxLTA1LTEwICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIEhh
c2hTZXQ8UmVmUHRyPE5vZGU+PiBpbnN0ZWFkIG9mIEhhc2hTZXQ8Tm9kZSo+CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA0NjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBUaGlzIG1ha2VzIHVzIG1vcmUgcmVz
aXN0ZW50IHRvIGxpZmV0aW1lIGJ1Z3MuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uZGl0aW9uYWxseUFkZE5vZGVUb0Zp
bHRlckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsdGVyVmVjdG9yUGFpckZvclJlbW92YWwp
OgorICAgICAgICAoV2ViQ29yZTo6ZmlsdGVyTWFwRm9yUmVtb3ZhbCk6CisgICAgICAgIChXZWJD
b3JlOjpmaWx0ZXJMaXN0Rm9yUmVtb3ZhbCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENh
Y2hlOjpwcmVwYXJlRm9yRG9jdW1lbnREZXN0cnVjdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0
YXRpb25PYnNlcnZlck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAg
ICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25P
YnNlcnZlcjo6b2JzZXJ2ZWROb2RlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjogY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmg6CisgICAgICAgICog
ZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6YWRkUmVnaXN0cmF0aW9uTm9kZXNUb1NldCBj
b25zdCk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaDoKKyAg
ICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsaXZlTm9kZVNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjppZ25vcmVTZXQpOgorICAgICAgICAqIGVkaXRpbmcvQXBwZW5kTm9k
ZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kTm9kZUNvbW1hbmQ6OmdldE5v
ZGVzSW5Db21tYW5kKToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmg6Cisg
ICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAg
ICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvRGVs
ZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVGcm9t
VGV4dE5vZGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAgICogZWRpdGluZy9E
ZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0Q29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVFZGl0Q29tbWFuZDo6YWRkTm9kZUFuZERl
c2NlbmRhbnRzKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRDb21tYW5kLmg6CisgICAgICAgICog
ZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKToKKyAgICAgICAg
KiBlZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5n
L0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydE5v
ZGVCZWZvcmVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAgICogZWRpdGluZy9J
bnNlcnROb2RlQmVmb3JlQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvTWVyZ2VJZGVudGlj
YWxFbGVtZW50c0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVyZ2VJZGVudGljYWxF
bGVtZW50c0NvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKToKKyAgICAgICAgKiBlZGl0aW5nL01l
cmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9SZW1vdmVO
b2RlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdmVOb2RlQ29tbWFuZDo6Z2V0
Tm9kZXNJbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuaDoK
KyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kOjpnZXROb2Rlc0luQ29tbWFu
ZCk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5oOgorICAg
ICAgICAqIGVkaXRpbmcvU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKToKKyAgICAg
ICAgKiBlZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmg6CisgICAgICAgICogZWRpdGlu
Zy9TZXRTZWxlY3Rpb25Db21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9TcGVsbGluZ0NvcnJl
Y3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BsaXRFbGVtZW50Q29tbWFuZDo6Z2V0Tm9kZXNJbkNv
bW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5oOgorICAgICAg
ICAqIGVkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3BsaXRUZXh0Tm9kZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKToKKyAgICAgICAgKiBlZGl0
aW5nL1NwbGl0VGV4dE5vZGVDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9XcmFwQ29udGVu
dHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V3JhcENvbnRlbnRz
SW5EdW1teVNwYW5Db21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAgICogZWRpdGlu
Zy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyQ2FjaGVzOjpjYWNo
ZUFuY2VzdG9yc09mU3RhcnRUb0JlQ29udmVydGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TUFnZW50OjpoaWdobGlnaHRTZWxlY3Rvcik6CisgICAgICAgICogeG1sL1hQYXRoRnVuY3Rpb25z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5JZDo6ZXZhbHVhdGUgY29uc3QpOgor
ICAgICAgICAqIHhtbC9YUGF0aE5vZGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6
OnNvcnRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6Tm9kZVNldDo6dHJhdmVyc2Fs
U29ydCBjb25zdCk6CisgICAgICAgICogeG1sL1hQYXRoUGF0aC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpYUGF0aDo6TG9jYXRpb25QYXRoOjpldmFsdWF0ZSBjb25zdCk6CisgICAgICAgICogeG1s
L1hQYXRoUHJlZGljYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpVbmlvbjo6ZXZh
bHVhdGUgY29uc3QpOgorCiAyMDIxLTA1LTEwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3NzI4MS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDg3
ODhjOTQzYTZhODI0NWViZGJjOTg3ZDBlNzFmMjg5Y2QzOWIxMGQuLjQ3Yjc0MTU0NGJhYzYyMDY0
NTZmNTFiYTc2ZDFiMjhkMTZjNjU4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMzA4MCwxNCArMzA4MCwxNCBAQCBjb25zdCBFbGVt
ZW50KiBBWE9iamVjdENhY2hlOjpyb290QVhFZGl0YWJsZUVsZW1lbnQoY29uc3QgTm9kZSogbm9k
ZSkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgdm9pZCBjb25kaXRpb25hbGx5QWRk
Tm9kZVRvRmlsdGVyTGlzdChOb2RlKiBub2RlLCBjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIEhh
c2hTZXQ8Tm9kZSo+JiBub2Rlc1RvUmVtb3ZlKQorc3RhdGljIHZvaWQgY29uZGl0aW9uYWxseUFk
ZE5vZGVUb0ZpbHRlckxpc3QoTm9kZSogbm9kZSwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBI
YXNoU2V0PFJlZjxOb2RlPj4mIG5vZGVzVG9SZW1vdmUpCiB7CiAgICAgaWYgKG5vZGUgJiYgKCFu
b2RlLT5pc0Nvbm5lY3RlZCgpIHx8ICZub2RlLT5kb2N1bWVudCgpID09ICZkb2N1bWVudCkpCi0g
ICAgICAgIG5vZGVzVG9SZW1vdmUuYWRkKG5vZGUpOworICAgICAgICBub2Rlc1RvUmVtb3ZlLmFk
ZCgqbm9kZSk7CiB9CiAgICAgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RhdGljIHZvaWQgZmls
dGVyVmVjdG9yUGFpckZvclJlbW92YWwoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxULCBUPj4mIGxp
c3QsIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgSGFzaFNldDxOb2RlKj4mIG5vZGVzVG9SZW1v
dmUpCitzdGF0aWMgdm9pZCBmaWx0ZXJWZWN0b3JQYWlyRm9yUmVtb3ZhbChjb25zdCBWZWN0b3I8
c3RkOjpwYWlyPFQsIFQ+PiYgbGlzdCwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBIYXNoU2V0
PFJlZjxOb2RlPj4mIG5vZGVzVG9SZW1vdmUpCiB7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGxp
c3QpIHsKICAgICAgICAgY29uZGl0aW9uYWxseUFkZE5vZGVUb0ZpbHRlckxpc3QoZW50cnkuZmly
c3QsIGRvY3VtZW50LCBub2Rlc1RvUmVtb3ZlKTsKQEAgLTMwOTYsMTQgKzMwOTYsMTQgQEAgc3Rh
dGljIHZvaWQgZmlsdGVyVmVjdG9yUGFpckZvclJlbW92YWwoY29uc3QgVmVjdG9yPHN0ZDo6cGFp
cjxULCBUPj4mIGxpc3QsIGNvbnMKIH0KICAgICAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+Ci1zdGF0aWMgdm9pZCBmaWx0ZXJNYXBGb3JSZW1vdmFsKGNvbnN0IEhhc2hNYXA8VCwg
VT4mIGxpc3QsIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgSGFzaFNldDxOb2RlKj4mIG5vZGVz
VG9SZW1vdmUpCitzdGF0aWMgdm9pZCBmaWx0ZXJNYXBGb3JSZW1vdmFsKGNvbnN0IEhhc2hNYXA8
VCwgVT4mIGxpc3QsIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgSGFzaFNldDxSZWY8Tm9kZT4+
JiBub2Rlc1RvUmVtb3ZlKQogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBsaXN0KQogICAgICAg
ICBjb25kaXRpb25hbGx5QWRkTm9kZVRvRmlsdGVyTGlzdChlbnRyeS5rZXksIGRvY3VtZW50LCBu
b2Rlc1RvUmVtb3ZlKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0YXRpYyB2b2lkIGZp
bHRlckxpc3RGb3JSZW1vdmFsKGNvbnN0IExpc3RIYXNoU2V0PFQ+JiBsaXN0LCBjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQsIEhhc2hTZXQ8Tm9kZSo+JiBub2Rlc1RvUmVtb3ZlKQorc3RhdGljIHZv
aWQgZmlsdGVyTGlzdEZvclJlbW92YWwoY29uc3QgTGlzdEhhc2hTZXQ8VD4mIGxpc3QsIGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCwgSGFzaFNldDxSZWY8Tm9kZT4+JiBub2Rlc1RvUmVtb3ZlKQog
ewogICAgIGZvciAoYXV0byogbm9kZSA6IGxpc3QpCiAgICAgICAgIGNvbmRpdGlvbmFsbHlBZGRO
b2RlVG9GaWx0ZXJMaXN0KG5vZGUsIGRvY3VtZW50LCBub2Rlc1RvUmVtb3ZlKTsKQEAgLTMxMTEs
NyArMzExMSw3IEBAIHN0YXRpYyB2b2lkIGZpbHRlckxpc3RGb3JSZW1vdmFsKGNvbnN0IExpc3RI
YXNoU2V0PFQ+JiBsaXN0LCBjb25zdCBEb2N1bWVudCYgZG9jCiAKIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cHJlcGFyZUZvckRvY3VtZW50RGVzdHJ1Y3Rpb24oY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
KQogewotICAgIEhhc2hTZXQ8Tm9kZSo+IG5vZGVzVG9SZW1vdmU7CisgICAgSGFzaFNldDxSZWY8
Tm9kZT4+IG5vZGVzVG9SZW1vdmU7CiAgICAgZmlsdGVyTGlzdEZvclJlbW92YWwobV90ZXh0TWFy
a2VyTm9kZXMsIGRvY3VtZW50LCBub2Rlc1RvUmVtb3ZlKTsKICAgICBmaWx0ZXJMaXN0Rm9yUmVt
b3ZhbChtX21vZGFsRWxlbWVudHNTZXQsIGRvY3VtZW50LCBub2Rlc1RvUmVtb3ZlKTsKICAgICBm
aWx0ZXJMaXN0Rm9yUmVtb3ZhbChtX2RlZmVycmVkVGV4dENoYW5nZWRMaXN0LCBkb2N1bWVudCwg
bm9kZXNUb1JlbW92ZSk7CkBAIC0zMTIwLDggKzMxMjAsOCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6
OnByZXBhcmVGb3JEb2N1bWVudERlc3RydWN0aW9uKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkK
ICAgICBmaWx0ZXJNYXBGb3JSZW1vdmFsKG1fZGVmZXJyZWRBdHRyaWJ1dGVDaGFuZ2UsIGRvY3Vt
ZW50LCBub2Rlc1RvUmVtb3ZlKTsKICAgICBmaWx0ZXJWZWN0b3JQYWlyRm9yUmVtb3ZhbChtX2Rl
ZmVycmVkRm9jdXNlZE5vZGVDaGFuZ2UsIGRvY3VtZW50LCBub2Rlc1RvUmVtb3ZlKTsKICAgICAK
LSAgICBmb3IgKGF1dG8qIG5vZGUgOiBub2Rlc1RvUmVtb3ZlKQotICAgICAgICByZW1vdmUoKm5v
ZGUpOworICAgIGZvciAoYXV0byYgbm9kZSA6IG5vZGVzVG9SZW1vdmUpCisgICAgICAgIHJlbW92
ZShub2RlKTsKIH0KICAgICAKIGJvb2wgQVhPYmplY3RDYWNoZTo6bm9kZUlzVGV4dENvbnRyb2wo
Y29uc3QgTm9kZSogbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA3OGYwZTk5NWE2NjkxYWJkNmFk
Zjc5ZmE5MmYwOTI5NmE4YjIzMmUzLi40NGUxY2VkY2I5N2RmODFkYzBmMzYyNGYwMTI5YTQ4MzBk
M2E4ZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC05NSw5ICs5NSw5IEBAIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChOb2RlKTsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKICNpZiBE
VU1QX05PREVfU1RBVElTVElDUwotc3RhdGljIEhhc2hTZXQ8Tm9kZSo+JiBsaXZlTm9kZVNldCgp
CitzdGF0aWMgSGFzaFNldDxSZWY8Tm9kZT4+JiBsaXZlTm9kZVNldCgpCiB7Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8Tm9kZSo+PiBsaXZlTm9kZXM7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEhhc2hTZXQ8UmVmPE5vZGU+Pj4gbGl2ZU5vZGVzOwogICAgIHJldHVybiBs
aXZlTm9kZXM7CiB9CiAKQEAgLTI5NSw5ICsyOTUsOSBAQCBERUZJTkVfREVCVUdfT05MWV9HTE9C
QUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIG5vZGVDb3VudGVyLCAoIldlYkNvcmVOb2Rl
IgogI2lmbmRlZiBOREVCVUcKIHN0YXRpYyBib29sIHNob3VsZElnbm9yZUxlYWtzID0gZmFsc2U7
CiAKLXN0YXRpYyBIYXNoU2V0PE5vZGUqPiYgaWdub3JlU2V0KCkKK3N0YXRpYyBIYXNoU2V0PFJl
ZjxOb2RlPj4mIGlnbm9yZVNldCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hT
ZXQ8Tm9kZSo+PiBpZ25vcmU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8UmVm
PE5vZGU+Pj4gaWdub3JlOwogCiAgICAgcmV0dXJuIGlnbm9yZTsKIH0KQEAgLTMyMiwxMyArMzIy
LDEzIEBAIHZvaWQgTm9kZTo6dHJhY2tGb3JEZWJ1Z2dpbmcoKQogewogI2lmbmRlZiBOREVCVUcK
ICAgICBpZiAoc2hvdWxkSWdub3JlTGVha3MpCi0gICAgICAgIGlnbm9yZVNldCgpLmFkZCh0aGlz
KTsKKyAgICAgICAgaWdub3JlU2V0KCkuYWRkKCp0aGlzKTsKICAgICBlbHNlCiAgICAgICAgIG5v
ZGVDb3VudGVyLmluY3JlbWVudCgpOwogI2VuZGlmCiAKICNpZiBEVU1QX05PREVfU1RBVElTVElD
UwotICAgIGxpdmVOb2RlU2V0KCkuYWRkKHRoaXMpOworICAgIGxpdmVOb2RlU2V0KCkuYWRkKCp0
aGlzKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Fw
cGVuZE5vZGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwZW5kTm9kZUNv
bW1hbmQuY3BwCmluZGV4IDc2ZTA0Y2YwMTliOTAwYzkwMWVmMjgyOTU2MTg0YjQwZGMyODE1OGEu
LjQ0ODZkZGFmMjQ5ZGI0M2FhY2RmODQzNGVkZWRiYjJkNGY1MTBhNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwZW5kTm9kZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQXBwZW5kTm9kZUNvbW1hbmQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZv
aWQgQXBwZW5kTm9kZUNvbW1hbmQ6OmRvVW5hcHBseSgpCiB9CiAKICNpZm5kZWYgTkRFQlVHCi12
b2lkIEFwcGVuZE5vZGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYg
bm9kZXMpCit2b2lkIEFwcGVuZE5vZGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0
PFJlZjxOb2RlPj4mIG5vZGVzKQogewogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX3BhcmVu
dC5wdHIoKSwgbm9kZXMpOwogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX25vZGUucHRyKCks
IG5vZGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwZW5kTm9kZUNv
bW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwZW5kTm9kZUNvbW1hbmQuaAppbmRl
eCAzY2Q5MTQ0MzIyYzg1ODg2NTRiOWMyNmY1ZjI3OWJkOTc1ZGUzOTM5Li43ZDA4ZjZkMzFjMjAz
ZDFlMmE0NGM0Njc0NjMxZmYyMDVkMjM3MTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
cHBlbmROb2RlQ29tbWFuZC5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
b1VuYXBwbHkoKSBvdmVycmlkZTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICB2b2lkIGdldE5vZGVz
SW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXROb2Rlc0lu
Q29tbWFuZChIYXNoU2V0PFJlZjxOb2RlPj4mKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgUmVm
PENvbnRhaW5lck5vZGU+IG1fcGFyZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCBjNzAxMTQ1NzFiYmZjNzI4YjUwZWQ3MjcyZDg5
OGVkOGNjNzVjZTMxLi5iYzIzNGE3MmMyYzRhNGMzZTIwZDFlZTM2OGNjZDk1ODQ3NzBhMzMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApA
QCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgRWRpdENvbW1hbmRDb21wb3NpdGlvbjo6c2V0UmFuZ2VE
ZWxldGVkQnlVbmFwcGx5KGNvbnN0IFZpc2libGVQb3NpdGlvbkluZGV4CiB9CiAKICNpZm5kZWYg
TkRFQlVHCi12b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRpb246OmdldE5vZGVzSW5Db21tYW5kKEhh
c2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgRWRpdENvbW1hbmRDb21wb3NpdGlvbjo6Z2V0Tm9k
ZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+JiBub2RlcykKIHsKICAgICBmb3IgKGF1dG8m
IGNvbW1hbmQgOiBtX2NvbW1hbmRzKQogICAgICAgICBjb21tYW5kLT5nZXROb2Rlc0luQ29tbWFu
ZChub2Rlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVk
aXRDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmgKaW5kZXggMWViNmZlYzAwNmQ0N2RlMWJhNzc4ZjYxMjQ5OGQ2OWQzOGJkNGIxOS4uYzk2ZTQ5
YWNiMWZkMTMxYWQ3OWVkYTZlYWVmNDc3NGMwMjI3ZjA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRSYW5nZURlbGV0ZWRCeVVuYXBwbHkoY29uc3QgVmlzaWJsZVBvc2l0aW9u
SW5kZXhSYW5nZSYpOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIHZpcnR1YWwgdm9pZCBnZXROb2Rl
c0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpOworICAgIHZpcnR1YWwgdm9pZCBnZXROb2Rlc0lu
Q29tbWFuZChIYXNoU2V0PFJlZjxOb2RlPj4mKTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHAK
aW5kZXggN2IzZDlmMjFjNjI1MjA1NWMwMDJhOGQzM2RkOTg3NzYyYzdiMGMxNi4uZmVhMTcwNWY1
OWZmM2ZmMGRlYzFiMDhhMDM1MTY3NTEyOWRiZDE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0RlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwCkBAIC02NCw3ICs2NCw3
IEBAIHZvaWQgRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZDo6ZG9VbmFwcGx5KCkKIH0KIAogI2lm
bmRlZiBOREVCVUcKLXZvaWQgRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZDo6Z2V0Tm9kZXNJbkNv
bW1hbmQoSGFzaFNldDxOb2RlKj4mIG5vZGVzKQordm9pZCBEZWxldGVGcm9tVGV4dE5vZGVDb21t
YW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PFJlZjxOb2RlPj4mIG5vZGVzKQogewogICAg
IGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX25vZGUucHRyKCksIG5vZGVzKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmgKaW5kZXgg
ZGExZGY2YjEwMjkwMmIyMmIzMDE3OGM2MjBiMzkwZGZkYzYwMjQyMC4uNWQ4Y2U5OTRjOGJlMzk1
MTYyNDI1MDM2YjgxN2RjOGNiOTU0OTgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOwogICAgIAogI2lmbmRlZiBOREVCVUcK
LSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PFJlZjxOb2RlPj4mKSBvdmVycmlkZTsK
ICNlbmRpZgogICAgIAogICAgIFJlZjxUZXh0PiBtX25vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdENvbW1hbmQuY3BwCmluZGV4IDkwZjkxNGQzN2IyZDk3MTU4MWY1MzcxMDQ3NzNjMzlmNzIw
M2JkYzUuLmM5OWIwNmIyZDQ4ZDNkZTE0YzkzNWUyZjMxYzI4ZGQ5MWZiZjhiOGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCkBAIC0yMTYsMTAgKzIxNiwxMCBAQCB2b2lk
IFNpbXBsZUVkaXRDb21tYW5kOjpkb1JlYXBwbHkoKQogfQogCiAjaWZuZGVmIE5ERUJVRwotdm9p
ZCBTaW1wbGVFZGl0Q29tbWFuZDo6YWRkTm9kZUFuZERlc2NlbmRhbnRzKE5vZGUqIHN0YXJ0Tm9k
ZSwgSGFzaFNldDxOb2RlKj4mIG5vZGVzKQordm9pZCBTaW1wbGVFZGl0Q29tbWFuZDo6YWRkTm9k
ZUFuZERlc2NlbmRhbnRzKE5vZGUqIHN0YXJ0Tm9kZSwgSGFzaFNldDxSZWY8Tm9kZT4+JiBub2Rl
cykKIHsKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBzdGFydE5vZGU7IG5vZGU7IG5vZGUgPSBOb2Rl
VHJhdmVyc2FsOjpuZXh0KCpub2RlLCBzdGFydE5vZGUpKQotICAgICAgICBub2Rlcy5hZGQobm9k
ZSk7CisgICAgICAgIG5vZGVzLmFkZCgqbm9kZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0Q29tbWFuZC5oCmluZGV4IGU1YTFkYWJiNTk3ZTBmZTdiNjUyMGZjNWNhNWI0OTI0
OTM5ZWVhZTYuLjBmMjFlMmE4OWU5OGMyYzJmNTkxZDU3NzEzNmMwYjFlOTYwNmI1NGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmgKQEAgLTk0LDE0ICs5NCwxNCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRvUmVhcHBseSgpOyAvLyBjYWxscyBkb0FwcGx5KCkKIAogI2lm
bmRlZiBOREVCVUcKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxO
b2RlKj4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8
UmVmPE5vZGU+PiYpID0gMDsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgU2lt
cGxlRWRpdENvbW1hbmQoRG9jdW1lbnQmLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbjo6VW5zcGVj
aWZpZWQpOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIHZvaWQgYWRkTm9kZUFuZERlc2NlbmRhbnRz
KE5vZGUqLCBIYXNoU2V0PE5vZGUqPiYpOworICAgIHZvaWQgYWRkTm9kZUFuZERlc2NlbmRhbnRz
KE5vZGUqLCBIYXNoU2V0PFJlZjxOb2RlPj4mKTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5jcHAK
aW5kZXggOGJiYjdkNzJlMWFiYzYwMzYwMjUyYThhOTc1YmI4ODg0M2E5Y2JjYy4uMzVlODk0MjAx
ZjU5MTkwYzM0MGZlYWY0ZWFkYzU5N2RkZjY2NmE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwCkBAIC04Nyw3ICs4Nyw3
IEBAIHZvaWQgSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZDo6ZG9VbmFwcGx5KCkKIAogI2lmbmRl
ZiBOREVCVUcKIAotdm9pZCBJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kOjpnZXROb2Rlc0luQ29t
bWFuZChIYXNoU2V0PE5vZGUqPiYgbm9kZXMpCit2b2lkIEluc2VydEludG9UZXh0Tm9kZUNvbW1h
bmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYgbm9kZXMpCiB7CiAgICAg
YWRkTm9kZUFuZERlc2NlbmRhbnRzKG1fbm9kZS5wdHIoKSwgbm9kZXMpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmggYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuaAppbmRleCAy
MzZkZDZmNTI4MDg3MjE1OTdjN2YxZDRlY2M0MGY4NTFjYzk4YThlLi4xNTU5N2M2MjE2ZTNkODQz
NGQ3NGM5MWNhZjUzMDNhY2I4ZTkxYzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuaApAQCAtNDksNyArNDksNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZG9SZWFwcGx5KCkgb3ZlcnJpZGU7CiAgICAgCiAjaWZuZGVmIE5ERUJVRwot
ICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYpIG92ZXJyaWRlOwog
I2VuZGlmCiAgICAgCiAgICAgUmVmPFRleHQ+IG1fbm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9JbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5jcHAKaW5kZXggZGExZGY2OGJmNzVm
ZTJlMTZmNjA5OGViOGU1ZjIwNWNhMzA4NTJhNi4uZjRkNzBiYzc5MWY5YmEzNjNiYTdkMjdjZjhm
NmE5ZGY1NzM2NDgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRO
b2RlQmVmb3JlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRO
b2RlQmVmb3JlQ29tbWFuZC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBJbnNlcnROb2RlQmVm
b3JlQ29tbWFuZDo6ZG9VbmFwcGx5KCkKIH0KIAogI2lmbmRlZiBOREVCVUcKLXZvaWQgSW5zZXJ0
Tm9kZUJlZm9yZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2Rl
cykKK3ZvaWQgSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hT
ZXQ8UmVmPE5vZGU+PiYgbm9kZXMpCiB7CiAgICAgYWRkTm9kZUFuZERlc2NlbmRhbnRzKG1faW5z
ZXJ0Q2hpbGQucHRyKCksIG5vZGVzKTsKICAgICBhZGROb2RlQW5kRGVzY2VuZGFudHMobV9yZWZD
aGlsZC5wdHIoKSwgbm9kZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9J
bnNlcnROb2RlQmVmb3JlQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRO
b2RlQmVmb3JlQ29tbWFuZC5oCmluZGV4IDI1ZDM0M2M4ZTEzMzE2NDE4ZTc0MDBhZGM4MjVhMGY4
Y2U1MTY2N2IuLmFiNDBmY2Y3N2JiYTZjMTgzNDk4ZDk3M2VhOTA4YzIxOTU3MDllODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmgKQEAg
LTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOwog
CiAjaWZuZGVmIE5ERUJVRwotICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2Rl
Kj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5v
ZGU+PiYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBSZWY8Tm9kZT4gbV9pbnNlcnRDaGlsZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50
c0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1l
bnRzQ29tbWFuZC5jcHAKaW5kZXggZDYxZGViN2Y4MWE4MTI3MTcxMDk3ODRiODE2Y2IzODZkMThi
N2JhMi4uMzI5MzUzNDljMGIxYmYxNTM3OWVjODM4YjQ1Njc2ODIyNWI4YTIwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29t
bWFuZC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29t
bWFuZDo6ZG9VbmFwcGx5KCkKIH0KIAogI2lmbmRlZiBOREVCVUcKLXZvaWQgTWVyZ2VJZGVudGlj
YWxFbGVtZW50c0NvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2Rl
cykKK3ZvaWQgTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5k
KEhhc2hTZXQ8UmVmPE5vZGU+PiYgbm9kZXMpCiB7CiAgICAgYWRkTm9kZUFuZERlc2NlbmRhbnRz
KG1fZWxlbWVudDEucHRyKCksIG5vZGVzKTsKICAgICBhZGROb2RlQW5kRGVzY2VuZGFudHMobV9l
bGVtZW50Mi5wdHIoKSwgbm9kZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5oCmluZGV4IDY4NmFiYTZjODI2Yjc3ZWNk
OTM1YjZjNGNhMTdiNWExMzMxNTE4ZWUuLmNkOGQzMzNhMWU3YTE4N2E3MTM1MDUxMmVjODc1MTU3
MTY3MGZkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGlj
YWxFbGVtZW50c0NvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRl
bnRpY2FsRWxlbWVudHNDb21tYW5kLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOwogICAgIAogI2lmbmRlZiBOREVCVUcKLSAgICB2b2lk
IGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBn
ZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PFJlZjxOb2RlPj4mKSBvdmVycmlkZTsKICNlbmRpZgog
ICAgIAogICAgIFJlZjxFbGVtZW50PiBtX2VsZW1lbnQxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcAppbmRleCAwOWFlMTk2NTNkMmVmNDQxMmNmNTI1Yjg5
ZWMxNWMyNTlkMzg2MWMzLi5hZDM2NjM4NTBmMzNiNThkZmQyYmVjNTFiZGEwNjYyZDFkNTJjOWMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcApAQCAt
NjYsNyArNjYsNyBAQCB2b2lkIFJlbW92ZU5vZGVDb21tYW5kOjpkb1VuYXBwbHkoKQogfQogCiAj
aWZuZGVmIE5ERUJVRwotdm9pZCBSZW1vdmVOb2RlQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQo
SGFzaFNldDxOb2RlKj4mIG5vZGVzKQordm9pZCBSZW1vdmVOb2RlQ29tbWFuZDo6Z2V0Tm9kZXNJ
bkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+JiBub2RlcykKIHsKICAgICBhZGROb2RlQW5kRGVz
Y2VuZGFudHMobV9wYXJlbnQuZ2V0KCksIG5vZGVzKTsKICAgICBhZGROb2RlQW5kRGVzY2VuZGFu
dHMobV9yZWZDaGlsZC5nZXQoKSwgbm9kZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1v
dmVOb2RlQ29tbWFuZC5oCmluZGV4IDMxNmUyYTQ5Nzc2NzA1OTQ4ZTE1NjQyNTlkNWQyYjE2M2Vk
ZDE3MjAuLjBhNmVhN2M2NGQ5NWRhODRkNGI0MzMyMGNlYjZmZTUzZTFjMTA1OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmgKQEAgLTQzLDcgKzQzLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOwogCiAjaWZuZGVmIE5ERUJV
RwotICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mKSBvdmVycmlkZTsK
KyAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYpIG92ZXJyaWRl
OwogI2VuZGlmCiAKICAgICBSZWY8Tm9kZT4gbV9ub2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcAppbmRleCA3MzRlMDNj
OWJkMTBiMDc1MDliOTg0ZThhYzIzNjU2ZTZlZTA0OWI0Li5iOGQ5OWYwYWU3NDIyY2E1NTgzOGYx
ZjEzNTcwZWQ4MTg5NmI5ZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFJl
cGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kOjpkb1VuYXBwbHkoKQogfQogCiAjaWZuZGVmIE5ERUJV
Rwotdm9pZCBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQoSGFz
aFNldDxOb2RlKj4mIG5vZGVzKQordm9pZCBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZDo6Z2V0
Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+JiBub2RlcykKIHsKICAgICBhZGROb2Rl
QW5kRGVzY2VuZGFudHMobV9lbGVtZW50VG9SZXBsYWNlLnB0cigpLCBub2Rlcyk7CiAgICAgYWRk
Tm9kZUFuZERlc2NlbmRhbnRzKG1fc3BhbkVsZW1lbnQuZ2V0KCksIG5vZGVzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuaAppbmRl
eCBlNWQzMGZjNWYyNzE2MGRmYzc3ZmI5OTU5NGMwYmJkYzYwNjk5MGMzLi40NjBjMDczYjM2ZjM0
NGIyNzUxNWMxNWUzMGVhZWEyY2UxYTFlOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5oCkBAIC01Myw3ICs1Myw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkb1VuYXBwbHkoKSBvdmVycmlkZTsKICAgICAKICNpZm5kZWYgTkRF
QlVHCi0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRl
OworICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+Jikgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAogICAgIFJlZjxIVE1MRWxlbWVudD4gbV9lbGVtZW50VG9SZXBsYWNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNw
cAppbmRleCAxZTJiYmJjZmJlNTY4MTZmZDNhYmVmMDQ5YTYzYzlmNzBjMGZiMGE0Li5kNjYyZGQ1
YmM4YzBiYTljNWIwZDJhNTdlYTQ3MmViN2VkMWQxMjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcApAQCAtNTQsNyArNTQsNyBA
QCB2b2lkIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kOjpkb1VuYXBwbHkoKQogfQogCiAjaWZuZGVm
IE5ERUJVRwotdm9pZCBTZXROb2RlQXR0cmlidXRlQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQo
SGFzaFNldDxOb2RlKj4mIG5vZGVzKQordm9pZCBTZXROb2RlQXR0cmlidXRlQ29tbWFuZDo6Z2V0
Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+JiBub2RlcykKIHsKICAgICBhZGROb2Rl
QW5kRGVzY2VuZGFudHMobV9lbGVtZW50LnB0cigpLCBub2Rlcyk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmgKaW5kZXggZGU1MTJjNTBl
NzI3MGUwNDljNDhhZWNkMWNmNzdkOWE1Yjg3M2VkMC4uN2U5ZTU5Y2ExZmFlZTFlNzcyMjFjNzNm
ZjM1NTkxOGQ1MTNkYWU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRO
b2RlQXR0cmlidXRlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0Tm9k
ZUF0dHJpYnV0ZUNvbW1hbmQuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZG9VbmFwcGx5KCkgb3ZlcnJpZGU7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBnZXROb2Rl
c0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Tm9kZXNJ
bkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIFJl
ZjxFbGVtZW50PiBtX2VsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NldFNlbGVjdGlvbkNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0U2VsZWN0
aW9uQ29tbWFuZC5oCmluZGV4IGY2YzlmMDYzMGI1ZmYxYjhiYTFjZDU5MjRjZWQxNWNjMzlhM2Zi
YmUuLjBhYjc1OGIxNWQ1NGZmMDllMDkxYWNkNzc4MDZkMzhmYTE0YTViZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0U2VsZWN0aW9uQ29tbWFuZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU2V0U2VsZWN0aW9uQ29tbWFuZC5oCkBAIC00NCw3ICs0NCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkb1VuYXBwbHkoKSBvdmVycmlkZTsKIAogI2lmbmRlZiBOREVC
VUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikgb3ZlcnJpZGUg
eyB9CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PFJlZjxOb2RlPj4mKSBvdmVy
cmlkZSB7IH0KICNlbmRpZgogCiAgICAgT3B0aW9uU2V0PEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxl
Y3Rpb25PcHRpb24+IG1fb3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGE4NDg2NjM2NTNhMGY3ZmYyOTcz
NzM2YjExOTcyYzhjNjRjOGNhYWQuLjliZDI5YzcyNjQzZjBhYTdlMzE1ZjM3YmQ2MzU3MWM5MGRk
YWRlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0
aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJl
Y3Rpb25Db21tYW5kLmNwcApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIH0KIAogI2lm
bmRlZiBOREVCVUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikg
b3ZlcnJpZGUKKyAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYp
IG92ZXJyaWRlCiAgICAgewogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAKaW5kZXggZjU2Zjk2YTg4MDk3NDdhNWM1MmZkOTc2
ZDAxZDY0YzQ0MDQ3MjNhNy4uOTQyZjdlZmZmM2QzNjNkZjM2YzZlZTI2ODE4YTg2MGEyNTMzYTE5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3Bw
CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBTcGxpdEVsZW1lbnRDb21tYW5kOjpkb1JlYXBwbHko
KQogfQogCiAjaWZuZGVmIE5ERUJVRwotdm9pZCBTcGxpdEVsZW1lbnRDb21tYW5kOjpnZXROb2Rl
c0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYgbm9kZXMpCit2b2lkIFNwbGl0RWxlbWVudENvbW1h
bmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYgbm9kZXMpCiB7CiAgICAg
YWRkTm9kZUFuZERlc2NlbmRhbnRzKG1fZWxlbWVudDEuZ2V0KCksIG5vZGVzKTsKICAgICBhZGRO
b2RlQW5kRGVzY2VuZGFudHMobV9lbGVtZW50Mi5wdHIoKSwgbm9kZXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuaAppbmRleCA5ODMxNjUxYjAwMGFhNzU0
ZGJmYjYxNzA0NzZkN2NjYzc0MzkwZWYyLi40OWMxNmExODFjNGY4YWRmYzViNGRmNWMzY2FlZjJk
NWIwNGFkMjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVu
dENvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1h
bmQuaApAQCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhlY3V0ZUFwcGx5KCk7
CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5v
ZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8
Tm9kZT4+Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIFJlZlB0cjxFbGVtZW50PiBtX2VsZW1l
bnQxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0VGV4dE5vZGVDb21tYW5kLmNw
cAppbmRleCBhMTY0NTJjNmE0YWEzNWRhOWFhZjBmYTA5ZTBjZDBjNWIwNTI0NTlmLi4wOTAzYmMw
N2ZmODNmMTYxNGVlODM1YjczZDU1ZTQ1MDFmZjAyN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NwbGl0VGV4dE5vZGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NwbGl0VGV4dE5vZGVDb21tYW5kLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZv
aWQgU3BsaXRUZXh0Tm9kZUNvbW1hbmQ6Omluc2VydFRleHQxQW5kVHJpbVRleHQyKCkKIAogI2lm
bmRlZiBOREVCVUcKIAotdm9pZCBTcGxpdFRleHROb2RlQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1h
bmQoSGFzaFNldDxOb2RlKj4mIG5vZGVzKQordm9pZCBTcGxpdFRleHROb2RlQ29tbWFuZDo6Z2V0
Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+JiBub2RlcykKIHsKICAgICBhZGROb2Rl
QW5kRGVzY2VuZGFudHMobV90ZXh0MS5nZXQoKSwgbm9kZXMpOwogICAgIGFkZE5vZGVBbmREZXNj
ZW5kYW50cyhtX3RleHQyLnB0cigpLCBub2Rlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NwbGl0VGV4dE5vZGVDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NwbGl0VGV4dE5vZGVDb21tYW5kLmgKaW5kZXggYjk5MTlkNjcwODcxOTIyMjljMDVjMzg3M2Zm
OWYyMDEyOTEyOGZkMC4uOWFkMDg0NDhlZjU0YWU4NzE1NDJhYWMzZjNhNzkzZTlmMTgyNDNmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQuaApAQCAt
NDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5zZXJ0VGV4dDFBbmRUcmltVGV4dDIo
KTsKICAgICAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNo
U2V0PE5vZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNl
dDxSZWY8Tm9kZT4+Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIFJlZlB0cjxUZXh0PiBtX3Rl
eHQxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XcmFwQ29udGVudHNJbkR1
bW15U3BhbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XcmFwQ29udGVudHNJ
bkR1bW15U3BhbkNvbW1hbmQuY3BwCmluZGV4IDQwMDZmYThlZDFmYjNlMmI2ZWUxYmRmNzZmMDNi
OGJiY2FkNjc2ZTYuLjE4YmRiMzA4YmE4YTQ0Yzc1ZGYxZTY5ODc1ODAxZjFkYmZhZGEyZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV3JhcENvbnRlbnRzSW5EdW1teVNwYW5D
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dyYXBDb250ZW50c0luRHVt
bXlTcGFuQ29tbWFuZC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBXcmFwQ29udGVudHNJbkR1
bW15U3BhbkNvbW1hbmQ6OmRvUmVhcHBseSgpCiB9CiAKICNpZm5kZWYgTkRFQlVHCi12b2lkIFdy
YXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxO
b2RlKj4mIG5vZGVzKQordm9pZCBXcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQ6OmdldE5v
ZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYgbm9kZXMpCiB7CiAgICAgYWRkTm9kZUFu
ZERlc2NlbmRhbnRzKG1fZWxlbWVudC5wdHIoKSwgbm9kZXMpOwogICAgIGFkZE5vZGVBbmREZXNj
ZW5kYW50cyhtX2R1bW15U3Bhbi5nZXQoKSwgbm9kZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmgKaW5kZXggZmJk
MGExZDZmYjU2MjQ5YmViOGFjNzhmNDI4MmUzNjg0OWI5YWJjOC4uZjgzODExZjU3MmYxNzFkYmU5
YTM1NjMyNDA4MGFmNTI0MmZhM2ViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1dyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oCkBAIC00Nyw3ICs0Nyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBleGVjdXRlQXBwbHkoKTsKIAogI2lmbmRlZiBOREVCVUcKLSAg
ICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikgb3ZlcnJpZGU7CisgICAg
dm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PFJlZjxOb2RlPj4mKSBvdmVycmlkZTsKICNl
bmRpZgogCiAgICAgUmVmPEVsZW1lbnQ+IG1fZWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCA1MmE1NjMxNWM0YjM1OTBjN2NhMTVh
YjhmYjU0OWRhMWM3OTJhNDFmLi5kNDVmNWI3NDgwZDU4M2Q4ZDk5NWZkYjViMjVmZDBjNjAzNjRm
ZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
CkBAIC0yNjIsNyArMjYyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEhhc2hNYXA8RWxl
bWVudCosIHN0ZDo6dW5pcXVlX3B0cjxDb21wdXRlZFN0eWxlRXh0cmFjdG9yPj4gbV9jb21wdXRl
ZFN0eWxlczsKLSAgICBIYXNoU2V0PE5vZGUqPiBtX2FuY2VzdG9yc1VuZGVyQ29tbW9uQW5jZXN0
b3I7CisgICAgSGFzaFNldDxSZWY8Tm9kZT4+IG1fYW5jZXN0b3JzVW5kZXJDb21tb25BbmNlc3Rv
cjsKIH07CiAKIEBpbnRlcmZhY2UgTlNUZXh0TGlzdCAoV2ViQ29yZU5TVGV4dExpc3REZXRhaWxz
KQpAQCAtMjI4NCw3ICsyMjg0LDcgQEAgTm9kZSogSFRNTENvbnZlcnRlckNhY2hlczo6Y2FjaGVB
bmNlc3RvcnNPZlN0YXJ0VG9CZUNvbnZlcnRlZChjb25zdCBQb3NpdGlvbiYgc3QKICAgICBOb2Rl
KiBhbmNlc3RvciA9IHN0YXJ0LmNvbnRhaW5lck5vZGUoKTsKIAogICAgIHdoaWxlIChhbmNlc3Rv
cikgewotICAgICAgICBtX2FuY2VzdG9yc1VuZGVyQ29tbW9uQW5jZXN0b3IuYWRkKGFuY2VzdG9y
KTsKKyAgICAgICAgbV9hbmNlc3RvcnNVbmRlckNvbW1vbkFuY2VzdG9yLmFkZCgqYW5jZXN0b3Ip
OwogICAgICAgICBpZiAoYW5jZXN0b3IgPT0gY29tbW9uQW5jZXN0b3IpCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50SW5Db21wb3NlZFRyZWUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKaW5kZXggYTgyNzE3Mzg4MTY5YjcxZjZmMDMxZDI4ZDNlMjY2MmZjNDIyMWUy
ZS4uODZiNDkzMTZkYTY4ZDQ5NWQ0NmE0YzdlN2VmZTQ0MDFmNjQzMjVlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAK
QEAgLTEzMzYsNyArMTMzNiw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3Bl
Y3RvckRPTUFnZW50OjpoaWdobGlnaHRTZWxlY3RvcihSZWY8SlNPTjo6T2JqCiAgICAgU2VsZWN0
b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlcigqZG9jdW1lbnQpOwogCiAgICAgVmVjdG9yPFJlZjxO
b2RlPj4gbm9kZUxpc3Q7Ci0gICAgSGFzaFNldDxOb2RlKj4gc2Vlbk5vZGVzOworICAgIEhhc2hT
ZXQ8UmVmPE5vZGU+PiBzZWVuTm9kZXM7CiAKICAgICBmb3IgKGF1dG8mIGRlc2NlbmRhbnQgOiBj
b21wb3NlZFRyZWVEZXNjZW5kYW50cygqZG9jdW1lbnQpKSB7CiAgICAgICAgIGlmICghaXM8RWxl
bWVudD4oZGVzY2VuZGFudCkpCkBAIC0xMzU2LDcgKzEzNTYsNyBAQCBQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0U2VsZWN0b3IoUmVmPEpT
T046Ok9iagogICAgICAgICAgICAgY29udGV4dC5wc2V1ZG9JZCA9IHBzZXVkb0lkOwogCiAgICAg
ICAgICAgICBpZiAoc2VsZWN0b3JDaGVja2VyLm1hdGNoKCpzZWxlY3RvciwgZGVzY2VuZGFudEVs
ZW1lbnQsIGNvbnRleHQpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNlZW5Ob2Rlcy5hZGQoJmRl
c2NlbmRhbnRFbGVtZW50KSkKKyAgICAgICAgICAgICAgICBpZiAoc2Vlbk5vZGVzLmFkZChkZXNj
ZW5kYW50RWxlbWVudCkpCiAgICAgICAgICAgICAgICAgICAgIG5vZGVMaXN0LmFwcGVuZChkZXNj
ZW5kYW50RWxlbWVudCk7CiAgICAgICAgICAgICB9CiAKQEAgLTEzNjYsNyArMTM2Niw3IEBAIFBy
b3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRT
ZWxlY3RvcihSZWY8SlNPTjo6T2JqCiAgICAgICAgICAgICAgICAgaWYgKHBzZXVkb0lEcy5oYXMo
UHNldWRvSWQ6OkJlZm9yZSkpIHsKICAgICAgICAgICAgICAgICAgICAgcHNldWRvSURzLnJlbW92
ZShQc2V1ZG9JZDo6QmVmb3JlKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGJlZm9y
ZVBzZXVkb0VsZW1lbnQgPSBkZXNjZW5kYW50RWxlbWVudC5iZWZvcmVQc2V1ZG9FbGVtZW50KCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWVuTm9kZXMuYWRkKGJlZm9yZVBzZXVk
b0VsZW1lbnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlZW5Ob2Rlcy5hZGQoKmJl
Zm9yZVBzZXVkb0VsZW1lbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVMaXN0
LmFwcGVuZCgqYmVmb3JlUHNldWRvRWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9CkBAIC0xMzc0LDEzICsxMzc0LDEzIEBAIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRTZWxlY3RvcihSZWY8SlNP
Tjo6T2JqCiAgICAgICAgICAgICAgICAgaWYgKHBzZXVkb0lEcy5oYXMoUHNldWRvSWQ6OkFmdGVy
KSkgewogICAgICAgICAgICAgICAgICAgICBwc2V1ZG9JRHMucmVtb3ZlKFBzZXVkb0lkOjpBZnRl
cik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBhZnRlclBzZXVkb0VsZW1lbnQgPSBk
ZXNjZW5kYW50RWxlbWVudC5hZnRlclBzZXVkb0VsZW1lbnQoKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHNlZW5Ob2Rlcy5hZGQoYWZ0ZXJQc2V1ZG9FbGVtZW50KSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChzZWVuTm9kZXMuYWRkKCphZnRlclBzZXVkb0VsZW1lbnQpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVMaXN0LmFwcGVuZCgqYWZ0ZXJQc2V1ZG9F
bGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgICAgIGlmIChwc2V1ZG9JRHMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNl
ZW5Ob2Rlcy5hZGQoJmRlc2NlbmRhbnRFbGVtZW50KSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHNlZW5Ob2Rlcy5hZGQoZGVzY2VuZGFudEVsZW1lbnQpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZUxpc3QuYXBwZW5kKGRlc2NlbmRhbnRFbGVtZW50KTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5j
dGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAppbmRleCAx
MGYwYzIyZDRiNjdjZTVmZmEzYjgzMDY5Y2JmNDA2MDUxMjFlZWQ1Li5hY2QzYzk0NDJjYTUwNDE5
MDIzZDdlNDljY2FiYWMyMDQ1Mzk3YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9u
cy5jcHAKQEAgLTMyOSw3ICszMjksNyBAQCBWYWx1ZSBGdW5JZDo6ZXZhbHVhdGUoKSBjb25zdAog
ICAgIAogICAgIFRyZWVTY29wZSYgY29udGV4dFNjb3BlID0gZXZhbHVhdGlvbkNvbnRleHQoKS5u
b2RlLT50cmVlU2NvcGUoKTsKICAgICBOb2RlU2V0IHJlc3VsdDsKLSAgICBIYXNoU2V0PE5vZGUq
PiByZXN1bHRTZXQ7CisgICAgSGFzaFNldDxSZWY8Tm9kZT4+IHJlc3VsdFNldDsKIAogICAgIHVu
c2lnbmVkIHN0YXJ0UG9zID0gMDsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBpZExpc3QubGVuZ3Ro
KCk7CkBAIC0zNDcsNyArMzQ3LDcgQEAgVmFsdWUgRnVuSWQ6OmV2YWx1YXRlKCkgY29uc3QKICAg
ICAgICAgLy8gSWYgdGhlcmUgYXJlIHNldmVyYWwgbm9kZXMgd2l0aCB0aGUgc2FtZSBpZCwgaWQo
KSBzaG91bGQgcmV0dXJuIHRoZSBmaXJzdCBvbmUuCiAgICAgICAgIC8vIEluIFdlYktpdCwgZ2V0
RWxlbWVudEJ5SWQgYmVoYXZlcyBzbywgdG9vLCBhbHRob3VnaCBpdHMgYmVoYXZpb3IgaW4gdGhp
cyBjYXNlIGlzIGZvcm1hbGx5IHVuZGVmaW5lZC4KICAgICAgICAgTm9kZSogbm9kZSA9IGNvbnRl
eHRTY29wZS5nZXRFbGVtZW50QnlJZCh0b1N0cmluZ1ZpZXcoaWRMaXN0KS5zdWJzdHJpbmcoc3Rh
cnRQb3MsIGVuZFBvcyAtIHN0YXJ0UG9zKSk7Ci0gICAgICAgIGlmIChub2RlICYmIHJlc3VsdFNl
dC5hZGQobm9kZSkuaXNOZXdFbnRyeSkKKyAgICAgICAgaWYgKG5vZGUgJiYgcmVzdWx0U2V0LmFk
ZCgqbm9kZSkuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobm9kZSk7CiAg
ICAgICAgIAogICAgICAgICBzdGFydFBvcyA9IGVuZFBvczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9k
ZVNldC5jcHAKaW5kZXggZDA0YmQ2MmMxNDQzYTFhODc5OTlmOTZiMDAzYzJmNzJjODg2MzAyNC4u
MzBkYzU1YWJjNzE3OTMwZTlmZGM1YWNlMzhiMGIxNzc5ZjRlM2EwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9kZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoTm9kZVNldC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgdm9pZCBzb3J0Qmxv
Y2sodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIFZlY3RvcjxWZWN0b3I8Tm9kZSo+PiYgcGFy
ZW50TQogCiAgICAgLy8gQ2hpbGRyZW4gbm9kZXMgb2YgdGhlIGNvbW1vbiBhbmNlc3RvciBpbmR1
Y2UgYSBzdWJkaXZpc2lvbiBvZiBvdXIgbm9kZS1zZXQuCiAgICAgLy8gU29ydCBpdCBhY2NvcmRp
bmcgdG8gdGhpcyBzdWJkaXZpc2lvbiwgYW5kIHJlY3Vyc2l2ZWx5IHNvcnQgZWFjaCBncm91cC4K
LSAgICBIYXNoU2V0PE5vZGUqPiBwYXJlbnROb2RlczsKKyAgICBIYXNoU2V0PFJlZlB0cjxOb2Rl
Pj4gcGFyZW50Tm9kZXM7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gZnJvbTsgaSA8IHRvOyArK2kp
CiAgICAgICAgIHBhcmVudE5vZGVzLmFkZChwYXJlbnRXaXRoRGVwdGgoY29tbW9uQW5jZXN0b3JE
ZXB0aCArIDEsIHBhcmVudE1hdHJpeFtpXSkpOwogCkBAIC0xOTIsNyArMTkyLDcgQEAgc3RhdGlj
IE5vZGUqIGZpbmRSb290Tm9kZShOb2RlKiBub2RlKQogCiB2b2lkIE5vZGVTZXQ6OnRyYXZlcnNh
bFNvcnQoKSBjb25zdAogewotICAgIEhhc2hTZXQ8Tm9kZSo+IG5vZGVzOworICAgIEhhc2hTZXQ8
UmVmUHRyPE5vZGU+PiBub2RlczsKICAgICBib29sIGNvbnRhaW5zQXR0cmlidXRlTm9kZXMgPSBm
YWxzZTsKIAogICAgIHVuc2lnbmVkIG5vZGVDb3VudCA9IG1fbm9kZXMuc2l6ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhQYXRoLmNwcAppbmRleCBhMjA1MjRkOWMyZDI4ZmYwZTc1ZDYwODY0Y2RmZGQzZDYw
YWExNWI5Li41Y2YzYjM2OTI0MjlhZjY2NDJhMmY4ODBkMTE0YzBkZGVjZjI1ZmZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFBhdGhQYXRoLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgTG9jYXRpb25QYXRo
OjpldmFsdWF0ZShOb2RlU2V0JiBub2RlcykgY29uc3QKIAogICAgIGZvciAoYXV0byYgc3RlcCA6
IG1fc3RlcHMpIHsKICAgICAgICAgTm9kZVNldCBuZXdOb2RlczsKLSAgICAgICAgSGFzaFNldDxO
b2RlKj4gbmV3Tm9kZXNTZXQ7CisgICAgICAgIEhhc2hTZXQ8UmVmUHRyPE5vZGU+PiBuZXdOb2Rl
c1NldDsKIAogICAgICAgICBib29sIG5lZWRUb0NoZWNrRm9yRHVwbGljYXRlTm9kZXMgPSAhbm9k
ZXMuc3VidHJlZXNBcmVEaXNqb2ludCgpIHx8IChzdGVwLT5heGlzKCkgIT0gU3RlcDo6Q2hpbGRB
eGlzICYmIHN0ZXAtPmF4aXMoKSAhPSBTdGVwOjpTZWxmQXhpcwogICAgICAgICAgICAgJiYgc3Rl
cC0+YXhpcygpICE9IFN0ZXA6OkRlc2NlbmRhbnRBeGlzICYmIHN0ZXAtPmF4aXMoKSAhPSBTdGVw
OjpEZXNjZW5kYW50T3JTZWxmQXhpcyAmJiBzdGVwLT5heGlzKCkgIT0gU3RlcDo6QXR0cmlidXRl
QXhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcAppbmRleCBjMWJiYzU0ZWI4
MzAxNjkxMTljODY4MzFhNGYyYTZlN2MwMDQ1NjhkLi5mMzVlZDI4YjQxOTJkODk5NjE5YzlhYWVl
OTViNWQ1M2FlMzUxMjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVk
aWNhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKQEAg
LTI0MSw3ICsyNDEsNyBAQCBWYWx1ZSBVbmlvbjo6ZXZhbHVhdGUoKSBjb25zdAogICAgIE5vZGVT
ZXQmIHJlc3VsdFNldCA9IGxoc1Jlc3VsdC5tb2RpZmlhYmxlTm9kZVNldCgpOwogICAgIGNvbnN0
IE5vZGVTZXQmIHJoc05vZGVzID0gcmhzLnRvTm9kZVNldCgpOwogCi0gICAgSGFzaFNldDxOb2Rl
Kj4gbm9kZXM7CisgICAgSGFzaFNldDxSZWZQdHI8Tm9kZT4+IG5vZGVzOwogICAgIGZvciAoYXV0
byYgcmVzdWx0IDogcmVzdWx0U2V0KQogICAgICAgICBub2Rlcy5hZGQocmVzdWx0LmdldCgpKTsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428305</attachid>
            <date>2021-05-11 12:25:55 -0700</date>
            <delta_ts>2021-05-11 12:33:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220464-20210511122555.patch</filename>
            <type>text/plain</type>
            <size>41280</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU2N2QxY2Q2YjA4YTAz
OTEwMzk4ODIzNDhjMWNiOTk5YjA4MjQ3Zi4uMTdjZmRmNzZmMzRmYThhZGQ0YzhjNmRmOGU5NDcx
NTNjMWIxODI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDIxLTA1LTExICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIEhh
c2hTZXQ8UmVmUHRyPE5vZGU+PiBpbnN0ZWFkIG9mIEhhc2hTZXQ8Tm9kZSo+CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA0NjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBDaHJpcyBEdW1leiBhbmQgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIFRoaXMg
bWFrZXMgdXMgbW9yZSByZXNpc3RlbnQgdG8gbGlmZXRpbWUgYnVncy4KKworICAgICAgICBsaXZl
Tm9kZVNldCgpIGFuZCBpZ25vcmVTZXQoKSBuZWVkIHRvIGJlIFdlYWtIYXNoU2V0LCBhbmQgdGhl
eSBhcmUgb25seSB1c2VkIGluIGRlYnVnIGJ1aWxkcyBzbyB0aGF0J3MgZmluZS4KKworICAgICAg
ICBNdXRhdGlvbk9ic2VydmVyOjpvYnNlcnZlZE5vZGVzKCkgaXMgbm90IGNhbGxlZCBvbiB0aGUg
bWFpbiB0aHJlYWQsIGJ1dCBpdCdzIGNhbGxlZCBkdXJpbmcgZ2FyYmFnZSBjb2xsZWN0aW9uLgor
ICAgICAgICBJIHJlcGxhY2VkIGl0IHdpdGggTXV0YXRpb25PYnNlcnZlcjo6aXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMgd2hpY2ggZWxpbWluYXRlcyB0aGUgSGFzaFNldCBhbGxvY2F0aW9uIGFu
ZCBoYXNoaW5nLAorICAgICAgICBhbmQgaXQgY2FuIHJldHVybiB0cnVlIGVhcmx5IGlmIGl0IGZp
bmRzIGEgY29udGFpbmVkIG9wYXF1ZSByb290LCByZXN1bHRpbmcgaW4gbGVzcyB3b3JrIGluIHNl
dmVyYWwgd2F5cy4KKyAgICAgICAgVGhpcyBzaG91bGQgb25seSBpbmNyZWFzZSBvdXIgcGVyZm9y
bWFuY2Ugc2xpZ2h0bHkgd2hpbGUgZ2V0dGluZyB0aGUgc2FtZSBiZWhhdmlvci4KKworICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b25kaXRpb25hbGx5QWRkTm9kZVRvRmlsdGVyTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpmaWx0
ZXJWZWN0b3JQYWlyRm9yUmVtb3ZhbCk6CisgICAgICAgIChXZWJDb3JlOjpmaWx0ZXJNYXBGb3JS
ZW1vdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbHRlckxpc3RGb3JSZW1vdmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnByZXBhcmVGb3JEb2N1bWVudERlc3RydWN0aW9u
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbk9ic2VydmVyT3duZXI6OmlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjogY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IGRvbS9NdXRhdGlvbk9ic2VydmVyLmg6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXJS
ZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lz
dHJhdGlvbjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6YWRkUmVnaXN0cmF0aW9uTm9kZXNU
b1NldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdp
c3RyYXRpb24uaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjps
aXZlTm9kZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdGb3JSYXJlRGF0YVVzZVR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZHVtcFN0YXRpc3RpY3MpOgorICAgICAgICAoV2Vi
Q29yZTo6aWdub3JlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnRyYWNrRm9yRGVidWdn
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6On5Ob2RlKToKKyAgICAgICAgKiBlZGl0aW5n
L0FwcGVuZE5vZGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZE5vZGVDb21t
YW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAgICogZWRpdGluZy9BcHBlbmROb2RlQ29t
bWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6Z2V0Tm9kZXNJbkNvbW1hbmQp
OgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL0RlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQpOgorICAgICAgICAq
IGVkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcv
RWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRWRpdENvbW1hbmQ6OmFk
ZE5vZGVBbmREZXNjZW5kYW50cyk6CisgICAgICAgICogZWRpdGluZy9FZGl0Q29tbWFuZC5oOgor
ICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6
CisgICAgICAgICogZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmg6CisgICAgICAg
ICogZWRpdGluZy9JbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNlcnROb2RlQmVmb3JlQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQpOgorICAgICAgICAq
IGVkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL01l
cmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lcmdl
SWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAgICAgICog
ZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRp
bmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlTm9kZUNv
bW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZU5vZGVD
b21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZDo6Z2V0Tm9k
ZXNJbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1h
bmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNldE5vZGVBdHRyaWJ1dGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFu
ZCk6CisgICAgICAgICogZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5oOgorICAgICAg
ICAqIGVkaXRpbmcvU2V0U2VsZWN0aW9uQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgICogZWRpdGluZy9TcGxpdEVsZW1l
bnRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwbGl0RWxlbWVudENvbW1hbmQ6Omdl
dE5vZGVzSW5Db21tYW5kKToKKyAgICAgICAgKiBlZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQu
aDoKKyAgICAgICAgKiBlZGl0aW5nL1NwbGl0VGV4dE5vZGVDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNwbGl0VGV4dE5vZGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZCk6CisgICAg
ICAgICogZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcv
V3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldy
YXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQpOgorICAgICAg
ICAqIGVkaXRpbmcvV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmg6CisgICAgICAgICog
ZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlckNh
Y2hlczo6Y2FjaGVBbmNlc3RvcnNPZlN0YXJ0VG9CZUNvbnZlcnRlZCk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0U2VsZWN0b3IpOgorICAgICAgICAqIHhtbC9YUGF0
aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuSWQ6OmV2YWx1YXRl
IGNvbnN0KToKKyAgICAgICAgKiB4bWwvWFBhdGhOb2RlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlhQYXRoOjpzb3J0QmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5vZGVTZXQ6
OnRyYXZlcnNhbFNvcnQgY29uc3QpOgorICAgICAgICAqIHhtbC9YUGF0aFBhdGguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6WFBhdGg6OkxvY2F0aW9uUGF0aDo6ZXZhbHVhdGUgY29uc3QpOgorICAg
ICAgICAqIHhtbC9YUGF0aFByZWRpY2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6
VW5pb246OmV2YWx1YXRlIGNvbnN0KToKKwogMjAyMS0wNS0xMSAgTWVnYW4gR2FyZG5lciAgPG1l
Z2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZhY3RvciBvdXQgZmluZCBib3VuY2Ug
bGF5ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CmluZGV4IDg3ODhjOTQzYTZhODI0NWViZGJjOTg3ZDBlNzFmMjg5Y2QzOWIxMGQuLjQ3Yjc0MTU0
NGJhYzYyMDY0NTZmNTFiYTc2ZDFiMjhkMTZjNjU4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMzA4MCwxNCArMzA4MCwxNCBAQCBj
b25zdCBFbGVtZW50KiBBWE9iamVjdENhY2hlOjpyb290QVhFZGl0YWJsZUVsZW1lbnQoY29uc3Qg
Tm9kZSogbm9kZSkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgdm9pZCBjb25kaXRp
b25hbGx5QWRkTm9kZVRvRmlsdGVyTGlzdChOb2RlKiBub2RlLCBjb25zdCBEb2N1bWVudCYgZG9j
dW1lbnQsIEhhc2hTZXQ8Tm9kZSo+JiBub2Rlc1RvUmVtb3ZlKQorc3RhdGljIHZvaWQgY29uZGl0
aW9uYWxseUFkZE5vZGVUb0ZpbHRlckxpc3QoTm9kZSogbm9kZSwgY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZW50LCBIYXNoU2V0PFJlZjxOb2RlPj4mIG5vZGVzVG9SZW1vdmUpCiB7CiAgICAgaWYgKG5v
ZGUgJiYgKCFub2RlLT5pc0Nvbm5lY3RlZCgpIHx8ICZub2RlLT5kb2N1bWVudCgpID09ICZkb2N1
bWVudCkpCi0gICAgICAgIG5vZGVzVG9SZW1vdmUuYWRkKG5vZGUpOworICAgICAgICBub2Rlc1Rv
UmVtb3ZlLmFkZCgqbm9kZSk7CiB9CiAgICAgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RhdGlj
IHZvaWQgZmlsdGVyVmVjdG9yUGFpckZvclJlbW92YWwoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxU
LCBUPj4mIGxpc3QsIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgSGFzaFNldDxOb2RlKj4mIG5v
ZGVzVG9SZW1vdmUpCitzdGF0aWMgdm9pZCBmaWx0ZXJWZWN0b3JQYWlyRm9yUmVtb3ZhbChjb25z
dCBWZWN0b3I8c3RkOjpwYWlyPFQsIFQ+PiYgbGlzdCwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
LCBIYXNoU2V0PFJlZjxOb2RlPj4mIG5vZGVzVG9SZW1vdmUpCiB7CiAgICAgZm9yIChhdXRvJiBl
bnRyeSA6IGxpc3QpIHsKICAgICAgICAgY29uZGl0aW9uYWxseUFkZE5vZGVUb0ZpbHRlckxpc3Qo
ZW50cnkuZmlyc3QsIGRvY3VtZW50LCBub2Rlc1RvUmVtb3ZlKTsKQEAgLTMwOTYsMTQgKzMwOTYs
MTQgQEAgc3RhdGljIHZvaWQgZmlsdGVyVmVjdG9yUGFpckZvclJlbW92YWwoY29uc3QgVmVjdG9y
PHN0ZDo6cGFpcjxULCBUPj4mIGxpc3QsIGNvbnMKIH0KICAgICAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+Ci1zdGF0aWMgdm9pZCBmaWx0ZXJNYXBGb3JSZW1vdmFsKGNvbnN0IEhh
c2hNYXA8VCwgVT4mIGxpc3QsIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgSGFzaFNldDxOb2Rl
Kj4mIG5vZGVzVG9SZW1vdmUpCitzdGF0aWMgdm9pZCBmaWx0ZXJNYXBGb3JSZW1vdmFsKGNvbnN0
IEhhc2hNYXA8VCwgVT4mIGxpc3QsIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgSGFzaFNldDxS
ZWY8Tm9kZT4+JiBub2Rlc1RvUmVtb3ZlKQogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBsaXN0
KQogICAgICAgICBjb25kaXRpb25hbGx5QWRkTm9kZVRvRmlsdGVyTGlzdChlbnRyeS5rZXksIGRv
Y3VtZW50LCBub2Rlc1RvUmVtb3ZlKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0YXRp
YyB2b2lkIGZpbHRlckxpc3RGb3JSZW1vdmFsKGNvbnN0IExpc3RIYXNoU2V0PFQ+JiBsaXN0LCBj
b25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIEhhc2hTZXQ8Tm9kZSo+JiBub2Rlc1RvUmVtb3ZlKQor
c3RhdGljIHZvaWQgZmlsdGVyTGlzdEZvclJlbW92YWwoY29uc3QgTGlzdEhhc2hTZXQ8VD4mIGxp
c3QsIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgSGFzaFNldDxSZWY8Tm9kZT4+JiBub2Rlc1Rv
UmVtb3ZlKQogewogICAgIGZvciAoYXV0byogbm9kZSA6IGxpc3QpCiAgICAgICAgIGNvbmRpdGlv
bmFsbHlBZGROb2RlVG9GaWx0ZXJMaXN0KG5vZGUsIGRvY3VtZW50LCBub2Rlc1RvUmVtb3ZlKTsK
QEAgLTMxMTEsNyArMzExMSw3IEBAIHN0YXRpYyB2b2lkIGZpbHRlckxpc3RGb3JSZW1vdmFsKGNv
bnN0IExpc3RIYXNoU2V0PFQ+JiBsaXN0LCBjb25zdCBEb2N1bWVudCYgZG9jCiAKIHZvaWQgQVhP
YmplY3RDYWNoZTo6cHJlcGFyZUZvckRvY3VtZW50RGVzdHJ1Y3Rpb24oY29uc3QgRG9jdW1lbnQm
IGRvY3VtZW50KQogewotICAgIEhhc2hTZXQ8Tm9kZSo+IG5vZGVzVG9SZW1vdmU7CisgICAgSGFz
aFNldDxSZWY8Tm9kZT4+IG5vZGVzVG9SZW1vdmU7CiAgICAgZmlsdGVyTGlzdEZvclJlbW92YWwo
bV90ZXh0TWFya2VyTm9kZXMsIGRvY3VtZW50LCBub2Rlc1RvUmVtb3ZlKTsKICAgICBmaWx0ZXJM
aXN0Rm9yUmVtb3ZhbChtX21vZGFsRWxlbWVudHNTZXQsIGRvY3VtZW50LCBub2Rlc1RvUmVtb3Zl
KTsKICAgICBmaWx0ZXJMaXN0Rm9yUmVtb3ZhbChtX2RlZmVycmVkVGV4dENoYW5nZWRMaXN0LCBk
b2N1bWVudCwgbm9kZXNUb1JlbW92ZSk7CkBAIC0zMTIwLDggKzMxMjAsOCBAQCB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OnByZXBhcmVGb3JEb2N1bWVudERlc3RydWN0aW9uKGNvbnN0IERvY3VtZW50JiBk
b2N1bWVudCkKICAgICBmaWx0ZXJNYXBGb3JSZW1vdmFsKG1fZGVmZXJyZWRBdHRyaWJ1dGVDaGFu
Z2UsIGRvY3VtZW50LCBub2Rlc1RvUmVtb3ZlKTsKICAgICBmaWx0ZXJWZWN0b3JQYWlyRm9yUmVt
b3ZhbChtX2RlZmVycmVkRm9jdXNlZE5vZGVDaGFuZ2UsIGRvY3VtZW50LCBub2Rlc1RvUmVtb3Zl
KTsKICAgICAKLSAgICBmb3IgKGF1dG8qIG5vZGUgOiBub2Rlc1RvUmVtb3ZlKQotICAgICAgICBy
ZW1vdmUoKm5vZGUpOworICAgIGZvciAoYXV0byYgbm9kZSA6IG5vZGVzVG9SZW1vdmUpCisgICAg
ICAgIHJlbW92ZShub2RlKTsKIH0KICAgICAKIGJvb2wgQVhPYmplY3RDYWNoZTo6bm9kZUlzVGV4
dENvbnRyb2woY29uc3QgTm9kZSogbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCmluZGV4IDI1NWE2NmVkZWRl
ZTk3MGY2NzIzZWMxNTY2NDkzNjc0MTg2M2YwYjkuLjQyZGM3OTk5ZDZjYTE0MTRjMTllZjE4NTFh
YzFhMDQ5ZWZlZjc4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcApAQCAtNDksMTIgKzQ5LDEwIEBAIERFRklO
RV9WSVNJVF9BRERJVElPTkFMX0NISUxEUkVOKEpTTXV0YXRpb25PYnNlcnZlcik7CiAKIGJvb2wg
SlNNdXRhdGlvbk9ic2VydmVyT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgQWJzdHJhY3RTbG90VmlzaXRvciYg
dmlzaXRvciwgY29uc3QgY2hhcioqcmVhc29uKQogewotICAgIGZvciAoYXV0byogbm9kZSA6IGpz
Q2FzdDxKU011dGF0aW9uT2JzZXJ2ZXIqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSktPndyYXBw
ZWQoKS5vYnNlcnZlZE5vZGVzKCkpIHsKLSAgICAgICAgaWYgKHZpc2l0b3IuY29udGFpbnNPcGFx
dWVSb290KHJvb3Qobm9kZSkpKSB7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkocmVhc29uKSkK
LSAgICAgICAgICAgICAgICAqcmVhc29uID0gIlJlYWNoYWJsZSBmcm9tIG9ic2VydmVkIG5vZGVz
IjsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgaWYgKGpzQ2FzdDxK
U011dGF0aW9uT2JzZXJ2ZXIqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSktPndyYXBwZWQoKS5p
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyh2aXNpdG9yKSkgeworICAgICAgICBpZiAoVU5MSUtF
TFkocmVhc29uKSkKKyAgICAgICAgICAgICpyZWFzb24gPSAiUmVhY2hhYmxlIGZyb20gb2JzZXJ2
ZWQgbm9kZXMiOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCmluZGV4IGE0YWMwZWI3
ZTU3MTc3Y2YwNDIzN2U2YTkyM2NjNTAzMDZlMmJiZDYuLjhiM2EyNWY5NWM5ZjliYzRhNjE3OWVj
MmIwMTU4YmE2Zjg5OTg5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5j
cHAKQEAgLTE2OSwxMiArMTY5LDEzIEBAIHZvaWQgTXV0YXRpb25PYnNlcnZlcjo6c2V0SGFzVHJh
bnNpZW50UmVnaXN0cmF0aW9uKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBldmVudExvb3AtPnF1
ZXVlTXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrKCk7CiB9CiAKLUhhc2hTZXQ8Tm9k
ZSo+IE11dGF0aW9uT2JzZXJ2ZXI6Om9ic2VydmVkTm9kZXMoKSBjb25zdAorYm9vbCBNdXRhdGlv
bk9ic2VydmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkFic3RyYWN0U2xvdFZp
c2l0b3ImIHZpc2l0b3IpIGNvbnN0CiB7Ci0gICAgSGFzaFNldDxOb2RlKj4gb2JzZXJ2ZWROb2Rl
czsKLSAgICBmb3IgKGF1dG8qIHJlZ2lzdHJhdGlvbiA6IG1fcmVnaXN0cmF0aW9ucykKLSAgICAg
ICAgcmVnaXN0cmF0aW9uLT5hZGRSZWdpc3RyYXRpb25Ob2Rlc1RvU2V0KG9ic2VydmVkTm9kZXMp
OwotICAgIHJldHVybiBvYnNlcnZlZE5vZGVzOworICAgIGZvciAoYXV0byogcmVnaXN0cmF0aW9u
IDogbV9yZWdpc3RyYXRpb25zKSB7CisgICAgICAgIGlmIChyZWdpc3RyYXRpb24tPmlzUmVhY2hh
YmxlRnJvbU9wYXF1ZVJvb3RzKHZpc2l0b3IpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBNdXRhdGlvbk9ic2VydmVyOjpjYW5E
ZWxpdmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5oCmluZGV4IDQ3N2YwZjkz
ZDI2ZmYzZjk3MDFlODdjMmI4YmYxZDMyNmU3ZWQ5MjYuLjRkMzg3YmMzZDJkN2I2ZDdiNjkxNzky
NWExYTk2OWI1Mzk5OGQxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bk9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaApA
QCAtMzgsNiArMzgsMTAgQEAKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEFic3RyYWN0U2xvdFZpc2l0
b3I7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CkBAIC0xMDEs
NyArMTA1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzVHJhbnNpZW50UmVnaXN0cmF0aW9u
KERvY3VtZW50Jik7CiAgICAgYm9vbCBjYW5EZWxpdmVyKCk7CiAKLSAgICBIYXNoU2V0PE5vZGUq
PiBvYnNlcnZlZE5vZGVzKCkgY29uc3Q7CisgICAgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyhKU0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImKSBjb25zdDsKIAogICAgIE11dGF0aW9uQ2Fs
bGJhY2smIGNhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFjay5nZXQoKTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5j
cHAKaW5kZXggMGVjYjA1YjQ4ODYwYzc3NzE0MThkOGJmOWQyNjEyOTNhODg2NWFlMy4uYzZmMWZi
MTVkZmY4ZDVlYmZmMmY1YzViN2I3ZWRlM2FlM2QwZWI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaCIKIAogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSlNOb2RlQ3VzdG9tLmgiCiAjaW5jbHVkZSAiUXVh
bGlmaWVkTmFtZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTIsMTMgKzExMywyMCBA
QCBib29sIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246OnNob3VsZFJlY2VpdmVNdXRhdGlv
bkZyb20oTm9kZSYgbm9kZSwgTXV0YXRpbwogICAgIHJldHVybiBtX2F0dHJpYnV0ZUZpbHRlci5j
b250YWlucyhhdHRyaWJ1dGVOYW1lLT5sb2NhbE5hbWUoKSk7CiB9CiAKLXZvaWQgTXV0YXRpb25P
YnNlcnZlclJlZ2lzdHJhdGlvbjo6YWRkUmVnaXN0cmF0aW9uTm9kZXNUb1NldChIYXNoU2V0PE5v
ZGUqPiYgbm9kZXMpIGNvbnN0Citib29sIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246Omlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6QWJzdHJhY3RTbG90VmlzaXRvciYgdmlzaXRv
cikgY29uc3QKIHsKLSAgICBub2Rlcy5hZGQoJm1fbm9kZSk7CisgICAgaWYgKHZpc2l0b3IuY29u
dGFpbnNPcGFxdWVSb290KHJvb3QobV9ub2RlKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCiAg
ICAgaWYgKCFtX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzKQotICAgICAgICByZXR1cm47Ci0g
ICAgZm9yIChhdXRvJiBub2RlIDogKm1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMpCi0gICAg
ICAgIG5vZGVzLmFkZChub2RlLnB0cigpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Zm9yIChhdXRvJiBub2RlIDogKm1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMpIHsKKyAgICAg
ICAgaWYgKHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3Qobm9kZSkpKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25P
YnNlcnZlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2
ZXJSZWdpc3RyYXRpb24uaAppbmRleCBlNjk0MDQ4M2EzMTNjOGZkMWJkMTZkYzE3Y2I5NmIxM2Fj
ZDIyYTNhLi43NTNkYmY3YWQzODkwZjA3M2VjMGVhNmFlNmJkN2IxNTZiZDk0NGM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmgKQEAg
LTM2LDYgKzM2LDEwIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3Mg
QWJzdHJhY3RTbG90VmlzaXRvcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBR
dWFsaWZpZWROYW1lOwpAQCAtNTksNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgTXV0YXRpb25SZWNv
cmREZWxpdmVyeU9wdGlvbnMgZGVsaXZlcnlPcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRp
b25zICYgKE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZU9sZFZhbHVlIHwgTXV0YXRpb25PYnNl
cnZlcjo6Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKTsgfQogICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRp
b25zIG11dGF0aW9uVHlwZXMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMgJiBNdXRhdGlvbk9i
c2VydmVyOjpBbGxNdXRhdGlvblR5cGVzOyB9CiAKLSAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbk5v
ZGVzVG9TZXQoSGFzaFNldDxOb2RlKj4mKSBjb25zdDsKKyAgICBib29sIGlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKEpTQzo6QWJzdHJhY3RTbG90VmlzaXRvciYpIGNvbnN0OwogCiBwcml2YXRl
OgogICAgIFJlZjxNdXRhdGlvbk9ic2VydmVyPiBtX29ic2VydmVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmlu
ZGV4IDc4ZjBlOTk1YTY2OTFhYmQ2YWRmNzlmYTkyZjA5Mjk2YThiMjMyZTMuLmZlMDkwZTc1Yzc0
ZjRiNTE3NGJkMGY4ZGIxYzcwOWNiM2Q0Y2U3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTk1LDE3
ICs5NSwxNSBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTm9kZSk7CiB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogCiAjaWYgRFVNUF9OT0RFX1NUQVRJU1RJQ1MKLXN0YXRpYyBIYXNo
U2V0PE5vZGUqPiYgbGl2ZU5vZGVTZXQoKQorc3RhdGljIFdlYWtIYXNoU2V0PE5vZGU+JiBsaXZl
Tm9kZVNldCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8Tm9kZSo+PiBs
aXZlTm9kZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYWtIYXNoU2V0PE5vZGU+PiBs
aXZlTm9kZXM7CiAgICAgcmV0dXJuIGxpdmVOb2RlczsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIq
IHN0cmluZ0ZvclJhcmVEYXRhVXNlVHlwZShOb2RlUmFyZURhdGE6OlVzZVR5cGUgdXNlVHlwZSkK
IHsKICAgICBzd2l0Y2ggKHVzZVR5cGUpIHsKLSAgICBjYXNlIE5vZGVSYXJlRGF0YTo6VXNlVHlw
ZTo6Q29ubmVjdGVkRnJhbWVDb3VudDoKLSAgICAgICAgcmV0dXJuICJDb25uZWN0ZWRGcmFtZUNv
dW50IjsKICAgICBjYXNlIE5vZGVSYXJlRGF0YTo6VXNlVHlwZTo6Tm9kZUxpc3Q6CiAgICAgICAg
IHJldHVybiAiTm9kZUxpc3QiOwogICAgIGNhc2UgTm9kZVJhcmVEYXRhOjpVc2VUeXBlOjpNdXRh
dGlvbk9ic2VydmVyOgpAQCAtMTc1LDE1ICsxNzMsMTUgQEAgdm9pZCBOb2RlOjpkdW1wU3RhdGlz
dGljcygpCiAgICAgSGFzaE1hcDx1aW50MTZfdCwgc2l6ZV90PiByYXJlRGF0YVNpbmdsZVVzZVR5
cGVDb3VudHM7CiAgICAgc2l6ZV90IG1peGVkUmFyZURhdGFVc2VDb3VudCA9IDA7CiAKLSAgICBm
b3IgKGF1dG8qIG5vZGUgOiBsaXZlTm9kZVNldCgpKSB7Ci0gICAgICAgIGlmIChub2RlLT5oYXNS
YXJlRGF0YSgpKSB7CisgICAgZm9yIChhdXRvJiBub2RlIDogbGl2ZU5vZGVTZXQoKSkgeworICAg
ICAgICBpZiAobm9kZS5oYXNSYXJlRGF0YSgpKSB7CiAgICAgICAgICAgICArK25vZGVzV2l0aFJh
cmVEYXRhOwotICAgICAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KCpub2RlKSkgeworICAgICAgICAg
ICAgaWYgKGlzPEVsZW1lbnQ+KG5vZGUpKSB7CiAgICAgICAgICAgICAgICAgKytlbGVtZW50c1dp
dGhSYXJlRGF0YTsKLSAgICAgICAgICAgICAgICBpZiAoZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUp
Lmhhc05hbWVkTm9kZU1hcCgpKQorICAgICAgICAgICAgICAgIGlmIChkb3duY2FzdDxFbGVtZW50
Pihub2RlKS5oYXNOYW1lZE5vZGVNYXAoKSkKICAgICAgICAgICAgICAgICAgICAgKytlbGVtZW50
c1dpdGhOYW1lZE5vZGVNYXA7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhdXRvKiByYXJl
RGF0YSA9IG5vZGUtPnJhcmVEYXRhKCk7CisgICAgICAgICAgICBhdXRvKiByYXJlRGF0YSA9IG5v
ZGUucmFyZURhdGEoKTsKICAgICAgICAgICAgIGF1dG8gdXNlVHlwZXMgPSBpczxFbGVtZW50Pihu
b2RlKSA/IHN0YXRpY19jYXN0PEVsZW1lbnRSYXJlRGF0YSo+KHJhcmVEYXRhKS0+dXNlVHlwZXMo
KSA6IHJhcmVEYXRhLT51c2VUeXBlcygpOwogICAgICAgICAgICAgdW5zaWduZWQgdXNlVHlwZUNv
dW50ID0gMDsKICAgICAgICAgICAgIGZvciAoYXV0byB0eXBlIDogdXNlVHlwZXMpIHsKQEAgLTE5
NywxMiArMTk1LDEyIEBAIHZvaWQgTm9kZTo6ZHVtcFN0YXRpc3RpY3MoKQogICAgICAgICAgICAg
ICAgIG1peGVkUmFyZURhdGFVc2VDb3VudCsrOwogICAgICAgICB9CiAKLSAgICAgICAgc3dpdGNo
IChub2RlLT5ub2RlVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAobm9kZS5ub2RlVHlwZSgpKSB7
CiAgICAgICAgICAgICBjYXNlIEVMRU1FTlRfTk9ERTogewogICAgICAgICAgICAgICAgICsrZWxl
bWVudE5vZGVzOwogCiAgICAgICAgICAgICAgICAgLy8gVGFnIHN0YXRzCi0gICAgICAgICAgICAg
ICAgRWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKTsKKyAgICAgICAg
ICAgICAgICBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4obm9kZSk7CiAgICAg
ICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIHNpemVfdD46OkFkZFJlc3VsdCByZXN1bHQgPSBw
ZXJUYWdDb3VudC5hZGQoZWxlbWVudC50YWdOYW1lKCksIDEpOwogICAgICAgICAgICAgICAgIGlm
ICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUrKzsKQEAgLTI0OCw3ICsyNDYsNyBAQCB2b2lkIE5vZGU6OmR1bXBTdGF0aXN0aWNz
KCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNh
c2UgRE9DVU1FTlRfRlJBR01FTlRfTk9ERTogewotICAgICAgICAgICAgICAgIGlmIChub2RlLT5p
c1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5pc1NoYWRvd1Jvb3QoKSkK
ICAgICAgICAgICAgICAgICAgICAgKytzaGFkb3dSb290Tm9kZXM7CiAgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgICAgICArK2ZyYWdtZW50Tm9kZXM7CkBAIC0yNTcsNyArMjU1
LDcgQEAgdm9pZCBOb2RlOjpkdW1wU3RhdGlzdGljcygpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBwcmludGYoIk51bWJlciBvZiBOb2RlczogJWRcblxuIiwgbGl2ZU5vZGVTZXQoKS5zaXplKCkp
OworICAgIHByaW50ZigiTnVtYmVyIG9mIE5vZGVzOiAlZFxuXG4iLCBsaXZlTm9kZVNldCgpLmNv
bXB1dGVTaXplKCkpOwogICAgIHByaW50ZigiTnVtYmVyIG9mIE5vZGVzIHdpdGggUmFyZURhdGE6
ICV6dVxuIiwgbm9kZXNXaXRoUmFyZURhdGEpOwogICAgIHByaW50ZigiICBNaXhlZCB1c2U6ICV6
dVxuIiwgbWl4ZWRSYXJlRGF0YVVzZUNvdW50KTsKICAgICBmb3IgKGF1dG8gaXQgOiByYXJlRGF0
YVNpbmdsZVVzZVR5cGVDb3VudHMpCkBAIC0yOTUsMTAgKzI5Myw5IEBAIERFRklORV9ERUJVR19P
TkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgbm9kZUNvdW50ZXIsICgiV2Vi
Q29yZU5vZGUiCiAjaWZuZGVmIE5ERUJVRwogc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlTGVha3Mg
PSBmYWxzZTsKIAotc3RhdGljIEhhc2hTZXQ8Tm9kZSo+JiBpZ25vcmVTZXQoKQorc3RhdGljIFdl
YWtIYXNoU2V0PE5vZGU+JiBpZ25vcmVTZXQoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PE5vZGUqPj4gaWdub3JlOwotCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdl
YWtIYXNoU2V0PE5vZGU+PiBpZ25vcmU7CiAgICAgcmV0dXJuIGlnbm9yZTsKIH0KIApAQCAtMzIy
LDEzICszMTksMTMgQEAgdm9pZCBOb2RlOjp0cmFja0ZvckRlYnVnZ2luZygpCiB7CiAjaWZuZGVm
IE5ERUJVRwogICAgIGlmIChzaG91bGRJZ25vcmVMZWFrcykKLSAgICAgICAgaWdub3JlU2V0KCku
YWRkKHRoaXMpOworICAgICAgICBpZ25vcmVTZXQoKS5hZGQoKnRoaXMpOwogICAgIGVsc2UKICAg
ICAgICAgbm9kZUNvdW50ZXIuaW5jcmVtZW50KCk7CiAjZW5kaWYKIAogI2lmIERVTVBfTk9ERV9T
VEFUSVNUSUNTCi0gICAgbGl2ZU5vZGVTZXQoKS5hZGQodGhpcyk7CisgICAgbGl2ZU5vZGVTZXQo
KS5hZGQoKnRoaXMpOwogI2VuZGlmCiB9CiAKQEAgLTM1MywxMiArMzUwLDEyIEBAIE5vZGU6On5O
b2RlKCkKICAgICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKIAogI2lmbmRlZiBOREVC
VUcKLSAgICBpZiAoIWlnbm9yZVNldCgpLnJlbW92ZSh0aGlzKSkKKyAgICBpZiAoIWlnbm9yZVNl
dCgpLnJlbW92ZSgqdGhpcykpCiAgICAgICAgIG5vZGVDb3VudGVyLmRlY3JlbWVudCgpOwogI2Vu
ZGlmCiAKICNpZiBEVU1QX05PREVfU1RBVElTVElDUwotICAgIGxpdmVOb2RlU2V0KCkucmVtb3Zl
KHRoaXMpOworICAgIGxpdmVOb2RlU2V0KCkucmVtb3ZlKCp0aGlzKTsKICNlbmRpZgogCiAgICAg
UkVMRUFTRV9BU1NFUlQoIXJlbmRlcmVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Fw
cGVuZE5vZGVDb21tYW5kLmNwcAppbmRleCA3NmUwNGNmMDE5YjkwMGM5MDFlZjI4Mjk1NjE4NGI0
MGRjMjgxNThhLi40NDg2ZGRhZjI0OWRiNDNhYWNkZjg0MzRlZGVkYmIyZDRmNTEwYTQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmNwcApAQCAtNjEsNyAr
NjEsNyBAQCB2b2lkIEFwcGVuZE5vZGVDb21tYW5kOjpkb1VuYXBwbHkoKQogfQogCiAjaWZuZGVm
IE5ERUJVRwotdm9pZCBBcHBlbmROb2RlQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNl
dDxOb2RlKj4mIG5vZGVzKQordm9pZCBBcHBlbmROb2RlQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1h
bmQoSGFzaFNldDxSZWY8Tm9kZT4+JiBub2RlcykKIHsKICAgICBhZGROb2RlQW5kRGVzY2VuZGFu
dHMobV9wYXJlbnQucHRyKCksIG5vZGVzKTsKICAgICBhZGROb2RlQW5kRGVzY2VuZGFudHMobV9u
b2RlLnB0cigpLCBub2Rlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Fw
cGVuZE5vZGVDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5vZGVDb21t
YW5kLmgKaW5kZXggM2NkOTE0NDMyMmM4NTg4NjU0YjljMjZmNWYyNzliZDk3NWRlMzkzOS4uN2Qw
OGY2ZDMxYzIwM2QxZTJhNDRjNDY3NDYzMWZmMjA1ZDIzNzE5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQXBwZW5kTm9kZUNvbW1hbmQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZG9VbmFwcGx5KCkgb3ZlcnJpZGU7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9p
ZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQg
Z2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+Jikgb3ZlcnJpZGU7CiAjZW5kaWYK
IAogICAgIFJlZjxDb250YWluZXJOb2RlPiBtX3BhcmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggYzcwMTE0NTcxYmJmYzcyOGI1
MGVkNzI3MmQ4OThlZDhjYzc1Y2UzMS4uYmMyMzRhNzJjMmM0YTRjM2UyMGQxZWUzNjhjY2Q5NTg0
NzcwYTMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRpb246
OnNldFJhbmdlRGVsZXRlZEJ5VW5hcHBseShjb25zdCBWaXNpYmxlUG9zaXRpb25JbmRleAogfQog
CiAjaWZuZGVmIE5ERUJVRwotdm9pZCBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjpnZXROb2Rlc0lu
Q29tbWFuZChIYXNoU2V0PE5vZGUqPiYgbm9kZXMpCit2b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRp
b246OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYgbm9kZXMpCiB7CiAgICAg
Zm9yIChhdXRvJiBjb21tYW5kIDogbV9jb21tYW5kcykKICAgICAgICAgY29tbWFuZC0+Z2V0Tm9k
ZXNJbkNvbW1hbmQobm9kZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9D
b21wb3NpdGVFZGl0Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5oCmluZGV4IDFlYjZmZWMwMDZkNDdkZTFiYTc3OGY2MTI0OThkNjlkMzhiZDRi
MTkuLmM5NmU0OWFjYjFmZDEzMWFkNzllZGE2ZWFlZjQ3NzRjMDIyN2YwOTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKQEAgLTg0LDcgKzg0LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0UmFuZ2VEZWxldGVkQnlVbmFwcGx5KGNvbnN0IFZpc2li
bGVQb3NpdGlvbkluZGV4UmFuZ2UmKTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+Jik7CiAjZW5kaWYKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2Rl
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUZyb21UZXh0Tm9kZUNv
bW1hbmQuY3BwCmluZGV4IDdiM2Q5ZjIxYzYyNTIwNTVjMDAyYThkMzNkZDk4Nzc2MmM3YjBjMTYu
LmZlYTE3MDVmNTlmZjNmZjBkZWMxYjA4YTAzNTE2NzUxMjlkYmQxOGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmNwcApAQCAt
NjQsNyArNjQsNyBAQCB2b2lkIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQ6OmRvVW5hcHBseSgp
CiB9CiAKICNpZm5kZWYgTkRFQlVHCi12b2lkIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQ6Omdl
dE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgRGVsZXRlRnJvbVRl
eHROb2RlQ29tbWFuZDo6Z2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+JiBub2Rl
cykKIHsKICAgICBhZGROb2RlQW5kRGVzY2VuZGFudHMobV9ub2RlLnB0cigpLCBub2Rlcyk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUZyb21UZXh0Tm9kZUNv
bW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFu
ZC5oCmluZGV4IGRhMWRmNmIxMDI5MDJiMjJiMzAxNzhjNjIwYjM5MGRmZGM2MDI0MjAuLjVkOGNl
OTk0YzhiZTM5NTE2MjQyNTAzNmI4MTdkYzhjYjk1NDk4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5oCkBAIC00Niw3ICs0Niw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1VuYXBwbHkoKSBvdmVycmlkZTsKICAgICAKICNpZm5k
ZWYgTkRFQlVHCi0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpIG92
ZXJyaWRlOworICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+Jikg
b3ZlcnJpZGU7CiAjZW5kaWYKICAgICAKICAgICBSZWY8VGV4dD4gbV9ub2RlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAppbmRleCA5MGY5MTRkMzdiMmQ5NzE1ODFmNTM3MTA0
NzczYzM5ZjcyMDNiZGM1Li5jOTliMDZiMmQ0OGQzZGUxNGM5MzVlMmYzMWMyOGRkOTFmYmY4Yjhk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcApAQCAtMjE2LDEwICsyMTYs
MTAgQEAgdm9pZCBTaW1wbGVFZGl0Q29tbWFuZDo6ZG9SZWFwcGx5KCkKIH0KIAogI2lmbmRlZiBO
REVCVUcKLXZvaWQgU2ltcGxlRWRpdENvbW1hbmQ6OmFkZE5vZGVBbmREZXNjZW5kYW50cyhOb2Rl
KiBzdGFydE5vZGUsIEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgU2ltcGxlRWRpdENvbW1h
bmQ6OmFkZE5vZGVBbmREZXNjZW5kYW50cyhOb2RlKiBzdGFydE5vZGUsIEhhc2hTZXQ8UmVmPE5v
ZGU+PiYgbm9kZXMpCiB7CiAgICAgZm9yIChOb2RlKiBub2RlID0gc3RhcnROb2RlOyBub2RlOyBu
b2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSwgc3RhcnROb2RlKSkKLSAgICAgICAgbm9k
ZXMuYWRkKG5vZGUpOworICAgICAgICBub2Rlcy5hZGQoKm5vZGUpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaAppbmRleCBlNWExZGFiYjU5N2UwZmU3YjY1MjBm
YzVjYTViNDkyNDkzOWVlYWU2Li4wZjIxZTJhODllOThjMmMyZjU5MWQ1NzcxMzZjMGIxZTk2MDZi
NTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCkBAIC05NCwxNCArOTQsMTQg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkb1JlYXBwbHkoKTsgLy8gY2FsbHMgZG9BcHBs
eSgpCiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdmlydHVhbCB2b2lkIGdldE5vZGVzSW5Db21tYW5k
KEhhc2hTZXQ8Tm9kZSo+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXROb2Rlc0luQ29tbWFu
ZChIYXNoU2V0PFJlZjxOb2RlPj4mKSA9IDA7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgogICAgIGV4
cGxpY2l0IFNpbXBsZUVkaXRDb21tYW5kKERvY3VtZW50JiwgRWRpdEFjdGlvbiA9IEVkaXRBY3Rp
b246OlVuc3BlY2lmaWVkKTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICB2b2lkIGFkZE5vZGVBbmRE
ZXNjZW5kYW50cyhOb2RlKiwgSGFzaFNldDxOb2RlKj4mKTsKKyAgICB2b2lkIGFkZE5vZGVBbmRE
ZXNjZW5kYW50cyhOb2RlKiwgSGFzaFNldDxSZWY8Tm9kZT4+Jik7CiAjZW5kaWYKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2Rl
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNv
bW1hbmQuY3BwCmluZGV4IDhiYmI3ZDcyZTFhYmM2MDM2MDI1MmE4YTk3NWJiODg4NDNhOWNiY2Mu
LjM1ZTg5NDIwMWY1OTE5MGMzNDBmZWFmNGVhZGM1OTdkZGY2NjZhNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNwcApAQCAt
ODcsNyArODcsNyBAQCB2b2lkIEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6OmRvVW5hcHBseSgp
CiAKICNpZm5kZWYgTkRFQlVHCiAKLXZvaWQgSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZDo6Z2V0
Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mIG5vZGVzKQordm9pZCBJbnNlcnRJbnRvVGV4
dE5vZGVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PFJlZjxOb2RlPj4mIG5vZGVz
KQogewogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX25vZGUucHRyKCksIG5vZGVzKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29t
bWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5k
LmgKaW5kZXggMjM2ZGQ2ZjUyODA4NzIxNTk3YzdmMWQ0ZWNjNDBmODUxY2M5OGE4ZS4uMTU1OTdj
NjIxNmUzZDg0MzRkNzRjOTFjYWY1MzAzYWNiOGU5MWMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmgKQEAgLTQ5LDcgKzQ5LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRvUmVhcHBseSgpIG92ZXJyaWRlOwogICAgIAogI2lmbmRl
ZiBOREVCVUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikgb3Zl
cnJpZGU7CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PFJlZjxOb2RlPj4mKSBv
dmVycmlkZTsKICNlbmRpZgogICAgIAogICAgIFJlZjxUZXh0PiBtX25vZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuY3BwCmluZGV4IGRh
MWRmNjhiZjc1ZmUyZTE2ZjYwOThlYjhlNWYyMDVjYTMwODUyYTYuLmY0ZDcwYmM3OTFmOWJhMzYz
YmE3ZDI3Y2Y4ZjZhOWRmNTczNjQ4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgSW5z
ZXJ0Tm9kZUJlZm9yZUNvbW1hbmQ6OmRvVW5hcHBseSgpCiB9CiAKICNpZm5kZWYgTkRFQlVHCi12
b2lkIEluc2VydE5vZGVCZWZvcmVDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5v
ZGUqPiYgbm9kZXMpCit2b2lkIEluc2VydE5vZGVCZWZvcmVDb21tYW5kOjpnZXROb2Rlc0luQ29t
bWFuZChIYXNoU2V0PFJlZjxOb2RlPj4mIG5vZGVzKQogewogICAgIGFkZE5vZGVBbmREZXNjZW5k
YW50cyhtX2luc2VydENoaWxkLnB0cigpLCBub2Rlcyk7CiAgICAgYWRkTm9kZUFuZERlc2NlbmRh
bnRzKG1fcmVmQ2hpbGQucHRyKCksIG5vZGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuaAppbmRleCAyNWQzNDNjOGUxMzMxNjQxOGU3NDAw
YWRjODI1YTBmOGNlNTE2NjdiLi5hYjQwZmNmNzdiYmE2YzE4MzQ5OGQ5NzNlYTkwOGMyMTk1NzA5
ZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydE5vZGVCZWZvcmVD
b21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnROb2RlQmVmb3JlQ29t
bWFuZC5oCkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1VuYXBwbHkoKSBv
dmVycmlkZTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhh
c2hTZXQ8Tm9kZSo+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNo
U2V0PFJlZjxOb2RlPj4mKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgUmVmPE5vZGU+IG1faW5z
ZXJ0Q2hpbGQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRp
Y2FsRWxlbWVudHNDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVu
dGljYWxFbGVtZW50c0NvbW1hbmQuY3BwCmluZGV4IGQ2MWRlYjdmODFhODEyNzE3MTA5Nzg0Yjgx
NmNiMzg2ZDE4YjdiYTIuLjMyOTM1MzQ5YzBiMWJmMTUzNzllYzgzOGI0NTY3NjgyMjViOGEyMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50
c0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxF
bGVtZW50c0NvbW1hbmQuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgTWVyZ2VJZGVudGljYWxF
bGVtZW50c0NvbW1hbmQ6OmRvVW5hcHBseSgpCiB9CiAKICNpZm5kZWYgTkRFQlVHCi12b2lkIE1l
cmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5v
ZGUqPiYgbm9kZXMpCit2b2lkIE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpnZXROb2Rl
c0luQ29tbWFuZChIYXNoU2V0PFJlZjxOb2RlPj4mIG5vZGVzKQogewogICAgIGFkZE5vZGVBbmRE
ZXNjZW5kYW50cyhtX2VsZW1lbnQxLnB0cigpLCBub2Rlcyk7CiAgICAgYWRkTm9kZUFuZERlc2Nl
bmRhbnRzKG1fZWxlbWVudDIucHRyKCksIG5vZGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuaAppbmRleCA2ODZhYmE2
YzgyNmI3N2VjZDkzNWI2YzRjYTE3YjVhMTMzMTUxOGVlLi5jZDhkMzMzYTFlN2ExODdhNzEzNTA1
MTJlYzg3NTE1NzE2NzBmZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01l
cmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkb1VuYXBwbHkoKSBvdmVycmlkZTsKICAgICAKICNpZm5kZWYgTkRFQlVH
Ci0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+Jikgb3ZlcnJpZGU7
CiAjZW5kaWYKICAgICAKICAgICBSZWY8RWxlbWVudD4gbV9lbGVtZW50MTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKaW5kZXggMDlhZTE5NjUzZDJlZjQ0
MTJjZjUyNWI4OWVjMTVjMjU5ZDM4NjFjMy4uYWQzNjYzODUwZjMzYjU4ZGZkMmJlYzUxYmRhMDY2
MmQxZDUyYzljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2Rl
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFu
ZC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBSZW1vdmVOb2RlQ29tbWFuZDo6ZG9VbmFwcGx5
KCkKIH0KIAogI2lmbmRlZiBOREVCVUcKLXZvaWQgUmVtb3ZlTm9kZUNvbW1hbmQ6OmdldE5vZGVz
SW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgUmVtb3ZlTm9kZUNvbW1hbmQ6
OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYgbm9kZXMpCiB7CiAgICAgYWRk
Tm9kZUFuZERlc2NlbmRhbnRzKG1fcGFyZW50LmdldCgpLCBub2Rlcyk7CiAgICAgYWRkTm9kZUFu
ZERlc2NlbmRhbnRzKG1fcmVmQ2hpbGQuZ2V0KCksIG5vZGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuaAppbmRleCAzMTZlMmE0OTc3NjcwNTk0OGUxNTY0MjU5
ZDVkMmIxNjNlZGQxNzIwLi4wYTZlYTdjNjRkOTVkYTg0ZDRiNDMzMjBjZWI2ZmU1M2UxYzEwNThi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5oCkBAIC00Myw3
ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1VuYXBwbHkoKSBvdmVycmlkZTsKIAogI2lm
bmRlZiBOREVCVUcKLSAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PFJlZjxOb2RlPj4m
KSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgUmVmPE5vZGU+IG1fbm9kZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAKaW5k
ZXggNzM0ZTAzYzliZDEwYjA3NTA5Yjk4NGU4YWMyMzY1NmU2ZWUwNDliNC4uYjhkOTlmMGFlNzQy
MmNhNTU4MzhmMWYxMzU3MGVkODE4OTZiOWQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAKQEAgLTc0LDcgKzc0LDcg
QEAgdm9pZCBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZDo6ZG9VbmFwcGx5KCkKIH0KIAogI2lm
bmRlZiBOREVCVUcKLXZvaWQgUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQ6OmdldE5vZGVzSW5D
b21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgUmVwbGFjZU5vZGVXaXRoU3BhbkNv
bW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYgbm9kZXMpCiB7CiAg
ICAgYWRkTm9kZUFuZERlc2NlbmRhbnRzKG1fZWxlbWVudFRvUmVwbGFjZS5wdHIoKSwgbm9kZXMp
OwogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX3NwYW5FbGVtZW50LmdldCgpLCBub2Rlcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5D
b21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21t
YW5kLmgKaW5kZXggZTVkMzBmYzVmMjcxNjBkZmM3N2ZiOTk1OTRjMGJiZGM2MDY5OTBjMy4uNDYw
YzA3M2IzNmYzNDRiMjc1MTVjMTVlMzBlYWVhMmNlMWExZThmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuaApAQCAtNTMsNyAr
NTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZG9VbmFwcGx5KCkgb3ZlcnJpZGU7CiAgICAgCiAj
aWZuZGVmIE5ERUJVRwotICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4m
KSBvdmVycmlkZTsKKyAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+
PiYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBSZWY8SFRNTEVsZW1lbnQ+IG1fZWxlbWVudFRv
UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0Tm9kZUF0dHJp
YnV0ZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRl
Q29tbWFuZC5jcHAKaW5kZXggMWUyYmJiY2ZiZTU2ODE2ZmQzYWJlZjA0OWE2M2M5ZjcwYzBmYjBh
NC4uZDY2MmRkNWJjOGMwYmE5YzViMGQyYTU3ZWE0NzJlYjdlZDFkMTIxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHAKQEAgLTU0
LDcgKzU0LDcgQEAgdm9pZCBTZXROb2RlQXR0cmlidXRlQ29tbWFuZDo6ZG9VbmFwcGx5KCkKIH0K
IAogI2lmbmRlZiBOREVCVUcKLXZvaWQgU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQ6OmdldE5vZGVz
SW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgU2V0Tm9kZUF0dHJpYnV0ZUNv
bW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYgbm9kZXMpCiB7CiAg
ICAgYWRkTm9kZUFuZERlc2NlbmRhbnRzKG1fZWxlbWVudC5wdHIoKSwgbm9kZXMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5oCmluZGV4
IGRlNTEyYzUwZTcyNzBlMDQ5YzQ4YWVjZDFjZjc3ZDlhNWI4NzNlZDAuLjdlOWU1OWNhMWZhZWUx
ZTc3MjIxYzczZmYzNTU5MThkNTEzZGFlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIHZv
aWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mKSBvdmVycmlkZTsKKyAgICB2b2lk
IGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYpIG92ZXJyaWRlOwogI2VuZGlm
CiAKICAgICBSZWY8RWxlbWVudD4gbV9lbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NldFNlbGVjdGlvbkNvbW1hbmQuaAppbmRleCBmNmM5ZjA2MzBiNWZmMWI4YmExY2Q1OTI0Y2Vk
MTVjYzM5YTNmYmJlLi4wYWI3NThiMTVkNTRmZjA5ZTA5MWFjZDc3ODA2ZDM4ZmExNGE1YmQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldFNlbGVjdGlvbkNvbW1hbmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldFNlbGVjdGlvbkNvbW1hbmQuaApAQCAtNDQs
NyArNDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZG9VbmFwcGx5KCkgb3ZlcnJpZGU7CiAKICNp
Zm5kZWYgTkRFQlVHCi0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYp
IG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9k
ZT4+Jikgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKIAogICAgIE9wdGlvblNldDxGcmFtZVNlbGVjdGlv
bjo6U2V0U2VsZWN0aW9uT3B0aW9uPiBtX29wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcAppbmRleCBhODQ4NjYzNjUz
YTBmN2ZmMjk3MzczNmIxMTk3MmM4YzY0YzhjYWFkLi45YmQyOWM3MjY0M2YwYWE3ZTMxNWYzN2Jk
NjM1NzFjOTBkZGFkZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAg
ICB9CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0
PE5vZGUqPiYpIG92ZXJyaWRlCisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PFJl
ZjxOb2RlPj4mKSBvdmVycmlkZQogICAgIHsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3BwCmluZGV4IGY1NmY5NmE4ODA5NzQ3
YTVjNTJmZDk3NmQwMWQ2NGM0NDA0NzIzYTcuLjk0MmY3ZWZmZjNkMzYzZGYzNmM2ZWUyNjgxOGE4
NjBhMjUzM2ExOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVt
ZW50Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRD
b21tYW5kLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgU3BsaXRFbGVtZW50Q29tbWFuZDo6
ZG9SZWFwcGx5KCkKIH0KIAogI2lmbmRlZiBOREVCVUcKLXZvaWQgU3BsaXRFbGVtZW50Q29tbWFu
ZDo6Z2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mIG5vZGVzKQordm9pZCBTcGxpdEVs
ZW1lbnRDb21tYW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PFJlZjxOb2RlPj4mIG5vZGVz
KQogewogICAgIGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX2VsZW1lbnQxLmdldCgpLCBub2Rlcyk7
CiAgICAgYWRkTm9kZUFuZERlc2NlbmRhbnRzKG1fZWxlbWVudDIucHRyKCksIG5vZGVzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmgKaW5kZXggOTgzMTY1
MWIwMDBhYTc1NGRiZmI2MTcwNDc2ZDdjY2M3NDM5MGVmMi4uNDljMTZhMTgxYzRmOGFkZmM1YjRk
ZjVjM2NhZWYyZDViMDRhZDI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
cGxpdEVsZW1lbnRDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVs
ZW1lbnRDb21tYW5kLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGV4ZWN1
dGVBcHBseSgpOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQo
SGFzaFNldDxOb2RlKj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhh
c2hTZXQ8UmVmPE5vZGU+PiYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBSZWZQdHI8RWxlbWVu
dD4gbV9lbGVtZW50MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRU
ZXh0Tm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2Rl
Q29tbWFuZC5jcHAKaW5kZXggYTE2NDUyYzZhNGFhMzVkYTlhYWYwZmEwOWUwY2QwYzViMDUyNDU5
Zi4uMDkwM2JjMDdmZjgzZjE2MTRlZTgzNWI3M2Q1NWU0NTAxZmYwMjdiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHAKQEAgLTEwNCw3ICsx
MDQsNyBAQCB2b2lkIFNwbGl0VGV4dE5vZGVDb21tYW5kOjppbnNlcnRUZXh0MUFuZFRyaW1UZXh0
MigpCiAKICNpZm5kZWYgTkRFQlVHCiAKLXZvaWQgU3BsaXRUZXh0Tm9kZUNvbW1hbmQ6OmdldE5v
ZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgU3BsaXRUZXh0Tm9kZUNv
bW1hbmQ6OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYgbm9kZXMpCiB7CiAg
ICAgYWRkTm9kZUFuZERlc2NlbmRhbnRzKG1fdGV4dDEuZ2V0KCksIG5vZGVzKTsKICAgICBhZGRO
b2RlQW5kRGVzY2VuZGFudHMobV90ZXh0Mi5wdHIoKSwgbm9kZXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5oCmluZGV4IGI5OTE5ZDY3MDg3MTkyMjI5
YzA1YzM4NzNmZjlmMjAxMjkxMjhmZDAuLjlhZDA4NDQ4ZWY1NGFlODcxNTQyYWFjM2YzYTc5M2U5
ZjE4MjQzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRUZXh0Tm9k
ZUNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0VGV4dE5vZGVDb21t
YW5kLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluc2VydFRleHQxQW5k
VHJpbVRleHQyKCk7CiAgICAgCiAjaWZuZGVmIE5ERUJVRwotICAgIHZvaWQgZ2V0Tm9kZXNJbkNv
bW1hbmQoSGFzaFNldDxOb2RlKj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldE5vZGVzSW5Db21t
YW5kKEhhc2hTZXQ8UmVmPE5vZGU+PiYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBSZWZQdHI8
VGV4dD4gbV90ZXh0MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV3JhcENv
bnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV3Jh
cENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmNwcAppbmRleCA0MDA2ZmE4ZWQxZmIzZTJiNmVl
MWJkZjc2ZjAzYjhiYmNhZDY3NmU2Li4xOGJkYjMwOGJhOGE0NGM3NWRmMWU2OTg3NTgwMWYxZGJm
YWRhMmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dyYXBDb250ZW50c0lu
RHVtbXlTcGFuQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XcmFwQ29u
dGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgV3JhcENv
bnRlbnRzSW5EdW1teVNwYW5Db21tYW5kOjpkb1JlYXBwbHkoKQogfQogCiAjaWZuZGVmIE5ERUJV
Rwotdm9pZCBXcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQ6OmdldE5vZGVzSW5Db21tYW5k
KEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKK3ZvaWQgV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21t
YW5kOjpnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PFJlZjxOb2RlPj4mIG5vZGVzKQogewogICAg
IGFkZE5vZGVBbmREZXNjZW5kYW50cyhtX2VsZW1lbnQucHRyKCksIG5vZGVzKTsKICAgICBhZGRO
b2RlQW5kRGVzY2VuZGFudHMobV9kdW1teVNwYW4uZ2V0KCksIG5vZGVzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5o
CmluZGV4IGZiZDBhMWQ2ZmI1NjI0OWJlYjhhYzc4ZjQyODJlMzY4NDliOWFiYzguLmY4MzgxMWY1
NzJmMTcxZGJlOWEzNTYzMjQwODBhZjUyNDJmYTNlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuaApAQCAtNDcs
NyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhlY3V0ZUFwcGx5KCk7CiAKICNpZm5kZWYg
TkRFQlVHCi0gICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpIG92ZXJy
aWRlOworICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxSZWY8Tm9kZT4+Jikgb3Zl
cnJpZGU7CiAjZW5kaWYKIAogICAgIFJlZjxFbGVtZW50PiBtX2VsZW1lbnQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggNTJhNTYzMTVjNGIz
NTkwYzdjYTE1YWI4ZmI1NDlkYTFjNzkyYTQxZi4uZDQ1ZjViNzQ4MGQ1ODNkOGQ5OTVmZGI1YjI1
ZmQwYzYwMzY0ZmU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9I
VE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENv
bnZlcnRlci5tbQpAQCAtMjYyLDcgKzI2Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBI
YXNoTWFwPEVsZW1lbnQqLCBzdGQ6OnVuaXF1ZV9wdHI8Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcj4+
IG1fY29tcHV0ZWRTdHlsZXM7Ci0gICAgSGFzaFNldDxOb2RlKj4gbV9hbmNlc3RvcnNVbmRlckNv
bW1vbkFuY2VzdG9yOworICAgIEhhc2hTZXQ8UmVmPE5vZGU+PiBtX2FuY2VzdG9yc1VuZGVyQ29t
bW9uQW5jZXN0b3I7CiB9OwogCiBAaW50ZXJmYWNlIE5TVGV4dExpc3QgKFdlYkNvcmVOU1RleHRM
aXN0RGV0YWlscykKQEAgLTIyODQsNyArMjI4NCw3IEBAIE5vZGUqIEhUTUxDb252ZXJ0ZXJDYWNo
ZXM6OmNhY2hlQW5jZXN0b3JzT2ZTdGFydFRvQmVDb252ZXJ0ZWQoY29uc3QgUG9zaXRpb24mIHN0
CiAgICAgTm9kZSogYW5jZXN0b3IgPSBzdGFydC5jb250YWluZXJOb2RlKCk7CiAKICAgICB3aGls
ZSAoYW5jZXN0b3IpIHsKLSAgICAgICAgbV9hbmNlc3RvcnNVbmRlckNvbW1vbkFuY2VzdG9yLmFk
ZChhbmNlc3Rvcik7CisgICAgICAgIG1fYW5jZXN0b3JzVW5kZXJDb21tb25BbmNlc3Rvci5hZGQo
KmFuY2VzdG9yKTsKICAgICAgICAgaWYgKGFuY2VzdG9yID09IGNvbW1vbkFuY2VzdG9yKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudEluQ29t
cG9zZWRUcmVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGE4MjcxNzM4ODE2OWI3MWY2ZjAzMWQyOGQzZTI2
NjJmYzQyMjFlMmUuLjg2YjQ5MzE2ZGE2OGQ0OTVkNDZhNGM3ZTdlZmU0NDAxZjY0MzI1ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCkBAIC0xMzM2LDcgKzEzMzYsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0U2VsZWN0b3IoUmVmPEpTT046Ok9iagog
ICAgIFNlbGVjdG9yQ2hlY2tlciBzZWxlY3RvckNoZWNrZXIoKmRvY3VtZW50KTsKIAogICAgIFZl
Y3RvcjxSZWY8Tm9kZT4+IG5vZGVMaXN0OwotICAgIEhhc2hTZXQ8Tm9kZSo+IHNlZW5Ob2RlczsK
KyAgICBIYXNoU2V0PFJlZjxOb2RlPj4gc2Vlbk5vZGVzOwogCiAgICAgZm9yIChhdXRvJiBkZXNj
ZW5kYW50IDogY29tcG9zZWRUcmVlRGVzY2VuZGFudHMoKmRvY3VtZW50KSkgewogICAgICAgICBp
ZiAoIWlzPEVsZW1lbnQ+KGRlc2NlbmRhbnQpKQpAQCAtMTM1Niw3ICsxMzU2LDcgQEAgUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFNlbGVj
dG9yKFJlZjxKU09OOjpPYmoKICAgICAgICAgICAgIGNvbnRleHQucHNldWRvSWQgPSBwc2V1ZG9J
ZDsKIAogICAgICAgICAgICAgaWYgKHNlbGVjdG9yQ2hlY2tlci5tYXRjaCgqc2VsZWN0b3IsIGRl
c2NlbmRhbnRFbGVtZW50LCBjb250ZXh0KSkgewotICAgICAgICAgICAgICAgIGlmIChzZWVuTm9k
ZXMuYWRkKCZkZXNjZW5kYW50RWxlbWVudCkpCisgICAgICAgICAgICAgICAgaWYgKHNlZW5Ob2Rl
cy5hZGQoZGVzY2VuZGFudEVsZW1lbnQpKQogICAgICAgICAgICAgICAgICAgICBub2RlTGlzdC5h
cHBlbmQoZGVzY2VuZGFudEVsZW1lbnQpOwogICAgICAgICAgICAgfQogCkBAIC0xMzY2LDcgKzEz
NjYsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6
aGlnaGxpZ2h0U2VsZWN0b3IoUmVmPEpTT046Ok9iagogICAgICAgICAgICAgICAgIGlmIChwc2V1
ZG9JRHMuaGFzKFBzZXVkb0lkOjpCZWZvcmUpKSB7CiAgICAgICAgICAgICAgICAgICAgIHBzZXVk
b0lEcy5yZW1vdmUoUHNldWRvSWQ6OkJlZm9yZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChh
dXRvKiBiZWZvcmVQc2V1ZG9FbGVtZW50ID0gZGVzY2VuZGFudEVsZW1lbnQuYmVmb3JlUHNldWRv
RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2Vlbk5vZGVzLmFkZChi
ZWZvcmVQc2V1ZG9FbGVtZW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWVuTm9k
ZXMuYWRkKCpiZWZvcmVQc2V1ZG9FbGVtZW50KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlTGlzdC5hcHBlbmQoKmJlZm9yZVBzZXVkb0VsZW1lbnQpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMTM3NCwxMyArMTM3NCwxMyBAQCBQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0U2VsZWN0
b3IoUmVmPEpTT046Ok9iagogICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9JRHMuaGFzKFBzZXVk
b0lkOjpBZnRlcikpIHsKICAgICAgICAgICAgICAgICAgICAgcHNldWRvSURzLnJlbW92ZShQc2V1
ZG9JZDo6QWZ0ZXIpOwogICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogYWZ0ZXJQc2V1ZG9F
bGVtZW50ID0gZGVzY2VuZGFudEVsZW1lbnQuYWZ0ZXJQc2V1ZG9FbGVtZW50KCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChzZWVuTm9kZXMuYWRkKGFmdGVyUHNldWRvRWxlbWVudCkp
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2Vlbk5vZGVzLmFkZCgqYWZ0ZXJQc2V1ZG9F
bGVtZW50KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlTGlzdC5hcHBlbmQoKmFm
dGVyUHNldWRvRWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICBpZiAocHNldWRvSURzKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChzZWVuTm9kZXMuYWRkKCZkZXNjZW5kYW50RWxlbWVudCkpCisgICAgICAgICAgICAg
ICAgICAgIGlmIChzZWVuTm9kZXMuYWRkKGRlc2NlbmRhbnRFbGVtZW50KSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGVMaXN0LmFwcGVuZChkZXNjZW5kYW50RWxlbWVudCk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5j
cHAKaW5kZXggMTBmMGMyMmQ0YjY3Y2U1ZmZhM2I4MzA2OWNiZjQwNjA1MTIxZWVkNS4uYWNkM2M5
NDQyY2E1MDQxOTAyM2Q3ZTQ5Y2NhYmFjMjA0NTM5N2MwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhGdW5jdGlvbnMuY3BwCkBAIC0zMjksNyArMzI5LDcgQEAgVmFsdWUgRnVuSWQ6OmV2YWx1YXRl
KCkgY29uc3QKICAgICAKICAgICBUcmVlU2NvcGUmIGNvbnRleHRTY29wZSA9IGV2YWx1YXRpb25D
b250ZXh0KCkubm9kZS0+dHJlZVNjb3BlKCk7CiAgICAgTm9kZVNldCByZXN1bHQ7Ci0gICAgSGFz
aFNldDxOb2RlKj4gcmVzdWx0U2V0OworICAgIEhhc2hTZXQ8UmVmPE5vZGU+PiByZXN1bHRTZXQ7
CiAKICAgICB1bnNpZ25lZCBzdGFydFBvcyA9IDA7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gaWRM
aXN0Lmxlbmd0aCgpOwpAQCAtMzQ3LDcgKzM0Nyw3IEBAIFZhbHVlIEZ1bklkOjpldmFsdWF0ZSgp
IGNvbnN0CiAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBzZXZlcmFsIG5vZGVzIHdpdGggdGhlIHNh
bWUgaWQsIGlkKCkgc2hvdWxkIHJldHVybiB0aGUgZmlyc3Qgb25lLgogICAgICAgICAvLyBJbiBX
ZWJLaXQsIGdldEVsZW1lbnRCeUlkIGJlaGF2ZXMgc28sIHRvbywgYWx0aG91Z2ggaXRzIGJlaGF2
aW9yIGluIHRoaXMgY2FzZSBpcyBmb3JtYWxseSB1bmRlZmluZWQuCiAgICAgICAgIE5vZGUqIG5v
ZGUgPSBjb250ZXh0U2NvcGUuZ2V0RWxlbWVudEJ5SWQodG9TdHJpbmdWaWV3KGlkTGlzdCkuc3Vi
c3RyaW5nKHN0YXJ0UG9zLCBlbmRQb3MgLSBzdGFydFBvcykpOwotICAgICAgICBpZiAobm9kZSAm
JiByZXN1bHRTZXQuYWRkKG5vZGUpLmlzTmV3RW50cnkpCisgICAgICAgIGlmIChub2RlICYmIHJl
c3VsdFNldC5hZGQoKm5vZGUpLmlzTmV3RW50cnkpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KG5vZGUpOwogICAgICAgICAKICAgICAgICAgc3RhcnRQb3MgPSBlbmRQb3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aE5vZGVTZXQuY3BwCmluZGV4IGQwNGJkNjJjMTQ0M2ExYTg3OTk5Zjk2YjAwM2MyZjcy
Yzg4NjMwMjQuLjMwZGM1NWFiYzcxNzkzMGU5ZmRjNWFjZTM4YjBiMTc3OWY0ZTNhMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHZv
aWQgc29ydEJsb2NrKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBWZWN0b3I8VmVjdG9yPE5v
ZGUqPj4mIHBhcmVudE0KIAogICAgIC8vIENoaWxkcmVuIG5vZGVzIG9mIHRoZSBjb21tb24gYW5j
ZXN0b3IgaW5kdWNlIGEgc3ViZGl2aXNpb24gb2Ygb3VyIG5vZGUtc2V0LgogICAgIC8vIFNvcnQg
aXQgYWNjb3JkaW5nIHRvIHRoaXMgc3ViZGl2aXNpb24sIGFuZCByZWN1cnNpdmVseSBzb3J0IGVh
Y2ggZ3JvdXAuCi0gICAgSGFzaFNldDxOb2RlKj4gcGFyZW50Tm9kZXM7CisgICAgSGFzaFNldDxS
ZWZQdHI8Tm9kZT4+IHBhcmVudE5vZGVzOwogICAgIGZvciAodW5zaWduZWQgaSA9IGZyb207IGkg
PCB0bzsgKytpKQogICAgICAgICBwYXJlbnROb2Rlcy5hZGQocGFyZW50V2l0aERlcHRoKGNvbW1v
bkFuY2VzdG9yRGVwdGggKyAxLCBwYXJlbnRNYXRyaXhbaV0pKTsKIApAQCAtMTkyLDcgKzE5Miw3
IEBAIHN0YXRpYyBOb2RlKiBmaW5kUm9vdE5vZGUoTm9kZSogbm9kZSkKIAogdm9pZCBOb2RlU2V0
Ojp0cmF2ZXJzYWxTb3J0KCkgY29uc3QKIHsKLSAgICBIYXNoU2V0PE5vZGUqPiBub2RlczsKKyAg
ICBIYXNoU2V0PFJlZlB0cjxOb2RlPj4gbm9kZXM7CiAgICAgYm9vbCBjb250YWluc0F0dHJpYnV0
ZU5vZGVzID0gZmFsc2U7CiAKICAgICB1bnNpZ25lZCBub2RlQ291bnQgPSBtX25vZGVzLnNpemUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhdGguY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoUGF0aC5jcHAKaW5kZXggYTIwNTI0ZDljMmQyOGZmMGU3NWQ2MDg2
NGNkZmRkM2Q2MGFhMTViOS4uNWNmM2IzNjkyNDI5YWY2NjQyYTJmODgwZDExNGMwZGRlY2YyNWZm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGF0aC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL1hQYXRoUGF0aC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIExv
Y2F0aW9uUGF0aDo6ZXZhbHVhdGUoTm9kZVNldCYgbm9kZXMpIGNvbnN0CiAKICAgICBmb3IgKGF1
dG8mIHN0ZXAgOiBtX3N0ZXBzKSB7CiAgICAgICAgIE5vZGVTZXQgbmV3Tm9kZXM7Ci0gICAgICAg
IEhhc2hTZXQ8Tm9kZSo+IG5ld05vZGVzU2V0OworICAgICAgICBIYXNoU2V0PFJlZlB0cjxOb2Rl
Pj4gbmV3Tm9kZXNTZXQ7CiAKICAgICAgICAgYm9vbCBuZWVkVG9DaGVja0ZvckR1cGxpY2F0ZU5v
ZGVzID0gIW5vZGVzLnN1YnRyZWVzQXJlRGlzam9pbnQoKSB8fCAoc3RlcC0+YXhpcygpICE9IFN0
ZXA6OkNoaWxkQXhpcyAmJiBzdGVwLT5heGlzKCkgIT0gU3RlcDo6U2VsZkF4aXMKICAgICAgICAg
ICAgICYmIHN0ZXAtPmF4aXMoKSAhPSBTdGVwOjpEZXNjZW5kYW50QXhpcyAmJiBzdGVwLT5heGlz
KCkgIT0gU3RlcDo6RGVzY2VuZGFudE9yU2VsZkF4aXMgJiYgc3RlcC0+YXhpcygpICE9IFN0ZXA6
OkF0dHJpYnV0ZUF4aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJl
ZGljYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKaW5kZXgg
YzFiYmM1NGViODMwMTY5MTE5Yzg2ODMxYTRmMmE2ZTdjMDA0NTY4ZC4uZjM1ZWQyOGI0MTkyZDg5
OTYxOWM5YWFlZTk1YjVkNTNhZTM1MTI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoUHJlZGljYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNh
dGUuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgVmFsdWUgVW5pb246OmV2YWx1YXRlKCkgY29uc3QK
ICAgICBOb2RlU2V0JiByZXN1bHRTZXQgPSBsaHNSZXN1bHQubW9kaWZpYWJsZU5vZGVTZXQoKTsK
ICAgICBjb25zdCBOb2RlU2V0JiByaHNOb2RlcyA9IHJocy50b05vZGVTZXQoKTsKIAotICAgIEhh
c2hTZXQ8Tm9kZSo+IG5vZGVzOworICAgIEhhc2hTZXQ8UmVmUHRyPE5vZGU+PiBub2RlczsKICAg
ICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJlc3VsdFNldCkKICAgICAgICAgbm9kZXMuYWRkKHJlc3Vs
dC5nZXQoKSk7CiAK
</data>
<flag name="review"
          id="449194"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>