<?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>83047</bug_id>
          
          <creation_ts>2012-04-03 10:57:33 -0700</creation_ts>
          <short_desc>Mark text with text alternative with blue underline.</short_desc>
          <delta_ts>2012-06-15 12:13:25 -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>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.7</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>83549</dependson>
          <blocked>82503</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jia Pu">jiapu.mail</reporter>
          <assigned_to name="Jia Pu">jiapu.mail</assigned_to>
          <cc>adele</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>594645</commentid>
    <comment_count>0</comment_count>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-04-03 10:57:33 -0700</bug_when>
    <thetext>This is part of the changes for bug 82503.

&lt;rdar://problem/11175647&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603597</commentid>
    <comment_count>1</comment_count>
      <attachid>137438</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-04-16 17:13:18 -0700</bug_when>
    <thetext>Created attachment 137438
Patch (v1)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603615</commentid>
    <comment_count>2</comment_count>
      <attachid>137438</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-16 17:33:07 -0700</bug_when>
    <thetext>Comment on attachment 137438
Patch (v1)

Attachment 137438 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12415473</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603627</commentid>
    <comment_count>3</comment_count>
      <attachid>137438</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-16 17:45:50 -0700</bug_when>
    <thetext>Comment on attachment 137438
Patch (v1)

Attachment 137438 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12412656</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603630</commentid>
    <comment_count>4</comment_count>
      <attachid>137438</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-16 17:47:04 -0700</bug_when>
    <thetext>Comment on attachment 137438
Patch (v1)

Attachment 137438 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12410953</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603651</commentid>
    <comment_count>5</comment_count>
      <attachid>137438</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-04-16 18:00:12 -0700</bug_when>
    <thetext>Comment on attachment 137438
Patch (v1)

Attachment 137438 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12412668</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603713</commentid>
    <comment_count>6</comment_count>
      <attachid>137464</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-04-16 19:44:44 -0700</bug_when>
    <thetext>Created attachment 137464
Patch (v2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603754</commentid>
    <comment_count>7</comment_count>
      <attachid>137472</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-04-16 20:48:55 -0700</bug_when>
    <thetext>Created attachment 137472
Patch (v3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604959</commentid>
    <comment_count>8</comment_count>
      <attachid>137472</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-04-18 11:50:49 -0700</bug_when>
    <thetext>Comment on attachment 137472
Patch (v3)

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

The patch seems correct. What I don&apos;t like is all the duplicated code between WebKit1 and WebKit2. You should move all the common code down to WebCore, this is the recommended approach and your patch will be a lot smaller too. R- because of all the duplicated code.

&gt; Source/WebCore/ChangeLog:3
&gt; +        On OS X, Mark text with dictation alternative with blue underline.

lowercase m.

&gt; Source/WebCore/ChangeLog:18
&gt; +        (WebCore):

Remove this line.

&gt; Source/WebCore/ChangeLog:20
&gt; +        (AlternativeTextController):

ditto.

&gt; Source/WebCore/ChangeLog:24
&gt; +        (AlternativeTextClient):

ditto,

&gt; Source/WebKit/ChangeLog:3
&gt; +        On OS X, Mark text with dictation alternative with blue underline.

lower case m.

&gt; Source/WebKit/mac/ChangeLog:3
&gt; +        On OS X, Mark text with dictation alternative with blue underline.

ditto.

&gt; Source/WebKit2/ChangeLog:3
&gt; +        On OS X, Mark text with dictation alternative with blue underline.

lower case.

&gt; Source/WebKit2/ChangeLog:15
&gt; +        (CoreIPC::::decode):

Remove 3 lines above.

&gt; Source/WebKit2/ChangeLog:23
&gt; +        (WebKit):

Remove.

&gt; Source/WebKit2/ChangeLog:33
&gt; +        (PageClient):

remove.

&gt; Source/WebKit2/ChangeLog:35
&gt; +        (WebKit):

ditto.

&gt; Source/WebKit2/ChangeLog:38
&gt; +        (WebPageProxy):

ditto.

&gt; Source/WebKit2/ChangeLog:43
&gt; +        (WebKit):

ditto.

&gt; Source/WebKit2/ChangeLog:49
&gt; +        (WebKit):

ditto.

&gt; Source/WebKit2/ChangeLog:66
&gt; +        (WebKit):

ditto

&gt; Source/WebKit2/ChangeLog:72
&gt; +        (WebKit):

ditto.

&gt; Source/WebKit2/ChangeLog:74
&gt; +        (WebPage):

ditto.

&gt; Source/WebKit2/ChangeLog:78
&gt; +        (WebKit):

ditto.

&gt; Source/WebCore/editing/AlternativeTextController.cpp:629
&gt; +#if USE(DICTATION_ALTERNATIVES)

Are you sure marker is always valid?

&gt; Source/WebKit/mac/WebCoreSupport/WebAlternativeTextClient.mm:78
&gt; +    [m_webView _removeDictationAlternatives:dictationContext];

probably need an #else with UNUSED_PARAM(dictationContext)

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:1174
&gt; +#endif

It would have been nice to share this code between WebKit1 and WebKit2.  Could you move this down to WebCore and export it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605307</commentid>
    <comment_count>9</comment_count>
      <attachid>137822</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-04-18 19:38:55 -0700</bug_when>
    <thetext>Created attachment 137822
Moved code shared by WebKit and WebKit2 into WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605308</commentid>
    <comment_count>10</comment_count>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-04-18 19:40:30 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created an attachment (id=137822) [details]
&gt; Moved code shared by WebKit and WebKit2 into WebCore.

This patch avoids having duplicated DictationAlternativeController and TextAlternativeWithRange classes in WebKit and WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605321</commentid>
    <comment_count>11</comment_count>
      <attachid>137825</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-04-18 20:04:13 -0700</bug_when>
    <thetext>Created attachment 137825
Minor Adjustment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605329</commentid>
    <comment_count>12</comment_count>
      <attachid>137825</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-18 20:13:17 -0700</bug_when>
    <thetext>Comment on attachment 137825
Minor Adjustment

Attachment 137825 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12297189</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605351</commentid>
    <comment_count>13</comment_count>
      <attachid>137834</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-04-18 21:28:50 -0700</bug_when>
    <thetext>Created attachment 137834
Fix build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646479</commentid>
    <comment_count>14</comment_count>
      <attachid>146978</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-06-11 17:42:54 -0700</bug_when>
    <thetext>Created attachment 146978
Patch (v1).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646563</commentid>
    <comment_count>15</comment_count>
      <attachid>146995</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-06-11 19:37:52 -0700</bug_when>
    <thetext>Created attachment 146995
Patch (v2).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646571</commentid>
    <comment_count>16</comment_count>
      <attachid>146995</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-11 20:03:49 -0700</bug_when>
    <thetext>Comment on attachment 146995
Patch (v2).

Attachment 146995 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12944397</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647769</commentid>
    <comment_count>17</comment_count>
      <attachid>147251</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-06-13 00:27:51 -0700</bug_when>
    <thetext>Created attachment 147251
Fixing Lion build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647782</commentid>
    <comment_count>18</comment_count>
      <attachid>147251</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-13 00:50:27 -0700</bug_when>
    <thetext>Comment on attachment 147251
Fixing Lion build.

Attachment 147251 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12943819</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648188</commentid>
    <comment_count>19</comment_count>
      <attachid>147351</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-06-13 10:09:12 -0700</bug_when>
    <thetext>Created attachment 147351
Fixing Lion build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648231</commentid>
    <comment_count>20</comment_count>
      <attachid>147351</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-13 10:33:38 -0700</bug_when>
    <thetext>Comment on attachment 147351
Fixing Lion build.

Attachment 147351 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12950404</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648668</commentid>
    <comment_count>21</comment_count>
      <attachid>147463</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-06-13 18:44:25 -0700</bug_when>
    <thetext>Created attachment 147463
Remove block code to make gcc happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648761</commentid>
    <comment_count>22</comment_count>
      <attachid>147479</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-06-13 21:00:27 -0700</bug_when>
    <thetext>Created attachment 147479
Update to TOT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649362</commentid>
    <comment_count>23</comment_count>
      <attachid>147479</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-06-14 12:13:35 -0700</bug_when>
    <thetext>Comment on attachment 147479
Update to TOT.

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

The patch looks good. I&apos;ve added a couple of comments that I would like to see fixed before you land it. I&apos;ll trust you to fix them before landing.

&gt; Source/WebCore/ChangeLog:11
&gt; +        This patch implements visual indication on dictated text with alternatives, and providing UI

providing--&gt;provides

&gt; Source/WebCore/editing/mac/AlternativeTextUIController.mm:95
&gt; +    NSSpellChecker* spellChecker = [NSSpellChecker sharedSpellChecker];

no need to use the local variable, use directly [NSSpellChecker sharedSpellChecker] on the line below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649427</commentid>
    <comment_count>24</comment_count>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-06-14 13:25:06 -0700</bug_when>
    <thetext>Landed manually: http://trac.webkit.org/changeset/120357</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650391</commentid>
    <comment_count>25</comment_count>
      <attachid>147479</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-06-15 12:13:09 -0700</bug_when>
    <thetext>Comment on attachment 147479
Update to TOT.

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

&gt; Source/WebCore/editing/FrameSelection.h:121
&gt;          ClearTypingStyle = 1 &lt;&lt; 2,
&gt;          SpellCorrectionTriggered = 1 &lt;&lt; 3,
&gt;          DoNotSetFocus = 1 &lt;&lt; 4,
&gt; +        DictationTriggered = 1 &lt;&lt; 5

I wish that we didn&apos;t have a mix of hight level and low level options here. It&apos;s not FrameSelection&apos;s job to make policy decisions on why to do when selection change is triggered by spelling or by dictation.

&gt; Source/WebCore/page/ContextMenuController.cpp:903
&gt; +            bool haveContextMenuItemsForMisspellingOrGrammer = false;

&quot;Grammer&quot;?

&gt; Source/WebKit2/UIProcess/WebPageProxy.messages.in:288
&gt; +    DictationAlternatives(uint64_t dictationContext) -&gt; (Vector&lt;String&gt; alternatives)

It&apos;s a shame that we need a synchronous call from WebProcess to UIProcess to get data that&apos;s only really used in UIProcess to display a context menu.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137438</attachid>
            <date>2012-04-16 17:13:18 -0700</date>
            <delta_ts>2012-04-16 19:44:40 -0700</delta_ts>
            <desc>Patch (v1)</desc>
            <filename>bug-83047-20120416171317.patch</filename>
            <type>text/plain</type>
            <size>97918</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWVmYmNlMjFlZGQzYzU2
OWJlODIxMDE0NDNlMzFmODJkMGQ4YmRjNy4uMDAyYWJhNmE1NmZmZGQ3ZWI4YjA0NGVlNmNjNGU3
NzM1MDM1NjNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA0LTE2ICBKaWEg
UHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE9uIE9TIFgsIE1hcmsgdGV4dCB3aXRoIGRp
Y3RhdGlvbiBhbHRlcm5hdGl2ZSB3aXRoIGJsdWUgdW5kZXJsaW5lLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMwNDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogcGxhdGZvcm0vbWFjL2VkaXRp
bmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUuaHRtbAorICAgICAg
ICAgICAgICAgcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQu
aHRtbAorCisgICAgICAgIFRoaXMgaXMgdGhlIGZvbGxvdyB1cCBwYXRjaCBtZW50aW9uZWQgaW4g
dGhlIENoYW5nZUxvZyBvZiBidWcgODM1NDkuIFRoaXMgcGF0Y2ggYWRkZWQgYW4gT1MgWCBzcGVj
aWZpYyBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8KKyAgICAgICAgZGljdGF0ZWQgdGV4dCBpbnB1
dC4KKyAgICAgICAgCisgICAgICAgIE1ham9yaXR5IG9mIHRoZSBjaGFuZ2VzIGFyZSBpbiBXZWJL
aXQgYW5kIFdlYktpdDIuIFdlYkNvcmUgaGFzIHR3byBtaW5vciBjaGFuZ2VzOgorICAgICAgICAx
LiBBZGRlZCBhIG5ldyBmdW5jdGlvbiBpbiBBbHRlcm5hdGl2ZVRleHRDbGllbnQsIHdoaWNoIG5v
dGlmaWVzIFdlYktpdCBsYXllciB0byByZW1vdmUgZGljdGF0aW9uIGFsdGVybmF0aXZlIGRhdGEg
d2hlbiBhCisgICAgICAgICAgIERpY3RhdGlvbkFsZXJuYXRpdmVzIG1hcmtlciBpcyByZW1vdmVk
LgorICAgICAgICAyLiBDaGFuZ2VkIHRoZSB0eXBlIG9mIERpY3RhdGlvbkFsdGVybmF0aXZlOjpk
aWN0YXRpb25Db250ZXh0IGZyb20gdWludDY0X3QgdG8gdWludHB0cl90LCBzbyB0aGF0IGl0IGhh
cyBjb3JyZWN0IHNpemUgb24gYm90aAorICAgICAgICAgICAzMi0gYW5kIDY0LWJpdCBwbGF0Zm9y
bS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGVkaXRpbmcvQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyOjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25NYXJrZXJEZXRhaWxzOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGljdGF0aW9uTWFya2VyRGV0YWlsczo6ZGljdGF0aW9uQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25NYXJrZXJEZXRhaWxzOjpEaWN0YXRp
b25NYXJrZXJEZXRhaWxzKToKKyAgICAgICAgKERpY3RhdGlvbk1hcmtlckRldGFpbHMpOgorICAg
ICAgICAoQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcik6CisgICAgICAgICogZWRpdGluZy9EaWN0
YXRpb25BbHRlcm5hdGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5h
dGl2ZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmUpOgorICAgICAgICAqIGVkaXRpbmcvRGljdGF0aW9u
QWx0ZXJuYXRpdmUuaDoKKyAgICAgICAgKERpY3RhdGlvbkFsdGVybmF0aXZlKToKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVwZGF0ZU1h
cmtlcnNGb3JXb3Jkc0FmZmVjdGVkQnlFZGl0aW5nKToKKyAgICAgICAgKiBwYWdlL0FsdGVybmF0
aXZlVGV4dENsaWVudC5oOgorICAgICAgICAoQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KToKKwogMjAx
Mi0wNC0xNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzExMjQ5MzM2PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg0MDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU2YzFiZTNiMTcxMzEzNTQzN2U2ZjY3YTVmMzRm
NTRmYzc1NTIxMTIuLjRjODM0OWM5NzcwNWFiZmMyNTFkYWE0OGU4NmE3ZjI3MWY5Y2Q3ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDQtMTYgIEppYSBQdSAgPGpwdUBhcHBsZS5j
b20+CisKKyAgICAgICAgT24gT1MgWCwgTWFyayB0ZXh0IHdpdGggZGljdGF0aW9uIGFsdGVybmF0
aXZlIHdpdGggYmx1ZSB1bmRlcmxpbmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MzA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIw
MTItMDQtMTAgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW0NNYWtlXSBFbmFibGUgVVNFX0ZPTERFUlMgcHJvcGVydHkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRl
eCBmMDllOTc4ZjgzMjAzMjI1ZjA4ZDQzNGEzMWE2MDgxM2Q2MzIxYmYwLi4zNTIxOGY4YjhiZDFj
NWIyYWVhZThlNWVkMzg3MTU5Yzk1OTkwODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTAgQEAKKzIwMTItMDQtMTYgIEppYSBQdSAgPGpwdUBhcHBsZS5jb20+CisKKyAgICAgICAgT24g
T1MgWCwgTWFyayB0ZXh0IHdpdGggZGljdGF0aW9uIGFsdGVybmF0aXZlIHdpdGggYmx1ZSB1bmRl
cmxpbmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MzA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWRkZWQgYW4gT1MgWCBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8g
ZGljdGF0ZWQgdGV4dCBpbnB1dC4gSXQgc2hvdWxkbid0IGNoYW5nZSBiZWhhdmlvcnMgb24gb3Ro
ZXIgcGxhdGZvcm1zLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVs
Lm1tOgorICAgICAgICAoQ29ycmVjdGlvblBhbmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDoK
KyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudCk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tOgorICAgICAgICAoV2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50OjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAqIFdl
YlZpZXcvRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAo
RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyKToKKyAgICAgICAgKERpY3RhdGlvbkFsdGVy
bmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyKToKKyAgICAg
ICAgKERpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyKToKKyAgICAgICAgKERpY3RhdGlvbkFsdGVy
bmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4dENvbnRyb2xsZXI6OkRpY3RhdGlvbkNv
bnRleHRDb250cm9sbGVyKToKKyAgICAgICAgKiBXZWJWaWV3L0RpY3RhdGlvbkFsdGVybmF0aXZl
Q29udHJvbGxlci5tbTogQWRkZWQuCisgICAgICAgIChEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRy
b2xsZXI6OkRpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMpOgorICAg
ICAgICAoRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpEaWN0YXRpb25Db250ZXh0Q29u
dHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yRGljdGF0aW9uQ29udGV4dCk6CisgICAgICAgIChEaWN0
YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OkRpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyOjpy
ZW1vdmVBbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KToKKyAgICAgICAgKERpY3RhdGlv
bkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4dENvbnRyb2xsZXI6OmNsZWFy
KToKKyAgICAgICAgKERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6YWRkQWx0ZXJuYXRp
dmVzKToKKyAgICAgICAgKERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6Y2xlYXIpOgor
ICAgICAgICAoRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpzaG93QWx0ZXJuYXRpdmVz
KToKKyAgICAgICAgKERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6aGFuZGxlQWNjZXB0
ZWRBbHRlcm5hdGl2ZSk6CisgICAgICAgIChEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6
OmRpc21pc3NBbHRlcm5hdGl2ZXMpOgorICAgICAgICAoRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250
cm9sbGVyOjpyZW1vdmVBbHRlcm5hdGl2ZXMpOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZp
ZXcubW06CisgICAgICAgIChjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlcyk6CisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IGluc2VydFRleHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0
Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IF9nZXRXZWJDb3JlRGljdGF0aW9uQWx0ZXJuYXRpdmVz
OmZyb21UZXh0QWx0ZXJuYXRpdmVzOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9yZW1vdmVEaWN0
YXRpb25BbHRlcm5hdGl2ZXM6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5oOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEubW06CisgICAgICAgICgtW1dlYlZpZXdQcml2
YXRlIGluaXRdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U6OlRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZSk6CisgICAgICAgIChUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UpOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxMi0wNC0xMiAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjEwMjI2Mik6
IGlBZCBQcm9kdWNlciByZWxpZXMgb24gQ1NTU3R5bGVEZWNsYXJhdGlvbiBwcm9wZXJ0eSBzZXR0
ZXJzIHJlc3BlY3RpbmcgJyFpbXBvcnRhbnQnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGI1NDZmNzUxOTEzOTgy
MzQ3MDBhM2Q3NmE0OWE3OGVkMGVmZGRkYi4uYjEyOGNmNDVhZmU0OWUwNmE1OGQyZTY2MTFlNTMy
ZWFiYzUzOTM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEyLTA0LTE2ICBKaWEg
UHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE9uIE9TIFgsIE1hcmsgdGV4dCB3aXRoIGRp
Y3RhdGlvbiBhbHRlcm5hdGl2ZSB3aXRoIGJsdWUgdW5kZXJsaW5lLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMwNDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQbGVhc2Ugc2VlIFdlYkNvcmUvQ2hhbmdl
TG9nIGZvciBkZXRhaWxzLgorICAgICAgICBUaGlzIHBhdGNoIGFkZGVkIGFuIE9TIFggc3BlY2lm
aWMgZnVuY3Rpb25hbGl0eSByZWxhdGVkIHRvIGRpY3RhdGVkIHRleHQgaW5wdXQuIEl0IHNob3Vs
ZG4ndCBjaGFuZ2UgYmVoYXZpb3JzIG9uIG90aGVyIHBsYXRmb3Jtcy4KKworICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcDogQWRkZWQgdGVtcGxhdGUgc3BlY2lh
bGl6YXRpb24gdG8gZW5jb2RlIHVpbnRwdHJfdCB0eXBlLgorICAgICAgICAoQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyOjpkZWNvZGVQb2ludGVyKToKKyAgICAgICAgKENvcmVJUEMpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmg6CisgICAgICAgIChBcmd1bWVu
dERlY29kZXIpOgorICAgICAgICAoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyOjpkZWNvZGUpOgor
ICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVu
Y29kZXIuY3BwOgorICAgICAgICAoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyOjplbmNvZGVQb2lu
dGVyKToKKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJn
dW1lbnRFbmNvZGVyLmg6CisgICAgICAgIChBcmd1bWVudEVuY29kZXIpOgorICAgICAgICAoQ29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyOjplbmNvZGUpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChDb3JlSVBD
Ojo6OmVuY29kZSk6CisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5o
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwYWdlQ2xvc2VkKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OmFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKGNvbGxlY3REaWN0
YXRpb25UZXh0QWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKC1bV0tWaWV3IGluc2VydFRleHQ6cmVw
bGFjZW1lbnRSYW5nZTpdKToKKyAgICAgICAgKC1bV0tWaWV3IGhhbmRsZUFjY2VwdGVkQWx0ZXJu
YXRpdmVUZXh0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFs
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKFBhZ2VDbGll
bnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZW1vdmVEaWN0YXRpb25BbHRl
cm5hdGl2ZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KFdlYlBhZ2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbToKKyAgICAg
ICAgKFdlYktpdDo6Q29ycmVjdGlvblBhbmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL0RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChEaWN0YXRpb25BbHRlcm5hdGl2
ZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRy
b2xsZXI6OkRpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcik6CisgICAgICAgIChEaWN0YXRp
b25Db250ZXh0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OkRpY3RhdGlvbkFsdGVybmF0
aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4dENvbnRyb2xsZXI6OkRpY3RhdGlvbkNvbnRl
eHRDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL0RpY3RhdGlvbkFsdGVybmF0
aXZlQ29udHJvbGxlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OkRpY3RhdGlvbkNvbnRleHRDb250
cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViS2l0OjpEaWN0YXRpb25BbHRl
cm5hdGl2ZUNvbnRyb2xsZXI6OkRpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2
ZXNGb3JEaWN0YXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6RGljdGF0aW9uQWx0ZXJu
YXRpdmVDb250cm9sbGVyOjpEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJu
YXRpdmVzRm9yRGljdGF0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OkRpY3RhdGlvbkFs
dGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4dENvbnRyb2xsZXI6OmNsZWFyKToK
KyAgICAgICAgKFdlYktpdDo6RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjphZGRBbHRl
cm5hdGl2ZXMpOgorICAgICAgICAoV2ViS2l0OjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xs
ZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9s
bGVyOjpzaG93QWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYktpdDo6RGljdGF0aW9uQWx0ZXJu
YXRpdmVDb250cm9sbGVyOjpoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlKToKKyAgICAgICAgKFdl
YktpdDo6RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpkaXNtaXNzQWx0ZXJuYXRpdmVz
KToKKyAgICAgICAgKFdlYktpdDo6RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpyZW1v
dmVBbHRlcm5hdGl2ZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVGV4dEFsdGVybmF0aXZl
V2l0aFJhbmdlLmg6IEFkZGVkLgorICAgICAgICAoVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTogQWRk
ZWQuCisgICAgICAgIChUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U6OlRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50Lmg6CisgICAgICAgIChXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVtb3ZlRGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYlBhZ2UpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
aW5zZXJ0RGljdGF0ZWRUZXh0KToKKyAgICAgICAgKFdlYktpdCk6CisKIDIwMTItMDQtMTYgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xMTI0OTMzNj4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NDA1MApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAxMTI5Nzc1ZGQzZDBkYzBlMTYwMDZmOTU5ZDZj
MmYxZDIzODNkNGE3Li5kNmIwZjU2YTc5NmYxZTQ5ZDE3OTY4MGY2OGI4Njk0MmNkMjIzOGY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNjA0LDcgKzYwNCw3IEBAIF9fWk43V2ViQ29yZTE5VGV4
dFJlc291cmNlRGVjb2RlcjZkZWNvZGVFUEtjbQogX19aTjdXZWJDb3JlMTlUZXh0UmVzb3VyY2VE
ZWNvZGVyQzFFUktOM1dURjZTdHJpbmdFUktOU18xMlRleHRFbmNvZGluZ0ViCiBfX1pON1dlYkNv
cmUxOVRleHRSZXNvdXJjZURlY29kZXJEMUV2CiBfX1pON1dlYkNvcmUxOWFwcGxpY2F0aW9uSXNT
YWZhcmlFdgotX19aTjdXZWJDb3JlMjBEaWN0YXRpb25BbHRlcm5hdGl2ZUMxRWpqeQorX19aTjdX
ZWJDb3JlMjBEaWN0YXRpb25BbHRlcm5hdGl2ZUMxRWpqbQogX19aTjdXZWJDb3JlMjBEaWN0YXRp
b25BbHRlcm5hdGl2ZUMxRXYKIF9fWk43V2ViQ29yZTIwRGlzcGxheVNsZWVwRGlzYWJsZXJDMUVQ
S2MKIF9fWk43V2ViQ29yZTIwRGlzcGxheVNsZWVwRGlzYWJsZXJEMUV2CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCA4
ZDA5ZmYxYjk5ODQ3MWVhNjFmMzg5MjY4ZTQ5MjRmNzA0Y2YxM2IxLi5hNTllMWIyNjI5NDZjYTlm
ZTI0YzcxMDJkOTM2NzdkZDcxZjBjOWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTYyNCw0ICs2MjQsMTMgQEAg
Ym9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjppbnNlcnREaWN0YXRlZFRleHQoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBWZWMKICAgICByZXR1cm4gZXZlbnQtPmRlZmF1bHRIYW5kbGVk
KCk7CiB9CiAKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVtb3ZlRGljdGF0aW9u
QWx0ZXJuYXRpdmVzRm9yTWFya2VyKERvY3VtZW50TWFya2VyKiBtYXJrZXIpCit7CisjaWYgVVNF
KERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgRGljdGF0aW9uTWFya2VyRGV0YWlscyogZGV0
YWlscyA9IHN0YXRpY19jYXN0PERpY3RhdGlvbk1hcmtlckRldGFpbHMqPihtYXJrZXItPmRldGFp
bHMoKSk7CisgICAgaWYgKEFsdGVybmF0aXZlVGV4dENsaWVudCogY2xpZW50ID0gYWx0ZXJuYXRp
dmVUZXh0Q2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRp
dmVzKGRldGFpbHMtPmRpY3RhdGlvbkNvbnRleHQoKSk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuaAppbmRleCAyODQ0OWVmZDkzZTU3NDBhMDllMzViNjU0Yjg5YjUwYzc5
ODA4ZDliLi4xZmFmNjk5NTY5ZjMxNjE5NjYxYzY4YjZhNTVjZDljYTdlYWYyYzBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaApA
QCAtNjIsMTkgKzYyLDE5IEBAIHN0cnVjdCBBbHRlcm5hdGl2ZVRleHRJbmZvIHsKIAogY2xhc3Mg
RGljdGF0aW9uTWFya2VyRGV0YWlscyA6IHB1YmxpYyBEb2N1bWVudE1hcmtlckRldGFpbHMgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpY3RhdGlvbk1hcmtlckRldGFpbHM+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4
dCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaWN0YXRpb25NYXJrZXJEZXRhaWxzPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIHVpbnRwdHJfdCBkaWN0YXRpb25Db250ZXh0KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaWN0YXRpb25NYXJrZXJEZXRhaWxz
KG9yaWdpbmFsVGV4dCwgZGljdGF0aW9uQ29udGV4dCkpOwogICAgIH0KICAgICBjb25zdCBTdHJp
bmcmIG9yaWdpbmFsVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxUZXh0OyB9Ci0gICAg
dWludDY0X3QgZGljdGF0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGljdGF0aW9uQ29u
dGV4dDsgfQorICAgIHVpbnRwdHJfdCBkaWN0YXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4g
bV9kaWN0YXRpb25Db250ZXh0OyB9CiBwcml2YXRlOgotICAgIERpY3RhdGlvbk1hcmtlckRldGFp
bHMoY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQp
CisgICAgRGljdGF0aW9uTWFya2VyRGV0YWlscyhjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwg
dWludHB0cl90IGRpY3RhdGlvbkNvbnRleHQpCiAgICAgOiBtX2RpY3RhdGlvbkNvbnRleHQoZGlj
dGF0aW9uQ29udGV4dCkKICAgICAsIG1fb3JpZ2luYWxUZXh0KG9yaWdpbmFsVGV4dCkKICAgICB7
IH0KICAKLSAgICB1aW50NjRfdCBtX2RpY3RhdGlvbkNvbnRleHQ7CisgICAgdWludHB0cl90IG1f
ZGljdGF0aW9uQ29udGV4dDsKICAgICBTdHJpbmcgbV9vcmlnaW5hbFRleHQ7CiB9OwogCkBAIC0x
MzAsNiArMTMwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlZEF1dG9jb3JyZWN0aW9uQXRQ
b3NpdGlvbihjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxTdHJpbmcpIFVO
TEVTU19FTkFCTEVEKHsgVU5VU0VEX1BBUkFNKG9yaWdpbmFsU3RyaW5nKTsgfSkKIAogICAgIGJv
b2wgaW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxEaWN0YXRp
b25BbHRlcm5hdGl2ZT4mLCBFdmVudCopOworICAgIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJu
YXRpdmVzRm9yTWFya2VyKERvY3VtZW50TWFya2VyKik7CiAKIHByaXZhdGU6CiAjaWYgVVNFKEFV
VE9DT1JSRUNUSU9OX1BBTkVMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9E
aWN0YXRpb25BbHRlcm5hdGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3RhdGlv
bkFsdGVybmF0aXZlLmNwcAppbmRleCA5NGI0YzcyYTM2OTM1ODIwOWQ1ZjkzYzVlYzM5Yjc3YThk
MGU5MmE4Li44ZWRjYjM4NGY0NzI3ODdlYTQ5ODFjMDBiYWNkMDc3N2EwYzNhNjlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3RhdGlvbkFsdGVybmF0aXZlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3RhdGlvbkFsdGVybmF0aXZlLmNwcApAQCAtMjgs
NyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURpY3RhdGlvbkFsdGVybmF0aXZl
OjpEaWN0YXRpb25BbHRlcm5hdGl2ZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCB1
aW50NjRfdCBjb250ZXh0KQorRGljdGF0aW9uQWx0ZXJuYXRpdmU6OkRpY3RhdGlvbkFsdGVybmF0
aXZlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIHVpbnRwdHJfdCBjb250ZXh0KQog
ICAgIDogcmFuZ2VTdGFydChzdGFydCkKICAgICAsIHJhbmdlTGVuZ3RoKGxlbmd0aCkKICAgICAs
IGRpY3RhdGlvbkNvbnRleHQoY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGlj
dGF0aW9uQWx0ZXJuYXRpdmUuaAppbmRleCAwOGZjZWEzODY3Y2I1YzljYWIxOTIzODQ2NjBiNTU2
NmRkN2I1OWNlLi44ZDkyMWY5OTUzOWYxOWVhMjkzNTMxMjBlMzMzNjJhNTMyMDczNTAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3RhdGlvbkFsdGVybmF0aXZlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oCkBAIC0zMCwx
MyArMzAsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IERpY3RhdGlvbkFsdGVy
bmF0aXZlIHsKLSAgICBEaWN0YXRpb25BbHRlcm5hdGl2ZSh1bnNpZ25lZCBzdGFydCwgdW5zaWdu
ZWQgbGVuZ3RoLCB1aW50NjRfdCBjb250ZXh0KTsKKyAgICBEaWN0YXRpb25BbHRlcm5hdGl2ZSh1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCB1aW50cHRyX3QgY29udGV4dCk7CiAgICAg
RGljdGF0aW9uQWx0ZXJuYXRpdmUoKTsKICAgICB1bnNpZ25lZCByYW5nZVN0YXJ0OwogICAgIHVu
c2lnbmVkIHJhbmdlTGVuZ3RoOwotCi0gICAgLy8gVGhpcyBuZWVkIHRvIGJlIDY0IGJpdCBiZWNh
dWVzZSBpdCBhY3R1YWxseSBob2xkcyBhIHBvaW50ZXIgaW4gV2ViS2l0LgotICAgIHVpbnQ2NF90
IGRpY3RhdGlvbkNvbnRleHQ7CisgICAgdWludHB0cl90IGRpY3RhdGlvbkNvbnRleHQ7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMjI4ODRmYTc3ZWRkODQ0ZTU0ZmJi
ODljYTBhNWY4OWFlZDQ0MWJlOS4uNDljMTEwYjllMWZiMjVmMDg3M2EyNTdkOGRiZTk5ZDcxNzY2
ZjJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMjI1OCw2ICsyMjU4LDEwIEBA
IHZvaWQgRWRpdG9yOjp1cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhib29s
IGRvTm90UmVtb3ZlSWZTZWxlY3Rpb25BCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFt
ZS0+ZG9jdW1lbnQoKTsKICAgICBSZWZQdHI8UmFuZ2U+IHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVh
dGUoZG9jdW1lbnQsIHN0YXJ0T2ZGaXJzdFdvcmQuZGVlcEVxdWl2YWxlbnQoKSwgZW5kT2ZMYXN0
V29yZC5kZWVwRXF1aXZhbGVudCgpKTsKIAorICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcio+IG1h
cmtlcnMgPSBkb2N1bWVudC0+bWFya2VycygpLT5tYXJrZXJzSW5SYW5nZSh3b3JkUmFuZ2UuZ2V0
KCksIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbWFya2Vycy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9hbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyLT5yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIobWFy
a2Vyc1tpXSk7CisKICAgICBkb2N1bWVudC0+bWFya2VycygpLT5yZW1vdmVNYXJrZXJzKHdvcmRS
YW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nIHwgRG9jdW1lbnRNYXJrZXI6OkNv
cnJlY3Rpb25JbmRpY2F0b3IgfCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlv
biB8IERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMsIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXIpOwogICAgIGRvY3Vt
ZW50LT5tYXJrZXJzKCktPmNsZWFyRGVzY3JpcHRpb25Pbk1hcmtlcnNJbnRlcnNlY3RpbmdSYW5n
ZSh3b3JkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaAppbmRleCBmNWFlNjdkMGVk
OWZkYzZmYmY0NzA3Mzc2NjYzYjkyYWM5MzE1Y2JjLi45MzAzMjVkZjVlMDVlZDNlOGEyOTIyZjk5
MmM2MWYyOWE1ZjczNzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0
aXZlVGV4dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50LmgKQEAgLTMxLDYgKzMxLDExIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVm
aW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xF
T1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xJT04pCisvLyBTb21lIHBsYXRmb3JtcyBw
cm92aWRlIFVJIGZvciBzdWdnZXN0aW5nIGFsdGVybmF0aXZlIGRpY3RhdGlvbiB0ZXh0LgorI2Rl
ZmluZSBXVEZfVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMgMQorI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fU05PV19MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MSU9OKQorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4
dCB7CkBAIC01Nyw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0Fs
dGVybmF0aXZlKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKICAgICB2
aXJ0dWFsIFN0cmluZyBkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFJlYXNvbkZvckRpc21pc3NpbmdB
bHRlcm5hdGl2ZVRleHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rp
b25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBs
YWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludHB0cl90IGRpY3RhdGlv
bkNvbnRleHQpID0gMDsKIH07CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1NGYwMjZkNmE3MmY1ZjI2MzgyMjYyNWEzMjY1
NjUwZTg2NGQyNGE4Li4wYTUwMmU4ZmJjODMzMjk0OTkxMDAzM2E2YWJmNDc4YTdkMTIwOGFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTM3Miw2ICszNzIsOCBAQAogCQlDREE2MkFFMzEyNUY4N0MyMDA3RkQxMTggLyogV2ViRnVsbFNj
cmVlbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREE2MkFFMTEyNUY4N0MyMDA3RkQxMTggLyogV2ViRnVsbFNjcmVlbkNvbnRyb2xs
ZXIubW0gKi87IH07CiAJCUNFREExMkRCMTUyQ0JFNjgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRURBMTJEOTE1MkNCRTY4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
Lm1tICovOyB9OwogCQlDRURBMTJEQzE1MkNCRTY4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRURBMTJEQTE1MkNCRTY4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmgg
Ki87IH07CisJCUNFREJCRjFFMTUyRjQ5RTcwMDYyNzkzQiAvKiBEaWN0YXRpb25BbHRlcm5hdGl2
ZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFREJCRjFDMTUyRjQ5RTcwMDYyNzkzQiAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRy
b2xsZXIuaCAqLzsgfTsKKwkJQ0VEQkJGMUYxNTJGNDlFNzAwNjI3OTNCIC8qIERpY3RhdGlvbkFs
dGVybmF0aXZlQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFREJCRjFEMTUyRjQ5RTcwMDYyNzkzQiAvKiBEaWN0YXRpb25BbHRlcm5h
dGl2ZUNvbnRyb2xsZXIubW0gKi87IH07CiAJCUREN0NERUU3MEEyM0JBOUUwMDA2OTkyOCAvKiBX
ZWJUeXBlc0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBERDdDREVFNjBBMjNCQTlFMDAwNjk5MjggLyogV2ViVHlwZXNJbnRlcm5hbC5oICov
OyB9OwogCQlERDg5NjgyMDA5QUE4NzI0MDA5N0U3RjAgLyogV2ViRWxlbWVudERpY3Rpb25hcnku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREODk2ODFF
MDlBQTg3MjQwMDk3RTdGMCAvKiBXZWJFbGVtZW50RGljdGlvbmFyeS5oICovOyB9OwogCQlERDg5
NjgyMTA5QUE4NzI0MDA5N0U3RjAgLyogV2ViRWxlbWVudERpY3Rpb25hcnkubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDg5NjgxRjA5QUE4NzI0MDA5
N0U3RjAgLyogV2ViRWxlbWVudERpY3Rpb25hcnkubW0gKi87IH07CkBAIC03MDMsNiArNzA1LDgg
QEAKIAkJQ0RBNjJBRTExMjVGODdDMjAwN0ZEMTE4IC8qIFdlYkZ1bGxTY3JlZW5Db250cm9sbGVy
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRnVsbFNjcmVl
bkNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFREExMkQ5MTUy
Q0JFNjgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFREExMkRBMTUyQ0JFNjgwMEQ5RTA4RCAv
KiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNFREJCRjFDMTUyRjQ5RTcwMDYyNzkzQiAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZUNv
bnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGljdGF0aW9uQWx0
ZXJuYXRpdmVDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFREJC
RjFEMTUyRjQ5RTcwMDYyNzkzQiAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEaWN0YXRpb25BbHRlcm5h
dGl2ZUNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUREN0NERUU2
MEEyM0JBOUUwMDA2OTkyOCAvKiBXZWJUeXBlc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlR5cGVzSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJREQ4OTY4MUUwOUFBODcyNDAwOTdFN0YwIC8qIFdlYkVsZW1lbnREaWN0aW9uYXJ5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
RWxlbWVudERpY3Rpb25hcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07CiAJCUREODk2ODFGMDlBQTg3MjQwMDk3RTdGMCAvKiBXZWJFbGVt
ZW50RGljdGlvbmFyeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViRWxlbWVudERpY3Rpb25hcnkubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMTE2NSw2ICsxMTY5
LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUY1MkNBNkJEMDJERjlEMEYwMTg2MzVDQSAvKiBI
VE1MICovLAogCQkJCTUxRTk0QzA3MDZDMDJDQTMwMEE5QjA5RSAvKiBQREYgKi8sCisJCQkJQ0VE
QkJGMUQxNTJGNDlFNzAwNjI3OTNCIC8qIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5t
bSAqLywKKwkJCQlDRURCQkYxQzE1MkY0OUU3MDA2Mjc5M0IgLyogRGljdGF0aW9uQWx0ZXJuYXRp
dmVDb250cm9sbGVyLmggKi8sCiAJCQkJODM3MzQzNUEwNjI0RUUwRDAwRjNCMjg5IC8qIFdlYkFy
Y2hpdmUuaCAqLywKIAkJCQk4MzczNDM1QjA2MjRFRTBEMDBGM0IyODkgLyogV2ViQXJjaGl2ZS5t
bSAqLywKIAkJCQk0NEJCOEIxMzEyNDFBMDIyMDAxRTNBMjIgLyogV2ViQXJjaGl2ZUludGVybmFs
LmggKi8sCkBAIC0xNjUwLDYgKzE2NTYsNyBAQAogCQkJCTMxMkUyRkU1MTRFNDgxODIwMDdDQ0Ex
OCAvKiBXZWJOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMkUyRkU5MTRFNDgy
MTUwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0VEQTEyREMxNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQ0VEQkJGMUUxNTJGNDlFNzAwNjI3OTNCIC8qIERpY3RhdGlv
bkFsdGVybmF0aXZlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMDM4LDYgKzIwNDUs
NyBAQAogCQkJCTQxRjQ0ODUwMTAzMzhFOEMwMDMwRTU1RSAvKiBXZWJXb3JrZXJzUHJpdmF0ZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTMxMkUyRkU2MTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3Rp
ZmljYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRURBMTJEQjE1MkNCRTY4MDBEOUUwOEQg
LyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0VEQkJG
MUYxNTJGNDlFNzAwNjI3OTNCIC8qIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5tbSBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvQ29ycmVjdGlvblBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
Q29ycmVjdGlvblBhbmVsLm1tCmluZGV4IDY1ODNjZWU2NjIxMTEwNzZjMWUwMjQ3MjZlZWNiYjBh
OGY1NDA3OTAuLjY4MTBhMjc4MGI5ZjM5NmRhMGQzMjJiZDYzYWNmNjAxMmE5ZTMwOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwu
bW0KQEAgLTI1LDcgKzI1LDYgQEAKICNpbXBvcnQgIkNvcnJlY3Rpb25QYW5lbC5oIgogCiAjaW1w
b3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKLSNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCiAKICNp
ZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAg
LTEzMSw3ICsxMzAsNyBAQCB2b2lkIENvcnJlY3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0ZWRSZXBs
YWNlbWVudChOU1N0cmluZyogYWNjZXB0ZWRSZXBsYWNlbWVudCwgTgogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgCi0gICAgW21fdmlldy5nZXQoKSBoYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1
bHQ6YWNjZXB0ZWRSZXBsYWNlbWVudF07CisgICAgW21fdmlldy5nZXQoKSBoYW5kbGVBY2NlcHRl
ZEFsdGVybmF0aXZlVGV4dDphY2NlcHRlZFJlcGxhY2VtZW50XTsKICAgICBtX3ZpZXcuY2xlYXIo
KTsKICAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVudCkKICAgICAgICAgbV9yZXN1bHRGb3JEaXNt
aXNzYWwuYWRvcHROUyhbYWNjZXB0ZWRSZXBsYWNlbWVudCBjb3B5XSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENs
aWVudC5oCmluZGV4IDdlZGZhY2UwYWUzNDY4MTQxOTdjZGIxNTZkNmJiMzZjZDZiMWQxZDcuLjk0
OGI1YWJiZGI0YmVhZWMzZTgwYzIxZjJjM2QwMjg5N2RjZTE2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENs
aWVudC5oCkBAIC00MCw2ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlz
c0FsdGVybmF0aXZlKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NBbHRlcm5hdGl2ZVNvb24oV2Vi
Q29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6QXV0b2Nv
cnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludHB0cl90IGRpY3RhdGlvbkNvbnRleHQpIE9W
RVJSSURFOwogcHJpdmF0ZToKICAgICBXZWJWaWV3KiBtX3dlYlZpZXc7CiAjaWYgVVNFKEFVVE9D
T1JSRUNUSU9OX1BBTkVMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tCmluZGV4IDY5NzJmYjRiYTkz
MmUyNGNkYmIwNDk5Y2U0OGVmNmVhMjRlZDUyY2QuLjVmOTliYjM1ODdjZDYzM2U3NjA5MDQ4ZWY5
ZGJhNDRlOWU4MjVmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0KQEAgLTI1LDYgKzI1LDgg
QEAKIAogI2luY2x1ZGUgIldlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIgogCisjaW5jbHVkZSAi
V2ViVmlld0ludGVybmFsLmgiCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudChXZWJWaWV3KiB3ZWJW
aWV3KQpAQCAtNjksMyArNzEsMTAgQEAgdm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb24KIENvcnJlY3Rp
b25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShtX3dlYlZpZXcsIHJlc3BvbnNl
LCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpOwogI2VuZGlmCiB9CisKK3ZvaWQg
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWlu
dHB0cl90IGRpY3RhdGlvbkNvbnRleHQpCit7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElW
RVMpCisgICAgW21fd2ViVmlldyBfcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOmRpY3RhdGlv
bkNvbnRleHRdOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L0RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9EaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2Jl
NDQ4NTc5ZGNhNGU1MDAzMzZiNGIzMjY0YzUwYTYyMjAwNDJkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9EaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIu
aApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEaWN0YXRpb25BbHRlcm5h
dGl2ZUNvbnRyb2xsZXJfaAorI2RlZmluZSBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXJf
aAorCisjaW5jbHVkZSA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCitP
QkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKK09CSkNfQ0xBU1MgV2ViVmlldzsKKworY2xh
c3MgRGljdGF0aW9uQ29udGV4dENvbnRyb2xsZXI7CisKK2NsYXNzIERpY3RhdGlvbkFsdGVybmF0
aXZlQ29udHJvbGxlciB7CitwdWJsaWM6CisgICAgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9s
bGVyKCkgeyB9CisgICAgLy8gUmV0dXJucyBhIGRpY3RhdGlvbiBjb250ZXh0IElELgorICAgIHVp
bnQ2NF90IGFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVz
PiYpOworICAgIHZvaWQgY2xlYXIoKTsKKyAgICB2b2lkIHNob3dBbHRlcm5hdGl2ZXMoV2ViVmll
dyosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkU3RyaW5n
LCB1aW50cHRyX3QgZGljdGF0aW9uQ29udGV4dCk7CisgICAgdm9pZCBkaXNtaXNzQWx0ZXJuYXRp
dmVzKCk7CisgICAgdm9pZCByZW1vdmVBbHRlcm5hdGl2ZXModWludHB0cl90IGRpY3RhdGlvbkNv
bnRleHQpOworCitwcml2YXRlOgorICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShO
U1N0cmluZyogYWNjZXB0ZWRBbHRlcm5hdGl2ZSwgdWludHB0cl90IGRpY3RhdGlvbkNvbnRleHQs
IE5TVGV4dEFsdGVybmF0aXZlcyopOworCisgICAgY2xhc3MgRGljdGF0aW9uQ29udGV4dENvbnRy
b2xsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgRGljdGF0aW9uQ29udGV4dENvbnRyb2xsZXIo
KSB7IH0KKyAgICAgICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxO
U1RleHRBbHRlcm5hdGl2ZXM+Jik7CisgICAgICAgIHZvaWQgY2xlYXIoKTsKKyAgICAgICAgTlNU
ZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KHVpbnRwdHJf
dCBkaWN0YXRpb25Db250ZXh0KTsKKyAgICAgICAgdm9pZCByZW1vdmVBbHRlcm5hdGl2ZXNGb3JE
aWN0YXRpb25Db250ZXh0KHVpbnRwdHJfdCBkaWN0YXRpb25Db250ZXh0KTsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVpbnRwdHJfdCBpbnZhbGlkQ29udGV4dCA9IDA7CisgICAgcHJpdmF0ZToKKyAg
ICAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnRwdHJfdCwgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0
aXZlcz4gPiBIYXNoTWFwVHlwZTsKKyAgICAgICAgSGFzaE1hcFR5cGUgbV9hbHRlcm5hdGl2ZXNP
YmplY3RNYXA7CisgICAgfTsKKworICAgIERpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyIG1fY29u
dGV4dENvbnRyb2xsZXI7CisgICAgUmV0YWluUHRyPFdlYlZpZXc+IG1fdmlldzsKK307CisjZW5k
aWYKKyNlbmRpZiAvLyBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9EaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xs
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L0RpY3RhdGlvbkFsdGVybmF0aXZlQ29u
dHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZjZhZTE0ZWZjOTkxNGY2ZGI4NjUzOTlhOWM4ZDI2ZTNi
YWVlYjMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9EaWN0
YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIubW0KQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIuaCIKKworI2lmIFVT
RShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorCisjaW1wb3J0IDxBcHBLaXQvTlNTcGVsbENoZWNr
ZXIuaD4KKyNpbXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4KKyNpbXBvcnQgIldl
YlZpZXdJbnRlcm5hbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwordWludDY0X3Qg
RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpEaWN0YXRpb25Db250ZXh0Q29udHJvbGxl
cjo6YWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBh
bHRlcm5hdGl2ZXMpCit7CisgICAgdWludDY0X3QgY29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDY0X3Q+KGFsdGVybmF0aXZlcy5nZXQoKSk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAg
ICByZXR1cm4gaW52YWxpZENvbnRleHQ7CisgICAgaWYgKGFsdGVybmF0aXZlc0ZvckRpY3RhdGlv
bkNvbnRleHQoY29udGV4dCkpCisgICAgICAgIHJldHVybiBjb250ZXh0OworCisgICAgSGFzaE1h
cFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5hZGQoY29u
dGV4dCwgYWx0ZXJuYXRpdmVzKTsKKyAgICByZXR1cm4gcmVzdWx0LmlzTmV3RW50cnkgPyBjb250
ZXh0IDogaW52YWxpZENvbnRleHQ7Cit9CisKK05TVGV4dEFsdGVybmF0aXZlcyogRGljdGF0aW9u
QWx0ZXJuYXRpdmVDb250cm9sbGVyOjpEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlcjo6YWx0ZXJu
YXRpdmVzRm9yRGljdGF0aW9uQ29udGV4dCh1aW50cHRyX3QgZGljdGF0aW9uQ29udGV4dCkKK3sK
KyAgICBIYXNoTWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgaXRyID0gbV9hbHRlcm5hdGl2ZXNPYmpl
Y3RNYXAuZmluZChkaWN0YXRpb25Db250ZXh0KTsKKyAgICBpZiAoaXRyID09IG1fYWx0ZXJuYXRp
dmVzT2JqZWN0TWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gaXRy
LT5zZWNvbmQuZ2V0KCk7Cit9CisKK3ZvaWQgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVy
OjpEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJuYXRpdmVzRm9yRGljdGF0
aW9uQ29udGV4dCh1aW50cHRyX3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBtX2FsdGVybmF0
aXZlc09iamVjdE1hcC5yZW1vdmUoZGljdGF0aW9uQ29udGV4dCk7Cit9CisKK3ZvaWQgRGljdGF0
aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlcjo6Y2xl
YXIoKQoreworICAgIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmNsZWFyKCk7Cit9CisKK3VpbnQ2
NF90IERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6YWRkQWx0ZXJuYXRpdmVzKGNvbnN0
IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBhbHRlcm5hdGl2ZXMpCit7CisgICAgcmV0
dXJuIG1fY29udGV4dENvbnRyb2xsZXIuYWRkQWx0ZXJuYXRpdmVzKGFsdGVybmF0aXZlcyk7Cit9
CisKK3ZvaWQgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpjbGVhcigpCit7CisgICAg
cmV0dXJuIG1fY29udGV4dENvbnRyb2xsZXIuY2xlYXIoKTsKK30KKwordm9pZCBEaWN0YXRpb25B
bHRlcm5hdGl2ZUNvbnRyb2xsZXI6OnNob3dBbHRlcm5hdGl2ZXMoV2ViVmlldyogdmlldywgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRTdHJpbmcsIHVpbnRw
dHJfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKKyAg
ICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybjsKKyAgICBtX3ZpZXcgPSB2aWV3OworICAgIE5T
VGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVzID0gbV9jb250ZXh0Q29udHJvbGxlci5hbHRl
cm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KGRpY3RhdGlvbkNvbnRleHQpOworICAgIGlmICgh
YWx0ZXJuYXRpdmVzKQorICAgICAgICByZXR1cm47CisgICAgTlNTcGVsbENoZWNrZXIqIHNwZWxs
Q2hlY2tlciA9IFtOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdOworICAgIFtzcGVs
bENoZWNrZXIgc2hvd0NvcnJlY3Rpb25JbmRpY2F0b3JPZlR5cGU6TlNDb3JyZWN0aW9uSW5kaWNh
dG9yVHlwZUd1ZXNzZXMgcHJpbWFyeVN0cmluZzphbHRlcm5hdGl2ZXMucHJpbWFyeVN0cmluZyBh
bHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVzLmFsdGVybmF0aXZlU3RyaW5ncyBmb3JTdHJp
bmdJblJlY3Q6W3ZpZXcgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3OmJvdW5kaW5nQm94T2ZEaWN0
YXRlZFN0cmluZ10gdmlldzptX3ZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmlu
ZyogYWNjZXB0ZWRTdHJpbmcpIHsKKyAgICAgICAgaWYgKGFjY2VwdGVkU3RyaW5nKQorICAgICAg
ICAgICAgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShhY2NlcHRlZFN0cmluZywgZGljdGF0aW9u
Q29udGV4dCwgYWx0ZXJuYXRpdmVzKTsKKyAgICB9XTsKK30KKwordm9pZCBEaWN0YXRpb25BbHRl
cm5hdGl2ZUNvbnRyb2xsZXI6OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUoTlNTdHJpbmcqIGFj
Y2VwdGVkQWx0ZXJuYXRpdmUsIHVpbnRwdHJfdCBkaWN0YXRpb25Db250ZXh0LCBOU1RleHRBbHRl
cm5hdGl2ZXMqIGFsdGVybmF0aXZlcykKK3sKKyAgICBbYWx0ZXJuYXRpdmVzIG5vdGVTZWxlY3Rl
ZEFsdGVybmF0aXZlU3RyaW5nOmFjY2VwdGVkQWx0ZXJuYXRpdmVdOworICAgIG1fY29udGV4dENv
bnRyb2xsZXIucmVtb3ZlQWx0ZXJuYXRpdmVzRm9yRGljdGF0aW9uQ29udGV4dChkaWN0YXRpb25D
b250ZXh0KTsKKyAgICBbbV92aWV3LmdldCgpIGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0
OmFjY2VwdGVkQWx0ZXJuYXRpdmVdOworICAgIG1fdmlldy5jbGVhcigpOworfQorCit2b2lkIERp
Y3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6ZGlzbWlzc0FsdGVybmF0aXZlcygpCit7Cisg
ICAgaWYgKCFtX3ZpZXcpCisgICAgICAgIHJldHVybjsKKyAgICBbW05TU3BlbGxDaGVja2VyIHNo
YXJlZFNwZWxsQ2hlY2tlcl0gZGlzbWlzc0NvcnJlY3Rpb25JbmRpY2F0b3JGb3JWaWV3Om1fdmll
dy5nZXQoKV07Cit9CisKK3ZvaWQgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpyZW1v
dmVBbHRlcm5hdGl2ZXModWludHB0cl90IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgbV9jb250
ZXh0Q29udHJvbGxlci5yZW1vdmVBbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KGRpY3Rh
dGlvbkNvbnRleHQpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQppbmRleCBhOWIyOTFlNDk5ZjgwMjk3Y2M3NTY3OWYzOTBlZjZiZGUwNjFjNGE0Li5j
ZmRmY2ExMDgwOTE1ZjE2MTc1ZmNmNGUzMTIyNmMzM2YyYmZkMGYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTU4ODgsNiArNTg4OCwyMiBAQCBzdGF0aWMg
dm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9y
PENvbXBvc2l0aW9uVW5kZQogICAgIH0KIH0KIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQorc3RhdGljIHZvaWQgY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXMoTlNBdHRy
aWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBh
bHRlcm5hdGl2ZXMpIHsKKyAgICBOU1JhbmdlIGVmZmVjdGl2ZVJhbmdlID0gTlNNYWtlUmFuZ2Uo
MCwgMCk7CisgICAgTlNVSW50ZWdlciBsZW5ndGggPSBbc3RyaW5nIGxlbmd0aF07CisgICAgZG8g
eworICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbc3RyaW5nIGF0dHJpYnV0ZXNB
dEluZGV4OmVmZmVjdGl2ZVJhbmdlLmxvY2F0aW9uIGVmZmVjdGl2ZVJhbmdlOiZlZmZlY3RpdmVS
YW5nZV07CisgICAgICAgIGlmICghYXR0cmlidXRlcykKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBOU1RleHRBbHRlcm5hdGl2ZXMgKnRleHRBbHRlcm5hdGl2ZXMgPSBbYXR0cmlidXRlcyBv
YmplY3RGb3JLZXk6TlNUZXh0QWx0ZXJuYXRpdmVzQXR0cmlidXRlTmFtZV07CisgICAgICAgIGlm
ICh0ZXh0QWx0ZXJuYXRpdmVzKQorICAgICAgICAgICAgYWx0ZXJuYXRpdmVzLmFwcGVuZChUZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2UodGV4dEFsdGVybmF0aXZlcywgZWZmZWN0aXZlUmFuZ2UpKTsK
KyAgICAgICAgZWZmZWN0aXZlUmFuZ2UubG9jYXRpb24gPSBOU01heFJhbmdlKGVmZmVjdGl2ZVJh
bmdlKTsKKyAgICB9IHdoaWxlIChlZmZlY3RpdmVSYW5nZS5sb2NhdGlvbiA8IGxlbmd0aCk7Cit9
CisjZW5kaWYKKwogLSAodm9pZClpbnNlcnRUZXh0OihpZClzdHJpbmcKIHsKICAgICBCT09MIGlz
QXR0cmlidXRlZFN0cmluZyA9IFtzdHJpbmcgaXNLaW5kT2ZDbGFzczpbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGNsYXNzXV07CkBAIC01OTA0LDcgKzU5MjAsMTQgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVu
ZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVu
ZGUKICAgICBOU1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UgPSB7IE5TTm90Rm91bmQsIDAgfTsKICAg
ICBib29sIGlzRnJvbUlucHV0TWV0aG9kID0gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9y
KCktPmhhc0NvbXBvc2l0aW9uKCk7CiAKKyAgICBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+
IGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zOwogICAgIGlmIChpc0F0dHJpYnV0ZWRTdHJp
bmcpIHsKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICAgICAgVmVjdG9yPFRl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4gdGV4dEFsdGVybmF0aXZlczsKKyAgICAgICAgY29sbGVj
dERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXMoc3RyaW5nLCB0ZXh0QWx0ZXJuYXRpdmVzKTsKKyAg
ICAgICAgaWYgKHRleHRBbHRlcm5hdGl2ZXMuc2l6ZSgpKQorICAgICAgICAgICAgW1tzZWxmIF93
ZWJWaWV3XSBfZ2V0V2ViQ29yZURpY3RhdGlvbkFsdGVybmF0aXZlczpkaWN0YXRpb25BbHRlcm5h
dGl2ZUxvY2F0aW9ucyBmcm9tVGV4dEFsdGVybmF0aXZlczp0ZXh0QWx0ZXJuYXRpdmVzXTsKKyNl
bmRpZgogICAgICAgICAvLyBGSVhNRTogV2UgaWdub3JlIG1vc3QgYXR0cmlidXRlcyBmcm9tIHRo
ZSBzdHJpbmcsIHNvIGZvciBleGFtcGxlIGluc2VydGluZyBmcm9tIENoYXJhY3RlciBQYWxldHRl
IGxvc2VzIGZvbnQgYW5kIGdseXBoIHZhcmlhdGlvbiBkYXRhLgogICAgICAgICAvLyBJdCBkb2Vz
IG5vdCBsb29rIGxpa2UgYW55IGlucHV0IG1ldGhvZHMgZXZlciB1c2UgaW5zZXJ0VGV4dDogd2l0
aCBhdHRyaWJ1dGVzIG90aGVyIHRoYW4gTlNUZXh0SW5wdXRSZXBsYWNlbWVudFJhbmdlQXR0cmli
dXRlTmFtZS4KICAgICAgICAgdGV4dCA9IFtzdHJpbmcgc3RyaW5nXTsKQEAgLTU5NDMsNyArNTk2
NiwxMSBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcg
KnN0cmluZywgVmVjdG9yPENvbXBvc2l0aW9uVW5kZQogICAgIGlmICghY29yZUZyYW1lLT5lZGl0
b3IoKS0+aGFzQ29tcG9zaXRpb24oKSkgewogICAgICAgICAvLyBBbiBpbnNlcnRUZXh0OiBtaWdo
dCBiZSBoYW5kbGVkIGJ5IG90aGVyIHJlc3BvbmRlcnMgaW4gdGhlIGNoYWluIGlmIHdlIGRvbid0
IGhhbmRsZSBpdC4KICAgICAgICAgLy8gT25lIGV4YW1wbGUgaXMgc3BhY2UgYmFyIHRoYXQgcmVz
dWx0cyBpbiBzY3JvbGxpbmcgZG93biB0aGUgcGFnZS4KLSAgICAgICAgZXZlbnRIYW5kbGVkID0g
Y29yZUZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChldmVudFRleHQsIGV2ZW50KTsKKworICAg
ICAgICBpZiAoZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMuc2l6ZSgpKQorICAgICAgICAg
ICAgZXZlbnRIYW5kbGVkID0gY29yZUZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0RGljdGF0ZWRUZXh0
KGV2ZW50VGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGV2ZW50KTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgZXZlbnRIYW5kbGVkID0gY29yZUZyYW1lLT5lZGl0b3IoKS0+
aW5zZXJ0VGV4dChldmVudFRleHQsIGV2ZW50KTsKICAgICB9IGVsc2UgewogICAgICAgICBldmVu
dEhhbmRsZWQgPSB0cnVlOwogICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29t
cG9zaXRpb24oZXZlbnRUZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRl
eCA0ZmI1ZGY5NWRlZGQzYjViZTJmYjFlNDA2OWZiODE0OWFjMTk5NDQyLi5mNGM3NTU4ODFkNGNj
ZTM5YWQ5YWY4MDJjMzRiN2VmYjVkY2M4OWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKICNp
bXBvcnQgIldlYlZpZXdEYXRhLmgiCiAKKyNpbXBvcnQgIkRpY3RhdGlvbkFsdGVybmF0aXZlQ29u
dHJvbGxlci5oIgogI2ltcG9ydCAiRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbkludGVybmFsLmgiCiAj
aW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVJhbmdlSW50ZXJuYWwuaCIK
QEAgLTU0OTksMTYgKzU1MDAsNiBAQCBzdGF0aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVE
ZXNjRnJvbUpTVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGpzVmFsdQogCiAjZW5kaWYK
IAotI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX1NOT1dfTEVPUEFSRCkKLS0gKHZvaWQpaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OihO
U1N0cmluZyopcmVzdWx0Ci17Ci0gICAgV2ViRnJhbWUgKndlYkZyYW1lID0gW3NlbGYgX3NlbGVj
dGVkT3JNYWluRnJhbWVdOwotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHdlYkZyYW1lKTsK
LSAgICBpZiAoY29yZUZyYW1lKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5oYW5kbGVB
bHRlcm5hdGl2ZVRleHRVSVJlc3VsdChyZXN1bHQpOwotfQotI2VuZGlmCi0KIEBlbmQKIAogQGlt
cGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdVbmRvYWJsZUVkaXRpbmcpCkBAIC02MzY4LDYg
KzYzNTksMzMgQEAgc3RhdGljIHZvaWQgZ2xpYkNvbnRleHRJdGVyYXRpb25DYWxsYmFjayhDRlJ1
bkxvb3BPYnNlcnZlclJlZiwgQ0ZSdW5Mb29wQWN0aXZpdHkKIH0KICNlbmRpZgogCisjaWYgVVNF
KEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorLSAodm9pZCloYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZl
VGV4dDooTlNTdHJpbmcqKXRleHQKK3sKKyAgICBXZWJGcmFtZSAqd2ViRnJhbWUgPSBbc2VsZiBf
c2VsZWN0ZWRPck1haW5GcmFtZV07CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUod2ViRnJh
bWUpOworICAgIGlmIChjb3JlRnJhbWUpCisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmhh
bmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHRleHQpOworfQorI2VuZGlmCisKKyNpZiBVU0Uo
RElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKy0gKHZvaWQpX2dldFdlYkNvcmVEaWN0YXRpb25BbHRl
cm5hdGl2ZXM6KFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mKWFsdGVybmF0aXZlcyBmcm9t
VGV4dEFsdGVybmF0aXZlczooY29uc3QgVmVjdG9yPFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4m
KWFsdGVybmF0aXZlc1dpdGhSYW5nZQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYWx0
ZXJuYXRpdmVzV2l0aFJhbmdlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZSYgYWx0ZXJuYXRpdmVXaXRoUmFuZ2UgPSBhbHRlcm5hdGl2ZXNXaXRo
UmFuZ2VbaV07CisgICAgICAgIHVpbnRwdHJfdCBkaWN0YXRpb25Db250ZXh0ID0gX3ByaXZhdGUt
Pm1fZGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLT5hZGRBbHRlcm5hdGl2ZXMoYWx0ZXJu
YXRpdmVXaXRoUmFuZ2UuYWx0ZXJuYXRpdmUpOworICAgICAgICBpZiAoZGljdGF0aW9uQ29udGV4
dCkKKyAgICAgICAgICAgIGFsdGVybmF0aXZlcy5hcHBlbmQoRGljdGF0aW9uQWx0ZXJuYXRpdmUo
YWx0ZXJuYXRpdmVXaXRoUmFuZ2UucmFuZ2UubG9jYXRpb24sIGFsdGVybmF0aXZlV2l0aFJhbmdl
LnJhbmdlLmxlbmd0aCwgZGljdGF0aW9uQ29udGV4dCkpOworICAgIH0KK30KKworLSAodm9pZClf
cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOih1aW50cHRyX3QpZGljdGF0aW9uQ29udGV4dAor
eworICAgIF9wcml2YXRlLT5tX2RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci0+cmVtb3Zl
QWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpOworfQorI2VuZGlmCisKIC0gKE5TUG9pbnQp
X2NvbnZlcnRQb2ludEZyb21Sb290VmlldzooTlNQb2ludClwb2ludAogewogICAgIHJldHVybiBO
U01ha2VQb2ludChwb2ludC54LCBbc2VsZiBib3VuZHNdLnNpemUuaGVpZ2h0IC0gcG9pbnQueSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmggYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKaW5kZXggZWEyYmZjZjYwNzRl
OWE1MTFjM2MzZWFlMmRiNGZmNWU1ZWMzYzRmNi4uYmZlMTFjN2Q2ZDE0Njc2MTk3MWU0NTYxMTQ4
Nzg4YzE0ODBmZDdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaApA
QCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0ICJXZWJUeXBlc0ludGVybmFsLmgiCiAjaW1wb3J0
ICJXZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oIgorI2ltcG9ydCA8V2ViQ29yZS9B
bHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTGF5ZXJGbHVzaFNjaGVk
dWxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9MYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU3RyaW5nLmg+CkBAIC01OCw2ICs1OSw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIEBjbGFzcyBXZWJGdWxsU2NyZWVuQ29udHJvbGxlcjsKICNlbmRpZgog
CitjbGFzcyBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI7CisKIGV4dGVybiBCT09MIGFw
cGxpY2F0aW9uSXNUZXJtaW5hdGluZzsKIGV4dGVybiBpbnQgcGx1Z2luRGF0YWJhc2VDbGllbnRD
b3VudDsKIApAQCAtMjAwLDUgKzIwMyw5IEBAIHByaXZhdGU6CiAgICAgaW50IHZhbGlkYXRpb25N
ZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uOwogCiAgICAgZmxvYXQgY3VzdG9tRGV2aWNlU2NhbGVG
YWN0b3I7CisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBPd25QdHI8RGlj
dGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyPiBtX2RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJv
bGxlcjsKKyNlbmRpZgogfQogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3RGF0YS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0Rh
dGEubW0KaW5kZXggMGI4MTE3YTA5NzA2ZDViNmVjNGU2NDU3YzMzOThlNDc2MjZjNThiYS4uMjM0
NjgyZTVmMDNmNTE0MGMyNGRmODQ1OTJiYTAxYTg1ZTZmMDFjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbXBvcnQgIldl
YlZpZXdEYXRhLmgiCiAKKyNpbXBvcnQgIkRpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5o
IgogI2ltcG9ydCAiV2ViS2l0TG9nZ2luZy5oIgogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZUtleXNQ
cml2YXRlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CkBAIC0xMDAs
NiArMTAxLDEwIEBAIExheWVyRmx1c2hDb250cm9sbGVyOjpMYXllckZsdXNoQ29udHJvbGxlcihX
ZWJWaWV3KiB3ZWJWaWV3KQogCiAgICAgcGx1Z2luRGF0YWJhc2VDbGllbnRDb3VudCsrOwogCisj
aWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgbV9kaWN0YXRpb25BbHRlcm5hdGl2
ZUNvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVy
KTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDAyY2M1NTAxMDZiMDQ0ZmJjMTc3YzlmNTlh
MWY4M2Y1OTBkZTUwYjAuLjA4MjcxODc0YzNmZWI2N2EyNDRhYjk5YWJkN2ZiOTQ1NTIwZWMyZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtMzQs
MjAgKzM0LDI1IEBACiAjaW1wb3J0ICJXZWJUeXBlc0ludGVybmFsLmgiCiAKICNpZmRlZiBfX2Nw
bHVzcGx1cworI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRmluZE9wdGlvbnMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVLZXlib2FyZFVJTW9kZS5oPgogCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKLSAgICBjbGFzcyBFbGVtZW50OwotICAgIGNsYXNzIEZyYW1lOwotICAgIGNsYXNz
IEhpc3RvcnlJdGVtOwotICAgIGNsYXNzIEtVUkw7Ci0gICAgY2xhc3MgS2V5Ym9hcmRFdmVudDsK
LSAgICBjbGFzcyBQYWdlOwotICAgIGNsYXNzIFJlbmRlckJveDsKLSAgICBjbGFzcyBOb2RlOwor
Y2xhc3MgRWxlbWVudDsKK2NsYXNzIEV2ZW50OworY2xhc3MgRnJhbWU7CitjbGFzcyBIaXN0b3J5
SXRlbTsKK2NsYXNzIEtVUkw7CitjbGFzcyBLZXlib2FyZEV2ZW50OworY2xhc3MgUGFnZTsKK2Ns
YXNzIFJlbmRlckJveDsKK2NsYXNzIE5vZGU7CitzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmU7
CiB9CiAjZW5kaWYKIApAQCAtNTksNiArNjQsMjYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBX
ZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyBvcHRpb25zKTsK
IAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorT0JKQ19DTEFTUyBOU1RleHRBbHRl
cm5hdGl2ZXM7CisKK3N0cnVjdCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UgeworICAgIFRleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZShOU1RleHRBbHRlcm5hdGl2ZXMqIGFuQWx0ZXJuYXRpdmUsIE5T
UmFuZ2UgYVJhbmdlKQorICAgIDogcmFuZ2UoYVJhbmdlKQorICAgICwgYWx0ZXJuYXRpdmUoYW5B
bHRlcm5hdGl2ZSkKKyAgICB7IH0KKworICAgIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZShjb25z
dCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UmIGFub3RoZXIpCisgICAgOiByYW5nZShhbm90aGVy
LnJhbmdlKQorICAgICwgYWx0ZXJuYXRpdmUoYW5vdGhlci5hbHRlcm5hdGl2ZSkKKyAgICB7IH0K
KworICAgIE5TUmFuZ2UgcmFuZ2U7CisgICAgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4g
YWx0ZXJuYXRpdmU7Cit9OworCisjZW5kaWYKKwogQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3
RWRpdGluZ0V4dHJhcykKIC0gKEJPT0wpX3Nob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KERP
TVJhbmdlICopY3VycmVudFJhbmdlIHRvRE9NUmFuZ2U6KERPTVJhbmdlICopcHJvcG9zZWRSYW5n
ZSBhZmZpbml0eTooTlNTZWxlY3Rpb25BZmZpbml0eSlzZWxlY3Rpb25BZmZpbml0eSBzdGlsbFNl
bGVjdGluZzooQk9PTClmbGFnOwogQGVuZApAQCAtOTUsNiArMTIwLDE1IEBAIFdlYkNvcmU6OkZp
bmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpOwogLSAodm9pZClf
c2NoZWR1bGVHbGliQ29udGV4dEl0ZXJhdGlvbnM7CiAjZW5kaWYKIAorI2lmIFVTRShBVVRPQ09S
UkVDVElPTl9QQU5FTCkKKy0gKHZvaWQpaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6KE5T
U3RyaW5nKil0ZXh0OworI2VuZGlmCisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykK
Ky0gKHZvaWQpX2dldFdlYkNvcmVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6KFZlY3RvcjxXZWJDb3Jl
OjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4mKWFsdGVybmF0aXZlcyBmcm9tVGV4dEFsdGVybmF0aXZl
czooY29uc3QgVmVjdG9yPFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mKWFsdGVybmF0aXZlc1dp
dGhSYW5nZTsKKy0gKHZvaWQpX3JlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlczoodWludHB0cl90
KWRpY3RhdGlvbkNvbnRleHQ7CisjZW5kaWYKKwogQGVuZAogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRleCAwMmY3YmNjNDU2N2Q3NjVjN2Jk
M2E0MzRmMjU3MjZhNjEwM2UzMTMwLi44Mjg5YjEyYzE4OGJlZGFmMDUxMDQ2ZmE2ODIyMjc1MmVl
OThkZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCkBA
IC02ODcsOSArNjg3LDYgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAtICh2
b2lkKXNldEF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ6KEJPT0wpZmxhZzsKIC0g
KHZvaWQpdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uOihpZClzZW5kZXI7CiAjZW5k
aWYKLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElO
R19PTl9TTk9XX0xFT1BBUkQpCi0tICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDoo
TlNTdHJpbmcqKXJlc3VsdDsKLSNlbmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdl
YlZpZXdFZGl0aW5nSW5NYWlsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9Bcmd1bWVudERlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9Bcmd1bWVudERlY29kZXIuY3BwCmluZGV4IGY0OTA3NmE2ZGMzMDY5NmEzYzQ4Nzg4MjU2
Nzg3NTk0MDVjMTdhNWUuLjVhYzc4NmQxMTVlNDdmYWEzNTczMTYwZThmZWM5YTdlYTU5ZDkzNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNv
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVj
b2Rlci5jcHAKQEAgLTIxMSw2ICsyMTEsMTYgQEAgYm9vbCBBcmd1bWVudERlY29kZXI6OmRlY29k
ZURvdWJsZShkb3VibGUmIHJlc3VsdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBBcmd1
bWVudERlY29kZXI6OmRlY29kZVBvaW50ZXIodWludHB0cl90JiByZXN1bHQpCit7CisgICAgaWYg
KCFhbGlnbkJ1ZmZlclBvc2l0aW9uKHNpemVvZihyZXN1bHQpLCBzaXplb2YocmVzdWx0KSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXN1bHQgPSAqcmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3QqPihtX2J1ZmZlclBvcyk7CisgICAgbV9idWZmZXJQb3MgKz0gc2l6ZW9mKHJl
c3VsdCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgQXJndW1lbnREZWNvZGVyOjpyZW1v
dmVBdHRhY2htZW50KEF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCiB7CiAgICAgaWYgKG1fYXR0YWNo
bWVudHMuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9Bcmd1bWVudERlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
QXJndW1lbnREZWNvZGVyLmgKaW5kZXggNTNmOWY4YzZjMGM1ZTIzNTkwM2E1NTMyNDU1OWI0ZDdi
ZTkxOTMwMi4uMTRiYzQzYTA3ZWFmODJhODBjMjRhOGU3YTRhNTg5MGQ0OTE1Y2I3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oCkBA
IC02MCw2ICs2MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGRlY29kZUludDY0KGludDY0X3QmKTsK
ICAgICBib29sIGRlY29kZUZsb2F0KGZsb2F0Jik7CiAgICAgYm9vbCBkZWNvZGVEb3VibGUoZG91
YmxlJik7CisgICAgYm9vbCBkZWNvZGVQb2ludGVyKHVpbnRwdHJfdCYpOwogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gYm9vbCBkZWNvZGVFbnVtKFQmIHJlc3VsdCkKICAgICB7CkBAIC0xNjIs
NiArMTYzLDExIEBAIHRlbXBsYXRlPD4gaW5saW5lIGJvb2wgQXJndW1lbnREZWNvZGVyOjpkZWNv
ZGUoZG91YmxlJiBuKQogICAgIHJldHVybiBkZWNvZGVEb3VibGUobik7CiB9CiAKK3RlbXBsYXRl
PD4gaW5saW5lIGJvb2wgQXJndW1lbnREZWNvZGVyOjpkZWNvZGUodWludHB0cl90JiBuKQorewor
ICAgIHJldHVybiBkZWNvZGVQb2ludGVyKG4pOworfQorCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBD
CiAKICNlbmRpZiAvLyBBcmd1bWVudERlY29kZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwCmluZGV4IDY0YzIwNDhjZjMyMDI5
MmEzMmFmY2RhNjkxNGY1OTZmNDIzZDhhNTkuLjFiYmI5YzUxNjg0MzllY2ExYjJjMDc1MTViN2U5
NjI5NGZhZDUxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
QXJndW1lbnRFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0FyZ3VtZW50RW5jb2Rlci5jcHAKQEAgLTE2NCw2ICsxNjQsMTMgQEAgdm9pZCBBcmd1bWVudEVu
Y29kZXI6OmVuY29kZURvdWJsZShkb3VibGUgbikKICAgICAqcmVpbnRlcnByZXRfY2FzdDxkb3Vi
bGUqPihidWZmZXIpID0gbjsKIH0KIAordm9pZCBBcmd1bWVudEVuY29kZXI6OmVuY29kZVBvaW50
ZXIodWludHB0cl90IG4pCit7CisgICAgdWludDhfdCogYnVmZmVyID0gZ3JvdyhzaXplb2Yobiks
IHNpemVvZihuKSk7CisgICAgCisgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Kj4oYnVm
ZmVyKSA9IG47Cit9CisKIHZvaWQgQXJndW1lbnRFbmNvZGVyOjphZGRBdHRhY2htZW50KGNvbnN0
IEF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCiB7CiAgICAgbV9hdHRhY2htZW50cy5hcHBlbmQoYXR0
YWNobWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Fy
Z3VtZW50RW5jb2Rlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVu
dEVuY29kZXIuaAppbmRleCBiNzM0ZDc1MzE5YTk0MjVhMzkzZmQ5N2NiNjgxYjkzNGJhMDcxNTJm
Li5lYWU4Y2NkZjg4NjRjZDlmNjFkNjI3ZTA1ZjkyYzVlMDYxMzFiOTJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmgKQEAgLTUzLDYg
KzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5jb2RlSW50NjQoaW50NjRfdCk7CiAgICAgdm9p
ZCBlbmNvZGVGbG9hdChmbG9hdCk7CiAgICAgdm9pZCBlbmNvZGVEb3VibGUoZG91YmxlKTsKKyAg
ICB2b2lkIGVuY29kZVBvaW50ZXIodWludHB0cl90KTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHZvaWQgZW5jb2RlRW51bShUIHQpCiAgICAgewpAQCAtMTMwLDYgKzEzMSwxMSBAQCB0ZW1w
bGF0ZTw+IGlubGluZSB2b2lkIEFyZ3VtZW50RW5jb2Rlcjo6ZW5jb2RlKGNvbnN0IGRvdWJsZSYg
bikKICAgICBlbmNvZGVEb3VibGUobik7CiB9CiAKK3RlbXBsYXRlPD4gaW5saW5lIHZvaWQgQXJn
dW1lbnRFbmNvZGVyOjplbmNvZGUoY29uc3QgdWludHB0cl90JiBuKQoreworICAgIGVuY29kZVBv
aW50ZXIobik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKIAogI2VuZGlmIC8vIEFyZ3Vt
ZW50RW5jb2Rlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCmluZGV4IGM2YTE2NzNiNGNkNDU0MjQxMzkwZmJhOWU2YjhiNTU3YjJjMjUwZDMu
LjdjZTdiYTUxYzAxZjBhNjRhMTEwODEzNTJkNjJkN2ZiMzk2ZTBmODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9D
dXJzb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlRGV0YWlscy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdT
ZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVDaG9vc2VyLmg+CkBAIC01MzEsNiArNTMyLDI0IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxE
YXRhYmFzZURldGFpbHM+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBEYXRhYmFz
ZURlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxEaWN0YXRpb25B
bHRlcm5hdGl2ZT46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IERpY3Rh
dGlvbkFsdGVybmF0aXZlJiBkaWN0YXRpb25BbHRlcm5hdGl2ZSkKK3sKKyAgICBlbmNvZGVyLT5l
bmNvZGUoZGljdGF0aW9uQWx0ZXJuYXRpdmUucmFuZ2VTdGFydCk7CisgICAgZW5jb2Rlci0+ZW5j
b2RlKGRpY3RhdGlvbkFsdGVybmF0aXZlLnJhbmdlTGVuZ3RoKTsKKyAgICBlbmNvZGVyLT5lbmNv
ZGUoZGljdGF0aW9uQWx0ZXJuYXRpdmUuZGljdGF0aW9uQ29udGV4dCk7Cit9CisKK2Jvb2wgQXJn
dW1lbnRDb2RlcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT46OmRlY29kZShBcmd1bWVudERlY29kZXIq
IGRlY29kZXIsIERpY3RhdGlvbkFsdGVybmF0aXZlJiBkaWN0YXRpb25BbHRlcm5hdGl2ZSkKK3sK
KyAgICBpZiAoIWRlY29kZXItPmRlY29kZShkaWN0YXRpb25BbHRlcm5hdGl2ZS5yYW5nZVN0YXJ0
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRpY3Rh
dGlvbkFsdGVybmF0aXZlLnJhbmdlTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKGRpY3RhdGlvbkFsdGVybmF0aXZlLmRpY3RhdGlvbkNvbnRl
eHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIAogdm9p
ZCBBcmd1bWVudENvZGVyPEZpbGVDaG9vc2VyU2V0dGluZ3M+OjplbmNvZGUoQXJndW1lbnRFbmNv
ZGVyKiBlbmNvZGVyLCBjb25zdCBGaWxlQ2hvb3NlclNldHRpbmdzJiBzZXR0aW5ncykKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAwMzNl
MTc5NGNiYzI3ZDhjZDc5ODk4MDZiYWMyM2I4ODE5MmIzZGQ4Li5kMDI5ZTY1ZTU4ZDIzODcwZWY0
OGNiMTlmOWMyZTIyYjRmMGM5OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCkBAIC01MCw2ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
ICAgICBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmU7CisgICAgc3RydWN0IERpY3RhdGlvbkFs
dGVybmF0aXZlOwogICAgIHN0cnVjdCBEcmFnU2Vzc2lvbjsKICAgICBzdHJ1Y3QgRmlsZUNob29z
ZXJTZXR0aW5nczsKICAgICBzdHJ1Y3QgR3JhbW1hckRldGFpbDsKQEAgLTIwMyw2ICsyMDQsMTEg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpEYXRhYmFzZURldGFp
bHM+IHsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6
RGF0YWJhc2VEZXRhaWxzJik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlJik7
CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkRpY3Rh
dGlvbkFsdGVybmF0aXZlJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3M+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOwog
ICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpGaWxlQ2hv
b3NlclNldHRpbmdzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
UGFnZUNsaWVudEltcGwuaAppbmRleCBhOWQ3YTlmYTk0NmM5N2M4Mzg3MzljYjA2ZTRkMmUyNDQ4
ZjUwYjZhLi5jMmM1Mzg3NWU0NjQ0MTYyZDE3NGMyNDAyYjI0NjRjMzkyZDY0YTUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKQEAg
LTM1LDYgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIERpY3RhdGlvbkFs
dGVybmF0aXZlQ29udHJvbGxlcjsKIGNsYXNzIEZpbmRJbmRpY2F0b3JXaW5kb3c7CiAKIGNsYXNz
IFBhZ2VDbGllbnRJbXBsIDogcHVibGljIFBhZ2VDbGllbnQgewpAQCAtMTI5LDExICsxMzAsMTcg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgV0tWaWV3KiB3a1ZpZXcoKSBjb25zdCB7IHJldHVy
biBtX3drVmlldzsgfQogCisgICAgdmlydHVhbCB1aW50NjRfdCBhZGREaWN0YXRpb25BbHRlcm5h
dGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnRwdHJfdCBkaWN0YXRpb25Db250
ZXh0KTsKKwogICAgIFdLVmlldyogbV93a1ZpZXc7CiAgICAgUmV0YWluUHRyPFdLRWRpdG9yVW5k
b1RhcmdldE9iakM+IG1fdW5kb1RhcmdldDsKICNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9X
X0xFT1BBUkQpCiAgICAgQ29ycmVjdGlvblBhbmVsIG1fY29ycmVjdGlvblBhbmVsOwogI2VuZGlm
CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgT3duUHRyPERpY3RhdGlvbkFs
dGVybmF0aXZlQ29udHJvbGxlcj4gbV9kaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI7Cisj
ZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQppbmRleCA3MmVhMzQ5M2UxYTY3
OTQzZDU2ZTdiNTVlOTQ3Y2IzMDlkNWMzZjg0Li4xMTlhYjJmZWY1MjczNTZiNmVkZmMyMzU5YjFh
YjM0ZTY4NjgwMGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9QYWdlQ2xpZW50SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9QYWdlQ2xpZW50SW1wbC5tbQpAQCAtMjYsNyArMjYsMTEgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiUGFnZUNsaWVudEltcGwuaCIKIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJO
QVRJVkVTKQorI2ltcG9ydCA8QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgorI2VuZGlmCiAj
aW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCisjaW1wb3J0ICJEaWN0YXRpb25BbHRlcm5hdGl2ZUNv
bnRyb2xsZXIuaCIKICNpbXBvcnQgIkRpY3Rpb25hcnlQb3B1cEluZm8uaCIKICNpbXBvcnQgIkZp
bmRJbmRpY2F0b3IuaCIKICNpbXBvcnQgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKQEAgLTEy
Miw2ICsxMjYsOSBAQCBQYXNzT3duUHRyPFBhZ2VDbGllbnRJbXBsPiBQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlKFdLVmlldyogd2tWaWV3KQogUGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKFdL
Vmlldyogd2tWaWV3KQogICAgIDogbV93a1ZpZXcod2tWaWV3KQogICAgICwgbV91bmRvVGFyZ2V0
KEFkb3B0TlMsIFtbV0tFZGl0b3JVbmRvVGFyZ2V0T2JqQyBhbGxvY10gaW5pdF0pCisjaWYgVVNF
KERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgLCBtX2RpY3RhdGlvbkFsdGVybmF0aXZlQ29u
dHJvbGxlcihhZG9wdFB0cihuZXcgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyKSkKKyNl
bmRpZgogewogfQogCkBAIC0yMDksMTAgKzIxNiwxMyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpw
cm9jZXNzRGlkQ3Jhc2goKQogewogICAgIFttX3drVmlldyBfcHJvY2Vzc0RpZENyYXNoXTsKIH0K
LSAgICAKKwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZUNsb3NlZCgpCiB7CiAgICAgW21fd2tW
aWV3IF9wYWdlQ2xvc2VkXTsKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBt
X2RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci0+Y2xlYXIoKTsKKyNlbmRpZgogfQogCiB2
b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRSZWxhdW5jaFByb2Nlc3MoKQpAQCAtNTI5LDQgKzUzOSwy
MCBAQCBib29sIFBhZ2VDbGllbnRJbXBsOjpleGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcihj
b25zdCBTdHJpbmcmIHNlbGVjdG9yU3RyaW5nKQogICAgIHJldHVybiBbbV93a1ZpZXcgX2V4ZWN1
dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yOk5TU2VsZWN0b3JGcm9tU3RyaW5nKHNlbGVjdG9yU3Ry
aW5nKV07CiB9CiAKK3VpbnQ2NF90IFBhZ2VDbGllbnRJbXBsOjphZGREaWN0YXRpb25BbHRlcm5h
dGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mIGFsdGVybmF0aXZlcykK
K3sKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICByZXR1cm4gbV9kaWN0YXRp
b25BbHRlcm5hdGl2ZUNvbnRyb2xsZXItPmFkZEFsdGVybmF0aXZlcyhhbHRlcm5hdGl2ZXMpOwor
I2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpy
ZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludHB0cl90IGRpY3RhdGlvbkNvbnRleHQpCit7
CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgbV9kaWN0YXRpb25BbHRlcm5h
dGl2ZUNvbnRyb2xsZXItPnJlbW92ZUFsdGVybmF0aXZlcyhkaWN0YXRpb25Db250ZXh0KTsKKyNl
bmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCBjMzJmOTAwNDg5OTRkYmRiZWE0MzUwNzQyMzdhOTkx
OTEzNjFhMTk5Li42MjA5YjU3YzI3MjY5NDFjMTg0NDZmNjY0OWRhYjE0Y2JkNWI3YzhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0yNiw2ICsyNiwx
MiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS1ZpZXcuaCIKIAorI2ltcG9ydCAi
VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmgiCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElW
RVMpCisjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CisjaW1wb3J0IDxBcHBL
aXQvTlNBdHRyaWJ1dGVkU3RyaW5nLmg+CisjZW5kaWYKKwogI2ltcG9ydCAiQXR0cmlidXRlZFN0
cmluZy5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQ
cm94eUltcGwuaCIKQEAgLTExNTEsNiArMTE1NywyMiBAQCBzdGF0aWMgY29uc3Qgc2hvcnQga0lP
SElERXZlbnRUeXBlU2Nyb2xsID0gNjsKICAgICBbc2VsZiBpbnNlcnRUZXh0OnN0cmluZyByZXBs
YWNlbWVudFJhbmdlOk5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApXTsKIH0KIAorI2lmIFVTRShE
SUNUQVRJT05fQUxURVJOQVRJVkVTKQorc3RhdGljIHZvaWQgY29sbGVjdERpY3RhdGlvblRleHRB
bHRlcm5hdGl2ZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2U+JiBhbHRlcm5hdGl2ZXMpIHsKKyAgICBOU1JhbmdlIGVmZmVjdGl2ZVJh
bmdlID0gTlNNYWtlUmFuZ2UoMCwgMCk7CisgICAgTlNVSW50ZWdlciBsZW5ndGggPSBbc3RyaW5n
IGxlbmd0aF07CisgICAgZG8geworICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBb
c3RyaW5nIGF0dHJpYnV0ZXNBdEluZGV4OmVmZmVjdGl2ZVJhbmdlLmxvY2F0aW9uIGVmZmVjdGl2
ZVJhbmdlOiZlZmZlY3RpdmVSYW5nZV07CisgICAgICAgIGlmICghYXR0cmlidXRlcykKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBOU1RleHRBbHRlcm5hdGl2ZXMgKnRleHRBbHRlcm5hdGl2
ZXMgPSBbYXR0cmlidXRlcyBvYmplY3RGb3JLZXk6TlNUZXh0QWx0ZXJuYXRpdmVzQXR0cmlidXRl
TmFtZV07CisgICAgICAgIGlmICh0ZXh0QWx0ZXJuYXRpdmVzKQorICAgICAgICAgICAgYWx0ZXJu
YXRpdmVzLmFwcGVuZChUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UodGV4dEFsdGVybmF0aXZlcywg
ZWZmZWN0aXZlUmFuZ2UpKTsKKyAgICAgICAgZWZmZWN0aXZlUmFuZ2UubG9jYXRpb24gPSBOU01h
eFJhbmdlKGVmZmVjdGl2ZVJhbmdlKTsKKyAgICB9IHdoaWxlIChlZmZlY3RpdmVSYW5nZS5sb2Nh
dGlvbiA8IGxlbmd0aCk7Cit9CisjZW5kaWYKKwogLSAodm9pZClpbnNlcnRUZXh0OihpZClzdHJp
bmcgcmVwbGFjZW1lbnRSYW5nZTooTlNSYW5nZSlyZXBsYWNlbWVudFJhbmdlCiB7CiAgICAgQk9P
TCBpc0F0dHJpYnV0ZWRTdHJpbmcgPSBbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TQXR0cmlidXRl
ZFN0cmluZyBjbGFzc11dOwpAQCAtMTE2Nyw3ICsxMTg5LDEyIEBAIHN0YXRpYyBjb25zdCBzaG9y
dCBrSU9ISURFdmVudFR5cGVTY3JvbGwgPSA2OwogICAgIE5TU3RyaW5nICp0ZXh0OwogICAgIGJv
b2wgaXNGcm9tSW5wdXRNZXRob2QgPSBfZGF0YS0+X3BhZ2UtPmVkaXRvclN0YXRlKCkuaGFzQ29t
cG9zaXRpb247CiAKKyAgICBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiBkaWN0YXRp
b25BbHRlcm5hdGl2ZXM7CisKICAgICBpZiAoaXNBdHRyaWJ1dGVkU3RyaW5nKSB7CisjaWYgVVNF
KERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgICAgIGNvbGxlY3REaWN0YXRpb25UZXh0QWx0
ZXJuYXRpdmVzKHN0cmluZywgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyNlbmRpZgogICAgICAg
ICAvLyBGSVhNRTogV2UgaWdub3JlIG1vc3QgYXR0cmlidXRlcyBmcm9tIHRoZSBzdHJpbmcsIHNv
IGZvciBleGFtcGxlIGluc2VydGluZyBmcm9tIENoYXJhY3RlciBQYWxldHRlIGxvc2VzIGZvbnQg
YW5kIGdseXBoIHZhcmlhdGlvbiBkYXRhLgogICAgICAgICB0ZXh0ID0gW3N0cmluZyBzdHJpbmdd
OwogICAgIH0gZWxzZQpAQCAtMTE4Nyw3ICsxMjE0LDExIEBAIHN0YXRpYyBjb25zdCBzaG9ydCBr
SU9ISURFdmVudFR5cGVTY3JvbGwgPSA2OwogCiAgICAgU3RyaW5nIGV2ZW50VGV4dCA9IHRleHQ7
CiAgICAgZXZlbnRUZXh0LnJlcGxhY2UoTlNCYWNrVGFiQ2hhcmFjdGVyLCBOU1RhYkNoYXJhY3Rl
cik7IC8vIHNhbWUgdGhpbmcgaXMgZG9uZSBpbiBLZXlFdmVudE1hYy5tbSBpbiBXZWJDb3JlCi0g
ICAgYm9vbCBldmVudEhhbmRsZWQgPSBfZGF0YS0+X3BhZ2UtPmluc2VydFRleHQoZXZlbnRUZXh0
LCByZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKHJlcGxhY2VtZW50UmFuZ2Up
KTsKKyAgICBib29sIGV2ZW50SGFuZGxlZDsKKyAgICBpZiAoZGljdGF0aW9uQWx0ZXJuYXRpdmVz
LnNpemUoKSkKKyAgICAgICAgZXZlbnRIYW5kbGVkID0gX2RhdGEtPl9wYWdlLT5pbnNlcnREaWN0
YXRlZFRleHQoZXZlbnRUZXh0LCByZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uLCBOU01heFJhbmdl
KHJlcGxhY2VtZW50UmFuZ2UpLCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgIGVsc2UKKyAg
ICAgICAgZXZlbnRIYW5kbGVkID0gX2RhdGEtPl9wYWdlLT5pbnNlcnRUZXh0KGV2ZW50VGV4dCwg
cmVwbGFjZW1lbnRSYW5nZS5sb2NhdGlvbiwgTlNNYXhSYW5nZShyZXBsYWNlbWVudFJhbmdlKSk7
CiAKICAgICBpZiAocGFyYW1ldGVycykKICAgICAgICAgcGFyYW1ldGVycy0+ZXZlbnRJbnRlcnBy
ZXRhdGlvbkhhZFNpZGVFZmZlY3RzIHw9IGV2ZW50SGFuZGxlZDsKQEAgLTI4NTYsOSArMjg4Nyw5
IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGgoTlNTdHJp
bmcgKnBhdGgpCiAgICAgcmV0dXJuIF9kYXRhLT5fc3BlbGxDaGVja2VyRG9jdW1lbnRUYWc7CiB9
CiAKLS0gKHZvaWQpaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OihOU1N0cmluZyopcmVzdWx0
CistICh2b2lkKWhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0OihOU1N0cmluZyopdGV4dAog
ewotICAgIF9kYXRhLT5fcGFnZS0+aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0
KTsKKyAgICBfZGF0YS0+X3BhZ2UtPmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHRleHQp
OwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3SW50ZXJuYWwuaAppbmRleCA2YjZlYjZiZjQxZDE5MTRkM2Q2ZDA2ZjBmMjMyNjMwYzM5MmI4
MDViLi40M2M2ZTJiYWFhMDUwZGU0YjYyMDU4ODRkNjJlN2EyMzE2MTM1ZThjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKQEAgLTk2
LDYgKzk2LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAtICh2b2lkKV9jYWNoZVdpbmRvd0JvdHRv
bUNvcm5lclJlY3Q7CiAKIC0gKE5TSW50ZWdlcilzcGVsbENoZWNrZXJEb2N1bWVudFRhZzsKLS0g
KHZvaWQpaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OihOU1N0cmluZyopcmVzdWx0OworLSAo
dm9pZCloYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDooTlNTdHJpbmcqKXRleHQ7CiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDdjODE1MTAxZGZhNzJk
ZDQ5M2E5NDA2OWVmYTUyMjVkZDFmMjc4MzUuLjI3YjcwZTk0ODhhMjdiMWMyN2Q5MjFjOTgwY2Fi
MDhiZWY0ODQ3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMzcs
NiArMzcsNyBAQAogI2luY2x1ZGUgIlBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZS5oIgogCiBP
QkpDX0NMQVNTIFdLVmlldzsKK09CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogI2VuZGlm
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5Miw2ICsxOTMsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UoaW50MzJfdCBu
ZXdTdHlsZSkgPSAwOwogICAgIAogICAgIHZpcnR1YWwgV0tWaWV3KiB3a1ZpZXcoKSBjb25zdCA9
IDA7CisKKyAgICB2aXJ0dWFsIHVpbnQ2NF90IGFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyhjb25z
dCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnRwdHJfdCBkaWN0YXRpb25Db250ZXh0KSA9
IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTY3JvbGxiYXJzRm9yTWFp
bkZyYW1lKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCAyZWRhMDhjZTFhNTlmNWRjZWVkYzA0N2E2NmY2NDM0YWU5ZjdlYTEzLi5kOGVm
OTlkZTdjYjdhZjVhYzQzYzQ2OWNiYWQ5NDkwMjc1MzI3ZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzc1NCw2ICszNzU0LDE0IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmIHJl
c3VsdCkKICAgICAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVB
bHRlcm5hdGl2ZVRleHRVSVJlc3VsdChyZXN1bHQpLCBtX3BhZ2VJRCwgMCk7CiAjZW5kaWYKIH0K
KworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQordm9pZCBXZWJQYWdlUHJveHk6OnJl
bW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50cHRyX3QgZGljdGF0aW9uQ29udGV4dCkKK3sK
KyAgICBtX3BhZ2VDbGllbnQtPnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyhkaWN0YXRpb25D
b250ZXh0KTsKK30KKyNlbmRpZgorCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCAyNWU2MzlhMDI3YWM3MGFlZjMxZmU0MDc2Mjk3OTc4Mzc0MzFkNjEzLi5kMGY4MDkxMmNhMzFk
OGQ4ZDYyYzJlYTk3NjY0NDI5YjUwODIwMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJv
eHkuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJV
SUNsaWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ1Nl
c3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KQEAgLTEwNiw2ICsx
MDcsNyBAQCBjbGFzcyBRUXVpY2tOZXR3b3JrUmVwbHk7CiAjZWxzZQogY2xhc3MgV0tWaWV3Owog
I2VuZGlmCitzdHJ1Y3QgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlOwogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShHVEspCkBAIC0zNDUsNiArMzQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29uZmly
bUNvbXBvc2l0aW9uKCk7CiAgICAgdm9pZCBjYW5jZWxDb21wb3NpdGlvbigpOwogICAgIGJvb2wg
aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VT
dGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCk7CisgICAgYm9vbCBpbnNlcnREaWN0
YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3Rh
cnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQsIGNvbnN0IFZlY3RvcjxUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2U+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogICAgIHZvaWQgZ2V0TWFy
a2VkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKTsKICAgICB2b2lk
IGdldFNlbGVjdGVkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKTsK
ICAgICB2b2lkIGdldEF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UodWludDY0X3QgbG9jYXRp
b24sIHVpbnQ2NF90IGxlbmd0aCwgQXR0cmlidXRlZFN0cmluZyYpOwpAQCAtODcxLDYgKzg3NCw5
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihpbnQzMl90
IHJlYXNvbiwgU3RyaW5nJiByZXN1bHQpOwogICAgIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25S
ZXNwb25zZShpbnQzMl90IHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CiAjZW5kaWYgLy8gIWRlZmluZWQo
QlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVT
KQorICAgIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnRwdHJfdCBkaWN0YXRp
b25Db250ZXh0KTsKKyNlbmRpZgogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogICAgIHZvaWQg
Y2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBjODUwNzYwMTg5ZTQ3MDc2NzFj
ZDhmMWYxZTkxZmRkNmU2NzdlYjcyLi5mOGY3NjMxM2Y5N2E3YmMwZDEwNjQ4NTA2MDFiNjU4OTNh
NGZmMjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KQEAgLTI3Niw2ICsyNzYsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5
IHsKICAgICBSZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9uc2VUeXBl
LCBTdHJpbmcgcmVwbGFjZWRTdHJpbmcsIFN0cmluZyByZXBsYWNlbWVudFN0cmluZyk7CiAjZW5k
aWYKIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIFJlbW92ZURpY3RhdGlv
bkFsdGVybmF0aXZlcyh1aW50cHRyX3QgZGljdGF0aW9uQ29udGV4dCk7CisjZW5kaWYKKwogI2lm
IFBMQVRGT1JNKFdJTikKICAgICAjIFdpbmRvd3MgNyBHZXN0dXJlIE1lc3NhZ2VzCiAgICAgU2V0
R2VzdHVyZVJlYWNoZWRTY3JvbGxpbmdMaW1pdChib29sIGxpbWl0UmVhY2hlZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0KaW5kZXggOTQxNzFm
NzM3YWIzNmQ1ZmZkYTU4NzY3OGQyZmQ4NjAwNDU3NDQ1OC4uMDk2NDFjZDA4M2JhZDE0YWUzZTZi
NDBiZjA0NjAzYzM2YWFjYmY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9Db3JyZWN0aW9uUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9Db3JyZWN0aW9uUGFuZWwubW0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIENvcnJlY3Rpb25Q
YW5lbDo6aGFuZGxlQWNjZXB0ZWRSZXBsYWNlbWVudChOU1N0cmluZyogYWNjZXB0ZWRSZXBsYWNl
bWVudCwgTgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBbbV92aWV3LmdldCgpIGhhbmRs
ZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDphY2NlcHRlZFJlcGxhY2VtZW50XTsKKyAgICBbbV92aWV3
LmdldCgpIGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0OmFjY2VwdGVkUmVwbGFjZW1lbnRd
OwogICAgIG1fdmlldy5jbGVhcigpOwogICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQogICAg
ICAgICBtX3Jlc3VsdEZvckRpc21pc3NhbC5hZG9wdE5TKFthY2NlcHRlZFJlcGxhY2VtZW50IGNv
cHldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvRGljdGF0aW9u
QWx0ZXJuYXRpdmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0Rp
Y3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyMzdjMmIxMmU4OWU2
ZDVmOTU5ZDFiYmY3YjIzNWE1N2FjY2I2MjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL0RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oCkBAIC0w
LDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERpY3RhdGlvbkFsdGVybmF0aXZlQ29u
dHJvbGxlcl9oCisjZGVmaW5lIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcl9oCisKKyNp
bmNsdWRlIDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKK09CSkNfQ0xB
U1MgTlNUZXh0QWx0ZXJuYXRpdmVzOworT0JKQ19DTEFTUyBXS1ZpZXc7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlcjsKKworY2xhc3MgRGlj
dGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyIHsKK3B1YmxpYzoKKyAgICBEaWN0YXRpb25BbHRl
cm5hdGl2ZUNvbnRyb2xsZXIoKSB7IH0KKyAgICAvLyBSZXR1cm5zIGEgZGljdGF0aW9uIGNvbnRl
eHQgSUQuCisgICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1Rl
eHRBbHRlcm5hdGl2ZXM+Jik7CisgICAgdm9pZCBjbGVhcigpOworICAgIHZvaWQgc2hvd0FsdGVy
bmF0aXZlcyhXS1ZpZXcqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZE
aWN0YXRlZFN0cmluZywgdWludHB0cl90IGRpY3RhdGlvbkNvbnRleHQpOworICAgIHZvaWQgZGlz
bWlzc0FsdGVybmF0aXZlcygpOworICAgIHZvaWQgcmVtb3ZlQWx0ZXJuYXRpdmVzKHVpbnRwdHJf
dCBkaWN0YXRpb25Db250ZXh0KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGhhbmRsZUFjY2VwdGVk
QWx0ZXJuYXRpdmUoTlNTdHJpbmcqIGFjY2VwdGVkQWx0ZXJuYXRpdmUsIHVpbnRwdHJfdCBkaWN0
YXRpb25Db250ZXh0LCBOU1RleHRBbHRlcm5hdGl2ZXMqKTsKKworICAgIGNsYXNzIERpY3RhdGlv
bkNvbnRleHRDb250cm9sbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIERpY3RhdGlvbkNvbnRl
eHRDb250cm9sbGVyKCkgeyB9CisgICAgICAgIHVpbnQ2NF90IGFkZEFsdGVybmF0aXZlcyhjb25z
dCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpOworICAgICAgICB2b2lkIGNsZWFyKCk7
CisgICAgICAgIE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVzRm9yRGljdGF0aW9uQ29u
dGV4dCh1aW50cHRyX3QgZGljdGF0aW9uQ29udGV4dCk7CisgICAgICAgIHZvaWQgcmVtb3ZlQWx0
ZXJuYXRpdmVzRm9yRGljdGF0aW9uQ29udGV4dCh1aW50cHRyX3QgZGljdGF0aW9uQ29udGV4dCk7
CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50cHRyX3QgaW52YWxpZENvbnRleHQgPSAwOworICAg
IHByaXZhdGU6CisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50cHRyX3QsIFJldGFpblB0cjxO
U1RleHRBbHRlcm5hdGl2ZXM+ID4gSGFzaE1hcFR5cGU7CisgICAgICAgIEhhc2hNYXBUeXBlIG1f
YWx0ZXJuYXRpdmVzT2JqZWN0TWFwOworICAgIH07CisKKyAgICBEaWN0YXRpb25Db250ZXh0Q29u
dHJvbGxlciBtX2NvbnRleHRDb250cm9sbGVyOworICAgIFJldGFpblB0cjxXS1ZpZXc+IG1fdmll
dzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKKyNlbmRpZiAvLyBEaWN0
YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9EaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jODg5NjA5NzU1NzBmMTg4YWY3ZmMxOWI1MWQ4NGQwNTRlMTUyZGQ1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9EaWN0YXRpb25BbHRl
cm5hdGl2ZUNvbnRyb2xsZXIubW0KQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkRpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5o
IgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisjaW1wb3J0IDxBcHBLaXQvTlNT
cGVsbENoZWNrZXIuaD4KKyNpbXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4KKyNp
bXBvcnQgIldLVmlld0ludGVybmFsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKwordWludDY0X3QgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9s
bGVyOjpEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlcjo6YWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJl
dGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBhbHRlcm5hdGl2ZXMpCit7CisgICAgdWludDY0
X3QgY29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihhbHRlcm5hdGl2ZXMuZ2V0
KCkpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIGludmFsaWRDb250ZXh0Owor
ICAgIGlmIChhbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KGNvbnRleHQpKQorICAgICAg
ICByZXR1cm4gY29udGV4dDsKKworICAgIEhhc2hNYXBUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0g
bV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuYWRkKGNvbnRleHQsIGFsdGVybmF0aXZlcyk7CisgICAg
cmV0dXJuIHJlc3VsdC5pc05ld0VudHJ5ID8gY29udGV4dCA6IGludmFsaWRDb250ZXh0OworfQor
CitOU1RleHRBbHRlcm5hdGl2ZXMqIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGlj
dGF0aW9uQ29udGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRleHQo
dWludHB0cl90IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgSGFzaE1hcFR5cGU6OmNvbnN0X2l0
ZXJhdG9yIGl0ciA9IG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmZpbmQoZGljdGF0aW9uQ29udGV4
dCk7CisgICAgaWYgKGl0ciA9PSBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIGl0ci0+c2Vjb25kLmdldCgpOworfQorCit2b2lk
IERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4dENvbnRyb2xs
ZXI6OnJlbW92ZUFsdGVybmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRleHQodWludHB0cl90IGRpY3Rh
dGlvbkNvbnRleHQpCit7CisgICAgbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAucmVtb3ZlKGRpY3Rh
dGlvbkNvbnRleHQpOworfQorCit2b2lkIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6
RGljdGF0aW9uQ29udGV4dENvbnRyb2xsZXI6OmNsZWFyKCkKK3sKKyAgICBtX2FsdGVybmF0aXZl
c09iamVjdE1hcC5jbGVhcigpOworfQorCit1aW50NjRfdCBEaWN0YXRpb25BbHRlcm5hdGl2ZUNv
bnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRp
dmVzPiYgYWx0ZXJuYXRpdmVzKQoreworICAgIHJldHVybiBtX2NvbnRleHRDb250cm9sbGVyLmFk
ZEFsdGVybmF0aXZlcyhhbHRlcm5hdGl2ZXMpOworfQorCit2b2lkIERpY3RhdGlvbkFsdGVybmF0
aXZlQ29udHJvbGxlcjo6Y2xlYXIoKQoreworICAgIHJldHVybiBtX2NvbnRleHRDb250cm9sbGVy
LmNsZWFyKCk7Cit9CisKK3ZvaWQgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpzaG93
QWx0ZXJuYXRpdmVzKFdLVmlldyogdmlldywgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3Vu
ZGluZ0JveE9mRGljdGF0ZWRTdHJpbmcsIHVpbnRwdHJfdCBkaWN0YXRpb25Db250ZXh0KQorewor
ICAgIGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fdmlldyA9IHZpZXc7CisgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5h
dGl2ZXMgPSBtX2NvbnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRl
eHQoZGljdGF0aW9uQ29udGV4dCk7CisgICAgaWYgKCFhbHRlcm5hdGl2ZXMpCisgICAgICAgIHJl
dHVybjsKKyAgICBOU1NwZWxsQ2hlY2tlciogc3BlbGxDaGVja2VyID0gW05TU3BlbGxDaGVja2Vy
IHNoYXJlZFNwZWxsQ2hlY2tlcl07CisgICAgW3NwZWxsQ2hlY2tlciBzaG93Q29ycmVjdGlvbklu
ZGljYXRvck9mVHlwZTpOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlR3Vlc3NlcyBwcmltYXJ5U3Ry
aW5nOmFsdGVybmF0aXZlcy5wcmltYXJ5U3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5h
dGl2ZXMuYWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mRGlj
dGF0ZWRTdHJpbmcgdmlldzptX3ZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmlu
ZyogYWNjZXB0ZWRTdHJpbmcpIHsKKyAgICAgICAgaWYgKGFjY2VwdGVkU3RyaW5nKQorICAgICAg
ICAgICAgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShhY2NlcHRlZFN0cmluZywgZGljdGF0aW9u
Q29udGV4dCwgYWx0ZXJuYXRpdmVzKTsKKyAgICB9XTsKK30KKwordm9pZCBEaWN0YXRpb25BbHRl
cm5hdGl2ZUNvbnRyb2xsZXI6OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUoTlNTdHJpbmcqIGFj
Y2VwdGVkQWx0ZXJuYXRpdmUsIHVpbnRwdHJfdCBkaWN0YXRpb25Db250ZXh0LCBOU1RleHRBbHRl
cm5hdGl2ZXMqIGFsdGVybmF0aXZlcykKK3sKKyAgICBbYWx0ZXJuYXRpdmVzIG5vdGVTZWxlY3Rl
ZEFsdGVybmF0aXZlU3RyaW5nOmFjY2VwdGVkQWx0ZXJuYXRpdmVdOworICAgIG1fY29udGV4dENv
bnRyb2xsZXIucmVtb3ZlQWx0ZXJuYXRpdmVzRm9yRGljdGF0aW9uQ29udGV4dChkaWN0YXRpb25D
b250ZXh0KTsKKyAgICBbbV92aWV3LmdldCgpIGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0
OmFjY2VwdGVkQWx0ZXJuYXRpdmVdOworICAgIG1fdmlldy5jbGVhcigpOworfQorCit2b2lkIERp
Y3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6ZGlzbWlzc0FsdGVybmF0aXZlcygpCit7Cisg
ICAgaWYgKCFtX3ZpZXcpCisgICAgICAgIHJldHVybjsKKyAgICBbW05TU3BlbGxDaGVja2VyIHNo
YXJlZFNwZWxsQ2hlY2tlcl0gZGlzbWlzc0NvcnJlY3Rpb25JbmRpY2F0b3JGb3JWaWV3Om1fdmll
dy5nZXQoKV07Cit9CisKK3ZvaWQgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpyZW1v
dmVBbHRlcm5hdGl2ZXModWludHB0cl90IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgbV9jb250
ZXh0Q29udHJvbGxlci5yZW1vdmVBbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KGRpY3Rh
dGlvbkNvbnRleHQpOworfQorfQorI2VuZGlmIC8vIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzM0ODcxNTFhYjdhYTdiODZhNzkzZTAzOThmMzVk
ZGJjMjE1YTEyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlX2gKKyNkZWZpbmUgVGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlX2gKKworI2luY2x1ZGUgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgVVNFKERJQ1RBVElPTl9B
TFRFUk5BVElWRVMpCitPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKKworc3RydWN0IFRl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSB7CisgICAgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlKE5T
VGV4dEFsdGVybmF0aXZlcyogYW5BbHRlcm5hdGl2ZXMsIE5TUmFuZ2UgYVJhbmdlKTsKKyAgICBU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UoY29uc3QgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlJiBh
bm90aGVyKTsKKyAgICBOU1JhbmdlIHJhbmdlOworICAgIFJldGFpblB0cjxOU1RleHRBbHRlcm5h
dGl2ZXM+IGFsdGVybmF0aXZlczsKK307CisKKyNlbHNlCitzdHJ1Y3QgVGV4dEFsdGVybmF0aXZl
V2l0aFJhbmdlIHsgfTsKKyNlbmRpZgorCisjZW5kaWYgLy8gVGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UZXh0QWx0
ZXJuYXRpdmVXaXRoUmFuZ2UubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA2MTU0MmRhOWRlYjBlMTljNWViMWE4
NzdkNDQ0MjhmOTg3YmVjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tCkBAIC0wLDAgKzEsNDIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXh0QWx0ZXJuYXRpdmVXaXRo
UmFuZ2UuaCIKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorI2ltcG9ydCA8QXBw
S2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgorCitUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U6OlRl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZShOU1RleHRBbHRlcm5hdGl2ZXMqIGFuQWx0ZXJuYXRpdmVz
LCBOU1JhbmdlIGFSYW5nZSkKKzogcmFuZ2UoYVJhbmdlKQorLCBhbHRlcm5hdGl2ZXMoYW5BbHRl
cm5hdGl2ZXMpCit7Cit9CisKK1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZTo6VGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlKGNvbnN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSYgYW5vdGhlcikKKzog
cmFuZ2UoYW5vdGhlci5yYW5nZSkKKywgYWx0ZXJuYXRpdmVzKGFub3RoZXIuYWx0ZXJuYXRpdmVz
KQoreworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tCmluZGV4IDM1ODQ3MTgyZTE0MGI3ZDg0ZDA5ODM0NmI2OGI3M2ViMWEwODY0
ZjAuLmMzNzk2MTY3NGZhNzRmYzU2YTM1OGM0ZTI5NDZkOTE5Mzk3ZjEzYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0zNSw5ICsz
NSwxMSBAQAogI2ltcG9ydCAiUGFnZUNsaWVudC5oIgogI2ltcG9ydCAiUGFnZUNsaWVudEltcGwu
aCIKICNpbXBvcnQgIlN0cmluZ1V0aWxpdGllcy5oIgorI2ltcG9ydCAiVGV4dEFsdGVybmF0aXZl
V2l0aFJhbmdlLmgiCiAjaW1wb3J0ICJUZXh0Q2hlY2tlci5oIgogI2ltcG9ydCAiV2ViUGFnZU1l
c3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbXBvcnQgPFdlYkNvcmUv
RGljdGF0aW9uQWx0ZXJuYXRpdmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+
CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0
cmluZ0NvbmNhdGVuYXRlLmg+CkBAIC0xOTgsNiArMjAwLDM1IEBAIGJvb2wgV2ViUGFnZVByb3h5
OjppbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5n
ZVN0YXJ0CiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9CiAKK2Jvb2wgV2ViUGFnZVByb3h5OjppbnNl
cnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJh
bmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQsIGNvbnN0IFZlY3RvcjxUZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFuZ2UpCit7
CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgaWYgKGRpY3RhdGlvbkFsdGVy
bmF0aXZlc1dpdGhSYW5nZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBpbnNlcnRUZXh0KHRl
eHQsIHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCk7CisKKyAgICBp
ZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBWZWN0b3I8RGljdGF0
aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlczsKKworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzV2l0aFJhbmdlLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGNvbnN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSYgYWx0ZXJuYXRpdmVXaXRo
UmFuZ2UgPSBkaWN0YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFuZ2VbaV07CisgICAgICAgIHVpbnRw
dHJfdCBkaWN0YXRpb25Db250ZXh0ID0gbV9wYWdlQ2xpZW50LT5hZGREaWN0YXRpb25BbHRlcm5h
dGl2ZXMoYWx0ZXJuYXRpdmVXaXRoUmFuZ2UuYWx0ZXJuYXRpdmVzKTsKKyAgICAgICAgaWYgKGRp
Y3RhdGlvbkNvbnRleHQpCisgICAgICAgICAgICBkaWN0YXRpb25BbHRlcm5hdGl2ZXMuYXBwZW5k
KERpY3RhdGlvbkFsdGVybmF0aXZlKGFsdGVybmF0aXZlV2l0aFJhbmdlLnJhbmdlLmxvY2F0aW9u
LCBhbHRlcm5hdGl2ZVdpdGhSYW5nZS5yYW5nZS5sZW5ndGgsIGRpY3RhdGlvbkNvbnRleHQpKTsK
KyAgICB9CisKKyAgICBpZiAoZGljdGF0aW9uQWx0ZXJuYXRpdmVzLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIGluc2VydFRleHQodGV4dCwgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNl
bWVudFJhbmdlRW5kKTsKKworICAgIGJvb2wgaGFuZGxlZCA9IHRydWU7CisgICAgcHJvY2Vzcygp
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RGljdGF0ZWRUZXh0KHRleHQsIHJl
cGxhY2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCwgZGljdGF0aW9uQWx0ZXJu
YXRpdmVzKSwgTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERpY3RhdGVkVGV4dDo6UmVwbHkoaGFu
ZGxlZCwgbV9lZGl0b3JTdGF0ZSksIG1fcGFnZUlEKTsKKyAgICByZXR1cm4gaGFuZGxlZDsKKyNl
bHNlCisgICAgcmV0dXJuIGluc2VydFRleHQodGV4dCwgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCBy
ZXBsYWNlbWVudFJhbmdlRW5kKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
TWFya2VkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKQogewogICAg
IGxvY2F0aW9uID0gTlNOb3RGb3VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzODkyZDVkMDIxYjBkZDk1ZjVmZmIzNzgxOGQw
M2Q1NDhiMmM4ZmFlLi5iY2YwZmYyMDFmMTI1NDc3MmNiODJjZWU1MThlMDRiMzZlOTIxYmRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC04ODUsNiArODg1LDEwIEBACiAJCUNEQ0E4NUVFMTMyQUQ3MDEwMEU5NjFERiAvKiBXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1REUxMzJBRDA1MzAwRTk2MURGIC8qIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHlNYWMubW0gKi87IH07CiAJCUNFREExMkUyMTUyQ0QxQUUwMEQ5RTA4RCAv
KiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQTEyREYxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5jcHAgKi87IH07CiAJCUNFREExMkUzMTUyQ0QxQjMwMEQ5RTA4RCAv
KiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENFREExMkRFMTUyQ0NBRTgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuaCAqLzsgfTsKKwkJQ0VEQkJGMjMxNTJGNTMyNTAwNjI3OTNCIC8qIERp
Y3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQkJGMjExNTJGNTMyNTAwNjI3OTNCIC8qIERpY3RhdGlv
bkFsdGVybmF0aXZlQ29udHJvbGxlci5oICovOyB9OworCQlDRURCQkYyNDE1MkY1MzI1MDA2Mjc5
M0IgLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQkJGMjIxNTJGNTMyNTAwNjI3OTNCIC8q
IERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5tbSAqLzsgfTsKKwkJQ0VEQkJGNTExNTJG
NkMzMTAwNjI3OTNCIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQkJGNEYxNTJGNkMzMTAwNjI3OTNC
IC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oICovOyB9OworCQlDRURCQkY1MjE1MkY2QzMx
MDA2Mjc5M0IgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQkJGNTAxNTJGNkMzMTAwNjI3OTNCIC8q
IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSAqLzsgfTsKIAkJRDNCOTQ4NDYxMUZGNEI2NTAw
MDMyQjM5IC8qIFdlYlBvcHVwTWVudS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0MjExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51
LmNwcCAqLzsgfTsKIAkJRDNCOTQ4NDcxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCOTQ4NDMx
MUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovOyB9OwogCQlEM0I5NDg0ODExRkY0
QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQ0MTFGRjRCNjUwMDAzMkIzOSAvKiBX
ZWJTZWFyY2hQb3B1cE1lbnUuY3BwICovOyB9OwpAQCAtMTk0MSw2ICsxOTQ1LDEwIEBACiAJCUNE
Q0E4NURFMTMyQUQwNTMwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VEQTEyREUx
NTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VEQTEyREYxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDRURCQkYyMTE1MkY1MzI1MDA2Mjc5M0IgLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVD
b250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpY3RhdGlvbkFs
dGVybmF0aXZlQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRURC
QkYyMjE1MkY1MzI1MDA2Mjc5M0IgLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGljdGF0aW9uQWx0ZXJu
YXRpdmVDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRURCQkY0
RjE1MkY2QzMxMDA2Mjc5M0IgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRURCQkY1MDE1MkY2QzMxMDA2Mjc5M0IgLyogVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEM0I5NDg0MjExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBvcHVwTWVudS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQzMTFGRjRCNjUwMDAzMkIzOSAvKiBX
ZWJQb3B1cE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUG9wdXBN
ZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQ0MTFGRjRCNjUwMDAz
MkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViU2VhcmNoUG9wdXBNZW51LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTM0MzgsNiArMzQ0NiwxMCBAQAogCQkJCTFBNjQyOTJDMTJERTVGOTgwMENBQUUy
QyAvKiBCYWNraW5nU3RvcmVNYWMubW0gKi8sCiAJCQkJQjg3OEI2MTMxMzM0MjhEQzAwNjg4OEU5
IC8qIENvcnJlY3Rpb25QYW5lbC5oICovLAogCQkJCUI4NzhCNjE0MTMzNDI4REMwMDY4ODhFOSAv
KiBDb3JyZWN0aW9uUGFuZWwubW0gKi8sCisJCQkJQ0VEQkJGMjIxNTJGNTMyNTAwNjI3OTNCIC8q
IERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5tbSAqLywKKwkJCQlDRURCQkYyMTE1MkY1
MzI1MDA2Mjc5M0IgLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmggKi8sCisJCQkJ
Q0VEQkJGNTAxNTJGNkMzMTAwNjI3OTNCIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSAq
LywKKwkJCQlDRURCQkY0RjE1MkY2QzMxMDA2Mjc5M0IgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlLmggKi8sCiAJCQkJMUFBNDE3RUQxMkMwMEQ4NzAwMkJFNjdCIC8qIFRleHRDaGVja2VyTWFj
Lm1tICovLAogCQkJCTFBRjA1RDg1MTQ2ODgzNDgwMDhCMUU4MSAvKiBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYVByb3h5LmggKi8sCiAJCQkJMUFGMDVEODQxNDY4ODM0ODAwOEIxRTgxIC8q
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0gKi8sCkBAIC00MTg1LDYgKzQx
OTcsOCBAQAogCQkJCTM3OTQ4NDA0MTUwQzM1MDYwMEU1MkNFOSAvKiBXZWJSZW5kZXJMYXllci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5NDg0MDkxNTBDNEI5NzAwRTUyQ0U5IC8qIFdLUmVuZGVy
TGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFREExMkUzMTUyQ0QxQjMwMEQ5RTA4RCAvKiBX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFREJCRjIzMTUy
RjUzMjUwMDYyNzkzQiAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNFREJCRjUxMTUyRjZDMzEwMDYyNzkzQiAvKiBUZXh0QWx0ZXJuYXRpdmVX
aXRoUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNDkyOSw2ICs0OTQzLDggQEAKIAkJCQkzNzk0
ODQwMzE1MEMzNTA2MDBFNTJDRTkgLyogV2ViUmVuZGVyTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMzc5NDg0MDgxNTBDNEI5NzAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0VEQTEyRTIxNTJDRDFBRTAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZl
VGV4dENsaWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRURCQkYyNDE1MkY1MzI1MDA2Mjc5
M0IgLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0VEQkJGNTIxNTJGNkMzMTAwNjI3OTNCIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5k
ZXggYjgwNWFkYWY1ODEyYWY1ZjIzY2VjNGExYjVjOTJkN2M2OTM2ZTJjNC4uNmQxOTg0OWU2ZmEy
NmZlNjQ3Yjg4YWFlMzU2MmY4ZjYwMzdlNzRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZl
VGV4dENsaWVudC5oCkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzbWlzc0FsdGVybmF0aXZlKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2
ZVRleHQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NBbHRlcm5hdGl2ZVNv
b24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6
QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludHB0cl90IGRpY3RhdGlvbkNvbnRl
eHQpIE9WRVJSSURFOwogcHJpdmF0ZToKICAgICBXZWJQYWdlICptX3BhZ2U7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAKaW5kZXggNmFiYjY5MzU0
MWQwODU2ZWUwMWZkYzYzZTgxOGY5ODU2NjRmNjBkYS4uNTI5OWFmMjJhMGJkY2MyMGNkMWEyOTQw
ODQxZWQxMzljZDQyZTIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQuY3BwCkBAIC03Niw0ICs3NiwxMSBAQCB2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENs
aWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3Bvbgog
I2VuZGlmCiB9CiAKK3ZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZW1vdmVEaWN0YXRp
b25BbHRlcm5hdGl2ZXModWludHB0cl90IGRpY3RhdGlvbkNvbnRleHQpCit7CisjaWYgVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyhkaWN0YXRpb25Db250ZXh0KSk7Cisj
ZW5kaWYKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKaW5kZXggN2Q1MmQ0Y2ZlZjkxNmRiNmZjNTcyMzJkNjBlYzA0ZDYwYTc2Y2Q2OC4uMzBlNmQz
Zjk1NTg2NTY1ZmE1MzU3MjdkYTFlY2ZmMDg4Njg0Zjk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAi
U2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1
ZGUgIldlYlVuZG9TdGVwLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Vk
aXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgpAQCAtNDA2LDcg
KzQwNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVu
dChjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQmLCBib29sJiByZXN1bHQpOwogICAgIHZvaWQg
YWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVyLCBjb25zdCBXZWJLaXQ6OldlYk1vdXNl
RXZlbnQmLCBib29sJiByZXN1bHQpOwogICAgIGJvb2wgcGVyZm9ybU5vbkVkaXRpbmdCZWhhdmlv
ckZvclNlbGVjdG9yKGNvbnN0IFN0cmluZyYpOwotCisgICAgdm9pZCBpbnNlcnREaWN0YXRlZFRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVp
bnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpEaWN0YXRp
b25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBib29sJiBoYW5k
bGVkLCBFZGl0b3JTdGF0ZSYgbmV3U3RhdGUpOwogI2VsaWYgUExBVEZPUk0oV0lOKQogICAgIHZv
aWQgY29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcpOwog
ICAgIHZvaWQgc2V0Q29tcG9zaXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGNvbXBvc2l0aW9uU3Ry
aW5nLCBjb25zdCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4mIHVu
ZGVybGluZXMsIHVpbnQ2NF90IGN1cnNvclBvc2l0aW9uKTsKQEAgLTQ4OCw3ICs0ODksNiBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHVubWFya0FsbE1pc3NwZWxsaW5ncygpOwogICAgIHZvaWQgdW5t
YXJrQWxsQmFkR3JhbW1hcigpOwotCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlM
RElOR19PTl9TTk9XX0xFT1BBUkQpCiAgICAgdm9pZCBoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJl
c3VsdChjb25zdCBTdHJpbmcmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBhNjQwNTg5ZDhlN2Ix
ZmI5OTk3ZDcxYWQ2YzVmOTdiNzA1ZGU4OTcyLi5mYTc3ZTk1NDA1OWY2YTZiZDc4YzY5NmJmMWZj
MDJmYTdiNjBkZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjQxLDYgKzI0MSw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2UgewogICAgIEV4ZWN1dGVLZXlwcmVzc0NvbW1hbmRzKFZlY3RvcjxXZWJDb3JlOjpL
ZXlwcmVzc0NvbW1hbmQ+IHNhdmVkQ29tbWFuZHMpIC0+IChib29sIGhhbmRsZWQsIFdlYktpdDo6
RWRpdG9yU3RhdGUgbmV3U3RhdGUpCiAgICAgU2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50
KFdlYktpdDo6V2ViTW91c2VFdmVudCBldmVudCkgLT4gKGJvb2wgcmVzdWx0KQogICAgIEFjY2Vw
dHNGaXJzdE1vdXNlKGludCBldmVudE51bWJlciwgV2ViS2l0OjpXZWJNb3VzZUV2ZW50IGV2ZW50
KSAtPiAoYm9vbCByZXN1bHQpCisgICAgSW5zZXJ0RGljdGF0ZWRUZXh0KFdURjo6U3RyaW5nIHRl
eHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRS
YW5nZUVuZCwgV1RGOjpWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3Rh
dGlvbkFsdGVybmF0aXZlcykgLT4gKGJvb2wgaGFuZGxlZCwgV2ViS2l0OjpFZGl0b3JTdGF0ZSBu
ZXdTdGF0ZSkKICNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikKICAgICAvLyBGSVhNRTogVW5pZnkg
d2l0aCBNYWMgY291bnRlcnBhcnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGE4ZDNjNWJiMTk2MGMyOTQwZjIyMzM2
YWMwMmNhZTdkYWU1NGFkMDMuLmU5NzI4MjU4ODUwZmNjODQ3MDlhMDQ2ZjdlMTRmNmUxOGM2OGQ1
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0KQEAgLTI4Niw2ICsyODYsMjEgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0
KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW4K
ICAgICBuZXdTdGF0ZSA9IGVkaXRvclN0YXRlKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6aW5zZXJ0
RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5n
ZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywg
Ym9vbCYgaGFuZGxlZCwgRWRpdG9yU3RhdGUmIG5ld1N0YXRlKQoreworICAgIEZyYW1lKiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworCisg
ICAgaWYgKHJlcGxhY2VtZW50UmFuZ2VTdGFydCAhPSBOU05vdEZvdW5kKSB7CisgICAgICAgIFJl
ZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9IGNvbnZlcnRUb1JhbmdlKGZyYW1lLCBOU01h
a2VSYW5nZShyZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQgLSByZXBs
YWNlbWVudFJhbmdlU3RhcnQpKTsKKyAgICAgICAgaWYgKHJlcGxhY2VtZW50UmFuZ2UpCisgICAg
ICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9u
KHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCksIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CisgICAgfQor
CisgICAgQVNTRVJUKCFmcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkpOworICAgIGhh
bmRsZWQgPSBmcmFtZS0+ZWRpdG9yKCktPmluc2VydERpY3RhdGVkVGV4dCh0ZXh0LCBkaWN0YXRp
b25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgbV9rZXlib2FyZEV2ZW50QmVpbmdJbnRlcnByZXRlZCk7
CisgICAgbmV3U3RhdGUgPSBlZGl0b3JTdGF0ZSgpOworfQorCiB2b2lkIFdlYlBhZ2U6OmdldE1h
cmtlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCkKIHsKICAgICBs
b2NhdGlvbiA9IE5TTm90Rm91bmQ7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggOGQ4ZGMyM2M4NTRkOTZlOTViYTJhYzMxOGZhMTVlMWQxMDA3MDgx
Ni4uYWMzZTk3MTVjOWJmZTIxMWE1Nzc4YjM3MmQ0MTU4ZDY3NTY0YWVhMSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDEyLTA0LTE2ICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE9uIE9TIFgsIE1h
cmsgdGV4dCB3aXRoIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZSB3aXRoIGJsdWUgdW5kZXJsaW5lLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMwNDcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBpbnRl
cmZhY2UgdG8gc2ltdWxhdGUgZGljdGF0ZWQgdGV4dCBpbnB1dC4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyLm06CisgICAgICAgICgrW1RleHRJbnB1
dENvbnRyb2xsZXIgaXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDpdKToKKyAgICAgICAg
KCtbVGV4dElucHV0Q29udHJvbGxlciB3ZWJTY3JpcHROYW1lRm9yU2VsZWN0b3I6XSk6CisgICAg
ICAgICgtW1RleHRJbnB1dENvbnRyb2xsZXIgZGljdGF0ZWRTdHJpbmdXaXRoUHJpbWFyeVN0cmlu
ZzphbHRlcm5hdGl2ZTphbHRlcm5hdGl2ZU9mZnNldDphbHRlcm5hdGl2ZUxlbmd0aDpdKToKKwog
MjAxMi0wNC0xNiAgVmluY2VudCBTY2hlaWIgIDxzY2hlaWJAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIEFkZGluZyBDb250cmlidXRvcnMgQnJpYW4gU2Fsb21vbiBhbmQgVG9tIEh1ZHNvbiB0byBj
b21taXR0ZXJzLnB5LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJ
bnB1dENvbnRyb2xsZXIubSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250
cm9sbGVyLm0KaW5kZXggZjc4MDc5NDQ2MzY5ZTc4YzlmNDhjZTA4MTVlZjFjY2M4ZGYwYjk5ZC4u
YjU0YWNhM2Y3NzQ5ZGZiYTA1OTRiMDliZWZiYjNkMWViYzQzYjFjMSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXIubQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlci5tCkBAIC0zMSw2ICszMSwxMCBA
QAogCiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZU1hYy5oIgogI2ltcG9ydCA8QXBwS2l0L05TSW5w
dXRNYW5hZ2VyLmg+CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmlu
ZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MSU9O
KQorI2RlZmluZSBTVVBQT1JUX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMKKyNpbXBvcnQgPEFwcEtp
dC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4KKyNlbmRpZgogI2ltcG9ydCA8V2ViS2l0L1dlYkRvY3Vt
ZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJG
cmFtZVByaXZhdGUuaD4KQEAgLTE3MCw3ICsxNzQsOCBAQCArIChCT09MKWlzU2VsZWN0b3JFeGNs
dWRlZEZyb21XZWJTY3JpcHQ6KFNFTClhU2VsZWN0b3IKICAgICAgICAgICAgIHx8IGFTZWxlY3Rv
ciA9PSBAc2VsZWN0b3IoY2hhcmFjdGVySW5kZXhGb3JQb2ludFg6WTopCiAgICAgICAgICAgICB8
fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQpCiAg
ICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGF0dHJpYnV0ZWRTdHJpbmdXaXRo
U3RyaW5nOikKLSAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc2V0SW5wdXRN
ZXRob2RIYW5kbGVyOikpCisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNl
dElucHV0TWV0aG9kSGFuZGxlcjopCisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVj
dG9yKGRpY3RhdGVkU3RyaW5nV2l0aFByaW1hcnlTdHJpbmc6YWx0ZXJuYXRpdmU6YWx0ZXJuYXRp
dmVPZmZzZXQ6YWx0ZXJuYXRpdmVMZW5ndGg6KSkKICAgICAgICAgcmV0dXJuIE5POwogICAgIHJl
dHVybiBZRVM7CiB9CkBAIC0xOTQsNyArMTk5LDkgQEAgKyAoTlNTdHJpbmcgKil3ZWJTY3JpcHRO
YW1lRm9yU2VsZWN0b3I6KFNFTClhU2VsZWN0b3IKICAgICBlbHNlIGlmIChhU2VsZWN0b3IgPT0g
QHNlbGVjdG9yKGF0dHJpYnV0ZWRTdHJpbmdXaXRoU3RyaW5nOikpCiAgICAgICAgIHJldHVybiBA
Im1ha2VBdHRyaWJ1dGVkU3RyaW5nIjsgLy8ganVzdCBhIGZhY3RvcnkgbWV0aG9kLCBkb2Vzbid0
IGNhbGwgaW50byBOU1RleHRJbnB1dAogICAgIGVsc2UgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0
b3Ioc2V0SW5wdXRNZXRob2RIYW5kbGVyOikpCi0gICAgICAgIHJldHVybiBAInNldElucHV0TWV0
aG9kSGFuZGxlciI7IAorICAgICAgICByZXR1cm4gQCJzZXRJbnB1dE1ldGhvZEhhbmRsZXIiOwor
ICAgIGVsc2UgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoZGljdGF0ZWRTdHJpbmdXaXRoUHJp
bWFyeVN0cmluZzphbHRlcm5hdGl2ZTphbHRlcm5hdGl2ZU9mZnNldDphbHRlcm5hdGl2ZUxlbmd0
aDopKQorICAgICAgICByZXR1cm4gQCJtYWtlRGljdGF0ZWRTdHJpbmciOwogCiAgICAgcmV0dXJu
IG5pbDsKIH0KQEAgLTM3NSw2ICszODIsMjcgQEAgLSAoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmlu
ZyAqKWF0dHJpYnV0ZWRTdHJpbmdXaXRoU3RyaW5nOihOU1N0cmluZyAqKWFTdHJpbmcKICAgICBy
ZXR1cm4gW1tbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6
YVN0cmluZ10gYXV0b3JlbGVhc2VdOwogfQogCistIChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5n
KilkaWN0YXRlZFN0cmluZ1dpdGhQcmltYXJ5U3RyaW5nOihOU1N0cmluZyopYVN0cmluZyBhbHRl
cm5hdGl2ZTooTlNTdHJpbmcqKWFsdGVybmF0aXZlIGFsdGVybmF0aXZlT2Zmc2V0OihpbnQpb2Zm
c2V0IGFsdGVybmF0aXZlTGVuZ3RoOihpbnQpbGVuZ3RoCit7CisjaWYgZGVmaW5lZChTVVBQT1JU
X0RJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyog
ZGljdGF0ZWRTdHJpbmcgPSBbc2VsZiBhdHRyaWJ1dGVkU3RyaW5nV2l0aFN0cmluZzphU3RyaW5n
XTsKKyAgICBOU1JhbmdlIHJhbmdlV2l0aEFsdGVybmF0aXZlID0gTlNNYWtlUmFuZ2UoKE5TVUlu
dGVnZXIpb2Zmc2V0LCAoTlNVSW50ZWdlcilsZW5ndGgpOworICAgIE5TU3RyaW5nKiBzdWJTdHJp
bmdXaXRoQWx0ZXJuYXRpdmUgPSBbYVN0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6cmFuZ2VXaXRo
QWx0ZXJuYXRpdmVdOworICAgIGlmICghc3ViU3RyaW5nV2l0aEFsdGVybmF0aXZlKQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZU9iamVj
dCA9IFtbW05TVGV4dEFsdGVybmF0aXZlcyBhbGxvY10gaW5pdFdpdGhQcmltYXJ5U3RyaW5nOnN1
YlN0cmluZ1dpdGhBbHRlcm5hdGl2ZSBhbHRlcm5hdGl2ZVN0cmluZ3M6W05TQXJyYXkgYXJyYXlX
aXRoT2JqZWN0OmFsdGVybmF0aXZlXV0gYXV0b3JlbGVhc2VdOworICAgIGlmICghYWx0ZXJuYXRp
dmVPYmplY3QpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBbZGljdGF0ZWRTdHJpbmcgYWRk
QXR0cmlidXRlOk5TVGV4dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5hbWUgdmFsdWU6YWx0ZXJuYXRp
dmVPYmplY3QgcmFuZ2U6cmFuZ2VXaXRoQWx0ZXJuYXRpdmVdOworCisgICAgcmV0dXJuIGRpY3Rh
dGVkU3RyaW5nOworI2Vsc2UKKyAgICByZXR1cm4gbmlsCisjZW5kaWYKK30KKwogLSAodm9pZClz
ZXRJbnB1dE1ldGhvZEhhbmRsZXI6KFdlYlNjcmlwdE9iamVjdCAqKWhhbmRsZXIKIHsKICAgICBp
ZiAoaW5wdXRNZXRob2RIYW5kbGVyID09IGhhbmRsZXIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2U1M2E3ZjhjOGIxNDg1
NThmMmY0MmNkMzBhMWY1NDc0MzIyY2MxMi4uY2E2MzhjZWZiNGNkNzQ5NWJjMzliMjFmZWE5N2I0
NWZjOGU0YmRmZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA0LTE2ICBKaWEgUHUgIDxq
cHVAYXBwbGUuY29tPgorCisgICAgICAgIE9uIE9TIFgsIE1hcmsgdGV4dCB3aXRoIGRpY3RhdGlv
biBhbHRlcm5hdGl2ZSB3aXRoIGJsdWUgdW5kZXJsaW5lLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMwNDcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2Vk
aXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdp
dGgtYWx0ZXJuYXRpdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRp
bmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQtdGV4dC5odG1s
OiBBZGRlZC4KKwogMjAxMi0wNC0xNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFRyeSB0byBmaXggYSBmbGFreSBKUyB0ZXN0LgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0
LXdpdGgtYWx0ZXJuYXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI1N2M3OGNhNjM4YjU3Zjg5NDViOWUwMThkNWMwOWM5NmRmZmE0
NjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9p
bnB1dC9lZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw4IEBACitFZGl0aW5nIHRleHQgdGhhdCBoYXMgRGljdGF0aW9uQWx0ZXJuYXRpdmVz
IG1hcmtlciB3aG91bGQgY2F1c2UgdGhlIG1hcmtlciB0byBiZSByZW1vdmVkLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK3RoaXMgaXMgYSB0ZXgKK1BBU1MgbWFya2VkVGV4dCBpcyAi
IgorCitURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZWRpdGluZy9pbnB1dC9lZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS5odG1sIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0
LXdpdGgtYWx0ZXJuYXRpdmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jN2YwMDc5MDM2NjI2NWYwZDBlYmIw
Y2JkNmFiYTYxNjAyZGU5ZDNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUu
aHRtbApAQCAtMCwwICsxLDU5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHls
ZT4KK2JvZHkgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorPHByZSBpZD0iZGVzY3JpcHRpb24iPjwvcHJlPgorPGRpdiBpZD0idGVzdCIgY29udGVu
dGVkaXRhYmxlPjwvZGl2PgorPHAgaWQ9ImNvbnNvbGUiPjwvcD4KKzxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KKyAgICBkZXNjcmlwdGlvbigiRWRpdGluZyB0ZXh0IHRoYXQgaGFzIERp
Y3RhdGlvbkFsdGVybmF0aXZlcyBtYXJrZXIgd2hvdWxkIGNhdXNlIHRoZSBtYXJrZXIgdG8gYmUg
cmVtb3ZlZC4iKTsKKworICAgIHZhciBjb25zb2xlX21lc3NhZ2VzID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgib2wiKTsKKyAgICAKKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICB7Cisg
ICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAg
aXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAg
ICAgIGNvbnNvbGVfbWVzc2FnZXMuYXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgfQorICAgIAorICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgCisgICAgICAgIHRy
eSB7CisKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgICAgIHZhciB0ZXN0QXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7
CisgICAgICAgICAgICB0ZXN0QXJlYS5mb2N1cygpOworCisgICAgICAgICAgICB2YXIgZGljdGF0
ZWRTdHJpbmcgPSB0ZXh0SW5wdXRDb250cm9sbGVyLm1ha2VEaWN0YXRlZFN0cmluZygidGhpcyBp
cyBhIHRleHQiLCAidGVzdCIsIDEwLCA0KTsKKyAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21t
YW5kKCJTZWxlY3RBbGwiKTsKKyAgICAgICAgICAgIHRleHRJbnB1dENvbnRyb2xsZXIuaW5zZXJ0
VGV4dChkaWN0YXRlZFN0cmluZyk7CisgICAgICAgICAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRv
Q29tbWFuZCgiZGVsZXRlQmFja3dhcmQ6Iik7CisKKyAgICAgICAgICAgIHZhciBtYXJrZWRUZXh0
ID0gIiI7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAgICAg
ICAgIHZhciB0ZXN0VGV4dCA9IHRlc3RBcmVhLmZpcnN0Q2hpbGQ7CisgICAgICAgICAgICAgICAg
dmFyIG1hcmtlZCA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGVzdFRleHQsICJEaWN0
YXRpb25BbHRlcm5hdGl2ZXMiLCAwKTsKKyAgICAgICAgICAgICAgICBpZiAobWFya2VkKQorICAg
ICAgICAgICAgICAgICAgICBtYXJrZWRUZXh0ID0gbWFya2VkLnRvU3RyaW5nKCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibWFya2VkVGV4dCIs
ICIiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCJURVNUIENPTVBMRVRFIik7CisKKyAg
ICAgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCJFeGNlcHRp
b246ICIgKyBleC5kZXNjcmlwdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoY29uc29sZV9tZXNz
YWdlcyk7CisgICAgICAgIAorICAgIH0gZWxzZSB7CisgICAgICAgIGRvY3VtZW50LndyaXRlKCIo
Y2Fubm90IHJ1biBpbnRlcmFjdGl2ZWx5KSIpOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5w
dXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJkNDYxNzMyZWVlZjMzZjIwZjA4MDcwZjUxMWQ5ZGNmYzAyMGJhMDEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNl
cnQtZGljdGF0ZWQtdGV4dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitXaGVuIGluc2Vy
dGluZyBkaWN0YXRlZCB0ZXh0LCByYW5nZSBvZiB0ZXh0IHRoYXQgaGFzIGFsdGVybmF0aXZlIHRl
eHQgaXMgYXR0YWNoZWQgYXMgRGljdGF0aW9uQWx0ZXJuYXRpdmVzIG1hcmtlci4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCit0aGlzIGlzIGEgdGV4dAorUEFTUyBtYXJrZWRUZXh0IGlz
ICJ0ZXh0IgorCitURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQtdGV4dC5odG1sIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMmExZTQzYmQ5OWUzZDI1ZTAyMDgzMDMwYmU3ZjMyZjhjNWQ0NDE0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5z
ZXJ0LWRpY3RhdGVkLXRleHQuaHRtbApAQCAtMCwwICsxLDU4IEBACis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzdHlsZT4KK2JvZHkgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDAgfQorPC9z
dHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHByZSBpZD0iZGVzY3JpcHRpb24iPjwvcHJlPgorPGRp
diBpZD0idGVzdCIgY29udGVudGVkaXRhYmxlPjwvZGl2PgorPHAgaWQ9ImNvbnNvbGUiPjwvcD4K
KzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBkZXNjcmlwdGlvbigiV2hlbiBp
bnNlcnRpbmcgZGljdGF0ZWQgdGV4dCwgcmFuZ2Ugb2YgdGV4dCB0aGF0IGhhcyBhbHRlcm5hdGl2
ZSB0ZXh0IGlzIGF0dGFjaGVkIGFzIERpY3RhdGlvbkFsdGVybmF0aXZlcyBtYXJrZXIuIik7CisK
KyAgICB2YXIgY29uc29sZV9tZXNzYWdlcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7
CisgICAgCisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCisgICAgeworICAgICAgICB2YXIgaXRl
bSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgIGl0ZW0uYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgICAgICBjb25zb2xlX21l
c3NhZ2VzLmFwcGVuZENoaWxkKGl0ZW0pOworICAgIH0KKyAgICAKKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIAorICAgICAgICB0cnkgeworCisgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB2YXIg
dGVzdEFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworICAgICAgICAgICAg
dGVzdEFyZWEuZm9jdXMoKTsKKworICAgICAgICAgICAgdmFyIGRpY3RhdGVkU3RyaW5nID0gdGV4
dElucHV0Q29udHJvbGxlci5tYWtlRGljdGF0ZWRTdHJpbmcoInRoaXMgaXMgYSB0ZXh0IiwgInRl
c3QiLCAxMCwgNCk7CisgICAgICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxs
Iik7CisgICAgICAgICAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmluc2VydFRleHQoZGljdGF0ZWRT
dHJpbmcpOworCisgICAgICAgICAgICB2YXIgbWFya2VkVGV4dCA9ICIiOworICAgICAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICB2YXIgdGVzdFRleHQgPSB0
ZXN0QXJlYS5maXJzdENoaWxkOworICAgICAgICAgICAgICAgIHZhciBtYXJrZWQgPSBpbnRlcm5h
bHMubWFya2VyUmFuZ2VGb3JOb2RlKHRlc3RUZXh0LCAiRGljdGF0aW9uQWx0ZXJuYXRpdmVzIiwg
MCk7CisgICAgICAgICAgICAgICAgaWYgKG1hcmtlZCkKKyAgICAgICAgICAgICAgICAgICAgbWFy
a2VkVGV4dCA9IG1hcmtlZC50b1N0cmluZygpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIm1hcmtlZFRleHQiLCAidGV4dCIpOworICAgICAgICAg
ICAgZG9jdW1lbnQud3JpdGUoIlRFU1QgQ09NUExFVEUiKTsKKworICAgICAgICB9IGNhdGNoIChl
eCkgeworICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIkV4Y2VwdGlvbjogIiArIGV4LmRlc2Ny
aXB0aW9uKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChjb25zb2xlX21lc3NhZ2VzKTsKKyAgICAgICAg
CisgICAgfSBlbHNlIHsKKyAgICAgICAgZG9jdW1lbnQud3JpdGUoIihjYW5ub3QgcnVuIGludGVy
YWN0aXZlbHkpIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137464</attachid>
            <date>2012-04-16 19:44:44 -0700</date>
            <delta_ts>2012-04-16 20:48:49 -0700</delta_ts>
            <desc>Patch (v2)</desc>
            <filename>bug-83047-20120416194442.patch</filename>
            <type>text/plain</type>
            <size>92880</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWVmYmNlMjFlZGQzYzU2
OWJlODIxMDE0NDNlMzFmODJkMGQ4YmRjNy4uYjFlNTViNjMxYmNlZWE1ZWJmYzQ0MzhmNDhiM2Vk
YmUwN2VmYjliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA0LTE2ICBKaWEg
UHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE9uIE9TIFgsIE1hcmsgdGV4dCB3aXRoIGRp
Y3RhdGlvbiBhbHRlcm5hdGl2ZSB3aXRoIGJsdWUgdW5kZXJsaW5lLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMwNDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogcGxhdGZvcm0vbWFjL2VkaXRp
bmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUuaHRtbAorICAgICAg
ICAgICAgICAgcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQu
aHRtbAorCisgICAgICAgIFRoaXMgaXMgdGhlIGZvbGxvdyB1cCBwYXRjaCBtZW50aW9uZWQgaW4g
dGhlIENoYW5nZUxvZyBvZiBidWcgODM1NDkuIFRoaXMgcGF0Y2ggYWRkZWQgYW4gT1MgWCBzcGVj
aWZpYworICAgICAgICBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8gZGljdGF0ZWQgdGV4dCBpbnB1
dC4gTWFqb3JpdHkgb2YgdGhpcyBwYXRjaCBpcyBpbiBXZWJLaXQgYW5kIFdlYktpdDIuCisKKyAg
ICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJu
YXRpdmVzRm9yTWFya2VyKTogQWRkZWQgYSBuZXcgZnVuY3Rpb24gaW4KKyAgICAgICAgICBBbHRl
cm5hdGl2ZVRleHRDbGllbnQsIHdoaWNoIG5vdGlmaWVzIFdlYktpdCBsYXllciB0byByZW1vdmUg
ZGljdGF0aW9uIGFsdGVybmF0aXZlIGRhdGEgd2hlbiBhCisgICAgICAgICAgRGljdGF0aW9uQWxl
cm5hdGl2ZXMgbWFya2VyIGlzIHJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKEFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXIpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRp
bmcpOgorICAgICAgICAqIHBhZ2UvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg6CisgICAgICAgIChB
bHRlcm5hdGl2ZVRleHRDbGllbnQpOgorCiAyMDEyLTA0LTE2ICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTEyNDkzMzY+IGFuZCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwNTAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
NTZjMWJlM2IxNzEzMTM1NDM3ZTZmNjdhNWYzNGY1NGZjNzU1MjExMi4uNGM4MzQ5Yzk3NzA1YWJm
YzI1MWRhYTQ4ZTg2YTdmMjcxZjljZDdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
Mi0wNC0xNiAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KKworICAgICAgICBPbiBPUyBYLCBNYXJr
IHRleHQgd2l0aCBkaWN0YXRpb24gYWx0ZXJuYXRpdmUgd2l0aCBibHVlIHVuZGVybGluZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMDQ3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMi0wNC0xMCAgUGF0cmljayBHYW5zdGVyZXIg
IDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBbQ01ha2VdIEVuYWJsZSBVU0VfRk9MREVS
UyBwcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGYwOWU5NzhmODMyMDMyMjVmMDhkNDM0YTMx
YTYwODEzZDYzMjFiZjAuLjZhN2NkNWZiNzgwZGEyOTQzY2I3Y2I0ZjE1Zjg0YzkyNWI3N2YwMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAxMi0wNC0xNiAgSmlhIFB1ICA8
anB1QGFwcGxlLmNvbT4KKworICAgICAgICBPbiBPUyBYLCBNYXJrIHRleHQgd2l0aCBkaWN0YXRp
b24gYWx0ZXJuYXRpdmUgd2l0aCBibHVlIHVuZGVybGluZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxzbyBzZWUgV2ViQ29yZS9DaGFuZ2VMb2cuCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWRkZWQgYW4gT1MgWCBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IHJl
bGF0ZWQgdG8gZGljdGF0ZWQgdGV4dCBpbnB1dC4gSXQgc2hvdWxkbid0IGNoYW5nZSBiZWhhdmlv
cnMKKyAgICAgICAgb24gb3RoZXIgcGxhdGZvcm1zLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ29ycmVjdGlvblBhbmVsLm1tOgorICAgICAgICAoQ29ycmVjdGlvblBhbmVsOjpoYW5kbGVB
Y2NlcHRlZFJlcGxhY2VtZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuaDoKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tOgorICAg
ICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2
ZXMpOgorICAgICAgICAqIFdlYlZpZXcvRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmg6
IEFkZGVkLgorICAgICAgICAoRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyKToKKyAgICAg
ICAgKERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVD
b250cm9sbGVyKToKKyAgICAgICAgKERpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyKToKKyAgICAg
ICAgKERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4dENvbnRy
b2xsZXI6OkRpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyKToKKyAgICAgICAgKiBXZWJWaWV3L0Rp
Y3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5tbTogQWRkZWQuCisgICAgICAgIChEaWN0YXRp
b25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OkRpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyOjphZGRB
bHRlcm5hdGl2ZXMpOgorICAgICAgICAoRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpE
aWN0YXRpb25Db250ZXh0Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yRGljdGF0aW9uQ29udGV4
dCk6CisgICAgICAgIChEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OkRpY3RhdGlvbkNv
bnRleHRDb250cm9sbGVyOjpyZW1vdmVBbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KToK
KyAgICAgICAgKERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4
dENvbnRyb2xsZXI6OmNsZWFyKToKKyAgICAgICAgKERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJv
bGxlcjo6YWRkQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKERpY3RhdGlvbkFsdGVybmF0aXZlQ29u
dHJvbGxlcjo6Y2xlYXIpOgorICAgICAgICAoRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVy
OjpzaG93QWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJv
bGxlcjo6aGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZSk6CisgICAgICAgIChEaWN0YXRpb25BbHRl
cm5hdGl2ZUNvbnRyb2xsZXI6OmRpc21pc3NBbHRlcm5hdGl2ZXMpOgorICAgICAgICAoRGljdGF0
aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpyZW1vdmVBbHRlcm5hdGl2ZXMpOgorICAgICAgICAq
IFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChjb2xsZWN0RGljdGF0aW9uVGV4dEFs
dGVybmF0aXZlcyk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGluc2VydFRleHQ6XSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IGhhbmRsZUFjY2Vw
dGVkQWx0ZXJuYXRpdmVUZXh0Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IF9nZXRXZWJDb3JlRGlj
dGF0aW9uQWx0ZXJuYXRpdmVzOmZyb21UZXh0QWx0ZXJuYXRpdmVzOl0pOgorICAgICAgICAoLVtX
ZWJWaWV3IF9yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3RGF0YS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEubW06CisgICAg
ICAgICgtW1dlYlZpZXdQcml2YXRlIGluaXRdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJ
bnRlcm5hbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0QWx0ZXJuYXRpdmVX
aXRoUmFuZ2U6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSk6CisgICAgICAgIChUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwog
MjAxMi0wNC0xMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAocjEwMjI2Mik6IGlBZCBQcm9kdWNlciByZWxpZXMgb24gQ1NTU3R5bGVEZWNsYXJh
dGlvbiBwcm9wZXJ0eSBzZXR0ZXJzIHJlc3BlY3RpbmcgJyFpbXBvcnRhbnQnCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMGI1NDZmNzUxOTEzOTgyMzQ3MDBhM2Q3NmE0OWE3OGVkMGVmZGRkYi4uMGNkNGU3ZjJmOGM0
M2I0ODIzMTZmOWM3NTgwYjljOTc2MGY4YzE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBA
CisyMDEyLTA0LTE2ICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE9uIE9TIFgs
IE1hcmsgdGV4dCB3aXRoIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZSB3aXRoIGJsdWUgdW5kZXJsaW5l
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMwNDcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbHNvIHNl
ZSBXZWJDb3JlL0NoYW5nZUxvZy4KKyAgICAgICAgVGhpcyBwYXRjaCBhZGRlZCBhbiBPUyBYIHNw
ZWNpZmljIGZ1bmN0aW9uYWxpdHkgcmVsYXRlZCB0byBkaWN0YXRlZCB0ZXh0IGlucHV0LiBJdCBz
aG91bGRuJ3QgY2hhbmdlIGJlaGF2aW9ycyBvbgorICAgICAgICBvdGhlciBwbGF0Zm9ybXMuCisK
KyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKENv
cmVJUEM6Ojo6ZW5jb2RlKToKKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAoQ29yZUlQQzo6
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJ
bXBsLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoUGFnZUNsaWVudEltcGwpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQpOgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6YWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoY29sbGVj
dERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXMpOgorICAgICAgICAoLVtXS1ZpZXcgaW5zZXJ0VGV4
dDpyZXBsYWNlbWVudFJhbmdlOl0pOgorICAgICAgICAoLVtXS1ZpZXcgaGFuZGxlQWNjZXB0ZWRB
bHRlcm5hdGl2ZVRleHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50
ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAoUGFn
ZUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbW92ZURpY3RhdGlv
bkFsdGVybmF0aXZlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAoV2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tOgor
ICAgICAgICAoV2ViS2l0OjpDb3JyZWN0aW9uUGFuZWw6OmhhbmRsZUFjY2VwdGVkUmVwbGFjZW1l
bnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9s
bGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKERpY3RhdGlvbkFsdGVy
bmF0aXZlQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OkRpY3RhdGlvbkFsdGVybmF0aXZl
Q29udHJvbGxlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyKToKKyAgICAgICAgKERp
Y3RhdGlvbkNvbnRleHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6RGljdGF0aW9uQWx0
ZXJuYXRpdmVDb250cm9sbGVyOjpEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlcjo6RGljdGF0aW9u
Q29udGV4dENvbnRyb2xsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvRGljdGF0aW9uQWx0
ZXJuYXRpdmVDb250cm9sbGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OkRpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4
dENvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyk6CisgICAgICAgIChXZWJLaXQ6OkRpY3RhdGlv
bkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4dENvbnRyb2xsZXI6OmFsdGVy
bmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpEaWN0YXRpb25B
bHRlcm5hdGl2ZUNvbnRyb2xsZXI6OkRpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyOjpyZW1vdmVB
bHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6RGljdGF0
aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlcjo6Y2xl
YXIpOgorICAgICAgICAoV2ViS2l0OjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OmFk
ZEFsdGVybmF0aXZlcyk6CisgICAgICAgIChXZWJLaXQ6OkRpY3RhdGlvbkFsdGVybmF0aXZlQ29u
dHJvbGxlcjo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNv
bnRyb2xsZXI6OnNob3dBbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViS2l0OjpEaWN0YXRpb25B
bHRlcm5hdGl2ZUNvbnRyb2xsZXI6OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUpOgorICAgICAg
ICAoV2ViS2l0OjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OmRpc21pc3NBbHRlcm5h
dGl2ZXMpOgorICAgICAgICAoV2ViS2l0OjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6
OnJlbW92ZUFsdGVybmF0aXZlcyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9UZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UuaDogQWRkZWQuCisgICAgICAgIChUZXh0QWx0ZXJuYXRpdmVXaXRoUmFu
Z2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1t
OiBBZGRlZC4KKyAgICAgICAgKFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZTo6VGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHQpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQuaDoKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZW1v
dmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViUGFnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjppbnNlcnREaWN0YXRlZFRleHQpOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wNC0x
NiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzExMjQ5MzM2PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg0MDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyLmNwcAppbmRleCA4ZDA5ZmYxYjk5ODQ3MWVhNjFmMzg5MjY4ZTQ5MjRmNzA0
Y2YxM2IxLi5mYTBiODhlNzZhYmRjZTg2ZjdmZGM3MzgzZmU4ZDU0ZDZjYjI4OWI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5j
cHAKQEAgLTYyNCw0ICs2MjQsMTUgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpp
bnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWMKICAgICByZXR1
cm4gZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCk7CiB9CiAKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKERvY3VtZW50TWFy
a2VyKiBtYXJrZXIpCit7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgRGlj
dGF0aW9uTWFya2VyRGV0YWlscyogZGV0YWlscyA9IHN0YXRpY19jYXN0PERpY3RhdGlvbk1hcmtl
ckRldGFpbHMqPihtYXJrZXItPmRldGFpbHMoKSk7CisgICAgaWYgKEFsdGVybmF0aXZlVGV4dENs
aWVudCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+
cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRldGFpbHMtPmRpY3RhdGlvbkNvbnRleHQoKSk7
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShtYXJrZXIpOworI2VuZGlmCit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyLmgKaW5kZXggMjg0NDllZmQ5M2U1NzQwYTA5ZTM1YjY1NGI4OWI1MGM3
OTgwOGQ5Yi4uZjUyZTgwYjg4YmZmZTZmNWJlZDM1NmI5ZTE5YWEzNDZhYTMzNDVhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmgK
QEAgLTEzMCw2ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVkQXV0b2NvcnJlY3Rp
b25BdFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFN0cmlu
ZykgVU5MRVNTX0VOQUJMRUQoeyBVTlVTRURfUEFSQU0ob3JpZ2luYWxTdHJpbmcpOyB9KQogCiAg
ICAgYm9vbCBpbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPERp
Y3RhdGlvbkFsdGVybmF0aXZlPiYsIEV2ZW50Kik7CisgICAgdm9pZCByZW1vdmVEaWN0YXRpb25B
bHRlcm5hdGl2ZXNGb3JNYXJrZXIoRG9jdW1lbnRNYXJrZXIqKTsKIAogcHJpdmF0ZToKICNpZiBV
U0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXgg
MjI4ODRmYTc3ZWRkODQ0ZTU0ZmJiODljYTBhNWY4OWFlZDQ0MWJlOS4uNDljMTEwYjllMWZiMjVm
MDg3M2EyNTdkOGRiZTk5ZDcxNzY2ZjJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApA
QCAtMjI1OCw2ICsyMjU4LDEwIEBAIHZvaWQgRWRpdG9yOjp1cGRhdGVNYXJrZXJzRm9yV29yZHNB
ZmZlY3RlZEJ5RWRpdGluZyhib29sIGRvTm90UmVtb3ZlSWZTZWxlY3Rpb25BCiAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBSZWZQdHI8UmFuZ2U+IHdv
cmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIHN0YXJ0T2ZGaXJzdFdvcmQuZGVlcEVx
dWl2YWxlbnQoKSwgZW5kT2ZMYXN0V29yZC5kZWVwRXF1aXZhbGVudCgpKTsKIAorICAgIFZlY3Rv
cjxEb2N1bWVudE1hcmtlcio+IG1hcmtlcnMgPSBkb2N1bWVudC0+bWFya2VycygpLT5tYXJrZXJz
SW5SYW5nZSh3b3JkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5h
dGl2ZXMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWFya2Vycy5zaXplKCk7ICsraSkK
KyAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZW1vdmVEaWN0YXRpb25BbHRl
cm5hdGl2ZXNGb3JNYXJrZXIobWFya2Vyc1tpXSk7CisKICAgICBkb2N1bWVudC0+bWFya2Vycygp
LT5yZW1vdmVNYXJrZXJzKHdvcmRSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5n
IHwgRG9jdW1lbnRNYXJrZXI6OkNvcnJlY3Rpb25JbmRpY2F0b3IgfCBEb2N1bWVudE1hcmtlcjo6
U3BlbGxDaGVja2luZ0V4ZW1wdGlvbiB8IERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5h
dGl2ZXMsIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBp
bmdNYXJrZXIpOwogICAgIGRvY3VtZW50LT5tYXJrZXJzKCktPmNsZWFyRGVzY3JpcHRpb25Pbk1h
cmtlcnNJbnRlcnNlY3RpbmdSYW5nZSh3b3JkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpS
ZXBsYWNlbWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0
aXZlVGV4dENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRleHRDbGll
bnQuaAppbmRleCBmNWFlNjdkMGVkOWZkYzZmYmY0NzA3Mzc2NjYzYjkyYWM5MzE1Y2JjLi5lOTk5
ZDA1NmQyOWMzY2M1NDRjZDZkNmEyMzVmMDM4ODA2YTMzMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAgLTMxLDYgKzMxLDExIEBACiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYg
UExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xJT04p
CisvLyBTb21lIHBsYXRmb3JtcyBwcm92aWRlIFVJIGZvciBzdWdnZXN0aW5nIGFsdGVybmF0aXZl
IGRpY3RhdGlvbiB0ZXh0LgorI2RlZmluZSBXVEZfVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMg
MQorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFS
RCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlM
RElOR19PTl9MSU9OKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gUmVhc29uRm9yRGlz
bWlzc2luZ0FsdGVybmF0aXZlVGV4dCB7CkBAIC01Nyw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlzbWlzc0FsdGVybmF0aXZlKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5h
dGl2ZVRleHQpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQWx0ZXJuYXRpdmVTb29u
KFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlw
ZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVu
dFN0cmluZykgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2
ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOwogfTsKICAgICAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU0ZjAyNmQ2
YTcyZjVmMjYzODIyNjI1YTMyNjU2NTBlODY0ZDI0YTguLjBhNTAyZThmYmM4MzMyOTQ5OTEwMDMz
YTZhYmY0NzhhN2QxMjA4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMzcyLDYgKzM3Miw4IEBACiAJCUNEQTYyQUUzMTI1Rjg3QzIw
MDdGRDExOCAvKiBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTYyQUUxMTI1Rjg3QzIwMDdGRDExOCAvKiBX
ZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbSAqLzsgfTsKIAkJQ0VEQTEyREIxNTJDQkU2ODAwRDlF
MDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFREExMkQ5MTUyQ0JFNjgwMEQ5RTA4RCAvKiBXZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQubW0gKi87IH07CiAJCUNFREExMkRDMTUyQ0JFNjgwMEQ5RTA4
RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFREExMkRBMTUyQ0JFNjgwMEQ5RTA4RCAvKiBXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQuaCAqLzsgfTsKKwkJQ0VEQkJGMUUxNTJGNDlFNzAwNjI3OTNCIC8q
IERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQkJGMUMxNTJGNDlFNzAwNjI3OTNCIC8qIERpY3Rh
dGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oICovOyB9OworCQlDRURCQkYxRjE1MkY0OUU3MDA2
Mjc5M0IgLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQkJGMUQxNTJGNDlFNzAwNjI3OTNC
IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5tbSAqLzsgfTsKIAkJREQ3Q0RFRTcw
QTIzQkE5RTAwMDY5OTI4IC8qIFdlYlR5cGVzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREN0NERUU2MEEyM0JBOUUwMDA2OTkyOCAvKiBX
ZWJUeXBlc0ludGVybmFsLmggKi87IH07CiAJCUREODk2ODIwMDlBQTg3MjQwMDk3RTdGMCAvKiBX
ZWJFbGVtZW50RGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gREQ4OTY4MUUwOUFBODcyNDAwOTdFN0YwIC8qIFdlYkVsZW1lbnREaWN0aW9u
YXJ5LmggKi87IH07CiAJCUREODk2ODIxMDlBQTg3MjQwMDk3RTdGMCAvKiBXZWJFbGVtZW50RGlj
dGlvbmFyeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEREODk2ODFGMDlBQTg3MjQwMDk3RTdGMCAvKiBXZWJFbGVtZW50RGljdGlvbmFyeS5tbSAqLzsg
fTsKQEAgLTcwMyw2ICs3MDUsOCBAQAogCQlDREE2MkFFMTEyNUY4N0MyMDA3RkQxMTggLyogV2Vi
RnVsbFNjcmVlbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0VEQTEyRDkxNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENs
aWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VEQTEy
REExNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0VEQkJGMUMxNTJGNDlFNzAwNjI3OTNCIC8qIERp
Y3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0VEQkJGMUQxNTJGNDlFNzAwNjI3OTNCIC8qIERpY3RhdGlvbkFsdGVy
bmF0aXZlQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJREQ3Q0RFRTYwQTIzQkE5RTAwMDY5OTI4IC8qIFdlYlR5cGVzSW50ZXJuYWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVHlwZXNJbnRlcm5hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERDg5NjgxRTA5QUE4NzI0MDA5N0U3RjAgLyog
V2ViRWxlbWVudERpY3Rpb25hcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJFbGVtZW50RGljdGlvbmFyeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJREQ4OTY4MUYwOUFBODcy
NDAwOTdFN0YwIC8qIFdlYkVsZW1lbnREaWN0aW9uYXJ5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJFbGVtZW50RGljdGlvbmFy
eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07CkBAIC0xMTY1LDYgKzExNjksOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJRjUyQ0E2QkQw
MkRGOUQwRjAxODYzNUNBIC8qIEhUTUwgKi8sCiAJCQkJNTFFOTRDMDcwNkMwMkNBMzAwQTlCMDlF
IC8qIFBERiAqLywKKwkJCQlDRURCQkYxRDE1MkY0OUU3MDA2Mjc5M0IgLyogRGljdGF0aW9uQWx0
ZXJuYXRpdmVDb250cm9sbGVyLm1tICovLAorCQkJCUNFREJCRjFDMTUyRjQ5RTcwMDYyNzkzQiAv
KiBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIuaCAqLywKIAkJCQk4MzczNDM1QTA2MjRF
RTBEMDBGM0IyODkgLyogV2ViQXJjaGl2ZS5oICovLAogCQkJCTgzNzM0MzVCMDYyNEVFMEQwMEYz
QjI4OSAvKiBXZWJBcmNoaXZlLm1tICovLAogCQkJCTQ0QkI4QjEzMTI0MUEwMjIwMDFFM0EyMiAv
KiBXZWJBcmNoaXZlSW50ZXJuYWwuaCAqLywKQEAgLTE2NTAsNiArMTY1Niw3IEBACiAJCQkJMzEy
RTJGRTUxNEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzEyRTJGRTkxNEU0ODIxNTAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbkludGVybmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRURBMTJEQzE1MkNCRTY4MDBEOUUwOEQgLyogV2ViQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRURCQkYxRTE1MkY0OUU3
MDA2Mjc5M0IgLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTIwMzgsNiArMjA0NSw3IEBACiAJCQkJNDFGNDQ4NTAxMDMzOEU4QzAwMzBFNTVFIC8q
IFdlYldvcmtlcnNQcml2YXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyRTJGRTYxNEU0ODE4
MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFREEx
MkRCMTUyQ0JFNjgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0gaW4gU291
cmNlcyAqLywKKwkJCQlDRURCQkYxRjE1MkY0OUU3MDA2Mjc5M0IgLyogRGljdGF0aW9uQWx0ZXJu
YXRpdmVDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0KaW5kZXggNjU4M2NlZTY2MjEx
MTA3NmMxZTAyNDcyNmVlY2JiMGE4ZjU0MDc5MC4uNjgxMGEyNzgwYjlmMzk2ZGEwZDMyMmJkNjNh
Y2Y2MDEyYTllMzA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvQ29ycmVjdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L0NvcnJlY3Rpb25QYW5lbC5tbQpAQCAtMjUsNyArMjUsNiBAQAogI2ltcG9ydCAiQ29ycmVj
dGlvblBhbmVsLmgiCiAKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgotI2ltcG9ydCAiV2Vi
Vmlld1ByaXZhdGUuaCIKIAogI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpAQCAtMTMxLDcgKzEzMCw3IEBAIHZvaWQgQ29ycmVjdGlvblBhbmVs
OjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJlcGxhY2VtZW50
LCBOCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBbbV92aWV3LmdldCgpIGhhbmRs
ZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDphY2NlcHRlZFJlcGxhY2VtZW50XTsKKyAgICBbbV92aWV3
LmdldCgpIGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0OmFjY2VwdGVkUmVwbGFjZW1lbnRd
OwogICAgIG1fdmlldy5jbGVhcigpOwogICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQogICAg
ICAgICBtX3Jlc3VsdEZvckRpc21pc3NhbC5hZG9wdE5TKFthY2NlcHRlZFJlcGxhY2VtZW50IGNv
cHldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggN2VkZmFjZTBhZTM0NjgxNDE5N2NkYjE1
NmQ2YmIzNmNkNmIxZDFkNy4uZjRjMmJmNTcyMDU5MzJlYjhjZTIyMzI1Yjg0ODJjOWEzZTdjYWU0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmUoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlz
c2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlz
c0FsdGVybmF0aXZlU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVU
ZXh0KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNw
b25zZShXZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBk
aWN0YXRpb25Db250ZXh0KSBPVkVSUklERTsKIHByaXZhdGU6CiAgICAgV2ViVmlldyogbV93ZWJW
aWV3OwogI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5t
bQppbmRleCA2OTcyZmI0YmE5MzJlMjRjZGJiMDQ5OWNlNDhlZjZlYTI0ZWQ1MmNkLi40YmRiOTQy
MzY2YzM2ZDNmZGZiZjZjMGRkNzM5NzBkMGMwZjYyMDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
Lm1tCkBAIC0yNSw2ICsyNSw4IEBACiAKICNpbmNsdWRlICJXZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQuaCIKIAorI2luY2x1ZGUgIldlYlZpZXdJbnRlcm5hbC5oIgorCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpXZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQoV2ViVmlldyogd2ViVmlldykKQEAgLTY5LDMgKzcxLDEwIEBAIHZvaWQgV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0
aW9uUmVzcG9uCiBDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2Uo
bV93ZWJWaWV3LCByZXNwb25zZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKTsK
ICNlbmRpZgogfQorCit2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVtb3ZlRGljdGF0
aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisjaWYgVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgW21fd2ViVmlldyBfcmVtb3ZlRGljdGF0aW9uQWx0
ZXJuYXRpdmVzOmRpY3RhdGlvbkNvbnRleHRdOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L0RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9EaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jZWU4OWE4ZDRmMWM0ZDlmN2MyYjU1MDRhNmYzN2E0NWYxZGM5OGM1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9EaWN0YXRpb25BbHRl
cm5hdGl2ZUNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXJfaAorI2RlZmluZSBEaWN0YXRpb25BbHRl
cm5hdGl2ZUNvbnRyb2xsZXJfaAorCisjaW5jbHVkZSA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRD
bGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgVVNFKERJQ1RBVElP
Tl9BTFRFUk5BVElWRVMpCitPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKK09CSkNfQ0xB
U1MgV2ViVmlldzsKKworY2xhc3MgRGljdGF0aW9uQ29udGV4dENvbnRyb2xsZXI7CisKK2NsYXNz
IERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlciB7CitwdWJsaWM6CisgICAgRGljdGF0aW9u
QWx0ZXJuYXRpdmVDb250cm9sbGVyKCkgeyB9CisgICAgLy8gUmV0dXJucyBhIGRpY3RhdGlvbiBj
b250ZXh0IElELgorICAgIHVpbnQ2NF90IGFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8
TlNUZXh0QWx0ZXJuYXRpdmVzPiYpOworICAgIHZvaWQgY2xlYXIoKTsKKyAgICB2b2lkIHNob3dB
bHRlcm5hdGl2ZXMoV2ViVmlldyosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdC
b3hPZkRpY3RhdGVkU3RyaW5nLCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKKyAgICB2b2lk
IGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKKyAgICB2b2lkIHJlbW92ZUFsdGVybmF0aXZlcyh1aW50
NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGhhbmRsZUFjY2Vw
dGVkQWx0ZXJuYXRpdmUoTlNTdHJpbmcqIGFjY2VwdGVkQWx0ZXJuYXRpdmUsIHVpbnQ2NF90IGRp
Y3RhdGlvbkNvbnRleHQsIE5TVGV4dEFsdGVybmF0aXZlcyopOworCisgICAgY2xhc3MgRGljdGF0
aW9uQ29udGV4dENvbnRyb2xsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgRGljdGF0aW9uQ29u
dGV4dENvbnRyb2xsZXIoKSB7IH0KKyAgICAgICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNv
bnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7CisgICAgICAgIHZvaWQgY2xlYXIo
KTsKKyAgICAgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25D
b250ZXh0KHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOworICAgICAgICB2b2lkIHJlbW92ZUFs
dGVybmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRleHQodWludDY0X3QgZGljdGF0aW9uQ29udGV4dCk7
CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBpbnZhbGlkQ29udGV4dCA9IDA7CisgICAg
cHJpdmF0ZToKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZXRhaW5QdHI8TlNU
ZXh0QWx0ZXJuYXRpdmVzPiA+IEhhc2hNYXBUeXBlOworICAgICAgICBIYXNoTWFwVHlwZSBtX2Fs
dGVybmF0aXZlc09iamVjdE1hcDsKKyAgICB9OworCisgICAgRGljdGF0aW9uQ29udGV4dENvbnRy
b2xsZXIgbV9jb250ZXh0Q29udHJvbGxlcjsKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gbV92aWV3
OworfTsKKyNlbmRpZgorI2VuZGlmIC8vIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L0RpY3RhdGlvbkFsdGVybmF0
aXZlQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvRGljdGF0aW9uQWx0
ZXJuYXRpdmVDb250cm9sbGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzMmNiZDg1MTA0ODYzMDlmMDdkZjAy
MTMwYzQzNGJlMmVmOWRiNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L0RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5tbQpAQCAtMCwwICsxLDExMSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgIkRpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5o
IgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisKKyNpbXBvcnQgPEFwcEtpdC9O
U1NwZWxsQ2hlY2tlci5oPgorI2ltcG9ydCA8QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgor
I2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
Cit1aW50NjRfdCBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OkRpY3RhdGlvbkNvbnRl
eHRDb250cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVy
bmF0aXZlcz4mIGFsdGVybmF0aXZlcykKK3sKKyAgICB1aW50NjRfdCBjb250ZXh0ID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KGFsdGVybmF0aXZlcy5nZXQoKSk7CisgICAgaWYgKCFjb250
ZXh0KQorICAgICAgICByZXR1cm4gaW52YWxpZENvbnRleHQ7CisgICAgaWYgKGFsdGVybmF0aXZl
c0ZvckRpY3RhdGlvbkNvbnRleHQoY29udGV4dCkpCisgICAgICAgIHJldHVybiBjb250ZXh0Owor
CisgICAgSGFzaE1hcFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2FsdGVybmF0aXZlc09iamVj
dE1hcC5hZGQoY29udGV4dCwgYWx0ZXJuYXRpdmVzKTsKKyAgICByZXR1cm4gcmVzdWx0LmlzTmV3
RW50cnkgPyBjb250ZXh0IDogaW52YWxpZENvbnRleHQ7Cit9CisKK05TVGV4dEFsdGVybmF0aXZl
cyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpEaWN0YXRpb25Db250ZXh0Q29udHJv
bGxlcjo6YWx0ZXJuYXRpdmVzRm9yRGljdGF0aW9uQ29udGV4dCh1aW50NjRfdCBkaWN0YXRpb25D
b250ZXh0KQoreworICAgIEhhc2hNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBpdHIgPSBtX2FsdGVy
bmF0aXZlc09iamVjdE1hcC5maW5kKGRpY3RhdGlvbkNvbnRleHQpOworICAgIGlmIChpdHIgPT0g
bV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAg
IHJldHVybiBpdHItPnNlY29uZC5nZXQoKTsKK30KKwordm9pZCBEaWN0YXRpb25BbHRlcm5hdGl2
ZUNvbnRyb2xsZXI6OkRpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyOjpyZW1vdmVBbHRlcm5hdGl2
ZXNGb3JEaWN0YXRpb25Db250ZXh0KHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAg
bV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAucmVtb3ZlKGRpY3RhdGlvbkNvbnRleHQpOworfQorCit2
b2lkIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4dENvbnRy
b2xsZXI6OmNsZWFyKCkKK3sKKyAgICBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5jbGVhcigpOwor
fQorCit1aW50NjRfdCBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OmFkZEFsdGVybmF0
aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYgYWx0ZXJuYXRpdmVzKQor
eworICAgIHJldHVybiBtX2NvbnRleHRDb250cm9sbGVyLmFkZEFsdGVybmF0aXZlcyhhbHRlcm5h
dGl2ZXMpOworfQorCit2b2lkIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6Y2xlYXIo
KQoreworICAgIHJldHVybiBtX2NvbnRleHRDb250cm9sbGVyLmNsZWFyKCk7Cit9CisKK3ZvaWQg
RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpzaG93QWx0ZXJuYXRpdmVzKFdlYlZpZXcq
IHZpZXcsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkU3Ry
aW5nLCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIGRpc21pc3NBbHRlcm5hdGl2
ZXMoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybjsKKyAgICBtX3ZpZXcgPSB2aWV3
OworICAgIE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVzID0gbV9jb250ZXh0Q29udHJv
bGxlci5hbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KGRpY3RhdGlvbkNvbnRleHQpOwor
ICAgIGlmICghYWx0ZXJuYXRpdmVzKQorICAgICAgICByZXR1cm47CisgICAgTlNTcGVsbENoZWNr
ZXIqIHNwZWxsQ2hlY2tlciA9IFtOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdOwor
ICAgIFtzcGVsbENoZWNrZXIgc2hvd0NvcnJlY3Rpb25JbmRpY2F0b3JPZlR5cGU6TlNDb3JyZWN0
aW9uSW5kaWNhdG9yVHlwZUd1ZXNzZXMgcHJpbWFyeVN0cmluZzphbHRlcm5hdGl2ZXMucHJpbWFy
eVN0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVzLmFsdGVybmF0aXZlU3RyaW5n
cyBmb3JTdHJpbmdJblJlY3Q6W3ZpZXcgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3OmJvdW5kaW5n
Qm94T2ZEaWN0YXRlZFN0cmluZ10gdmlldzptX3ZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6
XihOU1N0cmluZyogYWNjZXB0ZWRTdHJpbmcpIHsKKyAgICAgICAgaWYgKGFjY2VwdGVkU3RyaW5n
KQorICAgICAgICAgICAgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShhY2NlcHRlZFN0cmluZywg
ZGljdGF0aW9uQ29udGV4dCwgYWx0ZXJuYXRpdmVzKTsKKyAgICB9XTsKK30KKwordm9pZCBEaWN0
YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUoTlNT
dHJpbmcqIGFjY2VwdGVkQWx0ZXJuYXRpdmUsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQsIE5T
VGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVzKQoreworICAgIFthbHRlcm5hdGl2ZXMgbm90
ZVNlbGVjdGVkQWx0ZXJuYXRpdmVTdHJpbmc6YWNjZXB0ZWRBbHRlcm5hdGl2ZV07CisgICAgbV9j
b250ZXh0Q29udHJvbGxlci5yZW1vdmVBbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KGRp
Y3RhdGlvbkNvbnRleHQpOworICAgIFttX3ZpZXcuZ2V0KCkgaGFuZGxlQWNjZXB0ZWRBbHRlcm5h
dGl2ZVRleHQ6YWNjZXB0ZWRBbHRlcm5hdGl2ZV07CisgICAgbV92aWV3LmNsZWFyKCk7Cit9CisK
K3ZvaWQgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpkaXNtaXNzQWx0ZXJuYXRpdmVz
KCkKK3sKKyAgICBpZiAoIW1fdmlldykKKyAgICAgICAgcmV0dXJuOworICAgIFtbTlNTcGVsbENo
ZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBkaXNtaXNzQ29ycmVjdGlvbkluZGljYXRvckZvclZp
ZXc6bV92aWV3LmdldCgpXTsKK30KKwordm9pZCBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xs
ZXI6OnJlbW92ZUFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAg
IG1fY29udGV4dENvbnRyb2xsZXIucmVtb3ZlQWx0ZXJuYXRpdmVzRm9yRGljdGF0aW9uQ29udGV4
dChkaWN0YXRpb25Db250ZXh0KTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0KaW5kZXggYTliMjkxZTQ5OWY4MDI5N2NjNzU2NzlmMzkwZWY2YmRlMDYx
YzRhNC4uY2ZkZmNhMTA4MDkxNWYxNjE3NWZjZjRlMzEyMjZjMzNmMmJmZDBmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC01ODg4LDYgKzU4ODgsMjIgQEAg
c3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcs
IFZlY3RvcjxDb21wb3NpdGlvblVuZGUKICAgICB9CiB9CiAKKyNpZiBVU0UoRElDVEFUSU9OX0FM
VEVSTkFUSVZFUykKK3N0YXRpYyB2b2lkIGNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVz
KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlPiYgYWx0ZXJuYXRpdmVzKSB7CisgICAgTlNSYW5nZSBlZmZlY3RpdmVSYW5nZSA9IE5TTWFr
ZVJhbmdlKDAsIDApOworICAgIE5TVUludGVnZXIgbGVuZ3RoID0gW3N0cmluZyBsZW5ndGhdOwor
ICAgIGRvIHsKKyAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW3N0cmluZyBhdHRy
aWJ1dGVzQXRJbmRleDplZmZlY3RpdmVSYW5nZS5sb2NhdGlvbiBlZmZlY3RpdmVSYW5nZTomZWZm
ZWN0aXZlUmFuZ2VdOworICAgICAgICBpZiAoIWF0dHJpYnV0ZXMpCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgTlNUZXh0QWx0ZXJuYXRpdmVzICp0ZXh0QWx0ZXJuYXRpdmVzID0gW2F0dHJp
YnV0ZXMgb2JqZWN0Rm9yS2V5Ok5TVGV4dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5hbWVdOworICAg
ICAgICBpZiAodGV4dEFsdGVybmF0aXZlcykKKyAgICAgICAgICAgIGFsdGVybmF0aXZlcy5hcHBl
bmQoVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlKHRleHRBbHRlcm5hdGl2ZXMsIGVmZmVjdGl2ZVJh
bmdlKSk7CisgICAgICAgIGVmZmVjdGl2ZVJhbmdlLmxvY2F0aW9uID0gTlNNYXhSYW5nZShlZmZl
Y3RpdmVSYW5nZSk7CisgICAgfSB3aGlsZSAoZWZmZWN0aXZlUmFuZ2UubG9jYXRpb24gPCBsZW5n
dGgpOworfQorI2VuZGlmCisKIC0gKHZvaWQpaW5zZXJ0VGV4dDooaWQpc3RyaW5nCiB7CiAgICAg
Qk9PTCBpc0F0dHJpYnV0ZWRTdHJpbmcgPSBbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TQXR0cmli
dXRlZFN0cmluZyBjbGFzc11dOwpAQCAtNTkwNCw3ICs1OTIwLDE0IEBAIHN0YXRpYyB2b2lkIGV4
dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9z
aXRpb25VbmRlCiAgICAgTlNSYW5nZSByZXBsYWNlbWVudFJhbmdlID0geyBOU05vdEZvdW5kLCAw
IH07CiAgICAgYm9vbCBpc0Zyb21JbnB1dE1ldGhvZCA9IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUt
PmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpOwogCisgICAgVmVjdG9yPERpY3RhdGlvbkFsdGVy
bmF0aXZlPiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9uczsKICAgICBpZiAoaXNBdHRyaWJ1
dGVkU3RyaW5nKSB7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgICAgIFZl
Y3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+IHRleHRBbHRlcm5hdGl2ZXM7CisgICAgICAg
IGNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzKHN0cmluZywgdGV4dEFsdGVybmF0aXZl
cyk7CisgICAgICAgIGlmICh0ZXh0QWx0ZXJuYXRpdmVzLnNpemUoKSkKKyAgICAgICAgICAgIFtb
c2VsZiBfd2ViVmlld10gX2dldFdlYkNvcmVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6ZGljdGF0aW9u
QWx0ZXJuYXRpdmVMb2NhdGlvbnMgZnJvbVRleHRBbHRlcm5hdGl2ZXM6dGV4dEFsdGVybmF0aXZl
c107CisjZW5kaWYKICAgICAgICAgLy8gRklYTUU6IFdlIGlnbm9yZSBtb3N0IGF0dHJpYnV0ZXMg
ZnJvbSB0aGUgc3RyaW5nLCBzbyBmb3IgZXhhbXBsZSBpbnNlcnRpbmcgZnJvbSBDaGFyYWN0ZXIg
UGFsZXR0ZSBsb3NlcyBmb250IGFuZCBnbHlwaCB2YXJpYXRpb24gZGF0YS4KICAgICAgICAgLy8g
SXQgZG9lcyBub3QgbG9vayBsaWtlIGFueSBpbnB1dCBtZXRob2RzIGV2ZXIgdXNlIGluc2VydFRl
eHQ6IHdpdGggYXR0cmlidXRlcyBvdGhlciB0aGFuIE5TVGV4dElucHV0UmVwbGFjZW1lbnRSYW5n
ZUF0dHJpYnV0ZU5hbWUuCiAgICAgICAgIHRleHQgPSBbc3RyaW5nIHN0cmluZ107CkBAIC01OTQz
LDcgKzU5NjYsMTEgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVk
U3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUKICAgICBpZiAoIWNvcmVGcmFt
ZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkpIHsKICAgICAgICAgLy8gQW4gaW5zZXJ0VGV4
dDogbWlnaHQgYmUgaGFuZGxlZCBieSBvdGhlciByZXNwb25kZXJzIGluIHRoZSBjaGFpbiBpZiB3
ZSBkb24ndCBoYW5kbGUgaXQuCiAgICAgICAgIC8vIE9uZSBleGFtcGxlIGlzIHNwYWNlIGJhciB0
aGF0IHJlc3VsdHMgaW4gc2Nyb2xsaW5nIGRvd24gdGhlIHBhZ2UuCi0gICAgICAgIGV2ZW50SGFu
ZGxlZCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoZXZlbnRUZXh0LCBldmVudCk7
CisKKyAgICAgICAgaWYgKGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLnNpemUoKSkKKyAg
ICAgICAgICAgIGV2ZW50SGFuZGxlZCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCktPmluc2VydERpY3Rh
dGVkVGV4dChldmVudFRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBldmVudCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGV2ZW50SGFuZGxlZCA9IGNvcmVGcmFtZS0+ZWRp
dG9yKCktPmluc2VydFRleHQoZXZlbnRUZXh0LCBldmVudCk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgZXZlbnRIYW5kbGVkID0gdHJ1ZTsKICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+Y29u
ZmlybUNvbXBvc2l0aW9uKGV2ZW50VGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KaW5kZXggNGZiNWRmOTVkZWRkM2I1YmUyZmIxZTQwNjlmYjgxNDlhYzE5OTQ0Mi4uNzJkYTQw
OWRkYjg0M2Q3ZjA5NDgyZWY1MWYzODE2N2E5YzM5ZmU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCAiV2ViVmlld0ludGVybmFs
LmgiCiAjaW1wb3J0ICJXZWJWaWV3RGF0YS5oIgogCisjaW1wb3J0ICJEaWN0YXRpb25BbHRlcm5h
dGl2ZUNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIkRPTUNTU1N0eWxlRGVjbGFyYXRpb25JbnRlcm5h
bC5oIgogI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01SYW5nZUludGVy
bmFsLmgiCkBAIC01NDk5LDE2ICs1NTAwLDYgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0
b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBqc1ZhbHUKIAog
I2VuZGlmCiAKLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0tICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJl
c3VsdDooTlNTdHJpbmcqKXJlc3VsdAotewotICAgIFdlYkZyYW1lICp3ZWJGcmFtZSA9IFtzZWxm
IF9zZWxlY3RlZE9yTWFpbkZyYW1lXTsKLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh3ZWJG
cmFtZSk7Ci0gICAgaWYgKGNvcmVGcmFtZSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+
aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0KTsKLX0KLSNlbmRpZgotCiBAZW5k
CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJWaWV3IChXZWJWaWV3VW5kb2FibGVFZGl0aW5nKQpAQCAt
NjM2OCw2ICs2MzU5LDMzIEBAIHN0YXRpYyB2b2lkIGdsaWJDb250ZXh0SXRlcmF0aW9uQ2FsbGJh
Y2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5CiB9CiAjZW5kaWYKIAor
I2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKy0gKHZvaWQpaGFuZGxlQWNjZXB0ZWRBbHRl
cm5hdGl2ZVRleHQ6KE5TU3RyaW5nKil0ZXh0Cit7CisgICAgV2ViRnJhbWUgKndlYkZyYW1lID0g
W3NlbGYgX3NlbGVjdGVkT3JNYWluRnJhbWVdOworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3Jl
KHdlYkZyYW1lKTsKKyAgICBpZiAoY29yZUZyYW1lKQorICAgICAgICBjb3JlRnJhbWUtPmVkaXRv
cigpLT5oYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdCh0ZXh0KTsKK30KKyNlbmRpZgorCisj
aWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCistICh2b2lkKV9nZXRXZWJDb3JlRGljdGF0
aW9uQWx0ZXJuYXRpdmVzOihWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JilhbHRlcm5hdGl2
ZXMgZnJvbVRleHRBbHRlcm5hdGl2ZXM6KGNvbnN0IFZlY3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRo
UmFuZ2U+JilhbHRlcm5hdGl2ZXNXaXRoUmFuZ2UKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGFsdGVybmF0aXZlc1dpdGhSYW5nZS5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UmIGFsdGVybmF0aXZlV2l0aFJhbmdlID0gYWx0ZXJuYXRp
dmVzV2l0aFJhbmdlW2ldOworICAgICAgICB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0ID0gX3By
aXZhdGUtPm1fZGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLT5hZGRBbHRlcm5hdGl2ZXMo
YWx0ZXJuYXRpdmVXaXRoUmFuZ2UuYWx0ZXJuYXRpdmUpOworICAgICAgICBpZiAoZGljdGF0aW9u
Q29udGV4dCkKKyAgICAgICAgICAgIGFsdGVybmF0aXZlcy5hcHBlbmQoRGljdGF0aW9uQWx0ZXJu
YXRpdmUoYWx0ZXJuYXRpdmVXaXRoUmFuZ2UucmFuZ2UubG9jYXRpb24sIGFsdGVybmF0aXZlV2l0
aFJhbmdlLnJhbmdlLmxlbmd0aCwgZGljdGF0aW9uQ29udGV4dCkpOworICAgIH0KK30KKworLSAo
dm9pZClfcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOih1aW50NjRfdClkaWN0YXRpb25Db250
ZXh0Cit7CisgICAgX3ByaXZhdGUtPm1fZGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLT5y
ZW1vdmVBbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCk7Cit9CisjZW5kaWYKKwogLSAoTlNQ
b2ludClfY29udmVydFBvaW50RnJvbVJvb3RWaWV3OihOU1BvaW50KXBvaW50CiB7CiAgICAgcmV0
dXJuIE5TTWFrZVBvaW50KHBvaW50LngsIFtzZWxmIGJvdW5kc10uc2l6ZS5oZWlnaHQgLSBwb2lu
dC55KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAppbmRleCBlYTJiZmNm
NjA3NGU5YTUxMWMzYzNlYWUyZGI0ZmY1ZTVlYzNjNGY2Li5iZmUxMWM3ZDZkMTQ2NzYxOTcxZTQ1
NjExNDg3ODhjMTQ4MGZkN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXdEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0
YS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKICNp
bXBvcnQgIldlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgiCisjaW1wb3J0IDxXZWJD
b3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9MYXllckZsdXNo
U2NoZWR1bGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xheWVyRmx1c2hTY2hlZHVsZXJDbGllbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TdHJpbmcuaD4KQEAgLTU4LDYgKzU5LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogQGNsYXNzIFdlYkZ1bGxTY3JlZW5Db250cm9sbGVyOwogI2Vu
ZGlmCiAKK2NsYXNzIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjsKKwogZXh0ZXJuIEJP
T0wgYXBwbGljYXRpb25Jc1Rlcm1pbmF0aW5nOwogZXh0ZXJuIGludCBwbHVnaW5EYXRhYmFzZUNs
aWVudENvdW50OwogCkBAIC0yMDAsNSArMjAzLDkgQEAgcHJpdmF0ZToKICAgICBpbnQgdmFsaWRh
dGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb247CiAKICAgICBmbG9hdCBjdXN0b21EZXZpY2VT
Y2FsZUZhY3RvcjsKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIE93blB0
cjxEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI+IG1fZGljdGF0aW9uQWx0ZXJuYXRpdmVD
b250cm9sbGVyOworI2VuZGlmCiB9CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3RGF0YS5tbQppbmRleCAwYjgxMTdhMDk3MDZkNWI2ZWM0ZTY0NTdjMzM5OGU0NzYyNmM1OGJh
Li4yMzQ2ODJlNWYwM2Y1MTQwYzI0ZGY4NDU5MmJhMDFhODVlNmYwMWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KQEAgLTI5LDYgKzI5LDcgQEAKIAogI2ltcG9y
dCAiV2ViVmlld0RhdGEuaCIKIAorI2ltcG9ydCAiRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9s
bGVyLmgiCiAjaW1wb3J0ICJXZWJLaXRMb2dnaW5nLmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaCIKICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KQEAg
LTEwMCw2ICsxMDEsMTAgQEAgTGF5ZXJGbHVzaENvbnRyb2xsZXI6OkxheWVyRmx1c2hDb250cm9s
bGVyKFdlYlZpZXcqIHdlYlZpZXcpCiAKICAgICBwbHVnaW5EYXRhYmFzZUNsaWVudENvdW50Kys7
CiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBtX2RpY3RhdGlvbkFsdGVy
bmF0aXZlQ29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRy
b2xsZXIpOworI2VuZGlmCisKICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggMDJjYzU1MDEwNmIwNDRmYmMxNzdj
OWY1OWExZjgzZjU5MGRlNTBiMC4uMmJkYTI5ZmVjNjlmYzUwOTc4NmE0MWNmYTQ2MzliMTUwZDc5
MjlhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJu
YWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBA
IC0zNCwyMCArMzQsMjUgQEAKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKIAogI2lmZGVm
IF9fY3BsdXNwbHVzCisjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9GaW5kT3B0aW9ucy5oPgorI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJl
Y3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUtleWJvYXJkVUlNb2RlLmg+CiAKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEVsZW1lbnQ7Ci0gICAgY2xhc3MgRnJhbWU7Ci0gICAg
Y2xhc3MgSGlzdG9yeUl0ZW07Ci0gICAgY2xhc3MgS1VSTDsKLSAgICBjbGFzcyBLZXlib2FyZEV2
ZW50OwotICAgIGNsYXNzIFBhZ2U7Ci0gICAgY2xhc3MgUmVuZGVyQm94OwotICAgIGNsYXNzIE5v
ZGU7CitjbGFzcyBFbGVtZW50OworY2xhc3MgRXZlbnQ7CitjbGFzcyBGcmFtZTsKK2NsYXNzIEhp
c3RvcnlJdGVtOworY2xhc3MgS1VSTDsKK2NsYXNzIEtleWJvYXJkRXZlbnQ7CitjbGFzcyBQYWdl
OworY2xhc3MgUmVuZGVyQm94OworY2xhc3MgTm9kZTsKK3N0cnVjdCBEaWN0YXRpb25BbHRlcm5h
dGl2ZTsKIH0KICNlbmRpZgogCkBAIC01OSw2ICs2NCwyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlv
bnMpOwogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCitPQkpDX0NMQVNTIE5TVGV4
dEFsdGVybmF0aXZlczsKKworc3RydWN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSB7CisgICAg
VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlKE5TVGV4dEFsdGVybmF0aXZlcyogYW5BbHRlcm5hdGl2
ZSwgTlNSYW5nZSBhUmFuZ2UpCisgICAgOiByYW5nZShhUmFuZ2UpCisgICAgLCBhbHRlcm5hdGl2
ZShhbkFsdGVybmF0aXZlKQorICAgIHsgfQorCisgICAgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdl
KGNvbnN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSYgYW5vdGhlcikKKyAgICA6IHJhbmdlKGFu
b3RoZXIucmFuZ2UpCisgICAgLCBhbHRlcm5hdGl2ZShhbm90aGVyLmFsdGVybmF0aXZlKQorICAg
IHsgfQorCisgICAgTlNSYW5nZSByYW5nZTsKKyAgICBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRp
dmVzPiBhbHRlcm5hdGl2ZTsKK307CisKKyNlbmRpZgorCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdl
YlZpZXdFZGl0aW5nRXh0cmFzKQogLSAoQk9PTClfc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5n
ZTooRE9NUmFuZ2UgKiljdXJyZW50UmFuZ2UgdG9ET01SYW5nZTooRE9NUmFuZ2UgKilwcm9wb3Nl
ZFJhbmdlIGFmZmluaXR5OihOU1NlbGVjdGlvbkFmZmluaXR5KXNlbGVjdGlvbkFmZmluaXR5IHN0
aWxsU2VsZWN0aW5nOihCT09MKWZsYWc7CiBAZW5kCkBAIC05NSw2ICsxMjAsMTUgQEAgV2ViQ29y
ZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMgb3B0aW9ucyk7CiAtICh2
b2lkKV9zY2hlZHVsZUdsaWJDb250ZXh0SXRlcmF0aW9uczsKICNlbmRpZgogCisjaWYgVVNFKEFV
VE9DT1JSRUNUSU9OX1BBTkVMKQorLSAodm9pZCloYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4
dDooTlNTdHJpbmcqKXRleHQ7CisjZW5kaWYKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQorLSAodm9pZClfZ2V0V2ViQ29yZURpY3RhdGlvbkFsdGVybmF0aXZlczooVmVjdG9yPFdl
YkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiYpYWx0ZXJuYXRpdmVzIGZyb21UZXh0QWx0ZXJu
YXRpdmVzOihjb25zdCBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYpYWx0ZXJuYXRp
dmVzV2l0aFJhbmdlOworLSAodm9pZClfcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOih1aW50
NjRfdClkaWN0YXRpb25Db250ZXh0OworI2VuZGlmCisKIEBlbmQKIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKaW5kZXggMDJmN2JjYzQ1NjdkNzY1
YzdiZDNhNDM0ZjI1NzI2YTYxMDNlMzEzMC4uODI4OWIxMmMxODhiZWRhZjA1MTA0NmZhNjgyMjI3
NTJlZTk4ZGQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUu
aApAQCAtNjg3LDkgKzY4Nyw2IEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgog
LSAodm9pZClzZXRBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkOihCT09MKWZsYWc7
CiAtICh2b2lkKXRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbjooaWQpc2VuZGVyOwog
I2VuZGlmCi0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJ
TERJTkdfT05fU05PV19MRU9QQVJEKQotLSAodm9pZCloYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1
bHQ6KE5TU3RyaW5nKilyZXN1bHQ7Ci0jZW5kaWYKIEBlbmQKIAogQGludGVyZmFjZSBXZWJWaWV3
IChXZWJWaWV3RWRpdGluZ0luTWFpbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggYzZhMTY3M2I0Y2Q0NTQyNDEzOTBmYmE5ZTZiOGI1
NTdiMmMyNTBkMy4uN2NlN2JhNTFjMDFmMGE2NGExMTA4MTM1MmQ2MmQ3ZmIzOTZlMGY4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NyZWRlbnRpYWwuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0N1cnNvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VEZXRhaWxzLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRHJhZ1Nlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRmlsZUNob29zZXIuaD4KQEAgLTUzMSw2ICs1MzIsMjQgQEAgYm9vbCBBcmd1
bWVudENvZGVyPERhdGFiYXNlRGV0YWlscz46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29k
ZXIsIERhdGFiYXNlRGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVy
PERpY3RhdGlvbkFsdGVybmF0aXZlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rlciwg
Y29uc3QgRGljdGF0aW9uQWx0ZXJuYXRpdmUmIGRpY3RhdGlvbkFsdGVybmF0aXZlKQoreworICAg
IGVuY29kZXItPmVuY29kZShkaWN0YXRpb25BbHRlcm5hdGl2ZS5yYW5nZVN0YXJ0KTsKKyAgICBl
bmNvZGVyLT5lbmNvZGUoZGljdGF0aW9uQWx0ZXJuYXRpdmUucmFuZ2VMZW5ndGgpOworICAgIGVu
Y29kZXItPmVuY29kZShkaWN0YXRpb25BbHRlcm5hdGl2ZS5kaWN0YXRpb25Db250ZXh0KTsKK30K
KworYm9vbCBBcmd1bWVudENvZGVyPERpY3RhdGlvbkFsdGVybmF0aXZlPjo6ZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciogZGVjb2RlciwgRGljdGF0aW9uQWx0ZXJuYXRpdmUmIGRpY3RhdGlvbkFsdGVy
bmF0aXZlKQoreworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRpY3RhdGlvbkFsdGVybmF0aXZl
LnJhbmdlU3RhcnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoZGljdGF0aW9uQWx0ZXJuYXRpdmUucmFuZ2VMZW5ndGgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZGljdGF0aW9uQWx0ZXJuYXRpdmUuZGlj
dGF0aW9uQ29udGV4dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogCiB2b2lkIEFyZ3VtZW50Q29kZXI8RmlsZUNob29zZXJTZXR0aW5ncz46OmVuY29kZShB
cmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmIHNldHRp
bmdzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CmluZGV4IDAzM2UxNzk0Y2JjMjdkOGNkNzk4OTgwNmJhYzIzYjg4MTkyYjNkZDguLmQwMjllNjVl
NThkMjM4NzBlZjQ4Y2IxOWY5YzJlMjJiNGYwYzk5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogICAgIHN0cnVjdCBDb21wb3NpdGlvblVuZGVybGluZTsKKyAgICBzdHJ1Y3Qg
RGljdGF0aW9uQWx0ZXJuYXRpdmU7CiAgICAgc3RydWN0IERyYWdTZXNzaW9uOwogICAgIHN0cnVj
dCBGaWxlQ2hvb3NlclNldHRpbmdzOwogICAgIHN0cnVjdCBHcmFtbWFyRGV0YWlsOwpAQCAtMjAz
LDYgKzIwNCwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkRh
dGFiYXNlRGV0YWlscz4gewogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIq
LCBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMmKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+IHsKKyAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6RGljdGF0aW9uQWx0
ZXJuYXRpdmUmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2Vi
Q29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmUmKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncz4gewogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNl
dHRpbmdzJik7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNv
cmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IGE5ZDdhOWZhOTQ2Yzk3YzgzODczOWNi
MDZlNGQyZTI0NDhmNTBiNmEuLjAzYTI0ZDVjNWQ0MTE4Nzg4NDhmY2M1MDc3NTkxODY5MzMwNzc1
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGll
bnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVu
dEltcGwuaApAQCAtMzUsNiArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3Mg
RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOwogY2xhc3MgRmluZEluZGljYXRvcldpbmRv
dzsKIAogY2xhc3MgUGFnZUNsaWVudEltcGwgOiBwdWJsaWMgUGFnZUNsaWVudCB7CkBAIC0xMjks
MTEgKzEzMCwxNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBXS1ZpZXcqIHdrVmlldygpIGNv
bnN0IHsgcmV0dXJuIG1fd2tWaWV3OyB9CiAKKyAgICB2aXJ0dWFsIHVpbnQ2NF90IGFkZERpY3Rh
dGlvbkFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpOwor
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGlj
dGF0aW9uQ29udGV4dCk7CisKICAgICBXS1ZpZXcqIG1fd2tWaWV3OwogICAgIFJldGFpblB0cjxX
S0VkaXRvclVuZG9UYXJnZXRPYmpDPiBtX3VuZG9UYXJnZXQ7CiAjaWYgIWRlZmluZWQoQlVJTERJ
TkdfT05fU05PV19MRU9QQVJEKQogICAgIENvcnJlY3Rpb25QYW5lbCBtX2NvcnJlY3Rpb25QYW5l
bDsKICNlbmRpZgorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIE93blB0cjxE
aWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI+IG1fZGljdGF0aW9uQWx0ZXJuYXRpdmVDb250
cm9sbGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KaW5kZXggNzJl
YTM0OTNlMWE2Nzk0M2Q1NmU3YjU1ZTk0N2NiMzA5ZDVjM2Y4NC4uNDM4NjZkZjk3NDBhZjk2MjU4
MDE5ZjVkMzIwZTM2NTFiNGRiODY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAgLTI2LDcgKzI2LDExIEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnRJbXBsLmgiCiAKKyNpZiBVU0UoRElDVEFU
SU9OX0FMVEVSTkFUSVZFUykKKyNpbXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4K
KyNlbmRpZgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgorI2ltcG9ydCAiRGljdGF0aW9uQWx0
ZXJuYXRpdmVDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJEaWN0aW9uYXJ5UG9wdXBJbmZvLmgiCiAj
aW1wb3J0ICJGaW5kSW5kaWNhdG9yLmgiCiAjaW1wb3J0ICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50
LmgiCkBAIC0xMjIsNiArMTI2LDkgQEAgUGFzc093blB0cjxQYWdlQ2xpZW50SW1wbD4gUGFnZUNs
aWVudEltcGw6OmNyZWF0ZShXS1ZpZXcqIHdrVmlldykKIFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xp
ZW50SW1wbChXS1ZpZXcqIHdrVmlldykKICAgICA6IG1fd2tWaWV3KHdrVmlldykKICAgICAsIG1f
dW5kb1RhcmdldChBZG9wdE5TLCBbW1dLRWRpdG9yVW5kb1RhcmdldE9iakMgYWxsb2NdIGluaXRd
KQorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgICwgbV9kaWN0YXRpb25BbHRl
cm5hdGl2ZUNvbnRyb2xsZXIoYWRvcHRQdHIobmV3IERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJv
bGxlcikpCisjZW5kaWYKIHsKIH0KIApAQCAtMjA5LDEwICsyMTYsMTMgQEAgdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6cHJvY2Vzc0RpZENyYXNoKCkKIHsKICAgICBbbV93a1ZpZXcgX3Byb2Nlc3NEaWRD
cmFzaF07CiB9Ci0gICAgCisKIHZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQoKQogewog
ICAgIFttX3drVmlldyBfcGFnZUNsb3NlZF07CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElW
RVMpCisgICAgbV9kaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXItPmNsZWFyKCk7CisjZW5k
aWYKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkKQEAgLTUy
OSw0ICs1MzksMjAgQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6ZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5
U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvclN0cmluZykKICAgICByZXR1cm4gW21fd2tW
aWV3IF9leGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3RvcjpOU1NlbGVjdG9yRnJvbVN0cmluZyhz
ZWxlY3RvclN0cmluZyldOwogfQogCit1aW50NjRfdCBQYWdlQ2xpZW50SW1wbDo6YWRkRGljdGF0
aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBhbHRl
cm5hdGl2ZXMpCit7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgcmV0dXJu
IG1fZGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLT5hZGRBbHRlcm5hdGl2ZXMoYWx0ZXJu
YXRpdmVzKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKwordm9pZCBQYWdlQ2xp
ZW50SW1wbDo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNv
bnRleHQpCit7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgbV9kaWN0YXRp
b25BbHRlcm5hdGl2ZUNvbnRyb2xsZXItPnJlbW92ZUFsdGVybmF0aXZlcyhkaWN0YXRpb25Db250
ZXh0KTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCBjMzJmOTAwNDg5OTRkYmRiZWE0MzUw
NzQyMzdhOTkxOTEzNjFhMTk5Li42MjA5YjU3YzI3MjY5NDFjMTg0NDZmNjY0OWRhYjE0Y2JkNWI3
YzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0y
Niw2ICsyNiwxMiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS1ZpZXcuaCIKIAor
I2ltcG9ydCAiVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmgiCisjaWYgVVNFKERJQ1RBVElPTl9B
TFRFUk5BVElWRVMpCisjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CisjaW1w
b3J0IDxBcHBLaXQvTlNBdHRyaWJ1dGVkU3RyaW5nLmg+CisjZW5kaWYKKwogI2ltcG9ydCAiQXR0
cmlidXRlZFN0cmluZy5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRHJh
d2luZ0FyZWFQcm94eUltcGwuaCIKQEAgLTExNTEsNiArMTE1NywyMiBAQCBzdGF0aWMgY29uc3Qg
c2hvcnQga0lPSElERXZlbnRUeXBlU2Nyb2xsID0gNjsKICAgICBbc2VsZiBpbnNlcnRUZXh0OnN0
cmluZyByZXBsYWNlbWVudFJhbmdlOk5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApXTsKIH0KIAor
I2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorc3RhdGljIHZvaWQgY29sbGVjdERpY3Rh
dGlvblRleHRBbHRlcm5hdGl2ZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBhbHRlcm5hdGl2ZXMpIHsKKyAgICBOU1JhbmdlIGVm
ZmVjdGl2ZVJhbmdlID0gTlNNYWtlUmFuZ2UoMCwgMCk7CisgICAgTlNVSW50ZWdlciBsZW5ndGgg
PSBbc3RyaW5nIGxlbmd0aF07CisgICAgZG8geworICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJp
YnV0ZXMgPSBbc3RyaW5nIGF0dHJpYnV0ZXNBdEluZGV4OmVmZmVjdGl2ZVJhbmdlLmxvY2F0aW9u
IGVmZmVjdGl2ZVJhbmdlOiZlZmZlY3RpdmVSYW5nZV07CisgICAgICAgIGlmICghYXR0cmlidXRl
cykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBOU1RleHRBbHRlcm5hdGl2ZXMgKnRleHRB
bHRlcm5hdGl2ZXMgPSBbYXR0cmlidXRlcyBvYmplY3RGb3JLZXk6TlNUZXh0QWx0ZXJuYXRpdmVz
QXR0cmlidXRlTmFtZV07CisgICAgICAgIGlmICh0ZXh0QWx0ZXJuYXRpdmVzKQorICAgICAgICAg
ICAgYWx0ZXJuYXRpdmVzLmFwcGVuZChUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UodGV4dEFsdGVy
bmF0aXZlcywgZWZmZWN0aXZlUmFuZ2UpKTsKKyAgICAgICAgZWZmZWN0aXZlUmFuZ2UubG9jYXRp
b24gPSBOU01heFJhbmdlKGVmZmVjdGl2ZVJhbmdlKTsKKyAgICB9IHdoaWxlIChlZmZlY3RpdmVS
YW5nZS5sb2NhdGlvbiA8IGxlbmd0aCk7Cit9CisjZW5kaWYKKwogLSAodm9pZClpbnNlcnRUZXh0
OihpZClzdHJpbmcgcmVwbGFjZW1lbnRSYW5nZTooTlNSYW5nZSlyZXBsYWNlbWVudFJhbmdlCiB7
CiAgICAgQk9PTCBpc0F0dHJpYnV0ZWRTdHJpbmcgPSBbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05T
QXR0cmlidXRlZFN0cmluZyBjbGFzc11dOwpAQCAtMTE2Nyw3ICsxMTg5LDEyIEBAIHN0YXRpYyBj
b25zdCBzaG9ydCBrSU9ISURFdmVudFR5cGVTY3JvbGwgPSA2OwogICAgIE5TU3RyaW5nICp0ZXh0
OwogICAgIGJvb2wgaXNGcm9tSW5wdXRNZXRob2QgPSBfZGF0YS0+X3BhZ2UtPmVkaXRvclN0YXRl
KCkuaGFzQ29tcG9zaXRpb247CiAKKyAgICBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdl
PiBkaWN0YXRpb25BbHRlcm5hdGl2ZXM7CisKICAgICBpZiAoaXNBdHRyaWJ1dGVkU3RyaW5nKSB7
CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgICAgIGNvbGxlY3REaWN0YXRp
b25UZXh0QWx0ZXJuYXRpdmVzKHN0cmluZywgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyNlbmRp
ZgogICAgICAgICAvLyBGSVhNRTogV2UgaWdub3JlIG1vc3QgYXR0cmlidXRlcyBmcm9tIHRoZSBz
dHJpbmcsIHNvIGZvciBleGFtcGxlIGluc2VydGluZyBmcm9tIENoYXJhY3RlciBQYWxldHRlIGxv
c2VzIGZvbnQgYW5kIGdseXBoIHZhcmlhdGlvbiBkYXRhLgogICAgICAgICB0ZXh0ID0gW3N0cmlu
ZyBzdHJpbmddOwogICAgIH0gZWxzZQpAQCAtMTE4Nyw3ICsxMjE0LDExIEBAIHN0YXRpYyBjb25z
dCBzaG9ydCBrSU9ISURFdmVudFR5cGVTY3JvbGwgPSA2OwogCiAgICAgU3RyaW5nIGV2ZW50VGV4
dCA9IHRleHQ7CiAgICAgZXZlbnRUZXh0LnJlcGxhY2UoTlNCYWNrVGFiQ2hhcmFjdGVyLCBOU1Rh
YkNoYXJhY3Rlcik7IC8vIHNhbWUgdGhpbmcgaXMgZG9uZSBpbiBLZXlFdmVudE1hYy5tbSBpbiBX
ZWJDb3JlCi0gICAgYm9vbCBldmVudEhhbmRsZWQgPSBfZGF0YS0+X3BhZ2UtPmluc2VydFRleHQo
ZXZlbnRUZXh0LCByZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKHJlcGxhY2Vt
ZW50UmFuZ2UpKTsKKyAgICBib29sIGV2ZW50SGFuZGxlZDsKKyAgICBpZiAoZGljdGF0aW9uQWx0
ZXJuYXRpdmVzLnNpemUoKSkKKyAgICAgICAgZXZlbnRIYW5kbGVkID0gX2RhdGEtPl9wYWdlLT5p
bnNlcnREaWN0YXRlZFRleHQoZXZlbnRUZXh0LCByZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uLCBO
U01heFJhbmdlKHJlcGxhY2VtZW50UmFuZ2UpLCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAg
IGVsc2UKKyAgICAgICAgZXZlbnRIYW5kbGVkID0gX2RhdGEtPl9wYWdlLT5pbnNlcnRUZXh0KGV2
ZW50VGV4dCwgcmVwbGFjZW1lbnRSYW5nZS5sb2NhdGlvbiwgTlNNYXhSYW5nZShyZXBsYWNlbWVu
dFJhbmdlKSk7CiAKICAgICBpZiAocGFyYW1ldGVycykKICAgICAgICAgcGFyYW1ldGVycy0+ZXZl
bnRJbnRlcnByZXRhdGlvbkhhZFNpZGVFZmZlY3RzIHw9IGV2ZW50SGFuZGxlZDsKQEAgLTI4NTYs
OSArMjg4Nyw5IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBh
dGgoTlNTdHJpbmcgKnBhdGgpCiAgICAgcmV0dXJuIF9kYXRhLT5fc3BlbGxDaGVja2VyRG9jdW1l
bnRUYWc7CiB9CiAKLS0gKHZvaWQpaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OihOU1N0cmlu
ZyopcmVzdWx0CistICh2b2lkKWhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0OihOU1N0cmlu
ZyopdGV4dAogewotICAgIF9kYXRhLT5fcGFnZS0+aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1
bHQocmVzdWx0KTsKKyAgICBfZGF0YS0+X3BhZ2UtPmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVz
dWx0KHRleHQpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3SW50ZXJuYWwuaAppbmRleCA2YjZlYjZiZjQxZDE5MTRkM2Q2ZDA2ZjBmMjMy
NjMwYzM5MmI4MDViLi40M2M2ZTJiYWFhMDUwZGU0YjYyMDU4ODRkNjJlN2EyMzE2MTM1ZThjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5h
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFs
LmgKQEAgLTk2LDYgKzk2LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAtICh2b2lkKV9jYWNoZVdp
bmRvd0JvdHRvbUNvcm5lclJlY3Q7CiAKIC0gKE5TSW50ZWdlcilzcGVsbENoZWNrZXJEb2N1bWVu
dFRhZzsKLS0gKHZvaWQpaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OihOU1N0cmluZyopcmVz
dWx0OworLSAodm9pZCloYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDooTlNTdHJpbmcqKXRl
eHQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDdjODE1
MTAxZGZhNzJkZDQ5M2E5NDA2OWVmYTUyMjVkZDFmMjc4MzUuLjRlMDJiZTY5YTA4ZGE1Yjk3YTc0
NDQ0ZTNiYzIyOGNjNmY4NWI5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0
ZS5oIgogCiBPQkpDX0NMQVNTIFdLVmlldzsKK09CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVz
OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5Miw2ICsxOTMsOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2Uo
aW50MzJfdCBuZXdTdHlsZSkgPSAwOwogICAgIAogICAgIHZpcnR1YWwgV0tWaWV3KiB3a1ZpZXco
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHVpbnQ2NF90IGFkZERpY3RhdGlvbkFsdGVybmF0
aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNv
bnRleHQpID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNjcm9sbGJh
cnNGb3JNYWluRnJhbWUoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDJlZGEwOGNlMWE1OWY1ZGNlZWRjMDQ3YTY2ZjY0MzRhZTlmN2Vh
MTMuLjJmNWE4NDgyNDM3MjEwYWI1Nzc3Mjg1MTQzZDkyYmZlM2IzMTQwMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zNzU0LDYgKzM3NTQsMTQgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KGNvbnN0IFN0
cmluZyYgcmVzdWx0KQogICAgICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHJlc3VsdCksIG1fcGFnZUlELCAwKTsKICNl
bmRpZgogfQorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRl
eHQpCit7CisgICAgbV9wYWdlQ2xpZW50LT5yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGlj
dGF0aW9uQ29udGV4dCk7Cit9CisjZW5kaWYKKwogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggMjVlNjM5YTAyN2FjNzBhZWYzMWZlNDA3NjI5Nzk3ODM3NDMxZDYxMy4uMjBiMzA3
ZjViNGUxOGJhYmNjMGJiMGFkMTJlZjIyNjRiZGU2MGIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIldlYlBvcHVw
TWVudVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiV2ViVUlDbGllbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RyYWdTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CkBAIC0x
MDYsNiArMTA3LDcgQEAgY2xhc3MgUVF1aWNrTmV0d29ya1JlcGx5OwogI2Vsc2UKIGNsYXNzIFdL
VmlldzsKICNlbmRpZgorc3RydWN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZTsKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtMzQ1LDYgKzM0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNvbmZpcm1Db21wb3NpdGlvbigpOwogICAgIHZvaWQgY2FuY2VsQ29tcG9zaXRpb24oKTsKICAg
ICBib29sIGluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVu
dFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQpOworICAgIGJvb2wgaW5z
ZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRS
YW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kLCBjb25zdCBWZWN0b3I8VGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICB2b2lk
IGdldE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCk7CiAg
ICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxl
bmd0aCk7CiAgICAgdm9pZCBnZXRBdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKHVpbnQ2NF90
IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIEF0dHJpYnV0ZWRTdHJpbmcmKTsKQEAgLTg3MSw2
ICs4NzQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24o
aW50MzJfdCByZWFzb24sIFN0cmluZyYgcmVzdWx0KTsKICAgICB2b2lkIHJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UoaW50MzJfdCByZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogI2VuZGlmIC8vICFk
ZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVS
TkFUSVZFUykKKyAgICB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBk
aWN0YXRpb25Db250ZXh0KTsKKyNlbmRpZgogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogICAg
IHZvaWQgY2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBjODUwNzYwMTg5ZTQ3
MDc2NzFjZDhmMWYxZTkxZmRkNmU2NzdlYjcyLi4xMWE3OGJkNjFlYzUzNGM4OGUyNzBmMDQ0Njg5
ZTNlMDNmYmUyMjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KQEAgLTI3Niw2ICsyNzYsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICBSZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9u
c2VUeXBlLCBTdHJpbmcgcmVwbGFjZWRTdHJpbmcsIFN0cmluZyByZXBsYWNlbWVudFN0cmluZyk7
CiAjZW5kaWYKIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIFJlbW92ZURp
Y3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKKyNlbmRpZgor
CiAjaWYgUExBVEZPUk0oV0lOKQogICAgICMgV2luZG93cyA3IEdlc3R1cmUgTWVzc2FnZXMKICAg
ICBTZXRHZXN0dXJlUmVhY2hlZFNjcm9sbGluZ0xpbWl0KGJvb2wgbGltaXRSZWFjaGVkKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbQppbmRleCA5
NDE3MWY3MzdhYjM2ZDVmZmRhNTg3Njc4ZDJmZDg2MDA0NTc0NDU4Li4wOTY0MWNkMDgzYmFkMTRh
ZTNlNmI0MGJmMDQ2MDNjMzZhYWNiZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ29ycmVj
dGlvblBhbmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJl
cGxhY2VtZW50LCBOCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIFttX3ZpZXcuZ2V0KCkg
aGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OmFjY2VwdGVkUmVwbGFjZW1lbnRdOworICAgIFtt
X3ZpZXcuZ2V0KCkgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6YWNjZXB0ZWRSZXBsYWNl
bWVudF07CiAgICAgbV92aWV3LmNsZWFyKCk7CiAgICAgaWYgKGFjY2VwdGVkUmVwbGFjZW1lbnQp
CiAgICAgICAgIG1fcmVzdWx0Rm9yRGlzbWlzc2FsLmFkb3B0TlMoW2FjY2VwdGVkUmVwbGFjZW1l
bnQgY29weV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9EaWN0
YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjkwNzUzM2Yy
N2Q5ZmRlMTk2OWVjZWNiNTRiYjQ5MzE2MTkwYzc4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmgK
QEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGljdGF0aW9uQWx0ZXJuYXRp
dmVDb250cm9sbGVyX2gKKyNkZWZpbmUgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyX2gK
KworI2luY2x1ZGUgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9GbG9hdFJlY3QuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorT0JK
Q19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CitPQkpDX0NMQVNTIFdLVmlldzsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIERpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyOworCitjbGFz
cyBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIgeworcHVibGljOgorICAgIERpY3RhdGlv
bkFsdGVybmF0aXZlQ29udHJvbGxlcigpIHsgfQorICAgIC8vIFJldHVybnMgYSBkaWN0YXRpb24g
Y29udGV4dCBJRC4KKyAgICB1aW50NjRfdCBhZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRy
PE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCBzaG93
QWx0ZXJuYXRpdmVzKFdLVmlldyosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdC
b3hPZkRpY3RhdGVkU3RyaW5nLCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKKyAgICB2b2lk
IGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKKyAgICB2b2lkIHJlbW92ZUFsdGVybmF0aXZlcyh1aW50
NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGhhbmRsZUFjY2Vw
dGVkQWx0ZXJuYXRpdmUoTlNTdHJpbmcqIGFjY2VwdGVkQWx0ZXJuYXRpdmUsIHVpbnQ2NF90IGRp
Y3RhdGlvbkNvbnRleHQsIE5TVGV4dEFsdGVybmF0aXZlcyopOworCisgICAgY2xhc3MgRGljdGF0
aW9uQ29udGV4dENvbnRyb2xsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgRGljdGF0aW9uQ29u
dGV4dENvbnRyb2xsZXIoKSB7IH0KKyAgICAgICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNv
bnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7CisgICAgICAgIHZvaWQgY2xlYXIo
KTsKKyAgICAgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25D
b250ZXh0KHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOworICAgICAgICB2b2lkIHJlbW92ZUFs
dGVybmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRleHQodWludDY0X3QgZGljdGF0aW9uQ29udGV4dCk7
CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBpbnZhbGlkQ29udGV4dCA9IDA7CisgICAg
cHJpdmF0ZToKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZXRhaW5QdHI8TlNU
ZXh0QWx0ZXJuYXRpdmVzPiA+IEhhc2hNYXBUeXBlOworICAgICAgICBIYXNoTWFwVHlwZSBtX2Fs
dGVybmF0aXZlc09iamVjdE1hcDsKKyAgICB9OworCisgICAgRGljdGF0aW9uQ29udGV4dENvbnRy
b2xsZXIgbV9jb250ZXh0Q29udHJvbGxlcjsKKyAgICBSZXRhaW5QdHI8V0tWaWV3PiBtX3ZpZXc7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCisjZW5kaWYgLy8gRGljdGF0
aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9EaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGZjNjE2N2IzNDViZTEwY2JlOTA4MWE1MzgzM2VlMmY2NTRhNTk4MwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvRGljdGF0aW9uQWx0ZXJu
YXRpdmVDb250cm9sbGVyLm1tCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIuaCIK
KworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorI2ltcG9ydCA8QXBwS2l0L05TU3Bl
bGxDaGVja2VyLmg+CisjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CisjaW1w
b3J0ICJXS1ZpZXdJbnRlcm5hbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3VpbnQ2NF90IERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxl
cjo6RGljdGF0aW9uQ29udGV4dENvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRh
aW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYgYWx0ZXJuYXRpdmVzKQoreworICAgIHVpbnQ2NF90
IGNvbnRleHQgPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90PihhbHRlcm5hdGl2ZXMuZ2V0KCkp
OworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIGludmFsaWRDb250ZXh0OworICAg
IGlmIChhbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KGNvbnRleHQpKQorICAgICAgICBy
ZXR1cm4gY29udGV4dDsKKworICAgIEhhc2hNYXBUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9h
bHRlcm5hdGl2ZXNPYmplY3RNYXAuYWRkKGNvbnRleHQsIGFsdGVybmF0aXZlcyk7CisgICAgcmV0
dXJuIHJlc3VsdC5pc05ld0VudHJ5ID8gY29udGV4dCA6IGludmFsaWRDb250ZXh0OworfQorCitO
U1RleHRBbHRlcm5hdGl2ZXMqIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0
aW9uQ29udGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRleHQodWlu
dDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBIYXNoTWFwVHlwZTo6Y29uc3RfaXRlcmF0
b3IgaXRyID0gbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuZmluZChkaWN0YXRpb25Db250ZXh0KTsK
KyAgICBpZiAoaXRyID09IG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmVuZCgpKQorICAgICAgICBy
ZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gaXRyLT5zZWNvbmQuZ2V0KCk7Cit9CisKK3ZvaWQgRGlj
dGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlcjo6
cmVtb3ZlQWx0ZXJuYXRpdmVzRm9yRGljdGF0aW9uQ29udGV4dCh1aW50NjRfdCBkaWN0YXRpb25D
b250ZXh0KQoreworICAgIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLnJlbW92ZShkaWN0YXRpb25D
b250ZXh0KTsKK30KKwordm9pZCBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OkRpY3Rh
dGlvbkNvbnRleHRDb250cm9sbGVyOjpjbGVhcigpCit7CisgICAgbV9hbHRlcm5hdGl2ZXNPYmpl
Y3RNYXAuY2xlYXIoKTsKK30KKwordWludDY0X3QgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9s
bGVyOjphZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4m
IGFsdGVybmF0aXZlcykKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0Q29udHJvbGxlci5hZGRBbHRl
cm5hdGl2ZXMoYWx0ZXJuYXRpdmVzKTsKK30KKwordm9pZCBEaWN0YXRpb25BbHRlcm5hdGl2ZUNv
bnRyb2xsZXI6OmNsZWFyKCkKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0Q29udHJvbGxlci5jbGVh
cigpOworfQorCit2b2lkIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6c2hvd0FsdGVy
bmF0aXZlcyhXS1ZpZXcqIHZpZXcsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdC
b3hPZkRpY3RhdGVkU3RyaW5nLCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIGRp
c21pc3NBbHRlcm5hdGl2ZXMoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fdmlldyA9IHZpZXc7CisgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZXMg
PSBtX2NvbnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRleHQoZGlj
dGF0aW9uQ29udGV4dCk7CisgICAgaWYgKCFhbHRlcm5hdGl2ZXMpCisgICAgICAgIHJldHVybjsK
KyAgICBOU1NwZWxsQ2hlY2tlciogc3BlbGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJl
ZFNwZWxsQ2hlY2tlcl07CisgICAgW3NwZWxsQ2hlY2tlciBzaG93Q29ycmVjdGlvbkluZGljYXRv
ck9mVHlwZTpOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlR3Vlc3NlcyBwcmltYXJ5U3RyaW5nOmFs
dGVybmF0aXZlcy5wcmltYXJ5U3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZXMu
YWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mRGljdGF0ZWRT
dHJpbmcgdmlldzptX3ZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyogYWNj
ZXB0ZWRTdHJpbmcpIHsKKyAgICAgICAgaWYgKGFjY2VwdGVkU3RyaW5nKQorICAgICAgICAgICAg
aGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShhY2NlcHRlZFN0cmluZywgZGljdGF0aW9uQ29udGV4
dCwgYWx0ZXJuYXRpdmVzKTsKKyAgICB9XTsKK30KKwordm9pZCBEaWN0YXRpb25BbHRlcm5hdGl2
ZUNvbnRyb2xsZXI6OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUoTlNTdHJpbmcqIGFjY2VwdGVk
QWx0ZXJuYXRpdmUsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQsIE5TVGV4dEFsdGVybmF0aXZl
cyogYWx0ZXJuYXRpdmVzKQoreworICAgIFthbHRlcm5hdGl2ZXMgbm90ZVNlbGVjdGVkQWx0ZXJu
YXRpdmVTdHJpbmc6YWNjZXB0ZWRBbHRlcm5hdGl2ZV07CisgICAgbV9jb250ZXh0Q29udHJvbGxl
ci5yZW1vdmVBbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KGRpY3RhdGlvbkNvbnRleHQp
OworICAgIFttX3ZpZXcuZ2V0KCkgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6YWNjZXB0
ZWRBbHRlcm5hdGl2ZV07CisgICAgbV92aWV3LmNsZWFyKCk7Cit9CisKK3ZvaWQgRGljdGF0aW9u
QWx0ZXJuYXRpdmVDb250cm9sbGVyOjpkaXNtaXNzQWx0ZXJuYXRpdmVzKCkKK3sKKyAgICBpZiAo
IW1fdmlldykKKyAgICAgICAgcmV0dXJuOworICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3Bl
bGxDaGVja2VyXSBkaXNtaXNzQ29ycmVjdGlvbkluZGljYXRvckZvclZpZXc6bV92aWV3LmdldCgp
XTsKK30KKwordm9pZCBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OnJlbW92ZUFsdGVy
bmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIG1fY29udGV4dENvbnRy
b2xsZXIucmVtb3ZlQWx0ZXJuYXRpdmVzRm9yRGljdGF0aW9uQ29udGV4dChkaWN0YXRpb25Db250
ZXh0KTsKK30KK30KKyNlbmRpZiAvLyBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjczNDg3MTUxYWI3YWE3Yjg2YTc5M2UwMzk4ZjM1ZGRiYzIxNWEx
MmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZS5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZV9oCisjZGVmaW5lIFRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZV9oCisKKyNpbmNsdWRlIDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgor
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQorT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CisKK3N0cnVjdCBUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UgeworICAgIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZShOU1RleHRBbHRl
cm5hdGl2ZXMqIGFuQWx0ZXJuYXRpdmVzLCBOU1JhbmdlIGFSYW5nZSk7CisgICAgVGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlKGNvbnN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSYgYW5vdGhlcik7
CisgICAgTlNSYW5nZSByYW5nZTsKKyAgICBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiBh
bHRlcm5hdGl2ZXM7Cit9OworCisjZWxzZQorc3RydWN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZSB7IH07CisjZW5kaWYKKworI2VuZGlmIC8vIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGV4dEFsdGVybmF0aXZl
V2l0aFJhbmdlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwNjE1NDJkYTlkZWIwZTE5YzVlYjFhODc3ZDQ0NDI4
Zjk4N2JlY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmgi
CisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyNpbXBvcnQgPEFwcEtpdC9OU1Rl
eHRBbHRlcm5hdGl2ZXMuaD4KKworVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlOjpUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UoTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbkFsdGVybmF0aXZlcywgTlNSYW5n
ZSBhUmFuZ2UpCis6IHJhbmdlKGFSYW5nZSkKKywgYWx0ZXJuYXRpdmVzKGFuQWx0ZXJuYXRpdmVz
KQoreworfQorCitUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U6OlRleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZShjb25zdCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UmIGFub3RoZXIpCis6IHJhbmdlKGFu
b3RoZXIucmFuZ2UpCissIGFsdGVybmF0aXZlcyhhbm90aGVyLmFsdGVybmF0aXZlcykKK3sKK30K
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQppbmRleCAzNTg0NzE4MmUxNDBiN2Q4NGQwOTgzNDZiNjhiNzNlYjFhMDg2NGYwLi5iZDI5
Mzc5ZThkMzk0N2IzYTNiYjI4MDg3OWI0OWRjZGZhYTRiMWEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMzUsOSArMzUsMTEgQEAK
ICNpbXBvcnQgIlBhZ2VDbGllbnQuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnRJbXBsLmgiCiAjaW1w
b3J0ICJTdHJpbmdVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZS5oIgogI2ltcG9ydCAiVGV4dENoZWNrZXIuaCIKICNpbXBvcnQgIldlYlBhZ2VNZXNzYWdlcy5o
IgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW1wb3J0IDxXZWJDb3JlL0RpY3RhdGlv
bkFsdGVybmF0aXZlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9y
dCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25j
YXRlbmF0ZS5oPgpAQCAtMTk4LDYgKzIwMCwzNSBAQCBib29sIFdlYlBhZ2VQcm94eTo6aW5zZXJ0
VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydAog
ICAgIHJldHVybiBoYW5kbGVkOwogfQogCitib29sIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0
ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0
LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kLCBjb25zdCBWZWN0b3I8VGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzV2l0aFJhbmdlKQoreworI2lmIFVT
RShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIGlmIChkaWN0YXRpb25BbHRlcm5hdGl2ZXNX
aXRoUmFuZ2UuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gaW5zZXJ0VGV4dCh0ZXh0LCByZXBs
YWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQpOworCisgICAgaWYgKCFpc1Zh
bGlkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgVmVjdG9yPERpY3RhdGlvbkFsdGVy
bmF0aXZlPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXM7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZS5zaXplKCk7ICsraSkgeworICAgICAg
ICBjb25zdCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UmIGFsdGVybmF0aXZlV2l0aFJhbmdlID0g
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzV2l0aFJhbmdlW2ldOworICAgICAgICB1aW50NjRfdCBkaWN0
YXRpb25Db250ZXh0ID0gbV9wYWdlQ2xpZW50LT5hZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoYWx0
ZXJuYXRpdmVXaXRoUmFuZ2UuYWx0ZXJuYXRpdmVzKTsKKyAgICAgICAgaWYgKGRpY3RhdGlvbkNv
bnRleHQpCisgICAgICAgICAgICBkaWN0YXRpb25BbHRlcm5hdGl2ZXMuYXBwZW5kKERpY3RhdGlv
bkFsdGVybmF0aXZlKGFsdGVybmF0aXZlV2l0aFJhbmdlLnJhbmdlLmxvY2F0aW9uLCBhbHRlcm5h
dGl2ZVdpdGhSYW5nZS5yYW5nZS5sZW5ndGgsIGRpY3RhdGlvbkNvbnRleHQpKTsKKyAgICB9CisK
KyAgICBpZiAoZGljdGF0aW9uQWx0ZXJuYXRpdmVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IGluc2VydFRleHQodGV4dCwgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdl
RW5kKTsKKworICAgIGJvb2wgaGFuZGxlZCA9IHRydWU7CisgICAgcHJvY2VzcygpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RGljdGF0ZWRUZXh0KHRleHQsIHJlcGxhY2VtZW50
UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKSwg
TWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERpY3RhdGVkVGV4dDo6UmVwbHkoaGFuZGxlZCwgbV9l
ZGl0b3JTdGF0ZSksIG1fcGFnZUlEKTsKKyAgICByZXR1cm4gaGFuZGxlZDsKKyNlbHNlCisgICAg
cmV0dXJuIGluc2VydFRleHQodGV4dCwgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVu
dFJhbmdlRW5kKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFu
Z2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKQogewogICAgIGxvY2F0aW9u
ID0gTlNOb3RGb3VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAzODkyZDVkMDIxYjBkZDk1ZjVmZmIzNzgxOGQwM2Q1NDhiMmM4
ZmFlLi5iY2YwZmYyMDFmMTI1NDc3MmNiODJjZWU1MThlMDRiMzZlOTIxYmRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04ODUs
NiArODg1LDEwIEBACiAJCUNEQ0E4NUVFMTMyQUQ3MDEwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RDQTg1REUxMzJBRDA1MzAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHlNYWMubW0gKi87IH07CiAJCUNFREExMkUyMTUyQ0QxQUUwMEQ5RTA4RCAvKiBXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0VEQTEyREYxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4
dENsaWVudC5jcHAgKi87IH07CiAJCUNFREExMkUzMTUyQ0QxQjMwMEQ5RTA4RCAvKiBXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFREExMkRFMTUyQ0NBRTgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQuaCAqLzsgfTsKKwkJQ0VEQkJGMjMxNTJGNTMyNTAwNjI3OTNCIC8qIERpY3RhdGlvbkFs
dGVybmF0aXZlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0VEQkJGMjExNTJGNTMyNTAwNjI3OTNCIC8qIERpY3RhdGlvbkFsdGVybmF0
aXZlQ29udHJvbGxlci5oICovOyB9OworCQlDRURCQkYyNDE1MkY1MzI1MDA2Mjc5M0IgLyogRGlj
dGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQkJGMjIxNTJGNTMyNTAwNjI3OTNCIC8qIERpY3RhdGlv
bkFsdGVybmF0aXZlQ29udHJvbGxlci5tbSAqLzsgfTsKKwkJQ0VEQkJGNTExNTJGNkMzMTAwNjI3
OTNCIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQkJGNEYxNTJGNkMzMTAwNjI3OTNCIC8qIFRleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZS5oICovOyB9OworCQlDRURCQkY1MjE1MkY2QzMxMDA2Mjc5M0Ig
LyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQkJGNTAxNTJGNkMzMTAwNjI3OTNCIC8qIFRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZS5tbSAqLzsgfTsKIAkJRDNCOTQ4NDYxMUZGNEI2NTAwMDMyQjM5IC8q
IFdlYlBvcHVwTWVudS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBEM0I5NDg0MjExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmNwcCAqLzsg
fTsKIAkJRDNCOTQ4NDcxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCOTQ4NDMxMUZGNEI2NTAw
MDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovOyB9OwogCQlEM0I5NDg0ODExRkY0QjY1MDAwMzJC
MzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQ0MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQ
b3B1cE1lbnUuY3BwICovOyB9OwpAQCAtMTk0MSw2ICsxOTQ1LDEwIEBACiAJCUNEQ0E4NURFMTMy
QUQwNTMwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VEQTEyREUxNTJDQ0FFODAw
RDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0VEQTEyREYxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZl
VGV4dENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RURCQkYyMTE1MkY1MzI1MDA2Mjc5M0IgLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpY3RhdGlvbkFsdGVybmF0aXZl
Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRURCQkYyMjE1MkY1
MzI1MDA2Mjc5M0IgLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250
cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRURCQkY0RjE1MkY2QzMx
MDA2Mjc5M0IgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDRURCQkY1MDE1MkY2QzMxMDA2Mjc5M0IgLyogVGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlEM0I5NDg0MjExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBvcHVwTWVudS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQzMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1l
bnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUG9wdXBNZW51Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQ0MTFGRjRCNjUwMDAzMkIzOSAvKiBX
ZWJTZWFyY2hQb3B1cE1lbnUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViU2VhcmNoUG9wdXBNZW51LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTM0MzgsNiArMzQ0NiwxMCBAQAogCQkJCTFBNjQyOTJDMTJERTVGOTgwMENBQUUyQyAvKiBCYWNr
aW5nU3RvcmVNYWMubW0gKi8sCiAJCQkJQjg3OEI2MTMxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJl
Y3Rpb25QYW5lbC5oICovLAogCQkJCUI4NzhCNjE0MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0
aW9uUGFuZWwubW0gKi8sCisJCQkJQ0VEQkJGMjIxNTJGNTMyNTAwNjI3OTNCIC8qIERpY3RhdGlv
bkFsdGVybmF0aXZlQ29udHJvbGxlci5tbSAqLywKKwkJCQlDRURCQkYyMTE1MkY1MzI1MDA2Mjc5
M0IgLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmggKi8sCisJCQkJQ0VEQkJGNTAx
NTJGNkMzMTAwNjI3OTNCIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSAqLywKKwkJCQlD
RURCQkY0RjE1MkY2QzMxMDA2Mjc5M0IgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggKi8s
CiAJCQkJMUFBNDE3RUQxMkMwMEQ4NzAwMkJFNjdCIC8qIFRleHRDaGVja2VyTWFjLm1tICovLAog
CQkJCTFBRjA1RDg1MTQ2ODgzNDgwMDhCMUU4MSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYVByb3h5LmggKi8sCiAJCQkJMUFGMDVEODQxNDY4ODM0ODAwOEIxRTgxIC8qIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0gKi8sCkBAIC00MTg1LDYgKzQxOTcsOCBAQAog
CQkJCTM3OTQ4NDA0MTUwQzM1MDYwMEU1MkNFOSAvKiBXZWJSZW5kZXJMYXllci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzc5NDg0MDkxNTBDNEI5NzAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUNFREExMkUzMTUyQ0QxQjMwMEQ5RTA4RCAvKiBXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFREJCRjIzMTUyRjUzMjUwMDYy
NzkzQiAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCUNFREJCRjUxMTUyRjZDMzEwMDYyNzkzQiAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpAQCAtNDkyOSw2ICs0OTQzLDggQEAKIAkJCQkzNzk0ODQwMzE1MEMz
NTA2MDBFNTJDRTkgLyogV2ViUmVuZGVyTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc5
NDg0MDgxNTBDNEI5NzAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0VEQTEyRTIxNTJDRDFBRTAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVu
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRURCQkYyNDE1MkY1MzI1MDA2Mjc5M0IgLyogRGlj
dGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0VEQkJG
NTIxNTJGNkMzMTAwNjI3OTNCIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggYjgwNWFk
YWY1ODEyYWY1ZjIzY2VjNGExYjVjOTJkN2M2OTM2ZTJjNC4uODE3YjAzYzRhMjBiYWVmNjgzNzY4
NTFkNTI4MzYwZGY4YjExYzdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVu
dC5oCkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0Fs
dGVybmF0aXZlKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NBbHRlcm5hdGl2ZVNvb24oV2ViQ29y
ZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6QXV0b2NvcnJl
Y3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgT1ZFUlJJ
REU7CiBwcml2YXRlOgogICAgIFdlYlBhZ2UgKm1fcGFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcAppbmRleCA2YWJiNjkzNTQxZDA4NTZlZTAx
ZmRjNjNlODE4Zjk4NTY2NGY2MGRhLi44MzA5OGJmMjgwMGI3MjdkNzllNGNkZmU0ODkwZDQ2NWIy
ZTgzZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5j
cHAKQEAgLTc2LDQgKzc2LDExIEBAIHZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZWNv
cmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uCiAjZW5kaWYKIH0K
IAordm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0
aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworI2lmIFVTRShESUNUQVRJT05fQUxU
RVJOQVRJVkVTKQorICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZW1v
dmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCkpOworI2VuZGlmCit9CisK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDdk
NTJkNGNmZWY5MTZkYjZmYzU3MjMyZDYwZWMwNGQ2MGE3NmNkNjguLjMwZTZkM2Y5NTU4NjU2NWZh
NTM1NzI3ZGExZWNmZjA4ODY4NGY5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIlNhbmRib3hFeHRl
bnNpb24uaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXZWJVbmRv
U3RlcC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KQEAgLTQwNiw3ICs0MDcsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQoY29uc3QgV2Vi
S2l0OjpXZWJNb3VzZUV2ZW50JiwgYm9vbCYgcmVzdWx0KTsKICAgICB2b2lkIGFjY2VwdHNGaXJz
dE1vdXNlKGludCBldmVudE51bWJlciwgY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW50JiwgYm9v
bCYgcmVzdWx0KTsKICAgICBib29sIHBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rv
cihjb25zdCBTdHJpbmcmKTsKLQorICAgIHZvaWQgaW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0
cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBs
YWNlbWVudFJhbmdlRW5kLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRp
dmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9vbCYgaGFuZGxlZCwgRWRpdG9y
U3RhdGUmIG5ld1N0YXRlKTsKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkIGNvbmZpcm1D
b21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nKTsKICAgICB2b2lkIHNl
dENvbXBvc2l0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgY29uc3Qg
V1RGOjpWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzLCB1
aW50NjRfdCBjdXJzb3JQb3NpdGlvbik7CkBAIC00ODgsNyArNDg5LDYgQEAgcHVibGljOgogCiAg
ICAgdm9pZCB1bm1hcmtBbGxNaXNzcGVsbGluZ3MoKTsKICAgICB2b2lkIHVubWFya0FsbEJhZEdy
YW1tYXIoKTsKLQogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05P
V19MRU9QQVJEKQogICAgIHZvaWQgaGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3Qg
U3RyaW5nJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYTY0MDU4OWQ4ZTdiMWZiOTk5N2Q3MWFk
NmM1Zjk3YjcwNWRlODk3Mi4uZmE3N2U5NTQwNTlmNmE2YmQ3OGM2OTZiZjFmYzAyZmE3YjYwZGU0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KQEAgLTI0MSw2ICsyNDEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsK
ICAgICBFeGVjdXRlS2V5cHJlc3NDb21tYW5kcyhWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21t
YW5kPiBzYXZlZENvbW1hbmRzKSAtPiAoYm9vbCBoYW5kbGVkLCBXZWJLaXQ6OkVkaXRvclN0YXRl
IG5ld1N0YXRlKQogICAgIFNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudChXZWJLaXQ6Oldl
Yk1vdXNlRXZlbnQgZXZlbnQpIC0+IChib29sIHJlc3VsdCkKICAgICBBY2NlcHRzRmlyc3RNb3Vz
ZShpbnQgZXZlbnROdW1iZXIsIFdlYktpdDo6V2ViTW91c2VFdmVudCBldmVudCkgLT4gKGJvb2wg
cmVzdWx0KQorICAgIEluc2VydERpY3RhdGVkVGV4dChXVEY6OlN0cmluZyB0ZXh0LCB1aW50NjRf
dCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQsIFdU
Rjo6VmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMpIC0+IChib29sIGhhbmRsZWQsIFdlYktpdDo6RWRpdG9yU3RhdGUgbmV3U3RhdGUpCiAj
ZW5kaWYKICNpZiBQTEFURk9STShXSU4pCiAgICAgLy8gRklYTUU6IFVuaWZ5IHdpdGggTWFjIGNv
dW50ZXJwYXJ0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQppbmRleCBhOGQzYzViYjE5NjBjMjk0MGYyMjMzNmFjMDJjYWU3ZGFl
NTRhZDAzLi5lOTcyODI1ODg1MGZjYzg0NzA5YTA0NmY3ZTE0ZjZlMThjNjhkNTYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
CkBAIC0yODYsNiArMjg2LDIxIEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0VGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWluCiAgICAgbmV3U3Rh
dGUgPSBlZGl0b3JTdGF0ZSgpOwogfQogCit2b2lkIFdlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4
dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWlu
dDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlv
bkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGJvb2wmIGhhbmRs
ZWQsIEVkaXRvclN0YXRlJiBuZXdTdGF0ZSkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKworICAgIGlmIChyZXBs
YWNlbWVudFJhbmdlU3RhcnQgIT0gTlNOb3RGb3VuZCkgeworICAgICAgICBSZWZQdHI8UmFuZ2U+
IHJlcGxhY2VtZW50UmFuZ2UgPSBjb252ZXJ0VG9SYW5nZShmcmFtZSwgTlNNYWtlUmFuZ2UocmVw
bGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdlRW5kIC0gcmVwbGFjZW1lbnRSYW5n
ZVN0YXJ0KSk7CisgICAgICAgIGlmIChyZXBsYWNlbWVudFJhbmdlKQorICAgICAgICAgICAgZnJh
bWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihyZXBsYWNlbWVu
dFJhbmdlLmdldCgpLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOworICAgIH0KKworICAgIEFTU0VS
VCghZnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKTsKKyAgICBoYW5kbGVkID0gZnJh
bWUtPmVkaXRvcigpLT5pbnNlcnREaWN0YXRlZFRleHQodGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRp
dmVMb2NhdGlvbnMsIG1fa2V5Ym9hcmRFdmVudEJlaW5nSW50ZXJwcmV0ZWQpOworICAgIG5ld1N0
YXRlID0gZWRpdG9yU3RhdGUoKTsKK30KKwogdm9pZCBXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZSh1
aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpCiB7CiAgICAgbG9jYXRpb24gPSBO
U05vdEZvdW5kOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDhkOGRjMjNjODU0ZDk2ZTk1YmEyYWMzMThmYTE1ZTFkMTAwNzA4MTYuLmFjM2U5NzE1
YzliZmUyMTFhNTc3OGIzNzJkNDE1OGQ2NzU2NGFlYTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNC0xNiAg
SmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KKworICAgICAgICBPbiBPUyBYLCBNYXJrIHRleHQgd2l0
aCBkaWN0YXRpb24gYWx0ZXJuYXRpdmUgd2l0aCBibHVlIHVuZGVybGluZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMDQ3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgaW50ZXJmYWNlIHRvIHNp
bXVsYXRlIGRpY3RhdGVkIHRleHQgaW5wdXQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvVGV4dElucHV0Q29udHJvbGxlci5tOgorICAgICAgICAoK1tUZXh0SW5wdXRDb250cm9sbGVy
IGlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6XSk6CisgICAgICAgICgrW1RleHRJbnB1
dENvbnRyb2xsZXIgd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOl0pOgorICAgICAgICAoLVtUZXh0
SW5wdXRDb250cm9sbGVyIGRpY3RhdGVkU3RyaW5nV2l0aFByaW1hcnlTdHJpbmc6YWx0ZXJuYXRp
dmU6YWx0ZXJuYXRpdmVPZmZzZXQ6YWx0ZXJuYXRpdmVMZW5ndGg6XSk6CisKIDIwMTItMDQtMTYg
IFZpbmNlbnQgU2NoZWliICA8c2NoZWliQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGRpbmcg
Q29udHJpYnV0b3JzIEJyaWFuIFNhbG9tb24gYW5kIFRvbSBIdWRzb24gdG8gY29tbWl0dGVycy5w
eS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9s
bGVyLm0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlci5tCmlu
ZGV4IGY3ODA3OTQ0NjM2OWU3OGM5ZjQ4Y2UwODE1ZWYxY2NjOGRmMGI5OWQuLmI1NGFjYTNmNzc0
OWRmYmEwNTk0YjA5YmVmYmIzZDFlYmM0M2IxYzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXIubQpAQCAtMzEsNiArMzEsMTAgQEAKIAogI2ltcG9y
dCAiRHVtcFJlbmRlclRyZWVNYWMuaCIKICNpbXBvcnQgPEFwcEtpdC9OU0lucHV0TWFuYWdlci5o
PgorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX1NOT1dfTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTElPTikKKyNkZWZpbmUg
U1VQUE9SVF9ESUNUQVRJT05fQUxURVJOQVRJVkVTCisjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0
ZXJuYXRpdmVzLmg+CisjZW5kaWYKICNpbXBvcnQgPFdlYktpdC9XZWJEb2N1bWVudC5oPgogI2lt
cG9ydCA8V2ViS2l0L1dlYkZyYW1lLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWVQcml2YXRl
Lmg+CkBAIC0xNzAsNyArMTc0LDggQEAgKyAoQk9PTClpc1NlbGVjdG9yRXhjbHVkZWRGcm9tV2Vi
U2NyaXB0OihTRUwpYVNlbGVjdG9yCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVj
dG9yKGNoYXJhY3RlckluZGV4Rm9yUG9pbnRYOlk6KQogICAgICAgICAgICAgfHwgYVNlbGVjdG9y
ID09IEBzZWxlY3Rvcih2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0KQogICAgICAgICAgICAg
fHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihhdHRyaWJ1dGVkU3RyaW5nV2l0aFN0cmluZzopCi0g
ICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNldElucHV0TWV0aG9kSGFuZGxl
cjopKQorICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihzZXRJbnB1dE1ldGhv
ZEhhbmRsZXI6KQorICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihkaWN0YXRl
ZFN0cmluZ1dpdGhQcmltYXJ5U3RyaW5nOmFsdGVybmF0aXZlOmFsdGVybmF0aXZlT2Zmc2V0OmFs
dGVybmF0aXZlTGVuZ3RoOikpCiAgICAgICAgIHJldHVybiBOTzsKICAgICByZXR1cm4gWUVTOwog
fQpAQCAtMTk0LDcgKzE5OSw5IEBAICsgKE5TU3RyaW5nICopd2ViU2NyaXB0TmFtZUZvclNlbGVj
dG9yOihTRUwpYVNlbGVjdG9yCiAgICAgZWxzZSBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3Rvcihh
dHRyaWJ1dGVkU3RyaW5nV2l0aFN0cmluZzopKQogICAgICAgICByZXR1cm4gQCJtYWtlQXR0cmli
dXRlZFN0cmluZyI7IC8vIGp1c3QgYSBmYWN0b3J5IG1ldGhvZCwgZG9lc24ndCBjYWxsIGludG8g
TlNUZXh0SW5wdXQKICAgICBlbHNlIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNldElucHV0
TWV0aG9kSGFuZGxlcjopKQotICAgICAgICByZXR1cm4gQCJzZXRJbnB1dE1ldGhvZEhhbmRsZXIi
OyAKKyAgICAgICAgcmV0dXJuIEAic2V0SW5wdXRNZXRob2RIYW5kbGVyIjsKKyAgICBlbHNlIGlm
IChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGRpY3RhdGVkU3RyaW5nV2l0aFByaW1hcnlTdHJpbmc6
YWx0ZXJuYXRpdmU6YWx0ZXJuYXRpdmVPZmZzZXQ6YWx0ZXJuYXRpdmVMZW5ndGg6KSkKKyAgICAg
ICAgcmV0dXJuIEAibWFrZURpY3RhdGVkU3RyaW5nIjsKIAogICAgIHJldHVybiBuaWw7CiB9CkBA
IC0zNzUsNiArMzgyLDI3IEBAIC0gKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKilhdHRyaWJ1
dGVkU3RyaW5nV2l0aFN0cmluZzooTlNTdHJpbmcgKilhU3RyaW5nCiAgICAgcmV0dXJuIFtbW05T
TXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOmFTdHJpbmddIGF1
dG9yZWxlYXNlXTsKIH0KIAorLSAoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyopZGljdGF0ZWRT
dHJpbmdXaXRoUHJpbWFyeVN0cmluZzooTlNTdHJpbmcqKWFTdHJpbmcgYWx0ZXJuYXRpdmU6KE5T
U3RyaW5nKilhbHRlcm5hdGl2ZSBhbHRlcm5hdGl2ZU9mZnNldDooaW50KW9mZnNldCBhbHRlcm5h
dGl2ZUxlbmd0aDooaW50KWxlbmd0aAoreworI2lmIGRlZmluZWQoU1VQUE9SVF9ESUNUQVRJT05f
QUxURVJOQVRJVkVTKQorICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGRpY3RhdGVkU3Ry
aW5nID0gW3NlbGYgYXR0cmlidXRlZFN0cmluZ1dpdGhTdHJpbmc6YVN0cmluZ107CisgICAgTlNS
YW5nZSByYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IE5TTWFrZVJhbmdlKChOU1VJbnRlZ2VyKW9mZnNl
dCwgKE5TVUludGVnZXIpbGVuZ3RoKTsKKyAgICBOU1N0cmluZyogc3ViU3RyaW5nV2l0aEFsdGVy
bmF0aXZlID0gW2FTdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOnJhbmdlV2l0aEFsdGVybmF0aXZl
XTsKKyAgICBpZiAoIXN1YlN0cmluZ1dpdGhBbHRlcm5hdGl2ZSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVPYmplY3QgPSBbW1tOU1Rl
eHRBbHRlcm5hdGl2ZXMgYWxsb2NdIGluaXRXaXRoUHJpbWFyeVN0cmluZzpzdWJTdHJpbmdXaXRo
QWx0ZXJuYXRpdmUgYWx0ZXJuYXRpdmVTdHJpbmdzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDph
bHRlcm5hdGl2ZV1dIGF1dG9yZWxlYXNlXTsKKyAgICBpZiAoIWFsdGVybmF0aXZlT2JqZWN0KQor
ICAgICAgICByZXR1cm4gbmlsOworCisgICAgW2RpY3RhdGVkU3RyaW5nIGFkZEF0dHJpYnV0ZTpO
U1RleHRBbHRlcm5hdGl2ZXNBdHRyaWJ1dGVOYW1lIHZhbHVlOmFsdGVybmF0aXZlT2JqZWN0IHJh
bmdlOnJhbmdlV2l0aEFsdGVybmF0aXZlXTsKKworICAgIHJldHVybiBkaWN0YXRlZFN0cmluZzsK
KyNlbHNlCisgICAgcmV0dXJuIG5pbAorI2VuZGlmCit9CisKIC0gKHZvaWQpc2V0SW5wdXRNZXRo
b2RIYW5kbGVyOihXZWJTY3JpcHRPYmplY3QgKiloYW5kbGVyCiB7CiAgICAgaWYgKGlucHV0TWV0
aG9kSGFuZGxlciA9PSBoYW5kbGVyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNlNTNhN2Y4YzhiMTQ4NTU4ZjJmNDJjZDMw
YTFmNTQ3NDMyMmNjMTIuLmU0ZGJmNzMyMzdlOThjNDUzMGYzOGVmZGE2NzhlZWIyMDcxNmJjMjgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNC0xNiAgSmlhIFB1ICA8anB1QGFwcGxlLmNv
bT4KKworICAgICAgICBPbiBPUyBYLCBNYXJrIHRleHQgd2l0aCBkaWN0YXRpb24gYWx0ZXJuYXRp
dmUgd2l0aCBibHVlIHVuZGVybGluZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgzMDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtbGVvcGFyZC9Ta2lwcGVkOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy1saW9uL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXNub3ds
ZW9wYXJkL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRp
dC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9lZGl0LWRpY3RhdGVkLXRleHQtd2l0
aC1hbHRlcm5hdGl2ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGlu
Zy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQtdGV4dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0Lmh0bWw6
IEFkZGVkLgorCiAyMDEyLTA0LTE2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CiAKICAgICAgICAgVHJ5IHRvIGZpeCBhIGZsYWt5IEpTIHRlc3QuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZAppbmRleCBkYjM3MWEwNzU5MGJjNThmZTJlYjZlN2Nl
YjIwYWM0MmI1MDVkODcyLi41OWMzZmUwMDkxYTkwYmIxMjNmNWRhZDZlMWFjM2E1NDRjZjYzZTQz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9Ta2lwcGVkCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQKQEAgLTIxOSw2ICsy
MTksMTAgQEAgaHR0cC90ZXN0cy9zZWN1cml0eS93ZWJnbC1yZW1vdGUtcmVhZC1yZW1vdGUtaW1h
Z2UtYWxsb3dlZC5odG1sCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3dlYmdsLXJlbW90ZS1yZWFkLXJl
bW90ZS1pbWFnZS1hbGxvd2VkLXdpdGgtY3JlZGVudGlhbHMuaHRtbAogaHR0cC90ZXN0cy9zZWN1
cml0eS93ZWJnbC1yZW1vdGUtcmVhZC1yZW1vdGUtaW1hZ2UtYmxvY2tlZC1uby1jcm9zc29yaWdp
bi5odG1sCiAKKyMgRGljdGF0ZWQgdGV4dCBpbnB1dCBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMg
cGxhdGZvcm0KK3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13
aXRoLWFsdGVybmF0aXZlLmh0bWwKK3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1k
aWN0YXRlZC10ZXh0Lmh0bWwKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBUZXN0cyBiZWxvdyB0aGlzIHBvaW50IGFyZSBmYWls
aW5nIG9ubHkgb24gc29tZSBzbGF2ZXMuCiAjIGh0dHA6Ly93ZWJraXQub3JnL2IvNTY1NTEgY292
ZXJzIHRoZSBnZW5lcmFsIGlzc3VlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLWxpb24vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1saW9uL1NraXBwZWQK
aW5kZXggNzAyYjc4YzhiMjA5YzYyNGI4MzBhMWFmYWU4OWQzNjZjOWVmZjg0MC4uOWQ4MjU5YTFi
MTk4N2NiMjZiZTdjZmQ2YzhhOTcyYmFjYmM5NmFlNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLWxpb24vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
bGlvbi9Ta2lwcGVkCkBAIC0zOCw2ICszOCwxMCBAQCBlZGl0aW5nL3Bhc3RlYm9hcmQvNTQ3ODI1
MC5odG1sCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjA3OQog
ZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWJnLWZvbnQuaHRtbAogCisjIERpY3RhdGVkIHRleHQg
aW5wdXQgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtCitwbGF0Zm9ybS9tYWMvZWRp
dGluZy9pbnB1dC9lZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS5odG1sCitwbGF0
Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQtdGV4dC5odG1sCisKICMgLS0t
IE1hdGggTUwgLS0tCiAKICMgVGhlc2UgaGF2ZSBkaWZmZXJlbnQgbWV0cmljcywgYW5kIHJlcXVp
cmUgaW52ZXN0aWdhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXNu
b3dsZW9wYXJkL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtc25vd2xlb3BhcmQv
U2tpcHBlZAppbmRleCBmNGM0NGM2NTUyYzk0NjlkYWM5MDIzMDNkMGJhNTRjMzFmMjg0Y2M0Li5m
OWQ1OTc3OTBjZGNhNDRkZTM0ZTk0YTkxZTZkOTVlNzA2YjUxNmRiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtc25vd2xlb3BhcmQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtc25vd2xlb3BhcmQvU2tpcHBlZApAQCAtMTk3LDMgKzE5Nyw3IEBAIGZh
c3QvaGlkcGkKICMgRnJhbWU6OmZpbmRTdHJpbmcgZG9lcyBub3RoaW5nIG9uIHBhZ2VzIHRoYXQg
cHJldmVudCBzZWxlY3Rpb24KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQwMzYxCiBlZGl0aW5nL3RleHQtaXRlcmF0b3IvZmluZFN0cmluZy1zZWxlY3Rpb24tZGlz
YWJsZWQuaHRtbAorCisjIERpY3RhdGVkIHRleHQgaW5wdXQgaXMgbm90IHN1cHBvcnRlZCBvbiB0
aGlzIHBsYXRmb3JtCitwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9lZGl0LWRpY3RhdGVkLXRl
eHQtd2l0aC1hbHRlcm5hdGl2ZS5odG1sCitwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNl
cnQtZGljdGF0ZWQtdGV4dC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9pbnB1dC9lZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9lZGl0LWRp
Y3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjU3
Yzc4Y2E2MzhiNTdmODk0NWI5ZTAxOGQ1YzA5Yzk2ZGZmYTQ2MwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4
dC13aXRoLWFsdGVybmF0aXZlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0VkaXRpbmcg
dGV4dCB0aGF0IGhhcyBEaWN0YXRpb25BbHRlcm5hdGl2ZXMgbWFya2VyIHdob3VsZCBjYXVzZSB0
aGUgbWFya2VyIHRvIGJlIHJlbW92ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
dGhpcyBpcyBhIHRleAorUEFTUyBtYXJrZWRUZXh0IGlzICIiCisKK1RFU1QgQ09NUExFVEUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGlj
dGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9pbnB1dC9lZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM3ZjAwNzkwMzY2MjY1ZjBkMGViYjBjYmQ2YWJhNjE2MDJkZTlkM2QKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9l
ZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS5odG1sCkBAIC0wLDAgKzEsNTkgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorYm9keSB7IG1hcmdpbjogMDsg
cGFkZGluZzogMCB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cHJlIGlkPSJkZXNjcmlw
dGlvbiI+PC9wcmU+Cis8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRpdGFibGU+PC9kaXY+Cis8cCBp
ZD0iY29uc29sZSI+PC9wPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGRl
c2NyaXB0aW9uKCJFZGl0aW5nIHRleHQgdGhhdCBoYXMgRGljdGF0aW9uQWx0ZXJuYXRpdmVzIG1h
cmtlciB3aG91bGQgY2F1c2UgdGhlIG1hcmtlciB0byBiZSByZW1vdmVkLiIpOworCisgICAgdmFy
IGNvbnNvbGVfbWVzc2FnZXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOworICAgIAor
ICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQorICAgIHsKKyAgICAgICAgdmFyIGl0ZW0gPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICAgICAgY29uc29sZV9tZXNzYWdlcy5h
cHBlbmRDaGlsZChpdGVtKTsKKyAgICB9CisgICAgCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKworICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdmFyIHRlc3RBcmVh
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKKyAgICAgICAgICAgIHRlc3RBcmVh
LmZvY3VzKCk7CisKKyAgICAgICAgICAgIHZhciBkaWN0YXRlZFN0cmluZyA9IHRleHRJbnB1dENv
bnRyb2xsZXIubWFrZURpY3RhdGVkU3RyaW5nKCJ0aGlzIGlzIGEgdGV4dCIsICJ0ZXN0IiwgMTAs
IDQpOworICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFsbCIpOworICAg
ICAgICAgICAgdGV4dElucHV0Q29udHJvbGxlci5pbnNlcnRUZXh0KGRpY3RhdGVkU3RyaW5nKTsK
KyAgICAgICAgICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJkZWxldGVCYWNrd2Fy
ZDoiKTsKKworICAgICAgICAgICAgdmFyIG1hcmtlZFRleHQgPSAiIjsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgdmFyIHRlc3RUZXh0ID0gdGVz
dEFyZWEuZmlyc3RDaGlsZDsKKyAgICAgICAgICAgICAgICB2YXIgbWFya2VkID0gaW50ZXJuYWxz
Lm1hcmtlclJhbmdlRm9yTm9kZSh0ZXN0VGV4dCwgIkRpY3RhdGlvbkFsdGVybmF0aXZlcyIsIDAp
OworICAgICAgICAgICAgICAgIGlmIChtYXJrZWQpCisgICAgICAgICAgICAgICAgICAgIG1hcmtl
ZFRleHQgPSBtYXJrZWQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJtYXJrZWRUZXh0IiwgIiIpOworICAgICAgICAgICAgZG9j
dW1lbnQud3JpdGUoIlRFU1QgQ09NUExFVEUiKTsKKworICAgICAgICB9IGNhdGNoIChleCkgewor
ICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIkV4Y2VwdGlvbjogIiArIGV4LmRlc2NyaXB0aW9u
KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnNvbGUiKS5hcHBlbmRDaGlsZChjb25zb2xlX21lc3NhZ2VzKTsKKyAgICAgICAgCisgICAg
fSBlbHNlIHsKKyAgICAgICAgZG9jdW1lbnQud3JpdGUoIihjYW5ub3QgcnVuIGludGVyYWN0aXZl
bHkpIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQtdGV4
dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9p
bnNlcnQtZGljdGF0ZWQtdGV4dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ0NjE3MzJlZWVm
MzNmMjBmMDgwNzBmNTExZDlkY2ZjMDIwYmEwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1doZW4gaW5zZXJ0aW5nIGRpY3RhdGVkIHRleHQsIHJh
bmdlIG9mIHRleHQgdGhhdCBoYXMgYWx0ZXJuYXRpdmUgdGV4dCBpcyBhdHRhY2hlZCBhcyBEaWN0
YXRpb25BbHRlcm5hdGl2ZXMgbWFya2VyLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
K3RoaXMgaXMgYSB0ZXh0CitQQVNTIG1hcmtlZFRleHQgaXMgInRleHQiCisKK1RFU1QgQ09NUExF
VEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2lu
c2VydC1kaWN0YXRlZC10ZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGlu
Zy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQtdGV4dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyYTFlNDNiZDk5
ZTNkMjVlMDIwODMwMzBiZTdmMzJmOGM1ZDQ0MTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQtdGV4dC5odG1s
CkBAIC0wLDAgKzEsNTggQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgor
Ym9keSB7IG1hcmdpbjogMDsgcGFkZGluZzogMCB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+
Cis8cHJlIGlkPSJkZXNjcmlwdGlvbiI+PC9wcmU+Cis8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRp
dGFibGU+PC9kaXY+Cis8cCBpZD0iY29uc29sZSI+PC9wPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgorICAgIGRlc2NyaXB0aW9uKCJXaGVuIGluc2VydGluZyBkaWN0YXRlZCB0ZXh0
LCByYW5nZSBvZiB0ZXh0IHRoYXQgaGFzIGFsdGVybmF0aXZlIHRleHQgaXMgYXR0YWNoZWQgYXMg
RGljdGF0aW9uQWx0ZXJuYXRpdmVzIG1hcmtlci4iKTsKKworICAgIHZhciBjb25zb2xlX21lc3Nh
Z2VzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKKyAgICAKKyAgICBmdW5jdGlvbiBs
b2cobWVzc2FnZSkKKyAgICB7CisgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgibGkiKTsKKyAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZShtZXNzYWdlKSk7CisgICAgICAgIGNvbnNvbGVfbWVzc2FnZXMuYXBwZW5kQ2hpbGQoaXRl
bSk7CisgICAgfQorICAgIAorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICAgICAgCisgICAgICAgIHRyeSB7CisKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHZhciB0ZXN0QXJlYSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisgICAgICAgICAgICB0ZXN0QXJlYS5mb2N1cygpOworCisg
ICAgICAgICAgICB2YXIgZGljdGF0ZWRTdHJpbmcgPSB0ZXh0SW5wdXRDb250cm9sbGVyLm1ha2VE
aWN0YXRlZFN0cmluZygidGhpcyBpcyBhIHRleHQiLCAidGVzdCIsIDEwLCA0KTsKKyAgICAgICAg
ICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJTZWxlY3RBbGwiKTsKKyAgICAgICAgICAgIHRleHRJ
bnB1dENvbnRyb2xsZXIuaW5zZXJ0VGV4dChkaWN0YXRlZFN0cmluZyk7CisKKyAgICAgICAgICAg
IHZhciBtYXJrZWRUZXh0ID0gIiI7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykg
eworICAgICAgICAgICAgICAgIHZhciB0ZXN0VGV4dCA9IHRlc3RBcmVhLmZpcnN0Q2hpbGQ7Cisg
ICAgICAgICAgICAgICAgdmFyIG1hcmtlZCA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUo
dGVzdFRleHQsICJEaWN0YXRpb25BbHRlcm5hdGl2ZXMiLCAwKTsKKyAgICAgICAgICAgICAgICBp
ZiAobWFya2VkKQorICAgICAgICAgICAgICAgICAgICBtYXJrZWRUZXh0ID0gbWFya2VkLnRvU3Ry
aW5nKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygibWFya2VkVGV4dCIsICJ0ZXh0Iik7CisgICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiVEVT
VCBDT01QTEVURSIpOworCisgICAgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgICAgICBkb2N1
bWVudC53cml0ZSgiRXhjZXB0aW9uOiAiICsgZXguZGVzY3JpcHRpb24pOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVu
ZENoaWxkKGNvbnNvbGVfbWVzc2FnZXMpOworICAgICAgICAKKyAgICB9IGVsc2UgeworICAgICAg
ICBkb2N1bWVudC53cml0ZSgiKGNhbm5vdCBydW4gaW50ZXJhY3RpdmVseSkiKTsKKyAgICB9Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137472</attachid>
            <date>2012-04-16 20:48:55 -0700</date>
            <delta_ts>2012-04-18 19:38:50 -0700</delta_ts>
            <desc>Patch (v3)</desc>
            <filename>bug-83047-20120416204853.patch</filename>
            <type>text/plain</type>
            <size>92881</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWVmYmNlMjFlZGQzYzU2
OWJlODIxMDE0NDNlMzFmODJkMGQ4YmRjNy4uYjFlNTViNjMxYmNlZWE1ZWJmYzQ0MzhmNDhiM2Vk
YmUwN2VmYjliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA0LTE2ICBKaWEg
UHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE9uIE9TIFgsIE1hcmsgdGV4dCB3aXRoIGRp
Y3RhdGlvbiBhbHRlcm5hdGl2ZSB3aXRoIGJsdWUgdW5kZXJsaW5lLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMwNDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogcGxhdGZvcm0vbWFjL2VkaXRp
bmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUuaHRtbAorICAgICAg
ICAgICAgICAgcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQu
aHRtbAorCisgICAgICAgIFRoaXMgaXMgdGhlIGZvbGxvdyB1cCBwYXRjaCBtZW50aW9uZWQgaW4g
dGhlIENoYW5nZUxvZyBvZiBidWcgODM1NDkuIFRoaXMgcGF0Y2ggYWRkZWQgYW4gT1MgWCBzcGVj
aWZpYworICAgICAgICBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8gZGljdGF0ZWQgdGV4dCBpbnB1
dC4gTWFqb3JpdHkgb2YgdGhpcyBwYXRjaCBpcyBpbiBXZWJLaXQgYW5kIFdlYktpdDIuCisKKyAg
ICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJu
YXRpdmVzRm9yTWFya2VyKTogQWRkZWQgYSBuZXcgZnVuY3Rpb24gaW4KKyAgICAgICAgICBBbHRl
cm5hdGl2ZVRleHRDbGllbnQsIHdoaWNoIG5vdGlmaWVzIFdlYktpdCBsYXllciB0byByZW1vdmUg
ZGljdGF0aW9uIGFsdGVybmF0aXZlIGRhdGEgd2hlbiBhCisgICAgICAgICAgRGljdGF0aW9uQWxl
cm5hdGl2ZXMgbWFya2VyIGlzIHJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKEFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXIpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRp
bmcpOgorICAgICAgICAqIHBhZ2UvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg6CisgICAgICAgIChB
bHRlcm5hdGl2ZVRleHRDbGllbnQpOgorCiAyMDEyLTA0LTE2ICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTEyNDkzMzY+IGFuZCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwNTAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
NTZjMWJlM2IxNzEzMTM1NDM3ZTZmNjdhNWYzNGY1NGZjNzU1MjExMi4uNGM4MzQ5Yzk3NzA1YWJm
YzI1MWRhYTQ4ZTg2YTdmMjcxZjljZDdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
Mi0wNC0xNiAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KKworICAgICAgICBPbiBPUyBYLCBNYXJr
IHRleHQgd2l0aCBkaWN0YXRpb24gYWx0ZXJuYXRpdmUgd2l0aCBibHVlIHVuZGVybGluZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMDQ3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMi0wNC0xMCAgUGF0cmljayBHYW5zdGVyZXIg
IDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBbQ01ha2VdIEVuYWJsZSBVU0VfRk9MREVS
UyBwcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGYwOWU5NzhmODMyMDMyMjVmMDhkNDM0YTMx
YTYwODEzZDYzMjFiZjAuLjZhN2NkNWZiNzgwZGEyOTQzY2I3Y2I0ZjE1Zjg0YzkyNWI3N2YwMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAxMi0wNC0xNiAgSmlhIFB1ICA8
anB1QGFwcGxlLmNvbT4KKworICAgICAgICBPbiBPUyBYLCBNYXJrIHRleHQgd2l0aCBkaWN0YXRp
b24gYWx0ZXJuYXRpdmUgd2l0aCBibHVlIHVuZGVybGluZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxzbyBzZWUgV2ViQ29yZS9DaGFuZ2VMb2cuCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWRkZWQgYW4gT1MgWCBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IHJl
bGF0ZWQgdG8gZGljdGF0ZWQgdGV4dCBpbnB1dC4gSXQgc2hvdWxkbid0IGNoYW5nZSBiZWhhdmlv
cnMKKyAgICAgICAgb24gb3RoZXIgcGxhdGZvcm1zLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ29ycmVjdGlvblBhbmVsLm1tOgorICAgICAgICAoQ29ycmVjdGlvblBhbmVsOjpoYW5kbGVB
Y2NlcHRlZFJlcGxhY2VtZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuaDoKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tOgorICAg
ICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2
ZXMpOgorICAgICAgICAqIFdlYlZpZXcvRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmg6
IEFkZGVkLgorICAgICAgICAoRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyKToKKyAgICAg
ICAgKERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVD
b250cm9sbGVyKToKKyAgICAgICAgKERpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyKToKKyAgICAg
ICAgKERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4dENvbnRy
b2xsZXI6OkRpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyKToKKyAgICAgICAgKiBXZWJWaWV3L0Rp
Y3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5tbTogQWRkZWQuCisgICAgICAgIChEaWN0YXRp
b25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OkRpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyOjphZGRB
bHRlcm5hdGl2ZXMpOgorICAgICAgICAoRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpE
aWN0YXRpb25Db250ZXh0Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yRGljdGF0aW9uQ29udGV4
dCk6CisgICAgICAgIChEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OkRpY3RhdGlvbkNv
bnRleHRDb250cm9sbGVyOjpyZW1vdmVBbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KToK
KyAgICAgICAgKERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4
dENvbnRyb2xsZXI6OmNsZWFyKToKKyAgICAgICAgKERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJv
bGxlcjo6YWRkQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKERpY3RhdGlvbkFsdGVybmF0aXZlQ29u
dHJvbGxlcjo6Y2xlYXIpOgorICAgICAgICAoRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVy
OjpzaG93QWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJv
bGxlcjo6aGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZSk6CisgICAgICAgIChEaWN0YXRpb25BbHRl
cm5hdGl2ZUNvbnRyb2xsZXI6OmRpc21pc3NBbHRlcm5hdGl2ZXMpOgorICAgICAgICAoRGljdGF0
aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpyZW1vdmVBbHRlcm5hdGl2ZXMpOgorICAgICAgICAq
IFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChjb2xsZWN0RGljdGF0aW9uVGV4dEFs
dGVybmF0aXZlcyk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGluc2VydFRleHQ6XSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IGhhbmRsZUFjY2Vw
dGVkQWx0ZXJuYXRpdmVUZXh0Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IF9nZXRXZWJDb3JlRGlj
dGF0aW9uQWx0ZXJuYXRpdmVzOmZyb21UZXh0QWx0ZXJuYXRpdmVzOl0pOgorICAgICAgICAoLVtX
ZWJWaWV3IF9yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3RGF0YS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEubW06CisgICAg
ICAgICgtW1dlYlZpZXdQcml2YXRlIGluaXRdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJ
bnRlcm5hbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0QWx0ZXJuYXRpdmVX
aXRoUmFuZ2U6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSk6CisgICAgICAgIChUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwog
MjAxMi0wNC0xMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAocjEwMjI2Mik6IGlBZCBQcm9kdWNlciByZWxpZXMgb24gQ1NTU3R5bGVEZWNsYXJh
dGlvbiBwcm9wZXJ0eSBzZXR0ZXJzIHJlc3BlY3RpbmcgJyFpbXBvcnRhbnQnCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMGI1NDZmNzUxOTEzOTgyMzQ3MDBhM2Q3NmE0OWE3OGVkMGVmZGRkYi4uMGNkNGU3ZjJmOGM0
M2I0ODIzMTZmOWM3NTgwYjljOTc2MGY4YzE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBA
CisyMDEyLTA0LTE2ICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE9uIE9TIFgs
IE1hcmsgdGV4dCB3aXRoIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZSB3aXRoIGJsdWUgdW5kZXJsaW5l
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMwNDcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbHNvIHNl
ZSBXZWJDb3JlL0NoYW5nZUxvZy4KKyAgICAgICAgVGhpcyBwYXRjaCBhZGRlZCBhbiBPUyBYIHNw
ZWNpZmljIGZ1bmN0aW9uYWxpdHkgcmVsYXRlZCB0byBkaWN0YXRlZCB0ZXh0IGlucHV0LiBJdCBz
aG91bGRuJ3QgY2hhbmdlIGJlaGF2aW9ycyBvbgorICAgICAgICBvdGhlciBwbGF0Zm9ybXMuCisK
KyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKENv
cmVJUEM6Ojo6ZW5jb2RlKToKKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAoQ29yZUlQQzo6
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJ
bXBsLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoUGFnZUNsaWVudEltcGwpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQpOgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6YWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoY29sbGVj
dERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXMpOgorICAgICAgICAoLVtXS1ZpZXcgaW5zZXJ0VGV4
dDpyZXBsYWNlbWVudFJhbmdlOl0pOgorICAgICAgICAoLVtXS1ZpZXcgaGFuZGxlQWNjZXB0ZWRB
bHRlcm5hdGl2ZVRleHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50
ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAoUGFn
ZUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbW92ZURpY3RhdGlv
bkFsdGVybmF0aXZlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAoV2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tOgor
ICAgICAgICAoV2ViS2l0OjpDb3JyZWN0aW9uUGFuZWw6OmhhbmRsZUFjY2VwdGVkUmVwbGFjZW1l
bnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9s
bGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKERpY3RhdGlvbkFsdGVy
bmF0aXZlQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OkRpY3RhdGlvbkFsdGVybmF0aXZl
Q29udHJvbGxlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyKToKKyAgICAgICAgKERp
Y3RhdGlvbkNvbnRleHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6RGljdGF0aW9uQWx0
ZXJuYXRpdmVDb250cm9sbGVyOjpEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlcjo6RGljdGF0aW9u
Q29udGV4dENvbnRyb2xsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvRGljdGF0aW9uQWx0
ZXJuYXRpdmVDb250cm9sbGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OkRpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4
dENvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyk6CisgICAgICAgIChXZWJLaXQ6OkRpY3RhdGlv
bkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4dENvbnRyb2xsZXI6OmFsdGVy
bmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpEaWN0YXRpb25B
bHRlcm5hdGl2ZUNvbnRyb2xsZXI6OkRpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyOjpyZW1vdmVB
bHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6RGljdGF0
aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlcjo6Y2xl
YXIpOgorICAgICAgICAoV2ViS2l0OjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OmFk
ZEFsdGVybmF0aXZlcyk6CisgICAgICAgIChXZWJLaXQ6OkRpY3RhdGlvbkFsdGVybmF0aXZlQ29u
dHJvbGxlcjo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNv
bnRyb2xsZXI6OnNob3dBbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViS2l0OjpEaWN0YXRpb25B
bHRlcm5hdGl2ZUNvbnRyb2xsZXI6OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUpOgorICAgICAg
ICAoV2ViS2l0OjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OmRpc21pc3NBbHRlcm5h
dGl2ZXMpOgorICAgICAgICAoV2ViS2l0OjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6
OnJlbW92ZUFsdGVybmF0aXZlcyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9UZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UuaDogQWRkZWQuCisgICAgICAgIChUZXh0QWx0ZXJuYXRpdmVXaXRoUmFu
Z2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1t
OiBBZGRlZC4KKyAgICAgICAgKFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZTo6VGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHQpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQuaDoKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZW1v
dmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViUGFnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjppbnNlcnREaWN0YXRlZFRleHQpOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wNC0x
NiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzExMjQ5MzM2PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg0MDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyLmNwcAppbmRleCA4ZDA5ZmYxYjk5ODQ3MWVhNjFmMzg5MjY4ZTQ5MjRmNzA0
Y2YxM2IxLi5mYTBiODhlNzZhYmRjZTg2ZjdmZGM3MzgzZmU4ZDU0ZDZjYjI4OWI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5j
cHAKQEAgLTYyNCw0ICs2MjQsMTUgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpp
bnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWMKICAgICByZXR1
cm4gZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCk7CiB9CiAKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKERvY3VtZW50TWFy
a2VyKiBtYXJrZXIpCit7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgRGlj
dGF0aW9uTWFya2VyRGV0YWlscyogZGV0YWlscyA9IHN0YXRpY19jYXN0PERpY3RhdGlvbk1hcmtl
ckRldGFpbHMqPihtYXJrZXItPmRldGFpbHMoKSk7CisgICAgaWYgKEFsdGVybmF0aXZlVGV4dENs
aWVudCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+
cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRldGFpbHMtPmRpY3RhdGlvbkNvbnRleHQoKSk7
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShtYXJrZXIpOworI2VuZGlmCit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyLmgKaW5kZXggMjg0NDllZmQ5M2U1NzQwYTA5ZTM1YjY1NGI4OWI1MGM3
OTgwOGQ5Yi4uZjUyZTgwYjg4YmZmZTZmNWJlZDM1NmI5ZTE5YWEzNDZhYTMzNDVhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmgK
QEAgLTEzMCw2ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVkQXV0b2NvcnJlY3Rp
b25BdFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFN0cmlu
ZykgVU5MRVNTX0VOQUJMRUQoeyBVTlVTRURfUEFSQU0ob3JpZ2luYWxTdHJpbmcpOyB9KQogCiAg
ICAgYm9vbCBpbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPERp
Y3RhdGlvbkFsdGVybmF0aXZlPiYsIEV2ZW50Kik7CisgICAgdm9pZCByZW1vdmVEaWN0YXRpb25B
bHRlcm5hdGl2ZXNGb3JNYXJrZXIoRG9jdW1lbnRNYXJrZXIqKTsKIAogcHJpdmF0ZToKICNpZiBV
U0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXgg
MjI4ODRmYTc3ZWRkODQ0ZTU0ZmJiODljYTBhNWY4OWFlZDQ0MWJlOS4uNDljMTEwYjllMWZiMjVm
MDg3M2EyNTdkOGRiZTk5ZDcxNzY2ZjJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApA
QCAtMjI1OCw2ICsyMjU4LDEwIEBAIHZvaWQgRWRpdG9yOjp1cGRhdGVNYXJrZXJzRm9yV29yZHNB
ZmZlY3RlZEJ5RWRpdGluZyhib29sIGRvTm90UmVtb3ZlSWZTZWxlY3Rpb25BCiAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBSZWZQdHI8UmFuZ2U+IHdv
cmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIHN0YXJ0T2ZGaXJzdFdvcmQuZGVlcEVx
dWl2YWxlbnQoKSwgZW5kT2ZMYXN0V29yZC5kZWVwRXF1aXZhbGVudCgpKTsKIAorICAgIFZlY3Rv
cjxEb2N1bWVudE1hcmtlcio+IG1hcmtlcnMgPSBkb2N1bWVudC0+bWFya2VycygpLT5tYXJrZXJz
SW5SYW5nZSh3b3JkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5h
dGl2ZXMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWFya2Vycy5zaXplKCk7ICsraSkK
KyAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZW1vdmVEaWN0YXRpb25BbHRl
cm5hdGl2ZXNGb3JNYXJrZXIobWFya2Vyc1tpXSk7CisKICAgICBkb2N1bWVudC0+bWFya2Vycygp
LT5yZW1vdmVNYXJrZXJzKHdvcmRSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5n
IHwgRG9jdW1lbnRNYXJrZXI6OkNvcnJlY3Rpb25JbmRpY2F0b3IgfCBEb2N1bWVudE1hcmtlcjo6
U3BlbGxDaGVja2luZ0V4ZW1wdGlvbiB8IERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5h
dGl2ZXMsIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBp
bmdNYXJrZXIpOwogICAgIGRvY3VtZW50LT5tYXJrZXJzKCktPmNsZWFyRGVzY3JpcHRpb25Pbk1h
cmtlcnNJbnRlcnNlY3RpbmdSYW5nZSh3b3JkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpS
ZXBsYWNlbWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0
aXZlVGV4dENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRleHRDbGll
bnQuaAppbmRleCBmNWFlNjdkMGVkOWZkYzZmYmY0NzA3Mzc2NjYzYjkyYWM5MzE1Y2JjLi5lOTk5
ZDA1NmQyOWMzY2M1NDRjZDZkNmEyMzVmMDM4ODA2YTMzMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAgLTMxLDYgKzMxLDExIEBACiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYg
UExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xJT04p
CisvLyBTb21lIHBsYXRmb3JtcyBwcm92aWRlIFVJIGZvciBzdWdnZXN0aW5nIGFsdGVybmF0aXZl
IGRpY3RhdGlvbiB0ZXh0LgorI2RlZmluZSBXVEZfVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMg
MQorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFS
RCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlM
RElOR19PTl9MSU9OKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gUmVhc29uRm9yRGlz
bWlzc2luZ0FsdGVybmF0aXZlVGV4dCB7CkBAIC01Nyw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlzbWlzc0FsdGVybmF0aXZlKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5h
dGl2ZVRleHQpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQWx0ZXJuYXRpdmVTb29u
KFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlw
ZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVu
dFN0cmluZykgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2
ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOwogfTsKICAgICAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU0ZjAyNmQ2
YTcyZjVmMjYzODIyNjI1YTMyNjU2NTBlODY0ZDI0YTguLjBhNTAyZThmYmM4MzMyOTQ5OTEwMDMz
YTZhYmY0NzhhN2QxMjA4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMzcyLDYgKzM3Miw4IEBACiAJCUNEQTYyQUUzMTI1Rjg3QzIw
MDdGRDExOCAvKiBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTYyQUUxMTI1Rjg3QzIwMDdGRDExOCAvKiBX
ZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbSAqLzsgfTsKIAkJQ0VEQTEyREIxNTJDQkU2ODAwRDlF
MDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFREExMkQ5MTUyQ0JFNjgwMEQ5RTA4RCAvKiBXZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQubW0gKi87IH07CiAJCUNFREExMkRDMTUyQ0JFNjgwMEQ5RTA4
RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFREExMkRBMTUyQ0JFNjgwMEQ5RTA4RCAvKiBXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQuaCAqLzsgfTsKKwkJQ0VEQkJGMUUxNTJGNDlFNzAwNjI3OTNCIC8q
IERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQkJGMUMxNTJGNDlFNzAwNjI3OTNCIC8qIERpY3Rh
dGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oICovOyB9OworCQlDRURCQkYxRjE1MkY0OUU3MDA2
Mjc5M0IgLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQkJGMUQxNTJGNDlFNzAwNjI3OTNC
IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5tbSAqLzsgfTsKIAkJREQ3Q0RFRTcw
QTIzQkE5RTAwMDY5OTI4IC8qIFdlYlR5cGVzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREN0NERUU2MEEyM0JBOUUwMDA2OTkyOCAvKiBX
ZWJUeXBlc0ludGVybmFsLmggKi87IH07CiAJCUREODk2ODIwMDlBQTg3MjQwMDk3RTdGMCAvKiBX
ZWJFbGVtZW50RGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gREQ4OTY4MUUwOUFBODcyNDAwOTdFN0YwIC8qIFdlYkVsZW1lbnREaWN0aW9u
YXJ5LmggKi87IH07CiAJCUREODk2ODIxMDlBQTg3MjQwMDk3RTdGMCAvKiBXZWJFbGVtZW50RGlj
dGlvbmFyeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEREODk2ODFGMDlBQTg3MjQwMDk3RTdGMCAvKiBXZWJFbGVtZW50RGljdGlvbmFyeS5tbSAqLzsg
fTsKQEAgLTcwMyw2ICs3MDUsOCBAQAogCQlDREE2MkFFMTEyNUY4N0MyMDA3RkQxMTggLyogV2Vi
RnVsbFNjcmVlbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0VEQTEyRDkxNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENs
aWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VEQTEy
REExNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0VEQkJGMUMxNTJGNDlFNzAwNjI3OTNCIC8qIERp
Y3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0VEQkJGMUQxNTJGNDlFNzAwNjI3OTNCIC8qIERpY3RhdGlvbkFsdGVy
bmF0aXZlQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJREQ3Q0RFRTYwQTIzQkE5RTAwMDY5OTI4IC8qIFdlYlR5cGVzSW50ZXJuYWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVHlwZXNJbnRlcm5hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERDg5NjgxRTA5QUE4NzI0MDA5N0U3RjAgLyog
V2ViRWxlbWVudERpY3Rpb25hcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJFbGVtZW50RGljdGlvbmFyeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJREQ4OTY4MUYwOUFBODcy
NDAwOTdFN0YwIC8qIFdlYkVsZW1lbnREaWN0aW9uYXJ5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJFbGVtZW50RGljdGlvbmFy
eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07CkBAIC0xMTY1LDYgKzExNjksOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJRjUyQ0E2QkQw
MkRGOUQwRjAxODYzNUNBIC8qIEhUTUwgKi8sCiAJCQkJNTFFOTRDMDcwNkMwMkNBMzAwQTlCMDlF
IC8qIFBERiAqLywKKwkJCQlDRURCQkYxRDE1MkY0OUU3MDA2Mjc5M0IgLyogRGljdGF0aW9uQWx0
ZXJuYXRpdmVDb250cm9sbGVyLm1tICovLAorCQkJCUNFREJCRjFDMTUyRjQ5RTcwMDYyNzkzQiAv
KiBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIuaCAqLywKIAkJCQk4MzczNDM1QTA2MjRF
RTBEMDBGM0IyODkgLyogV2ViQXJjaGl2ZS5oICovLAogCQkJCTgzNzM0MzVCMDYyNEVFMEQwMEYz
QjI4OSAvKiBXZWJBcmNoaXZlLm1tICovLAogCQkJCTQ0QkI4QjEzMTI0MUEwMjIwMDFFM0EyMiAv
KiBXZWJBcmNoaXZlSW50ZXJuYWwuaCAqLywKQEAgLTE2NTAsNiArMTY1Niw3IEBACiAJCQkJMzEy
RTJGRTUxNEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzEyRTJGRTkxNEU0ODIxNTAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbkludGVybmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRURBMTJEQzE1MkNCRTY4MDBEOUUwOEQgLyogV2ViQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRURCQkYxRTE1MkY0OUU3
MDA2Mjc5M0IgLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTIwMzgsNiArMjA0NSw3IEBACiAJCQkJNDFGNDQ4NTAxMDMzOEU4QzAwMzBFNTVFIC8q
IFdlYldvcmtlcnNQcml2YXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyRTJGRTYxNEU0ODE4
MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFREEx
MkRCMTUyQ0JFNjgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0gaW4gU291
cmNlcyAqLywKKwkJCQlDRURCQkYxRjE1MkY0OUU3MDA2Mjc5M0IgLyogRGljdGF0aW9uQWx0ZXJu
YXRpdmVDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0KaW5kZXggNjU4M2NlZTY2MjEx
MTA3NmMxZTAyNDcyNmVlY2JiMGE4ZjU0MDc5MC4uNjgxMGEyNzgwYjlmMzk2ZGEwZDMyMmJkNjNh
Y2Y2MDEyYTllMzA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvQ29ycmVjdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L0NvcnJlY3Rpb25QYW5lbC5tbQpAQCAtMjUsNyArMjUsNiBAQAogI2ltcG9ydCAiQ29ycmVj
dGlvblBhbmVsLmgiCiAKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgotI2ltcG9ydCAiV2Vi
Vmlld1ByaXZhdGUuaCIKIAogI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpAQCAtMTMxLDcgKzEzMCw3IEBAIHZvaWQgQ29ycmVjdGlvblBhbmVs
OjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJlcGxhY2VtZW50
LCBOCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBbbV92aWV3LmdldCgpIGhhbmRs
ZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDphY2NlcHRlZFJlcGxhY2VtZW50XTsKKyAgICBbbV92aWV3
LmdldCgpIGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0OmFjY2VwdGVkUmVwbGFjZW1lbnRd
OwogICAgIG1fdmlldy5jbGVhcigpOwogICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQogICAg
ICAgICBtX3Jlc3VsdEZvckRpc21pc3NhbC5hZG9wdE5TKFthY2NlcHRlZFJlcGxhY2VtZW50IGNv
cHldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggN2VkZmFjZTBhZTM0NjgxNDE5N2NkYjE1
NmQ2YmIzNmNkNmIxZDFkNy4uZjRjMmJmNTcyMDU5MzJlYjhjZTIyMzI1Yjg0ODJjOWEzZTdjYWU0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmUoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlz
c2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlz
c0FsdGVybmF0aXZlU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVU
ZXh0KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNw
b25zZShXZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBk
aWN0YXRpb25Db250ZXh0KSBPVkVSUklERTsKIHByaXZhdGU6CiAgICAgV2ViVmlldyogbV93ZWJW
aWV3OwogI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5t
bQppbmRleCA2OTcyZmI0YmE5MzJlMjRjZGJiMDQ5OWNlNDhlZjZlYTI0ZWQ1MmNkLi40YmRiOTQy
MzY2YzM2ZDNmZGZiZjZjMGRkNzM5NzBkMGMwZjYyMDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
Lm1tCkBAIC0yNSw2ICsyNSw4IEBACiAKICNpbmNsdWRlICJXZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQuaCIKIAorI2luY2x1ZGUgIldlYlZpZXdJbnRlcm5hbC5oIgorCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpXZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQoV2ViVmlldyogd2ViVmlldykKQEAgLTY5LDMgKzcxLDEwIEBAIHZvaWQgV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0
aW9uUmVzcG9uCiBDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2Uo
bV93ZWJWaWV3LCByZXNwb25zZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKTsK
ICNlbmRpZgogfQorCit2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVtb3ZlRGljdGF0
aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisjaWYgVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgW21fd2ViVmlldyBfcmVtb3ZlRGljdGF0aW9uQWx0
ZXJuYXRpdmVzOmRpY3RhdGlvbkNvbnRleHRdOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L0RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9EaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jZWU4OWE4ZDRmMWM0ZDlmN2MyYjU1MDRhNmYzN2E0NWYxZGM5OGM1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9EaWN0YXRpb25BbHRl
cm5hdGl2ZUNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXJfaAorI2RlZmluZSBEaWN0YXRpb25BbHRl
cm5hdGl2ZUNvbnRyb2xsZXJfaAorCisjaW5jbHVkZSA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRD
bGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgVVNFKERJQ1RBVElP
Tl9BTFRFUk5BVElWRVMpCitPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKK09CSkNfQ0xB
U1MgV2ViVmlldzsKKworY2xhc3MgRGljdGF0aW9uQ29udGV4dENvbnRyb2xsZXI7CisKK2NsYXNz
IERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlciB7CitwdWJsaWM6CisgICAgRGljdGF0aW9u
QWx0ZXJuYXRpdmVDb250cm9sbGVyKCkgeyB9CisgICAgLy8gUmV0dXJucyBhIGRpY3RhdGlvbiBj
b250ZXh0IElELgorICAgIHVpbnQ2NF90IGFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8
TlNUZXh0QWx0ZXJuYXRpdmVzPiYpOworICAgIHZvaWQgY2xlYXIoKTsKKyAgICB2b2lkIHNob3dB
bHRlcm5hdGl2ZXMoV2ViVmlldyosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdC
b3hPZkRpY3RhdGVkU3RyaW5nLCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKKyAgICB2b2lk
IGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKKyAgICB2b2lkIHJlbW92ZUFsdGVybmF0aXZlcyh1aW50
NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGhhbmRsZUFjY2Vw
dGVkQWx0ZXJuYXRpdmUoTlNTdHJpbmcqIGFjY2VwdGVkQWx0ZXJuYXRpdmUsIHVpbnQ2NF90IGRp
Y3RhdGlvbkNvbnRleHQsIE5TVGV4dEFsdGVybmF0aXZlcyopOworCisgICAgY2xhc3MgRGljdGF0
aW9uQ29udGV4dENvbnRyb2xsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgRGljdGF0aW9uQ29u
dGV4dENvbnRyb2xsZXIoKSB7IH0KKyAgICAgICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNv
bnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7CisgICAgICAgIHZvaWQgY2xlYXIo
KTsKKyAgICAgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25D
b250ZXh0KHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOworICAgICAgICB2b2lkIHJlbW92ZUFs
dGVybmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRleHQodWludDY0X3QgZGljdGF0aW9uQ29udGV4dCk7
CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBpbnZhbGlkQ29udGV4dCA9IDA7CisgICAg
cHJpdmF0ZToKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZXRhaW5QdHI8TlNU
ZXh0QWx0ZXJuYXRpdmVzPiA+IEhhc2hNYXBUeXBlOworICAgICAgICBIYXNoTWFwVHlwZSBtX2Fs
dGVybmF0aXZlc09iamVjdE1hcDsKKyAgICB9OworCisgICAgRGljdGF0aW9uQ29udGV4dENvbnRy
b2xsZXIgbV9jb250ZXh0Q29udHJvbGxlcjsKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gbV92aWV3
OworfTsKKyNlbmRpZgorI2VuZGlmIC8vIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L0RpY3RhdGlvbkFsdGVybmF0
aXZlQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvRGljdGF0aW9uQWx0
ZXJuYXRpdmVDb250cm9sbGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzMmNiZDg1MTA0ODYzMDlmMDdkZjAy
MTMwYzQzNGJlMmVmOWRiNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L0RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5tbQpAQCAtMCwwICsxLDExMSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgIkRpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5o
IgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisKKyNpbXBvcnQgPEFwcEtpdC9O
U1NwZWxsQ2hlY2tlci5oPgorI2ltcG9ydCA8QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgor
I2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
Cit1aW50NjRfdCBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OkRpY3RhdGlvbkNvbnRl
eHRDb250cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVy
bmF0aXZlcz4mIGFsdGVybmF0aXZlcykKK3sKKyAgICB1aW50NjRfdCBjb250ZXh0ID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KGFsdGVybmF0aXZlcy5nZXQoKSk7CisgICAgaWYgKCFjb250
ZXh0KQorICAgICAgICByZXR1cm4gaW52YWxpZENvbnRleHQ7CisgICAgaWYgKGFsdGVybmF0aXZl
c0ZvckRpY3RhdGlvbkNvbnRleHQoY29udGV4dCkpCisgICAgICAgIHJldHVybiBjb250ZXh0Owor
CisgICAgSGFzaE1hcFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2FsdGVybmF0aXZlc09iamVj
dE1hcC5hZGQoY29udGV4dCwgYWx0ZXJuYXRpdmVzKTsKKyAgICByZXR1cm4gcmVzdWx0LmlzTmV3
RW50cnkgPyBjb250ZXh0IDogaW52YWxpZENvbnRleHQ7Cit9CisKK05TVGV4dEFsdGVybmF0aXZl
cyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpEaWN0YXRpb25Db250ZXh0Q29udHJv
bGxlcjo6YWx0ZXJuYXRpdmVzRm9yRGljdGF0aW9uQ29udGV4dCh1aW50NjRfdCBkaWN0YXRpb25D
b250ZXh0KQoreworICAgIEhhc2hNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBpdHIgPSBtX2FsdGVy
bmF0aXZlc09iamVjdE1hcC5maW5kKGRpY3RhdGlvbkNvbnRleHQpOworICAgIGlmIChpdHIgPT0g
bV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAg
IHJldHVybiBpdHItPnNlY29uZC5nZXQoKTsKK30KKwordm9pZCBEaWN0YXRpb25BbHRlcm5hdGl2
ZUNvbnRyb2xsZXI6OkRpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyOjpyZW1vdmVBbHRlcm5hdGl2
ZXNGb3JEaWN0YXRpb25Db250ZXh0KHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAg
bV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAucmVtb3ZlKGRpY3RhdGlvbkNvbnRleHQpOworfQorCit2
b2lkIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4dENvbnRy
b2xsZXI6OmNsZWFyKCkKK3sKKyAgICBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5jbGVhcigpOwor
fQorCit1aW50NjRfdCBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OmFkZEFsdGVybmF0
aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYgYWx0ZXJuYXRpdmVzKQor
eworICAgIHJldHVybiBtX2NvbnRleHRDb250cm9sbGVyLmFkZEFsdGVybmF0aXZlcyhhbHRlcm5h
dGl2ZXMpOworfQorCit2b2lkIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6Y2xlYXIo
KQoreworICAgIHJldHVybiBtX2NvbnRleHRDb250cm9sbGVyLmNsZWFyKCk7Cit9CisKK3ZvaWQg
RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpzaG93QWx0ZXJuYXRpdmVzKFdlYlZpZXcq
IHZpZXcsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkU3Ry
aW5nLCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIGRpc21pc3NBbHRlcm5hdGl2
ZXMoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybjsKKyAgICBtX3ZpZXcgPSB2aWV3
OworICAgIE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVzID0gbV9jb250ZXh0Q29udHJv
bGxlci5hbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KGRpY3RhdGlvbkNvbnRleHQpOwor
ICAgIGlmICghYWx0ZXJuYXRpdmVzKQorICAgICAgICByZXR1cm47CisgICAgTlNTcGVsbENoZWNr
ZXIqIHNwZWxsQ2hlY2tlciA9IFtOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdOwor
ICAgIFtzcGVsbENoZWNrZXIgc2hvd0NvcnJlY3Rpb25JbmRpY2F0b3JPZlR5cGU6TlNDb3JyZWN0
aW9uSW5kaWNhdG9yVHlwZUd1ZXNzZXMgcHJpbWFyeVN0cmluZzphbHRlcm5hdGl2ZXMucHJpbWFy
eVN0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVzLmFsdGVybmF0aXZlU3RyaW5n
cyBmb3JTdHJpbmdJblJlY3Q6W3ZpZXcgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3OmJvdW5kaW5n
Qm94T2ZEaWN0YXRlZFN0cmluZ10gdmlldzptX3ZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6
XihOU1N0cmluZyogYWNjZXB0ZWRTdHJpbmcpIHsKKyAgICAgICAgaWYgKGFjY2VwdGVkU3RyaW5n
KQorICAgICAgICAgICAgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShhY2NlcHRlZFN0cmluZywg
ZGljdGF0aW9uQ29udGV4dCwgYWx0ZXJuYXRpdmVzKTsKKyAgICB9XTsKK30KKwordm9pZCBEaWN0
YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUoTlNT
dHJpbmcqIGFjY2VwdGVkQWx0ZXJuYXRpdmUsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQsIE5T
VGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVzKQoreworICAgIFthbHRlcm5hdGl2ZXMgbm90
ZVNlbGVjdGVkQWx0ZXJuYXRpdmVTdHJpbmc6YWNjZXB0ZWRBbHRlcm5hdGl2ZV07CisgICAgbV9j
b250ZXh0Q29udHJvbGxlci5yZW1vdmVBbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KGRp
Y3RhdGlvbkNvbnRleHQpOworICAgIFttX3ZpZXcuZ2V0KCkgaGFuZGxlQWNjZXB0ZWRBbHRlcm5h
dGl2ZVRleHQ6YWNjZXB0ZWRBbHRlcm5hdGl2ZV07CisgICAgbV92aWV3LmNsZWFyKCk7Cit9CisK
K3ZvaWQgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpkaXNtaXNzQWx0ZXJuYXRpdmVz
KCkKK3sKKyAgICBpZiAoIW1fdmlldykKKyAgICAgICAgcmV0dXJuOworICAgIFtbTlNTcGVsbENo
ZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBkaXNtaXNzQ29ycmVjdGlvbkluZGljYXRvckZvclZp
ZXc6bV92aWV3LmdldCgpXTsKK30KKwordm9pZCBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xs
ZXI6OnJlbW92ZUFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAg
IG1fY29udGV4dENvbnRyb2xsZXIucmVtb3ZlQWx0ZXJuYXRpdmVzRm9yRGljdGF0aW9uQ29udGV4
dChkaWN0YXRpb25Db250ZXh0KTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0KaW5kZXggYTliMjkxZTQ5OWY4MDI5N2NjNzU2NzlmMzkwZWY2YmRlMDYx
YzRhNC4uY2ZkZmNhMTA4MDkxNWYxNjE3NWZjZjRlMzEyMjZjMzNmMmJmZDBmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC01ODg4LDYgKzU4ODgsMjIgQEAg
c3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcs
IFZlY3RvcjxDb21wb3NpdGlvblVuZGUKICAgICB9CiB9CiAKKyNpZiBVU0UoRElDVEFUSU9OX0FM
VEVSTkFUSVZFUykKK3N0YXRpYyB2b2lkIGNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVz
KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlPiYgYWx0ZXJuYXRpdmVzKSB7CisgICAgTlNSYW5nZSBlZmZlY3RpdmVSYW5nZSA9IE5TTWFr
ZVJhbmdlKDAsIDApOworICAgIE5TVUludGVnZXIgbGVuZ3RoID0gW3N0cmluZyBsZW5ndGhdOwor
ICAgIGRvIHsKKyAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW3N0cmluZyBhdHRy
aWJ1dGVzQXRJbmRleDplZmZlY3RpdmVSYW5nZS5sb2NhdGlvbiBlZmZlY3RpdmVSYW5nZTomZWZm
ZWN0aXZlUmFuZ2VdOworICAgICAgICBpZiAoIWF0dHJpYnV0ZXMpCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgTlNUZXh0QWx0ZXJuYXRpdmVzICp0ZXh0QWx0ZXJuYXRpdmVzID0gW2F0dHJp
YnV0ZXMgb2JqZWN0Rm9yS2V5Ok5TVGV4dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5hbWVdOworICAg
ICAgICBpZiAodGV4dEFsdGVybmF0aXZlcykKKyAgICAgICAgICAgIGFsdGVybmF0aXZlcy5hcHBl
bmQoVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlKHRleHRBbHRlcm5hdGl2ZXMsIGVmZmVjdGl2ZVJh
bmdlKSk7CisgICAgICAgIGVmZmVjdGl2ZVJhbmdlLmxvY2F0aW9uID0gTlNNYXhSYW5nZShlZmZl
Y3RpdmVSYW5nZSk7CisgICAgfSB3aGlsZSAoZWZmZWN0aXZlUmFuZ2UubG9jYXRpb24gPCBsZW5n
dGgpOworfQorI2VuZGlmCisKIC0gKHZvaWQpaW5zZXJ0VGV4dDooaWQpc3RyaW5nCiB7CiAgICAg
Qk9PTCBpc0F0dHJpYnV0ZWRTdHJpbmcgPSBbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TQXR0cmli
dXRlZFN0cmluZyBjbGFzc11dOwpAQCAtNTkwNCw3ICs1OTIwLDE0IEBAIHN0YXRpYyB2b2lkIGV4
dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9z
aXRpb25VbmRlCiAgICAgTlNSYW5nZSByZXBsYWNlbWVudFJhbmdlID0geyBOU05vdEZvdW5kLCAw
IH07CiAgICAgYm9vbCBpc0Zyb21JbnB1dE1ldGhvZCA9IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUt
PmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpOwogCisgICAgVmVjdG9yPERpY3RhdGlvbkFsdGVy
bmF0aXZlPiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9uczsKICAgICBpZiAoaXNBdHRyaWJ1
dGVkU3RyaW5nKSB7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgICAgIFZl
Y3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+IHRleHRBbHRlcm5hdGl2ZXM7CisgICAgICAg
IGNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzKHN0cmluZywgdGV4dEFsdGVybmF0aXZl
cyk7CisgICAgICAgIGlmICh0ZXh0QWx0ZXJuYXRpdmVzLnNpemUoKSkKKyAgICAgICAgICAgIFtb
c2VsZiBfd2ViVmlld10gX2dldFdlYkNvcmVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6ZGljdGF0aW9u
QWx0ZXJuYXRpdmVMb2NhdGlvbnMgZnJvbVRleHRBbHRlcm5hdGl2ZXM6dGV4dEFsdGVybmF0aXZl
c107CisjZW5kaWYKICAgICAgICAgLy8gRklYTUU6IFdlIGlnbm9yZSBtb3N0IGF0dHJpYnV0ZXMg
ZnJvbSB0aGUgc3RyaW5nLCBzbyBmb3IgZXhhbXBsZSBpbnNlcnRpbmcgZnJvbSBDaGFyYWN0ZXIg
UGFsZXR0ZSBsb3NlcyBmb250IGFuZCBnbHlwaCB2YXJpYXRpb24gZGF0YS4KICAgICAgICAgLy8g
SXQgZG9lcyBub3QgbG9vayBsaWtlIGFueSBpbnB1dCBtZXRob2RzIGV2ZXIgdXNlIGluc2VydFRl
eHQ6IHdpdGggYXR0cmlidXRlcyBvdGhlciB0aGFuIE5TVGV4dElucHV0UmVwbGFjZW1lbnRSYW5n
ZUF0dHJpYnV0ZU5hbWUuCiAgICAgICAgIHRleHQgPSBbc3RyaW5nIHN0cmluZ107CkBAIC01OTQz
LDcgKzU5NjYsMTEgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVk
U3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUKICAgICBpZiAoIWNvcmVGcmFt
ZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkpIHsKICAgICAgICAgLy8gQW4gaW5zZXJ0VGV4
dDogbWlnaHQgYmUgaGFuZGxlZCBieSBvdGhlciByZXNwb25kZXJzIGluIHRoZSBjaGFpbiBpZiB3
ZSBkb24ndCBoYW5kbGUgaXQuCiAgICAgICAgIC8vIE9uZSBleGFtcGxlIGlzIHNwYWNlIGJhciB0
aGF0IHJlc3VsdHMgaW4gc2Nyb2xsaW5nIGRvd24gdGhlIHBhZ2UuCi0gICAgICAgIGV2ZW50SGFu
ZGxlZCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoZXZlbnRUZXh0LCBldmVudCk7
CisKKyAgICAgICAgaWYgKGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLnNpemUoKSkKKyAg
ICAgICAgICAgIGV2ZW50SGFuZGxlZCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCktPmluc2VydERpY3Rh
dGVkVGV4dChldmVudFRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBldmVudCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGV2ZW50SGFuZGxlZCA9IGNvcmVGcmFtZS0+ZWRp
dG9yKCktPmluc2VydFRleHQoZXZlbnRUZXh0LCBldmVudCk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgZXZlbnRIYW5kbGVkID0gdHJ1ZTsKICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+Y29u
ZmlybUNvbXBvc2l0aW9uKGV2ZW50VGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KaW5kZXggNGZiNWRmOTVkZWRkM2I1YmUyZmIxZTQwNjlmYjgxNDlhYzE5OTQ0Mi4uNzJkYTQw
OWRkYjg0M2Q3ZjA5NDgyZWY1MWYzODE2N2E5YzM5ZmU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCAiV2ViVmlld0ludGVybmFs
LmgiCiAjaW1wb3J0ICJXZWJWaWV3RGF0YS5oIgogCisjaW1wb3J0ICJEaWN0YXRpb25BbHRlcm5h
dGl2ZUNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIkRPTUNTU1N0eWxlRGVjbGFyYXRpb25JbnRlcm5h
bC5oIgogI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01SYW5nZUludGVy
bmFsLmgiCkBAIC01NDk5LDE2ICs1NTAwLDYgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0
b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBqc1ZhbHUKIAog
I2VuZGlmCiAKLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0tICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJl
c3VsdDooTlNTdHJpbmcqKXJlc3VsdAotewotICAgIFdlYkZyYW1lICp3ZWJGcmFtZSA9IFtzZWxm
IF9zZWxlY3RlZE9yTWFpbkZyYW1lXTsKLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh3ZWJG
cmFtZSk7Ci0gICAgaWYgKGNvcmVGcmFtZSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+
aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0KTsKLX0KLSNlbmRpZgotCiBAZW5k
CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJWaWV3IChXZWJWaWV3VW5kb2FibGVFZGl0aW5nKQpAQCAt
NjM2OCw2ICs2MzU5LDMzIEBAIHN0YXRpYyB2b2lkIGdsaWJDb250ZXh0SXRlcmF0aW9uQ2FsbGJh
Y2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5CiB9CiAjZW5kaWYKIAor
I2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKy0gKHZvaWQpaGFuZGxlQWNjZXB0ZWRBbHRl
cm5hdGl2ZVRleHQ6KE5TU3RyaW5nKil0ZXh0Cit7CisgICAgV2ViRnJhbWUgKndlYkZyYW1lID0g
W3NlbGYgX3NlbGVjdGVkT3JNYWluRnJhbWVdOworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3Jl
KHdlYkZyYW1lKTsKKyAgICBpZiAoY29yZUZyYW1lKQorICAgICAgICBjb3JlRnJhbWUtPmVkaXRv
cigpLT5oYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdCh0ZXh0KTsKK30KKyNlbmRpZgorCisj
aWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCistICh2b2lkKV9nZXRXZWJDb3JlRGljdGF0
aW9uQWx0ZXJuYXRpdmVzOihWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JilhbHRlcm5hdGl2
ZXMgZnJvbVRleHRBbHRlcm5hdGl2ZXM6KGNvbnN0IFZlY3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRo
UmFuZ2U+JilhbHRlcm5hdGl2ZXNXaXRoUmFuZ2UKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGFsdGVybmF0aXZlc1dpdGhSYW5nZS5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UmIGFsdGVybmF0aXZlV2l0aFJhbmdlID0gYWx0ZXJuYXRp
dmVzV2l0aFJhbmdlW2ldOworICAgICAgICB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0ID0gX3By
aXZhdGUtPm1fZGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLT5hZGRBbHRlcm5hdGl2ZXMo
YWx0ZXJuYXRpdmVXaXRoUmFuZ2UuYWx0ZXJuYXRpdmUpOworICAgICAgICBpZiAoZGljdGF0aW9u
Q29udGV4dCkKKyAgICAgICAgICAgIGFsdGVybmF0aXZlcy5hcHBlbmQoRGljdGF0aW9uQWx0ZXJu
YXRpdmUoYWx0ZXJuYXRpdmVXaXRoUmFuZ2UucmFuZ2UubG9jYXRpb24sIGFsdGVybmF0aXZlV2l0
aFJhbmdlLnJhbmdlLmxlbmd0aCwgZGljdGF0aW9uQ29udGV4dCkpOworICAgIH0KK30KKworLSAo
dm9pZClfcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOih1aW50NjRfdClkaWN0YXRpb25Db250
ZXh0Cit7CisgICAgX3ByaXZhdGUtPm1fZGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLT5y
ZW1vdmVBbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCk7Cit9CisjZW5kaWYKKwogLSAoTlNQ
b2ludClfY29udmVydFBvaW50RnJvbVJvb3RWaWV3OihOU1BvaW50KXBvaW50CiB7CiAgICAgcmV0
dXJuIE5TTWFrZVBvaW50KHBvaW50LngsIFtzZWxmIGJvdW5kc10uc2l6ZS5oZWlnaHQgLSBwb2lu
dC55KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAppbmRleCBlYTJiZmNm
NjA3NGU5YTUxMWMzYzNlYWUyZGI0ZmY1ZTVlYzNjNGY2Li5iZmUxMWM3ZDZkMTQ2NzYxOTcxZTQ1
NjExNDg3ODhjMTQ4MGZkN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXdEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0
YS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKICNp
bXBvcnQgIldlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgiCisjaW1wb3J0IDxXZWJD
b3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9MYXllckZsdXNo
U2NoZWR1bGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xheWVyRmx1c2hTY2hlZHVsZXJDbGllbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TdHJpbmcuaD4KQEAgLTU4LDYgKzU5LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogQGNsYXNzIFdlYkZ1bGxTY3JlZW5Db250cm9sbGVyOwogI2Vu
ZGlmCiAKK2NsYXNzIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjsKKwogZXh0ZXJuIEJP
T0wgYXBwbGljYXRpb25Jc1Rlcm1pbmF0aW5nOwogZXh0ZXJuIGludCBwbHVnaW5EYXRhYmFzZUNs
aWVudENvdW50OwogCkBAIC0yMDAsNSArMjAzLDkgQEAgcHJpdmF0ZToKICAgICBpbnQgdmFsaWRh
dGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb247CiAKICAgICBmbG9hdCBjdXN0b21EZXZpY2VT
Y2FsZUZhY3RvcjsKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIE93blB0
cjxEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI+IG1fZGljdGF0aW9uQWx0ZXJuYXRpdmVD
b250cm9sbGVyOworI2VuZGlmCiB9CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3RGF0YS5tbQppbmRleCAwYjgxMTdhMDk3MDZkNWI2ZWM0ZTY0NTdjMzM5OGU0NzYyNmM1OGJh
Li4yMzQ2ODJlNWYwM2Y1MTQwYzI0ZGY4NDU5MmJhMDFhODVlNmYwMWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KQEAgLTI5LDYgKzI5LDcgQEAKIAogI2ltcG9y
dCAiV2ViVmlld0RhdGEuaCIKIAorI2ltcG9ydCAiRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9s
bGVyLmgiCiAjaW1wb3J0ICJXZWJLaXRMb2dnaW5nLmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaCIKICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KQEAg
LTEwMCw2ICsxMDEsMTAgQEAgTGF5ZXJGbHVzaENvbnRyb2xsZXI6OkxheWVyRmx1c2hDb250cm9s
bGVyKFdlYlZpZXcqIHdlYlZpZXcpCiAKICAgICBwbHVnaW5EYXRhYmFzZUNsaWVudENvdW50Kys7
CiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBtX2RpY3RhdGlvbkFsdGVy
bmF0aXZlQ29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRy
b2xsZXIpOworI2VuZGlmCisKICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggMDJjYzU1MDEwNmIwNDRmYmMxNzdj
OWY1OWExZjgzZjU5MGRlNTBiMC4uMmJkYTI5ZmVjNjlmYzUwOTc4NmE0MWNmYTQ2MzliMTUwZDc5
MjlhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJu
YWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBA
IC0zNCwyMCArMzQsMjUgQEAKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKIAogI2lmZGVm
IF9fY3BsdXNwbHVzCisjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9GaW5kT3B0aW9ucy5oPgorI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJl
Y3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUtleWJvYXJkVUlNb2RlLmg+CiAKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEVsZW1lbnQ7Ci0gICAgY2xhc3MgRnJhbWU7Ci0gICAg
Y2xhc3MgSGlzdG9yeUl0ZW07Ci0gICAgY2xhc3MgS1VSTDsKLSAgICBjbGFzcyBLZXlib2FyZEV2
ZW50OwotICAgIGNsYXNzIFBhZ2U7Ci0gICAgY2xhc3MgUmVuZGVyQm94OwotICAgIGNsYXNzIE5v
ZGU7CitjbGFzcyBFbGVtZW50OworY2xhc3MgRXZlbnQ7CitjbGFzcyBGcmFtZTsKK2NsYXNzIEhp
c3RvcnlJdGVtOworY2xhc3MgS1VSTDsKK2NsYXNzIEtleWJvYXJkRXZlbnQ7CitjbGFzcyBQYWdl
OworY2xhc3MgUmVuZGVyQm94OworY2xhc3MgTm9kZTsKK3N0cnVjdCBEaWN0YXRpb25BbHRlcm5h
dGl2ZTsKIH0KICNlbmRpZgogCkBAIC01OSw2ICs2NCwyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlv
bnMpOwogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCitPQkpDX0NMQVNTIE5TVGV4
dEFsdGVybmF0aXZlczsKKworc3RydWN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSB7CisgICAg
VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlKE5TVGV4dEFsdGVybmF0aXZlcyogYW5BbHRlcm5hdGl2
ZSwgTlNSYW5nZSBhUmFuZ2UpCisgICAgOiByYW5nZShhUmFuZ2UpCisgICAgLCBhbHRlcm5hdGl2
ZShhbkFsdGVybmF0aXZlKQorICAgIHsgfQorCisgICAgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdl
KGNvbnN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSYgYW5vdGhlcikKKyAgICA6IHJhbmdlKGFu
b3RoZXIucmFuZ2UpCisgICAgLCBhbHRlcm5hdGl2ZShhbm90aGVyLmFsdGVybmF0aXZlKQorICAg
IHsgfQorCisgICAgTlNSYW5nZSByYW5nZTsKKyAgICBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRp
dmVzPiBhbHRlcm5hdGl2ZTsKK307CisKKyNlbmRpZgorCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdl
YlZpZXdFZGl0aW5nRXh0cmFzKQogLSAoQk9PTClfc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5n
ZTooRE9NUmFuZ2UgKiljdXJyZW50UmFuZ2UgdG9ET01SYW5nZTooRE9NUmFuZ2UgKilwcm9wb3Nl
ZFJhbmdlIGFmZmluaXR5OihOU1NlbGVjdGlvbkFmZmluaXR5KXNlbGVjdGlvbkFmZmluaXR5IHN0
aWxsU2VsZWN0aW5nOihCT09MKWZsYWc7CiBAZW5kCkBAIC05NSw2ICsxMjAsMTUgQEAgV2ViQ29y
ZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMgb3B0aW9ucyk7CiAtICh2
b2lkKV9zY2hlZHVsZUdsaWJDb250ZXh0SXRlcmF0aW9uczsKICNlbmRpZgogCisjaWYgVVNFKEFV
VE9DT1JSRUNUSU9OX1BBTkVMKQorLSAodm9pZCloYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4
dDooTlNTdHJpbmcqKXRleHQ7CisjZW5kaWYKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQorLSAodm9pZClfZ2V0V2ViQ29yZURpY3RhdGlvbkFsdGVybmF0aXZlczooVmVjdG9yPFdl
YkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiYpYWx0ZXJuYXRpdmVzIGZyb21UZXh0QWx0ZXJu
YXRpdmVzOihjb25zdCBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYpYWx0ZXJuYXRp
dmVzV2l0aFJhbmdlOworLSAodm9pZClfcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOih1aW50
NjRfdClkaWN0YXRpb25Db250ZXh0OworI2VuZGlmCisKIEBlbmQKIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKaW5kZXggMDJmN2JjYzQ1NjdkNzY1
YzdiZDNhNDM0ZjI1NzI2YTYxMDNlMzEzMC4uODI4OWIxMmMxODhiZWRhZjA1MTA0NmZhNjgyMjI3
NTJlZTk4ZGQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUu
aApAQCAtNjg3LDkgKzY4Nyw2IEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgog
LSAodm9pZClzZXRBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkOihCT09MKWZsYWc7
CiAtICh2b2lkKXRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbjooaWQpc2VuZGVyOwog
I2VuZGlmCi0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJ
TERJTkdfT05fU05PV19MRU9QQVJEKQotLSAodm9pZCloYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1
bHQ6KE5TU3RyaW5nKilyZXN1bHQ7Ci0jZW5kaWYKIEBlbmQKIAogQGludGVyZmFjZSBXZWJWaWV3
IChXZWJWaWV3RWRpdGluZ0luTWFpbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggYzZhMTY3M2I0Y2Q0NTQyNDEzOTBmYmE5ZTZiOGI1
NTdiMmMyNTBkMy4uN2NlN2JhNTFjMDFmMGE2NGExMTA4MTM1MmQ2MmQ3ZmIzOTZlMGY4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NyZWRlbnRpYWwuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0N1cnNvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VEZXRhaWxzLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRHJhZ1Nlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRmlsZUNob29zZXIuaD4KQEAgLTUzMSw2ICs1MzIsMjQgQEAgYm9vbCBBcmd1
bWVudENvZGVyPERhdGFiYXNlRGV0YWlscz46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29k
ZXIsIERhdGFiYXNlRGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVy
PERpY3RhdGlvbkFsdGVybmF0aXZlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rlciwg
Y29uc3QgRGljdGF0aW9uQWx0ZXJuYXRpdmUmIGRpY3RhdGlvbkFsdGVybmF0aXZlKQoreworICAg
IGVuY29kZXItPmVuY29kZShkaWN0YXRpb25BbHRlcm5hdGl2ZS5yYW5nZVN0YXJ0KTsKKyAgICBl
bmNvZGVyLT5lbmNvZGUoZGljdGF0aW9uQWx0ZXJuYXRpdmUucmFuZ2VMZW5ndGgpOworICAgIGVu
Y29kZXItPmVuY29kZShkaWN0YXRpb25BbHRlcm5hdGl2ZS5kaWN0YXRpb25Db250ZXh0KTsKK30K
KworYm9vbCBBcmd1bWVudENvZGVyPERpY3RhdGlvbkFsdGVybmF0aXZlPjo6ZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciogZGVjb2RlciwgRGljdGF0aW9uQWx0ZXJuYXRpdmUmIGRpY3RhdGlvbkFsdGVy
bmF0aXZlKQoreworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRpY3RhdGlvbkFsdGVybmF0aXZl
LnJhbmdlU3RhcnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoZGljdGF0aW9uQWx0ZXJuYXRpdmUucmFuZ2VMZW5ndGgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZGljdGF0aW9uQWx0ZXJuYXRpdmUuZGlj
dGF0aW9uQ29udGV4dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogCiB2b2lkIEFyZ3VtZW50Q29kZXI8RmlsZUNob29zZXJTZXR0aW5ncz46OmVuY29kZShB
cmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmIHNldHRp
bmdzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CmluZGV4IDAzM2UxNzk0Y2JjMjdkOGNkNzk4OTgwNmJhYzIzYjg4MTkyYjNkZDguLmQwMjllNjVl
NThkMjM4NzBlZjQ4Y2IxOWY5YzJlMjJiNGYwYzk5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogICAgIHN0cnVjdCBDb21wb3NpdGlvblVuZGVybGluZTsKKyAgICBzdHJ1Y3Qg
RGljdGF0aW9uQWx0ZXJuYXRpdmU7CiAgICAgc3RydWN0IERyYWdTZXNzaW9uOwogICAgIHN0cnVj
dCBGaWxlQ2hvb3NlclNldHRpbmdzOwogICAgIHN0cnVjdCBHcmFtbWFyRGV0YWlsOwpAQCAtMjAz
LDYgKzIwNCwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkRh
dGFiYXNlRGV0YWlscz4gewogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIq
LCBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMmKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+IHsKKyAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6RGljdGF0aW9uQWx0
ZXJuYXRpdmUmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2Vi
Q29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmUmKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncz4gewogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNl
dHRpbmdzJik7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNv
cmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IGE5ZDdhOWZhOTQ2Yzk3YzgzODczOWNi
MDZlNGQyZTI0NDhmNTBiNmEuLjAzYTI0ZDVjNWQ0MTE4Nzg4NDhmY2M1MDc3NTkxODY5MzMwNzc1
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGll
bnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVu
dEltcGwuaApAQCAtMzUsNiArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3Mg
RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOwogY2xhc3MgRmluZEluZGljYXRvcldpbmRv
dzsKIAogY2xhc3MgUGFnZUNsaWVudEltcGwgOiBwdWJsaWMgUGFnZUNsaWVudCB7CkBAIC0xMjks
MTEgKzEzMCwxNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBXS1ZpZXcqIHdrVmlldygpIGNv
bnN0IHsgcmV0dXJuIG1fd2tWaWV3OyB9CiAKKyAgICB2aXJ0dWFsIHVpbnQ2NF90IGFkZERpY3Rh
dGlvbkFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpOwor
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGlj
dGF0aW9uQ29udGV4dCk7CisKICAgICBXS1ZpZXcqIG1fd2tWaWV3OwogICAgIFJldGFpblB0cjxX
S0VkaXRvclVuZG9UYXJnZXRPYmpDPiBtX3VuZG9UYXJnZXQ7CiAjaWYgIWRlZmluZWQoQlVJTERJ
TkdfT05fU05PV19MRU9QQVJEKQogICAgIENvcnJlY3Rpb25QYW5lbCBtX2NvcnJlY3Rpb25QYW5l
bDsKICNlbmRpZgorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIE93blB0cjxE
aWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI+IG1fZGljdGF0aW9uQWx0ZXJuYXRpdmVDb250
cm9sbGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KaW5kZXggNzJl
YTM0OTNlMWE2Nzk0M2Q1NmU3YjU1ZTk0N2NiMzA5ZDVjM2Y4NC4uNDM4NjZkZjk3NDBhZjk2MjU4
MDE5ZjVkMzIwZTM2NTFiNGRiODY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAgLTI2LDcgKzI2LDExIEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnRJbXBsLmgiCiAKKyNpZiBVU0UoRElDVEFU
SU9OX0FMVEVSTkFUSVZFUykKKyNpbXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4K
KyNlbmRpZgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgorI2ltcG9ydCAiRGljdGF0aW9uQWx0
ZXJuYXRpdmVDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJEaWN0aW9uYXJ5UG9wdXBJbmZvLmgiCiAj
aW1wb3J0ICJGaW5kSW5kaWNhdG9yLmgiCiAjaW1wb3J0ICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50
LmgiCkBAIC0xMjIsNiArMTI2LDkgQEAgUGFzc093blB0cjxQYWdlQ2xpZW50SW1wbD4gUGFnZUNs
aWVudEltcGw6OmNyZWF0ZShXS1ZpZXcqIHdrVmlldykKIFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xp
ZW50SW1wbChXS1ZpZXcqIHdrVmlldykKICAgICA6IG1fd2tWaWV3KHdrVmlldykKICAgICAsIG1f
dW5kb1RhcmdldChBZG9wdE5TLCBbW1dLRWRpdG9yVW5kb1RhcmdldE9iakMgYWxsb2NdIGluaXRd
KQorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgICwgbV9kaWN0YXRpb25BbHRl
cm5hdGl2ZUNvbnRyb2xsZXIoYWRvcHRQdHIobmV3IERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJv
bGxlcikpCisjZW5kaWYKIHsKIH0KIApAQCAtMjA5LDEwICsyMTYsMTMgQEAgdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6cHJvY2Vzc0RpZENyYXNoKCkKIHsKICAgICBbbV93a1ZpZXcgX3Byb2Nlc3NEaWRD
cmFzaF07CiB9Ci0gICAgCisKIHZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQoKQogewog
ICAgIFttX3drVmlldyBfcGFnZUNsb3NlZF07CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElW
RVMpCisgICAgbV9kaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXItPmNsZWFyKCk7CisjZW5k
aWYKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkKQEAgLTUy
OSw0ICs1MzksMjAgQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6ZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5
U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvclN0cmluZykKICAgICByZXR1cm4gW21fd2tW
aWV3IF9leGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3RvcjpOU1NlbGVjdG9yRnJvbVN0cmluZyhz
ZWxlY3RvclN0cmluZyldOwogfQogCit1aW50NjRfdCBQYWdlQ2xpZW50SW1wbDo6YWRkRGljdGF0
aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBhbHRl
cm5hdGl2ZXMpCit7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgcmV0dXJu
IG1fZGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLT5hZGRBbHRlcm5hdGl2ZXMoYWx0ZXJu
YXRpdmVzKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKwordm9pZCBQYWdlQ2xp
ZW50SW1wbDo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNv
bnRleHQpCit7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgbV9kaWN0YXRp
b25BbHRlcm5hdGl2ZUNvbnRyb2xsZXItPnJlbW92ZUFsdGVybmF0aXZlcyhkaWN0YXRpb25Db250
ZXh0KTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCBjMzJmOTAwNDg5OTRkYmRiZWE0MzUw
NzQyMzdhOTkxOTEzNjFhMTk5Li42MjA5YjU3YzI3MjY5NDFjMTg0NDZmNjY0OWRhYjE0Y2JkNWI3
YzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0y
Niw2ICsyNiwxMiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS1ZpZXcuaCIKIAor
I2ltcG9ydCAiVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmgiCisjaWYgVVNFKERJQ1RBVElPTl9B
TFRFUk5BVElWRVMpCisjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CisjaW1w
b3J0IDxBcHBLaXQvTlNBdHRyaWJ1dGVkU3RyaW5nLmg+CisjZW5kaWYKKwogI2ltcG9ydCAiQXR0
cmlidXRlZFN0cmluZy5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRHJh
d2luZ0FyZWFQcm94eUltcGwuaCIKQEAgLTExNTEsNiArMTE1NywyMiBAQCBzdGF0aWMgY29uc3Qg
c2hvcnQga0lPSElERXZlbnRUeXBlU2Nyb2xsID0gNjsKICAgICBbc2VsZiBpbnNlcnRUZXh0OnN0
cmluZyByZXBsYWNlbWVudFJhbmdlOk5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApXTsKIH0KIAor
I2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorc3RhdGljIHZvaWQgY29sbGVjdERpY3Rh
dGlvblRleHRBbHRlcm5hdGl2ZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBhbHRlcm5hdGl2ZXMpIHsKKyAgICBOU1JhbmdlIGVm
ZmVjdGl2ZVJhbmdlID0gTlNNYWtlUmFuZ2UoMCwgMCk7CisgICAgTlNVSW50ZWdlciBsZW5ndGgg
PSBbc3RyaW5nIGxlbmd0aF07CisgICAgZG8geworICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJp
YnV0ZXMgPSBbc3RyaW5nIGF0dHJpYnV0ZXNBdEluZGV4OmVmZmVjdGl2ZVJhbmdlLmxvY2F0aW9u
IGVmZmVjdGl2ZVJhbmdlOiZlZmZlY3RpdmVSYW5nZV07CisgICAgICAgIGlmICghYXR0cmlidXRl
cykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBOU1RleHRBbHRlcm5hdGl2ZXMgKnRleHRB
bHRlcm5hdGl2ZXMgPSBbYXR0cmlidXRlcyBvYmplY3RGb3JLZXk6TlNUZXh0QWx0ZXJuYXRpdmVz
QXR0cmlidXRlTmFtZV07CisgICAgICAgIGlmICh0ZXh0QWx0ZXJuYXRpdmVzKQorICAgICAgICAg
ICAgYWx0ZXJuYXRpdmVzLmFwcGVuZChUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UodGV4dEFsdGVy
bmF0aXZlcywgZWZmZWN0aXZlUmFuZ2UpKTsKKyAgICAgICAgZWZmZWN0aXZlUmFuZ2UubG9jYXRp
b24gPSBOU01heFJhbmdlKGVmZmVjdGl2ZVJhbmdlKTsKKyAgICB9IHdoaWxlIChlZmZlY3RpdmVS
YW5nZS5sb2NhdGlvbiA8IGxlbmd0aCk7Cit9CisjZW5kaWYKKwogLSAodm9pZClpbnNlcnRUZXh0
OihpZClzdHJpbmcgcmVwbGFjZW1lbnRSYW5nZTooTlNSYW5nZSlyZXBsYWNlbWVudFJhbmdlCiB7
CiAgICAgQk9PTCBpc0F0dHJpYnV0ZWRTdHJpbmcgPSBbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05T
QXR0cmlidXRlZFN0cmluZyBjbGFzc11dOwpAQCAtMTE2Nyw3ICsxMTg5LDEyIEBAIHN0YXRpYyBj
b25zdCBzaG9ydCBrSU9ISURFdmVudFR5cGVTY3JvbGwgPSA2OwogICAgIE5TU3RyaW5nICp0ZXh0
OwogICAgIGJvb2wgaXNGcm9tSW5wdXRNZXRob2QgPSBfZGF0YS0+X3BhZ2UtPmVkaXRvclN0YXRl
KCkuaGFzQ29tcG9zaXRpb247CiAKKyAgICBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdl
PiBkaWN0YXRpb25BbHRlcm5hdGl2ZXM7CisKICAgICBpZiAoaXNBdHRyaWJ1dGVkU3RyaW5nKSB7
CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgICAgIGNvbGxlY3REaWN0YXRp
b25UZXh0QWx0ZXJuYXRpdmVzKHN0cmluZywgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyNlbmRp
ZgogICAgICAgICAvLyBGSVhNRTogV2UgaWdub3JlIG1vc3QgYXR0cmlidXRlcyBmcm9tIHRoZSBz
dHJpbmcsIHNvIGZvciBleGFtcGxlIGluc2VydGluZyBmcm9tIENoYXJhY3RlciBQYWxldHRlIGxv
c2VzIGZvbnQgYW5kIGdseXBoIHZhcmlhdGlvbiBkYXRhLgogICAgICAgICB0ZXh0ID0gW3N0cmlu
ZyBzdHJpbmddOwogICAgIH0gZWxzZQpAQCAtMTE4Nyw3ICsxMjE0LDExIEBAIHN0YXRpYyBjb25z
dCBzaG9ydCBrSU9ISURFdmVudFR5cGVTY3JvbGwgPSA2OwogCiAgICAgU3RyaW5nIGV2ZW50VGV4
dCA9IHRleHQ7CiAgICAgZXZlbnRUZXh0LnJlcGxhY2UoTlNCYWNrVGFiQ2hhcmFjdGVyLCBOU1Rh
YkNoYXJhY3Rlcik7IC8vIHNhbWUgdGhpbmcgaXMgZG9uZSBpbiBLZXlFdmVudE1hYy5tbSBpbiBX
ZWJDb3JlCi0gICAgYm9vbCBldmVudEhhbmRsZWQgPSBfZGF0YS0+X3BhZ2UtPmluc2VydFRleHQo
ZXZlbnRUZXh0LCByZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKHJlcGxhY2Vt
ZW50UmFuZ2UpKTsKKyAgICBib29sIGV2ZW50SGFuZGxlZDsKKyAgICBpZiAoZGljdGF0aW9uQWx0
ZXJuYXRpdmVzLnNpemUoKSkKKyAgICAgICAgZXZlbnRIYW5kbGVkID0gX2RhdGEtPl9wYWdlLT5p
bnNlcnREaWN0YXRlZFRleHQoZXZlbnRUZXh0LCByZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uLCBO
U01heFJhbmdlKHJlcGxhY2VtZW50UmFuZ2UpLCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAg
IGVsc2UKKyAgICAgICAgZXZlbnRIYW5kbGVkID0gX2RhdGEtPl9wYWdlLT5pbnNlcnRUZXh0KGV2
ZW50VGV4dCwgcmVwbGFjZW1lbnRSYW5nZS5sb2NhdGlvbiwgTlNNYXhSYW5nZShyZXBsYWNlbWVu
dFJhbmdlKSk7CiAKICAgICBpZiAocGFyYW1ldGVycykKICAgICAgICAgcGFyYW1ldGVycy0+ZXZl
bnRJbnRlcnByZXRhdGlvbkhhZFNpZGVFZmZlY3RzIHw9IGV2ZW50SGFuZGxlZDsKQEAgLTI4NTYs
OSArMjg4Nyw5IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBh
dGgoTlNTdHJpbmcgKnBhdGgpCiAgICAgcmV0dXJuIF9kYXRhLT5fc3BlbGxDaGVja2VyRG9jdW1l
bnRUYWc7CiB9CiAKLS0gKHZvaWQpaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OihOU1N0cmlu
ZyopcmVzdWx0CistICh2b2lkKWhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0OihOU1N0cmlu
ZyopdGV4dAogewotICAgIF9kYXRhLT5fcGFnZS0+aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1
bHQocmVzdWx0KTsKKyAgICBfZGF0YS0+X3BhZ2UtPmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVz
dWx0KHRleHQpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3SW50ZXJuYWwuaAppbmRleCA2YjZlYjZiZjQxZDE5MTRkM2Q2ZDA2ZjBmMjMy
NjMwYzM5MmI4MDViLi40M2M2ZTJiYWFhMDUwZGU0YjYyMDU4ODRkNjJlN2EyMzE2MTM1ZThjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5h
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFs
LmgKQEAgLTk2LDYgKzk2LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAtICh2b2lkKV9jYWNoZVdp
bmRvd0JvdHRvbUNvcm5lclJlY3Q7CiAKIC0gKE5TSW50ZWdlcilzcGVsbENoZWNrZXJEb2N1bWVu
dFRhZzsKLS0gKHZvaWQpaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OihOU1N0cmluZyopcmVz
dWx0OworLSAodm9pZCloYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDooTlNTdHJpbmcqKXRl
eHQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDdjODE1
MTAxZGZhNzJkZDQ5M2E5NDA2OWVmYTUyMjVkZDFmMjc4MzUuLjRlMDJiZTY5YTA4ZGE1Yjk3YTc0
NDQ0ZTNiYzIyOGNjNmY4NWI5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0
ZS5oIgogCiBPQkpDX0NMQVNTIFdLVmlldzsKK09CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVz
OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5Miw2ICsxOTMsOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2Uo
aW50MzJfdCBuZXdTdHlsZSkgPSAwOwogICAgIAogICAgIHZpcnR1YWwgV0tWaWV3KiB3a1ZpZXco
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHVpbnQ2NF90IGFkZERpY3RhdGlvbkFsdGVybmF0
aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNv
bnRleHQpID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNjcm9sbGJh
cnNGb3JNYWluRnJhbWUoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDJlZGEwOGNlMWE1OWY1ZGNlZWRjMDQ3YTY2ZjY0MzRhZTlmN2Vh
MTMuLjJmNWE4NDgyNDM3MjEwYWI1Nzc3Mjg1MTQzZDkyYmZlM2IzMTQwMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zNzU0LDYgKzM3NTQsMTQgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KGNvbnN0IFN0
cmluZyYgcmVzdWx0KQogICAgICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHJlc3VsdCksIG1fcGFnZUlELCAwKTsKICNl
bmRpZgogfQorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRl
eHQpCit7CisgICAgbV9wYWdlQ2xpZW50LT5yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGlj
dGF0aW9uQ29udGV4dCk7Cit9CisjZW5kaWYKKwogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggMjVlNjM5YTAyN2FjNzBhZWYzMWZlNDA3NjI5Nzk3ODM3NDMxZDYxMy4uMjBiMzA3
ZjViNGUxOGJhYmNjMGJiMGFkMTJlZjIyNjRiZGU2MGIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIldlYlBvcHVw
TWVudVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiV2ViVUlDbGllbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RyYWdTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CkBAIC0x
MDYsNiArMTA3LDcgQEAgY2xhc3MgUVF1aWNrTmV0d29ya1JlcGx5OwogI2Vsc2UKIGNsYXNzIFdL
VmlldzsKICNlbmRpZgorc3RydWN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZTsKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtMzQ1LDYgKzM0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNvbmZpcm1Db21wb3NpdGlvbigpOwogICAgIHZvaWQgY2FuY2VsQ29tcG9zaXRpb24oKTsKICAg
ICBib29sIGluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVu
dFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQpOworICAgIGJvb2wgaW5z
ZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRS
YW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kLCBjb25zdCBWZWN0b3I8VGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICB2b2lk
IGdldE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCk7CiAg
ICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxl
bmd0aCk7CiAgICAgdm9pZCBnZXRBdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKHVpbnQ2NF90
IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIEF0dHJpYnV0ZWRTdHJpbmcmKTsKQEAgLTg3MSw2
ICs4NzQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24o
aW50MzJfdCByZWFzb24sIFN0cmluZyYgcmVzdWx0KTsKICAgICB2b2lkIHJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UoaW50MzJfdCByZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogI2VuZGlmIC8vICFk
ZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVS
TkFUSVZFUykKKyAgICB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBk
aWN0YXRpb25Db250ZXh0KTsKKyNlbmRpZgogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogICAg
IHZvaWQgY2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBjODUwNzYwMTg5ZTQ3
MDc2NzFjZDhmMWYxZTkxZmRkNmU2NzdlYjcyLi4xMWE3OGJkNjFlYzUzNGM4OGUyNzBmMDQ0Njg5
ZTNlMDNmYmUyMjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KQEAgLTI3Niw2ICsyNzYsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICBSZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9u
c2VUeXBlLCBTdHJpbmcgcmVwbGFjZWRTdHJpbmcsIFN0cmluZyByZXBsYWNlbWVudFN0cmluZyk7
CiAjZW5kaWYKIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIFJlbW92ZURp
Y3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKKyNlbmRpZgor
CiAjaWYgUExBVEZPUk0oV0lOKQogICAgICMgV2luZG93cyA3IEdlc3R1cmUgTWVzc2FnZXMKICAg
ICBTZXRHZXN0dXJlUmVhY2hlZFNjcm9sbGluZ0xpbWl0KGJvb2wgbGltaXRSZWFjaGVkKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbQppbmRleCA5
NDE3MWY3MzdhYjM2ZDVmZmRhNTg3Njc4ZDJmZDg2MDA0NTc0NDU4Li4wOTY0MWNkMDgzYmFkMTRh
ZTNlNmI0MGJmMDQ2MDNjMzZhYWNiZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ29ycmVj
dGlvblBhbmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJl
cGxhY2VtZW50LCBOCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIFttX3ZpZXcuZ2V0KCkg
aGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OmFjY2VwdGVkUmVwbGFjZW1lbnRdOworICAgIFtt
X3ZpZXcuZ2V0KCkgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6YWNjZXB0ZWRSZXBsYWNl
bWVudF07CiAgICAgbV92aWV3LmNsZWFyKCk7CiAgICAgaWYgKGFjY2VwdGVkUmVwbGFjZW1lbnQp
CiAgICAgICAgIG1fcmVzdWx0Rm9yRGlzbWlzc2FsLmFkb3B0TlMoW2FjY2VwdGVkUmVwbGFjZW1l
bnQgY29weV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9EaWN0
YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjkwNzUzM2Yy
N2Q5ZmRlMTk2OWVjZWNiNTRiYjQ5MzE2MTkwYzc4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmgK
QEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGljdGF0aW9uQWx0ZXJuYXRp
dmVDb250cm9sbGVyX2gKKyNkZWZpbmUgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyX2gK
KworI2luY2x1ZGUgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9GbG9hdFJlY3QuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorT0JK
Q19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CitPQkpDX0NMQVNTIFdLVmlldzsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIERpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyOworCitjbGFz
cyBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIgeworcHVibGljOgorICAgIERpY3RhdGlv
bkFsdGVybmF0aXZlQ29udHJvbGxlcigpIHsgfQorICAgIC8vIFJldHVybnMgYSBkaWN0YXRpb24g
Y29udGV4dCBJRC4KKyAgICB1aW50NjRfdCBhZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRy
PE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCBzaG93
QWx0ZXJuYXRpdmVzKFdLVmlldyosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdC
b3hPZkRpY3RhdGVkU3RyaW5nLCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKKyAgICB2b2lk
IGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKKyAgICB2b2lkIHJlbW92ZUFsdGVybmF0aXZlcyh1aW50
NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGhhbmRsZUFjY2Vw
dGVkQWx0ZXJuYXRpdmUoTlNTdHJpbmcqIGFjY2VwdGVkQWx0ZXJuYXRpdmUsIHVpbnQ2NF90IGRp
Y3RhdGlvbkNvbnRleHQsIE5TVGV4dEFsdGVybmF0aXZlcyopOworCisgICAgY2xhc3MgRGljdGF0
aW9uQ29udGV4dENvbnRyb2xsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgRGljdGF0aW9uQ29u
dGV4dENvbnRyb2xsZXIoKSB7IH0KKyAgICAgICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNv
bnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7CisgICAgICAgIHZvaWQgY2xlYXIo
KTsKKyAgICAgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25D
b250ZXh0KHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOworICAgICAgICB2b2lkIHJlbW92ZUFs
dGVybmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRleHQodWludDY0X3QgZGljdGF0aW9uQ29udGV4dCk7
CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBpbnZhbGlkQ29udGV4dCA9IDA7CisgICAg
cHJpdmF0ZToKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZXRhaW5QdHI8TlNU
ZXh0QWx0ZXJuYXRpdmVzPiA+IEhhc2hNYXBUeXBlOworICAgICAgICBIYXNoTWFwVHlwZSBtX2Fs
dGVybmF0aXZlc09iamVjdE1hcDsKKyAgICB9OworCisgICAgRGljdGF0aW9uQ29udGV4dENvbnRy
b2xsZXIgbV9jb250ZXh0Q29udHJvbGxlcjsKKyAgICBSZXRhaW5QdHI8V0tWaWV3PiBtX3ZpZXc7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCisjZW5kaWYgLy8gRGljdGF0
aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9EaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGZjNjE2N2IzNDViZTEwY2JlOTA4MWE1MzgzM2VlMmY2NTRhNTk4MwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvRGljdGF0aW9uQWx0ZXJu
YXRpdmVDb250cm9sbGVyLm1tCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIuaCIK
KworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorI2ltcG9ydCA8QXBwS2l0L05TU3Bl
bGxDaGVja2VyLmg+CisjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CisjaW1w
b3J0ICJXS1ZpZXdJbnRlcm5hbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3VpbnQ2NF90IERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxl
cjo6RGljdGF0aW9uQ29udGV4dENvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRh
aW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYgYWx0ZXJuYXRpdmVzKQoreworICAgIHVpbnQ2NF90
IGNvbnRleHQgPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90PihhbHRlcm5hdGl2ZXMuZ2V0KCkp
OworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIGludmFsaWRDb250ZXh0OworICAg
IGlmIChhbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KGNvbnRleHQpKQorICAgICAgICBy
ZXR1cm4gY29udGV4dDsKKworICAgIEhhc2hNYXBUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9h
bHRlcm5hdGl2ZXNPYmplY3RNYXAuYWRkKGNvbnRleHQsIGFsdGVybmF0aXZlcyk7CisgICAgcmV0
dXJuIHJlc3VsdC5pc05ld0VudHJ5ID8gY29udGV4dCA6IGludmFsaWRDb250ZXh0OworfQorCitO
U1RleHRBbHRlcm5hdGl2ZXMqIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0
aW9uQ29udGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRleHQodWlu
dDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBIYXNoTWFwVHlwZTo6Y29uc3RfaXRlcmF0
b3IgaXRyID0gbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuZmluZChkaWN0YXRpb25Db250ZXh0KTsK
KyAgICBpZiAoaXRyID09IG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmVuZCgpKQorICAgICAgICBy
ZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gaXRyLT5zZWNvbmQuZ2V0KCk7Cit9CisKK3ZvaWQgRGlj
dGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlcjo6
cmVtb3ZlQWx0ZXJuYXRpdmVzRm9yRGljdGF0aW9uQ29udGV4dCh1aW50NjRfdCBkaWN0YXRpb25D
b250ZXh0KQoreworICAgIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLnJlbW92ZShkaWN0YXRpb25D
b250ZXh0KTsKK30KKwordm9pZCBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OkRpY3Rh
dGlvbkNvbnRleHRDb250cm9sbGVyOjpjbGVhcigpCit7CisgICAgbV9hbHRlcm5hdGl2ZXNPYmpl
Y3RNYXAuY2xlYXIoKTsKK30KKwordWludDY0X3QgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9s
bGVyOjphZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4m
IGFsdGVybmF0aXZlcykKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0Q29udHJvbGxlci5hZGRBbHRl
cm5hdGl2ZXMoYWx0ZXJuYXRpdmVzKTsKK30KKwordm9pZCBEaWN0YXRpb25BbHRlcm5hdGl2ZUNv
bnRyb2xsZXI6OmNsZWFyKCkKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0Q29udHJvbGxlci5jbGVh
cigpOworfQorCit2b2lkIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6c2hvd0FsdGVy
bmF0aXZlcyhXS1ZpZXcqIHZpZXcsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdC
b3hPZkRpY3RhdGVkU3RyaW5nLCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIGRp
c21pc3NBbHRlcm5hdGl2ZXMoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fdmlldyA9IHZpZXc7CisgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZXMg
PSBtX2NvbnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRleHQoZGlj
dGF0aW9uQ29udGV4dCk7CisgICAgaWYgKCFhbHRlcm5hdGl2ZXMpCisgICAgICAgIHJldHVybjsK
KyAgICBOU1NwZWxsQ2hlY2tlciogc3BlbGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJl
ZFNwZWxsQ2hlY2tlcl07CisgICAgW3NwZWxsQ2hlY2tlciBzaG93Q29ycmVjdGlvbkluZGljYXRv
ck9mVHlwZTpOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlR3Vlc3NlcyBwcmltYXJ5U3RyaW5nOmFs
dGVybmF0aXZlcy5wcmltYXJ5U3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZXMu
YWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mRGljdGF0ZWRT
dHJpbmcgdmlldzptX3ZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyogYWNj
ZXB0ZWRTdHJpbmcpIHsKKyAgICAgICAgaWYgKGFjY2VwdGVkU3RyaW5nKQorICAgICAgICAgICAg
aGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShhY2NlcHRlZFN0cmluZywgZGljdGF0aW9uQ29udGV4
dCwgYWx0ZXJuYXRpdmVzKTsKKyAgICB9XTsKK30KKwordm9pZCBEaWN0YXRpb25BbHRlcm5hdGl2
ZUNvbnRyb2xsZXI6OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUoTlNTdHJpbmcqIGFjY2VwdGVk
QWx0ZXJuYXRpdmUsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQsIE5TVGV4dEFsdGVybmF0aXZl
cyogYWx0ZXJuYXRpdmVzKQoreworICAgIFthbHRlcm5hdGl2ZXMgbm90ZVNlbGVjdGVkQWx0ZXJu
YXRpdmVTdHJpbmc6YWNjZXB0ZWRBbHRlcm5hdGl2ZV07CisgICAgbV9jb250ZXh0Q29udHJvbGxl
ci5yZW1vdmVBbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KGRpY3RhdGlvbkNvbnRleHQp
OworICAgIFttX3ZpZXcuZ2V0KCkgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6YWNjZXB0
ZWRBbHRlcm5hdGl2ZV07CisgICAgbV92aWV3LmNsZWFyKCk7Cit9CisKK3ZvaWQgRGljdGF0aW9u
QWx0ZXJuYXRpdmVDb250cm9sbGVyOjpkaXNtaXNzQWx0ZXJuYXRpdmVzKCkKK3sKKyAgICBpZiAo
IW1fdmlldykKKyAgICAgICAgcmV0dXJuOworICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3Bl
bGxDaGVja2VyXSBkaXNtaXNzQ29ycmVjdGlvbkluZGljYXRvckZvclZpZXc6bV92aWV3LmdldCgp
XTsKK30KKwordm9pZCBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OnJlbW92ZUFsdGVy
bmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIG1fY29udGV4dENvbnRy
b2xsZXIucmVtb3ZlQWx0ZXJuYXRpdmVzRm9yRGljdGF0aW9uQ29udGV4dChkaWN0YXRpb25Db250
ZXh0KTsKK30KK30KKyNlbmRpZiAvLyBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjczNDg3MTUxYWI3YWE3Yjg2YTc5M2UwMzk4ZjM1ZGRiYzIxNWEx
MmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZS5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZV9oCisjZGVmaW5lIFRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZV9oCisKKyNpbmNsdWRlIDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgor
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQorT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CisKK3N0cnVjdCBUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UgeworICAgIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZShOU1RleHRBbHRl
cm5hdGl2ZXMqIGFuQWx0ZXJuYXRpdmVzLCBOU1JhbmdlIGFSYW5nZSk7CisgICAgVGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlKGNvbnN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSYgYW5vdGhlcik7
CisgICAgTlNSYW5nZSByYW5nZTsKKyAgICBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiBh
bHRlcm5hdGl2ZXM7Cit9OworCisjZWxzZQorc3RydWN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZSB7IH07CisjZW5kaWYKKworI2VuZGlmIC8vIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGV4dEFsdGVybmF0aXZl
V2l0aFJhbmdlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwNjE1NDJkYTlkZWIwZTE5YzVlYjFhODc3ZDQ0NDI4
Zjk4N2JlY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmgi
CisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyNpbXBvcnQgPEFwcEtpdC9OU1Rl
eHRBbHRlcm5hdGl2ZXMuaD4KKworVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlOjpUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UoTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbkFsdGVybmF0aXZlcywgTlNSYW5n
ZSBhUmFuZ2UpCis6IHJhbmdlKGFSYW5nZSkKKywgYWx0ZXJuYXRpdmVzKGFuQWx0ZXJuYXRpdmVz
KQoreworfQorCitUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U6OlRleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZShjb25zdCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UmIGFub3RoZXIpCis6IHJhbmdlKGFu
b3RoZXIucmFuZ2UpCissIGFsdGVybmF0aXZlcyhhbm90aGVyLmFsdGVybmF0aXZlcykKK3sKK30K
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQppbmRleCAzNTg0NzE4MmUxNDBiN2Q4NGQwOTgzNDZiNjhiNzNlYjFhMDg2NGYwLi5iZDI5
Mzc5ZThkMzk0N2IzYTNiYjI4MDg3OWI0OWRjZGZhYTRiMWEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMzUsOSArMzUsMTEgQEAK
ICNpbXBvcnQgIlBhZ2VDbGllbnQuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnRJbXBsLmgiCiAjaW1w
b3J0ICJTdHJpbmdVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZS5oIgogI2ltcG9ydCAiVGV4dENoZWNrZXIuaCIKICNpbXBvcnQgIldlYlBhZ2VNZXNzYWdlcy5o
IgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW1wb3J0IDxXZWJDb3JlL0RpY3RhdGlv
bkFsdGVybmF0aXZlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9y
dCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25j
YXRlbmF0ZS5oPgpAQCAtMTk4LDYgKzIwMCwzNSBAQCBib29sIFdlYlBhZ2VQcm94eTo6aW5zZXJ0
VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydAog
ICAgIHJldHVybiBoYW5kbGVkOwogfQogCitib29sIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0
ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0
LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kLCBjb25zdCBWZWN0b3I8VGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzV2l0aFJhbmdlKQoreworI2lmIFVT
RShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIGlmIChkaWN0YXRpb25BbHRlcm5hdGl2ZXNX
aXRoUmFuZ2UuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gaW5zZXJ0VGV4dCh0ZXh0LCByZXBs
YWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQpOworCisgICAgaWYgKCFpc1Zh
bGlkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgVmVjdG9yPERpY3RhdGlvbkFsdGVy
bmF0aXZlPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXM7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZS5zaXplKCk7ICsraSkgeworICAgICAg
ICBjb25zdCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UmIGFsdGVybmF0aXZlV2l0aFJhbmdlID0g
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzV2l0aFJhbmdlW2ldOworICAgICAgICB1aW50NjRfdCBkaWN0
YXRpb25Db250ZXh0ID0gbV9wYWdlQ2xpZW50LT5hZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoYWx0
ZXJuYXRpdmVXaXRoUmFuZ2UuYWx0ZXJuYXRpdmVzKTsKKyAgICAgICAgaWYgKGRpY3RhdGlvbkNv
bnRleHQpCisgICAgICAgICAgICBkaWN0YXRpb25BbHRlcm5hdGl2ZXMuYXBwZW5kKERpY3RhdGlv
bkFsdGVybmF0aXZlKGFsdGVybmF0aXZlV2l0aFJhbmdlLnJhbmdlLmxvY2F0aW9uLCBhbHRlcm5h
dGl2ZVdpdGhSYW5nZS5yYW5nZS5sZW5ndGgsIGRpY3RhdGlvbkNvbnRleHQpKTsKKyAgICB9CisK
KyAgICBpZiAoZGljdGF0aW9uQWx0ZXJuYXRpdmVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IGluc2VydFRleHQodGV4dCwgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdl
RW5kKTsKKworICAgIGJvb2wgaGFuZGxlZCA9IHRydWU7CisgICAgcHJvY2VzcygpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RGljdGF0ZWRUZXh0KHRleHQsIHJlcGxhY2VtZW50
UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKSwg
TWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERpY3RhdGVkVGV4dDo6UmVwbHkoaGFuZGxlZCwgbV9l
ZGl0b3JTdGF0ZSksIG1fcGFnZUlEKTsKKyAgICByZXR1cm4gaGFuZGxlZDsKKyNlbHNlCisgICAg
cmV0dXJuIGluc2VydFRleHQodGV4dCwgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVu
dFJhbmdlRW5kKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFu
Z2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKQogewogICAgIGxvY2F0aW9u
ID0gTlNOb3RGb3VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAzODkyZDVkMDIxYjBkZDk1ZjVmZmIzNzgxOGQwM2Q1NDhiMmM4
ZmFlLi5iY2YwZmYyMDFmMTI1NDc3MmNiODJjZWU1MThlMDRiMzZlOTIxYmRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04ODUs
NiArODg1LDEwIEBACiAJCUNEQ0E4NUVFMTMyQUQ3MDEwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RDQTg1REUxMzJBRDA1MzAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHlNYWMubW0gKi87IH07CiAJCUNFREExMkUyMTUyQ0QxQUUwMEQ5RTA4RCAvKiBXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0VEQTEyREYxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4
dENsaWVudC5jcHAgKi87IH07CiAJCUNFREExMkUzMTUyQ0QxQjMwMEQ5RTA4RCAvKiBXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFREExMkRFMTUyQ0NBRTgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQuaCAqLzsgfTsKKwkJQ0VEQkJGMjMxNTJGNTMyNTAwNjI3OTNCIC8qIERpY3RhdGlvbkFs
dGVybmF0aXZlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0VEQkJGMjExNTJGNTMyNTAwNjI3OTNCIC8qIERpY3RhdGlvbkFsdGVybmF0
aXZlQ29udHJvbGxlci5oICovOyB9OworCQlDRURCQkYyNDE1MkY1MzI1MDA2Mjc5M0IgLyogRGlj
dGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQkJGMjIxNTJGNTMyNTAwNjI3OTNCIC8qIERpY3RhdGlv
bkFsdGVybmF0aXZlQ29udHJvbGxlci5tbSAqLzsgfTsKKwkJQ0VEQkJGNTExNTJGNkMzMTAwNjI3
OTNCIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQkJGNEYxNTJGNkMzMTAwNjI3OTNCIC8qIFRleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZS5oICovOyB9OworCQlDRURCQkY1MjE1MkY2QzMxMDA2Mjc5M0Ig
LyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQkJGNTAxNTJGNkMzMTAwNjI3OTNCIC8qIFRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZS5tbSAqLzsgfTsKIAkJRDNCOTQ4NDYxMUZGNEI2NTAwMDMyQjM5IC8q
IFdlYlBvcHVwTWVudS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBEM0I5NDg0MjExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmNwcCAqLzsg
fTsKIAkJRDNCOTQ4NDcxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCOTQ4NDMxMUZGNEI2NTAw
MDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovOyB9OwogCQlEM0I5NDg0ODExRkY0QjY1MDAwMzJC
MzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQ0MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQ
b3B1cE1lbnUuY3BwICovOyB9OwpAQCAtMTk0MSw2ICsxOTQ1LDEwIEBACiAJCUNEQ0E4NURFMTMy
QUQwNTMwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VEQTEyREUxNTJDQ0FFODAw
RDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0VEQTEyREYxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZl
VGV4dENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RURCQkYyMTE1MkY1MzI1MDA2Mjc5M0IgLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpY3RhdGlvbkFsdGVybmF0aXZl
Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRURCQkYyMjE1MkY1
MzI1MDA2Mjc5M0IgLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250
cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRURCQkY0RjE1MkY2QzMx
MDA2Mjc5M0IgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDRURCQkY1MDE1MkY2QzMxMDA2Mjc5M0IgLyogVGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlEM0I5NDg0MjExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBvcHVwTWVudS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQzMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1l
bnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUG9wdXBNZW51Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQ0MTFGRjRCNjUwMDAzMkIzOSAvKiBX
ZWJTZWFyY2hQb3B1cE1lbnUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViU2VhcmNoUG9wdXBNZW51LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTM0MzgsNiArMzQ0NiwxMCBAQAogCQkJCTFBNjQyOTJDMTJERTVGOTgwMENBQUUyQyAvKiBCYWNr
aW5nU3RvcmVNYWMubW0gKi8sCiAJCQkJQjg3OEI2MTMxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJl
Y3Rpb25QYW5lbC5oICovLAogCQkJCUI4NzhCNjE0MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0
aW9uUGFuZWwubW0gKi8sCisJCQkJQ0VEQkJGMjIxNTJGNTMyNTAwNjI3OTNCIC8qIERpY3RhdGlv
bkFsdGVybmF0aXZlQ29udHJvbGxlci5tbSAqLywKKwkJCQlDRURCQkYyMTE1MkY1MzI1MDA2Mjc5
M0IgLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmggKi8sCisJCQkJQ0VEQkJGNTAx
NTJGNkMzMTAwNjI3OTNCIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSAqLywKKwkJCQlD
RURCQkY0RjE1MkY2QzMxMDA2Mjc5M0IgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggKi8s
CiAJCQkJMUFBNDE3RUQxMkMwMEQ4NzAwMkJFNjdCIC8qIFRleHRDaGVja2VyTWFjLm1tICovLAog
CQkJCTFBRjA1RDg1MTQ2ODgzNDgwMDhCMUU4MSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYVByb3h5LmggKi8sCiAJCQkJMUFGMDVEODQxNDY4ODM0ODAwOEIxRTgxIC8qIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0gKi8sCkBAIC00MTg1LDYgKzQxOTcsOCBAQAog
CQkJCTM3OTQ4NDA0MTUwQzM1MDYwMEU1MkNFOSAvKiBXZWJSZW5kZXJMYXllci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzc5NDg0MDkxNTBDNEI5NzAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUNFREExMkUzMTUyQ0QxQjMwMEQ5RTA4RCAvKiBXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFREJCRjIzMTUyRjUzMjUwMDYy
NzkzQiAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCUNFREJCRjUxMTUyRjZDMzEwMDYyNzkzQiAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpAQCAtNDkyOSw2ICs0OTQzLDggQEAKIAkJCQkzNzk0ODQwMzE1MEMz
NTA2MDBFNTJDRTkgLyogV2ViUmVuZGVyTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc5
NDg0MDgxNTBDNEI5NzAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0VEQTEyRTIxNTJDRDFBRTAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVu
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRURCQkYyNDE1MkY1MzI1MDA2Mjc5M0IgLyogRGlj
dGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0VEQkJG
NTIxNTJGNkMzMTAwNjI3OTNCIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggYjgwNWFk
YWY1ODEyYWY1ZjIzY2VjNGExYjVjOTJkN2M2OTM2ZTJjNC4uODE3YjAzYzRhMjBiYWVmNjgzNzY4
NTFkNTI4MzYwZGY4YjExYzdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVu
dC5oCkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0Fs
dGVybmF0aXZlKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NBbHRlcm5hdGl2ZVNvb24oV2ViQ29y
ZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6QXV0b2NvcnJl
Y3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgT1ZFUlJJ
REU7CiBwcml2YXRlOgogICAgIFdlYlBhZ2UgKm1fcGFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcAppbmRleCA2YWJiNjkzNTQxZDA4NTZlZTAx
ZmRjNjNlODE4Zjk4NTY2NGY2MGRhLi44MzA5OGJmMjgwMGI3MjdkNzllNGNkZmU0ODkwZDQ2NWIy
ZTgzZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5j
cHAKQEAgLTc2LDQgKzc2LDExIEBAIHZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZWNv
cmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uCiAjZW5kaWYKIH0K
IAordm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0
aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworI2lmIFVTRShESUNUQVRJT05fQUxU
RVJOQVRJVkVTKQorICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZW1v
dmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCkpOworI2VuZGlmCit9CisK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDdk
NTJkNGNmZWY5MTZkYjZmYzU3MjMyZDYwZWMwNGQ2MGE3NmNkNjguLjMwZTZkM2Y5NTU4NjU2NWZh
NTM1NzI3ZGExZWNmZjA4ODY4NGY5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIlNhbmRib3hFeHRl
bnNpb24uaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXZWJVbmRv
U3RlcC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KQEAgLTQwNiw3ICs0MDcsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQoY29uc3QgV2Vi
S2l0OjpXZWJNb3VzZUV2ZW50JiwgYm9vbCYgcmVzdWx0KTsKICAgICB2b2lkIGFjY2VwdHNGaXJz
dE1vdXNlKGludCBldmVudE51bWJlciwgY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW50JiwgYm9v
bCYgcmVzdWx0KTsKICAgICBib29sIHBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rv
cihjb25zdCBTdHJpbmcmKTsKLQorICAgIHZvaWQgaW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0
cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBs
YWNlbWVudFJhbmdlRW5kLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRp
dmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9vbCYgaGFuZGxlZCwgRWRpdG9y
U3RhdGUmIG5ld1N0YXRlKTsKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkIGNvbmZpcm1D
b21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nKTsKICAgICB2b2lkIHNl
dENvbXBvc2l0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgY29uc3Qg
V1RGOjpWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzLCB1
aW50NjRfdCBjdXJzb3JQb3NpdGlvbik7CkBAIC00ODgsNyArNDg5LDYgQEAgcHVibGljOgogCiAg
ICAgdm9pZCB1bm1hcmtBbGxNaXNzcGVsbGluZ3MoKTsKICAgICB2b2lkIHVubWFya0FsbEJhZEdy
YW1tYXIoKTsKLQogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05P
V19MRU9QQVJEKQogICAgIHZvaWQgaGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3Qg
U3RyaW5nJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYTY0MDU4OWQ4ZTdiMWZiOTk5N2Q3MWFk
NmM1Zjk3YjcwNWRlODk3Mi4uZmE3N2U5NTQwNTlmNmE2YmQ3OGM2OTZiZjFmYzAyZmE3YjYwZGU0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KQEAgLTI0MSw2ICsyNDEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsK
ICAgICBFeGVjdXRlS2V5cHJlc3NDb21tYW5kcyhWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21t
YW5kPiBzYXZlZENvbW1hbmRzKSAtPiAoYm9vbCBoYW5kbGVkLCBXZWJLaXQ6OkVkaXRvclN0YXRl
IG5ld1N0YXRlKQogICAgIFNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudChXZWJLaXQ6Oldl
Yk1vdXNlRXZlbnQgZXZlbnQpIC0+IChib29sIHJlc3VsdCkKICAgICBBY2NlcHRzRmlyc3RNb3Vz
ZShpbnQgZXZlbnROdW1iZXIsIFdlYktpdDo6V2ViTW91c2VFdmVudCBldmVudCkgLT4gKGJvb2wg
cmVzdWx0KQorICAgIEluc2VydERpY3RhdGVkVGV4dChXVEY6OlN0cmluZyB0ZXh0LCB1aW50NjRf
dCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQsIFdU
Rjo6VmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMpIC0+IChib29sIGhhbmRsZWQsIFdlYktpdDo6RWRpdG9yU3RhdGUgbmV3U3RhdGUpCiAj
ZW5kaWYKICNpZiBQTEFURk9STShXSU4pCiAgICAgLy8gRklYTUU6IFVuaWZ5IHdpdGggTWFjIGNv
dW50ZXJwYXJ0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQppbmRleCBhOGQzYzViYjE5NjBjMjk0MGYyMjMzNmFjMDJjYWU3ZGFl
NTRhZDAzLi5lOTcyODI1ODg1MGZjYzg0NzA5YTA0NmY3ZTE0ZjZlMThjNjhkNTYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
CkBAIC0yODYsNiArMjg2LDIxIEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0VGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWluCiAgICAgbmV3U3Rh
dGUgPSBlZGl0b3JTdGF0ZSgpOwogfQogCit2b2lkIFdlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4
dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWlu
dDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlv
bkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGJvb2wmIGhhbmRs
ZWQsIEVkaXRvclN0YXRlJiBuZXdTdGF0ZSkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKworICAgIGlmIChyZXBs
YWNlbWVudFJhbmdlU3RhcnQgIT0gTlNOb3RGb3VuZCkgeworICAgICAgICBSZWZQdHI8UmFuZ2U+
IHJlcGxhY2VtZW50UmFuZ2UgPSBjb252ZXJ0VG9SYW5nZShmcmFtZSwgTlNNYWtlUmFuZ2UocmVw
bGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdlRW5kIC0gcmVwbGFjZW1lbnRSYW5n
ZVN0YXJ0KSk7CisgICAgICAgIGlmIChyZXBsYWNlbWVudFJhbmdlKQorICAgICAgICAgICAgZnJh
bWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihyZXBsYWNlbWVu
dFJhbmdlLmdldCgpLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOworICAgIH0KKworICAgIEFTU0VS
VCghZnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKTsKKyAgICBoYW5kbGVkID0gZnJh
bWUtPmVkaXRvcigpLT5pbnNlcnREaWN0YXRlZFRleHQodGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRp
dmVMb2NhdGlvbnMsIG1fa2V5Ym9hcmRFdmVudEJlaW5nSW50ZXJwcmV0ZWQpOworICAgIG5ld1N0
YXRlID0gZWRpdG9yU3RhdGUoKTsKK30KKwogdm9pZCBXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZSh1
aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpCiB7CiAgICAgbG9jYXRpb24gPSBO
U05vdEZvdW5kOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDhkOGRjMjNjODU0ZDk2ZTk1YmEyYWMzMThmYTE1ZTFkMTAwNzA4MTYuLmFjM2U5NzE1
YzliZmUyMTFhNTc3OGIzNzJkNDE1OGQ2NzU2NGFlYTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNC0xNiAg
SmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KKworICAgICAgICBPbiBPUyBYLCBNYXJrIHRleHQgd2l0
aCBkaWN0YXRpb24gYWx0ZXJuYXRpdmUgd2l0aCBibHVlIHVuZGVybGluZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMDQ3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgaW50ZXJmYWNlIHRvIHNp
bXVsYXRlIGRpY3RhdGVkIHRleHQgaW5wdXQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvVGV4dElucHV0Q29udHJvbGxlci5tOgorICAgICAgICAoK1tUZXh0SW5wdXRDb250cm9sbGVy
IGlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6XSk6CisgICAgICAgICgrW1RleHRJbnB1
dENvbnRyb2xsZXIgd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOl0pOgorICAgICAgICAoLVtUZXh0
SW5wdXRDb250cm9sbGVyIGRpY3RhdGVkU3RyaW5nV2l0aFByaW1hcnlTdHJpbmc6YWx0ZXJuYXRp
dmU6YWx0ZXJuYXRpdmVPZmZzZXQ6YWx0ZXJuYXRpdmVMZW5ndGg6XSk6CisKIDIwMTItMDQtMTYg
IFZpbmNlbnQgU2NoZWliICA8c2NoZWliQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGRpbmcg
Q29udHJpYnV0b3JzIEJyaWFuIFNhbG9tb24gYW5kIFRvbSBIdWRzb24gdG8gY29tbWl0dGVycy5w
eS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9s
bGVyLm0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlci5tCmlu
ZGV4IGY3ODA3OTQ0NjM2OWU3OGM5ZjQ4Y2UwODE1ZWYxY2NjOGRmMGI5OWQuLmFmZWIxNmU0ZDI0
MmIyYjYwMjBjMDJlNDQxYWU4M2Q3NDBlOTMyZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXIubQpAQCAtMzEsNiArMzEsMTAgQEAKIAogI2ltcG9y
dCAiRHVtcFJlbmRlclRyZWVNYWMuaCIKICNpbXBvcnQgPEFwcEtpdC9OU0lucHV0TWFuYWdlci5o
PgorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX1NOT1dfTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTElPTikKKyNkZWZpbmUg
U1VQUE9SVF9ESUNUQVRJT05fQUxURVJOQVRJVkVTCisjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0
ZXJuYXRpdmVzLmg+CisjZW5kaWYKICNpbXBvcnQgPFdlYktpdC9XZWJEb2N1bWVudC5oPgogI2lt
cG9ydCA8V2ViS2l0L1dlYkZyYW1lLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWVQcml2YXRl
Lmg+CkBAIC0xNzAsNyArMTc0LDggQEAgKyAoQk9PTClpc1NlbGVjdG9yRXhjbHVkZWRGcm9tV2Vi
U2NyaXB0OihTRUwpYVNlbGVjdG9yCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVj
dG9yKGNoYXJhY3RlckluZGV4Rm9yUG9pbnRYOlk6KQogICAgICAgICAgICAgfHwgYVNlbGVjdG9y
ID09IEBzZWxlY3Rvcih2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0KQogICAgICAgICAgICAg
fHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihhdHRyaWJ1dGVkU3RyaW5nV2l0aFN0cmluZzopCi0g
ICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNldElucHV0TWV0aG9kSGFuZGxl
cjopKQorICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihzZXRJbnB1dE1ldGhv
ZEhhbmRsZXI6KQorICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihkaWN0YXRl
ZFN0cmluZ1dpdGhQcmltYXJ5U3RyaW5nOmFsdGVybmF0aXZlOmFsdGVybmF0aXZlT2Zmc2V0OmFs
dGVybmF0aXZlTGVuZ3RoOikpCiAgICAgICAgIHJldHVybiBOTzsKICAgICByZXR1cm4gWUVTOwog
fQpAQCAtMTk0LDcgKzE5OSw5IEBAICsgKE5TU3RyaW5nICopd2ViU2NyaXB0TmFtZUZvclNlbGVj
dG9yOihTRUwpYVNlbGVjdG9yCiAgICAgZWxzZSBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3Rvcihh
dHRyaWJ1dGVkU3RyaW5nV2l0aFN0cmluZzopKQogICAgICAgICByZXR1cm4gQCJtYWtlQXR0cmli
dXRlZFN0cmluZyI7IC8vIGp1c3QgYSBmYWN0b3J5IG1ldGhvZCwgZG9lc24ndCBjYWxsIGludG8g
TlNUZXh0SW5wdXQKICAgICBlbHNlIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNldElucHV0
TWV0aG9kSGFuZGxlcjopKQotICAgICAgICByZXR1cm4gQCJzZXRJbnB1dE1ldGhvZEhhbmRsZXIi
OyAKKyAgICAgICAgcmV0dXJuIEAic2V0SW5wdXRNZXRob2RIYW5kbGVyIjsKKyAgICBlbHNlIGlm
IChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGRpY3RhdGVkU3RyaW5nV2l0aFByaW1hcnlTdHJpbmc6
YWx0ZXJuYXRpdmU6YWx0ZXJuYXRpdmVPZmZzZXQ6YWx0ZXJuYXRpdmVMZW5ndGg6KSkKKyAgICAg
ICAgcmV0dXJuIEAibWFrZURpY3RhdGVkU3RyaW5nIjsKIAogICAgIHJldHVybiBuaWw7CiB9CkBA
IC0zNzUsNiArMzgyLDI3IEBAIC0gKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKilhdHRyaWJ1
dGVkU3RyaW5nV2l0aFN0cmluZzooTlNTdHJpbmcgKilhU3RyaW5nCiAgICAgcmV0dXJuIFtbW05T
TXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOmFTdHJpbmddIGF1
dG9yZWxlYXNlXTsKIH0KIAorLSAoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyopZGljdGF0ZWRT
dHJpbmdXaXRoUHJpbWFyeVN0cmluZzooTlNTdHJpbmcqKWFTdHJpbmcgYWx0ZXJuYXRpdmU6KE5T
U3RyaW5nKilhbHRlcm5hdGl2ZSBhbHRlcm5hdGl2ZU9mZnNldDooaW50KW9mZnNldCBhbHRlcm5h
dGl2ZUxlbmd0aDooaW50KWxlbmd0aAoreworI2lmIGRlZmluZWQoU1VQUE9SVF9ESUNUQVRJT05f
QUxURVJOQVRJVkVTKQorICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGRpY3RhdGVkU3Ry
aW5nID0gW3NlbGYgYXR0cmlidXRlZFN0cmluZ1dpdGhTdHJpbmc6YVN0cmluZ107CisgICAgTlNS
YW5nZSByYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IE5TTWFrZVJhbmdlKChOU1VJbnRlZ2VyKW9mZnNl
dCwgKE5TVUludGVnZXIpbGVuZ3RoKTsKKyAgICBOU1N0cmluZyogc3ViU3RyaW5nV2l0aEFsdGVy
bmF0aXZlID0gW2FTdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOnJhbmdlV2l0aEFsdGVybmF0aXZl
XTsKKyAgICBpZiAoIXN1YlN0cmluZ1dpdGhBbHRlcm5hdGl2ZSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVPYmplY3QgPSBbW1tOU1Rl
eHRBbHRlcm5hdGl2ZXMgYWxsb2NdIGluaXRXaXRoUHJpbWFyeVN0cmluZzpzdWJTdHJpbmdXaXRo
QWx0ZXJuYXRpdmUgYWx0ZXJuYXRpdmVTdHJpbmdzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDph
bHRlcm5hdGl2ZV1dIGF1dG9yZWxlYXNlXTsKKyAgICBpZiAoIWFsdGVybmF0aXZlT2JqZWN0KQor
ICAgICAgICByZXR1cm4gbmlsOworCisgICAgW2RpY3RhdGVkU3RyaW5nIGFkZEF0dHJpYnV0ZTpO
U1RleHRBbHRlcm5hdGl2ZXNBdHRyaWJ1dGVOYW1lIHZhbHVlOmFsdGVybmF0aXZlT2JqZWN0IHJh
bmdlOnJhbmdlV2l0aEFsdGVybmF0aXZlXTsKKworICAgIHJldHVybiBkaWN0YXRlZFN0cmluZzsK
KyNlbHNlCisgICAgcmV0dXJuIG5pbDsKKyNlbmRpZgorfQorCiAtICh2b2lkKXNldElucHV0TWV0
aG9kSGFuZGxlcjooV2ViU2NyaXB0T2JqZWN0ICopaGFuZGxlcgogewogICAgIGlmIChpbnB1dE1l
dGhvZEhhbmRsZXIgPT0gaGFuZGxlcikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZTUzYTdmOGM4YjE0ODU1OGYyZjQyY2Qz
MGExZjU0NzQzMjJjYzEyLi5lNGRiZjczMjM3ZTk4YzQ1MzBmMzhlZmRhNjc4ZWViMjA3MTZiYzI4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDQtMTYgIEppYSBQdSAgPGpwdUBhcHBsZS5j
b20+CisKKyAgICAgICAgT24gT1MgWCwgTWFyayB0ZXh0IHdpdGggZGljdGF0aW9uIGFsdGVybmF0
aXZlIHdpdGggYmx1ZSB1bmRlcmxpbmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MzA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMtbGlvbi9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy1zbm93
bGVvcGFyZC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2Vk
aXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdp
dGgtYWx0ZXJuYXRpdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRp
bmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQtdGV4dC5odG1s
OiBBZGRlZC4KKwogMjAxMi0wNC0xNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFRyeSB0byBmaXggYSBmbGFreSBKUyB0ZXN0LgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQKaW5kZXggZGIzNzFhMDc1OTBiYzU4ZmUyZWI2ZTdj
ZWIyMGFjNDJiNTA1ZDg3Mi4uNTljM2ZlMDA5MWE5MGJiMTIzZjVkYWQ2ZTFhYzNhNTQ0Y2Y2M2U0
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9Ta2lwcGVkCkBAIC0yMTksNiAr
MjE5LDEwIEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvd2ViZ2wtcmVtb3RlLXJlYWQtcmVtb3RlLWlt
YWdlLWFsbG93ZWQuaHRtbAogaHR0cC90ZXN0cy9zZWN1cml0eS93ZWJnbC1yZW1vdGUtcmVhZC1y
ZW1vdGUtaW1hZ2UtYWxsb3dlZC13aXRoLWNyZWRlbnRpYWxzLmh0bWwKIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvd2ViZ2wtcmVtb3RlLXJlYWQtcmVtb3RlLWltYWdlLWJsb2NrZWQtbm8tY3Jvc3Nvcmln
aW4uaHRtbAogCisjIERpY3RhdGVkIHRleHQgaW5wdXQgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlz
IHBsYXRmb3JtCitwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9lZGl0LWRpY3RhdGVkLXRleHQt
d2l0aC1hbHRlcm5hdGl2ZS5odG1sCitwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQt
ZGljdGF0ZWQtdGV4dC5odG1sCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgVGVzdHMgYmVsb3cgdGhpcyBwb2ludCBhcmUgZmFp
bGluZyBvbmx5IG9uIHNvbWUgc2xhdmVzLgogIyBodHRwOi8vd2Via2l0Lm9yZy9iLzU2NTUxIGNv
dmVycyB0aGUgZ2VuZXJhbCBpc3N1ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy1saW9uL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGlvbi9Ta2lwcGVk
CmluZGV4IDcwMmI3OGM4YjIwOWM2MjRiODMwYTFhZmFlODlkMzY2YzllZmY4NDAuLjlkODI1OWEx
YjE5ODdjYjI2YmU3Y2ZkNmM4YTk3MmJhY2JjOTZhZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy1saW9uL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LWxpb24vU2tpcHBlZApAQCAtMzgsNiArMzgsMTAgQEAgZWRpdGluZy9wYXN0ZWJvYXJkLzU0Nzgy
NTAuaHRtbAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIwNzkK
IGVkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1iZy1mb250Lmh0bWwKIAorIyBEaWN0YXRlZCB0ZXh0
IGlucHV0IGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybQorcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUuaHRtbAorcGxh
dGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQuaHRtbAorCiAjIC0t
LSBNYXRoIE1MIC0tLQogCiAjIFRoZXNlIGhhdmUgZGlmZmVyZW50IG1ldHJpY3MsIGFuZCByZXF1
aXJlIGludmVzdGlnYXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1z
bm93bGVvcGFyZC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJk
L1NraXBwZWQKaW5kZXggZjRjNDRjNjU1MmM5NDY5ZGFjOTAyMzAzZDBiYTU0YzMxZjI4NGNjNC4u
ZjlkNTk3NzkwY2RjYTQ0ZGUzNGU5NGE5MWU2ZDk1ZTcwNmI1MTZkYiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQKQEAgLTE5NywzICsxOTcsNyBAQCBm
YXN0L2hpZHBpCiAjIEZyYW1lOjpmaW5kU3RyaW5nIGRvZXMgbm90aGluZyBvbiBwYWdlcyB0aGF0
IHByZXZlbnQgc2VsZWN0aW9uCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MDM2MQogZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2ZpbmRTdHJpbmctc2VsZWN0aW9uLWRp
c2FibGVkLmh0bWwKKworIyBEaWN0YXRlZCB0ZXh0IGlucHV0IGlzIG5vdCBzdXBwb3J0ZWQgb24g
dGhpcyBwbGF0Zm9ybQorcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10
ZXh0LXdpdGgtYWx0ZXJuYXRpdmUuaHRtbAorcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5z
ZXJ0LWRpY3RhdGVkLXRleHQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1k
aWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1
N2M3OGNhNjM4YjU3Zjg5NDViOWUwMThkNWMwOWM5NmRmZmE0NjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9lZGl0LWRpY3RhdGVkLXRl
eHQtd2l0aC1hbHRlcm5hdGl2ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitFZGl0aW5n
IHRleHQgdGhhdCBoYXMgRGljdGF0aW9uQWx0ZXJuYXRpdmVzIG1hcmtlciB3aG91bGQgY2F1c2Ug
dGhlIG1hcmtlciB0byBiZSByZW1vdmVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
K3RoaXMgaXMgYSB0ZXgKK1BBU1MgbWFya2VkVGV4dCBpcyAiIgorCitURVNUIENPTVBMRVRFCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9lZGl0LWRp
Y3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jN2YwMDc5MDM2NjI2NWYwZDBlYmIwY2JkNmFiYTYxNjAyZGU5ZDNkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQv
ZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUuaHRtbApAQCAtMCwwICsxLDU5IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK2JvZHkgeyBtYXJnaW46IDA7
IHBhZGRpbmc6IDAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHByZSBpZD0iZGVzY3Jp
cHRpb24iPjwvcHJlPgorPGRpdiBpZD0idGVzdCIgY29udGVudGVkaXRhYmxlPjwvZGl2PgorPHAg
aWQ9ImNvbnNvbGUiPjwvcD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBk
ZXNjcmlwdGlvbigiRWRpdGluZyB0ZXh0IHRoYXQgaGFzIERpY3RhdGlvbkFsdGVybmF0aXZlcyBt
YXJrZXIgd2hvdWxkIGNhdXNlIHRoZSBtYXJrZXIgdG8gYmUgcmVtb3ZlZC4iKTsKKworICAgIHZh
ciBjb25zb2xlX21lc3NhZ2VzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKKyAgICAK
KyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICB7CisgICAgICAgIHZhciBpdGVtID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgICAgIGNvbnNvbGVfbWVzc2FnZXMu
YXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgfQorICAgIAorICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICAgICAgCisgICAgICAgIHRyeSB7CisKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHZhciB0ZXN0QXJl
YSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisgICAgICAgICAgICB0ZXN0QXJl
YS5mb2N1cygpOworCisgICAgICAgICAgICB2YXIgZGljdGF0ZWRTdHJpbmcgPSB0ZXh0SW5wdXRD
b250cm9sbGVyLm1ha2VEaWN0YXRlZFN0cmluZygidGhpcyBpcyBhIHRleHQiLCAidGVzdCIsIDEw
LCA0KTsKKyAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJTZWxlY3RBbGwiKTsKKyAg
ICAgICAgICAgIHRleHRJbnB1dENvbnRyb2xsZXIuaW5zZXJ0VGV4dChkaWN0YXRlZFN0cmluZyk7
CisgICAgICAgICAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29tbWFuZCgiZGVsZXRlQmFja3dh
cmQ6Iik7CisKKyAgICAgICAgICAgIHZhciBtYXJrZWRUZXh0ID0gIiI7CisgICAgICAgICAgICBp
ZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAgICAgICAgIHZhciB0ZXN0VGV4dCA9IHRl
c3RBcmVhLmZpcnN0Q2hpbGQ7CisgICAgICAgICAgICAgICAgdmFyIG1hcmtlZCA9IGludGVybmFs
cy5tYXJrZXJSYW5nZUZvck5vZGUodGVzdFRleHQsICJEaWN0YXRpb25BbHRlcm5hdGl2ZXMiLCAw
KTsKKyAgICAgICAgICAgICAgICBpZiAobWFya2VkKQorICAgICAgICAgICAgICAgICAgICBtYXJr
ZWRUZXh0ID0gbWFya2VkLnRvU3RyaW5nKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygibWFya2VkVGV4dCIsICIiKTsKKyAgICAgICAgICAgIGRv
Y3VtZW50LndyaXRlKCJURVNUIENPTVBMRVRFIik7CisKKyAgICAgICAgfSBjYXRjaCAoZXgpIHsK
KyAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCJFeGNlcHRpb246ICIgKyBleC5kZXNjcmlwdGlv
bik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoY29uc29sZV9tZXNzYWdlcyk7CisgICAgICAgIAorICAg
IH0gZWxzZSB7CisgICAgICAgIGRvY3VtZW50LndyaXRlKCIoY2Fubm90IHJ1biBpbnRlcmFjdGl2
ZWx5KSIpOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRl
eHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQv
aW5zZXJ0LWRpY3RhdGVkLXRleHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkNDYxNzMyZWVl
ZjMzZjIwZjA4MDcwZjUxMWQ5ZGNmYzAyMGJhMDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQtdGV4dC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitXaGVuIGluc2VydGluZyBkaWN0YXRlZCB0ZXh0LCBy
YW5nZSBvZiB0ZXh0IHRoYXQgaGFzIGFsdGVybmF0aXZlIHRleHQgaXMgYXR0YWNoZWQgYXMgRGlj
dGF0aW9uQWx0ZXJuYXRpdmVzIG1hcmtlci4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
Cit0aGlzIGlzIGEgdGV4dAorUEFTUyBtYXJrZWRUZXh0IGlzICJ0ZXh0IgorCitURVNUIENPTVBM
RVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9p
bnNlcnQtZGljdGF0ZWQtdGV4dC5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMmExZTQzYmQ5
OWUzZDI1ZTAyMDgzMDMwYmU3ZjMyZjhjNWQ0NDE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQuaHRt
bApAQCAtMCwwICsxLDU4IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4K
K2JvZHkgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5
PgorPHByZSBpZD0iZGVzY3JpcHRpb24iPjwvcHJlPgorPGRpdiBpZD0idGVzdCIgY29udGVudGVk
aXRhYmxlPjwvZGl2PgorPHAgaWQ9ImNvbnNvbGUiPjwvcD4KKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKyAgICBkZXNjcmlwdGlvbigiV2hlbiBpbnNlcnRpbmcgZGljdGF0ZWQgdGV4
dCwgcmFuZ2Ugb2YgdGV4dCB0aGF0IGhhcyBhbHRlcm5hdGl2ZSB0ZXh0IGlzIGF0dGFjaGVkIGFz
IERpY3RhdGlvbkFsdGVybmF0aXZlcyBtYXJrZXIuIik7CisKKyAgICB2YXIgY29uc29sZV9tZXNz
YWdlcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7CisgICAgCisgICAgZnVuY3Rpb24g
bG9nKG1lc3NhZ2UpCisgICAgeworICAgICAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImxpIik7CisgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUobWVzc2FnZSkpOworICAgICAgICBjb25zb2xlX21lc3NhZ2VzLmFwcGVuZENoaWxkKGl0
ZW0pOworICAgIH0KKyAgICAKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgICAgIAorICAgICAgICB0cnkgeworCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB2YXIgdGVzdEFyZWEgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGVzdCIpOworICAgICAgICAgICAgdGVzdEFyZWEuZm9jdXMoKTsKKwor
ICAgICAgICAgICAgdmFyIGRpY3RhdGVkU3RyaW5nID0gdGV4dElucHV0Q29udHJvbGxlci5tYWtl
RGljdGF0ZWRTdHJpbmcoInRoaXMgaXMgYSB0ZXh0IiwgInRlc3QiLCAxMCwgNCk7CisgICAgICAg
ICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxsIik7CisgICAgICAgICAgICB0ZXh0
SW5wdXRDb250cm9sbGVyLmluc2VydFRleHQoZGljdGF0ZWRTdHJpbmcpOworCisgICAgICAgICAg
ICB2YXIgbWFya2VkVGV4dCA9ICIiOworICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
IHsKKyAgICAgICAgICAgICAgICB2YXIgdGVzdFRleHQgPSB0ZXN0QXJlYS5maXJzdENoaWxkOwor
ICAgICAgICAgICAgICAgIHZhciBtYXJrZWQgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2Rl
KHRlc3RUZXh0LCAiRGljdGF0aW9uQWx0ZXJuYXRpdmVzIiwgMCk7CisgICAgICAgICAgICAgICAg
aWYgKG1hcmtlZCkKKyAgICAgICAgICAgICAgICAgICAgbWFya2VkVGV4dCA9IG1hcmtlZC50b1N0
cmluZygpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoIm1hcmtlZFRleHQiLCAidGV4dCIpOworICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIlRF
U1QgQ09NUExFVEUiKTsKKworICAgICAgICB9IGNhdGNoIChleCkgeworICAgICAgICAgICAgZG9j
dW1lbnQud3JpdGUoIkV4Y2VwdGlvbjogIiArIGV4LmRlc2NyaXB0aW9uKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBl
bmRDaGlsZChjb25zb2xlX21lc3NhZ2VzKTsKKyAgICAgICAgCisgICAgfSBlbHNlIHsKKyAgICAg
ICAgZG9jdW1lbnQud3JpdGUoIihjYW5ub3QgcnVuIGludGVyYWN0aXZlbHkpIik7CisgICAgfQor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137822</attachid>
            <date>2012-04-18 19:38:55 -0700</date>
            <delta_ts>2012-04-18 20:04:09 -0700</delta_ts>
            <desc>Moved code shared by WebKit and WebKit2 into WebCore.</desc>
            <filename>bug-83047-20120418193853.patch</filename>
            <type>text/plain</type>
            <size>77798</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0NTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmM4NTM5NTFhYjM2ZTIy
NTZmN2Q1NzNhMGRkNjU4Y2E5MjAxZTNmYi4uYWQyYmNmMGRhZTkxNTM5NzUwNzY4Mjc2MDhhNjJk
YWIwNzFjNThhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA0LTE4ICBKaWEg
UHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE9uIE9TIFgsIG1hcmsgdGV4dCB3aXRoIGRp
Y3RhdGlvbiBhbHRlcm5hdGl2ZSB3aXRoIGJsdWUgdW5kZXJsaW5lLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMwNDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogcGxhdGZvcm0vbWFjL2VkaXRp
bmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUuaHRtbAorICAgICAg
ICAgICAgICAgcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQu
aHRtbAorCisgICAgICAgIFRoaXMgaXMgdGhlIGZvbGxvdyB1cCBwYXRjaCBtZW50aW9uZWQgaW4g
dGhlIENoYW5nZUxvZyBvZiBidWcgODM1NDkuIFRoaXMgcGF0Y2ggYWRkZWQgYW4gT1MgWCBzcGVj
aWZpYworICAgICAgICBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8gZGljdGF0ZWQgdGV4dCBpbnB1
dC4gTWFqb3JpdHkgb2YgZm9sbG93aW5nIGNoYW5nZXMgYXJlIGFjdGl2ZSBvbmx5IG9uIE9TIFgu
CisKKyAgICAgICAgTmV3IGNsYXNzZXMgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyIGFu
ZCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UgYXJlIGFkZGVkIGhlcmUgc2luY2UgdGhleSBhcmUg
dXNlZAorICAgICAgICBieSBib3RoIFdlYktpdCBhbmQgV2ViS2l0Mi4KKworICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVtb3ZlRGljdGF0aW9u
QWx0ZXJuYXRpdmVzRm9yTWFya2VyKTogIFRoaXMgbmV3IGZ1bmN0aW9uIG5vdGlmaWVzCisgICAg
ICAgICAgV2ViS2l0IGxheWVyIHRvIHJlbW92ZSBkaWN0YXRpb24gYWx0ZXJuYXRpdmUgZGF0YSB3
aGVuIGEgRGljdGF0aW9uQWxlcm5hdGl2ZXMgbWFya2VyIGlzIHJlbW92ZWQuCisgICAgICAgICog
ZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmg6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp1cGRhdGVNYXJrZXJzRm9yV29y
ZHNBZmZlY3RlZEJ5RWRpdGluZyk6IFJlbmFtZWQgZXhpc3RpbmcgcmVzcG9uZFRvQ2hhbmdlZFNl
bGVjdGlvbigpCisgICAgICAgICAgZnVuY3Rpb24gdG8gYXZvaWQgaGF2aW5nIHR3byBmdW5jYXRp
b25zIHdpdGggc2FtZSBuYW1lIGFuZCBzaWduYXR1cmUuCisgICAgICAgICogZWRpdGluZy9tYWMv
RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNv
bnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9s
bGVyOjpEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlcik6CisgICAgICAgICogZWRpdGluZy9tYWMv
RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4dENvbnRy
b2xsZXI6OmFkZEFsdGVybmF0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25BbHRl
cm5hdGl2ZUNvbnRyb2xsZXI6OkRpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2
ZXNGb3JEaWN0YXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVy
bmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4dENvbnRyb2xsZXI6OnJlbW92ZUFsdGVy
bmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGljdGF0aW9u
QWx0ZXJuYXRpdmVDb250cm9sbGVyOjpEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlcjo6Y2xlYXIp
OgorICAgICAgICAoV2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjphZGRB
bHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250
cm9sbGVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNv
bnRyb2xsZXI6OnNob3dBbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGljdGF0aW9u
QWx0ZXJuYXRpdmVDb250cm9sbGVyOjpoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6ZGlzbWlzc0FsdGVy
bmF0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xs
ZXI6OnJlbW92ZUFsdGVybmF0aXZlcyk6CisgICAgICAgICogZWRpdGluZy9tYWMvVGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UpOgorICAgICAgICAqIGVkaXRp
bmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlcyk6IEZ1bmN0aW9uIHVzZWQgYnkg
Ym90aCBXZWJLaXQgYW5kIFdlYktpdDIuCisgICAgICAgICogcGFnZS9BbHRlcm5hdGl2ZVRleHRD
bGllbnQuaDoKKwogMjAxMi0wNC0xOCAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gU29saWQgY29sb3IgbGF5ZXJzIHNob3VsZCByZXNw
ZWN0IG9wYWNpdHkgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMzk5MDY5MTdlN2I3MzE3N2Q3
NTEyZjczYzg1Njk4OGE0ODI2ODVhZi4uNTEwNzdkZGU4YmZlZWNlMjA1NmQ1MTczMTU3NGFkMGYy
MjhjNmZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTE4ICBK
aWEgUHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE9uIE9TIFgsIG1hcmsgdGV4dCB3aXRo
IGRpY3RhdGlvbiBhbHRlcm5hdGl2ZSB3aXRoIGJsdWUgdW5kZXJsaW5lLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMwNDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAgQWxzbyBzZWUgV2ViQ29yZS9DaGFu
Z2VMb2cuCisgICAgICAgICBUaGlzIHBhdGNoIGFkZGVkIGFuIE9TIFggc3BlY2lmaWMgZnVuY3Rp
b25hbGl0eSByZWxhdGVkIHRvIGRpY3RhdGVkIHRleHQgaW5wdXQuCisgICAgICAgICBJdCBzaG91
bGRuJ3QgY2hhbmdlIGJlaGF2aW9ycyBvbiBvdGhlciBwbGF0Zm9ybXMuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW06CisgICAgICAgIChDb3JyZWN0aW9uUGFu
ZWw6OmhhbmRsZUFjY2VwdGVkUmVwbGFjZW1lbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkFsdGVybmF0aXZlVGV4dENsaWVudC5tbToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENs
aWVudDo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBpbnNlcnRUZXh0Ol0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBoYW5kbGVBY2Nl
cHRlZEFsdGVybmF0aXZlVGV4dDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfZ2V0V2ViQ29yZURp
Y3RhdGlvbkFsdGVybmF0aXZlczpmcm9tVGV4dEFsdGVybmF0aXZlczpdKToKKyAgICAgICAgKC1b
V2ViVmlldyBfcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOl0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlld0RhdGEuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLm1tOgorICAg
ICAgICAoLVtXZWJWaWV3UHJpdmF0ZSBpbml0XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3
SW50ZXJuYWwuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisKIDIwMTIt
MDQtMTggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgRnVsbCBT
Y3JlZW4gbW9kZSBkb2VzIG5vdCBwcmVzZXJ2ZSBDQUxheWVyIG9yZGVyaW5nIGFmdGVyIGV4aXRp
bmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggMzJiZDc5MzBhYjQ4MTg3MTMyYjk0YjdkODNlMjQzZDk0ZWE3ZjEz
NS4uOWFlZjYzZDhkNmVkYzVjMThhNjYyZDA3MDYyOGE3MGZjODlhOWZjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ0IEBACisyMDEyLTA0LTE4ICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgorCisg
ICAgICAgIE9uIE9TIFgsIG1hcmsgdGV4dCB3aXRoIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZSB3aXRo
IGJsdWUgdW5kZXJsaW5lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODMwNDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBbHNvIHNlZSBXZWJDb3JlL0NoYW5nZUxvZy4KKyAgICAgICAgVGhpcyBwYXRjaCBh
ZGRlZCBhbiBPUyBYIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgcmVsYXRlZCB0byBkaWN0YXRlZCB0
ZXh0IGlucHV0LgorICAgICAgICBJdCBzaG91bGRuJ3QgY2hhbmdlIGJlaGF2aW9ycyBvbiBvdGhl
ciBwbGF0Zm9ybXMuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKFBhZ2VDbGllbnRJ
bXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6YWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgaW5zZXJ0
VGV4dDpyZXBsYWNlbWVudFJhbmdlOl0pOgorICAgICAgICAoLVtXS1ZpZXcgaGFuZGxlQWNjZXB0
ZWRBbHRlcm5hdGl2ZVRleHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW06CisgICAgICAg
IChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0ZWRSZXBsYWNlbWVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVtb3ZlRGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKwogMjAxMi0wNC0xOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBGdWxsIFNjcmVlbiBtb2Rl
IGRvZXMgbm90IHByZXNlcnZlIENBTGF5ZXIgb3JkZXJpbmcgYWZ0ZXIgZXhpdGluZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KaW5kZXggMTEyOTc3NWRkM2QwZGMwZTE2MDA2Zjk1OWQ2YzJmMWQyMzgzZDRh
Ny4uM2Q4MjVmOWNlMzdkNzAyZTM3Zjc4ODkyMGNlYzQ1ZDRlNmU3MTFhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KQEAgLTIxNzksMyArMjE3OSwxMCBAQCBfX1pOSzdXZWJDb3JlNE5vZGUzMW51bWJl
ck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW5FdgogI2lmIEVOQUJMRShTSEFET1dfRE9NKQogX19a
TjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMThpc1NoYWRvd0RPTUVuYWJsZWRFCiAj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFS
RCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlM
RElOR19PTl9MSU9OKQorX19aTjdXZWJDb3JlMzBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xs
ZXIxNWFkZEFsdGVybmF0aXZlc0VSS04zV1RGOVJldGFpblB0ckkxOE5TVGV4dEFsdGVybmF0aXZl
c0VFCitfX1pON1dlYkNvcmUzMERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjE4cmVtb3Zl
QWx0ZXJuYXRpdmVzRXkKK19fWk43V2ViQ29yZTMwRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9s
bGVyNWNsZWFyRXYKK19fWk43V2ViQ29yZTMyY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2
ZXNFUDE4TlNBdHRyaWJ1dGVkU3RyaW5nUk4zV1RGNlZlY3RvcklOU18yNFRleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZUVMbTBFRUUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE1Yjg4MDQzYWRjZTkzNmM0ZjJkZmExNDkx
MjdkOWNhZTI0MzgwNTEuLmI1NDJiOTNmMTkxZjBmM2MyNzk4NmJhYTBkNGRhMTBlMmFiZjdhYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTU3NTEsNiArNTc1MSwxMCBAQAogCQlDRUNBREZDRDE1Mzc3OTFEMDBFMzcwNjggLyog
VGV4dEluc2VydGlvbkJhc2VDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENFQ0FERkNCMTUzNzc5MUQwMEUzNzA2OCAvKiBUZXh0SW5zZXJ0
aW9uQmFzZUNvbW1hbmQuY3BwICovOyB9OwogCQlDRUNBREZDRTE1Mzc3OTFEMDBFMzcwNjggLyog
VGV4dEluc2VydGlvbkJhc2VDb21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRUNBREZDQzE1Mzc3OTFEMDBFMzcwNjggLyogVGV4dEluc2VydGlv
bkJhc2VDb21tYW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0VDQ0ZDM0IxNDE5NzNENTAwMkEwQUMxIC8qIERlY29kZUVzY2FwZVNlcXVlbmNl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDQ0ZD
M0ExNDE5NzNENTAwMkEwQUMxIC8qIERlY29kZUVzY2FwZVNlcXVlbmNlcy5oICovOyB9OworCQlD
RUQwREEzMzE1M0Y4QTAyMDAxODY0MzYgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEMERBMzIxNTNG
OEEwMjAwMTg2NDM2IC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSAqLzsgfTsKKwkJQ0VE
NUI4NEExNTNGNjY5MjAwQTlEREU4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VENUI4NDgx
NTNGNjY5MjAwQTlEREU4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNFRDVCODRCMTUz
RjY2OTMwMEE5RERFOCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUQ1Qjg0OTE1M0Y2Njky
MDBBOURERTggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tICovOyB9OworCQlD
RUQ1Qjg1MDE1M0Y3RDU2MDBBOURERTggLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUQ1Qjg0RjE1M0Y3
RDU2MDBBOURERTggLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0VEQTEyRDcxNTJDQTFDQjAwRDlF
MDhEIC8qIEFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQTEyRDYxNTJDQTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0
aXZlVGV4dENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUNFRjQxOENFMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUY0MThD
QzExNzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuY3BwICovOyB9OwogCQlDRUY0
MThDRjExNzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFRjQxOENEMTE3OTY3OEMwMDlEMTEy
QyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0xMjg3NSw2ICsxMjg3OSwxMCBAQAogCQlDRUNBREZDQjE1Mzc3
OTFEMDBFMzcwNjggLyogVGV4dEluc2VydGlvbkJhc2VDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQ0FERkNDMTUzNzc5MUQwMEUzNzA2OCAvKiBU
ZXh0SW5zZXJ0aW9uQmFzZUNvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGV4dEluc2VydGlvbkJhc2VDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFQ0NGQzNBMTQxOTczRDUwMDJBMEFDMSAvKiBEZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFRDBEQTMyMTUzRjhBMDIwMDE4NjQzNiAv
KiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW07IHBhdGggPSBtYWMvVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RUQ1Qjg0ODE1M0Y2NjkyMDBBOURERTggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpY3RhdGlvbkFsdGVybmF0aXZl
Q29udHJvbGxlci5oOyBwYXRoID0gbWFjL0RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRUQ1Qjg0OTE1M0Y2NjkyMDBBOURERTgg
LyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tOyBw
YXRoID0gbWFjL0RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0VENUI4NEYxNTNGN0Q1NjAwQTlEREU4IC8qIFRleHRBbHRlcm5h
dGl2ZVdpdGhSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXh0QWx0
ZXJuYXRpdmVXaXRoUmFuZ2UuaDsgcGF0aCA9IG1hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VEQTEyRDYxNTJDQTFDQjAwRDlFMDhE
IC8qIEFsdGVybmF0aXZlVGV4dENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0VGNDE4Q0MxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZXdwb3J0QXJndW1lbnRzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VGNDE4Q0QxMTc5Njc4QzAwOUQxMTJDIC8q
IFZpZXdwb3J0QXJndW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZp
ZXdwb3J0QXJndW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDQ3Niw4
ICsyMDQ4NCwxMiBAQAogCQlFRDUwMURDOTBCMjQ5RjM5MDBBRTE4RDkgLyogbWFjICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDRUQ1Qjg0OTE1M0Y2Njky
MDBBOURERTggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tICovLAorCQkJCUNF
RDVCODQ4MTUzRjY2OTIwMEE5RERFOCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIu
aCAqLywKIAkJCQlFRDUwMURDNTBCMjQ5RjI5MDBBRTE4RDkgLyogRWRpdG9yTWFjLm1tICovLAog
CQkJCTRBOEM5NkVBMEJFNjkwMzIwMDRFRUZGMCAvKiBGcmFtZVNlbGVjdGlvbk1hYy5tbSAqLywK
KwkJCQlDRUQwREEzMjE1M0Y4QTAyMDAxODY0MzYgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdl
Lm1tICovLAorCQkJCUNFRDVCODRGMTUzRjdENTYwMEE5RERFOCAvKiBUZXh0QWx0ZXJuYXRpdmVX
aXRoUmFuZ2UuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTI0Nzk2LDYgKzI0ODA4LDggQEAKIAkJCQlDRUNBREZDNzE1Mzc3OEZGMDBF
MzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFQ0FE
RkM5MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDRUNBREZDRTE1Mzc3OTFEMDBFMzcwNjggLyogVGV4dEluc2VydGlvbkJhc2VDb21tYW5k
LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRUQ1Qjg0QTE1M0Y2NjkyMDBBOURERTggLyogRGljdGF0
aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRUQ1Qjg1MDE1
M0Y3RDU2MDBBOURERTggLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTI3ODA3LDYgKzI3ODIxLDggQEAKIAkJCQlDRUNBREZDNjE1Mzc3OEZGMDBFMzcwNjgg
LyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VDQURGQzgx
NTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0VDQURGQ0QxNTM3NzkxRDAwRTM3MDY4IC8qIFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlDRUQ1Qjg0QjE1M0Y2NjkzMDBBOURERTggLyogRGljdGF0
aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0VEMERBMzMx
NTNGOEEwMjAwMTg2NDM2IC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlci5jcHAKaW5kZXggOGQwOWZmMWI5OTg0NzFlYTYxZjM4OTI2OGU0OTI0ZjcwNGNmMTNi
MS4uZmEwYjg4ZTc2YWJkY2U4NmY3ZmRjNzM4M2ZlOGQ1NGQ2Y2IyODliNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCkBA
IC02MjQsNCArNjI0LDE1IEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aW5zZXJ0
RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjCiAgICAgcmV0dXJuIGV2
ZW50LT5kZWZhdWx0SGFuZGxlZCgpOwogfQogCit2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xs
ZXI6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcihEb2N1bWVudE1hcmtlciog
bWFya2VyKQoreworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIERpY3RhdGlv
bk1hcmtlckRldGFpbHMqIGRldGFpbHMgPSBzdGF0aWNfY2FzdDxEaWN0YXRpb25NYXJrZXJEZXRh
aWxzKj4obWFya2VyLT5kZXRhaWxzKCkpOworICAgIGlmIChBbHRlcm5hdGl2ZVRleHRDbGllbnQq
IGNsaWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgpKQorICAgICAgICBjbGllbnQtPnJlbW92
ZURpY3RhdGlvbkFsdGVybmF0aXZlcyhkZXRhaWxzLT5kaWN0YXRpb25Db250ZXh0KCkpOworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0obWFya2VyKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlci5oCmluZGV4IDI4NDQ5ZWZkOTNlNTc0MGEwOWUzNWI2NTRiODliNTBjNzk4MDhk
OWIuLmY1MmU4MGI4OGJmZmU2ZjViZWQzNTZiOWUxOWFhMzQ2YWEzMzQ1YWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCkBAIC0x
MzAsNiArMTMwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlZEF1dG9jb3JyZWN0aW9uQXRQ
b3NpdGlvbihjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxTdHJpbmcpIFVO
TEVTU19FTkFCTEVEKHsgVU5VU0VEX1BBUkFNKG9yaWdpbmFsU3RyaW5nKTsgfSkKIAogICAgIGJv
b2wgaW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxEaWN0YXRp
b25BbHRlcm5hdGl2ZT4mLCBFdmVudCopOworICAgIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJu
YXRpdmVzRm9yTWFya2VyKERvY3VtZW50TWFya2VyKik7CiAKIHByaXZhdGU6CiAjaWYgVVNFKEFV
VE9DT1JSRUNUSU9OX1BBTkVMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDI5NGVi
OTRiNTI3Yjg2OWE5MjM1NGNhYzZkOTkxYWFhMmVmZjI0MjQuLmM1YmY0YTBmNTkwYWMzYTIyYzUz
NmMwNzZlYzY4NGEwOWFhN2JjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTIy
NTgsNiArMjI1OCwxMCBAQCB2b2lkIEVkaXRvcjo6dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0
ZWRCeUVkaXRpbmcoYm9vbCBkb05vdFJlbW92ZUlmU2VsZWN0aW9uQQogICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgUmVmUHRyPFJhbmdlPiB3b3JkUmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBzdGFydE9mRmlyc3RXb3JkLmRlZXBFcXVpdmFs
ZW50KCksIGVuZE9mTGFzdFdvcmQuZGVlcEVxdWl2YWxlbnQoKSk7CiAKKyAgICBWZWN0b3I8RG9j
dW1lbnRNYXJrZXIqPiBtYXJrZXJzID0gZG9jdW1lbnQtPm1hcmtlcnMoKS0+bWFya2Vyc0luUmFu
Z2Uod29yZFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVz
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hcmtlcnMuc2l6ZSgpOyArK2kpCisgICAg
ICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRp
dmVzRm9yTWFya2VyKG1hcmtlcnNbaV0pOworCiAgICAgZG9jdW1lbnQtPm1hcmtlcnMoKS0+cmVt
b3ZlTWFya2Vycyh3b3JkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyB8IERv
Y3VtZW50TWFya2VyOjpDb3JyZWN0aW9uSW5kaWNhdG9yIHwgRG9jdW1lbnRNYXJrZXI6OlNwZWxs
Q2hlY2tpbmdFeGVtcHRpb24gfCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVz
LCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFy
a2VyKTsKICAgICBkb2N1bWVudC0+bWFya2VycygpLT5jbGVhckRlc2NyaXB0aW9uT25NYXJrZXJz
SW50ZXJzZWN0aW5nUmFuZ2Uod29yZFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6UmVwbGFj
ZW1lbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGF0
aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9E
aWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42N2VlMmE5MzBiMmI1
NjYzYjU5M2RlOTFjNDY2YjQ1Yjg1NDU4MGRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmgKQEAgLTAs
MCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250
cm9sbGVyX2gKKyNkZWZpbmUgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyX2gKKworI2lu
Y2x1ZGUgIkFsdGVybmF0aXZlVGV4dENsaWVudC5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgor
I2luY2x1ZGUgIlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgVVNFKERJQ1RBVElPTl9B
TFRFUk5BVElWRVMpCitPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKK09CSkNfQ0xBU1Mg
TlNWaWV3OworCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBEaWN0YXRpb25Db250ZXh0Q29u
dHJvbGxlcjsKKworY2xhc3MgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyIHsKK3B1Ymxp
YzoKKyAgICBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIoKSB7IH0KKyAgICAvLyBSZXR1
cm5zIGEgZGljdGF0aW9uIGNvbnRleHQgSUQuCisgICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVz
KGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7CisgICAgdm9pZCBjbGVhcigp
OworICAgIHZvaWQgc2hvd0FsdGVybmF0aXZlcyhOU1ZpZXcqLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFN0cmluZywgdWludDY0X3QgZGljdGF0aW9uQ29u
dGV4dCwgdm9pZCheYWNjZXB0YW5jZUhhbmRsZXIpKE5TU3RyaW5nKikpOworICAgIHZvaWQgZGlz
bWlzc0FsdGVybmF0aXZlcygpOworICAgIHZvaWQgcmVtb3ZlQWx0ZXJuYXRpdmVzKHVpbnQ2NF90
IGRpY3RhdGlvbkNvbnRleHQpOworCitwcml2YXRlOgorICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRB
bHRlcm5hdGl2ZShOU1N0cmluZyogYWNjZXB0ZWRBbHRlcm5hdGl2ZSwgdWludDY0X3QgZGljdGF0
aW9uQ29udGV4dCwgTlNUZXh0QWx0ZXJuYXRpdmVzKik7CisKKyAgICBjbGFzcyBEaWN0YXRpb25D
b250ZXh0Q29udHJvbGxlciB7CisgICAgcHVibGljOgorICAgICAgICBEaWN0YXRpb25Db250ZXh0
Q29udHJvbGxlcigpIHsgfQorICAgICAgICB1aW50NjRfdCBhZGRBbHRlcm5hdGl2ZXMoY29uc3Qg
UmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKKyAgICAgICAgdm9pZCBjbGVhcigpOwor
ICAgICAgICBOU1RleHRBbHRlcm5hdGl2ZXMqIGFsdGVybmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRl
eHQodWludDY0X3QgZGljdGF0aW9uQ29udGV4dCk7CisgICAgICAgIHZvaWQgcmVtb3ZlQWx0ZXJu
YXRpdmVzRm9yRGljdGF0aW9uQ29udGV4dCh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGludmFsaWRDb250ZXh0ID0gMDsKKyAgICBwcml2
YXRlOgorICAgICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJldGFpblB0cjxOU1RleHRB
bHRlcm5hdGl2ZXM+ID4gSGFzaE1hcFR5cGU7CisgICAgICAgIEhhc2hNYXBUeXBlIG1fYWx0ZXJu
YXRpdmVzT2JqZWN0TWFwOworICAgIH07CisKKyAgICBEaWN0YXRpb25Db250ZXh0Q29udHJvbGxl
ciBtX2NvbnRleHRDb250cm9sbGVyOworICAgIFJldGFpblB0cjxOU1ZpZXc+IG1fdmlldzsKK307
Cit9CisjZW5kaWYKKyNlbmRpZiAvLyBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXJfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGF0aW9uQWx0ZXJuYXRp
dmVDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGF0aW9uQWx0
ZXJuYXRpdmVDb250cm9sbGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwZThjMzU4NTA2NjIzYmM4NGI1ZDBh
ZWZjOTIzMzkxMGFiYjczYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9EaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIubW0KQEAgLTAsMCArMSwxMTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkRpY3RhdGlvbkFs
dGVybmF0aXZlQ29udHJvbGxlci5oIgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMp
CisKKyNpbXBvcnQgPEFwcEtpdC9OU1NwZWxsQ2hlY2tlci5oPgorI2ltcG9ydCA8QXBwS2l0L05T
VGV4dEFsdGVybmF0aXZlcy5oPgorI2ltcG9ydCA8QXBwS2l0L05TVmlldy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7Cit1aW50NjRfdCBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OkRp
Y3RhdGlvbkNvbnRleHRDb250cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRy
PE5TVGV4dEFsdGVybmF0aXZlcz4mIGFsdGVybmF0aXZlcykKK3sKKyAgICB1aW50NjRfdCBjb250
ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGFsdGVybmF0aXZlcy5nZXQoKSk7Cisg
ICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm4gaW52YWxpZENvbnRleHQ7CisgICAgaWYg
KGFsdGVybmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRleHQoY29udGV4dCkpCisgICAgICAgIHJldHVy
biBjb250ZXh0OworCisgICAgSGFzaE1hcFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2FsdGVy
bmF0aXZlc09iamVjdE1hcC5hZGQoY29udGV4dCwgYWx0ZXJuYXRpdmVzKTsKKyAgICByZXR1cm4g
cmVzdWx0LmlzTmV3RW50cnkgPyBjb250ZXh0IDogaW52YWxpZENvbnRleHQ7Cit9CisKK05TVGV4
dEFsdGVybmF0aXZlcyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpEaWN0YXRpb25D
b250ZXh0Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yRGljdGF0aW9uQ29udGV4dCh1aW50NjRf
dCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIEhhc2hNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBp
dHIgPSBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5maW5kKGRpY3RhdGlvbkNvbnRleHQpOworICAg
IGlmIChpdHIgPT0gbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuZW5kKCkpCisgICAgICAgIHJldHVy
biBOVUxMOworICAgIHJldHVybiBpdHItPnNlY29uZC5nZXQoKTsKK30KKwordm9pZCBEaWN0YXRp
b25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OkRpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyOjpyZW1v
dmVBbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRl
eHQpCit7CisgICAgbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAucmVtb3ZlKGRpY3RhdGlvbkNvbnRl
eHQpOworfQorCit2b2lkIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9u
Q29udGV4dENvbnRyb2xsZXI6OmNsZWFyKCkKK3sKKyAgICBtX2FsdGVybmF0aXZlc09iamVjdE1h
cC5jbGVhcigpOworfQorCit1aW50NjRfdCBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6
OmFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYgYWx0
ZXJuYXRpdmVzKQoreworICAgIHJldHVybiBtX2NvbnRleHRDb250cm9sbGVyLmFkZEFsdGVybmF0
aXZlcyhhbHRlcm5hdGl2ZXMpOworfQorCit2b2lkIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJv
bGxlcjo6Y2xlYXIoKQoreworICAgIHJldHVybiBtX2NvbnRleHRDb250cm9sbGVyLmNsZWFyKCk7
Cit9CisKK3ZvaWQgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpzaG93QWx0ZXJuYXRp
dmVzKE5TVmlldyogdmlldywgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9m
RGljdGF0ZWRTdHJpbmcsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQsIHZvaWQoXmFjY2VwdGFu
Y2VIYW5kbGVyKShOU1N0cmluZyopKQoreworICAgIGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKKyAg
ICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybjsKKyAgICBtX3ZpZXcgPSB2aWV3OworICAgIE5T
VGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVzID0gbV9jb250ZXh0Q29udHJvbGxlci5hbHRl
cm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KGRpY3RhdGlvbkNvbnRleHQpOworICAgIGlmICgh
YWx0ZXJuYXRpdmVzKQorICAgICAgICByZXR1cm47CisgICAgTlNTcGVsbENoZWNrZXIqIHNwZWxs
Q2hlY2tlciA9IFtOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdOworICAgIFtzcGVs
bENoZWNrZXIgc2hvd0NvcnJlY3Rpb25JbmRpY2F0b3JPZlR5cGU6TlNDb3JyZWN0aW9uSW5kaWNh
dG9yVHlwZUd1ZXNzZXMgcHJpbWFyeVN0cmluZzphbHRlcm5hdGl2ZXMucHJpbWFyeVN0cmluZyBh
bHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVzLmFsdGVybmF0aXZlU3RyaW5ncyBmb3JTdHJp
bmdJblJlY3Q6Ym91bmRpbmdCb3hPZkRpY3RhdGVkU3RyaW5nIHZpZXc6bV92aWV3LmdldCgpIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcqIGFjY2VwdGVkU3RyaW5nKSB7CisgICAgICAgIGlm
IChhY2NlcHRlZFN0cmluZykgeworICAgICAgICAgICAgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2
ZShhY2NlcHRlZFN0cmluZywgZGljdGF0aW9uQ29udGV4dCwgYWx0ZXJuYXRpdmVzKTsKKyAgICAg
ICAgICAgIGFjY2VwdGFuY2VIYW5kbGVyKGFjY2VwdGVkU3RyaW5nKTsKKyAgICAgICAgfQorICAg
IH1dOworfQorCit2b2lkIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6aGFuZGxlQWNj
ZXB0ZWRBbHRlcm5hdGl2ZShOU1N0cmluZyogYWNjZXB0ZWRBbHRlcm5hdGl2ZSwgdWludDY0X3Qg
ZGljdGF0aW9uQ29udGV4dCwgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZXMpCit7Cisg
ICAgW2FsdGVybmF0aXZlcyBub3RlU2VsZWN0ZWRBbHRlcm5hdGl2ZVN0cmluZzphY2NlcHRlZEFs
dGVybmF0aXZlXTsKKyAgICBtX2NvbnRleHRDb250cm9sbGVyLnJlbW92ZUFsdGVybmF0aXZlc0Zv
ckRpY3RhdGlvbkNvbnRleHQoZGljdGF0aW9uQ29udGV4dCk7CisgICAgbV92aWV3LmNsZWFyKCk7
Cit9CisKK3ZvaWQgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpkaXNtaXNzQWx0ZXJu
YXRpdmVzKCkKK3sKKyAgICBpZiAoIW1fdmlldykKKyAgICAgICAgcmV0dXJuOworICAgIFtbTlNT
cGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBkaXNtaXNzQ29ycmVjdGlvbkluZGljYXRv
ckZvclZpZXc6bV92aWV3LmdldCgpXTsKK30KKwordm9pZCBEaWN0YXRpb25BbHRlcm5hdGl2ZUNv
bnRyb2xsZXI6OnJlbW92ZUFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQor
eworICAgIG1fY29udGV4dENvbnRyb2xsZXIucmVtb3ZlQWx0ZXJuYXRpdmVzRm9yRGljdGF0aW9u
Q29udGV4dChkaWN0YXRpb25Db250ZXh0KTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVmMDQyMmRjZDVlOWU1ZjYxMjcxYmMwZTE1ZWRmY2YzMmZkMzgwMzEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRo
UmFuZ2UuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2VfaAorI2RlZmluZSBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VfaAorCisj
aW5jbHVkZSAiQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCitPQkpDX0NMQVNTIE5TVGV4
dEFsdGVybmF0aXZlczsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisjaWYgVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCitzdHJ1Y3QgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlIHsK
KyAgICBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UoTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbkFsdGVy
bmF0aXZlLCBOU1JhbmdlIGFSYW5nZSkKKyAgICA6IHJhbmdlKGFSYW5nZSkKKyAgICAsIGFsdGVy
bmF0aXZlKGFuQWx0ZXJuYXRpdmUpCisgICAgeyB9CisKKyAgICBOU1JhbmdlIHJhbmdlOworICAg
IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+IGFsdGVybmF0aXZlOworfTsKKwordm9pZCBj
b2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlcyhOU0F0dHJpYnV0ZWRTdHJpbmcqLCBWZWN0
b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgYWx0ZXJuYXRpdmVzKTsKKyNlbHNlCitzdHJ1
Y3QgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlIHsgfTsKKyNlbmRpZgorCit9CisKKyNlbmRpZiAv
LyBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkMWQ2
Y2QyY2I3YTA4MGUxZjU3ZWFkZjViNmMwN2RjMjE1Y2M3YjEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0KQEAg
LTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCIKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJO
QVRJVkVTKQorI2ltcG9ydCA8QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7Cit2b2lkIGNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzKE5TQXR0
cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYg
YWx0ZXJuYXRpdmVzKSB7CisgICAgTlNSYW5nZSBlZmZlY3RpdmVSYW5nZSA9IE5TTWFrZVJhbmdl
KDAsIDApOworICAgIE5TVUludGVnZXIgbGVuZ3RoID0gW3N0cmluZyBsZW5ndGhdOworICAgIGRv
IHsKKyAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW3N0cmluZyBhdHRyaWJ1dGVz
QXRJbmRleDplZmZlY3RpdmVSYW5nZS5sb2NhdGlvbiBlZmZlY3RpdmVSYW5nZTomZWZmZWN0aXZl
UmFuZ2VdOworICAgICAgICBpZiAoIWF0dHJpYnV0ZXMpCisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgTlNUZXh0QWx0ZXJuYXRpdmVzICp0ZXh0QWx0ZXJuYXRpdmVzID0gW2F0dHJpYnV0ZXMg
b2JqZWN0Rm9yS2V5Ok5TVGV4dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5hbWVdOworICAgICAgICBp
ZiAodGV4dEFsdGVybmF0aXZlcykKKyAgICAgICAgICAgIGFsdGVybmF0aXZlcy5hcHBlbmQoVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlKHRleHRBbHRlcm5hdGl2ZXMsIGVmZmVjdGl2ZVJhbmdlKSk7
CisgICAgICAgIGVmZmVjdGl2ZVJhbmdlLmxvY2F0aW9uID0gTlNNYXhSYW5nZShlZmZlY3RpdmVS
YW5nZSk7CisgICAgfSB3aGlsZSAoZWZmZWN0aXZlUmFuZ2UubG9jYXRpb24gPCBsZW5ndGgpOwor
fQorfTsKKworI2VuZGlmIC8vIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggZjVhZTY3ZDBlZDlmZGM2
ZmJmNDcwNzM3NjY2M2I5MmFjOTMxNWNiYy4uZTk5OWQwNTZkMjljM2NjNTQ0Y2Q2ZDZhMjM1ZjAz
ODgwNmEzMzM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRl
eHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0aXZlVGV4dENsaWVu
dC5oCkBAIC0zMSw2ICszMSwxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQo
QlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJE
KSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MSU9OKQorLy8gU29tZSBwbGF0Zm9ybXMgcHJvdmlk
ZSBVSSBmb3Igc3VnZ2VzdGluZyBhbHRlcm5hdGl2ZSBkaWN0YXRpb24gdGV4dC4KKyNkZWZpbmUg
V1RGX1VTRV9ESUNUQVRJT05fQUxURVJOQVRJVkVTIDEKKyNlbmRpZiAvLyBQTEFURk9STShNQUMp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1NOT1dfTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTElPTikKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBlbnVtIFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQgewpA
QCAtNTcsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NBbHRlcm5h
dGl2ZShSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSA9IDA7CiAgICAgdmlydHVh
bCBTdHJpbmcgZGlzbWlzc0FsdGVybmF0aXZlU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJu
YXRpdmVUZXh0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRl
eHQpID0gMDsKIH07CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0KaW5kZXggNjU4M2NlZTY2MjExMTA3NmMxZTAyNDcy
NmVlY2JiMGE4ZjU0MDc5MC4uNjgxMGEyNzgwYjlmMzk2ZGEwZDMyMmJkNjNhY2Y2MDEyYTllMzA4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlv
blBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rp
b25QYW5lbC5tbQpAQCAtMjUsNyArMjUsNiBAQAogI2ltcG9ydCAiQ29ycmVjdGlvblBhbmVsLmgi
CiAKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgotI2ltcG9ydCAiV2ViVmlld1ByaXZhdGUu
aCIKIAogI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwpAQCAtMTMxLDcgKzEzMCw3IEBAIHZvaWQgQ29ycmVjdGlvblBhbmVsOjpoYW5kbGVBY2Nl
cHRlZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJlcGxhY2VtZW50LCBOCiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICAKLSAgICBbbV92aWV3LmdldCgpIGhhbmRsZUNvcnJlY3Rpb25Q
YW5lbFJlc3VsdDphY2NlcHRlZFJlcGxhY2VtZW50XTsKKyAgICBbbV92aWV3LmdldCgpIGhhbmRs
ZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0OmFjY2VwdGVkUmVwbGFjZW1lbnRdOwogICAgIG1fdmll
dy5jbGVhcigpOwogICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQogICAgICAgICBtX3Jlc3Vs
dEZvckRpc21pc3NhbC5hZG9wdE5TKFthY2NlcHRlZFJlcGxhY2VtZW50IGNvcHldKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4
dENsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50LmgKaW5kZXggN2VkZmFjZTBhZTM0NjgxNDE5N2NkYjE1NmQ2YmIzNmNkNmIx
ZDFkNy4uZjRjMmJmNTcyMDU5MzJlYjhjZTIyMzI1Yjg0ODJjOWEzZTdjYWU0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50LmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaXNtaXNzQWx0ZXJuYXRpdmUoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0
aXZlVGV4dCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0FsdGVybmF0aXZl
U29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShXZWJDb3Jl
OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250
ZXh0KSBPVkVSUklERTsKIHByaXZhdGU6CiAgICAgV2ViVmlldyogbV93ZWJWaWV3OwogI2lmIFVT
RShBVVRPQ09SUkVDVElPTl9QQU5FTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbQppbmRleCA2OTcy
ZmI0YmE5MzJlMjRjZGJiMDQ5OWNlNDhlZjZlYTI0ZWQ1MmNkLi40YmRiOTQyMzY2YzM2ZDNmZGZi
ZjZjMGRkNzM5NzBkMGMwZjYyMDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tCkBAIC0yNSw2
ICsyNSw4IEBACiAKICNpbmNsdWRlICJXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKIAorI2lu
Y2x1ZGUgIldlYlZpZXdJbnRlcm5hbC5oIgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoV2ViVmll
dyogd2ViVmlldykKQEAgLTY5LDMgKzcxLDEwIEBAIHZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uCiBD
b3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UobV93ZWJWaWV3LCBy
ZXNwb25zZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKTsKICNlbmRpZgogfQor
Cit2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRp
dmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRF
Uk5BVElWRVMpCisgICAgW21fd2ViVmlldyBfcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOmRp
Y3RhdGlvbkNvbnRleHRdOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQppbmRleCBhOWIyOTFlNDk5ZjgwMjk3Y2M3NTY3OWYzOTBlZjZiZGUwNjFjNGE0
Li5jODYxMWZkNDhkMmU1YjQ2NTFjMWEyOGY5OWU3MzgwYThjZWIzNTlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTExMyw2ICsxMTMsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9TaW1wbGVGb250RGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVByb3Bl
cnR5U2V0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0
cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkZvbnRDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaD4KQEAgLTU5MDQsNyArNTkwNSwxNCBAQCBz
dGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywg
VmVjdG9yPENvbXBvc2l0aW9uVW5kZQogICAgIE5TUmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSA9IHsg
TlNOb3RGb3VuZCwgMCB9OwogICAgIGJvb2wgaXNGcm9tSW5wdXRNZXRob2QgPSBjb3JlRnJhbWUg
JiYgY29yZUZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKTsKIAorICAgIFZlY3RvcjxE
aWN0YXRpb25BbHRlcm5hdGl2ZT4gZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnM7CiAgICAg
aWYgKGlzQXR0cmlidXRlZFN0cmluZykgeworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVT
KQorICAgICAgICBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiB0ZXh0QWx0ZXJuYXRp
dmVzOworICAgICAgICBjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlcyhzdHJpbmcsIHRl
eHRBbHRlcm5hdGl2ZXMpOworICAgICAgICBpZiAodGV4dEFsdGVybmF0aXZlcy5zaXplKCkpCisg
ICAgICAgICAgICBbW3NlbGYgX3dlYlZpZXddIF9nZXRXZWJDb3JlRGljdGF0aW9uQWx0ZXJuYXRp
dmVzOmRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zIGZyb21UZXh0QWx0ZXJuYXRpdmVzOnRl
eHRBbHRlcm5hdGl2ZXNdOworI2VuZGlmCiAgICAgICAgIC8vIEZJWE1FOiBXZSBpZ25vcmUgbW9z
dCBhdHRyaWJ1dGVzIGZyb20gdGhlIHN0cmluZywgc28gZm9yIGV4YW1wbGUgaW5zZXJ0aW5nIGZy
b20gQ2hhcmFjdGVyIFBhbGV0dGUgbG9zZXMgZm9udCBhbmQgZ2x5cGggdmFyaWF0aW9uIGRhdGEu
CiAgICAgICAgIC8vIEl0IGRvZXMgbm90IGxvb2sgbGlrZSBhbnkgaW5wdXQgbWV0aG9kcyBldmVy
IHVzZSBpbnNlcnRUZXh0OiB3aXRoIGF0dHJpYnV0ZXMgb3RoZXIgdGhhbiBOU1RleHRJbnB1dFJl
cGxhY2VtZW50UmFuZ2VBdHRyaWJ1dGVOYW1lLgogICAgICAgICB0ZXh0ID0gW3N0cmluZyBzdHJp
bmddOwpAQCAtNTk0Myw3ICs1OTUxLDExIEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVz
KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAgICAg
aWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKSB7CiAgICAgICAgIC8v
IEFuIGluc2VydFRleHQ6IG1pZ2h0IGJlIGhhbmRsZWQgYnkgb3RoZXIgcmVzcG9uZGVycyBpbiB0
aGUgY2hhaW4gaWYgd2UgZG9uJ3QgaGFuZGxlIGl0LgogICAgICAgICAvLyBPbmUgZXhhbXBsZSBp
cyBzcGFjZSBiYXIgdGhhdCByZXN1bHRzIGluIHNjcm9sbGluZyBkb3duIHRoZSBwYWdlLgotICAg
ICAgICBldmVudEhhbmRsZWQgPSBjb3JlRnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGV2ZW50
VGV4dCwgZXZlbnQpOworCisgICAgICAgIGlmIChkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9u
cy5zaXplKCkpCisgICAgICAgICAgICBldmVudEhhbmRsZWQgPSBjb3JlRnJhbWUtPmVkaXRvcigp
LT5pbnNlcnREaWN0YXRlZFRleHQoZXZlbnRUZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0
aW9ucywgZXZlbnQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBldmVudEhhbmRsZWQgPSBj
b3JlRnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGV2ZW50VGV4dCwgZXZlbnQpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIGV2ZW50SGFuZGxlZCA9IHRydWU7CiAgICAgICAgIGNvcmVGcmFtZS0+
ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbihldmVudFRleHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCmluZGV4IDRmYjVkZjk1ZGVkZDNiNWJlMmZiMWU0MDY5ZmI4MTQ5YWMx
OTk0NDIuLjRiYzRjNzUyYTgwOThiYmEyNjJlZTdjZWU3NjE2Y2ZmZjgyYTJhNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTExNSw2ICsxMTUsNyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9Db2xvck1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvQ3Vyc29yLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1
bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9EcmFnQ29udHJvbGxlci5oPgpAQCAtMTYyLDYgKzE2Myw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5UG9saWN5Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1RleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0UmVzb3VyY2VEZWNvZGVy
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YkNvcmVPYmpDRXh0cmFzLmg+CkBAIC01NDk5LDE2ICs1NTAxLDYgQEAgc3RhdGljIE5TQXBwbGVF
dmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBqc1ZhbHUKIAogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0tICh2b2lkKWhhbmRsZUNvcnJl
Y3Rpb25QYW5lbFJlc3VsdDooTlNTdHJpbmcqKXJlc3VsdAotewotICAgIFdlYkZyYW1lICp3ZWJG
cmFtZSA9IFtzZWxmIF9zZWxlY3RlZE9yTWFpbkZyYW1lXTsKLSAgICBGcmFtZSogY29yZUZyYW1l
ID0gY29yZSh3ZWJGcmFtZSk7Ci0gICAgaWYgKGNvcmVGcmFtZSkKLSAgICAgICAgY29yZUZyYW1l
LT5lZGl0b3IoKS0+aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0KTsKLX0KLSNl
bmRpZgotCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJWaWV3IChXZWJWaWV3VW5kb2FibGVF
ZGl0aW5nKQpAQCAtNjM2OCw2ICs2MzYwLDMzIEBAIHN0YXRpYyB2b2lkIGdsaWJDb250ZXh0SXRl
cmF0aW9uQ2FsbGJhY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5CiB9
CiAjZW5kaWYKIAorI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKy0gKHZvaWQpaGFuZGxl
QWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6KE5TU3RyaW5nKil0ZXh0Cit7CisgICAgV2ViRnJhbWUg
KndlYkZyYW1lID0gW3NlbGYgX3NlbGVjdGVkT3JNYWluRnJhbWVdOworICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBjb3JlKHdlYkZyYW1lKTsKKyAgICBpZiAoY29yZUZyYW1lKQorICAgICAgICBjb3Jl
RnJhbWUtPmVkaXRvcigpLT5oYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdCh0ZXh0KTsKK30K
KyNlbmRpZgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCistICh2b2lkKV9nZXRX
ZWJDb3JlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOihWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+
JilhbHRlcm5hdGl2ZXMgZnJvbVRleHRBbHRlcm5hdGl2ZXM6KGNvbnN0IFZlY3RvcjxUZXh0QWx0
ZXJuYXRpdmVXaXRoUmFuZ2U+JilhbHRlcm5hdGl2ZXNXaXRoUmFuZ2UKK3sKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGFsdGVybmF0aXZlc1dpdGhSYW5nZS5zaXplKCk7ICsraSkgeworICAg
ICAgICBjb25zdCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UmIGFsdGVybmF0aXZlV2l0aFJhbmdl
ID0gYWx0ZXJuYXRpdmVzV2l0aFJhbmdlW2ldOworICAgICAgICB1aW50NjRfdCBkaWN0YXRpb25D
b250ZXh0ID0gX3ByaXZhdGUtPm1fZGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLT5hZGRB
bHRlcm5hdGl2ZXMoYWx0ZXJuYXRpdmVXaXRoUmFuZ2UuYWx0ZXJuYXRpdmUpOworICAgICAgICBp
ZiAoZGljdGF0aW9uQ29udGV4dCkKKyAgICAgICAgICAgIGFsdGVybmF0aXZlcy5hcHBlbmQoRGlj
dGF0aW9uQWx0ZXJuYXRpdmUoYWx0ZXJuYXRpdmVXaXRoUmFuZ2UucmFuZ2UubG9jYXRpb24sIGFs
dGVybmF0aXZlV2l0aFJhbmdlLnJhbmdlLmxlbmd0aCwgZGljdGF0aW9uQ29udGV4dCkpOworICAg
IH0KK30KKworLSAodm9pZClfcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOih1aW50NjRfdClk
aWN0YXRpb25Db250ZXh0Cit7CisgICAgX3ByaXZhdGUtPm1fZGljdGF0aW9uQWx0ZXJuYXRpdmVD
b250cm9sbGVyLT5yZW1vdmVBbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCk7Cit9CisjZW5k
aWYKKwogLSAoTlNQb2ludClfY29udmVydFBvaW50RnJvbVJvb3RWaWV3OihOU1BvaW50KXBvaW50
CiB7CiAgICAgcmV0dXJuIE5TTWFrZVBvaW50KHBvaW50LngsIFtzZWxmIGJvdW5kc10uc2l6ZS5o
ZWlnaHQgLSBwb2ludC55KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld0RhdGEuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaApp
bmRleCBlYTJiZmNmNjA3NGU5YTUxMWMzYzNlYWUyZGI0ZmY1ZTVlYzNjNGY2Li5kMzg0Zjg3Yzdm
YTNhMTM4NDk2MWM1MzhlZGIyZWRkZmJlY2M1YmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3RGF0YS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbXBvcnQgIldlYlR5cGVzSW50
ZXJuYWwuaCIKICNpbXBvcnQgIldlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgiCisj
aW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9MYXllckZsdXNoU2NoZWR1bGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xheWVyRmx1c2hTY2hl
ZHVsZXJDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TdHJpbmcuaD4KQEAgLTM4
LDggKzM5LDkgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotICAgIGNsYXNzIEhpc3RvcnlJdGVtOwotICAgIGNsYXNzIFBhZ2U7CitjbGFzcyBEaWN0
YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI7CitjbGFzcyBIaXN0b3J5SXRlbTsKK2NsYXNzIFBh
Z2U7CiB9CiAKIEBjbGFzcyBXZWJJbnNwZWN0b3I7CkBAIC0yMDAsNSArMjAyLDkgQEAgcHJpdmF0
ZToKICAgICBpbnQgdmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb247CiAKICAgICBm
bG9hdCBjdXN0b21EZXZpY2VTY2FsZUZhY3RvcjsKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJO
QVRJVkVTKQorICAgIE93blB0cjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xs
ZXI+IG1fZGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOworI2VuZGlmCiB9CiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQppbmRleCAwYjgxMTdhMDk3MDZk
NWI2ZWM0ZTY0NTdjMzM5OGU0NzYyNmM1OGJhLi45MGFjZTEzODFlOTFkMzc4NWI0ZTJjZjc3ODdl
NTVhNzBjMGQyYzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdEYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0K
QEAgLTMxLDYgKzMxLDcgQEAKIAogI2ltcG9ydCAiV2ViS2l0TG9nZ2luZy5oIgogI2ltcG9ydCAi
V2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgiCisjaW1wb3J0IDxXZWJDb3JlL0RpY3RhdGlvbkFs
dGVybmF0aXZlQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJh
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9S
dW5Mb29wLmg+CkBAIC0xMDAsNiArMTAxLDEwIEBAIExheWVyRmx1c2hDb250cm9sbGVyOjpMYXll
ckZsdXNoQ29udHJvbGxlcihXZWJWaWV3KiB3ZWJWaWV3KQogCiAgICAgcGx1Z2luRGF0YWJhc2VD
bGllbnRDb3VudCsrOwogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgbV9k
aWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgV2ViQ29yZTo6RGlj
dGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHNlbGY7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVy
bmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4
IDAyY2M1NTAxMDZiMDQ0ZmJjMTc3YzlmNTlhMWY4M2Y1OTBkZTUwYjAuLmMyMGRkOTM3YjEyYmRk
MWM4ZjI5ZmI0ZjQ3N2FiNjc3MWU0YmExNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtMzQsMjAgKzM0LDI2IEBACiAjaW1wb3J0ICJXZWJUeXBl
c0ludGVybmFsLmgiCiAKICNpZmRlZiBfX2NwbHVzcGx1cworI2ltcG9ydCA8V2ViQ29yZS9BbHRl
cm5hdGl2ZVRleHRDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmluZE9wdGlvbnMuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVLZXli
b2FyZFVJTW9kZS5oPgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBFbGVtZW50Owot
ICAgIGNsYXNzIEZyYW1lOwotICAgIGNsYXNzIEhpc3RvcnlJdGVtOwotICAgIGNsYXNzIEtVUkw7
Ci0gICAgY2xhc3MgS2V5Ym9hcmRFdmVudDsKLSAgICBjbGFzcyBQYWdlOwotICAgIGNsYXNzIFJl
bmRlckJveDsKLSAgICBjbGFzcyBOb2RlOworY2xhc3MgRWxlbWVudDsKK2NsYXNzIEV2ZW50Owor
Y2xhc3MgRnJhbWU7CitjbGFzcyBIaXN0b3J5SXRlbTsKK2NsYXNzIEtVUkw7CitjbGFzcyBLZXli
b2FyZEV2ZW50OworY2xhc3MgUGFnZTsKK2NsYXNzIFJlbmRlckJveDsKK2NsYXNzIE5vZGU7Citz
dHJ1Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmU7CitzdHJ1Y3QgVGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlOwogfQogI2VuZGlmCiAKQEAgLTk1LDYgKzEwMSwxNSBAQCBXZWJDb3JlOjpGaW5kT3B0aW9u
cyBjb3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyBvcHRpb25zKTsKIC0gKHZvaWQpX3NjaGVkdWxl
R2xpYkNvbnRleHRJdGVyYXRpb25zOwogI2VuZGlmCiAKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05f
UEFORUwpCistICh2b2lkKWhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0OihOU1N0cmluZyop
dGV4dDsKKyNlbmRpZgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCistICh2b2lk
KV9nZXRXZWJDb3JlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOihWZWN0b3I8V2ViQ29yZTo6RGljdGF0
aW9uQWx0ZXJuYXRpdmU+JilhbHRlcm5hdGl2ZXMgZnJvbVRleHRBbHRlcm5hdGl2ZXM6KGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JilhbHRlcm5hdGl2ZXNX
aXRoUmFuZ2U7CistICh2b2lkKV9yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6KHVpbnQ2NF90
KWRpY3RhdGlvbkNvbnRleHQ7CisjZW5kaWYKKwogQGVuZAogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRleCAwMmY3YmNjNDU2N2Q3NjVjN2Jk
M2E0MzRmMjU3MjZhNjEwM2UzMTMwLi44Mjg5YjEyYzE4OGJlZGFmMDUxMDQ2ZmE2ODIyMjc1MmVl
OThkZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCkBA
IC02ODcsOSArNjg3LDYgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAtICh2
b2lkKXNldEF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ6KEJPT0wpZmxhZzsKIC0g
KHZvaWQpdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uOihpZClzZW5kZXI7CiAjZW5k
aWYKLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElO
R19PTl9TTk9XX0xFT1BBUkQpCi0tICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDoo
TlNTdHJpbmcqKXJlc3VsdDsKLSNlbmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdl
YlZpZXdFZGl0aW5nSW5NYWlsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcAppbmRleCBjNmExNjczYjRjZDQ1NDI0MTM5MGZiYTllNmI4YjU1N2Iy
YzI1MGQzLi43Y2U3YmE1MWMwMWYwYTY0YTExMDgxMzUyZDYyZDdmYjM5NmUwZjgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQ3Vyc29yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZURldGFpbHMuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0RpY3RhdGlvbkFsdGVybmF0aXZlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EcmFnU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GaWxlQ2hvb3Nlci5oPgpAQCAtNTMxLDYgKzUzMiwyNCBAQCBib29sIEFyZ3VtZW50
Q29kZXI8RGF0YWJhc2VEZXRhaWxzPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2Rlciwg
RGF0YWJhc2VEZQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8RGlj
dGF0aW9uQWx0ZXJuYXRpdmU+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25z
dCBEaWN0YXRpb25BbHRlcm5hdGl2ZSYgZGljdGF0aW9uQWx0ZXJuYXRpdmUpCit7CisgICAgZW5j
b2Rlci0+ZW5jb2RlKGRpY3RhdGlvbkFsdGVybmF0aXZlLnJhbmdlU3RhcnQpOworICAgIGVuY29k
ZXItPmVuY29kZShkaWN0YXRpb25BbHRlcm5hdGl2ZS5yYW5nZUxlbmd0aCk7CisgICAgZW5jb2Rl
ci0+ZW5jb2RlKGRpY3RhdGlvbkFsdGVybmF0aXZlLmRpY3RhdGlvbkNvbnRleHQpOworfQorCiti
b29sIEFyZ3VtZW50Q29kZXI8RGljdGF0aW9uQWx0ZXJuYXRpdmU+OjpkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyKiBkZWNvZGVyLCBEaWN0YXRpb25BbHRlcm5hdGl2ZSYgZGljdGF0aW9uQWx0ZXJuYXRp
dmUpCit7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZGljdGF0aW9uQWx0ZXJuYXRpdmUucmFu
Z2VTdGFydCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29k
ZShkaWN0YXRpb25BbHRlcm5hdGl2ZS5yYW5nZUxlbmd0aCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShkaWN0YXRpb25BbHRlcm5hdGl2ZS5kaWN0YXRp
b25Db250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQor
CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxGaWxlQ2hvb3NlclNldHRpbmdzPjo6ZW5jb2RlKEFyZ3Vt
ZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgRmlsZUNob29zZXJTZXR0aW5ncyYgc2V0dGluZ3Mp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5k
ZXggMDMzZTE3OTRjYmMyN2Q4Y2Q3OTg5ODA2YmFjMjNiODgxOTJiM2RkOC4uZDAyOWU2NWU1OGQy
Mzg3MGVmNDhjYjE5ZjljMmUyMmI0ZjBjOTkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNTAsNiArNTAsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogICAgIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiAgICAgc3RydWN0IENvbXBvc2l0aW9uVW5kZXJsaW5lOworICAgIHN0cnVjdCBEaWN0
YXRpb25BbHRlcm5hdGl2ZTsKICAgICBzdHJ1Y3QgRHJhZ1Nlc3Npb247CiAgICAgc3RydWN0IEZp
bGVDaG9vc2VyU2V0dGluZ3M7CiAgICAgc3RydWN0IEdyYW1tYXJEZXRhaWw7CkBAIC0yMDMsNiAr
MjA0LDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RGF0YWJh
c2VEZXRhaWxzPiB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdl
YkNvcmU6OkRhdGFiYXNlRGV0YWlscyYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4geworICAgIHN0YXRpYyB2b2lk
IGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5h
dGl2ZSYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3Jl
OjpEaWN0YXRpb25BbHRlcm5hdGl2ZSYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzPiB7CiAgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGlu
Z3MmKTsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6
RmlsZUNob29zZXJTZXR0aW5ncyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggYTlkN2E5ZmE5NDZjOTdjODM4NzM5Y2IwNmU0
ZDJlMjQ0OGY1MGI2YS4uNTIzOWIwMWVkNjIzOTZiMDcwNTg4YjNkMjM2NzlmNmI3MTRjODE0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudElt
cGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1w
bC5oCkBAIC0zMCw2ICszMCwxMiBAQAogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyNpZiBVU0UoRElDVEFU
SU9OX0FMVEVSTkFUSVZFUykKK2NsYXNzIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjsK
KyNlbmRpZgorfQorCiBAY2xhc3MgV0tFZGl0b3JVbmRvVGFyZ2V0T2JqQzsKIEBjbGFzcyBXS1Zp
ZXc7CiAKQEAgLTEyOSwxMSArMTM1LDE3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFdLVmll
dyogd2tWaWV3KCkgY29uc3QgeyByZXR1cm4gbV93a1ZpZXc7IH0KIAorICAgIHZpcnR1YWwgdWlu
dDY0X3QgYWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRl
cm5hdGl2ZXM+Jik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZl
cyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKKwogICAgIFdLVmlldyogbV93a1ZpZXc7CiAg
ICAgUmV0YWluUHRyPFdLRWRpdG9yVW5kb1RhcmdldE9iakM+IG1fdW5kb1RhcmdldDsKICNpZiAh
ZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAgICAgQ29ycmVjdGlvblBhbmVsIG1f
Y29ycmVjdGlvblBhbmVsOwogI2VuZGlmCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMp
CisgICAgT3duUHRyPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcj4gbV9k
aWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
UGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdl
Q2xpZW50SW1wbC5tbQppbmRleCA3MmVhMzQ5M2UxYTY3OTQzZDU2ZTdiNTVlOTQ3Y2IzMDlkNWMz
Zjg0Li45Y2RhZTE1NTgzNzM5ODM2YzkzMjUwNjUwNTJlNWM4NDE3NGZhZWIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQpAQCAt
MjYsNiArMjYsOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJQYWdlQ2xpZW50SW1w
bC5oIgogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisjaW1wb3J0IDxBcHBLaXQv
TlNUZXh0QWx0ZXJuYXRpdmVzLmg+CisjZW5kaWYKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbXBvcnQgIkRpY3Rpb25hcnlQb3B1cEluZm8uaCIKICNpbXBvcnQgIkZpbmRJbmRpY2F0b3Iu
aCIKQEAgLTM5LDYgKzQyLDcgQEAKICNpbXBvcnQgIldlYlBvcHVwTWVudVByb3h5TWFjLmgiCiAj
aW1wb3J0IDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0N1cnNvci5o
PgorI2ltcG9ydCA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvdW5kYXRpb25F
eHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CkBAIC0xMjIsNiAr
MTI2LDkgQEAgUGFzc093blB0cjxQYWdlQ2xpZW50SW1wbD4gUGFnZUNsaWVudEltcGw6OmNyZWF0
ZShXS1ZpZXcqIHdrVmlldykKIFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChXS1ZpZXcq
IHdrVmlldykKICAgICA6IG1fd2tWaWV3KHdrVmlldykKICAgICAsIG1fdW5kb1RhcmdldChBZG9w
dE5TLCBbW1dLRWRpdG9yVW5kb1RhcmdldE9iakMgYWxsb2NdIGluaXRdKQorI2lmIFVTRShESUNU
QVRJT05fQUxURVJOQVRJVkVTKQorICAgICwgbV9kaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xs
ZXIoYWRvcHRQdHIobmV3IERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcikpCisjZW5kaWYK
IHsKIH0KIApAQCAtMjA5LDEwICsyMTYsMTMgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cHJvY2Vz
c0RpZENyYXNoKCkKIHsKICAgICBbbV93a1ZpZXcgX3Byb2Nlc3NEaWRDcmFzaF07CiB9Ci0gICAg
CisKIHZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQoKQogewogICAgIFttX3drVmlldyBf
cGFnZUNsb3NlZF07CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgbV9kaWN0
YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXItPmNsZWFyKCk7CisjZW5kaWYKIH0KIAogdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkKQEAgLTUyOSw0ICs1MzksMjAgQEAg
Ym9vbCBQYWdlQ2xpZW50SW1wbDo6ZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29uc3Qg
U3RyaW5nJiBzZWxlY3RvclN0cmluZykKICAgICByZXR1cm4gW21fd2tWaWV3IF9leGVjdXRlU2F2
ZWRDb21tYW5kQnlTZWxlY3RvcjpOU1NlbGVjdG9yRnJvbVN0cmluZyhzZWxlY3RvclN0cmluZyld
OwogfQogCit1aW50NjRfdCBQYWdlQ2xpZW50SW1wbDo6YWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVz
KGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBhbHRlcm5hdGl2ZXMpCit7Cisj
aWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgcmV0dXJuIG1fZGljdGF0aW9uQWx0
ZXJuYXRpdmVDb250cm9sbGVyLT5hZGRBbHRlcm5hdGl2ZXMoYWx0ZXJuYXRpdmVzKTsKKyNlbHNl
CisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVtb3Zl
RGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisjaWYg
VVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgbV9kaWN0YXRpb25BbHRlcm5hdGl2ZUNv
bnRyb2xsZXItPnJlbW92ZUFsdGVybmF0aXZlcyhkaWN0YXRpb25Db250ZXh0KTsKKyNlbmRpZgor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlldy5tbQppbmRleCBjMzJmOTAwNDg5OTRkYmRiZWE0MzUwNzQyMzdhOTkxOTEzNjFh
MTk5Li40Mjg2YWE4YjlkMmI3NWY5NTJhNzI0ZTJkMzQ1YmFjM2FmMjMxOGZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0yNiw2ICsyNiwxMSBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS1ZpZXcuaCIKIAorI2lmIFVTRShESUNUQVRJ
T05fQUxURVJOQVRJVkVTKQorI2ltcG9ydCA8QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgor
I2ltcG9ydCA8QXBwS2l0L05TQXR0cmlidXRlZFN0cmluZy5oPgorI2VuZGlmCisKICNpbXBvcnQg
IkF0dHJpYnV0ZWRTdHJpbmcuaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQg
IkRyYXdpbmdBcmVhUHJveHlJbXBsLmgiCkBAIC03Myw2ICs3OCw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL1JlZ2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVXaXRo
UmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TU3RyaW5nRXh0cmFzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFj
ZS5oPgpAQCAtMTE2Nyw3ICsxMTczLDEyIEBAIHN0YXRpYyBjb25zdCBzaG9ydCBrSU9ISURFdmVu
dFR5cGVTY3JvbGwgPSA2OwogICAgIE5TU3RyaW5nICp0ZXh0OwogICAgIGJvb2wgaXNGcm9tSW5w
dXRNZXRob2QgPSBfZGF0YS0+X3BhZ2UtPmVkaXRvclN0YXRlKCkuaGFzQ29tcG9zaXRpb247CiAK
KyAgICBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiBkaWN0YXRpb25BbHRlcm5hdGl2
ZXM7CisKICAgICBpZiAoaXNBdHRyaWJ1dGVkU3RyaW5nKSB7CisjaWYgVVNFKERJQ1RBVElPTl9B
TFRFUk5BVElWRVMpCisgICAgICAgIGNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzKHN0
cmluZywgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyNlbmRpZgogICAgICAgICAvLyBGSVhNRTog
V2UgaWdub3JlIG1vc3QgYXR0cmlidXRlcyBmcm9tIHRoZSBzdHJpbmcsIHNvIGZvciBleGFtcGxl
IGluc2VydGluZyBmcm9tIENoYXJhY3RlciBQYWxldHRlIGxvc2VzIGZvbnQgYW5kIGdseXBoIHZh
cmlhdGlvbiBkYXRhLgogICAgICAgICB0ZXh0ID0gW3N0cmluZyBzdHJpbmddOwogICAgIH0gZWxz
ZQpAQCAtMTE4Nyw3ICsxMTk4LDExIEBAIHN0YXRpYyBjb25zdCBzaG9ydCBrSU9ISURFdmVudFR5
cGVTY3JvbGwgPSA2OwogCiAgICAgU3RyaW5nIGV2ZW50VGV4dCA9IHRleHQ7CiAgICAgZXZlbnRU
ZXh0LnJlcGxhY2UoTlNCYWNrVGFiQ2hhcmFjdGVyLCBOU1RhYkNoYXJhY3Rlcik7IC8vIHNhbWUg
dGhpbmcgaXMgZG9uZSBpbiBLZXlFdmVudE1hYy5tbSBpbiBXZWJDb3JlCi0gICAgYm9vbCBldmVu
dEhhbmRsZWQgPSBfZGF0YS0+X3BhZ2UtPmluc2VydFRleHQoZXZlbnRUZXh0LCByZXBsYWNlbWVu
dFJhbmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKHJlcGxhY2VtZW50UmFuZ2UpKTsKKyAgICBib29s
IGV2ZW50SGFuZGxlZDsKKyAgICBpZiAoZGljdGF0aW9uQWx0ZXJuYXRpdmVzLnNpemUoKSkKKyAg
ICAgICAgZXZlbnRIYW5kbGVkID0gX2RhdGEtPl9wYWdlLT5pbnNlcnREaWN0YXRlZFRleHQoZXZl
bnRUZXh0LCByZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKHJlcGxhY2VtZW50
UmFuZ2UpLCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgIGVsc2UKKyAgICAgICAgZXZlbnRI
YW5kbGVkID0gX2RhdGEtPl9wYWdlLT5pbnNlcnRUZXh0KGV2ZW50VGV4dCwgcmVwbGFjZW1lbnRS
YW5nZS5sb2NhdGlvbiwgTlNNYXhSYW5nZShyZXBsYWNlbWVudFJhbmdlKSk7CiAKICAgICBpZiAo
cGFyYW1ldGVycykKICAgICAgICAgcGFyYW1ldGVycy0+ZXZlbnRJbnRlcnByZXRhdGlvbkhhZFNp
ZGVFZmZlY3RzIHw9IGV2ZW50SGFuZGxlZDsKQEAgLTI4NTYsOSArMjg3MSw5IEBAIHN0YXRpYyBO
U1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAg
ICAgcmV0dXJuIF9kYXRhLT5fc3BlbGxDaGVja2VyRG9jdW1lbnRUYWc7CiB9CiAKLS0gKHZvaWQp
aGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OihOU1N0cmluZyopcmVzdWx0CistICh2b2lkKWhh
bmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0OihOU1N0cmluZyopdGV4dAogewotICAgIF9kYXRh
LT5fcGFnZS0+aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0KTsKKyAgICBfZGF0
YS0+X3BhZ2UtPmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHRleHQpOwogfQogCiBAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRl
cm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwu
aAppbmRleCA2YjZlYjZiZjQxZDE5MTRkM2Q2ZDA2ZjBmMjMyNjMwYzM5MmI4MDViLi40M2M2ZTJi
YWFhMDUwZGU0YjYyMDU4ODRkNjJlN2EyMzE2MTM1ZThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKQEAgLTk2LDYgKzk2LDYgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAtICh2b2lkKV9jYWNoZVdpbmRvd0JvdHRvbUNvcm5lclJlY3Q7
CiAKIC0gKE5TSW50ZWdlcilzcGVsbENoZWNrZXJEb2N1bWVudFRhZzsKLS0gKHZvaWQpaGFuZGxl
Q29ycmVjdGlvblBhbmVsUmVzdWx0OihOU1N0cmluZyopcmVzdWx0OworLSAodm9pZCloYW5kbGVB
Y2NlcHRlZEFsdGVybmF0aXZlVGV4dDooTlNTdHJpbmcqKXRleHQ7CiAKIEBlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDdjODE1MTAxZGZhNzJkZDQ5M2E5NDA2OWVm
YTUyMjVkZDFmMjc4MzUuLjRlMDJiZTY5YTA4ZGE1Yjk3YTc0NDQ0ZTNiYzIyOGNjNmY4NWI5MGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIlBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZS5oIgogCiBPQkpDX0NMQVNTIFdL
VmlldzsKK09CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogI2VuZGlmCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTE5Miw2ICsxOTMsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UoaW50MzJfdCBuZXdTdHlsZSkgPSAw
OwogICAgIAogICAgIHZpcnR1YWwgV0tWaWV3KiB3a1ZpZXcoKSBjb25zdCA9IDA7CisKKyAgICB2
aXJ0dWFsIHVpbnQ2NF90IGFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8
TlNUZXh0QWx0ZXJuYXRpdmVzPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGljdGF0
aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKICNlbmRpZgog
CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNjcm9sbGJhcnNGb3JNYWluRnJhbWUoKSBjb25z
dCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDdj
YzMwZjQwZTE0OGYyNWFhOTQ3OWNkODEwZDkyZWQyNGQ4MzQxZDMuLjdhMGZjOWMxYTQ2NGU2MDJj
MjIwOWZkYTUwZTcyNjVmZWJhYTU5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC0zNzY3LDYgKzM3NjcsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omhh
bmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KQogICAgICAg
ICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZUFsdGVybmF0aXZlVGV4
dFVJUmVzdWx0KHJlc3VsdCksIG1fcGFnZUlELCAwKTsKICNlbmRpZgogfQorCisjaWYgVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVtb3ZlRGljdGF0aW9u
QWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgbV9wYWdlQ2xp
ZW50LT5yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCk7Cit9Cisj
ZW5kaWYKKwogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYjFlN2VlYTA1YmU1
OWU0YWQ4ZDkwY2M0M2IyZTcxMGJiOGU3YzM2NS4uMjBjNjBjY2I0Y2E3YTZmYTg0YTEzMjM5Nzc0
NjAyMTVjYzdkMWU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUmVzb3VyY2VMb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViVUlDbGllbnQuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRHJhZ0FjdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdTZXNzaW9uLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CkBAIC05MSw2ICs5Miw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbnRTaXplOwogICAgIGNsYXNzIFByb3RlY3Rpb25TcGFj
ZTsKICAgICBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5nczsKKyAgICBzdHJ1Y3QgVGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlOwogICAgIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CiAgICAgc3Ry
dWN0IFZpZXdwb3J0QXR0cmlidXRlczsKICAgICBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CkBAIC0z
NDcsNiArMzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uKCk7CiAg
ICAgdm9pZCBjYW5jZWxDb21wb3NpdGlvbigpOwogICAgIGJvb2wgaW5zZXJ0VGV4dChjb25zdCBT
dHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVw
bGFjZW1lbnRSYW5nZUVuZCk7CisgICAgYm9vbCBpbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3Ry
aW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxh
Y2VtZW50UmFuZ2VFbmQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0QWx0ZXJuYXRpdmVXaXRo
UmFuZ2U+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogICAgIHZvaWQgZ2V0TWFya2VkUmFuZ2Uo
dWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKTsKICAgICB2b2lkIGdldFNlbGVj
dGVkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKTsKICAgICB2b2lk
IGdldEF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2
NF90IGxlbmd0aCwgQXR0cmlidXRlZFN0cmluZyYpOwpAQCAtODc4LDYgKzg4MSw5IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihpbnQzMl90IHJlYXNvbiwg
U3RyaW5nJiByZXN1bHQpOwogICAgIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShp
bnQzMl90IHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CiAjZW5kaWYgLy8gIWRlZmluZWQoQlVJTERJTkdf
T05fU05PV19MRU9QQVJEKQorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIHZv
aWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQp
OworI2VuZGlmCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAgICAgdm9pZCBjbGVhckxvYWRE
ZXBlbmRlbnRDYWxsYmFja3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGQ3MTgxMTU1MWQ0M2EwMjdlNjY4YWJjOGQyZjlk
OWM4MzYzZjZlNWMuLmQxZTExZTEwYzc2NzFjMmYwNTIxZGI3YmE0ODBkNjJjNmE4ZmZkZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgpAQCAtMjc4LDYgKzI3OCwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoaW50MzJfdCByZXNwb25zZVR5cGUsIFN0cmluZyBy
ZXBsYWNlZFN0cmluZywgU3RyaW5nIHJlcGxhY2VtZW50U3RyaW5nKTsKICNlbmRpZgogCisjaWYg
VVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgUmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRp
dmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOworI2VuZGlmCisKICNpZiBQTEFURk9STShX
SU4pCiAgICAgIyBXaW5kb3dzIDcgR2VzdHVyZSBNZXNzYWdlcwogICAgIFNldEdlc3R1cmVSZWFj
aGVkU2Nyb2xsaW5nTGltaXQoYm9vbCBsaW1pdFJlYWNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tCmluZGV4IDk0MTcxZjczN2FiMzZkNWZm
ZGE1ODc2NzhkMmZkODYwMDQ1NzQ0NTguLjA5NjQxY2QwODNiYWQxNGFlM2U2YjQwYmYwNDYwM2Mz
NmFhY2JmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVj
dGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlv
blBhbmVsLm1tCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBDb3JyZWN0aW9uUGFuZWw6OmhhbmRs
ZUFjY2VwdGVkUmVwbGFjZW1lbnQoTlNTdHJpbmcqIGFjY2VwdGVkUmVwbGFjZW1lbnQsIE4KICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgW21fdmlldy5nZXQoKSBoYW5kbGVDb3JyZWN0aW9u
UGFuZWxSZXN1bHQ6YWNjZXB0ZWRSZXBsYWNlbWVudF07CisgICAgW21fdmlldy5nZXQoKSBoYW5k
bGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDphY2NlcHRlZFJlcGxhY2VtZW50XTsKICAgICBtX3Zp
ZXcuY2xlYXIoKTsKICAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVudCkKICAgICAgICAgbV9yZXN1
bHRGb3JEaXNtaXNzYWwuYWRvcHROUyhbYWNjZXB0ZWRSZXBsYWNlbWVudCBjb3B5XSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDM1
ODQ3MTgyZTE0MGI3ZDg0ZDA5ODM0NmI2OGI3M2ViMWEwODY0ZjAuLjY3ODlhZDlkZTBiYjI2MmNm
MzlhZjJlMTQyNzAzMjg3NjVhMDc5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0zOCw3ICszOCw5IEBACiAjaW1wb3J0ICJUZXh0
Q2hlY2tlci5oIgogI2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9j
ZXNzUHJveHkuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL1RleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZS5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAj
aW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCkBAIC0xOTgsNiArMjAwLDM1
IEBAIGJvb2wgV2ViUGFnZVByb3h5OjppbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWlu
dDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0CiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9CiAKK2Jv
b2wgV2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1
aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VF
bmQsIGNvbnN0IFZlY3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBkaWN0YXRpb25BbHRl
cm5hdGl2ZXNXaXRoUmFuZ2UpCit7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisg
ICAgaWYgKGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBpbnNlcnRUZXh0KHRleHQsIHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1l
bnRSYW5nZUVuZCk7CisKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZl
czsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzV2l0
aFJhbmdlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFRleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZSYgYWx0ZXJuYXRpdmVXaXRoUmFuZ2UgPSBkaWN0YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFu
Z2VbaV07CisgICAgICAgIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQgPSBtX3BhZ2VDbGllbnQt
PmFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyhhbHRlcm5hdGl2ZVdpdGhSYW5nZS5hbHRlcm5hdGl2
ZSk7CisgICAgICAgIGlmIChkaWN0YXRpb25Db250ZXh0KQorICAgICAgICAgICAgZGljdGF0aW9u
QWx0ZXJuYXRpdmVzLmFwcGVuZChEaWN0YXRpb25BbHRlcm5hdGl2ZShhbHRlcm5hdGl2ZVdpdGhS
YW5nZS5yYW5nZS5sb2NhdGlvbiwgYWx0ZXJuYXRpdmVXaXRoUmFuZ2UucmFuZ2UubGVuZ3RoLCBk
aWN0YXRpb25Db250ZXh0KSk7CisgICAgfQorCisgICAgaWYgKGRpY3RhdGlvbkFsdGVybmF0aXZl
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBpbnNlcnRUZXh0KHRleHQsIHJlcGxhY2VtZW50
UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCk7CisKKyAgICBib29sIGhhbmRsZWQgPSB0
cnVlOworICAgIHByb2Nlc3MoKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERp
Y3RhdGVkVGV4dCh0ZXh0LCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VF
bmQsIGRpY3RhdGlvbkFsdGVybmF0aXZlcyksIE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnREaWN0
YXRlZFRleHQ6OlJlcGx5KGhhbmRsZWQsIG1fZWRpdG9yU3RhdGUpLCBtX3BhZ2VJRCk7CisgICAg
cmV0dXJuIGhhbmRsZWQ7CisjZWxzZQorICAgIHJldHVybiBpbnNlcnRUZXh0KHRleHQsIHJlcGxh
Y2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCk7CisjZW5kaWYKK30KKwogdm9p
ZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0
X3QmIGxlbmd0aCkKIHsKICAgICBsb2NhdGlvbiA9IE5TTm90Rm91bmQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4
dENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQuaAppbmRleCBiODA1YWRhZjU4MTJhZjVmMjNjZWM0YTFiNWM5
MmQ3YzY5MzZlMmM0Li44MTdiMDNjNGEyMGJhZWY2ODM3Njg1MWQ1MjgzNjBkZjhiMTFjN2U1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAgLTQxLDYgKzQxLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmUoV2ViQ29yZTo6UmVh
c29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBT
dHJpbmcgZGlzbWlzc0FsdGVybmF0aXZlU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5n
QWx0ZXJuYXRpdmVUZXh0KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2Nv
cnJlY3Rpb25SZXNwb25zZShXZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29u
c3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmlu
ZykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZl
cyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSBPVkVSUklERTsKIHByaXZhdGU6CiAgICAgV2Vi
UGFnZSAqbV9wYWdlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQuY3BwCmluZGV4IDZhYmI2OTM1NDFkMDg1NmVlMDFmZGM2M2U4MThmOTg1NjY0ZjYwZGEu
LjgzMDk4YmYyODAwYjcyN2Q3OWU0Y2RmZTQ4OTBkNDY1YjJlODNkOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZl
VGV4dENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcApAQCAtNzYsNCArNzYsMTEgQEAg
dm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9u
c2UoQXV0b2NvcnJlY3Rpb25SZXNwb24KICNlbmRpZgogfQogCit2b2lkIFdlYkFsdGVybmF0aXZl
VGV4dENsaWVudDo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlv
bkNvbnRleHQpCit7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZl
cyhkaWN0YXRpb25Db250ZXh0KSk7CisjZW5kaWYKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYTNiZGEyOWM2N2UwOTczYTgzZDUzOTg5
ODMyZWRiNjkyM2I2NTY3NS4uMmM0YWI4MGRkYWMwZmQ0MzVmZDlhNDRkOWNmYjk2MzVkYjQ4Yzcw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00
OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNo
YXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIldlYlVuZG9TdGVwLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVM
b2FkZXJUeXBlcy5oPgpAQCAtNDE0LDcgKzQxNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3Vs
ZERlbGF5V2luZG93T3JkZXJpbmdFdmVudChjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQmLCBi
b29sJiByZXN1bHQpOwogICAgIHZvaWQgYWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVy
LCBjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQmLCBib29sJiByZXN1bHQpOwogICAgIGJvb2wg
cGVyZm9ybU5vbkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbnN0IFN0cmluZyYpOwotCisg
ICAgdm9pZCBpbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCBy
ZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQsIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0
aXZlTG9jYXRpb25zLCBib29sJiBoYW5kbGVkLCBFZGl0b3JTdGF0ZSYgbmV3U3RhdGUpOwogI2Vs
aWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmlu
ZyYgY29tcG9zaXRpb25TdHJpbmcpOwogICAgIHZvaWQgc2V0Q29tcG9zaXRpb24oY29uc3QgV1RG
OjpTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCBjb25zdCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpD
b21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVybGluZXMsIHVpbnQ2NF90IGN1cnNvclBvc2l0aW9u
KTsKQEAgLTQ5Niw3ICs0OTcsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVubWFya0FsbE1pc3Nw
ZWxsaW5ncygpOwogICAgIHZvaWQgdW5tYXJrQWxsQmFkR3JhbW1hcigpOwotCiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAgICAgdm9pZCBo
YW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgppbmRleCBhN2ZkZWU4OWM3Y2ViYjgzOTVmYzA3NGViZjFjMTUwZTY2MDg5OTBkLi4yMDdi
NzYxZWIzM2FkYWYzNDE2NTU1Y2EzOWZmN2M1MTA2NGJiNDg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjQ1
LDYgKzI0NSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogICAgIEV4ZWN1dGVLZXlwcmVzc0Nv
bW1hbmRzKFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+IHNhdmVkQ29tbWFuZHMpIC0+
IChib29sIGhhbmRsZWQsIFdlYktpdDo6RWRpdG9yU3RhdGUgbmV3U3RhdGUpCiAgICAgU2hvdWxk
RGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50KFdlYktpdDo6V2ViTW91c2VFdmVudCBldmVudCkgLT4g
KGJvb2wgcmVzdWx0KQogICAgIEFjY2VwdHNGaXJzdE1vdXNlKGludCBldmVudE51bWJlciwgV2Vi
S2l0OjpXZWJNb3VzZUV2ZW50IGV2ZW50KSAtPiAoYm9vbCByZXN1bHQpCisgICAgSW5zZXJ0RGlj
dGF0ZWRUZXh0KFdURjo6U3RyaW5nIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFy
dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCwgV1RGOjpWZWN0b3I8V2ViQ29yZTo6RGlj
dGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlcykgLT4gKGJvb2wgaGFuZGxl
ZCwgV2ViS2l0OjpFZGl0b3JTdGF0ZSBuZXdTdGF0ZSkKICNlbmRpZgogI2lmIFBMQVRGT1JNKFdJ
TikKICAgICAvLyBGSVhNRTogVW5pZnkgd2l0aCBNYWMgY291bnRlcnBhcnRzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4
IDc0NWIyMGJmMTBhMjVhNWQ4YjEyZDMzZmQyOGE0ODIzZTNiOTc5ZWQuLjk2ZWY0ODE3NjU0NDdm
MGYwYjQ3OTA4MTViNmVmOTM0YzViMmI5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTI5MCw2ICsyOTAsMjEgQEAg
dm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVw
bGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW4KICAgICBuZXdTdGF0ZSA9IGVkaXRvclN0YXRlKCk7CiB9
CiAKK3ZvaWQgV2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwg
dWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdl
RW5kLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRp
b25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9vbCYgaGFuZGxlZCwgRWRpdG9yU3RhdGUmIG5ld1N0
YXRlKQoreworICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpOworCisgICAgaWYgKHJlcGxhY2VtZW50UmFuZ2VTdGFydCAhPSBO
U05vdEZvdW5kKSB7CisgICAgICAgIFJlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9IGNv
bnZlcnRUb1JhbmdlKGZyYW1lLCBOU01ha2VSYW5nZShyZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJl
cGxhY2VtZW50UmFuZ2VFbmQgLSByZXBsYWNlbWVudFJhbmdlU3RhcnQpKTsKKyAgICAgICAgaWYg
KHJlcGxhY2VtZW50UmFuZ2UpCisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNldFNl
bGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCksIFNFTF9ERUZB
VUxUX0FGRklOSVRZKSk7CisgICAgfQorCisgICAgQVNTRVJUKCFmcmFtZS0+ZWRpdG9yKCktPmhh
c0NvbXBvc2l0aW9uKCkpOworICAgIGhhbmRsZWQgPSBmcmFtZS0+ZWRpdG9yKCktPmluc2VydERp
Y3RhdGVkVGV4dCh0ZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgbV9rZXlib2Fy
ZEV2ZW50QmVpbmdJbnRlcnByZXRlZCk7CisgICAgbmV3U3RhdGUgPSBlZGl0b3JTdGF0ZSgpOwor
fQorCiB2b2lkIFdlYlBhZ2U6OmdldE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWlu
dDY0X3QmIGxlbmd0aCkKIHsKICAgICBsb2NhdGlvbiA9IE5TTm90Rm91bmQ7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTA1OTcxMDJkYWYzYmE4
NjZmZjBhZmFmYWVlZjNjZjFiNzY5NDNmNC4uOTU0YWQwMWIzZDM3NGNjN2FjNjdiZTA0YWNkMzA4
MDYxYTZlMzI3ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA0LTE4ICBKaWEgUHUgIDxqcHVAYXBwbGUuY29t
PgorCisgICAgICAgIE9uIE9TIFgsIG1hcmsgdGV4dCB3aXRoIGRpY3RhdGlvbiBhbHRlcm5hdGl2
ZSB3aXRoIGJsdWUgdW5kZXJsaW5lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODMwNDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCBpbnRlcmZhY2UgdG8gc2ltdWxhdGUgZGljdGF0ZWQgdGV4dCBp
bnB1dC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVy
Lm06CisgICAgICAgICgrW1RleHRJbnB1dENvbnRyb2xsZXIgaXNTZWxlY3RvckV4Y2x1ZGVkRnJv
bVdlYlNjcmlwdDpdKToKKyAgICAgICAgKCtbVGV4dElucHV0Q29udHJvbGxlciB3ZWJTY3JpcHRO
YW1lRm9yU2VsZWN0b3I6XSk6CisgICAgICAgICgtW1RleHRJbnB1dENvbnRyb2xsZXIgZGljdGF0
ZWRTdHJpbmdXaXRoUHJpbWFyeVN0cmluZzphbHRlcm5hdGl2ZTphbHRlcm5hdGl2ZU9mZnNldDph
bHRlcm5hdGl2ZUxlbmd0aDpdKToKKwogMjAxMi0wNC0xOCAgRGlyayBQcmFua2UgIDxkcHJhbmtl
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBGaXggY3Jhc2ggaW4gY2hyb21pdW0ucHkgYWZ0ZXIg
cjExNDg3Ny4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRD
b250cm9sbGVyLm0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxl
ci5tCmluZGV4IGY3ODA3OTQ0NjM2OWU3OGM5ZjQ4Y2UwODE1ZWYxY2NjOGRmMGI5OWQuLmFmZWIx
NmU0ZDI0MmIyYjYwMjBjMDJlNDQxYWU4M2Q3NDBlOTMyZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXIubQpAQCAtMzEsNiArMzEsMTAgQEAKIAog
I2ltcG9ydCAiRHVtcFJlbmRlclRyZWVNYWMuaCIKICNpbXBvcnQgPEFwcEtpdC9OU0lucHV0TWFu
YWdlci5oPgorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJV
SUxESU5HX09OX1NOT1dfTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTElPTikKKyNk
ZWZpbmUgU1VQUE9SVF9ESUNUQVRJT05fQUxURVJOQVRJVkVTCisjaW1wb3J0IDxBcHBLaXQvTlNU
ZXh0QWx0ZXJuYXRpdmVzLmg+CisjZW5kaWYKICNpbXBvcnQgPFdlYktpdC9XZWJEb2N1bWVudC5o
PgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWVQ
cml2YXRlLmg+CkBAIC0xNzAsNyArMTc0LDggQEAgKyAoQk9PTClpc1NlbGVjdG9yRXhjbHVkZWRG
cm9tV2ViU2NyaXB0OihTRUwpYVNlbGVjdG9yCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0g
QHNlbGVjdG9yKGNoYXJhY3RlckluZGV4Rm9yUG9pbnRYOlk6KQogICAgICAgICAgICAgfHwgYVNl
bGVjdG9yID09IEBzZWxlY3Rvcih2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0KQogICAgICAg
ICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihhdHRyaWJ1dGVkU3RyaW5nV2l0aFN0cmlu
ZzopCi0gICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNldElucHV0TWV0aG9k
SGFuZGxlcjopKQorICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihzZXRJbnB1
dE1ldGhvZEhhbmRsZXI6KQorICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3Rvcihk
aWN0YXRlZFN0cmluZ1dpdGhQcmltYXJ5U3RyaW5nOmFsdGVybmF0aXZlOmFsdGVybmF0aXZlT2Zm
c2V0OmFsdGVybmF0aXZlTGVuZ3RoOikpCiAgICAgICAgIHJldHVybiBOTzsKICAgICByZXR1cm4g
WUVTOwogfQpAQCAtMTk0LDcgKzE5OSw5IEBAICsgKE5TU3RyaW5nICopd2ViU2NyaXB0TmFtZUZv
clNlbGVjdG9yOihTRUwpYVNlbGVjdG9yCiAgICAgZWxzZSBpZiAoYVNlbGVjdG9yID09IEBzZWxl
Y3RvcihhdHRyaWJ1dGVkU3RyaW5nV2l0aFN0cmluZzopKQogICAgICAgICByZXR1cm4gQCJtYWtl
QXR0cmlidXRlZFN0cmluZyI7IC8vIGp1c3QgYSBmYWN0b3J5IG1ldGhvZCwgZG9lc24ndCBjYWxs
IGludG8gTlNUZXh0SW5wdXQKICAgICBlbHNlIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNl
dElucHV0TWV0aG9kSGFuZGxlcjopKQotICAgICAgICByZXR1cm4gQCJzZXRJbnB1dE1ldGhvZEhh
bmRsZXIiOyAKKyAgICAgICAgcmV0dXJuIEAic2V0SW5wdXRNZXRob2RIYW5kbGVyIjsKKyAgICBl
bHNlIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGRpY3RhdGVkU3RyaW5nV2l0aFByaW1hcnlT
dHJpbmc6YWx0ZXJuYXRpdmU6YWx0ZXJuYXRpdmVPZmZzZXQ6YWx0ZXJuYXRpdmVMZW5ndGg6KSkK
KyAgICAgICAgcmV0dXJuIEAibWFrZURpY3RhdGVkU3RyaW5nIjsKIAogICAgIHJldHVybiBuaWw7
CiB9CkBAIC0zNzUsNiArMzgyLDI3IEBAIC0gKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKilh
dHRyaWJ1dGVkU3RyaW5nV2l0aFN0cmluZzooTlNTdHJpbmcgKilhU3RyaW5nCiAgICAgcmV0dXJu
IFtbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOmFTdHJp
bmddIGF1dG9yZWxlYXNlXTsKIH0KIAorLSAoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyopZGlj
dGF0ZWRTdHJpbmdXaXRoUHJpbWFyeVN0cmluZzooTlNTdHJpbmcqKWFTdHJpbmcgYWx0ZXJuYXRp
dmU6KE5TU3RyaW5nKilhbHRlcm5hdGl2ZSBhbHRlcm5hdGl2ZU9mZnNldDooaW50KW9mZnNldCBh
bHRlcm5hdGl2ZUxlbmd0aDooaW50KWxlbmd0aAoreworI2lmIGRlZmluZWQoU1VQUE9SVF9ESUNU
QVRJT05fQUxURVJOQVRJVkVTKQorICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGRpY3Rh
dGVkU3RyaW5nID0gW3NlbGYgYXR0cmlidXRlZFN0cmluZ1dpdGhTdHJpbmc6YVN0cmluZ107Cisg
ICAgTlNSYW5nZSByYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IE5TTWFrZVJhbmdlKChOU1VJbnRlZ2Vy
KW9mZnNldCwgKE5TVUludGVnZXIpbGVuZ3RoKTsKKyAgICBOU1N0cmluZyogc3ViU3RyaW5nV2l0
aEFsdGVybmF0aXZlID0gW2FTdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOnJhbmdlV2l0aEFsdGVy
bmF0aXZlXTsKKyAgICBpZiAoIXN1YlN0cmluZ1dpdGhBbHRlcm5hdGl2ZSkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKworICAgIE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVPYmplY3QgPSBb
W1tOU1RleHRBbHRlcm5hdGl2ZXMgYWxsb2NdIGluaXRXaXRoUHJpbWFyeVN0cmluZzpzdWJTdHJp
bmdXaXRoQWx0ZXJuYXRpdmUgYWx0ZXJuYXRpdmVTdHJpbmdzOltOU0FycmF5IGFycmF5V2l0aE9i
amVjdDphbHRlcm5hdGl2ZV1dIGF1dG9yZWxlYXNlXTsKKyAgICBpZiAoIWFsdGVybmF0aXZlT2Jq
ZWN0KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgW2RpY3RhdGVkU3RyaW5nIGFkZEF0dHJp
YnV0ZTpOU1RleHRBbHRlcm5hdGl2ZXNBdHRyaWJ1dGVOYW1lIHZhbHVlOmFsdGVybmF0aXZlT2Jq
ZWN0IHJhbmdlOnJhbmdlV2l0aEFsdGVybmF0aXZlXTsKKworICAgIHJldHVybiBkaWN0YXRlZFN0
cmluZzsKKyNlbHNlCisgICAgcmV0dXJuIG5pbDsKKyNlbmRpZgorfQorCiAtICh2b2lkKXNldElu
cHV0TWV0aG9kSGFuZGxlcjooV2ViU2NyaXB0T2JqZWN0ICopaGFuZGxlcgogewogICAgIGlmIChp
bnB1dE1ldGhvZEhhbmRsZXIgPT0gaGFuZGxlcikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3OThjODcxNTlkYzI4ZWU4YTdh
YjNlYzlmZjlhNGE5ZjhlZDk0NjdmLi5iZWRiOGVkNThjNmRlNTIzYTQ5Yjc3OTg2ZjBiZDY2OGZk
M2Q4YmM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDQtMTggIEppYSBQdSAgPGpwdUBh
cHBsZS5jb20+CisKKyAgICAgICAgT24gT1MgWCwgbWFyayB0ZXh0IHdpdGggZGljdGF0aW9uIGFs
dGVybmF0aXZlIHdpdGggYmx1ZSB1bmRlcmxpbmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMtbGlvbi9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy1zbm93bGVvcGFyZC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2lu
cHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10
ZXh0LXdpdGgtYWx0ZXJuYXRpdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQtdGV4
dC5odG1sOiBBZGRlZC4KKwogMjAxMi0wNC0xOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5k
QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgR1RLIHRlc3RfZXhwZWN0YXRpb25z
IHVwZGF0ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL1Nr
aXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9Ta2lwcGVkCmluZGV4IGRi
MzcxYTA3NTkwYmM1OGZlMmViNmU3Y2ViMjBhYzQyYjUwNWQ4NzIuLjU5YzNmZTAwOTFhOTBiYjEy
M2Y1ZGFkNmUxYWMzYTU0NGNmNjNlNDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy1sZW9wYXJkL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3Bh
cmQvU2tpcHBlZApAQCAtMjE5LDYgKzIxOSwxMCBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L3dlYmds
LXJlbW90ZS1yZWFkLXJlbW90ZS1pbWFnZS1hbGxvd2VkLmh0bWwKIGh0dHAvdGVzdHMvc2VjdXJp
dHkvd2ViZ2wtcmVtb3RlLXJlYWQtcmVtb3RlLWltYWdlLWFsbG93ZWQtd2l0aC1jcmVkZW50aWFs
cy5odG1sCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3dlYmdsLXJlbW90ZS1yZWFkLXJlbW90ZS1pbWFn
ZS1ibG9ja2VkLW5vLWNyb3Nzb3JpZ2luLmh0bWwKIAorIyBEaWN0YXRlZCB0ZXh0IGlucHV0IGlz
IG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybQorcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5w
dXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUuaHRtbAorcGxhdGZvcm0vbWFj
L2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQuaHRtbAorCiAjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3RzIGJl
bG93IHRoaXMgcG9pbnQgYXJlIGZhaWxpbmcgb25seSBvbiBzb21lIHNsYXZlcy4KICMgaHR0cDov
L3dlYmtpdC5vcmcvYi81NjU1MSBjb3ZlcnMgdGhlIGdlbmVyYWwgaXNzdWUuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGlvbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLWxpb24vU2tpcHBlZAppbmRleCA3MDJiNzhjOGIyMDljNjI0YjgzMGExYWZhZTg5
ZDM2NmM5ZWZmODQwLi45ZDgyNTlhMWIxOTg3Y2IyNmJlN2NmZDZjOGE5NzJiYWNiYzk2YWU2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGlvbi9Ta2lwcGVkCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy1saW9uL1NraXBwZWQKQEAgLTM4LDYgKzM4LDEwIEBAIGVk
aXRpbmcvcGFzdGVib2FyZC81NDc4MjUwLmh0bWwKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgyMDc5CiBlZGl0aW5nL2luc2VydGluZy9pbnNlcnQtYmctZm9udC5o
dG1sCiAKKyMgRGljdGF0ZWQgdGV4dCBpbnB1dCBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxh
dGZvcm0KK3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRo
LWFsdGVybmF0aXZlLmh0bWwKK3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0
YXRlZC10ZXh0Lmh0bWwKKwogIyAtLS0gTWF0aCBNTCAtLS0KIAogIyBUaGVzZSBoYXZlIGRpZmZl
cmVudCBtZXRyaWNzLCBhbmQgcmVxdWlyZSBpbnZlc3RpZ2F0aW9uCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtc25vd2xlb3BhcmQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy1zbm93bGVvcGFyZC9Ta2lwcGVkCmluZGV4IGY0YzQ0YzY1NTJjOTQ2OWRhYzkw
MjMwM2QwYmE1NGMzMWYyODRjYzQuLmY5ZDU5Nzc5MGNkY2E0NGRlMzRlOTRhOTFlNmQ5NWU3MDZi
NTE2ZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1zbm93bGVvcGFyZC9T
a2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1zbm93bGVvcGFyZC9Ta2lwcGVk
CkBAIC0xOTcsMyArMTk3LDcgQEAgZmFzdC9oaWRwaQogIyBGcmFtZTo6ZmluZFN0cmluZyBkb2Vz
IG5vdGhpbmcgb24gcGFnZXMgdGhhdCBwcmV2ZW50IHNlbGVjdGlvbgogIyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNjEKIGVkaXRpbmcvdGV4dC1pdGVyYXRvci9m
aW5kU3RyaW5nLXNlbGVjdGlvbi1kaXNhYmxlZC5odG1sCisKKyMgRGljdGF0ZWQgdGV4dCBpbnB1
dCBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0KK3BsYXRmb3JtL21hYy9lZGl0aW5n
L2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLmh0bWwKK3BsYXRmb3Jt
L21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0Lmh0bWwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4
dC13aXRoLWFsdGVybmF0aXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iNTdjNzhjYTYzOGI1N2Y4OTQ1YjllMDE4ZDVjMDljOTZkZmZh
NDYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcv
aW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsOCBAQAorRWRpdGluZyB0ZXh0IHRoYXQgaGFzIERpY3RhdGlvbkFsdGVybmF0aXZl
cyBtYXJrZXIgd2hvdWxkIGNhdXNlIHRoZSBtYXJrZXIgdG8gYmUgcmVtb3ZlZC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCit0aGlzIGlzIGEgdGV4CitQQVNTIG1hcmtlZFRleHQgaXMg
IiIKKworVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUuaHRtbCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4
dC13aXRoLWFsdGVybmF0aXZlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdmMDA3OTAzNjYyNjVmMGQwZWJi
MGNiZDZhYmE2MTYwMmRlOWQzZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZl
Lmh0bWwKQEAgLTAsMCArMSw1OSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5
bGU+Citib2R5IHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwcmUgaWQ9ImRlc2NyaXB0aW9uIj48L3ByZT4KKzxkaXYgaWQ9InRlc3QiIGNvbnRl
bnRlZGl0YWJsZT48L2Rpdj4KKzxwIGlkPSJjb25zb2xlIj48L3A+Cis8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+CisgICAgZGVzY3JpcHRpb24oIkVkaXRpbmcgdGV4dCB0aGF0IGhhcyBE
aWN0YXRpb25BbHRlcm5hdGl2ZXMgbWFya2VyIHdob3VsZCBjYXVzZSB0aGUgbWFya2VyIHRvIGJl
IHJlbW92ZWQuIik7CisKKyAgICB2YXIgY29uc29sZV9tZXNzYWdlcyA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoIm9sIik7CisgICAgCisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCisgICAgewor
ICAgICAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAg
IGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAg
ICAgICBjb25zb2xlX21lc3NhZ2VzLmFwcGVuZENoaWxkKGl0ZW0pOworICAgIH0KKyAgICAKKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIAorICAgICAgICB0
cnkgeworCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgICAgICB2YXIgdGVzdEFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIp
OworICAgICAgICAgICAgdGVzdEFyZWEuZm9jdXMoKTsKKworICAgICAgICAgICAgdmFyIGRpY3Rh
dGVkU3RyaW5nID0gdGV4dElucHV0Q29udHJvbGxlci5tYWtlRGljdGF0ZWRTdHJpbmcoInRoaXMg
aXMgYSB0ZXh0IiwgInRlc3QiLCAxMCwgNCk7CisgICAgICAgICAgICBkb2N1bWVudC5leGVjQ29t
bWFuZCgiU2VsZWN0QWxsIik7CisgICAgICAgICAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmluc2Vy
dFRleHQoZGljdGF0ZWRTdHJpbmcpOworICAgICAgICAgICAgdGV4dElucHV0Q29udHJvbGxlci5k
b0NvbW1hbmQoImRlbGV0ZUJhY2t3YXJkOiIpOworCisgICAgICAgICAgICB2YXIgbWFya2VkVGV4
dCA9ICIiOworICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAg
ICAgICB2YXIgdGVzdFRleHQgPSB0ZXN0QXJlYS5maXJzdENoaWxkOworICAgICAgICAgICAgICAg
IHZhciBtYXJrZWQgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRlc3RUZXh0LCAiRGlj
dGF0aW9uQWx0ZXJuYXRpdmVzIiwgMCk7CisgICAgICAgICAgICAgICAgaWYgKG1hcmtlZCkKKyAg
ICAgICAgICAgICAgICAgICAgbWFya2VkVGV4dCA9IG1hcmtlZC50b1N0cmluZygpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIm1hcmtlZFRleHQi
LCAiIik7CisgICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiVEVTVCBDT01QTEVURSIpOworCisg
ICAgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiRXhjZXB0
aW9uOiAiICsgZXguZGVzY3JpcHRpb24pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGNvbnNvbGVfbWVz
c2FnZXMpOworICAgICAgICAKKyAgICB9IGVsc2UgeworICAgICAgICBkb2N1bWVudC53cml0ZSgi
KGNhbm5vdCBydW4gaW50ZXJhY3RpdmVseSkiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lu
cHV0L2luc2VydC1kaWN0YXRlZC10ZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iZDQ2MTczMmVlZWYzM2YyMGYwODA3MGY1MTFkOWRjZmMwMjBiYTAxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5z
ZXJ0LWRpY3RhdGVkLXRleHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorV2hlbiBpbnNl
cnRpbmcgZGljdGF0ZWQgdGV4dCwgcmFuZ2Ugb2YgdGV4dCB0aGF0IGhhcyBhbHRlcm5hdGl2ZSB0
ZXh0IGlzIGF0dGFjaGVkIGFzIERpY3RhdGlvbkFsdGVybmF0aXZlcyBtYXJrZXIuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKwordGhpcyBpcyBhIHRleHQKK1BBU1MgbWFya2VkVGV4dCBp
cyAidGV4dCIKKworVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQuaHRtbCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTJhMWU0M2JkOTllM2QyNWUwMjA4MzAzMGJlN2YzMmY4YzVkNDQxNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2lu
c2VydC1kaWN0YXRlZC10ZXh0Lmh0bWwKQEAgLTAsMCArMSw1OCBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c3R5bGU+Citib2R5IHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwIH0KKzwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwcmUgaWQ9ImRlc2NyaXB0aW9uIj48L3ByZT4KKzxk
aXYgaWQ9InRlc3QiIGNvbnRlbnRlZGl0YWJsZT48L2Rpdj4KKzxwIGlkPSJjb25zb2xlIj48L3A+
Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZGVzY3JpcHRpb24oIldoZW4g
aW5zZXJ0aW5nIGRpY3RhdGVkIHRleHQsIHJhbmdlIG9mIHRleHQgdGhhdCBoYXMgYWx0ZXJuYXRp
dmUgdGV4dCBpcyBhdHRhY2hlZCBhcyBEaWN0YXRpb25BbHRlcm5hdGl2ZXMgbWFya2VyLiIpOwor
CisgICAgdmFyIGNvbnNvbGVfbWVzc2FnZXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIp
OworICAgIAorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQorICAgIHsKKyAgICAgICAgdmFyIGl0
ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICBpdGVtLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICAgICAgY29uc29sZV9t
ZXNzYWdlcy5hcHBlbmRDaGlsZChpdGVtKTsKKyAgICB9CisgICAgCisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKworICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdmFy
IHRlc3RBcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKKyAgICAgICAgICAg
IHRlc3RBcmVhLmZvY3VzKCk7CisKKyAgICAgICAgICAgIHZhciBkaWN0YXRlZFN0cmluZyA9IHRl
eHRJbnB1dENvbnRyb2xsZXIubWFrZURpY3RhdGVkU3RyaW5nKCJ0aGlzIGlzIGEgdGV4dCIsICJ0
ZXN0IiwgMTAsIDQpOworICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFs
bCIpOworICAgICAgICAgICAgdGV4dElucHV0Q29udHJvbGxlci5pbnNlcnRUZXh0KGRpY3RhdGVk
U3RyaW5nKTsKKworICAgICAgICAgICAgdmFyIG1hcmtlZFRleHQgPSAiIjsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgdmFyIHRlc3RUZXh0ID0g
dGVzdEFyZWEuZmlyc3RDaGlsZDsKKyAgICAgICAgICAgICAgICB2YXIgbWFya2VkID0gaW50ZXJu
YWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXN0VGV4dCwgIkRpY3RhdGlvbkFsdGVybmF0aXZlcyIs
IDApOworICAgICAgICAgICAgICAgIGlmIChtYXJrZWQpCisgICAgICAgICAgICAgICAgICAgIG1h
cmtlZFRleHQgPSBtYXJrZWQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJtYXJrZWRUZXh0IiwgInRleHQiKTsKKyAgICAgICAg
ICAgIGRvY3VtZW50LndyaXRlKCJURVNUIENPTVBMRVRFIik7CisKKyAgICAgICAgfSBjYXRjaCAo
ZXgpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCJFeGNlcHRpb246ICIgKyBleC5kZXNj
cmlwdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoY29uc29sZV9tZXNzYWdlcyk7CisgICAgICAg
IAorICAgIH0gZWxzZSB7CisgICAgICAgIGRvY3VtZW50LndyaXRlKCIoY2Fubm90IHJ1biBpbnRl
cmFjdGl2ZWx5KSIpOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137825</attachid>
            <date>2012-04-18 20:04:13 -0700</date>
            <delta_ts>2012-04-18 21:28:43 -0700</delta_ts>
            <desc>Minor Adjustment</desc>
            <filename>bug-83047-20120418200412.patch</filename>
            <type>text/plain</type>
            <size>77954</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0NTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmM4NTM5NTFhYjM2ZTIy
NTZmN2Q1NzNhMGRkNjU4Y2E5MjAxZTNmYi4uYWQyYmNmMGRhZTkxNTM5NzUwNzY4Mjc2MDhhNjJk
YWIwNzFjNThhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA0LTE4ICBKaWEg
UHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE9uIE9TIFgsIG1hcmsgdGV4dCB3aXRoIGRp
Y3RhdGlvbiBhbHRlcm5hdGl2ZSB3aXRoIGJsdWUgdW5kZXJsaW5lLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMwNDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogcGxhdGZvcm0vbWFjL2VkaXRp
bmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUuaHRtbAorICAgICAg
ICAgICAgICAgcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQu
aHRtbAorCisgICAgICAgIFRoaXMgaXMgdGhlIGZvbGxvdyB1cCBwYXRjaCBtZW50aW9uZWQgaW4g
dGhlIENoYW5nZUxvZyBvZiBidWcgODM1NDkuIFRoaXMgcGF0Y2ggYWRkZWQgYW4gT1MgWCBzcGVj
aWZpYworICAgICAgICBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8gZGljdGF0ZWQgdGV4dCBpbnB1
dC4gTWFqb3JpdHkgb2YgZm9sbG93aW5nIGNoYW5nZXMgYXJlIGFjdGl2ZSBvbmx5IG9uIE9TIFgu
CisKKyAgICAgICAgTmV3IGNsYXNzZXMgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyIGFu
ZCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UgYXJlIGFkZGVkIGhlcmUgc2luY2UgdGhleSBhcmUg
dXNlZAorICAgICAgICBieSBib3RoIFdlYktpdCBhbmQgV2ViS2l0Mi4KKworICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVtb3ZlRGljdGF0aW9u
QWx0ZXJuYXRpdmVzRm9yTWFya2VyKTogIFRoaXMgbmV3IGZ1bmN0aW9uIG5vdGlmaWVzCisgICAg
ICAgICAgV2ViS2l0IGxheWVyIHRvIHJlbW92ZSBkaWN0YXRpb24gYWx0ZXJuYXRpdmUgZGF0YSB3
aGVuIGEgRGljdGF0aW9uQWxlcm5hdGl2ZXMgbWFya2VyIGlzIHJlbW92ZWQuCisgICAgICAgICog
ZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmg6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp1cGRhdGVNYXJrZXJzRm9yV29y
ZHNBZmZlY3RlZEJ5RWRpdGluZyk6IFJlbmFtZWQgZXhpc3RpbmcgcmVzcG9uZFRvQ2hhbmdlZFNl
bGVjdGlvbigpCisgICAgICAgICAgZnVuY3Rpb24gdG8gYXZvaWQgaGF2aW5nIHR3byBmdW5jYXRp
b25zIHdpdGggc2FtZSBuYW1lIGFuZCBzaWduYXR1cmUuCisgICAgICAgICogZWRpdGluZy9tYWMv
RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNv
bnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9s
bGVyOjpEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlcik6CisgICAgICAgICogZWRpdGluZy9tYWMv
RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4dENvbnRy
b2xsZXI6OmFkZEFsdGVybmF0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25BbHRl
cm5hdGl2ZUNvbnRyb2xsZXI6OkRpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2
ZXNGb3JEaWN0YXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVy
bmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4dENvbnRyb2xsZXI6OnJlbW92ZUFsdGVy
bmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGljdGF0aW9u
QWx0ZXJuYXRpdmVDb250cm9sbGVyOjpEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlcjo6Y2xlYXIp
OgorICAgICAgICAoV2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjphZGRB
bHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250
cm9sbGVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNv
bnRyb2xsZXI6OnNob3dBbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGljdGF0aW9u
QWx0ZXJuYXRpdmVDb250cm9sbGVyOjpoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6ZGlzbWlzc0FsdGVy
bmF0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xs
ZXI6OnJlbW92ZUFsdGVybmF0aXZlcyk6CisgICAgICAgICogZWRpdGluZy9tYWMvVGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UpOgorICAgICAgICAqIGVkaXRp
bmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlcyk6IEZ1bmN0aW9uIHVzZWQgYnkg
Ym90aCBXZWJLaXQgYW5kIFdlYktpdDIuCisgICAgICAgICogcGFnZS9BbHRlcm5hdGl2ZVRleHRD
bGllbnQuaDoKKwogMjAxMi0wNC0xOCAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gU29saWQgY29sb3IgbGF5ZXJzIHNob3VsZCByZXNw
ZWN0IG9wYWNpdHkgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMzk5MDY5MTdlN2I3MzE3N2Q3
NTEyZjczYzg1Njk4OGE0ODI2ODVhZi4uNjJjZGFmY2ZmNzM4MzU0ODkzYjkyNWJkYTk5YzZhMWE4
NTNmMDNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTE4ICBK
aWEgUHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE9uIE9TIFgsIG1hcmsgdGV4dCB3aXRo
IGRpY3RhdGlvbiBhbHRlcm5hdGl2ZSB3aXRoIGJsdWUgdW5kZXJsaW5lLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMwNDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbHNvIHNlZSBXZWJDb3JlL0NoYW5n
ZUxvZy4KKyAgICAgICAgVGhpcyBwYXRjaCBhZGRlZCBhbiBPUyBYIHNwZWNpZmljIGZ1bmN0aW9u
YWxpdHkgcmVsYXRlZCB0byBkaWN0YXRlZCB0ZXh0IGlucHV0LgorICAgICAgICBJdCBzaG91bGRu
J3QgY2hhbmdlIGJlaGF2aW9ycyBvbiBvdGhlciBwbGF0Zm9ybXMuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW06CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6
OmhhbmRsZUFjY2VwdGVkUmVwbGFjZW1lbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkFsdGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5tbToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVu
dDo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBpbnNlcnRUZXh0Ol0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBoYW5kbGVBY2NlcHRl
ZEFsdGVybmF0aXZlVGV4dDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfZ2V0V2ViQ29yZURpY3Rh
dGlvbkFsdGVybmF0aXZlczpmcm9tVGV4dEFsdGVybmF0aXZlczpdKToKKyAgICAgICAgKC1bV2Vi
VmlldyBfcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOl0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlld0RhdGEuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLm1tOgorICAgICAg
ICAoLVtXZWJWaWV3UHJpdmF0ZSBpbml0XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50
ZXJuYWwuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisKIDIwMTItMDQt
MTggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgRnVsbCBTY3Jl
ZW4gbW9kZSBkb2VzIG5vdCBwcmVzZXJ2ZSBDQUxheWVyIG9yZGVyaW5nIGFmdGVyIGV4aXRpbmcu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggMzJiZDc5MzBhYjQ4MTg3MTMyYjk0YjdkODNlMjQzZDk0ZWE3ZjEzNS4u
OWFlZjYzZDhkNmVkYzVjMThhNjYyZDA3MDYyOGE3MGZjODlhOWZjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ0IEBACisyMDEyLTA0LTE4ICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAg
ICAgIE9uIE9TIFgsIG1hcmsgdGV4dCB3aXRoIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZSB3aXRoIGJs
dWUgdW5kZXJsaW5lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODMwNDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBbHNvIHNlZSBXZWJDb3JlL0NoYW5nZUxvZy4KKyAgICAgICAgVGhpcyBwYXRjaCBhZGRl
ZCBhbiBPUyBYIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgcmVsYXRlZCB0byBkaWN0YXRlZCB0ZXh0
IGlucHV0LgorICAgICAgICBJdCBzaG91bGRuJ3QgY2hhbmdlIGJlaGF2aW9ycyBvbiBvdGhlciBw
bGF0Zm9ybXMuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKFBhZ2VDbGllbnRJbXBs
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6YWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgaW5zZXJ0VGV4
dDpyZXBsYWNlbWVudFJhbmdlOl0pOgorICAgICAgICAoLVtXS1ZpZXcgaGFuZGxlQWNjZXB0ZWRB
bHRlcm5hdGl2ZVRleHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50
ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW06CisgICAgICAgIChX
ZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0ZWRSZXBsYWNlbWVudCk6CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVtb3ZlRGljdGF0
aW9uQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKwogMjAxMi0wNC0xOCAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBGdWxsIFNjcmVlbiBtb2RlIGRv
ZXMgbm90IHByZXNlcnZlIENBTGF5ZXIgb3JkZXJpbmcgYWZ0ZXIgZXhpdGluZy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KaW5kZXggMTEyOTc3NWRkM2QwZGMwZTE2MDA2Zjk1OWQ2YzJmMWQyMzgzZDRhNy4u
M2Q4MjVmOWNlMzdkNzAyZTM3Zjc4ODkyMGNlYzQ1ZDRlNmU3MTFhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTIxNzksMyArMjE3OSwxMCBAQCBfX1pOSzdXZWJDb3JlNE5vZGUzMW51bWJlck9m
U2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW5FdgogI2lmIEVOQUJMRShTSEFET1dfRE9NKQogX19aTjdX
ZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMThpc1NoYWRvd0RPTUVuYWJsZWRFCiAjZW5k
aWYKKworI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElO
R19PTl9MSU9OKQorX19aTjdXZWJDb3JlMzBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIx
NWFkZEFsdGVybmF0aXZlc0VSS04zV1RGOVJldGFpblB0ckkxOE5TVGV4dEFsdGVybmF0aXZlc0VF
CitfX1pON1dlYkNvcmUzMERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjE4cmVtb3ZlQWx0
ZXJuYXRpdmVzRXkKK19fWk43V2ViQ29yZTMwRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVy
NWNsZWFyRXYKK19fWk43V2ViQ29yZTMyY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXNF
UDE4TlNBdHRyaWJ1dGVkU3RyaW5nUk4zV1RGNlZlY3RvcklOU18yNFRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZUVMbTBFRUUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE1Yjg4MDQzYWRjZTkzNmM0ZjJkZmExNDkxMjdk
OWNhZTI0MzgwNTEuLmI1NDJiOTNmMTkxZjBmM2MyNzk4NmJhYTBkNGRhMTBlMmFiZjdhYmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTU3NTEsNiArNTc1MSwxMCBAQAogCQlDRUNBREZDRDE1Mzc3OTFEMDBFMzcwNjggLyogVGV4
dEluc2VydGlvbkJhc2VDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENFQ0FERkNCMTUzNzc5MUQwMEUzNzA2OCAvKiBUZXh0SW5zZXJ0aW9u
QmFzZUNvbW1hbmQuY3BwICovOyB9OwogCQlDRUNBREZDRTE1Mzc3OTFEMDBFMzcwNjggLyogVGV4
dEluc2VydGlvbkJhc2VDb21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRUNBREZDQzE1Mzc3OTFEMDBFMzcwNjggLyogVGV4dEluc2VydGlvbkJh
c2VDb21tYW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0VDQ0ZDM0IxNDE5NzNENTAwMkEwQUMxIC8qIERlY29kZUVzY2FwZVNlcXVlbmNlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDQ0ZDM0Ex
NDE5NzNENTAwMkEwQUMxIC8qIERlY29kZUVzY2FwZVNlcXVlbmNlcy5oICovOyB9OworCQlDRUQw
REEzMzE1M0Y4QTAyMDAxODY0MzYgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEMERBMzIxNTNGOEEw
MjAwMTg2NDM2IC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSAqLzsgfTsKKwkJQ0VENUI4
NEExNTNGNjY5MjAwQTlEREU4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VENUI4NDgxNTNG
NjY5MjAwQTlEREU4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNFRDVCODRCMTUzRjY2
OTMwMEE5RERFOCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUQ1Qjg0OTE1M0Y2NjkyMDBB
OURERTggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tICovOyB9OworCQlDRUQ1
Qjg1MDE1M0Y3RDU2MDBBOURERTggLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUQ1Qjg0RjE1M0Y3RDU2
MDBBOURERTggLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0VEQTEyRDcxNTJDQTFDQjAwRDlFMDhE
IC8qIEFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0VEQTEyRDYxNTJDQTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0aXZl
VGV4dENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUNFRjQxOENFMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUY0MThDQzEx
Nzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuY3BwICovOyB9OwogCQlDRUY0MThD
RjExNzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFRjQxOENEMTE3OTY3OEMwMDlEMTEyQyAv
KiBWaWV3cG9ydEFyZ3VtZW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xMjg3NSw2ICsxMjg3OSwxMCBAQAogCQlDRUNBREZDQjE1Mzc3OTFE
MDBFMzcwNjggLyogVGV4dEluc2VydGlvbkJhc2VDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQ0FERkNDMTUzNzc5MUQwMEUzNzA2OCAvKiBUZXh0
SW5zZXJ0aW9uQmFzZUNvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGV4dEluc2VydGlvbkJhc2VDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNFQ0NGQzNBMTQxOTczRDUwMDJBMEFDMSAvKiBEZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFRDBEQTMyMTUzRjhBMDIwMDE4NjQzNiAvKiBU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW07IHBhdGggPSBtYWMvVGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRUQ1
Qjg0ODE1M0Y2NjkyMDBBOURERTggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpY3RhdGlvbkFsdGVybmF0aXZlQ29u
dHJvbGxlci5oOyBwYXRoID0gbWFjL0RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRUQ1Qjg0OTE1M0Y2NjkyMDBBOURERTggLyog
RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tOyBwYXRo
ID0gbWFjL0RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0VENUI4NEYxNTNGN0Q1NjAwQTlEREU4IC8qIFRleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UuaDsgcGF0aCA9IG1hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VEQTEyRDYxNTJDQTFDQjAwRDlFMDhEIC8q
IEFsdGVybmF0aXZlVGV4dENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0VGNDE4Q0MxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZXdwb3J0QXJndW1lbnRzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VGNDE4Q0QxMTc5Njc4QzAwOUQxMTJDIC8qIFZp
ZXdwb3J0QXJndW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZXdw
b3J0QXJndW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDQ3Niw4ICsy
MDQ4NCwxMiBAQAogCQlFRDUwMURDOTBCMjQ5RjM5MDBBRTE4RDkgLyogbWFjICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDRUQ1Qjg0OTE1M0Y2NjkyMDBB
OURERTggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tICovLAorCQkJCUNFRDVC
ODQ4MTUzRjY2OTIwMEE5RERFOCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIuaCAq
LywKIAkJCQlFRDUwMURDNTBCMjQ5RjI5MDBBRTE4RDkgLyogRWRpdG9yTWFjLm1tICovLAogCQkJ
CTRBOEM5NkVBMEJFNjkwMzIwMDRFRUZGMCAvKiBGcmFtZVNlbGVjdGlvbk1hYy5tbSAqLywKKwkJ
CQlDRUQwREEzMjE1M0Y4QTAyMDAxODY0MzYgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1t
ICovLAorCQkJCUNFRDVCODRGMTUzRjdENTYwMEE5RERFOCAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRo
UmFuZ2UuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTI0Nzk2LDYgKzI0ODA4LDggQEAKIAkJCQlDRUNBREZDNzE1Mzc3OEZGMDBFMzcw
NjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFQ0FERkM5
MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRUNBREZDRTE1Mzc3OTFEMDBFMzcwNjggLyogVGV4dEluc2VydGlvbkJhc2VDb21tYW5kLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDRUQ1Qjg0QTE1M0Y2NjkyMDBBOURERTggLyogRGljdGF0aW9u
QWx0ZXJuYXRpdmVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRUQ1Qjg1MDE1M0Y3
RDU2MDBBOURERTggLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
QEAgLTI3ODA3LDYgKzI3ODIxLDggQEAKIAkJCQlDRUNBREZDNjE1Mzc3OEZGMDBFMzcwNjggLyog
RGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VDQURGQzgxNTM3
NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0VDQURGQ0QxNTM3NzkxRDAwRTM3MDY4IC8qIFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlDRUQ1Qjg0QjE1M0Y2NjkzMDBBOURERTggLyogRGljdGF0aW9u
QWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0VEMERBMzMxNTNG
OEEwMjAwMTg2NDM2IC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlci5jcHAKaW5kZXggOGQwOWZmMWI5OTg0NzFlYTYxZjM4OTI2OGU0OTI0ZjcwNGNmMTNiMS4u
MGRjNTVlNjIwMDg2ZDhiZjc0ZjE4NjQ3ZTVmOThjZTgyNGE3YmUxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCkBAIC02
MjQsNCArNjI0LDE2IEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aW5zZXJ0RGlj
dGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjCiAgICAgcmV0dXJuIGV2ZW50
LT5kZWZhdWx0SGFuZGxlZCgpOwogfQogCit2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6
OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcihEb2N1bWVudE1hcmtlciogbWFy
a2VyKQoreworICAgIGlmICghbWFya2VyKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKG1h
cmtlci0+dHlwZSgpID09IERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwor
I2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIERpY3RhdGlvbk1hcmtlckRldGFp
bHMqIGRldGFpbHMgPSBzdGF0aWNfY2FzdDxEaWN0YXRpb25NYXJrZXJEZXRhaWxzKj4obWFya2Vy
LT5kZXRhaWxzKCkpOworICAgIGlmIChBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGNsaWVudCA9IGFs
dGVybmF0aXZlVGV4dENsaWVudCgpKQorICAgICAgICBjbGllbnQtPnJlbW92ZURpY3RhdGlvbkFs
dGVybmF0aXZlcyhkZXRhaWxzLT5kaWN0YXRpb25Db250ZXh0KCkpOworI2VuZGlmCit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyLmgKaW5kZXggMjg0NDllZmQ5M2U1NzQwYTA5ZTM1YjY1NGI4
OWI1MGM3OTgwOGQ5Yi4uZjUyZTgwYjg4YmZmZTZmNWJlZDM1NmI5ZTE5YWEzNDZhYTMzNDVhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmgKQEAgLTEzMCw2ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVkQXV0b2Nv
cnJlY3Rpb25BdFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgU3RyaW5nJiBvcmlnaW5h
bFN0cmluZykgVU5MRVNTX0VOQUJMRUQoeyBVTlVTRURfUEFSQU0ob3JpZ2luYWxTdHJpbmcpOyB9
KQogCiAgICAgYm9vbCBpbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3QgVmVj
dG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiYsIEV2ZW50Kik7CisgICAgdm9pZCByZW1vdmVEaWN0
YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIoRG9jdW1lbnRNYXJrZXIqKTsKIAogcHJpdmF0ZToK
ICNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
aW5kZXggMjk0ZWI5NGI1MjdiODY5YTkyMzU0Y2FjNmQ5OTFhYWEyZWZmMjQyNC4uYzViZjRhMGY1
OTBhYzNhMjJjNTM2YzA3NmVjNjg0YTA5YWE3YmMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcApAQCAtMjI1OCw2ICsyMjU4LDEwIEBAIHZvaWQgRWRpdG9yOjp1cGRhdGVNYXJrZXJzRm9y
V29yZHNBZmZlY3RlZEJ5RWRpdGluZyhib29sIGRvTm90UmVtb3ZlSWZTZWxlY3Rpb25BCiAgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBSZWZQdHI8UmFu
Z2U+IHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIHN0YXJ0T2ZGaXJzdFdvcmQu
ZGVlcEVxdWl2YWxlbnQoKSwgZW5kT2ZMYXN0V29yZC5kZWVwRXF1aXZhbGVudCgpKTsKIAorICAg
IFZlY3RvcjxEb2N1bWVudE1hcmtlcio+IG1hcmtlcnMgPSBkb2N1bWVudC0+bWFya2VycygpLT5t
YXJrZXJzSW5SYW5nZSh3b3JkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25B
bHRlcm5hdGl2ZXMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWFya2Vycy5zaXplKCk7
ICsraSkKKyAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZW1vdmVEaWN0YXRp
b25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIobWFya2Vyc1tpXSk7CisKICAgICBkb2N1bWVudC0+bWFy
a2VycygpLT5yZW1vdmVNYXJrZXJzKHdvcmRSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNw
ZWxsaW5nIHwgRG9jdW1lbnRNYXJrZXI6OkNvcnJlY3Rpb25JbmRpY2F0b3IgfCBEb2N1bWVudE1h
cmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbiB8IERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25B
bHRlcm5hdGl2ZXMsIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5T3Zl
cmxhcHBpbmdNYXJrZXIpOwogICAgIGRvY3VtZW50LT5tYXJrZXJzKCktPmNsZWFyRGVzY3JpcHRp
b25Pbk1hcmtlcnNJbnRlcnNlY3RpbmdSYW5nZSh3b3JkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFy
a2VyOjpSZXBsYWNlbWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hYy9EaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3
ZWUyYTkzMGIyYjU2NjNiNTkzZGU5MWM0NjZiNDViODU0NTgwZGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xs
ZXIuaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEaWN0YXRpb25BbHRl
cm5hdGl2ZUNvbnRyb2xsZXJfaAorI2RlZmluZSBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xs
ZXJfaAorCisjaW5jbHVkZSAiQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCisjaW5jbHVkZSAiRmxv
YXRSZWN0LmgiCisjaW5jbHVkZSAiVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmgiCisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBVU0Uo
RElDVEFUSU9OX0FMVEVSTkFUSVZFUykKK09CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwor
T0JKQ19DTEFTUyBOU1ZpZXc7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERpY3RhdGlv
bkNvbnRleHRDb250cm9sbGVyOworCitjbGFzcyBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xs
ZXIgeworcHVibGljOgorICAgIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcigpIHsgfQor
ICAgIC8vIFJldHVybnMgYSBkaWN0YXRpb24gY29udGV4dCBJRC4KKyAgICB1aW50NjRfdCBhZGRB
bHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKKyAgICB2
b2lkIGNsZWFyKCk7CisgICAgdm9pZCBzaG93QWx0ZXJuYXRpdmVzKE5TVmlldyosIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkU3RyaW5nLCB1aW50NjRfdCBk
aWN0YXRpb25Db250ZXh0LCB2b2lkKF5hY2NlcHRhbmNlSGFuZGxlcikoTlNTdHJpbmcqKSk7Cisg
ICAgdm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmVzKCk7CisgICAgdm9pZCByZW1vdmVBbHRlcm5hdGl2
ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBoYW5k
bGVBY2NlcHRlZEFsdGVybmF0aXZlKE5TU3RyaW5nKiBhY2NlcHRlZEFsdGVybmF0aXZlLCB1aW50
NjRfdCBkaWN0YXRpb25Db250ZXh0LCBOU1RleHRBbHRlcm5hdGl2ZXMqKTsKKworICAgIGNsYXNz
IERpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIERpY3Rh
dGlvbkNvbnRleHRDb250cm9sbGVyKCkgeyB9CisgICAgICAgIHVpbnQ2NF90IGFkZEFsdGVybmF0
aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpOworICAgICAgICB2b2lk
IGNsZWFyKCk7CisgICAgICAgIE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVzRm9yRGlj
dGF0aW9uQ29udGV4dCh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKKyAgICAgICAgdm9pZCBy
ZW1vdmVBbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KHVpbnQ2NF90IGRpY3RhdGlvbkNv
bnRleHQpOworICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgaW52YWxpZENvbnRleHQgPSAw
OworICAgIHByaXZhdGU6CisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWlu
UHRyPE5TVGV4dEFsdGVybmF0aXZlcz4gPiBIYXNoTWFwVHlwZTsKKyAgICAgICAgSGFzaE1hcFR5
cGUgbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXA7CisgICAgfTsKKworICAgIERpY3RhdGlvbkNvbnRl
eHRDb250cm9sbGVyIG1fY29udGV4dENvbnRyb2xsZXI7CisgICAgUmV0YWluUHRyPE5TVmlldz4g
bV92aWV3OworfTsKK30KKyNlbmRpZgorI2VuZGlmIC8vIERpY3RhdGlvbkFsdGVybmF0aXZlQ29u
dHJvbGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0YXRp
b25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9E
aWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBlOGMzNTg1MDY2
MjNiYzg0YjVkMGFlZmM5MjMzOTEwYWJiNzNiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5tbQpAQCAt
MCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmgiCisKKyNpZiBVU0UoRElDVEFUSU9OX0FM
VEVSTkFUSVZFUykKKworI2ltcG9ydCA8QXBwS2l0L05TU3BlbGxDaGVja2VyLmg+CisjaW1wb3J0
IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CisjaW1wb3J0IDxBcHBLaXQvTlNWaWV3Lmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VpbnQ2NF90IERpY3RhdGlvbkFsdGVybmF0aXZlQ29u
dHJvbGxlcjo6RGljdGF0aW9uQ29udGV4dENvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyhjb25z
dCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYgYWx0ZXJuYXRpdmVzKQoreworICAgIHVp
bnQ2NF90IGNvbnRleHQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oYWx0ZXJuYXRpdmVz
LmdldCgpKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiBpbnZhbGlkQ29udGV4
dDsKKyAgICBpZiAoYWx0ZXJuYXRpdmVzRm9yRGljdGF0aW9uQ29udGV4dChjb250ZXh0KSkKKyAg
ICAgICAgcmV0dXJuIGNvbnRleHQ7CisKKyAgICBIYXNoTWFwVHlwZTo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmFkZChjb250ZXh0LCBhbHRlcm5hdGl2ZXMpOwor
ICAgIHJldHVybiByZXN1bHQuaXNOZXdFbnRyeSA/IGNvbnRleHQgOiBpbnZhbGlkQ29udGV4dDsK
K30KKworTlNUZXh0QWx0ZXJuYXRpdmVzKiBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6
OkRpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250
ZXh0KHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgSGFzaE1hcFR5cGU6OmNvbnN0
X2l0ZXJhdG9yIGl0ciA9IG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmZpbmQoZGljdGF0aW9uQ29u
dGV4dCk7CisgICAgaWYgKGl0ciA9PSBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIGl0ci0+c2Vjb25kLmdldCgpOworfQorCit2
b2lkIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4dENvbnRy
b2xsZXI6OnJlbW92ZUFsdGVybmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRleHQodWludDY0X3QgZGlj
dGF0aW9uQ29udGV4dCkKK3sKKyAgICBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5yZW1vdmUoZGlj
dGF0aW9uQ29udGV4dCk7Cit9CisKK3ZvaWQgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVy
OjpEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlcjo6Y2xlYXIoKQoreworICAgIG1fYWx0ZXJuYXRp
dmVzT2JqZWN0TWFwLmNsZWFyKCk7Cit9CisKK3VpbnQ2NF90IERpY3RhdGlvbkFsdGVybmF0aXZl
Q29udHJvbGxlcjo6YWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5h
dGl2ZXM+JiBhbHRlcm5hdGl2ZXMpCit7CisgICAgcmV0dXJuIG1fY29udGV4dENvbnRyb2xsZXIu
YWRkQWx0ZXJuYXRpdmVzKGFsdGVybmF0aXZlcyk7Cit9CisKK3ZvaWQgRGljdGF0aW9uQWx0ZXJu
YXRpdmVDb250cm9sbGVyOjpjbGVhcigpCit7CisgICAgcmV0dXJuIG1fY29udGV4dENvbnRyb2xs
ZXIuY2xlYXIoKTsKK30KKwordm9pZCBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OnNo
b3dBbHRlcm5hdGl2ZXMoTlNWaWV3KiB2aWV3LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJv
dW5kaW5nQm94T2ZEaWN0YXRlZFN0cmluZywgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCwgdm9p
ZCheYWNjZXB0YW5jZUhhbmRsZXIpKE5TU3RyaW5nKikpCit7CisgICAgZGlzbWlzc0FsdGVybmF0
aXZlcygpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuOworICAgIG1fdmlldyA9IHZp
ZXc7CisgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZXMgPSBtX2NvbnRleHRDb250
cm9sbGVyLmFsdGVybmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRleHQoZGljdGF0aW9uQ29udGV4dCk7
CisgICAgaWYgKCFhbHRlcm5hdGl2ZXMpCisgICAgICAgIHJldHVybjsKKyAgICBOU1NwZWxsQ2hl
Y2tlciogc3BlbGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl07
CisgICAgW3NwZWxsQ2hlY2tlciBzaG93Q29ycmVjdGlvbkluZGljYXRvck9mVHlwZTpOU0NvcnJl
Y3Rpb25JbmRpY2F0b3JUeXBlR3Vlc3NlcyBwcmltYXJ5U3RyaW5nOmFsdGVybmF0aXZlcy5wcmlt
YXJ5U3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZXMuYWx0ZXJuYXRpdmVTdHJp
bmdzIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mRGljdGF0ZWRTdHJpbmcgdmlldzptX3Zp
ZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyogYWNjZXB0ZWRTdHJpbmcpIHsK
KyAgICAgICAgaWYgKGFjY2VwdGVkU3RyaW5nKSB7CisgICAgICAgICAgICBoYW5kbGVBY2NlcHRl
ZEFsdGVybmF0aXZlKGFjY2VwdGVkU3RyaW5nLCBkaWN0YXRpb25Db250ZXh0LCBhbHRlcm5hdGl2
ZXMpOworICAgICAgICAgICAgYWNjZXB0YW5jZUhhbmRsZXIoYWNjZXB0ZWRTdHJpbmcpOworICAg
ICAgICB9CisgICAgfV07Cit9CisKK3ZvaWQgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVy
OjpoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlKE5TU3RyaW5nKiBhY2NlcHRlZEFsdGVybmF0aXZl
LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0LCBOU1RleHRBbHRlcm5hdGl2ZXMqIGFsdGVybmF0
aXZlcykKK3sKKyAgICBbYWx0ZXJuYXRpdmVzIG5vdGVTZWxlY3RlZEFsdGVybmF0aXZlU3RyaW5n
OmFjY2VwdGVkQWx0ZXJuYXRpdmVdOworICAgIG1fY29udGV4dENvbnRyb2xsZXIucmVtb3ZlQWx0
ZXJuYXRpdmVzRm9yRGljdGF0aW9uQ29udGV4dChkaWN0YXRpb25Db250ZXh0KTsKKyAgICBtX3Zp
ZXcuY2xlYXIoKTsKK30KKwordm9pZCBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OmRp
c21pc3NBbHRlcm5hdGl2ZXMoKQoreworICAgIGlmICghbV92aWV3KQorICAgICAgICByZXR1cm47
CisgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGRpc21pc3NDb3JyZWN0
aW9uSW5kaWNhdG9yRm9yVmlldzptX3ZpZXcuZ2V0KCldOworfQorCit2b2lkIERpY3RhdGlvbkFs
dGVybmF0aXZlQ29udHJvbGxlcjo6cmVtb3ZlQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlv
bkNvbnRleHQpCit7CisgICAgbV9jb250ZXh0Q29udHJvbGxlci5yZW1vdmVBbHRlcm5hdGl2ZXNG
b3JEaWN0YXRpb25Db250ZXh0KGRpY3RhdGlvbkNvbnRleHQpOworfQorCit9CisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWYwNDIyZGNkNWU5ZTVmNjEyNzFiYzBlMTVlZGZjZjMyZmQzODAz
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1RleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZV9oCisjZGVmaW5lIFRleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZV9oCisKKyNpbmNsdWRlICJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKK09CSkNf
Q0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKK3N0cnVjdCBUZXh0QWx0ZXJuYXRpdmVX
aXRoUmFuZ2UgeworICAgIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZShOU1RleHRBbHRlcm5hdGl2
ZXMqIGFuQWx0ZXJuYXRpdmUsIE5TUmFuZ2UgYVJhbmdlKQorICAgIDogcmFuZ2UoYVJhbmdlKQor
ICAgICwgYWx0ZXJuYXRpdmUoYW5BbHRlcm5hdGl2ZSkKKyAgICB7IH0KKworICAgIE5TUmFuZ2Ug
cmFuZ2U7CisgICAgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4gYWx0ZXJuYXRpdmU7Cit9
OworCit2b2lkIGNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzKE5TQXR0cmlidXRlZFN0
cmluZyosIFZlY3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBhbHRlcm5hdGl2ZXMpOwor
I2Vsc2UKK3N0cnVjdCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UgeyB9OworI2VuZGlmCisKK30K
KworI2VuZGlmIC8vIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2QxZDZjZDJjYjdhMDgwZTFmNTdlYWRmNWI2YzA3ZGMyMTVjYzdiMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZS5tbQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIgorCisjaWYgVVNFKERJQ1RB
VElPTl9BTFRFUk5BVElWRVMpCisjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3ZvaWQgY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5h
dGl2ZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxUZXh0QWx0ZXJuYXRpdmVX
aXRoUmFuZ2U+JiBhbHRlcm5hdGl2ZXMpIHsKKyAgICBOU1JhbmdlIGVmZmVjdGl2ZVJhbmdlID0g
TlNNYWtlUmFuZ2UoMCwgMCk7CisgICAgTlNVSW50ZWdlciBsZW5ndGggPSBbc3RyaW5nIGxlbmd0
aF07CisgICAgZG8geworICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbc3RyaW5n
IGF0dHJpYnV0ZXNBdEluZGV4OmVmZmVjdGl2ZVJhbmdlLmxvY2F0aW9uIGVmZmVjdGl2ZVJhbmdl
OiZlZmZlY3RpdmVSYW5nZV07CisgICAgICAgIGlmICghYXR0cmlidXRlcykKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBOU1RleHRBbHRlcm5hdGl2ZXMgKnRleHRBbHRlcm5hdGl2ZXMgPSBb
YXR0cmlidXRlcyBvYmplY3RGb3JLZXk6TlNUZXh0QWx0ZXJuYXRpdmVzQXR0cmlidXRlTmFtZV07
CisgICAgICAgIGlmICh0ZXh0QWx0ZXJuYXRpdmVzKQorICAgICAgICAgICAgYWx0ZXJuYXRpdmVz
LmFwcGVuZChUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UodGV4dEFsdGVybmF0aXZlcywgZWZmZWN0
aXZlUmFuZ2UpKTsKKyAgICAgICAgZWZmZWN0aXZlUmFuZ2UubG9jYXRpb24gPSBOU01heFJhbmdl
KGVmZmVjdGl2ZVJhbmdlKTsKKyAgICB9IHdoaWxlIChlZmZlY3RpdmVSYW5nZS5sb2NhdGlvbiA8
IGxlbmd0aCk7Cit9Cit9OworCisjZW5kaWYgLy8gVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0aXZlVGV4dENsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaAppbmRleCBmNWFl
NjdkMGVkOWZkYzZmYmY0NzA3Mzc2NjYzYjkyYWM5MzE1Y2JjLi5lOTk5ZDA1NmQyOWMzY2M1NDRj
ZDZkNmEyMzVmMDM4ODA2YTMzMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fs
dGVybmF0aXZlVGV4dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50LmgKQEAgLTMxLDYgKzMxLDExIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oTUFDKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9T
Tk9XX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xJT04pCisvLyBTb21lIHBsYXRm
b3JtcyBwcm92aWRlIFVJIGZvciBzdWdnZXN0aW5nIGFsdGVybmF0aXZlIGRpY3RhdGlvbiB0ZXh0
LgorI2RlZmluZSBXVEZfVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMgMQorI2VuZGlmIC8vIFBM
QVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQo
QlVJTERJTkdfT05fU05PV19MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MSU9OKQor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0
aXZlVGV4dCB7CkBAIC01Nyw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlz
bWlzc0FsdGVybmF0aXZlKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpID0gMDsK
ICAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFJlYXNvbkZvckRpc21p
c3NpbmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2Nv
cnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5n
JiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGlj
dGF0aW9uQ29udGV4dCkgPSAwOwogfTsKICAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbQppbmRleCA2NTgzY2VlNjYyMTEx
MDc2YzFlMDI0NzI2ZWVjYmIwYThmNTQwNzkwLi42ODEwYTI3ODBiOWYzOTZkYTBkMzIyYmQ2M2Fj
ZjYwMTJhOWUzMDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9Db3JyZWN0aW9uUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvQ29ycmVjdGlvblBhbmVsLm1tCkBAIC0yNSw3ICsyNSw2IEBACiAjaW1wb3J0ICJDb3JyZWN0
aW9uUGFuZWwuaCIKIAogI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCi0jaW1wb3J0ICJXZWJW
aWV3UHJpdmF0ZS5oIgogCiAjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CkBAIC0xMzEsNyArMTMwLDcgQEAgdm9pZCBDb3JyZWN0aW9uUGFuZWw6
OmhhbmRsZUFjY2VwdGVkUmVwbGFjZW1lbnQoTlNTdHJpbmcqIGFjY2VwdGVkUmVwbGFjZW1lbnQs
IE4KICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIFttX3ZpZXcuZ2V0KCkgaGFuZGxl
Q29ycmVjdGlvblBhbmVsUmVzdWx0OmFjY2VwdGVkUmVwbGFjZW1lbnRdOworICAgIFttX3ZpZXcu
Z2V0KCkgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6YWNjZXB0ZWRSZXBsYWNlbWVudF07
CiAgICAgbV92aWV3LmNsZWFyKCk7CiAgICAgaWYgKGFjY2VwdGVkUmVwbGFjZW1lbnQpCiAgICAg
ICAgIG1fcmVzdWx0Rm9yRGlzbWlzc2FsLmFkb3B0TlMoW2FjY2VwdGVkUmVwbGFjZW1lbnQgY29w
eV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAppbmRleCA3ZWRmYWNlMGFlMzQ2ODE0MTk3Y2RiMTU2
ZDZiYjM2Y2Q2YjFkMWQ3Li5mNGMyYmY1NzIwNTkzMmViOGNlMjIzMjViODQ4MmM5YTNlN2NhZTQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaApAQCAtNDAsNiArNDAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpc21pc3NBbHRlcm5hdGl2ZShXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNz
aW5nQWx0ZXJuYXRpdmVUZXh0KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNz
QWx0ZXJuYXRpdmVTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRl
eHQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3Bv
bnNlKFdlYkNvcmU6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRp
Y3RhdGlvbkNvbnRleHQpIE9WRVJSSURFOwogcHJpdmF0ZToKICAgICBXZWJWaWV3KiBtX3dlYlZp
ZXc7CiAjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1t
CmluZGV4IDY5NzJmYjRiYTkzMmUyNGNkYmIwNDk5Y2U0OGVmNmVhMjRlZDUyY2QuLjM1OTMzYmQy
M2Y5YTViMDE0NGFhYzZiNDZjZmM0ZDJlN2JiMTBmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQu
bW0KQEAgLTI1LDYgKzI1LDggQEAKIAogI2luY2x1ZGUgIldlYkFsdGVybmF0aXZlVGV4dENsaWVu
dC5oIgogCisjaW5jbHVkZSAiV2ViVmlld0ludGVybmFsLmgiCisKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OldlYkFsdGVybmF0aXZlVGV4dENs
aWVudChXZWJWaWV3KiB3ZWJWaWV3KQpAQCAtNjksMyArNzEsMTIgQEAgdm9pZCBXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQ6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rp
b25SZXNwb24KIENvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSht
X3dlYlZpZXcsIHJlc3BvbnNlLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpOwog
I2VuZGlmCiB9CisKK3ZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZW1vdmVEaWN0YXRp
b25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyNpZiBVU0UoRElD
VEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBbbV93ZWJWaWV3IF9yZW1vdmVEaWN0YXRpb25BbHRl
cm5hdGl2ZXM6ZGljdGF0aW9uQ29udGV4dF07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShkaWN0
YXRpb25Db250ZXh0KTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0KaW5kZXggYTliMjkxZTQ5OWY4MDI5N2NjNzU2NzlmMzkwZWY2YmRlMDYxYzRhNC4u
Yzg2MTFmZDQ4ZDJlNWI0NjUxYzFhMjhmOTllNzM4MGE4Y2ViMzU5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0xMTMsNiArMTEzLDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvU2ltcGxlRm9udERhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVQcm9wZXJ0
eVNldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1RleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJh
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJGb250Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmg+CkBAIC01OTA0LDcgKzU5MDUsMTQgQEAgc3Rh
dGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZl
Y3RvcjxDb21wb3NpdGlvblVuZGUKICAgICBOU1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UgPSB7IE5T
Tm90Rm91bmQsIDAgfTsKICAgICBib29sIGlzRnJvbUlucHV0TWV0aG9kID0gY29yZUZyYW1lICYm
IGNvcmVGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7CiAKKyAgICBWZWN0b3I8RGlj
dGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zOwogICAgIGlm
IChpc0F0dHJpYnV0ZWRTdHJpbmcpIHsKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykK
KyAgICAgICAgVmVjdG9yPFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4gdGV4dEFsdGVybmF0aXZl
czsKKyAgICAgICAgY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXMoc3RyaW5nLCB0ZXh0
QWx0ZXJuYXRpdmVzKTsKKyAgICAgICAgaWYgKHRleHRBbHRlcm5hdGl2ZXMuc2l6ZSgpKQorICAg
ICAgICAgICAgW1tzZWxmIF93ZWJWaWV3XSBfZ2V0V2ViQ29yZURpY3RhdGlvbkFsdGVybmF0aXZl
czpkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucyBmcm9tVGV4dEFsdGVybmF0aXZlczp0ZXh0
QWx0ZXJuYXRpdmVzXTsKKyNlbmRpZgogICAgICAgICAvLyBGSVhNRTogV2UgaWdub3JlIG1vc3Qg
YXR0cmlidXRlcyBmcm9tIHRoZSBzdHJpbmcsIHNvIGZvciBleGFtcGxlIGluc2VydGluZyBmcm9t
IENoYXJhY3RlciBQYWxldHRlIGxvc2VzIGZvbnQgYW5kIGdseXBoIHZhcmlhdGlvbiBkYXRhLgog
ICAgICAgICAvLyBJdCBkb2VzIG5vdCBsb29rIGxpa2UgYW55IGlucHV0IG1ldGhvZHMgZXZlciB1
c2UgaW5zZXJ0VGV4dDogd2l0aCBhdHRyaWJ1dGVzIG90aGVyIHRoYW4gTlNUZXh0SW5wdXRSZXBs
YWNlbWVudFJhbmdlQXR0cmlidXRlTmFtZS4KICAgICAgICAgdGV4dCA9IFtzdHJpbmcgc3RyaW5n
XTsKQEAgLTU5NDMsNyArNTk1MSwxMSBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhO
U0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0aW9uVW5kZQogICAgIGlm
ICghY29yZUZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSkgewogICAgICAgICAvLyBB
biBpbnNlcnRUZXh0OiBtaWdodCBiZSBoYW5kbGVkIGJ5IG90aGVyIHJlc3BvbmRlcnMgaW4gdGhl
IGNoYWluIGlmIHdlIGRvbid0IGhhbmRsZSBpdC4KICAgICAgICAgLy8gT25lIGV4YW1wbGUgaXMg
c3BhY2UgYmFyIHRoYXQgcmVzdWx0cyBpbiBzY3JvbGxpbmcgZG93biB0aGUgcGFnZS4KLSAgICAg
ICAgZXZlbnRIYW5kbGVkID0gY29yZUZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChldmVudFRl
eHQsIGV2ZW50KTsKKworICAgICAgICBpZiAoZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMu
c2l6ZSgpKQorICAgICAgICAgICAgZXZlbnRIYW5kbGVkID0gY29yZUZyYW1lLT5lZGl0b3IoKS0+
aW5zZXJ0RGljdGF0ZWRUZXh0KGV2ZW50VGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlv
bnMsIGV2ZW50KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXZlbnRIYW5kbGVkID0gY29y
ZUZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChldmVudFRleHQsIGV2ZW50KTsKICAgICB9IGVs
c2UgewogICAgICAgICBldmVudEhhbmRsZWQgPSB0cnVlOwogICAgICAgICBjb3JlRnJhbWUtPmVk
aXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oZXZlbnRUZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQppbmRleCA0ZmI1ZGY5NWRlZGQzYjViZTJmYjFlNDA2OWZiODE0OWFjMTk5
NDQyLi40YmM0Yzc1MmE4MDk4YmJhMjYyZWU3Y2VlNzYxNmNmZmY4MmEyYTcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xMTUsNiArMTE1LDcgQEAKICNpbXBvcnQgPFdl
YkNvcmUvQ29sb3JNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0N1cnNvci5oPgorI2ltcG9ydCA8V2ViQ29yZS9E
aWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRHJhZ0NvbnRyb2xsZXIuaD4KQEAgLTE2Miw2ICsxNjMsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eVBvbGljeS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dFJlc291cmNlRGVjb2Rlci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJD
b3JlT2JqQ0V4dHJhcy5oPgpAQCAtNTQ5OSwxNiArNTUwMSw2IEBAIHN0YXRpYyBOU0FwcGxlRXZl
bnREZXNjcmlwdG9yKiBhZURlc2NGcm9tSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
anNWYWx1CiAKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYg
IWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotLSAodm9pZCloYW5kbGVDb3JyZWN0
aW9uUGFuZWxSZXN1bHQ6KE5TU3RyaW5nKilyZXN1bHQKLXsKLSAgICBXZWJGcmFtZSAqd2ViRnJh
bWUgPSBbc2VsZiBfc2VsZWN0ZWRPck1haW5GcmFtZV07Ci0gICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUod2ViRnJhbWUpOwotICAgIGlmIChjb3JlRnJhbWUpCi0gICAgICAgIGNvcmVGcmFtZS0+
ZWRpdG9yKCktPmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHJlc3VsdCk7Ci19Ci0jZW5k
aWYKLQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViVmlld1VuZG9hYmxlRWRp
dGluZykKQEAgLTYzNjgsNiArNjM2MCwzMyBAQCBzdGF0aWMgdm9pZCBnbGliQ29udGV4dEl0ZXJh
dGlvbkNhbGxiYWNrKENGUnVuTG9vcE9ic2VydmVyUmVmLCBDRlJ1bkxvb3BBY3Rpdml0eQogfQog
I2VuZGlmCiAKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCistICh2b2lkKWhhbmRsZUFj
Y2VwdGVkQWx0ZXJuYXRpdmVUZXh0OihOU1N0cmluZyopdGV4dAoreworICAgIFdlYkZyYW1lICp3
ZWJGcmFtZSA9IFtzZWxmIF9zZWxlY3RlZE9yTWFpbkZyYW1lXTsKKyAgICBGcmFtZSogY29yZUZy
YW1lID0gY29yZSh3ZWJGcmFtZSk7CisgICAgaWYgKGNvcmVGcmFtZSkKKyAgICAgICAgY29yZUZy
YW1lLT5lZGl0b3IoKS0+aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQodGV4dCk7Cit9Cisj
ZW5kaWYKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorLSAodm9pZClfZ2V0V2Vi
Q29yZURpY3RhdGlvbkFsdGVybmF0aXZlczooVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiYp
YWx0ZXJuYXRpdmVzIGZyb21UZXh0QWx0ZXJuYXRpdmVzOihjb25zdCBWZWN0b3I8VGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlPiYpYWx0ZXJuYXRpdmVzV2l0aFJhbmdlCit7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhbHRlcm5hdGl2ZXNXaXRoUmFuZ2Uuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgY29uc3QgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlJiBhbHRlcm5hdGl2ZVdpdGhSYW5nZSA9
IGFsdGVybmF0aXZlc1dpdGhSYW5nZVtpXTsKKyAgICAgICAgdWludDY0X3QgZGljdGF0aW9uQ29u
dGV4dCA9IF9wcml2YXRlLT5tX2RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci0+YWRkQWx0
ZXJuYXRpdmVzKGFsdGVybmF0aXZlV2l0aFJhbmdlLmFsdGVybmF0aXZlKTsKKyAgICAgICAgaWYg
KGRpY3RhdGlvbkNvbnRleHQpCisgICAgICAgICAgICBhbHRlcm5hdGl2ZXMuYXBwZW5kKERpY3Rh
dGlvbkFsdGVybmF0aXZlKGFsdGVybmF0aXZlV2l0aFJhbmdlLnJhbmdlLmxvY2F0aW9uLCBhbHRl
cm5hdGl2ZVdpdGhSYW5nZS5yYW5nZS5sZW5ndGgsIGRpY3RhdGlvbkNvbnRleHQpKTsKKyAgICB9
Cit9CisKKy0gKHZvaWQpX3JlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlczoodWludDY0X3QpZGlj
dGF0aW9uQ29udGV4dAoreworICAgIF9wcml2YXRlLT5tX2RpY3RhdGlvbkFsdGVybmF0aXZlQ29u
dHJvbGxlci0+cmVtb3ZlQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpOworfQorI2VuZGlm
CisKIC0gKE5TUG9pbnQpX2NvbnZlcnRQb2ludEZyb21Sb290VmlldzooTlNQb2ludClwb2ludAog
ewogICAgIHJldHVybiBOU01ha2VQb2ludChwb2ludC54LCBbc2VsZiBib3VuZHNdLnNpemUuaGVp
Z2h0IC0gcG9pbnQueSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXdEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKaW5k
ZXggZWEyYmZjZjYwNzRlOWE1MTFjM2MzZWFlMmRiNGZmNWU1ZWMzYzRmNi4uZDM4NGY4N2M3ZmEz
YTEzODQ5NjFjNTM4ZWRiMmVkZGZiZWNjNWJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld0RhdGEuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0ICJXZWJUeXBlc0ludGVy
bmFsLmgiCiAjaW1wb3J0ICJXZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oIgorI2lt
cG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
TGF5ZXJGbHVzaFNjaGVkdWxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9MYXllckZsdXNoU2NoZWR1
bGVyQ2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU3RyaW5nLmg+CkBAIC0zOCw4
ICszOSw5IEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKLSAgICBjbGFzcyBIaXN0b3J5SXRlbTsKLSAgICBjbGFzcyBQYWdlOworY2xhc3MgRGljdGF0
aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOworY2xhc3MgSGlzdG9yeUl0ZW07CitjbGFzcyBQYWdl
OwogfQogCiBAY2xhc3MgV2ViSW5zcGVjdG9yOwpAQCAtMjAwLDUgKzIwMiw5IEBAIHByaXZhdGU6
CiAgICAgaW50IHZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uOwogCiAgICAgZmxv
YXQgY3VzdG9tRGV2aWNlU2NhbGVGYWN0b3I7CisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFU
SVZFUykKKyAgICBPd25QdHI8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVy
PiBtX2RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjsKKyNlbmRpZgogfQogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KaW5kZXggMGI4MTE3YTA5NzA2ZDVi
NmVjNGU2NDU3YzMzOThlNDc2MjZjNThiYS4uOTBhY2UxMzgxZTkxZDM3ODViNGUyY2Y3Nzg3ZTU1
YTcwYzBkMmM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
RGF0YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCkBA
IC0zMSw2ICszMSw3IEBACiAKICNpbXBvcnQgIldlYktpdExvZ2dpbmcuaCIKICNpbXBvcnQgIldl
YlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oIgorI2ltcG9ydCA8V2ViQ29yZS9EaWN0YXRpb25BbHRl
cm5hdGl2ZUNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSGlzdG9yeUl0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVu
TG9vcC5oPgpAQCAtMTAwLDYgKzEwMSwxMCBAQCBMYXllckZsdXNoQ29udHJvbGxlcjo6TGF5ZXJG
bHVzaENvbnRyb2xsZXIoV2ViVmlldyogd2ViVmlldykKIAogICAgIHBsdWdpbkRhdGFiYXNlQ2xp
ZW50Q291bnQrKzsKIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIG1fZGlj
dGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IFdlYkNvcmU6OkRpY3Rh
dGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcik7CisjZW5kaWYKKwogICAgIHJldHVybiBzZWxmOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5h
bC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCAw
MmNjNTUwMTA2YjA0NGZiYzE3N2M5ZjU5YTFmODNmNTkwZGU1MGIwLi5jMjBkZDkzN2IxMmJkZDFj
OGYyOWZiNGY0NzdhYjY3NzFlNGJhMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld0ludGVybmFsLmgKQEAgLTM0LDIwICszNCwyNiBAQAogI2ltcG9ydCAiV2ViVHlwZXNJ
bnRlcm5hbC5oIgogCiAjaWZkZWYgX19jcGx1c3BsdXMKKyNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlS2V5Ym9h
cmRVSU1vZGUuaD4KIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgRWxlbWVudDsKLSAg
ICBjbGFzcyBGcmFtZTsKLSAgICBjbGFzcyBIaXN0b3J5SXRlbTsKLSAgICBjbGFzcyBLVVJMOwot
ICAgIGNsYXNzIEtleWJvYXJkRXZlbnQ7Ci0gICAgY2xhc3MgUGFnZTsKLSAgICBjbGFzcyBSZW5k
ZXJCb3g7Ci0gICAgY2xhc3MgTm9kZTsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBFdmVudDsKK2Ns
YXNzIEZyYW1lOworY2xhc3MgSGlzdG9yeUl0ZW07CitjbGFzcyBLVVJMOworY2xhc3MgS2V5Ym9h
cmRFdmVudDsKK2NsYXNzIFBhZ2U7CitjbGFzcyBSZW5kZXJCb3g7CitjbGFzcyBOb2RlOworc3Ry
dWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOworc3RydWN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZTsKIH0KICNlbmRpZgogCkBAIC05NSw2ICsxMDEsMTUgQEAgV2ViQ29yZTo6RmluZE9wdGlvbnMg
Y29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMgb3B0aW9ucyk7CiAtICh2b2lkKV9zY2hlZHVsZUds
aWJDb250ZXh0SXRlcmF0aW9uczsKICNlbmRpZgogCisjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BB
TkVMKQorLSAodm9pZCloYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDooTlNTdHJpbmcqKXRl
eHQ7CisjZW5kaWYKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorLSAodm9pZClf
Z2V0V2ViQ29yZURpY3RhdGlvbkFsdGVybmF0aXZlczooVmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlv
bkFsdGVybmF0aXZlPiYpYWx0ZXJuYXRpdmVzIGZyb21UZXh0QWx0ZXJuYXRpdmVzOihjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYpYWx0ZXJuYXRpdmVzV2l0
aFJhbmdlOworLSAodm9pZClfcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOih1aW50NjRfdClk
aWN0YXRpb25Db250ZXh0OworI2VuZGlmCisKIEBlbmQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKaW5kZXggMDJmN2JjYzQ1NjdkNzY1YzdiZDNh
NDM0ZjI1NzI2YTYxMDNlMzEzMC4uODI4OWIxMmMxODhiZWRhZjA1MTA0NmZhNjgyMjI3NTJlZTk4
ZGQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaApAQCAt
Njg3LDkgKzY4Nyw2IEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgogLSAodm9p
ZClzZXRBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkOihCT09MKWZsYWc7CiAtICh2
b2lkKXRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbjooaWQpc2VuZGVyOwogI2VuZGlm
Ci0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdf
T05fU05PV19MRU9QQVJEKQotLSAodm9pZCloYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQ6KE5T
U3RyaW5nKilyZXN1bHQ7Ci0jZW5kaWYKIEBlbmQKIAogQGludGVyZmFjZSBXZWJWaWV3IChXZWJW
aWV3RWRpdGluZ0luTWFpbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKaW5kZXggYzZhMTY3M2I0Y2Q0NTQyNDEzOTBmYmE5ZTZiOGI1NTdiMmMy
NTBkMy4uN2NlN2JhNTFjMDFmMGE2NGExMTA4MTM1MmQ2MmQ3ZmIzOTZlMGY4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NyZWRlbnRpYWwuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0N1cnNvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VEZXRhaWxzLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RHJhZ1Nlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZUNob29zZXIuaD4KQEAgLTUzMSw2ICs1MzIsMjQgQEAgYm9vbCBBcmd1bWVudENv
ZGVyPERhdGFiYXNlRGV0YWlscz46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIERh
dGFiYXNlRGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVyPERpY3Rh
dGlvbkFsdGVybmF0aXZlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3Qg
RGljdGF0aW9uQWx0ZXJuYXRpdmUmIGRpY3RhdGlvbkFsdGVybmF0aXZlKQoreworICAgIGVuY29k
ZXItPmVuY29kZShkaWN0YXRpb25BbHRlcm5hdGl2ZS5yYW5nZVN0YXJ0KTsKKyAgICBlbmNvZGVy
LT5lbmNvZGUoZGljdGF0aW9uQWx0ZXJuYXRpdmUucmFuZ2VMZW5ndGgpOworICAgIGVuY29kZXIt
PmVuY29kZShkaWN0YXRpb25BbHRlcm5hdGl2ZS5kaWN0YXRpb25Db250ZXh0KTsKK30KKworYm9v
bCBBcmd1bWVudENvZGVyPERpY3RhdGlvbkFsdGVybmF0aXZlPjo6ZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciogZGVjb2RlciwgRGljdGF0aW9uQWx0ZXJuYXRpdmUmIGRpY3RhdGlvbkFsdGVybmF0aXZl
KQoreworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRpY3RhdGlvbkFsdGVybmF0aXZlLnJhbmdl
U3RhcnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
ZGljdGF0aW9uQWx0ZXJuYXRpdmUucmFuZ2VMZW5ndGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZGljdGF0aW9uQWx0ZXJuYXRpdmUuZGljdGF0aW9u
Q29udGV4dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwog
CiB2b2lkIEFyZ3VtZW50Q29kZXI8RmlsZUNob29zZXJTZXR0aW5ncz46OmVuY29kZShBcmd1bWVu
dEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmIHNldHRpbmdzKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4
IDAzM2UxNzk0Y2JjMjdkOGNkNzk4OTgwNmJhYzIzYjg4MTkyYjNkZDguLmQwMjllNjVlNThkMjM4
NzBlZjQ4Y2IxOWY5YzJlMjJiNGYwYzk5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwogICAgIHN0cnVjdCBDb21wb3NpdGlvblVuZGVybGluZTsKKyAgICBzdHJ1Y3QgRGljdGF0
aW9uQWx0ZXJuYXRpdmU7CiAgICAgc3RydWN0IERyYWdTZXNzaW9uOwogICAgIHN0cnVjdCBGaWxl
Q2hvb3NlclNldHRpbmdzOwogICAgIHN0cnVjdCBHcmFtbWFyRGV0YWlsOwpAQCAtMjAzLDYgKzIw
NCwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkRhdGFiYXNl
RGV0YWlscz4gewogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJD
b3JlOjpEYXRhYmFzZURldGFpbHMmKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+IHsKKyAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRp
dmUmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6
RGljdGF0aW9uQWx0ZXJuYXRpdmUmKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncz4gewogICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdz
Jik7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkZp
bGVDaG9vc2VyU2V0dGluZ3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IGE5ZDdhOWZhOTQ2Yzk3YzgzODczOWNiMDZlNGQy
ZTI0NDhmNTBiNmEuLjUyMzliMDFlZDYyMzk2YjA3MDU4OGIzZDIzNjc5ZjZiNzE0YzgxNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwu
aApAQCAtMzAsNiArMzAsMTIgQEAKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CisjaWYgVVNFKERJQ1RBVElP
Tl9BTFRFUk5BVElWRVMpCitjbGFzcyBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI7Cisj
ZW5kaWYKK30KKwogQGNsYXNzIFdLRWRpdG9yVW5kb1RhcmdldE9iakM7CiBAY2xhc3MgV0tWaWV3
OwogCkBAIC0xMjksMTEgKzEzNSwxNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBXS1ZpZXcq
IHdrVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fd2tWaWV3OyB9CiAKKyAgICB2aXJ0dWFsIHVpbnQ2
NF90IGFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJu
YXRpdmVzPiYpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMo
dWludDY0X3QgZGljdGF0aW9uQ29udGV4dCk7CisKICAgICBXS1ZpZXcqIG1fd2tWaWV3OwogICAg
IFJldGFpblB0cjxXS0VkaXRvclVuZG9UYXJnZXRPYmpDPiBtX3VuZG9UYXJnZXQ7CiAjaWYgIWRl
ZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQogICAgIENvcnJlY3Rpb25QYW5lbCBtX2Nv
cnJlY3Rpb25QYW5lbDsKICNlbmRpZgorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQor
ICAgIE93blB0cjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI+IG1fZGlj
dGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1Bh
Z2VDbGllbnRJbXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNs
aWVudEltcGwubW0KaW5kZXggNzJlYTM0OTNlMWE2Nzk0M2Q1NmU3YjU1ZTk0N2NiMzA5ZDVjM2Y4
NC4uOWNkYWUxNTU4MzczOTgzNmM5MzI1MDY1MDUyZTVjODQxNzRmYWViMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAgLTI2
LDYgKzI2LDkgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUGFnZUNsaWVudEltcGwu
aCIKIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorI2ltcG9ydCA8QXBwS2l0L05T
VGV4dEFsdGVybmF0aXZlcy5oPgorI2VuZGlmCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW1wb3J0ICJEaWN0aW9uYXJ5UG9wdXBJbmZvLmgiCiAjaW1wb3J0ICJGaW5kSW5kaWNhdG9yLmgi
CkBAIC0zOSw2ICs0Miw3IEBACiAjaW1wb3J0ICJXZWJQb3B1cE1lbnVQcm94eU1hYy5oIgogI2lt
cG9ydCA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DdXJzb3IuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb3VuZGF0aW9uRXh0
cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgpAQCAtMTIyLDYgKzEy
Niw5IEBAIFBhc3NPd25QdHI8UGFnZUNsaWVudEltcGw+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGUo
V0tWaWV3KiB3a1ZpZXcpCiBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV0tWaWV3KiB3
a1ZpZXcpCiAgICAgOiBtX3drVmlldyh3a1ZpZXcpCiAgICAgLCBtX3VuZG9UYXJnZXQoQWRvcHRO
UywgW1tXS0VkaXRvclVuZG9UYXJnZXRPYmpDIGFsbG9jXSBpbml0XSkKKyNpZiBVU0UoRElDVEFU
SU9OX0FMVEVSTkFUSVZFUykKKyAgICAsIG1fZGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVy
KGFkb3B0UHRyKG5ldyBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIpKQorI2VuZGlmCiB7
CiB9CiAKQEAgLTIwOSwxMCArMjE2LDEzIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnByb2Nlc3NE
aWRDcmFzaCgpCiB7CiAgICAgW21fd2tWaWV3IF9wcm9jZXNzRGlkQ3Jhc2hdOwogfQotICAgIAor
CiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwYWdlQ2xvc2VkKCkKIHsKICAgICBbbV93a1ZpZXcgX3Bh
Z2VDbG9zZWRdOworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIG1fZGljdGF0
aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLT5jbGVhcigpOworI2VuZGlmCiB9CiAKIHZvaWQgUGFn
ZUNsaWVudEltcGw6OmRpZFJlbGF1bmNoUHJvY2VzcygpCkBAIC01MjksNCArNTM5LDIwIEBAIGJv
b2wgUGFnZUNsaWVudEltcGw6OmV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0
cmluZyYgc2VsZWN0b3JTdHJpbmcpCiAgICAgcmV0dXJuIFttX3drVmlldyBfZXhlY3V0ZVNhdmVk
Q29tbWFuZEJ5U2VsZWN0b3I6TlNTZWxlY3RvckZyb21TdHJpbmcoc2VsZWN0b3JTdHJpbmcpXTsK
IH0KIAordWludDY0X3QgUGFnZUNsaWVudEltcGw6OmFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyhj
b25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYgYWx0ZXJuYXRpdmVzKQoreworI2lm
IFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIHJldHVybiBtX2RpY3RhdGlvbkFsdGVy
bmF0aXZlQ29udHJvbGxlci0+YWRkQWx0ZXJuYXRpdmVzKGFsdGVybmF0aXZlcyk7CisjZWxzZQor
ICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnJlbW92ZURp
Y3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworI2lmIFVT
RShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIG1fZGljdGF0aW9uQWx0ZXJuYXRpdmVDb250
cm9sbGVyLT5yZW1vdmVBbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCk7CisjZW5kaWYKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcubW0KaW5kZXggYzMyZjkwMDQ4OTk0ZGJkYmVhNDM1MDc0MjM3YTk5MTkxMzYxYTE5
OS4uNDI4NmFhOGI5ZDJiNzVmOTUyYTcyNGUyZDM0NWJhYzNhZjIzMThmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtMjYsNiArMjYsMTEgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tWaWV3LmgiCiAKKyNpZiBVU0UoRElDVEFUSU9O
X0FMVEVSTkFUSVZFUykKKyNpbXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4KKyNp
bXBvcnQgPEFwcEtpdC9OU0F0dHJpYnV0ZWRTdHJpbmcuaD4KKyNlbmRpZgorCiAjaW1wb3J0ICJB
dHRyaWJ1dGVkU3RyaW5nLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJE
cmF3aW5nQXJlYVByb3h5SW1wbC5oIgpAQCAtNzMsNiArNzgsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9SZWdpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVuTG9vcC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1N0cmluZ0V4dHJhcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2Uu
aD4KQEAgLTExNjcsNyArMTE3MywxMiBAQCBzdGF0aWMgY29uc3Qgc2hvcnQga0lPSElERXZlbnRU
eXBlU2Nyb2xsID0gNjsKICAgICBOU1N0cmluZyAqdGV4dDsKICAgICBib29sIGlzRnJvbUlucHV0
TWV0aG9kID0gX2RhdGEtPl9wYWdlLT5lZGl0b3JTdGF0ZSgpLmhhc0NvbXBvc2l0aW9uOwogCisg
ICAgVmVjdG9yPFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4gZGljdGF0aW9uQWx0ZXJuYXRpdmVz
OworCiAgICAgaWYgKGlzQXR0cmlidXRlZFN0cmluZykgeworI2lmIFVTRShESUNUQVRJT05fQUxU
RVJOQVRJVkVTKQorICAgICAgICBjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlcyhzdHJp
bmcsIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisjZW5kaWYKICAgICAgICAgLy8gRklYTUU6IFdl
IGlnbm9yZSBtb3N0IGF0dHJpYnV0ZXMgZnJvbSB0aGUgc3RyaW5nLCBzbyBmb3IgZXhhbXBsZSBp
bnNlcnRpbmcgZnJvbSBDaGFyYWN0ZXIgUGFsZXR0ZSBsb3NlcyBmb250IGFuZCBnbHlwaCB2YXJp
YXRpb24gZGF0YS4KICAgICAgICAgdGV4dCA9IFtzdHJpbmcgc3RyaW5nXTsKICAgICB9IGVsc2UK
QEAgLTExODcsNyArMTE5OCwxMSBAQCBzdGF0aWMgY29uc3Qgc2hvcnQga0lPSElERXZlbnRUeXBl
U2Nyb2xsID0gNjsKIAogICAgIFN0cmluZyBldmVudFRleHQgPSB0ZXh0OwogICAgIGV2ZW50VGV4
dC5yZXBsYWNlKE5TQmFja1RhYkNoYXJhY3RlciwgTlNUYWJDaGFyYWN0ZXIpOyAvLyBzYW1lIHRo
aW5nIGlzIGRvbmUgaW4gS2V5RXZlbnRNYWMubW0gaW4gV2ViQ29yZQotICAgIGJvb2wgZXZlbnRI
YW5kbGVkID0gX2RhdGEtPl9wYWdlLT5pbnNlcnRUZXh0KGV2ZW50VGV4dCwgcmVwbGFjZW1lbnRS
YW5nZS5sb2NhdGlvbiwgTlNNYXhSYW5nZShyZXBsYWNlbWVudFJhbmdlKSk7CisgICAgYm9vbCBl
dmVudEhhbmRsZWQ7CisgICAgaWYgKGRpY3RhdGlvbkFsdGVybmF0aXZlcy5zaXplKCkpCisgICAg
ICAgIGV2ZW50SGFuZGxlZCA9IF9kYXRhLT5fcGFnZS0+aW5zZXJ0RGljdGF0ZWRUZXh0KGV2ZW50
VGV4dCwgcmVwbGFjZW1lbnRSYW5nZS5sb2NhdGlvbiwgTlNNYXhSYW5nZShyZXBsYWNlbWVudFJh
bmdlKSwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyAgICBlbHNlCisgICAgICAgIGV2ZW50SGFu
ZGxlZCA9IF9kYXRhLT5fcGFnZS0+aW5zZXJ0VGV4dChldmVudFRleHQsIHJlcGxhY2VtZW50UmFu
Z2UubG9jYXRpb24sIE5TTWF4UmFuZ2UocmVwbGFjZW1lbnRSYW5nZSkpOwogCiAgICAgaWYgKHBh
cmFtZXRlcnMpCiAgICAgICAgIHBhcmFtZXRlcnMtPmV2ZW50SW50ZXJwcmV0YXRpb25IYWRTaWRl
RWZmZWN0cyB8PSBldmVudEhhbmRsZWQ7CkBAIC0yODU2LDkgKzI4NzEsOSBAQCBzdGF0aWMgTlNT
dHJpbmcgKnBhdGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5TU3RyaW5nICpwYXRoKQogICAg
IHJldHVybiBfZGF0YS0+X3NwZWxsQ2hlY2tlckRvY3VtZW50VGFnOwogfQogCi0tICh2b2lkKWhh
bmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDooTlNTdHJpbmcqKXJlc3VsdAorLSAodm9pZCloYW5k
bGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDooTlNTdHJpbmcqKXRleHQKIHsKLSAgICBfZGF0YS0+
X3BhZ2UtPmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHJlc3VsdCk7CisgICAgX2RhdGEt
Pl9wYWdlLT5oYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdCh0ZXh0KTsKIH0KIAogQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJu
YWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgK
aW5kZXggNmI2ZWI2YmY0MWQxOTE0ZDNkNmQwNmYwZjIzMjYzMGMzOTJiODA1Yi4uNDNjNmUyYmFh
YTA1MGRlNGI2MjA1ODg0ZDYyZTdhMjMxNjEzNWU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCkBAIC05Niw2ICs5Niw2IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogLSAodm9pZClfY2FjaGVXaW5kb3dCb3R0b21Db3JuZXJSZWN0Owog
CiAtIChOU0ludGVnZXIpc3BlbGxDaGVja2VyRG9jdW1lbnRUYWc7Ci0tICh2b2lkKWhhbmRsZUNv
cnJlY3Rpb25QYW5lbFJlc3VsdDooTlNTdHJpbmcqKXJlc3VsdDsKKy0gKHZvaWQpaGFuZGxlQWNj
ZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6KE5TU3RyaW5nKil0ZXh0OwogCiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA3YzgxNTEwMWRmYTcyZGQ0OTNhOTQwNjllZmE1
MjI1ZGQxZjI3ODM1Li40ZTAyYmU2OWEwOGRhNWI5N2E3NDQ0NGUzYmMyMjhjYzZmODViOTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNp
bmNsdWRlICJQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUuaCIKIAogT0JKQ19DTEFTUyBXS1Zp
ZXc7CitPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKICNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0xOTIsNiArMTkzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZWNvbW1lbmRlZFNjcm9sbGJhclN0eWxlRGlkQ2hhbmdlKGludDMyX3QgbmV3U3R5bGUpID0gMDsK
ICAgICAKICAgICB2aXJ0dWFsIFdLVmlldyogd2tWaWV3KCkgY29uc3QgPSAwOworCisgICAgdmly
dHVhbCB1aW50NjRfdCBhZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5T
VGV4dEFsdGVybmF0aXZlcz4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURpY3RhdGlv
bkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSA9IDA7CiAjZW5kaWYKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1lKCkgY29uc3Qg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3Y2Mz
MGY0MGUxNDhmMjVhYTk0NzljZDgxMGQ5MmVkMjRkODM0MWQzLi43YTBmYzljMWE0NjRlNjAyYzIy
MDlmZGE1MGU3MjY1ZmViYWE1OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtMzc2Nyw2ICszNzY3LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5k
bGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCkKICAgICAgICAg
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVBbHRlcm5hdGl2ZVRleHRV
SVJlc3VsdChyZXN1bHQpLCBtX3BhZ2VJRCwgMCk7CiAjZW5kaWYKIH0KKworI2lmIFVTRShESUNU
QVRJT05fQUxURVJOQVRJVkVTKQordm9pZCBXZWJQYWdlUHJveHk6OnJlbW92ZURpY3RhdGlvbkFs
dGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIG1fcGFnZUNsaWVu
dC0+cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpOworfQorI2Vu
ZGlmCisKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGIxZTdlZWEwNWJlNTll
NGFkOGQ5MGNjNDNiMmU3MTBiYjhlN2MzNjUuLjIwYzYwY2NiNGNhN2E2ZmE4NGExMzIzOTc3NDYw
MjE1Y2M3ZDFlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgogI2luY2x1ZGUg
IldlYlJlc291cmNlTG9hZENsaWVudC5oIgogI2luY2x1ZGUgIldlYlVJQ2xpZW50LmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RyYWdBY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnU2Vzc2lvbi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgpAQCAtOTEsNiArOTIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgY2xhc3MgSW50U2l6ZTsKICAgICBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7
CiAgICAgc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3M7CisgICAgc3RydWN0IFRleHRBbHRlcm5h
dGl2ZVdpdGhSYW5nZTsKICAgICBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0OwogICAgIHN0cnVj
dCBWaWV3cG9ydEF0dHJpYnV0ZXM7CiAgICAgc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwpAQCAtMzQ3
LDYgKzM0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbmZpcm1Db21wb3NpdGlvbigpOwogICAg
IHZvaWQgY2FuY2VsQ29tcG9zaXRpb24oKTsKICAgICBib29sIGluc2VydFRleHQoY29uc3QgU3Ry
aW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxh
Y2VtZW50UmFuZ2VFbmQpOworICAgIGJvb2wgaW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmlu
ZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNl
bWVudFJhbmdlRW5kLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICB2b2lkIGdldE1hcmtlZFJhbmdlKHVp
bnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCk7CiAgICAgdm9pZCBnZXRTZWxlY3Rl
ZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCk7CiAgICAgdm9pZCBn
ZXRBdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRf
dCBsZW5ndGgsIEF0dHJpYnV0ZWRTdHJpbmcmKTsKQEAgLTg3OCw2ICs4ODEsOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oaW50MzJfdCByZWFzb24sIFN0
cmluZyYgcmVzdWx0KTsKICAgICB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoaW50
MzJfdCByZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogI2VuZGlmIC8vICFkZWZpbmVkKEJVSUxESU5HX09O
X1NOT1dfTEVPUEFSRCkKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICB2b2lk
IHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsK
KyNlbmRpZgogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogICAgIHZvaWQgY2xlYXJMb2FkRGVw
ZW5kZW50Q2FsbGJhY2tzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkNzE4MTE1NTFkNDNhMDI3ZTY2OGFiYzhkMmY5ZDlj
ODM2M2Y2ZTVjLi5kMWUxMWUxMGM3NjcxYzJmMDUyMWRiN2JhNDgwZDYyYzZhOGZmZGUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
QEAgLTI3OCw2ICsyNzgsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBSZWNv
cmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9uc2VUeXBlLCBTdHJpbmcgcmVw
bGFjZWRTdHJpbmcsIFN0cmluZyByZXBsYWNlbWVudFN0cmluZyk7CiAjZW5kaWYKIAorI2lmIFVT
RShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIFJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZl
cyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oV0lO
KQogICAgICMgV2luZG93cyA3IEdlc3R1cmUgTWVzc2FnZXMKICAgICBTZXRHZXN0dXJlUmVhY2hl
ZFNjcm9sbGluZ0xpbWl0KGJvb2wgbGltaXRSZWFjaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbQppbmRleCA5NDE3MWY3MzdhYjM2ZDVmZmRh
NTg3Njc4ZDJmZDg2MDA0NTc0NDU4Li4wOTY0MWNkMDgzYmFkMTRhZTNlNmI0MGJmMDQ2MDNjMzZh
YWNiZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rp
b25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25Q
YW5lbC5tbQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ29ycmVjdGlvblBhbmVsOjpoYW5kbGVB
Y2NlcHRlZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJlcGxhY2VtZW50LCBOCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAotICAgIFttX3ZpZXcuZ2V0KCkgaGFuZGxlQ29ycmVjdGlvblBh
bmVsUmVzdWx0OmFjY2VwdGVkUmVwbGFjZW1lbnRdOworICAgIFttX3ZpZXcuZ2V0KCkgaGFuZGxl
QWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6YWNjZXB0ZWRSZXBsYWNlbWVudF07CiAgICAgbV92aWV3
LmNsZWFyKCk7CiAgICAgaWYgKGFjY2VwdGVkUmVwbGFjZW1lbnQpCiAgICAgICAgIG1fcmVzdWx0
Rm9yRGlzbWlzc2FsLmFkb3B0TlMoW2FjY2VwdGVkUmVwbGFjZW1lbnQgY29weV0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCAzNTg0
NzE4MmUxNDBiN2Q4NGQwOTgzNDZiNjhiNzNlYjFhMDg2NGYwLi42Nzg5YWQ5ZGUwYmIyNjJjZjM5
YWYyZTE0MjcwMzI4NzY1YTA3OWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMzgsNyArMzgsOSBAQAogI2ltcG9ydCAiVGV4dENo
ZWNrZXIuaCIKICNpbXBvcnQgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vz
c1Byb3h5LmgiCisjaW1wb3J0IDxXZWJDb3JlL0RpY3RhdGlvbkFsdGVybmF0aXZlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2lt
cG9ydCA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIApAQCAtMTk4LDYgKzIwMCwzNSBA
QCBib29sIFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2
NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydAogICAgIHJldHVybiBoYW5kbGVkOwogfQogCitib29s
IFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWlu
dDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5k
LCBjb25zdCBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0ZXJu
YXRpdmVzV2l0aFJhbmdlKQoreworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAg
IGlmIChkaWN0YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFuZ2UuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gaW5zZXJ0VGV4dCh0ZXh0LCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50
UmFuZ2VFbmQpOworCisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXM7
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhS
YW5nZS5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFu
Z2UmIGFsdGVybmF0aXZlV2l0aFJhbmdlID0gZGljdGF0aW9uQWx0ZXJuYXRpdmVzV2l0aFJhbmdl
W2ldOworICAgICAgICB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0ID0gbV9wYWdlQ2xpZW50LT5h
ZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoYWx0ZXJuYXRpdmVXaXRoUmFuZ2UuYWx0ZXJuYXRpdmUp
OworICAgICAgICBpZiAoZGljdGF0aW9uQ29udGV4dCkKKyAgICAgICAgICAgIGRpY3RhdGlvbkFs
dGVybmF0aXZlcy5hcHBlbmQoRGljdGF0aW9uQWx0ZXJuYXRpdmUoYWx0ZXJuYXRpdmVXaXRoUmFu
Z2UucmFuZ2UubG9jYXRpb24sIGFsdGVybmF0aXZlV2l0aFJhbmdlLnJhbmdlLmxlbmd0aCwgZGlj
dGF0aW9uQ29udGV4dCkpOworICAgIH0KKworICAgIGlmIChkaWN0YXRpb25BbHRlcm5hdGl2ZXMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gaW5zZXJ0VGV4dCh0ZXh0LCByZXBsYWNlbWVudFJh
bmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQpOworCisgICAgYm9vbCBoYW5kbGVkID0gdHJ1
ZTsKKyAgICBwcm9jZXNzKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnREaWN0
YXRlZFRleHQodGV4dCwgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdlRW5k
LCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpLCBNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RGljdGF0
ZWRUZXh0OjpSZXBseShoYW5kbGVkLCBtX2VkaXRvclN0YXRlKSwgbV9wYWdlSUQpOworICAgIHJl
dHVybiBoYW5kbGVkOworI2Vsc2UKKyAgICByZXR1cm4gaW5zZXJ0VGV4dCh0ZXh0LCByZXBsYWNl
bWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQpOworI2VuZGlmCit9CisKIHZvaWQg
V2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5nZSh1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90
JiBsZW5ndGgpCiB7CiAgICAgbG9jYXRpb24gPSBOU05vdEZvdW5kOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggYjgwNWFkYWY1ODEyYWY1ZjIzY2VjNGExYjVjOTJk
N2M2OTM2ZTJjNC4uODE3YjAzYzRhMjBiYWVmNjgzNzY4NTFkNTI4MzYwZGY4YjExYzdlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCkBAIC00MSw2ICs0MSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0FsdGVybmF0aXZlKFdlYkNvcmU6OlJlYXNv
bkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3Ry
aW5nIGRpc21pc3NBbHRlcm5hdGl2ZVNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0Fs
dGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMo
dWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgT1ZFUlJJREU7CiBwcml2YXRlOgogICAgIFdlYlBh
Z2UgKm1fcGFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50LmNwcAppbmRleCA2YWJiNjkzNTQxZDA4NTZlZTAxZmRjNjNlODE4Zjk4NTY2NGY2MGRhLi44
NzQ4ZTcwNTM1ZjFhNTgyZDAxZjZiMDNhMDNlZTRiMjY0ZTQ1NTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAKQEAgLTc2LDQgKzc2LDEzIEBAIHZv
aWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNl
KEF1dG9jb3JyZWN0aW9uUmVzcG9uCiAjZW5kaWYKIH0KIAordm9pZCBXZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQ6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25D
b250ZXh0KQoreworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMo
ZGljdGF0aW9uQ29udGV4dCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZGljdGF0aW9uQ29u
dGV4dCk7CisjZW5kaWYKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKaW5kZXggYTNiZGEyOWM2N2UwOTczYTgzZDUzOTg5ODMyZWRiNjkyM2I2NTY3
NS4uMmM0YWI4MGRkYWMwZmQ0MzVmZDlhNDRkOWNmYjk2MzVkYjQ4YzcwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00OCw2ICs0OCw3IEBACiAj
aW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5o
IgogI2luY2x1ZGUgIldlYlVuZG9TdGVwLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EaWN0YXRpb25B
bHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgpA
QCAtNDE0LDcgKzQxNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3VsZERlbGF5V2luZG93T3Jk
ZXJpbmdFdmVudChjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQmLCBib29sJiByZXN1bHQpOwog
ICAgIHZvaWQgYWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVyLCBjb25zdCBXZWJLaXQ6
OldlYk1vdXNlRXZlbnQmLCBib29sJiByZXN1bHQpOwogICAgIGJvb2wgcGVyZm9ybU5vbkVkaXRp
bmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbnN0IFN0cmluZyYpOwotCisgICAgdm9pZCBpbnNlcnRE
aWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdl
U3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBi
b29sJiBoYW5kbGVkLCBFZGl0b3JTdGF0ZSYgbmV3U3RhdGUpOwogI2VsaWYgUExBVEZPUk0oV0lO
KQogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25T
dHJpbmcpOwogICAgIHZvaWQgc2V0Q29tcG9zaXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGNvbXBv
c2l0aW9uU3RyaW5nLCBjb25zdCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVy
bGluZT4mIHVuZGVybGluZXMsIHVpbnQ2NF90IGN1cnNvclBvc2l0aW9uKTsKQEAgLTQ5Niw3ICs0
OTcsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVubWFya0FsbE1pc3NwZWxsaW5ncygpOwogICAg
IHZvaWQgdW5tYXJrQWxsQmFkR3JhbW1hcigpOwotCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVm
aW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAgICAgdm9pZCBoYW5kbGVBbHRlcm5hdGl2
ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBhN2Zk
ZWU4OWM3Y2ViYjgzOTVmYzA3NGViZjFjMTUwZTY2MDg5OTBkLi4yMDdiNzYxZWIzM2FkYWYzNDE2
NTU1Y2EzOWZmN2M1MTA2NGJiNDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjQ1LDYgKzI0NSw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2UgewogICAgIEV4ZWN1dGVLZXlwcmVzc0NvbW1hbmRzKFZlY3RvcjxX
ZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+IHNhdmVkQ29tbWFuZHMpIC0+IChib29sIGhhbmRsZWQs
IFdlYktpdDo6RWRpdG9yU3RhdGUgbmV3U3RhdGUpCiAgICAgU2hvdWxkRGVsYXlXaW5kb3dPcmRl
cmluZ0V2ZW50KFdlYktpdDo6V2ViTW91c2VFdmVudCBldmVudCkgLT4gKGJvb2wgcmVzdWx0KQog
ICAgIEFjY2VwdHNGaXJzdE1vdXNlKGludCBldmVudE51bWJlciwgV2ViS2l0OjpXZWJNb3VzZUV2
ZW50IGV2ZW50KSAtPiAoYm9vbCByZXN1bHQpCisgICAgSW5zZXJ0RGljdGF0ZWRUZXh0KFdURjo6
U3RyaW5nIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVw
bGFjZW1lbnRSYW5nZUVuZCwgV1RGOjpWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRp
dmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlcykgLT4gKGJvb2wgaGFuZGxlZCwgV2ViS2l0OjpFZGl0
b3JTdGF0ZSBuZXdTdGF0ZSkKICNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikKICAgICAvLyBGSVhN
RTogVW5pZnkgd2l0aCBNYWMgY291bnRlcnBhcnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDc0NWIyMGJmMTBhMjVh
NWQ4YjEyZDMzZmQyOGE0ODIzZTNiOTc5ZWQuLjk2ZWY0ODE3NjU0NDdmMGYwYjQ3OTA4MTViNmVm
OTM0YzViMmI5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTI5MCw2ICsyOTAsMjEgQEAgdm9pZCBXZWJQYWdlOjpp
bnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0
YXJ0LCB1aW4KICAgICBuZXdTdGF0ZSA9IGVkaXRvclN0YXRlKCk7CiB9CiAKK3ZvaWQgV2ViUGFn
ZTo6aW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFj
ZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kLCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxv
Y2F0aW9ucywgYm9vbCYgaGFuZGxlZCwgRWRpdG9yU3RhdGUmIG5ld1N0YXRlKQoreworICAgIEZy
YW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOworCisgICAgaWYgKHJlcGxhY2VtZW50UmFuZ2VTdGFydCAhPSBOU05vdEZvdW5kKSB7Cisg
ICAgICAgIFJlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9IGNvbnZlcnRUb1JhbmdlKGZy
YW1lLCBOU01ha2VSYW5nZShyZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VF
bmQgLSByZXBsYWNlbWVudFJhbmdlU3RhcnQpKTsKKyAgICAgICAgaWYgKHJlcGxhY2VtZW50UmFu
Z2UpCisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihWaXNpYmxl
U2VsZWN0aW9uKHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCksIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7
CisgICAgfQorCisgICAgQVNTRVJUKCFmcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkp
OworICAgIGhhbmRsZWQgPSBmcmFtZS0+ZWRpdG9yKCktPmluc2VydERpY3RhdGVkVGV4dCh0ZXh0
LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgbV9rZXlib2FyZEV2ZW50QmVpbmdJbnRl
cnByZXRlZCk7CisgICAgbmV3U3RhdGUgPSBlZGl0b3JTdGF0ZSgpOworfQorCiB2b2lkIFdlYlBh
Z2U6OmdldE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCkK
IHsKICAgICBsb2NhdGlvbiA9IE5TTm90Rm91bmQ7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTA1OTcxMDJkYWYzYmE4NjZmZjBhZmFmYWVlZjNj
ZjFiNzY5NDNmNC4uOTU0YWQwMWIzZDM3NGNjN2FjNjdiZTA0YWNkMzA4MDYxYTZlMzI3ZSAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDEyLTA0LTE4ICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE9u
IE9TIFgsIG1hcmsgdGV4dCB3aXRoIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZSB3aXRoIGJsdWUgdW5k
ZXJsaW5lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODMwNDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCBpbnRlcmZhY2UgdG8gc2ltdWxhdGUgZGljdGF0ZWQgdGV4dCBpbnB1dC4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyLm06CisgICAgICAgICgr
W1RleHRJbnB1dENvbnRyb2xsZXIgaXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDpdKToK
KyAgICAgICAgKCtbVGV4dElucHV0Q29udHJvbGxlciB3ZWJTY3JpcHROYW1lRm9yU2VsZWN0b3I6
XSk6CisgICAgICAgICgtW1RleHRJbnB1dENvbnRyb2xsZXIgZGljdGF0ZWRTdHJpbmdXaXRoUHJp
bWFyeVN0cmluZzphbHRlcm5hdGl2ZTphbHRlcm5hdGl2ZU9mZnNldDphbHRlcm5hdGl2ZUxlbmd0
aDpdKToKKwogMjAxMi0wNC0xOCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBGaXggY3Jhc2ggaW4gY2hyb21pdW0ucHkgYWZ0ZXIgcjExNDg3Ny4KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyLm0gYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlci5tCmluZGV4IGY3ODA3
OTQ0NjM2OWU3OGM5ZjQ4Y2UwODE1ZWYxY2NjOGRmMGI5OWQuLmFmZWIxNmU0ZDI0MmIyYjYwMjBj
MDJlNDQxYWU4M2Q3NDBlOTMyZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9UZXh0SW5wdXRDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rl
eHRJbnB1dENvbnRyb2xsZXIubQpAQCAtMzEsNiArMzEsMTAgQEAKIAogI2ltcG9ydCAiRHVtcFJl
bmRlclRyZWVNYWMuaCIKICNpbXBvcnQgPEFwcEtpdC9OU0lucHV0TWFuYWdlci5oPgorI2lmICFk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1df
TEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTElPTikKKyNkZWZpbmUgU1VQUE9SVF9E
SUNUQVRJT05fQUxURVJOQVRJVkVTCisjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVz
Lmg+CisjZW5kaWYKICNpbXBvcnQgPFdlYktpdC9XZWJEb2N1bWVudC5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dlYkZyYW1lLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWVQcml2YXRlLmg+CkBAIC0x
NzAsNyArMTc0LDggQEAgKyAoQk9PTClpc1NlbGVjdG9yRXhjbHVkZWRGcm9tV2ViU2NyaXB0OihT
RUwpYVNlbGVjdG9yCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGNoYXJh
Y3RlckluZGV4Rm9yUG9pbnRYOlk6KQogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxl
Y3Rvcih2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0KQogICAgICAgICAgICAgfHwgYVNlbGVj
dG9yID09IEBzZWxlY3RvcihhdHRyaWJ1dGVkU3RyaW5nV2l0aFN0cmluZzopCi0gICAgICAgICAg
ICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNldElucHV0TWV0aG9kSGFuZGxlcjopKQorICAg
ICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihzZXRJbnB1dE1ldGhvZEhhbmRsZXI6
KQorICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihkaWN0YXRlZFN0cmluZ1dp
dGhQcmltYXJ5U3RyaW5nOmFsdGVybmF0aXZlOmFsdGVybmF0aXZlT2Zmc2V0OmFsdGVybmF0aXZl
TGVuZ3RoOikpCiAgICAgICAgIHJldHVybiBOTzsKICAgICByZXR1cm4gWUVTOwogfQpAQCAtMTk0
LDcgKzE5OSw5IEBAICsgKE5TU3RyaW5nICopd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOihTRUwp
YVNlbGVjdG9yCiAgICAgZWxzZSBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihhdHRyaWJ1dGVk
U3RyaW5nV2l0aFN0cmluZzopKQogICAgICAgICByZXR1cm4gQCJtYWtlQXR0cmlidXRlZFN0cmlu
ZyI7IC8vIGp1c3QgYSBmYWN0b3J5IG1ldGhvZCwgZG9lc24ndCBjYWxsIGludG8gTlNUZXh0SW5w
dXQKICAgICBlbHNlIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNldElucHV0TWV0aG9kSGFu
ZGxlcjopKQotICAgICAgICByZXR1cm4gQCJzZXRJbnB1dE1ldGhvZEhhbmRsZXIiOyAKKyAgICAg
ICAgcmV0dXJuIEAic2V0SW5wdXRNZXRob2RIYW5kbGVyIjsKKyAgICBlbHNlIGlmIChhU2VsZWN0
b3IgPT0gQHNlbGVjdG9yKGRpY3RhdGVkU3RyaW5nV2l0aFByaW1hcnlTdHJpbmc6YWx0ZXJuYXRp
dmU6YWx0ZXJuYXRpdmVPZmZzZXQ6YWx0ZXJuYXRpdmVMZW5ndGg6KSkKKyAgICAgICAgcmV0dXJu
IEAibWFrZURpY3RhdGVkU3RyaW5nIjsKIAogICAgIHJldHVybiBuaWw7CiB9CkBAIC0zNzUsNiAr
MzgyLDI3IEBAIC0gKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKilhdHRyaWJ1dGVkU3RyaW5n
V2l0aFN0cmluZzooTlNTdHJpbmcgKilhU3RyaW5nCiAgICAgcmV0dXJuIFtbW05TTXV0YWJsZUF0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOmFTdHJpbmddIGF1dG9yZWxlYXNl
XTsKIH0KIAorLSAoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyopZGljdGF0ZWRTdHJpbmdXaXRo
UHJpbWFyeVN0cmluZzooTlNTdHJpbmcqKWFTdHJpbmcgYWx0ZXJuYXRpdmU6KE5TU3RyaW5nKilh
bHRlcm5hdGl2ZSBhbHRlcm5hdGl2ZU9mZnNldDooaW50KW9mZnNldCBhbHRlcm5hdGl2ZUxlbmd0
aDooaW50KWxlbmd0aAoreworI2lmIGRlZmluZWQoU1VQUE9SVF9ESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQorICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGRpY3RhdGVkU3RyaW5nID0gW3Nl
bGYgYXR0cmlidXRlZFN0cmluZ1dpdGhTdHJpbmc6YVN0cmluZ107CisgICAgTlNSYW5nZSByYW5n
ZVdpdGhBbHRlcm5hdGl2ZSA9IE5TTWFrZVJhbmdlKChOU1VJbnRlZ2VyKW9mZnNldCwgKE5TVUlu
dGVnZXIpbGVuZ3RoKTsKKyAgICBOU1N0cmluZyogc3ViU3RyaW5nV2l0aEFsdGVybmF0aXZlID0g
W2FTdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOnJhbmdlV2l0aEFsdGVybmF0aXZlXTsKKyAgICBp
ZiAoIXN1YlN0cmluZ1dpdGhBbHRlcm5hdGl2ZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAg
IE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVPYmplY3QgPSBbW1tOU1RleHRBbHRlcm5h
dGl2ZXMgYWxsb2NdIGluaXRXaXRoUHJpbWFyeVN0cmluZzpzdWJTdHJpbmdXaXRoQWx0ZXJuYXRp
dmUgYWx0ZXJuYXRpdmVTdHJpbmdzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDphbHRlcm5hdGl2
ZV1dIGF1dG9yZWxlYXNlXTsKKyAgICBpZiAoIWFsdGVybmF0aXZlT2JqZWN0KQorICAgICAgICBy
ZXR1cm4gbmlsOworCisgICAgW2RpY3RhdGVkU3RyaW5nIGFkZEF0dHJpYnV0ZTpOU1RleHRBbHRl
cm5hdGl2ZXNBdHRyaWJ1dGVOYW1lIHZhbHVlOmFsdGVybmF0aXZlT2JqZWN0IHJhbmdlOnJhbmdl
V2l0aEFsdGVybmF0aXZlXTsKKworICAgIHJldHVybiBkaWN0YXRlZFN0cmluZzsKKyNlbHNlCisg
ICAgcmV0dXJuIG5pbDsKKyNlbmRpZgorfQorCiAtICh2b2lkKXNldElucHV0TWV0aG9kSGFuZGxl
cjooV2ViU2NyaXB0T2JqZWN0ICopaGFuZGxlcgogewogICAgIGlmIChpbnB1dE1ldGhvZEhhbmRs
ZXIgPT0gaGFuZGxlcikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3OThjODcxNTlkYzI4ZWU4YTdhYjNlYzlmZjlhNGE5Zjhl
ZDk0NjdmLi5iZWRiOGVkNThjNmRlNTIzYTQ5Yjc3OTg2ZjBiZDY2OGZkM2Q4YmM2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTItMDQtMTggIEppYSBQdSAgPGpwdUBhcHBsZS5jb20+CisKKyAg
ICAgICAgT24gT1MgWCwgbWFyayB0ZXh0IHdpdGggZGljdGF0aW9uIGFsdGVybmF0aXZlIHdpdGgg
Ymx1ZSB1bmRlcmxpbmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MzA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogcGxhdGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMtbGlvbi9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy1zbm93bGVvcGFyZC9T
a2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0
ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJu
YXRpdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQv
aW5zZXJ0LWRpY3RhdGVkLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQtdGV4dC5odG1sOiBBZGRlZC4K
KwogMjAxMi0wNC0xOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgR1RLIHRlc3RfZXhwZWN0YXRpb25zIHVwZGF0ZS4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9Ta2lwcGVkCmluZGV4IGRiMzcxYTA3NTkwYmM1OGZl
MmViNmU3Y2ViMjBhYzQyYjUwNWQ4NzIuLjU5YzNmZTAwOTFhOTBiYjEyM2Y1ZGFkNmUxYWMzYTU0
NGNmNjNlNDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL1Nr
aXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZApAQCAt
MjE5LDYgKzIxOSwxMCBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L3dlYmdsLXJlbW90ZS1yZWFkLXJl
bW90ZS1pbWFnZS1hbGxvd2VkLmh0bWwKIGh0dHAvdGVzdHMvc2VjdXJpdHkvd2ViZ2wtcmVtb3Rl
LXJlYWQtcmVtb3RlLWltYWdlLWFsbG93ZWQtd2l0aC1jcmVkZW50aWFscy5odG1sCiBodHRwL3Rl
c3RzL3NlY3VyaXR5L3dlYmdsLXJlbW90ZS1yZWFkLXJlbW90ZS1pbWFnZS1ibG9ja2VkLW5vLWNy
b3Nzb3JpZ2luLmh0bWwKIAorIyBEaWN0YXRlZCB0ZXh0IGlucHV0IGlzIG5vdCBzdXBwb3J0ZWQg
b24gdGhpcyBwbGF0Zm9ybQorcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRl
ZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUuaHRtbAorcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQv
aW5zZXJ0LWRpY3RhdGVkLXRleHQuaHRtbAorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3RzIGJlbG93IHRoaXMgcG9pbnQg
YXJlIGZhaWxpbmcgb25seSBvbiBzb21lIHNsYXZlcy4KICMgaHR0cDovL3dlYmtpdC5vcmcvYi81
NjU1MSBjb3ZlcnMgdGhlIGdlbmVyYWwgaXNzdWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtbGlvbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxpb24v
U2tpcHBlZAppbmRleCA3MDJiNzhjOGIyMDljNjI0YjgzMGExYWZhZTg5ZDM2NmM5ZWZmODQwLi45
ZDgyNTlhMWIxOTg3Y2IyNmJlN2NmZDZjOGE5NzJiYWNiYzk2YWU2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGlvbi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy1saW9uL1NraXBwZWQKQEAgLTM4LDYgKzM4LDEwIEBAIGVkaXRpbmcvcGFzdGVib2Fy
ZC81NDc4MjUwLmh0bWwKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgyMDc5CiBlZGl0aW5nL2luc2VydGluZy9pbnNlcnQtYmctZm9udC5odG1sCiAKKyMgRGljdGF0
ZWQgdGV4dCBpbnB1dCBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0KK3BsYXRmb3Jt
L21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLmh0
bWwKK3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0Lmh0bWwK
KwogIyAtLS0gTWF0aCBNTCAtLS0KIAogIyBUaGVzZSBoYXZlIGRpZmZlcmVudCBtZXRyaWNzLCBh
bmQgcmVxdWlyZSBpbnZlc3RpZ2F0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtc25vd2xlb3BhcmQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1zbm93
bGVvcGFyZC9Ta2lwcGVkCmluZGV4IGY0YzQ0YzY1NTJjOTQ2OWRhYzkwMjMwM2QwYmE1NGMzMWYy
ODRjYzQuLmY5ZDU5Nzc5MGNkY2E0NGRlMzRlOTRhOTFlNmQ5NWU3MDZiNTE2ZGIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1zbm93bGVvcGFyZC9Ta2lwcGVkCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy1zbm93bGVvcGFyZC9Ta2lwcGVkCkBAIC0xOTcsMyArMTk3
LDcgQEAgZmFzdC9oaWRwaQogIyBGcmFtZTo6ZmluZFN0cmluZyBkb2VzIG5vdGhpbmcgb24gcGFn
ZXMgdGhhdCBwcmV2ZW50IHNlbGVjdGlvbgogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDAzNjEKIGVkaXRpbmcvdGV4dC1pdGVyYXRvci9maW5kU3RyaW5nLXNlbGVj
dGlvbi1kaXNhYmxlZC5odG1sCisKKyMgRGljdGF0ZWQgdGV4dCBpbnB1dCBpcyBub3Qgc3VwcG9y
dGVkIG9uIHRoaXMgcGxhdGZvcm0KK3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGlj
dGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLmh0bWwKK3BsYXRmb3JtL21hYy9lZGl0aW5nL2lu
cHV0L2luc2VydC1kaWN0YXRlZC10ZXh0Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0
aXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0
L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iNTdjNzhjYTYzOGI1N2Y4OTQ1YjllMDE4ZDVjMDljOTZkZmZhNDYzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0
YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAor
RWRpdGluZyB0ZXh0IHRoYXQgaGFzIERpY3RhdGlvbkFsdGVybmF0aXZlcyBtYXJrZXIgd2hvdWxk
IGNhdXNlIHRoZSBtYXJrZXIgdG8gYmUgcmVtb3ZlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCit0aGlzIGlzIGEgdGV4CitQQVNTIG1hcmtlZFRleHQgaXMgIiIKKworVEVTVCBDT01Q
TEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQv
ZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUuaHRtbCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0
aXZlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdmMDA3OTAzNjYyNjVmMGQwZWJiMGNiZDZhYmE2MTYwMmRl
OWQzZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLmh0bWwKQEAgLTAsMCAr
MSw1OSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Citib2R5IHsgbWFy
Z2luOiAwOyBwYWRkaW5nOiAwIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwcmUgaWQ9
ImRlc2NyaXB0aW9uIj48L3ByZT4KKzxkaXYgaWQ9InRlc3QiIGNvbnRlbnRlZGl0YWJsZT48L2Rp
dj4KKzxwIGlkPSJjb25zb2xlIj48L3A+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CisgICAgZGVzY3JpcHRpb24oIkVkaXRpbmcgdGV4dCB0aGF0IGhhcyBEaWN0YXRpb25BbHRlcm5h
dGl2ZXMgbWFya2VyIHdob3VsZCBjYXVzZSB0aGUgbWFya2VyIHRvIGJlIHJlbW92ZWQuIik7CisK
KyAgICB2YXIgY29uc29sZV9tZXNzYWdlcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7
CisgICAgCisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCisgICAgeworICAgICAgICB2YXIgaXRl
bSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgIGl0ZW0uYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgICAgICBjb25zb2xlX21l
c3NhZ2VzLmFwcGVuZENoaWxkKGl0ZW0pOworICAgIH0KKyAgICAKKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIAorICAgICAgICB0cnkgeworCisgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB2YXIg
dGVzdEFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworICAgICAgICAgICAg
dGVzdEFyZWEuZm9jdXMoKTsKKworICAgICAgICAgICAgdmFyIGRpY3RhdGVkU3RyaW5nID0gdGV4
dElucHV0Q29udHJvbGxlci5tYWtlRGljdGF0ZWRTdHJpbmcoInRoaXMgaXMgYSB0ZXh0IiwgInRl
c3QiLCAxMCwgNCk7CisgICAgICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxs
Iik7CisgICAgICAgICAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmluc2VydFRleHQoZGljdGF0ZWRT
dHJpbmcpOworICAgICAgICAgICAgdGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoImRlbGV0
ZUJhY2t3YXJkOiIpOworCisgICAgICAgICAgICB2YXIgbWFya2VkVGV4dCA9ICIiOworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICB2YXIgdGVzdFRl
eHQgPSB0ZXN0QXJlYS5maXJzdENoaWxkOworICAgICAgICAgICAgICAgIHZhciBtYXJrZWQgPSBp
bnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRlc3RUZXh0LCAiRGljdGF0aW9uQWx0ZXJuYXRp
dmVzIiwgMCk7CisgICAgICAgICAgICAgICAgaWYgKG1hcmtlZCkKKyAgICAgICAgICAgICAgICAg
ICAgbWFya2VkVGV4dCA9IG1hcmtlZC50b1N0cmluZygpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIm1hcmtlZFRleHQiLCAiIik7CisgICAgICAg
ICAgICBkb2N1bWVudC53cml0ZSgiVEVTVCBDT01QTEVURSIpOworCisgICAgICAgIH0gY2F0Y2gg
KGV4KSB7CisgICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiRXhjZXB0aW9uOiAiICsgZXguZGVz
Y3JpcHRpb24pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGNvbnNvbGVfbWVzc2FnZXMpOworICAgICAg
ICAKKyAgICB9IGVsc2UgeworICAgICAgICBkb2N1bWVudC53cml0ZSgiKGNhbm5vdCBydW4gaW50
ZXJhY3RpdmVseSkiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0
YXRlZC10ZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDQ2
MTczMmVlZWYzM2YyMGYwODA3MGY1MTFkOWRjZmMwMjBiYTAxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRl
eHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorV2hlbiBpbnNlcnRpbmcgZGljdGF0ZWQg
dGV4dCwgcmFuZ2Ugb2YgdGV4dCB0aGF0IGhhcyBhbHRlcm5hdGl2ZSB0ZXh0IGlzIGF0dGFjaGVk
IGFzIERpY3RhdGlvbkFsdGVybmF0aXZlcyBtYXJrZXIuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKwordGhpcyBpcyBhIHRleHQKK1BBU1MgbWFya2VkVGV4dCBpcyAidGV4dCIKKworVEVT
VCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcv
aW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJh
MWU0M2JkOTllM2QyNWUwMjA4MzAzMGJlN2YzMmY4YzVkNDQxNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10
ZXh0Lmh0bWwKQEAgLTAsMCArMSw1OCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c3R5bGU+Citib2R5IHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwIH0KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwcmUgaWQ9ImRlc2NyaXB0aW9uIj48L3ByZT4KKzxkaXYgaWQ9InRlc3QiIGNv
bnRlbnRlZGl0YWJsZT48L2Rpdj4KKzxwIGlkPSJjb25zb2xlIj48L3A+Cis8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+CisgICAgZGVzY3JpcHRpb24oIldoZW4gaW5zZXJ0aW5nIGRpY3Rh
dGVkIHRleHQsIHJhbmdlIG9mIHRleHQgdGhhdCBoYXMgYWx0ZXJuYXRpdmUgdGV4dCBpcyBhdHRh
Y2hlZCBhcyBEaWN0YXRpb25BbHRlcm5hdGl2ZXMgbWFya2VyLiIpOworCisgICAgdmFyIGNvbnNv
bGVfbWVzc2FnZXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOworICAgIAorICAgIGZ1
bmN0aW9uIGxvZyhtZXNzYWdlKQorICAgIHsKKyAgICAgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICAgICAgY29uc29sZV9tZXNzYWdlcy5hcHBlbmRD
aGlsZChpdGVtKTsKKyAgICB9CisgICAgCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKworICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdmFyIHRlc3RBcmVhID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKKyAgICAgICAgICAgIHRlc3RBcmVhLmZvY3Vz
KCk7CisKKyAgICAgICAgICAgIHZhciBkaWN0YXRlZFN0cmluZyA9IHRleHRJbnB1dENvbnRyb2xs
ZXIubWFrZURpY3RhdGVkU3RyaW5nKCJ0aGlzIGlzIGEgdGV4dCIsICJ0ZXN0IiwgMTAsIDQpOwor
ICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFsbCIpOworICAgICAgICAg
ICAgdGV4dElucHV0Q29udHJvbGxlci5pbnNlcnRUZXh0KGRpY3RhdGVkU3RyaW5nKTsKKworICAg
ICAgICAgICAgdmFyIG1hcmtlZFRleHQgPSAiIjsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgdmFyIHRlc3RUZXh0ID0gdGVzdEFyZWEuZmlyc3RD
aGlsZDsKKyAgICAgICAgICAgICAgICB2YXIgbWFya2VkID0gaW50ZXJuYWxzLm1hcmtlclJhbmdl
Rm9yTm9kZSh0ZXN0VGV4dCwgIkRpY3RhdGlvbkFsdGVybmF0aXZlcyIsIDApOworICAgICAgICAg
ICAgICAgIGlmIChtYXJrZWQpCisgICAgICAgICAgICAgICAgICAgIG1hcmtlZFRleHQgPSBtYXJr
ZWQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJtYXJrZWRUZXh0IiwgInRleHQiKTsKKyAgICAgICAgICAgIGRvY3VtZW50Lndy
aXRlKCJURVNUIENPTVBMRVRFIik7CisKKyAgICAgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAg
ICAgIGRvY3VtZW50LndyaXRlKCJFeGNlcHRpb246ICIgKyBleC5kZXNjcmlwdGlvbik7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xl
IikuYXBwZW5kQ2hpbGQoY29uc29sZV9tZXNzYWdlcyk7CisgICAgICAgIAorICAgIH0gZWxzZSB7
CisgICAgICAgIGRvY3VtZW50LndyaXRlKCIoY2Fubm90IHJ1biBpbnRlcmFjdGl2ZWx5KSIpOwor
ICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137834</attachid>
            <date>2012-04-18 21:28:50 -0700</date>
            <delta_ts>2012-06-11 17:42:50 -0700</delta_ts>
            <desc>Fix build.</desc>
            <filename>bug-83047-20120418212849.patch</filename>
            <type>text/plain</type>
            <size>79872</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0NTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmM4NTM5NTFhYjM2ZTIy
NTZmN2Q1NzNhMGRkNjU4Y2E5MjAxZTNmYi4uYWQyYmNmMGRhZTkxNTM5NzUwNzY4Mjc2MDhhNjJk
YWIwNzFjNThhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA0LTE4ICBKaWEg
UHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE9uIE9TIFgsIG1hcmsgdGV4dCB3aXRoIGRp
Y3RhdGlvbiBhbHRlcm5hdGl2ZSB3aXRoIGJsdWUgdW5kZXJsaW5lLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMwNDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogcGxhdGZvcm0vbWFjL2VkaXRp
bmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUuaHRtbAorICAgICAg
ICAgICAgICAgcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQu
aHRtbAorCisgICAgICAgIFRoaXMgaXMgdGhlIGZvbGxvdyB1cCBwYXRjaCBtZW50aW9uZWQgaW4g
dGhlIENoYW5nZUxvZyBvZiBidWcgODM1NDkuIFRoaXMgcGF0Y2ggYWRkZWQgYW4gT1MgWCBzcGVj
aWZpYworICAgICAgICBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8gZGljdGF0ZWQgdGV4dCBpbnB1
dC4gTWFqb3JpdHkgb2YgZm9sbG93aW5nIGNoYW5nZXMgYXJlIGFjdGl2ZSBvbmx5IG9uIE9TIFgu
CisKKyAgICAgICAgTmV3IGNsYXNzZXMgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyIGFu
ZCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UgYXJlIGFkZGVkIGhlcmUgc2luY2UgdGhleSBhcmUg
dXNlZAorICAgICAgICBieSBib3RoIFdlYktpdCBhbmQgV2ViS2l0Mi4KKworICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVtb3ZlRGljdGF0aW9u
QWx0ZXJuYXRpdmVzRm9yTWFya2VyKTogIFRoaXMgbmV3IGZ1bmN0aW9uIG5vdGlmaWVzCisgICAg
ICAgICAgV2ViS2l0IGxheWVyIHRvIHJlbW92ZSBkaWN0YXRpb24gYWx0ZXJuYXRpdmUgZGF0YSB3
aGVuIGEgRGljdGF0aW9uQWxlcm5hdGl2ZXMgbWFya2VyIGlzIHJlbW92ZWQuCisgICAgICAgICog
ZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmg6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp1cGRhdGVNYXJrZXJzRm9yV29y
ZHNBZmZlY3RlZEJ5RWRpdGluZyk6IFJlbmFtZWQgZXhpc3RpbmcgcmVzcG9uZFRvQ2hhbmdlZFNl
bGVjdGlvbigpCisgICAgICAgICAgZnVuY3Rpb24gdG8gYXZvaWQgaGF2aW5nIHR3byBmdW5jYXRp
b25zIHdpdGggc2FtZSBuYW1lIGFuZCBzaWduYXR1cmUuCisgICAgICAgICogZWRpdGluZy9tYWMv
RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNv
bnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9s
bGVyOjpEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlcik6CisgICAgICAgICogZWRpdGluZy9tYWMv
RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4dENvbnRy
b2xsZXI6OmFkZEFsdGVybmF0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25BbHRl
cm5hdGl2ZUNvbnRyb2xsZXI6OkRpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2
ZXNGb3JEaWN0YXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVy
bmF0aXZlQ29udHJvbGxlcjo6RGljdGF0aW9uQ29udGV4dENvbnRyb2xsZXI6OnJlbW92ZUFsdGVy
bmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGljdGF0aW9u
QWx0ZXJuYXRpdmVDb250cm9sbGVyOjpEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlcjo6Y2xlYXIp
OgorICAgICAgICAoV2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOjphZGRB
bHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250
cm9sbGVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNv
bnRyb2xsZXI6OnNob3dBbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGljdGF0aW9u
QWx0ZXJuYXRpdmVDb250cm9sbGVyOjpoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjo6ZGlzbWlzc0FsdGVy
bmF0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xs
ZXI6OnJlbW92ZUFsdGVybmF0aXZlcyk6CisgICAgICAgICogZWRpdGluZy9tYWMvVGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UpOgorICAgICAgICAqIGVkaXRp
bmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlcyk6IEZ1bmN0aW9uIHVzZWQgYnkg
Ym90aCBXZWJLaXQgYW5kIFdlYktpdDIuCisgICAgICAgICogcGFnZS9BbHRlcm5hdGl2ZVRleHRD
bGllbnQuaDoKKwogMjAxMi0wNC0xOCAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gU29saWQgY29sb3IgbGF5ZXJzIHNob3VsZCByZXNw
ZWN0IG9wYWNpdHkgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMzk5MDY5MTdlN2I3MzE3N2Q3
NTEyZjczYzg1Njk4OGE0ODI2ODVhZi4uNjJjZGFmY2ZmNzM4MzU0ODkzYjkyNWJkYTk5YzZhMWE4
NTNmMDNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTE4ICBK
aWEgUHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE9uIE9TIFgsIG1hcmsgdGV4dCB3aXRo
IGRpY3RhdGlvbiBhbHRlcm5hdGl2ZSB3aXRoIGJsdWUgdW5kZXJsaW5lLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMwNDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbHNvIHNlZSBXZWJDb3JlL0NoYW5n
ZUxvZy4KKyAgICAgICAgVGhpcyBwYXRjaCBhZGRlZCBhbiBPUyBYIHNwZWNpZmljIGZ1bmN0aW9u
YWxpdHkgcmVsYXRlZCB0byBkaWN0YXRlZCB0ZXh0IGlucHV0LgorICAgICAgICBJdCBzaG91bGRu
J3QgY2hhbmdlIGJlaGF2aW9ycyBvbiBvdGhlciBwbGF0Zm9ybXMuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW06CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6
OmhhbmRsZUFjY2VwdGVkUmVwbGFjZW1lbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkFsdGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5tbToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVu
dDo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBpbnNlcnRUZXh0Ol0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBoYW5kbGVBY2NlcHRl
ZEFsdGVybmF0aXZlVGV4dDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfZ2V0V2ViQ29yZURpY3Rh
dGlvbkFsdGVybmF0aXZlczpmcm9tVGV4dEFsdGVybmF0aXZlczpdKToKKyAgICAgICAgKC1bV2Vi
VmlldyBfcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOl0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlld0RhdGEuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLm1tOgorICAgICAg
ICAoLVtXZWJWaWV3UHJpdmF0ZSBpbml0XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50
ZXJuYWwuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisKIDIwMTItMDQt
MTggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgRnVsbCBTY3Jl
ZW4gbW9kZSBkb2VzIG5vdCBwcmVzZXJ2ZSBDQUxheWVyIG9yZGVyaW5nIGFmdGVyIGV4aXRpbmcu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggMzJiZDc5MzBhYjQ4MTg3MTMyYjk0YjdkODNlMjQzZDk0ZWE3ZjEzNS4u
OWFlZjYzZDhkNmVkYzVjMThhNjYyZDA3MDYyOGE3MGZjODlhOWZjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ0IEBACisyMDEyLTA0LTE4ICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAg
ICAgIE9uIE9TIFgsIG1hcmsgdGV4dCB3aXRoIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZSB3aXRoIGJs
dWUgdW5kZXJsaW5lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODMwNDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBbHNvIHNlZSBXZWJDb3JlL0NoYW5nZUxvZy4KKyAgICAgICAgVGhpcyBwYXRjaCBhZGRl
ZCBhbiBPUyBYIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgcmVsYXRlZCB0byBkaWN0YXRlZCB0ZXh0
IGlucHV0LgorICAgICAgICBJdCBzaG91bGRuJ3QgY2hhbmdlIGJlaGF2aW9ycyBvbiBvdGhlciBw
bGF0Zm9ybXMuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKFBhZ2VDbGllbnRJbXBs
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6YWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgaW5zZXJ0VGV4
dDpyZXBsYWNlbWVudFJhbmdlOl0pOgorICAgICAgICAoLVtXS1ZpZXcgaGFuZGxlQWNjZXB0ZWRB
bHRlcm5hdGl2ZVRleHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50
ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW06CisgICAgICAgIChX
ZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0ZWRSZXBsYWNlbWVudCk6CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVtb3ZlRGljdGF0
aW9uQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKwogMjAxMi0wNC0xOCAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBGdWxsIFNjcmVlbiBtb2RlIGRv
ZXMgbm90IHByZXNlcnZlIENBTGF5ZXIgb3JkZXJpbmcgYWZ0ZXIgZXhpdGluZy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KaW5kZXggMTEyOTc3NWRkM2QwZGMwZTE2MDA2Zjk1OWQ2YzJmMWQyMzgzZDRhNy4u
M2Q4MjVmOWNlMzdkNzAyZTM3Zjc4ODkyMGNlYzQ1ZDRlNmU3MTFhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTIxNzksMyArMjE3OSwxMCBAQCBfX1pOSzdXZWJDb3JlNE5vZGUzMW51bWJlck9m
U2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW5FdgogI2lmIEVOQUJMRShTSEFET1dfRE9NKQogX19aTjdX
ZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMThpc1NoYWRvd0RPTUVuYWJsZWRFCiAjZW5k
aWYKKworI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElO
R19PTl9MSU9OKQorX19aTjdXZWJDb3JlMzBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIx
NWFkZEFsdGVybmF0aXZlc0VSS04zV1RGOVJldGFpblB0ckkxOE5TVGV4dEFsdGVybmF0aXZlc0VF
CitfX1pON1dlYkNvcmUzMERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcjE4cmVtb3ZlQWx0
ZXJuYXRpdmVzRXkKK19fWk43V2ViQ29yZTMwRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVy
NWNsZWFyRXYKK19fWk43V2ViQ29yZTMyY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXNF
UDE4TlNBdHRyaWJ1dGVkU3RyaW5nUk4zV1RGNlZlY3RvcklOU18yNFRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZUVMbTBFRUUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE1Yjg4MDQzYWRjZTkzNmM0ZjJkZmExNDkxMjdk
OWNhZTI0MzgwNTEuLjE4NGFlZTk5MWY1ZmNhYWQ3OTk3ZjUzZWQwNTQxOGY2YjMyZjUzNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTU3NTEsNiArNTc1MSwxMCBAQAogCQlDRUNBREZDRDE1Mzc3OTFEMDBFMzcwNjggLyogVGV4
dEluc2VydGlvbkJhc2VDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENFQ0FERkNCMTUzNzc5MUQwMEUzNzA2OCAvKiBUZXh0SW5zZXJ0aW9u
QmFzZUNvbW1hbmQuY3BwICovOyB9OwogCQlDRUNBREZDRTE1Mzc3OTFEMDBFMzcwNjggLyogVGV4
dEluc2VydGlvbkJhc2VDb21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRUNBREZDQzE1Mzc3OTFEMDBFMzcwNjggLyogVGV4dEluc2VydGlvbkJh
c2VDb21tYW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0VDQ0ZDM0IxNDE5NzNENTAwMkEwQUMxIC8qIERlY29kZUVzY2FwZVNlcXVlbmNlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDQ0ZDM0Ex
NDE5NzNENTAwMkEwQUMxIC8qIERlY29kZUVzY2FwZVNlcXVlbmNlcy5oICovOyB9OworCQlDRUQw
REEzMzE1M0Y4QTAyMDAxODY0MzYgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEMERBMzIxNTNGOEEw
MjAwMTg2NDM2IC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSAqLzsgfTsKKwkJQ0VENUI4
NEExNTNGNjY5MjAwQTlEREU4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VENUI4NDgxNTNG
NjY5MjAwQTlEREU4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNFRDVCODRCMTUzRjY2
OTMwMEE5RERFOCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUQ1Qjg0OTE1M0Y2NjkyMDBB
OURERTggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tICovOyB9OworCQlDRUQ1
Qjg1MDE1M0Y3RDU2MDBBOURERTggLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUQ1Qjg0RjE1M0Y3RDU2
MDBBOURERTggLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0VEQTEyRDcxNTJDQTFDQjAwRDlFMDhE
IC8qIEFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0VEQTEyRDYxNTJDQTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0aXZl
VGV4dENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUNFRjQxOENFMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUY0MThDQzEx
Nzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuY3BwICovOyB9OwogCQlDRUY0MThD
RjExNzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFRjQxOENEMTE3OTY3OEMwMDlEMTEyQyAv
KiBWaWV3cG9ydEFyZ3VtZW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xMjg2Myw3ICsxMjg2Nyw3IEBACiAJCUNFMDU3RkEzMTIyMDczMTEw
MEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0UwOEMzQ0YxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNFMDhDM0QwMTUyQjU5
OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UwOEMzRDAxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5n
ID0gMDsgcGF0aCA9IEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5v
YmpjcHA7IH07CiAJCUNFNTRGRDM3MTAxNkQ5QTYwMDhCNDRDOCAvKiBTY3JpcHRTb3VyY2VQcm92
aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRTb3VyY2VQcm92
aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTVDQjFCMzE0RURBQjZGMDBC
QjI3OTUgLyogRXZlbnRTZW5kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RXZlbnRTZW5kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VBMzk0OUExMUQ0
NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI4NzUsNiArMTI4NzksMTAgQEAKIAkJQ0VDQURGQ0Ix
NTM3NzkxRDAwRTM3MDY4IC8qIFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0SW5zZXJ0aW9uQmFzZUNvbW1hbmQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUNBREZDQzE1Mzc3OTFEMDBFMzcwNjgg
LyogVGV4dEluc2VydGlvbkJhc2VDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRUNDRkMzQTE0MTk3M0Q1MDAyQTBBQzEgLyogRGVjb2RlRXNjYXBlU2VxdWVuY2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlY29kZUVzY2FwZVNlcXVlbmNl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRUQwREEzMjE1M0Y4QTAyMDAxODY0
MzYgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tOyBwYXRoID0gbWFj
L1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0VENUI4NDgxNTNGNjY5MjAwQTlEREU4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJv
bGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEaWN0YXRpb25BbHRlcm5h
dGl2ZUNvbnRyb2xsZXIuaDsgcGF0aCA9IG1hYy9EaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0VENUI4NDkxNTNGNjY5MjAwQTlE
REU4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5t
bTsgcGF0aCA9IG1hYy9EaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFRDVCODRGMTUzRjdENTYwMEE5RERFOCAvKiBUZXh0QWx0
ZXJuYXRpdmVXaXRoUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg7IHBhdGggPSBtYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFREExMkQ2MTUyQ0ExQ0IwMEQ5
RTA4RCAvKiBBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNFRjQxOENDMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWV3cG9ydEFyZ3VtZW50cy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFRjQxOENEMTE3OTY3OEMwMDlEMTEy
QyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBWaWV3cG9ydEFyZ3VtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA0
NzYsOCArMjA0ODQsMTIgQEAKIAkJRUQ1MDFEQzkwQjI0OUYzOTAwQUUxOEQ5IC8qIG1hYyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0VENUI4NDkxNTNG
NjY5MjAwQTlEREU4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5tbSAqLywKKwkJ
CQlDRUQ1Qjg0ODE1M0Y2NjkyMDBBOURERTggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9s
bGVyLmggKi8sCiAJCQkJRUQ1MDFEQzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAq
LywKIAkJCQk0QThDOTZFQTBCRTY5MDMyMDA0RUVGRjAgLyogRnJhbWVTZWxlY3Rpb25NYWMubW0g
Ki8sCisJCQkJQ0VEMERBMzIxNTNGOEEwMjAwMTg2NDM2IC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZS5tbSAqLywKKwkJCQlDRUQ1Qjg0RjE1M0Y3RDU2MDBBOURERTggLyogVGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0yNDc5Niw2ICsyNDgwOCw4IEBACiAJCQkJQ0VDQURGQzcxNTM3NzhG
RjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RUNBREZDOTE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0VDQURGQ0UxNTM3NzkxRDAwRTM3MDY4IC8qIFRleHRJbnNlcnRpb25CYXNlQ29t
bWFuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0VENUI4NEExNTNGNjY5MjAwQTlEREU4IC8qIERp
Y3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0VENUI4
NTAxNTNGN0Q1NjAwQTlEREU4IC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0yNzgwNyw2ICsyNzgyMSw4IEBACiAJCQkJQ0VDQURGQzYxNTM3NzhGRjAwRTM3
MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFQ0FE
RkM4MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNFQ0FERkNEMTUzNzc5MUQwMEUzNzA2OCAvKiBUZXh0SW5zZXJ0aW9uQmFzZUNvbW1h
bmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0VENUI4NEIxNTNGNjY5MzAwQTlEREU4IC8qIERp
Y3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNFRDBE
QTMzMTUzRjhBMDIwMDE4NjQzNiAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuY3BwCmluZGV4IDhkMDlmZjFiOTk4NDcxZWE2MWYzODkyNjhlNDkyNGY3MDRj
ZjEzYjEuLjBkYzU1ZTYyMDA4NmQ4YmY3NGYxODY0N2U1Zjk4Y2U4MjRhN2JlMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNw
cApAQCAtNjI0LDQgKzYyNCwxNiBAQCBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Omlu
c2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlYwogICAgIHJldHVy
biBldmVudC0+ZGVmYXVsdEhhbmRsZWQoKTsKIH0KIAordm9pZCBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIoRG9jdW1lbnRNYXJr
ZXIqIG1hcmtlcikKK3sKKyAgICBpZiAoIW1hcmtlcikKKyAgICAgICAgcmV0dXJuOworICAgIEFT
U0VSVChtYXJrZXItPnR5cGUoKSA9PSBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRp
dmVzKTsKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBEaWN0YXRpb25NYXJr
ZXJEZXRhaWxzKiBkZXRhaWxzID0gc3RhdGljX2Nhc3Q8RGljdGF0aW9uTWFya2VyRGV0YWlscyo+
KG1hcmtlci0+ZGV0YWlscygpKTsKKyAgICBpZiAoQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBjbGll
bnQgPSBhbHRlcm5hdGl2ZVRleHRDbGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5yZW1vdmVEaWN0
YXRpb25BbHRlcm5hdGl2ZXMoZGV0YWlscy0+ZGljdGF0aW9uQ29udGV4dCgpKTsKKyNlbmRpZgor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCmluZGV4IDI4NDQ5ZWZkOTNlNTc0MGEwOWUz
NWI2NTRiODliNTBjNzk4MDhkOWIuLmY1MmU4MGI4OGJmZmU2ZjViZWQzNTZiOWUxOWFhMzQ2YWEz
MzQ1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlci5oCkBAIC0xMzAsNiArMTMwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRl
ZEF1dG9jb3JyZWN0aW9uQXRQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFN0cmluZyYg
b3JpZ2luYWxTdHJpbmcpIFVOTEVTU19FTkFCTEVEKHsgVU5VU0VEX1BBUkFNKG9yaWdpbmFsU3Ry
aW5nKTsgfSkKIAogICAgIGJvb2wgaW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYsIGNv
bnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mLCBFdmVudCopOworICAgIHZvaWQgcmVt
b3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKERvY3VtZW50TWFya2VyKik7CiAKIHBy
aXZhdGU6CiAjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCmluZGV4IDI5NGViOTRiNTI3Yjg2OWE5MjM1NGNhYzZkOTkxYWFhMmVmZjI0MjQuLmM1
YmY0YTBmNTkwYWMzYTIyYzUzNmMwNzZlYzY4NGEwOWFhN2JjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKQEAgLTIyNTgsNiArMjI1OCwxMCBAQCB2b2lkIEVkaXRvcjo6dXBkYXRlTWFy
a2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoYm9vbCBkb05vdFJlbW92ZUlmU2VsZWN0aW9u
QQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgUmVm
UHRyPFJhbmdlPiB3b3JkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBzdGFydE9mRmly
c3RXb3JkLmRlZXBFcXVpdmFsZW50KCksIGVuZE9mTGFzdFdvcmQuZGVlcEVxdWl2YWxlbnQoKSk7
CiAKKyAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBtYXJrZXJzID0gZG9jdW1lbnQtPm1hcmtl
cnMoKS0+bWFya2Vyc0luUmFuZ2Uod29yZFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6RGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hcmtlcnMu
c2l6ZSgpOyArK2kpCisgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+cmVtb3Zl
RGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKG1hcmtlcnNbaV0pOworCiAgICAgZG9jdW1l
bnQtPm1hcmtlcnMoKS0+cmVtb3ZlTWFya2Vycyh3b3JkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFy
a2VyOjpTcGVsbGluZyB8IERvY3VtZW50TWFya2VyOjpDb3JyZWN0aW9uSW5kaWNhdG9yIHwgRG9j
dW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24gfCBEb2N1bWVudE1hcmtlcjo6RGlj
dGF0aW9uQWx0ZXJuYXRpdmVzLCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRp
YWxseU92ZXJsYXBwaW5nTWFya2VyKTsKICAgICBkb2N1bWVudC0+bWFya2VycygpLT5jbGVhckRl
c2NyaXB0aW9uT25NYXJrZXJzSW50ZXJzZWN0aW5nUmFuZ2Uod29yZFJhbmdlLmdldCgpLCBEb2N1
bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9EaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42N2VlMmE5MzBiMmI1NjYzYjU5M2RlOTFjNDY2YjQ1Yjg1NDU4MGRhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGF0aW9uQWx0ZXJuYXRpdmVD
b250cm9sbGVyLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGljdGF0
aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyX2gKKyNkZWZpbmUgRGljdGF0aW9uQWx0ZXJuYXRpdmVD
b250cm9sbGVyX2gKKworI2luY2x1ZGUgIkFsdGVybmF0aXZlVGV4dENsaWVudC5oIgorI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisj
aWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCitPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0
aXZlczsKK09CSkNfQ0xBU1MgTlNWaWV3OworCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBE
aWN0YXRpb25Db250ZXh0Q29udHJvbGxlcjsKKworY2xhc3MgRGljdGF0aW9uQWx0ZXJuYXRpdmVD
b250cm9sbGVyIHsKK3B1YmxpYzoKKyAgICBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIo
KSB7IH0KKyAgICAvLyBSZXR1cm5zIGEgZGljdGF0aW9uIGNvbnRleHQgSUQuCisgICAgdWludDY0
X3QgYWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7
CisgICAgdm9pZCBjbGVhcigpOworICAgIHZvaWQgc2hvd0FsdGVybmF0aXZlcyhOU1ZpZXcqLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFN0cmluZywgdWlu
dDY0X3QgZGljdGF0aW9uQ29udGV4dCwgdm9pZCheYWNjZXB0YW5jZUhhbmRsZXIpKE5TU3RyaW5n
KikpOworICAgIHZvaWQgZGlzbWlzc0FsdGVybmF0aXZlcygpOworICAgIHZvaWQgcmVtb3ZlQWx0
ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOworCitwcml2YXRlOgorICAgIHZv
aWQgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShOU1N0cmluZyogYWNjZXB0ZWRBbHRlcm5hdGl2
ZSwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCwgTlNUZXh0QWx0ZXJuYXRpdmVzKik7CisKKyAg
ICBjbGFzcyBEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlciB7CisgICAgcHVibGljOgorICAgICAg
ICBEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlcigpIHsgfQorICAgICAgICB1aW50NjRfdCBhZGRB
bHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKKyAgICAg
ICAgdm9pZCBjbGVhcigpOworICAgICAgICBOU1RleHRBbHRlcm5hdGl2ZXMqIGFsdGVybmF0aXZl
c0ZvckRpY3RhdGlvbkNvbnRleHQodWludDY0X3QgZGljdGF0aW9uQ29udGV4dCk7CisgICAgICAg
IHZvaWQgcmVtb3ZlQWx0ZXJuYXRpdmVzRm9yRGljdGF0aW9uQ29udGV4dCh1aW50NjRfdCBkaWN0
YXRpb25Db250ZXh0KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGludmFsaWRDb250
ZXh0ID0gMDsKKyAgICBwcml2YXRlOgorICAgICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3Qs
IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+ID4gSGFzaE1hcFR5cGU7CisgICAgICAgIEhh
c2hNYXBUeXBlIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwOworICAgIH07CisKKyAgICBEaWN0YXRp
b25Db250ZXh0Q29udHJvbGxlciBtX2NvbnRleHRDb250cm9sbGVyOworICAgIFJldGFpblB0cjxO
U1ZpZXc+IG1fdmlldzsKK307Cit9CisjZW5kaWYKKyNlbmRpZiAvLyBEaWN0YXRpb25BbHRlcm5h
dGl2ZUNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwZThj
MzU4NTA2NjIzYmM4NGI1ZDBhZWZjOTIzMzkxMGFiYjczYjQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXIu
bW0KQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIkRpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oIgorCisjaWYgVVNFKERJQ1RB
VElPTl9BTFRFUk5BVElWRVMpCisKKyNpbXBvcnQgPEFwcEtpdC9OU1NwZWxsQ2hlY2tlci5oPgor
I2ltcG9ydCA8QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgorI2ltcG9ydCA8QXBwS2l0L05T
Vmlldy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1aW50NjRfdCBEaWN0YXRpb25BbHRlcm5h
dGl2ZUNvbnRyb2xsZXI6OkRpY3RhdGlvbkNvbnRleHRDb250cm9sbGVyOjphZGRBbHRlcm5hdGl2
ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mIGFsdGVybmF0aXZlcykKK3sK
KyAgICB1aW50NjRfdCBjb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGFsdGVy
bmF0aXZlcy5nZXQoKSk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm4gaW52YWxp
ZENvbnRleHQ7CisgICAgaWYgKGFsdGVybmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRleHQoY29udGV4
dCkpCisgICAgICAgIHJldHVybiBjb250ZXh0OworCisgICAgSGFzaE1hcFR5cGU6OkFkZFJlc3Vs
dCByZXN1bHQgPSBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5hZGQoY29udGV4dCwgYWx0ZXJuYXRp
dmVzKTsKKyAgICByZXR1cm4gcmVzdWx0LmlzTmV3RW50cnkgPyBjb250ZXh0IDogaW52YWxpZENv
bnRleHQ7Cit9CisKK05TVGV4dEFsdGVybmF0aXZlcyogRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250
cm9sbGVyOjpEaWN0YXRpb25Db250ZXh0Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yRGljdGF0
aW9uQ29udGV4dCh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIEhhc2hNYXBUeXBl
Ojpjb25zdF9pdGVyYXRvciBpdHIgPSBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5maW5kKGRpY3Rh
dGlvbkNvbnRleHQpOworICAgIGlmIChpdHIgPT0gbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuZW5k
KCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBpdHItPnNlY29uZC5nZXQoKTsK
K30KKwordm9pZCBEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OkRpY3RhdGlvbkNvbnRl
eHRDb250cm9sbGVyOjpyZW1vdmVBbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KHVpbnQ2
NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAucmVt
b3ZlKGRpY3RhdGlvbkNvbnRleHQpOworfQorCit2b2lkIERpY3RhdGlvbkFsdGVybmF0aXZlQ29u
dHJvbGxlcjo6RGljdGF0aW9uQ29udGV4dENvbnRyb2xsZXI6OmNsZWFyKCkKK3sKKyAgICBtX2Fs
dGVybmF0aXZlc09iamVjdE1hcC5jbGVhcigpOworfQorCit1aW50NjRfdCBEaWN0YXRpb25BbHRl
cm5hdGl2ZUNvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0
QWx0ZXJuYXRpdmVzPiYgYWx0ZXJuYXRpdmVzKQoreworICAgIHJldHVybiBtX2NvbnRleHRDb250
cm9sbGVyLmFkZEFsdGVybmF0aXZlcyhhbHRlcm5hdGl2ZXMpOworfQorCit2b2lkIERpY3RhdGlv
bkFsdGVybmF0aXZlQ29udHJvbGxlcjo6Y2xlYXIoKQoreworICAgIHJldHVybiBtX2NvbnRleHRD
b250cm9sbGVyLmNsZWFyKCk7Cit9CisKK3ZvaWQgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9s
bGVyOjpzaG93QWx0ZXJuYXRpdmVzKE5TVmlldyogdmlldywgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRTdHJpbmcsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRl
eHQsIHZvaWQoXmFjY2VwdGFuY2VIYW5kbGVyKShOU1N0cmluZyopKQoreworICAgIGRpc21pc3NB
bHRlcm5hdGl2ZXMoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybjsKKyAgICBtX3Zp
ZXcgPSB2aWV3OworICAgIE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVzID0gbV9jb250
ZXh0Q29udHJvbGxlci5hbHRlcm5hdGl2ZXNGb3JEaWN0YXRpb25Db250ZXh0KGRpY3RhdGlvbkNv
bnRleHQpOworICAgIGlmICghYWx0ZXJuYXRpdmVzKQorICAgICAgICByZXR1cm47CisgICAgTlNT
cGVsbENoZWNrZXIqIHNwZWxsQ2hlY2tlciA9IFtOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENo
ZWNrZXJdOworICAgIFtzcGVsbENoZWNrZXIgc2hvd0NvcnJlY3Rpb25JbmRpY2F0b3JPZlR5cGU6
TlNDb3JyZWN0aW9uSW5kaWNhdG9yVHlwZUd1ZXNzZXMgcHJpbWFyeVN0cmluZzphbHRlcm5hdGl2
ZXMucHJpbWFyeVN0cmluZyBhbHRlcm5hdGl2ZVN0cmluZ3M6YWx0ZXJuYXRpdmVzLmFsdGVybmF0
aXZlU3RyaW5ncyBmb3JTdHJpbmdJblJlY3Q6Ym91bmRpbmdCb3hPZkRpY3RhdGVkU3RyaW5nIHZp
ZXc6bV92aWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcqIGFjY2VwdGVkU3Ry
aW5nKSB7CisgICAgICAgIGlmIChhY2NlcHRlZFN0cmluZykgeworICAgICAgICAgICAgaGFuZGxl
QWNjZXB0ZWRBbHRlcm5hdGl2ZShhY2NlcHRlZFN0cmluZywgZGljdGF0aW9uQ29udGV4dCwgYWx0
ZXJuYXRpdmVzKTsKKyAgICAgICAgICAgIGFjY2VwdGFuY2VIYW5kbGVyKGFjY2VwdGVkU3RyaW5n
KTsKKyAgICAgICAgfQorICAgIH1dOworfQorCit2b2lkIERpY3RhdGlvbkFsdGVybmF0aXZlQ29u
dHJvbGxlcjo6aGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShOU1N0cmluZyogYWNjZXB0ZWRBbHRl
cm5hdGl2ZSwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCwgTlNUZXh0QWx0ZXJuYXRpdmVzKiBh
bHRlcm5hdGl2ZXMpCit7CisgICAgW2FsdGVybmF0aXZlcyBub3RlU2VsZWN0ZWRBbHRlcm5hdGl2
ZVN0cmluZzphY2NlcHRlZEFsdGVybmF0aXZlXTsKKyAgICBtX2NvbnRleHRDb250cm9sbGVyLnJl
bW92ZUFsdGVybmF0aXZlc0ZvckRpY3RhdGlvbkNvbnRleHQoZGljdGF0aW9uQ29udGV4dCk7Cisg
ICAgbV92aWV3LmNsZWFyKCk7Cit9CisKK3ZvaWQgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9s
bGVyOjpkaXNtaXNzQWx0ZXJuYXRpdmVzKCkKK3sKKyAgICBpZiAoIW1fdmlldykKKyAgICAgICAg
cmV0dXJuOworICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBkaXNtaXNz
Q29ycmVjdGlvbkluZGljYXRvckZvclZpZXc6bV92aWV3LmdldCgpXTsKK30KKwordm9pZCBEaWN0
YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXI6OnJlbW92ZUFsdGVybmF0aXZlcyh1aW50NjRfdCBk
aWN0YXRpb25Db250ZXh0KQoreworICAgIG1fY29udGV4dENvbnRyb2xsZXIucmVtb3ZlQWx0ZXJu
YXRpdmVzRm9yRGljdGF0aW9uQ29udGV4dChkaWN0YXRpb25Db250ZXh0KTsKK30KKworfQorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1RleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMDQyMmRjZDVlOWU1ZjYxMjcxYmMwZTE1ZWRmY2Yz
MmZkMzgwMzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9U
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VfaAorI2RlZmluZSBUZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2VfaAorCisjaW5jbHVkZSAiQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMp
CitPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKKyNlbmRpZgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCitzdHJ1Y3QgVGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlIHsKKyAgICBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UoTlNUZXh0QWx0
ZXJuYXRpdmVzKiBhbkFsdGVybmF0aXZlLCBOU1JhbmdlIGFSYW5nZSkKKyAgICA6IHJhbmdlKGFS
YW5nZSkKKyAgICAsIGFsdGVybmF0aXZlKGFuQWx0ZXJuYXRpdmUpCisgICAgeyB9CisKKyAgICBO
U1JhbmdlIHJhbmdlOworICAgIFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+IGFsdGVybmF0
aXZlOworfTsKKwordm9pZCBjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlcyhOU0F0dHJp
YnV0ZWRTdHJpbmcqLCBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgYWx0ZXJuYXRp
dmVzKTsKKyNlbHNlCitzdHJ1Y3QgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlIHsgfTsKKyNlbmRp
ZgorCit9CisKKyNlbmRpZiAvLyBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjdkMWQ2Y2QyY2I3YTA4MGUxZjU3ZWFkZjViNmMwN2RjMjE1Y2M3YjEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2UubW0KQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCIKKworI2lmIFVT
RShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorI2ltcG9ydCA8QXBwS2l0L05TVGV4dEFsdGVybmF0
aXZlcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Cit2b2lkIGNvbGxlY3REaWN0YXRpb25UZXh0
QWx0ZXJuYXRpdmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8VGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlPiYgYWx0ZXJuYXRpdmVzKSB7CisgICAgTlNSYW5nZSBlZmZlY3RpdmVS
YW5nZSA9IE5TTWFrZVJhbmdlKDAsIDApOworICAgIE5TVUludGVnZXIgbGVuZ3RoID0gW3N0cmlu
ZyBsZW5ndGhdOworICAgIGRvIHsKKyAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0g
W3N0cmluZyBhdHRyaWJ1dGVzQXRJbmRleDplZmZlY3RpdmVSYW5nZS5sb2NhdGlvbiBlZmZlY3Rp
dmVSYW5nZTomZWZmZWN0aXZlUmFuZ2VdOworICAgICAgICBpZiAoIWF0dHJpYnV0ZXMpCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgTlNUZXh0QWx0ZXJuYXRpdmVzICp0ZXh0QWx0ZXJuYXRp
dmVzID0gW2F0dHJpYnV0ZXMgb2JqZWN0Rm9yS2V5Ok5TVGV4dEFsdGVybmF0aXZlc0F0dHJpYnV0
ZU5hbWVdOworICAgICAgICBpZiAodGV4dEFsdGVybmF0aXZlcykKKyAgICAgICAgICAgIGFsdGVy
bmF0aXZlcy5hcHBlbmQoVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlKHRleHRBbHRlcm5hdGl2ZXMs
IGVmZmVjdGl2ZVJhbmdlKSk7CisgICAgICAgIGVmZmVjdGl2ZVJhbmdlLmxvY2F0aW9uID0gTlNN
YXhSYW5nZShlZmZlY3RpdmVSYW5nZSk7CisgICAgfSB3aGlsZSAoZWZmZWN0aXZlUmFuZ2UubG9j
YXRpb24gPCBsZW5ndGgpOworfQorfTsKKworI2VuZGlmIC8vIFVTRShESUNUQVRJT05fQUxURVJO
QVRJVkVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRleHRD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5k
ZXggZjVhZTY3ZDBlZDlmZGM2ZmJmNDcwNzM3NjY2M2I5MmFjOTMxNWNiYy4uZTk5OWQwNTZkMjlj
M2NjNTQ0Y2Q2ZDZhMjM1ZjAzODgwNmEzMzM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fs
dGVybmF0aXZlVGV4dENsaWVudC5oCkBAIC0zMSw2ICszMSwxMSBAQAogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JN
KE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fU05PV19MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MSU9OKQorLy8gU29t
ZSBwbGF0Zm9ybXMgcHJvdmlkZSBVSSBmb3Igc3VnZ2VzdGluZyBhbHRlcm5hdGl2ZSBkaWN0YXRp
b24gdGV4dC4KKyNkZWZpbmUgV1RGX1VTRV9ESUNUQVRJT05fQUxURVJOQVRJVkVTIDEKKyNlbmRp
ZiAvLyBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFk
ZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
TElPTikKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIFJlYXNvbkZvckRpc21pc3NpbmdB
bHRlcm5hdGl2ZVRleHQgewpAQCAtNTcsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRpc21pc3NBbHRlcm5hdGl2ZShSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0
KSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0FsdGVybmF0aXZlU29vbihSZWFzb25G
b3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29y
ZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2
NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKIH07CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0KaW5kZXggNjU4M2Nl
ZTY2MjExMTA3NmMxZTAyNDcyNmVlY2JiMGE4ZjU0MDc5MC4uNjgxMGEyNzgwYjlmMzk2ZGEwZDMy
MmJkNjNhY2Y2MDEyYTllMzA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbQpAQCAtMjUsNyArMjUsNiBAQAogI2ltcG9ydCAi
Q29ycmVjdGlvblBhbmVsLmgiCiAKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgotI2ltcG9y
dCAiV2ViVmlld1ByaXZhdGUuaCIKIAogI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTMxLDcgKzEzMCw3IEBAIHZvaWQgQ29ycmVjdGlv
blBhbmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJlcGxh
Y2VtZW50LCBOCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBbbV92aWV3LmdldCgp
IGhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDphY2NlcHRlZFJlcGxhY2VtZW50XTsKKyAgICBb
bV92aWV3LmdldCgpIGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0OmFjY2VwdGVkUmVwbGFj
ZW1lbnRdOwogICAgIG1fdmlldy5jbGVhcigpOwogICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50
KQogICAgICAgICBtX3Jlc3VsdEZvckRpc21pc3NhbC5hZG9wdE5TKFthY2NlcHRlZFJlcGxhY2Vt
ZW50IGNvcHldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggN2VkZmFjZTBhZTM0NjgxNDE5
N2NkYjE1NmQ2YmIzNmNkNmIxZDFkNy4uZjRjMmJmNTcyMDU5MzJlYjhjZTIyMzI1Yjg0ODJjOWEz
ZTdjYWU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmUoV2ViQ29yZTo6UmVhc29uRm9y
RGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcg
ZGlzbWlzc0FsdGVybmF0aXZlU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJu
YXRpdmVUZXh0KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rp
b25SZXNwb25zZShXZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3Ry
aW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50
NjRfdCBkaWN0YXRpb25Db250ZXh0KSBPVkVSUklERTsKIHByaXZhdGU6CiAgICAgV2ViVmlldyog
bV93ZWJWaWV3OwogI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENs
aWVudC5tbQppbmRleCA2OTcyZmI0YmE5MzJlMjRjZGJiMDQ5OWNlNDhlZjZlYTI0ZWQ1MmNkLi5j
OWQ1MjEwZDlkYzk5NmYyOTQzODRiYjg5MzFmYzljMTQ2ZDI1ZDc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50Lm1tCkBAIC0yNSw2ICsyNSw5IEBACiAKICNpbmNsdWRlICJXZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQuaCIKIAorI2luY2x1ZGUgIldlYlZpZXdJbnRlcm5hbC5oIgorI2luY2x1ZGUgPHd0
Zi9VbnVzZWRQYXJhbS5oPgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoV2ViVmlldyogd2ViVmll
dykKQEAgLTY5LDMgKzcyLDEyIEBAIHZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZWNv
cmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uCiBDb3JyZWN0aW9u
UGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UobV93ZWJWaWV3LCByZXNwb25zZSwg
cmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKTsKICNlbmRpZgogfQorCit2b2lkIFdl
YkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2
NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMp
CisgICAgW21fd2ViVmlldyBfcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOmRpY3RhdGlvbkNv
bnRleHRdOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZGljdGF0aW9uQ29udGV4dCk7CisjZW5k
aWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IGE5YjI5
MWU0OTlmODAyOTdjYzc1Njc5ZjM5MGVmNmJkZTA2MWM0YTQuLmM4NjExZmQ0OGQyZTViNDY1MWMx
YTI4Zjk5ZTczODBhOGNlYjM1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQpAQCAtMTEzLDYgKzExMyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NpbXBsZUZvbnRE
YXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydHlTZXQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGV4dC5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2Uu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViRm9udENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYk5TQXR0cmlidXRlZFN0cmlu
Z0V4dHJhcy5oPgpAQCAtNTkwNCw3ICs1OTA1LDE0IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRl
cmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRl
CiAgICAgTlNSYW5nZSByZXBsYWNlbWVudFJhbmdlID0geyBOU05vdEZvdW5kLCAwIH07CiAgICAg
Ym9vbCBpc0Zyb21JbnB1dE1ldGhvZCA9IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigp
LT5oYXNDb21wb3NpdGlvbigpOwogCisgICAgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiBk
aWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9uczsKICAgICBpZiAoaXNBdHRyaWJ1dGVkU3RyaW5n
KSB7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgICAgIFZlY3RvcjxUZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+IHRleHRBbHRlcm5hdGl2ZXM7CisgICAgICAgIGNvbGxlY3RE
aWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzKHN0cmluZywgdGV4dEFsdGVybmF0aXZlcyk7CisgICAg
ICAgIGlmICh0ZXh0QWx0ZXJuYXRpdmVzLnNpemUoKSkKKyAgICAgICAgICAgIFtbc2VsZiBfd2Vi
Vmlld10gX2dldFdlYkNvcmVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6ZGljdGF0aW9uQWx0ZXJuYXRp
dmVMb2NhdGlvbnMgZnJvbVRleHRBbHRlcm5hdGl2ZXM6dGV4dEFsdGVybmF0aXZlc107CisjZW5k
aWYKICAgICAgICAgLy8gRklYTUU6IFdlIGlnbm9yZSBtb3N0IGF0dHJpYnV0ZXMgZnJvbSB0aGUg
c3RyaW5nLCBzbyBmb3IgZXhhbXBsZSBpbnNlcnRpbmcgZnJvbSBDaGFyYWN0ZXIgUGFsZXR0ZSBs
b3NlcyBmb250IGFuZCBnbHlwaCB2YXJpYXRpb24gZGF0YS4KICAgICAgICAgLy8gSXQgZG9lcyBu
b3QgbG9vayBsaWtlIGFueSBpbnB1dCBtZXRob2RzIGV2ZXIgdXNlIGluc2VydFRleHQ6IHdpdGgg
YXR0cmlidXRlcyBvdGhlciB0aGFuIE5TVGV4dElucHV0UmVwbGFjZW1lbnRSYW5nZUF0dHJpYnV0
ZU5hbWUuCiAgICAgICAgIHRleHQgPSBbc3RyaW5nIHN0cmluZ107CkBAIC01OTQzLDcgKzU5NTEs
MTEgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpz
dHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUKICAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9y
KCktPmhhc0NvbXBvc2l0aW9uKCkpIHsKICAgICAgICAgLy8gQW4gaW5zZXJ0VGV4dDogbWlnaHQg
YmUgaGFuZGxlZCBieSBvdGhlciByZXNwb25kZXJzIGluIHRoZSBjaGFpbiBpZiB3ZSBkb24ndCBo
YW5kbGUgaXQuCiAgICAgICAgIC8vIE9uZSBleGFtcGxlIGlzIHNwYWNlIGJhciB0aGF0IHJlc3Vs
dHMgaW4gc2Nyb2xsaW5nIGRvd24gdGhlIHBhZ2UuCi0gICAgICAgIGV2ZW50SGFuZGxlZCA9IGNv
cmVGcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoZXZlbnRUZXh0LCBldmVudCk7CisKKyAgICAg
ICAgaWYgKGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLnNpemUoKSkKKyAgICAgICAgICAg
IGV2ZW50SGFuZGxlZCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCktPmluc2VydERpY3RhdGVkVGV4dChl
dmVudFRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBldmVudCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGV2ZW50SGFuZGxlZCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCktPmlu
c2VydFRleHQoZXZlbnRUZXh0LCBldmVudCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZXZlbnRI
YW5kbGVkID0gdHJ1ZTsKICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBv
c2l0aW9uKGV2ZW50VGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXgg
NGZiNWRmOTVkZWRkM2I1YmUyZmIxZTQwNjlmYjgxNDlhYzE5OTQ0Mi4uNGJjNGM3NTJhODA5OGJi
YTI2MmVlN2NlZTc2MTZjZmZmODJhMmE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQpAQCAtMTE1LDYgKzExNSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oPgogI2ltcG9ydCA8
V2ViQ29yZS9DdXJzb3IuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJuYXRpdmVD
b250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+
CkBAIC0xNjIsNiArMTYzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3kuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0
dGluZ3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RleHRSZXNvdXJjZURlY29kZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KQEAg
LTU0OTksMTYgKzU1MDEsNiBAQCBzdGF0aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNj
RnJvbUpTVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGpzVmFsdQogCiAjZW5kaWYKIAot
I2lmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1NOT1dfTEVPUEFSRCkKLS0gKHZvaWQpaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OihOU1N0
cmluZyopcmVzdWx0Ci17Ci0gICAgV2ViRnJhbWUgKndlYkZyYW1lID0gW3NlbGYgX3NlbGVjdGVk
T3JNYWluRnJhbWVdOwotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHdlYkZyYW1lKTsKLSAg
ICBpZiAoY29yZUZyYW1lKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5oYW5kbGVBbHRl
cm5hdGl2ZVRleHRVSVJlc3VsdChyZXN1bHQpOwotfQotI2VuZGlmCi0KIEBlbmQKIAogQGltcGxl
bWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdVbmRvYWJsZUVkaXRpbmcpCkBAIC02MzY4LDYgKzYz
NjAsMzMgQEAgc3RhdGljIHZvaWQgZ2xpYkNvbnRleHRJdGVyYXRpb25DYWxsYmFjayhDRlJ1bkxv
b3BPYnNlcnZlclJlZiwgQ0ZSdW5Mb29wQWN0aXZpdHkKIH0KICNlbmRpZgogCisjaWYgVVNFKEFV
VE9DT1JSRUNUSU9OX1BBTkVMKQorLSAodm9pZCloYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4
dDooTlNTdHJpbmcqKXRleHQKK3sKKyAgICBXZWJGcmFtZSAqd2ViRnJhbWUgPSBbc2VsZiBfc2Vs
ZWN0ZWRPck1haW5GcmFtZV07CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUod2ViRnJhbWUp
OworICAgIGlmIChjb3JlRnJhbWUpCisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmhhbmRs
ZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHRleHQpOworfQorI2VuZGlmCisKKyNpZiBVU0UoRElD
VEFUSU9OX0FMVEVSTkFUSVZFUykKKy0gKHZvaWQpX2dldFdlYkNvcmVEaWN0YXRpb25BbHRlcm5h
dGl2ZXM6KFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mKWFsdGVybmF0aXZlcyBmcm9tVGV4
dEFsdGVybmF0aXZlczooY29uc3QgVmVjdG9yPFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mKWFs
dGVybmF0aXZlc1dpdGhSYW5nZQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYWx0ZXJu
YXRpdmVzV2l0aFJhbmdlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFRleHRBbHRlcm5h
dGl2ZVdpdGhSYW5nZSYgYWx0ZXJuYXRpdmVXaXRoUmFuZ2UgPSBhbHRlcm5hdGl2ZXNXaXRoUmFu
Z2VbaV07CisgICAgICAgIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQgPSBfcHJpdmF0ZS0+bV9k
aWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXItPmFkZEFsdGVybmF0aXZlcyhhbHRlcm5hdGl2
ZVdpdGhSYW5nZS5hbHRlcm5hdGl2ZSk7CisgICAgICAgIGlmIChkaWN0YXRpb25Db250ZXh0KQor
ICAgICAgICAgICAgYWx0ZXJuYXRpdmVzLmFwcGVuZChEaWN0YXRpb25BbHRlcm5hdGl2ZShhbHRl
cm5hdGl2ZVdpdGhSYW5nZS5yYW5nZS5sb2NhdGlvbiwgYWx0ZXJuYXRpdmVXaXRoUmFuZ2UucmFu
Z2UubGVuZ3RoLCBkaWN0YXRpb25Db250ZXh0KSk7CisgICAgfQorfQorCistICh2b2lkKV9yZW1v
dmVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6KHVpbnQ2NF90KWRpY3RhdGlvbkNvbnRleHQKK3sKKyAg
ICBfcHJpdmF0ZS0+bV9kaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXItPnJlbW92ZUFsdGVy
bmF0aXZlcyhkaWN0YXRpb25Db250ZXh0KTsKK30KKyNlbmRpZgorCiAtIChOU1BvaW50KV9jb252
ZXJ0UG9pbnRGcm9tUm9vdFZpZXc6KE5TUG9pbnQpcG9pbnQKIHsKICAgICByZXR1cm4gTlNNYWtl
UG9pbnQocG9pbnQueCwgW3NlbGYgYm91bmRzXS5zaXplLmhlaWdodCAtIHBvaW50LnkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCmluZGV4IGVhMmJmY2Y2MDc0ZTlhNTEx
YzNjM2VhZTJkYjRmZjVlNWVjM2M0ZjYuLmQzODRmODdjN2ZhM2ExMzg0OTYxYzUzOGVkYjJlZGRm
YmVjYzViZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0Rh
dGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKQEAgLTI5
LDYgKzI5LDcgQEAKIAogI2ltcG9ydCAiV2ViVHlwZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2Vi
RGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xheWVyRmx1c2hTY2hlZHVsZXIu
aD4KICNpbXBvcnQgPFdlYkNvcmUvTGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9QbGF0Zm9ybVN0cmluZy5oPgpAQCAtMzgsOCArMzksOSBAQAogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgSGlzdG9y
eUl0ZW07Ci0gICAgY2xhc3MgUGFnZTsKK2NsYXNzIERpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJv
bGxlcjsKK2NsYXNzIEhpc3RvcnlJdGVtOworY2xhc3MgUGFnZTsKIH0KIAogQGNsYXNzIFdlYklu
c3BlY3RvcjsKQEAgLTIwMCw1ICsyMDIsOSBAQCBwcml2YXRlOgogICAgIGludCB2YWxpZGF0aW9u
TWVzc2FnZVRpbWVyTWFnbmlmaWNhdGlvbjsKIAogICAgIGZsb2F0IGN1c3RvbURldmljZVNjYWxl
RmFjdG9yOworCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgT3duUHRyPFdl
YkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcj4gbV9kaWN0YXRpb25BbHRlcm5h
dGl2ZUNvbnRyb2xsZXI7CisjZW5kaWYKIH0KIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXdEYXRhLm1tCmluZGV4IDBiODExN2EwOTcwNmQ1YjZlYzRlNjQ1N2MzMzk4ZTQ3NjI2
YzU4YmEuLjkwYWNlMTM4MWU5MWQzNzg1YjRlMmNmNzc4N2U1NWE3MGMwZDJjNTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQpAQCAtMzEsNiArMzEsNyBAQAogCiAj
aW1wb3J0ICJXZWJLaXRMb2dnaW5nLmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlS2V5c1ByaXZh
dGUuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0hpc3RvcnlJdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bkxvb3AuaD4KQEAgLTEwMCw2ICsx
MDEsMTAgQEAgTGF5ZXJGbHVzaENvbnRyb2xsZXI6OkxheWVyRmx1c2hDb250cm9sbGVyKFdlYlZp
ZXcqIHdlYlZpZXcpCiAKICAgICBwbHVnaW5EYXRhYmFzZUNsaWVudENvdW50Kys7CiAKKyNpZiBV
U0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBtX2RpY3RhdGlvbkFsdGVybmF0aXZlQ29u
dHJvbGxlciA9IGFkb3B0UHRyKG5ldyBXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRy
b2xsZXIpOworI2VuZGlmCisKICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggMDJjYzU1MDEwNmIwNDRmYmMxNzdj
OWY1OWExZjgzZjU5MGRlNTBiMC4uYzIwZGQ5MzdiMTJiZGQxYzhmMjlmYjRmNDc3YWI2NzcxZTRi
YTE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJu
YWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBA
IC0zNCwyMCArMzQsMjYgQEAKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKIAogI2lmZGVm
IF9fY3BsdXNwbHVzCisjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9GaW5kT3B0aW9ucy5oPgorI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJl
Y3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUtleWJvYXJkVUlNb2RlLmg+CiAKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEVsZW1lbnQ7Ci0gICAgY2xhc3MgRnJhbWU7Ci0gICAg
Y2xhc3MgSGlzdG9yeUl0ZW07Ci0gICAgY2xhc3MgS1VSTDsKLSAgICBjbGFzcyBLZXlib2FyZEV2
ZW50OwotICAgIGNsYXNzIFBhZ2U7Ci0gICAgY2xhc3MgUmVuZGVyQm94OwotICAgIGNsYXNzIE5v
ZGU7CitjbGFzcyBFbGVtZW50OworY2xhc3MgRXZlbnQ7CitjbGFzcyBGcmFtZTsKK2NsYXNzIEhp
c3RvcnlJdGVtOworY2xhc3MgS1VSTDsKK2NsYXNzIEtleWJvYXJkRXZlbnQ7CitjbGFzcyBQYWdl
OworY2xhc3MgUmVuZGVyQm94OworY2xhc3MgTm9kZTsKK3N0cnVjdCBEaWN0YXRpb25BbHRlcm5h
dGl2ZTsKK3N0cnVjdCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U7CiB9CiAjZW5kaWYKIApAQCAt
OTUsNiArMTAxLDE1IEBAIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRP
cHRpb25zIG9wdGlvbnMpOwogLSAodm9pZClfc2NoZWR1bGVHbGliQ29udGV4dEl0ZXJhdGlvbnM7
CiAjZW5kaWYKIAorI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKy0gKHZvaWQpaGFuZGxl
QWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6KE5TU3RyaW5nKil0ZXh0OworI2VuZGlmCisKKyNpZiBV
U0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKy0gKHZvaWQpX2dldFdlYkNvcmVEaWN0YXRpb25B
bHRlcm5hdGl2ZXM6KFZlY3RvcjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4mKWFsdGVy
bmF0aXZlcyBmcm9tVGV4dEFsdGVybmF0aXZlczooY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZT4mKWFsdGVybmF0aXZlc1dpdGhSYW5nZTsKKy0gKHZvaWQpX3Jl
bW92ZURpY3RhdGlvbkFsdGVybmF0aXZlczoodWludDY0X3QpZGljdGF0aW9uQ29udGV4dDsKKyNl
bmRpZgorCiBAZW5kCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
UHJpdmF0ZS5oCmluZGV4IDAyZjdiY2M0NTY3ZDc2NWM3YmQzYTQzNGYyNTcyNmE2MTAzZTMxMzAu
LjgyODliMTJjMTg4YmVkYWYwNTEwNDZmYTY4MjIyNzUyZWU5OGRkNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKQEAgLTY4Nyw5ICs2ODcsNiBAQCBDb3Vs
ZCBiZSB3b3J0aCBhZGRpbmcgdG8gdGhlIEFQSS4KIC0gKHZvaWQpc2V0QXV0b21hdGljU3BlbGxp
bmdDb3JyZWN0aW9uRW5hYmxlZDooQk9PTClmbGFnOwogLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNT
cGVsbGluZ0NvcnJlY3Rpb246KGlkKXNlbmRlcjsKICNlbmRpZgotI2lmICFkZWZpbmVkKEJVSUxE
SU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKLS0g
KHZvaWQpaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OihOU1N0cmluZyopcmVzdWx0OwotI2Vu
ZGlmCiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld0VkaXRpbmdJbk1haWwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4
IGM2YTE2NzNiNGNkNDU0MjQxMzkwZmJhOWU2YjhiNTU3YjJjMjUwZDMuLjdjZTdiYTUxYzAxZjBh
NjRhMTEwODEzNTJkNjJkN2ZiMzk2ZTBmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9DcmVkZW50aWFsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0RhdGFiYXNlRGV0YWlscy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGljdGF0
aW9uQWx0ZXJuYXRpdmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdTZXNzaW9uLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+
CkBAIC01MzEsNiArNTMyLDI0IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxEYXRhYmFzZURldGFpbHM+
OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBEYXRhYmFzZURlCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT46OmVu
Y29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IERpY3RhdGlvbkFsdGVybmF0aXZl
JiBkaWN0YXRpb25BbHRlcm5hdGl2ZSkKK3sKKyAgICBlbmNvZGVyLT5lbmNvZGUoZGljdGF0aW9u
QWx0ZXJuYXRpdmUucmFuZ2VTdGFydCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGRpY3RhdGlvbkFs
dGVybmF0aXZlLnJhbmdlTGVuZ3RoKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoZGljdGF0aW9uQWx0
ZXJuYXRpdmUuZGljdGF0aW9uQ29udGV4dCk7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxEaWN0
YXRpb25BbHRlcm5hdGl2ZT46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIERpY3Rh
dGlvbkFsdGVybmF0aXZlJiBkaWN0YXRpb25BbHRlcm5hdGl2ZSkKK3sKKyAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShkaWN0YXRpb25BbHRlcm5hdGl2ZS5yYW5nZVN0YXJ0KSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRpY3RhdGlvbkFsdGVybmF0aXZl
LnJhbmdlTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+
ZGVjb2RlKGRpY3RhdGlvbkFsdGVybmF0aXZlLmRpY3RhdGlvbkNvbnRleHQpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIAogdm9pZCBBcmd1bWVudENvZGVy
PEZpbGVDaG9vc2VyU2V0dGluZ3M+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBj
b25zdCBGaWxlQ2hvb3NlclNldHRpbmdzJiBzZXR0aW5ncykKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAwMzNlMTc5NGNiYzI3ZDhjZDc5
ODk4MDZiYWMyM2I4ODE5MmIzZGQ4Li5kMDI5ZTY1ZTU4ZDIzODcwZWY0OGNiMTlmOWMyZTIyYjRm
MGM5OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCkBAIC01MCw2ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKICAgICBzdHJ1Y3QgQ29t
cG9zaXRpb25VbmRlcmxpbmU7CisgICAgc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOwogICAg
IHN0cnVjdCBEcmFnU2Vzc2lvbjsKICAgICBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5nczsKICAg
ICBzdHJ1Y3QgR3JhbW1hckRldGFpbDsKQEAgLTIwMyw2ICsyMDQsMTEgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpEYXRhYmFzZURldGFpbHM+IHsKICAgICBzdGF0
aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxz
Jik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkRpY3Rh
dGlvbkFsdGVybmF0aXZlPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2Rl
ciosIGNvbnN0IFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlJik7CisgICAgc3RhdGljIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZl
Jik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbGVD
aG9vc2VyU2V0dGluZ3M+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVy
KiwgY29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOwogICAgIHN0YXRpYyBib29s
IGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50
SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwu
aAppbmRleCBhOWQ3YTlmYTk0NmM5N2M4Mzg3MzljYjA2ZTRkMmUyNDQ4ZjUwYjZhLi41MjM5YjAx
ZWQ2MjM5NmIwNzA1ODhiM2QyMzY3OWY2YjcxNGM4MTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTMwLDYgKzMwLDEyIEBA
CiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAor
bmFtZXNwYWNlIFdlYkNvcmUgeworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorY2xh
c3MgRGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyOworI2VuZGlmCit9CisKIEBjbGFzcyBX
S0VkaXRvclVuZG9UYXJnZXRPYmpDOwogQGNsYXNzIFdLVmlldzsKIApAQCAtMTI5LDExICsxMzUs
MTcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgV0tWaWV3KiB3a1ZpZXcoKSBjb25zdCB7IHJl
dHVybiBtX3drVmlldzsgfQogCisgICAgdmlydHVhbCB1aW50NjRfdCBhZGREaWN0YXRpb25BbHRl
cm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNv
bnRleHQpOworCiAgICAgV0tWaWV3KiBtX3drVmlldzsKICAgICBSZXRhaW5QdHI8V0tFZGl0b3JV
bmRvVGFyZ2V0T2JqQz4gbV91bmRvVGFyZ2V0OwogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NO
T1dfTEVPUEFSRCkKICAgICBDb3JyZWN0aW9uUGFuZWwgbV9jb3JyZWN0aW9uUGFuZWw7CiAjZW5k
aWYKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBPd25QdHI8V2ViQ29yZTo6
RGljdGF0aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyPiBtX2RpY3RhdGlvbkFsdGVybmF0aXZlQ29u
dHJvbGxlcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IDcy
ZWEzNDkzZTFhNjc5NDNkNTZlN2I1NWU5NDdjYjMwOWQ1YzNmODQuLjljZGFlMTU1ODM3Mzk4MzZj
OTMyNTA2NTA1MmU1Yzg0MTc0ZmFlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCkBAIC0yNiw2ICsyNiw5IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnRJbXBsLmgiCiAKKyNpZiBVU0UoRElDVEFU
SU9OX0FMVEVSTkFUSVZFUykKKyNpbXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4K
KyNlbmRpZgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRGljdGlvbmFyeVBv
cHVwSW5mby5oIgogI2ltcG9ydCAiRmluZEluZGljYXRvci5oIgpAQCAtMzksNiArNDIsNyBAQAog
I2ltcG9ydCAiV2ViUG9wdXBNZW51UHJveHlNYWMuaCIKICNpbXBvcnQgPFdlYkNvcmUvQml0bWFw
SW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ3Vyc29yLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Rp
Y3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJl
Y3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm91bmRhdGlvbkV4dHJhcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9HcmFwaGljc0NvbnRleHQuaD4KQEAgLTEyMiw2ICsxMjYsOSBAQCBQYXNzT3duUHRyPFBh
Z2VDbGllbnRJbXBsPiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlKFdLVmlldyogd2tWaWV3KQogUGFn
ZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKFdLVmlldyogd2tWaWV3KQogICAgIDogbV93a1Zp
ZXcod2tWaWV3KQogICAgICwgbV91bmRvVGFyZ2V0KEFkb3B0TlMsIFtbV0tFZGl0b3JVbmRvVGFy
Z2V0T2JqQyBhbGxvY10gaW5pdF0pCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisg
ICAgLCBtX2RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlcihhZG9wdFB0cihuZXcgRGljdGF0
aW9uQWx0ZXJuYXRpdmVDb250cm9sbGVyKSkKKyNlbmRpZgogewogfQogCkBAIC0yMDksMTAgKzIx
NiwxMyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwcm9jZXNzRGlkQ3Jhc2goKQogewogICAgIFtt
X3drVmlldyBfcHJvY2Vzc0RpZENyYXNoXTsKIH0KLSAgICAKKwogdm9pZCBQYWdlQ2xpZW50SW1w
bDo6cGFnZUNsb3NlZCgpCiB7CiAgICAgW21fd2tWaWV3IF9wYWdlQ2xvc2VkXTsKKyNpZiBVU0Uo
RElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBtX2RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJv
bGxlci0+Y2xlYXIoKTsKKyNlbmRpZgogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRSZWxh
dW5jaFByb2Nlc3MoKQpAQCAtNTI5LDQgKzUzOSwyMCBAQCBib29sIFBhZ2VDbGllbnRJbXBsOjpl
eGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yU3RyaW5n
KQogICAgIHJldHVybiBbbV93a1ZpZXcgX2V4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yOk5T
U2VsZWN0b3JGcm9tU3RyaW5nKHNlbGVjdG9yU3RyaW5nKV07CiB9CiAKK3VpbnQ2NF90IFBhZ2VD
bGllbnRJbXBsOjphZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4
dEFsdGVybmF0aXZlcz4mIGFsdGVybmF0aXZlcykKK3sKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVS
TkFUSVZFUykKKyAgICByZXR1cm4gbV9kaWN0YXRpb25BbHRlcm5hdGl2ZUNvbnRyb2xsZXItPmFk
ZEFsdGVybmF0aXZlcyhhbHRlcm5hdGl2ZXMpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRp
ZgorfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMo
dWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFU
SVZFUykKKyAgICBtX2RpY3RhdGlvbkFsdGVybmF0aXZlQ29udHJvbGxlci0+cmVtb3ZlQWx0ZXJu
YXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IGMz
MmY5MDA0ODk5NGRiZGJlYTQzNTA3NDIzN2E5OTE5MTM2MWExOTkuLjQyODZhYThiOWQyYjc1Zjk1
MmE3MjRlMmQzNDViYWMzYWYyMzE4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXcubW0KQEAgLTI2LDYgKzI2LDExIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNp
bXBvcnQgIldLVmlldy5oIgogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisjaW1w
b3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CisjaW1wb3J0IDxBcHBLaXQvTlNBdHRy
aWJ1dGVkU3RyaW5nLmg+CisjZW5kaWYKKwogI2ltcG9ydCAiQXR0cmlidXRlZFN0cmluZy5oIgog
I2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eUltcGwu
aCIKQEAgLTczLDYgKzc4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUmVnaW9uLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1J1bkxvb3AuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJDb3JlTlNTdHJpbmdFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CkBAIC0xMTY3LDcgKzExNzMs
MTIgQEAgc3RhdGljIGNvbnN0IHNob3J0IGtJT0hJREV2ZW50VHlwZVNjcm9sbCA9IDY7CiAgICAg
TlNTdHJpbmcgKnRleHQ7CiAgICAgYm9vbCBpc0Zyb21JbnB1dE1ldGhvZCA9IF9kYXRhLT5fcGFn
ZS0+ZWRpdG9yU3RhdGUoKS5oYXNDb21wb3NpdGlvbjsKIAorICAgIFZlY3RvcjxUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2U+IGRpY3RhdGlvbkFsdGVybmF0aXZlczsKKwogICAgIGlmIChpc0F0dHJp
YnV0ZWRTdHJpbmcpIHsKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICAgICAg
Y29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXMoc3RyaW5nLCBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMpOworI2VuZGlmCiAgICAgICAgIC8vIEZJWE1FOiBXZSBpZ25vcmUgbW9zdCBhdHRyaWJ1
dGVzIGZyb20gdGhlIHN0cmluZywgc28gZm9yIGV4YW1wbGUgaW5zZXJ0aW5nIGZyb20gQ2hhcmFj
dGVyIFBhbGV0dGUgbG9zZXMgZm9udCBhbmQgZ2x5cGggdmFyaWF0aW9uIGRhdGEuCiAgICAgICAg
IHRleHQgPSBbc3RyaW5nIHN0cmluZ107CiAgICAgfSBlbHNlCkBAIC0xMTg3LDcgKzExOTgsMTEg
QEAgc3RhdGljIGNvbnN0IHNob3J0IGtJT0hJREV2ZW50VHlwZVNjcm9sbCA9IDY7CiAKICAgICBT
dHJpbmcgZXZlbnRUZXh0ID0gdGV4dDsKICAgICBldmVudFRleHQucmVwbGFjZShOU0JhY2tUYWJD
aGFyYWN0ZXIsIE5TVGFiQ2hhcmFjdGVyKTsgLy8gc2FtZSB0aGluZyBpcyBkb25lIGluIEtleUV2
ZW50TWFjLm1tIGluIFdlYkNvcmUKLSAgICBib29sIGV2ZW50SGFuZGxlZCA9IF9kYXRhLT5fcGFn
ZS0+aW5zZXJ0VGV4dChldmVudFRleHQsIHJlcGxhY2VtZW50UmFuZ2UubG9jYXRpb24sIE5TTWF4
UmFuZ2UocmVwbGFjZW1lbnRSYW5nZSkpOworICAgIGJvb2wgZXZlbnRIYW5kbGVkOworICAgIGlm
IChkaWN0YXRpb25BbHRlcm5hdGl2ZXMuc2l6ZSgpKQorICAgICAgICBldmVudEhhbmRsZWQgPSBf
ZGF0YS0+X3BhZ2UtPmluc2VydERpY3RhdGVkVGV4dChldmVudFRleHQsIHJlcGxhY2VtZW50UmFu
Z2UubG9jYXRpb24sIE5TTWF4UmFuZ2UocmVwbGFjZW1lbnRSYW5nZSksIGRpY3RhdGlvbkFsdGVy
bmF0aXZlcyk7CisgICAgZWxzZQorICAgICAgICBldmVudEhhbmRsZWQgPSBfZGF0YS0+X3BhZ2Ut
Pmluc2VydFRleHQoZXZlbnRUZXh0LCByZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uLCBOU01heFJh
bmdlKHJlcGxhY2VtZW50UmFuZ2UpKTsKIAogICAgIGlmIChwYXJhbWV0ZXJzKQogICAgICAgICBw
YXJhbWV0ZXJzLT5ldmVudEludGVycHJldGF0aW9uSGFkU2lkZUVmZmVjdHMgfD0gZXZlbnRIYW5k
bGVkOwpAQCAtMjg1Niw5ICsyODcxLDkgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1
ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKICAgICByZXR1cm4gX2RhdGEtPl9zcGVs
bENoZWNrZXJEb2N1bWVudFRhZzsKIH0KIAotLSAodm9pZCloYW5kbGVDb3JyZWN0aW9uUGFuZWxS
ZXN1bHQ6KE5TU3RyaW5nKilyZXN1bHQKKy0gKHZvaWQpaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2
ZVRleHQ6KE5TU3RyaW5nKil0ZXh0CiB7Ci0gICAgX2RhdGEtPl9wYWdlLT5oYW5kbGVBbHRlcm5h
dGl2ZVRleHRVSVJlc3VsdChyZXN1bHQpOworICAgIF9kYXRhLT5fcGFnZS0+aGFuZGxlQWx0ZXJu
YXRpdmVUZXh0VUlSZXN1bHQodGV4dCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCmluZGV4IDZiNmViNmJmNDFkMTkx
NGQzZDZkMDZmMGYyMzI2MzBjMzkyYjgwNWIuLjQzYzZlMmJhYWEwNTBkZTRiNjIwNTg4NGQ2MmU3
YTIzMTYxMzVlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3SW50ZXJuYWwuaApAQCAtOTYsNiArOTYsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC0g
KHZvaWQpX2NhY2hlV2luZG93Qm90dG9tQ29ybmVyUmVjdDsKIAogLSAoTlNJbnRlZ2VyKXNwZWxs
Q2hlY2tlckRvY3VtZW50VGFnOwotLSAodm9pZCloYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQ6
KE5TU3RyaW5nKilyZXN1bHQ7CistICh2b2lkKWhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0
OihOU1N0cmluZyopdGV4dDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgKaW5kZXggN2M4MTUxMDFkZmE3MmRkNDkzYTk0MDY5ZWZhNTIyNWRkMWYyNzgzNS4uNGUwMmJl
NjlhMDhkYTViOTdhNzQ0NDRlM2JjMjI4Y2M2Zjg1YjkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUGx1Z2luQ29tcGxl
eFRleHRJbnB1dFN0YXRlLmgiCiAKIE9CSkNfQ0xBU1MgV0tWaWV3OworT0JKQ19DTEFTUyBOU1Rl
eHRBbHRlcm5hdGl2ZXM7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTkyLDYg
KzE5Myw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVjb21tZW5kZWRTY3JvbGxiYXJT
dHlsZURpZENoYW5nZShpbnQzMl90IG5ld1N0eWxlKSA9IDA7CiAgICAgCiAgICAgdmlydHVhbCBX
S1ZpZXcqIHdrVmlldygpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdWludDY0X3QgYWRkRGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0
X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hhbmdlU2Nyb2xsYmFyc0Zvck1haW5GcmFtZSgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggN2NjMzBmNDBlMTQ4ZjI1YWE5NDc5Y2Q4
MTBkOTJlZDI0ZDgzNDFkMy4uN2EwZmM5YzFhNDY0ZTYwMmMyMjA5ZmRhNTBlNzI2NWZlYmFhNTky
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM3Njcs
NiArMzc2NywxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlS
ZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCiAgICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6SGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0KSwgbV9w
YWdlSUQsIDApOwogI2VuZGlmCiB9CisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykK
K3ZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3Qg
ZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBtX3BhZ2VDbGllbnQtPnJlbW92ZURpY3RhdGlvbkFs
dGVybmF0aXZlcyhkaWN0YXRpb25Db250ZXh0KTsKK30KKyNlbmRpZgorCiAjZW5kaWYgLy8gUExB
VEZPUk0oTUFDKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCBiMWU3ZWVhMDViZTU5ZTRhZDhkOTBjYzQzYjJlNzEwYmI4
ZTdjMzY1Li4yMGM2MGNjYjRjYTdhNmZhODRhMTMyMzk3NzQ2MDIxNWNjN2QxZTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01OCw2ICs1OCw3IEBACiAjaW5j
bHVkZSAiV2ViUG9wdXBNZW51UHJveHkuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRDbGll
bnQuaCIKICNpbmNsdWRlICJXZWJVSUNsaWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRHJhZ1Nlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpdFRlc3RS
ZXN1bHQuaD4KQEAgLTkxLDYgKzkyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IEludFNpemU7CiAgICAgY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogICAgIHN0cnVjdCBGaWxlQ2hv
b3NlclNldHRpbmdzOworICAgIHN0cnVjdCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U7CiAgICAg
c3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKICAgICBzdHJ1Y3QgVmlld3BvcnRBdHRyaWJ1dGVz
OwogICAgIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKQEAgLTM0Nyw2ICszNDksNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjb25maXJtQ29tcG9zaXRpb24oKTsKICAgICB2b2lkIGNhbmNlbENvbXBvc2l0
aW9uKCk7CiAgICAgYm9vbCBpbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3Qg
cmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kKTsKKyAg
ICBib29sIGluc2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJl
cGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGRpY3RhdGlvbkFsdGVy
bmF0aXZlcyk7CiAgICAgdm9pZCBnZXRNYXJrZWRSYW5nZSh1aW50NjRfdCYgbG9jYXRpb24sIHVp
bnQ2NF90JiBsZW5ndGgpOwogICAgIHZvaWQgZ2V0U2VsZWN0ZWRSYW5nZSh1aW50NjRfdCYgbG9j
YXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpOwogICAgIHZvaWQgZ2V0QXR0cmlidXRlZFN1YnN0cmlu
Z0Zyb21SYW5nZSh1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBBdHRyaWJ1dGVk
U3RyaW5nJik7CkBAIC04NzgsNiArODgxLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc21pc3ND
b3JyZWN0aW9uUGFuZWxTb29uKGludDMyX3QgcmVhc29uLCBTdHJpbmcmIHJlc3VsdCk7CiAgICAg
dm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9uc2VUeXBlLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3Ry
aW5nKTsKICNlbmRpZiAvLyAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisjaWYg
VVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRl
cm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCk7CisjZW5kaWYKICNlbmRpZiAvLyBQ
TEFURk9STShNQUMpCiAKICAgICB2b2lkIGNsZWFyTG9hZERlcGVuZGVudENhbGxiYWNrcygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggZDcxODExNTUxZDQzYTAyN2U2NjhhYmM4ZDJmOWQ5YzgzNjNmNmU1Yy4uZDFlMTFlMTBj
NzY3MWMyZjA1MjFkYjdiYTQ4MGQ2MmM2YThmZmRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNzgsNiArMjc4LDEwIEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgUmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNw
b25zZShpbnQzMl90IHJlc3BvbnNlVHlwZSwgU3RyaW5nIHJlcGxhY2VkU3RyaW5nLCBTdHJpbmcg
cmVwbGFjZW1lbnRTdHJpbmcpOwogI2VuZGlmCiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFU
SVZFUykKKyAgICBSZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9u
Q29udGV4dCk7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAjIFdpbmRvd3MgNyBH
ZXN0dXJlIE1lc3NhZ2VzCiAgICAgU2V0R2VzdHVyZVJlYWNoZWRTY3JvbGxpbmdMaW1pdChib29s
IGxpbWl0UmVhY2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
Q29ycmVjdGlvblBhbmVsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0
aW9uUGFuZWwubW0KaW5kZXggOTQxNzFmNzM3YWIzNmQ1ZmZkYTU4NzY3OGQyZmQ4NjAwNDU3NDQ1
OC4uMDk2NDFjZDA4M2JhZDE0YWUzZTZiNDBiZjA0NjAzYzM2YWFjYmY2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0KQEAgLTEzNyw3ICsx
MzcsNyBAQCB2b2lkIENvcnJlY3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0ZWRSZXBsYWNlbWVudChO
U1N0cmluZyogYWNjZXB0ZWRSZXBsYWNlbWVudCwgTgogICAgICAgICBicmVhazsKICAgICB9CiAK
LSAgICBbbV92aWV3LmdldCgpIGhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDphY2NlcHRlZFJl
cGxhY2VtZW50XTsKKyAgICBbbV92aWV3LmdldCgpIGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVU
ZXh0OmFjY2VwdGVkUmVwbGFjZW1lbnRdOwogICAgIG1fdmlldy5jbGVhcigpOwogICAgIGlmIChh
Y2NlcHRlZFJlcGxhY2VtZW50KQogICAgICAgICBtX3Jlc3VsdEZvckRpc21pc3NhbC5hZG9wdE5T
KFthY2NlcHRlZFJlcGxhY2VtZW50IGNvcHldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggMzU4NDcxODJlMTQwYjdkODRkMDk4MzQ2
YjY4YjczZWIxYTA4NjRmMC4uNjc4OWFkOWRlMGJiMjYyY2YzOWFmMmUxNDI3MDMyODc2NWEwNzlh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0KQEAgLTM4LDcgKzM4LDkgQEAKICNpbXBvcnQgIlRleHRDaGVja2VyLmgiCiAjaW1wb3J0ICJX
ZWJQYWdlTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgorI2ltcG9ydCA8
V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+CiAj
aW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlLmg+CiAKQEAgLTE5OCw2ICsyMDAsMzUgQEAgYm9vbCBXZWJQYWdlUHJveHk6
Omluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdl
U3RhcnQKICAgICByZXR1cm4gaGFuZGxlZDsKIH0KIAorYm9vbCBXZWJQYWdlUHJveHk6Omluc2Vy
dERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFu
Z2VTdGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCwgY29uc3QgVmVjdG9yPFRleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZSkKK3sK
KyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBpZiAoZGljdGF0aW9uQWx0ZXJu
YXRpdmVzV2l0aFJhbmdlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGluc2VydFRleHQodGV4
dCwgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdlRW5kKTsKKworICAgIGlm
ICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFZlY3RvcjxEaWN0YXRp
b25BbHRlcm5hdGl2ZT4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzOworCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBkaWN0YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFuZ2Uuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgY29uc3QgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlJiBhbHRlcm5hdGl2ZVdpdGhS
YW5nZSA9IGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZVtpXTsKKyAgICAgICAgdWludDY0
X3QgZGljdGF0aW9uQ29udGV4dCA9IG1fcGFnZUNsaWVudC0+YWRkRGljdGF0aW9uQWx0ZXJuYXRp
dmVzKGFsdGVybmF0aXZlV2l0aFJhbmdlLmFsdGVybmF0aXZlKTsKKyAgICAgICAgaWYgKGRpY3Rh
dGlvbkNvbnRleHQpCisgICAgICAgICAgICBkaWN0YXRpb25BbHRlcm5hdGl2ZXMuYXBwZW5kKERp
Y3RhdGlvbkFsdGVybmF0aXZlKGFsdGVybmF0aXZlV2l0aFJhbmdlLnJhbmdlLmxvY2F0aW9uLCBh
bHRlcm5hdGl2ZVdpdGhSYW5nZS5yYW5nZS5sZW5ndGgsIGRpY3RhdGlvbkNvbnRleHQpKTsKKyAg
ICB9CisKKyAgICBpZiAoZGljdGF0aW9uQWx0ZXJuYXRpdmVzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIGluc2VydFRleHQodGV4dCwgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVu
dFJhbmdlRW5kKTsKKworICAgIGJvb2wgaGFuZGxlZCA9IHRydWU7CisgICAgcHJvY2VzcygpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RGljdGF0ZWRUZXh0KHRleHQsIHJlcGxh
Y2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCwgZGljdGF0aW9uQWx0ZXJuYXRp
dmVzKSwgTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERpY3RhdGVkVGV4dDo6UmVwbHkoaGFuZGxl
ZCwgbV9lZGl0b3JTdGF0ZSksIG1fcGFnZUlEKTsKKyAgICByZXR1cm4gaGFuZGxlZDsKKyNlbHNl
CisgICAgcmV0dXJuIGluc2VydFRleHQodGV4dCwgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBs
YWNlbWVudFJhbmdlRW5kKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFy
a2VkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKQogewogICAgIGxv
Y2F0aW9uID0gTlNOb3RGb3VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5o
CmluZGV4IGI4MDVhZGFmNTgxMmFmNWYyM2NlYzRhMWI1YzkyZDdjNjkzNmUyYzQuLjgxN2IwM2M0
YTIwYmFlZjY4Mzc2ODUxZDUyODM2MGRmOGIxMWM3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuaApAQCAtNDEsNiArNDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRpc21pc3NBbHRlcm5hdGl2ZShXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJu
YXRpdmVUZXh0KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQWx0ZXJuYXRp
dmVTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYkNv
cmU6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNv
bnRleHQpIE9WRVJSSURFOwogcHJpdmF0ZToKICAgICBXZWJQYWdlICptX3BhZ2U7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAKaW5kZXggNmFiYjY5
MzU0MWQwODU2ZWUwMWZkYzYzZTgxOGY5ODU2NjRmNjBkYS4uN2I2YmE5ZGQ0ODQ0YjgwMDM3YTgy
MzZkZjkxY2ZkYzg1NDA1Y2JmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkBAIC03Niw0ICs3NywxMyBAQCB2b2lkIFdlYkFsdGVybmF0aXZlVGV4
dENsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3Bv
bgogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZW1vdmVEaWN0
YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyNpZiBVU0Uo
RElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6UmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRpY3RhdGlvbkNvbnRleHQpOworI2VuZGlmCit9CisK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGEz
YmRhMjljNjdlMDk3M2E4M2Q1Mzk4OTgzMmVkYjY5MjNiNjU2NzUuLjJjNGFiODBkZGFjMGZkNDM1
ZmQ5YTQ0ZDljZmI5NjM1ZGI0OGM3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIlNhbmRib3hFeHRl
bnNpb24uaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXZWJVbmRv
U3RlcC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KQEAgLTQxNCw3ICs0MTUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQoY29uc3QgV2Vi
S2l0OjpXZWJNb3VzZUV2ZW50JiwgYm9vbCYgcmVzdWx0KTsKICAgICB2b2lkIGFjY2VwdHNGaXJz
dE1vdXNlKGludCBldmVudE51bWJlciwgY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW50JiwgYm9v
bCYgcmVzdWx0KTsKICAgICBib29sIHBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rv
cihjb25zdCBTdHJpbmcmKTsKLQorICAgIHZvaWQgaW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0
cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBs
YWNlbWVudFJhbmdlRW5kLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRp
dmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9vbCYgaGFuZGxlZCwgRWRpdG9y
U3RhdGUmIG5ld1N0YXRlKTsKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkIGNvbmZpcm1D
b21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nKTsKICAgICB2b2lkIHNl
dENvbXBvc2l0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgY29uc3Qg
V1RGOjpWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzLCB1
aW50NjRfdCBjdXJzb3JQb3NpdGlvbik7CkBAIC00OTYsNyArNDk3LDYgQEAgcHVibGljOgogCiAg
ICAgdm9pZCB1bm1hcmtBbGxNaXNzcGVsbGluZ3MoKTsKICAgICB2b2lkIHVubWFya0FsbEJhZEdy
YW1tYXIoKTsKLQogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05P
V19MRU9QQVJEKQogICAgIHZvaWQgaGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3Qg
U3RyaW5nJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYTdmZGVlODljN2NlYmI4Mzk1ZmMwNzRl
YmYxYzE1MGU2NjA4OTkwZC4uMjA3Yjc2MWViMzNhZGFmMzQxNjU1NWNhMzlmZjdjNTEwNjRiYjQ4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KQEAgLTI0NSw2ICsyNDUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsK
ICAgICBFeGVjdXRlS2V5cHJlc3NDb21tYW5kcyhWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21t
YW5kPiBzYXZlZENvbW1hbmRzKSAtPiAoYm9vbCBoYW5kbGVkLCBXZWJLaXQ6OkVkaXRvclN0YXRl
IG5ld1N0YXRlKQogICAgIFNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudChXZWJLaXQ6Oldl
Yk1vdXNlRXZlbnQgZXZlbnQpIC0+IChib29sIHJlc3VsdCkKICAgICBBY2NlcHRzRmlyc3RNb3Vz
ZShpbnQgZXZlbnROdW1iZXIsIFdlYktpdDo6V2ViTW91c2VFdmVudCBldmVudCkgLT4gKGJvb2wg
cmVzdWx0KQorICAgIEluc2VydERpY3RhdGVkVGV4dChXVEY6OlN0cmluZyB0ZXh0LCB1aW50NjRf
dCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQsIFdU
Rjo6VmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMpIC0+IChib29sIGhhbmRsZWQsIFdlYktpdDo6RWRpdG9yU3RhdGUgbmV3U3RhdGUpCiAj
ZW5kaWYKICNpZiBQTEFURk9STShXSU4pCiAgICAgLy8gRklYTUU6IFVuaWZ5IHdpdGggTWFjIGNv
dW50ZXJwYXJ0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQppbmRleCA3NDViMjBiZjEwYTI1YTVkOGIxMmQzM2ZkMjhhNDgyM2Uz
Yjk3OWVkLi45NmVmNDgxNzY1NDQ3ZjBmMGI0NzkwODE1YjZlZjkzNGM1YjJiOTM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
CkBAIC0yOTAsNiArMjkwLDIxIEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0VGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWluCiAgICAgbmV3U3Rh
dGUgPSBlZGl0b3JTdGF0ZSgpOwogfQogCit2b2lkIFdlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4
dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWlu
dDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlv
bkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGJvb2wmIGhhbmRs
ZWQsIEVkaXRvclN0YXRlJiBuZXdTdGF0ZSkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKworICAgIGlmIChyZXBs
YWNlbWVudFJhbmdlU3RhcnQgIT0gTlNOb3RGb3VuZCkgeworICAgICAgICBSZWZQdHI8UmFuZ2U+
IHJlcGxhY2VtZW50UmFuZ2UgPSBjb252ZXJ0VG9SYW5nZShmcmFtZSwgTlNNYWtlUmFuZ2UocmVw
bGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdlRW5kIC0gcmVwbGFjZW1lbnRSYW5n
ZVN0YXJ0KSk7CisgICAgICAgIGlmIChyZXBsYWNlbWVudFJhbmdlKQorICAgICAgICAgICAgZnJh
bWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihyZXBsYWNlbWVu
dFJhbmdlLmdldCgpLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOworICAgIH0KKworICAgIEFTU0VS
VCghZnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKTsKKyAgICBoYW5kbGVkID0gZnJh
bWUtPmVkaXRvcigpLT5pbnNlcnREaWN0YXRlZFRleHQodGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRp
dmVMb2NhdGlvbnMsIG1fa2V5Ym9hcmRFdmVudEJlaW5nSW50ZXJwcmV0ZWQpOworICAgIG5ld1N0
YXRlID0gZWRpdG9yU3RhdGUoKTsKK30KKwogdm9pZCBXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZSh1
aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpCiB7CiAgICAgbG9jYXRpb24gPSBO
U05vdEZvdW5kOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGUwNTk3MTAyZGFmM2JhODY2ZmYwYWZhZmFlZWYzY2YxYjc2OTQzZjQuLjk1NGFkMDFi
M2QzNzRjYzdhYzY3YmUwNGFjZDMwODA2MWE2ZTMyN2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNC0xOCAg
SmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KKworICAgICAgICBPbiBPUyBYLCBtYXJrIHRleHQgd2l0
aCBkaWN0YXRpb24gYWx0ZXJuYXRpdmUgd2l0aCBibHVlIHVuZGVybGluZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMDQ3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgaW50ZXJmYWNlIHRvIHNp
bXVsYXRlIGRpY3RhdGVkIHRleHQgaW5wdXQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvVGV4dElucHV0Q29udHJvbGxlci5tOgorICAgICAgICAoK1tUZXh0SW5wdXRDb250cm9sbGVy
IGlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6XSk6CisgICAgICAgICgrW1RleHRJbnB1
dENvbnRyb2xsZXIgd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOl0pOgorICAgICAgICAoLVtUZXh0
SW5wdXRDb250cm9sbGVyIGRpY3RhdGVkU3RyaW5nV2l0aFByaW1hcnlTdHJpbmc6YWx0ZXJuYXRp
dmU6YWx0ZXJuYXRpdmVPZmZzZXQ6YWx0ZXJuYXRpdmVMZW5ndGg6XSk6CisKIDIwMTItMDQtMTgg
IERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IGNyYXNo
IGluIGNocm9taXVtLnB5IGFmdGVyIHIxMTQ4NzcuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlci5tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1RleHRJbnB1dENvbnRyb2xsZXIubQppbmRleCBmNzgwNzk0NDYzNjllNzhjOWY0OGNlMDgx
NWVmMWNjYzhkZjBiOTlkLi5hZmViMTZlNGQyNDJiMmI2MDIwYzAyZTQ0MWFlODNkNzQwZTkzMmYz
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxl
ci5tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyLm0K
QEAgLTMxLDYgKzMxLDEwIEBACiAKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlTWFjLmgiCiAjaW1w
b3J0IDxBcHBLaXQvTlNJbnB1dE1hbmFnZXIuaD4KKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9M
RU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX0xJT04pCisjZGVmaW5lIFNVUFBPUlRfRElDVEFUSU9OX0FMVEVSTkFUSVZF
UworI2ltcG9ydCA8QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgorI2VuZGlmCiAjaW1wb3J0
IDxXZWJLaXQvV2ViRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dlYkZyYW1lUHJpdmF0ZS5oPgpAQCAtMTcwLDcgKzE3NCw4IEBAICsgKEJP
T0wpaXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDooU0VMKWFTZWxlY3RvcgogICAgICAg
ICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihjaGFyYWN0ZXJJbmRleEZvclBvaW50WDpZ
OikKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IodmFsaWRBdHRyaWJ1dGVz
Rm9yTWFya2VkVGV4dCkKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYXR0
cmlidXRlZFN0cmluZ1dpdGhTdHJpbmc6KQotICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBz
ZWxlY3RvcihzZXRJbnB1dE1ldGhvZEhhbmRsZXI6KSkKKyAgICAgICAgICAgIHx8IGFTZWxlY3Rv
ciA9PSBAc2VsZWN0b3Ioc2V0SW5wdXRNZXRob2RIYW5kbGVyOikKKyAgICAgICAgICAgIHx8IGFT
ZWxlY3RvciA9PSBAc2VsZWN0b3IoZGljdGF0ZWRTdHJpbmdXaXRoUHJpbWFyeVN0cmluZzphbHRl
cm5hdGl2ZTphbHRlcm5hdGl2ZU9mZnNldDphbHRlcm5hdGl2ZUxlbmd0aDopKQogICAgICAgICBy
ZXR1cm4gTk87CiAgICAgcmV0dXJuIFlFUzsKIH0KQEAgLTE5NCw3ICsxOTksOSBAQCArIChOU1N0
cmluZyAqKXdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjooU0VMKWFTZWxlY3RvcgogICAgIGVsc2Ug
aWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYXR0cmlidXRlZFN0cmluZ1dpdGhTdHJpbmc6KSkK
ICAgICAgICAgcmV0dXJuIEAibWFrZUF0dHJpYnV0ZWRTdHJpbmciOyAvLyBqdXN0IGEgZmFjdG9y
eSBtZXRob2QsIGRvZXNuJ3QgY2FsbCBpbnRvIE5TVGV4dElucHV0CiAgICAgZWxzZSBpZiAoYVNl
bGVjdG9yID09IEBzZWxlY3RvcihzZXRJbnB1dE1ldGhvZEhhbmRsZXI6KSkKLSAgICAgICAgcmV0
dXJuIEAic2V0SW5wdXRNZXRob2RIYW5kbGVyIjsgCisgICAgICAgIHJldHVybiBAInNldElucHV0
TWV0aG9kSGFuZGxlciI7CisgICAgZWxzZSBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihkaWN0
YXRlZFN0cmluZ1dpdGhQcmltYXJ5U3RyaW5nOmFsdGVybmF0aXZlOmFsdGVybmF0aXZlT2Zmc2V0
OmFsdGVybmF0aXZlTGVuZ3RoOikpCisgICAgICAgIHJldHVybiBAIm1ha2VEaWN0YXRlZFN0cmlu
ZyI7CiAKICAgICByZXR1cm4gbmlsOwogfQpAQCAtMzc1LDYgKzM4MiwyNyBAQCAtIChOU011dGFi
bGVBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRlZFN0cmluZ1dpdGhTdHJpbmc6KE5TU3RyaW5n
ICopYVN0cmluZwogICAgIHJldHVybiBbW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFN0cmluZzphU3RyaW5nXSBhdXRvcmVsZWFzZV07CiB9CiAKKy0gKE5TTXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcqKWRpY3RhdGVkU3RyaW5nV2l0aFByaW1hcnlTdHJpbmc6KE5TU3Ry
aW5nKilhU3RyaW5nIGFsdGVybmF0aXZlOihOU1N0cmluZyopYWx0ZXJuYXRpdmUgYWx0ZXJuYXRp
dmVPZmZzZXQ6KGludClvZmZzZXQgYWx0ZXJuYXRpdmVMZW5ndGg6KGludClsZW5ndGgKK3sKKyNp
ZiBkZWZpbmVkKFNVUFBPUlRfRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBOU011dGFibGVB
dHRyaWJ1dGVkU3RyaW5nKiBkaWN0YXRlZFN0cmluZyA9IFtzZWxmIGF0dHJpYnV0ZWRTdHJpbmdX
aXRoU3RyaW5nOmFTdHJpbmddOworICAgIE5TUmFuZ2UgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBO
U01ha2VSYW5nZSgoTlNVSW50ZWdlcilvZmZzZXQsIChOU1VJbnRlZ2VyKWxlbmd0aCk7CisgICAg
TlNTdHJpbmcqIHN1YlN0cmluZ1dpdGhBbHRlcm5hdGl2ZSA9IFthU3RyaW5nIHN1YnN0cmluZ1dp
dGhSYW5nZTpyYW5nZVdpdGhBbHRlcm5hdGl2ZV07CisgICAgaWYgKCFzdWJTdHJpbmdXaXRoQWx0
ZXJuYXRpdmUpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBOU1RleHRBbHRlcm5hdGl2ZXMq
IGFsdGVybmF0aXZlT2JqZWN0ID0gW1tbTlNUZXh0QWx0ZXJuYXRpdmVzIGFsbG9jXSBpbml0V2l0
aFByaW1hcnlTdHJpbmc6c3ViU3RyaW5nV2l0aEFsdGVybmF0aXZlIGFsdGVybmF0aXZlU3RyaW5n
czpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6YWx0ZXJuYXRpdmVdXSBhdXRvcmVsZWFzZV07Cisg
ICAgaWYgKCFhbHRlcm5hdGl2ZU9iamVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIFtk
aWN0YXRlZFN0cmluZyBhZGRBdHRyaWJ1dGU6TlNUZXh0QWx0ZXJuYXRpdmVzQXR0cmlidXRlTmFt
ZSB2YWx1ZTphbHRlcm5hdGl2ZU9iamVjdCByYW5nZTpyYW5nZVdpdGhBbHRlcm5hdGl2ZV07CisK
KyAgICByZXR1cm4gZGljdGF0ZWRTdHJpbmc7CisjZWxzZQorICAgIHJldHVybiBuaWw7CisjZW5k
aWYKK30KKwogLSAodm9pZClzZXRJbnB1dE1ldGhvZEhhbmRsZXI6KFdlYlNjcmlwdE9iamVjdCAq
KWhhbmRsZXIKIHsKICAgICBpZiAoaW5wdXRNZXRob2RIYW5kbGVyID09IGhhbmRsZXIpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggNzk4Yzg3MTU5ZGMyOGVlOGE3YWIzZWM5ZmY5YTRhOWY4ZWQ5NDY3Zi4uYmVkYjhlZDU4YzZk
ZTUyM2E0OWI3Nzk4NmYwYmQ2NjhmZDNkOGJjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEy
LTA0LTE4ICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE9uIE9TIFgsIG1hcmsg
dGV4dCB3aXRoIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZSB3aXRoIGJsdWUgdW5kZXJsaW5lLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMwNDcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL21h
Yy1sZW9wYXJkL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjLWxpb24vU2tpcHBlZDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtc25vd2xlb3BhcmQvU2tpcHBlZDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9lZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5h
dGl2ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5n
L2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5w
dXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQuaHRtbDogQWRkZWQuCisKIDIwMTItMDQtMTggIFBoaWxp
cHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IEdUSyB0ZXN0X2V4cGVjdGF0aW9ucyB1cGRhdGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtbGVvcGFyZC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxl
b3BhcmQvU2tpcHBlZAppbmRleCBkYjM3MWEwNzU5MGJjNThmZTJlYjZlN2NlYjIwYWM0MmI1MDVk
ODcyLi41OWMzZmUwMDkxYTkwYmIxMjNmNWRhZDZlMWFjM2E1NDRjZjYzZTQzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9Ta2lwcGVkCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQKQEAgLTIxOSw2ICsyMTksMTAgQEAgaHR0
cC90ZXN0cy9zZWN1cml0eS93ZWJnbC1yZW1vdGUtcmVhZC1yZW1vdGUtaW1hZ2UtYWxsb3dlZC5o
dG1sCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3dlYmdsLXJlbW90ZS1yZWFkLXJlbW90ZS1pbWFnZS1h
bGxvd2VkLXdpdGgtY3JlZGVudGlhbHMuaHRtbAogaHR0cC90ZXN0cy9zZWN1cml0eS93ZWJnbC1y
ZW1vdGUtcmVhZC1yZW1vdGUtaW1hZ2UtYmxvY2tlZC1uby1jcm9zc29yaWdpbi5odG1sCiAKKyMg
RGljdGF0ZWQgdGV4dCBpbnB1dCBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0KK3Bs
YXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0
aXZlLmh0bWwKK3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0
Lmh0bWwKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIwogIyBUZXN0cyBiZWxvdyB0aGlzIHBvaW50IGFyZSBmYWlsaW5nIG9ubHkgb24g
c29tZSBzbGF2ZXMuCiAjIGh0dHA6Ly93ZWJraXQub3JnL2IvNTY1NTEgY292ZXJzIHRoZSBnZW5l
cmFsIGlzc3VlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxpb24vU2tp
cHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1saW9uL1NraXBwZWQKaW5kZXggNzAyYjc4
YzhiMjA5YzYyNGI4MzBhMWFmYWU4OWQzNjZjOWVmZjg0MC4uOWQ4MjU5YTFiMTk4N2NiMjZiZTdj
ZmQ2YzhhOTcyYmFjYmM5NmFlNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LWxpb24vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGlvbi9Ta2lwcGVk
CkBAIC0zOCw2ICszOCwxMCBAQCBlZGl0aW5nL3Bhc3RlYm9hcmQvNTQ3ODI1MC5odG1sCiAjIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjA3OQogZWRpdGluZy9pbnNl
cnRpbmcvaW5zZXJ0LWJnLWZvbnQuaHRtbAogCisjIERpY3RhdGVkIHRleHQgaW5wdXQgaXMgbm90
IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtCitwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9l
ZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS5odG1sCitwbGF0Zm9ybS9tYWMvZWRp
dGluZy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQtdGV4dC5odG1sCisKICMgLS0tIE1hdGggTUwgLS0t
CiAKICMgVGhlc2UgaGF2ZSBkaWZmZXJlbnQgbWV0cmljcywgYW5kIHJlcXVpcmUgaW52ZXN0aWdh
dGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1Nr
aXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtc25vd2xlb3BhcmQvU2tpcHBlZAppbmRl
eCBmNGM0NGM2NTUyYzk0NjlkYWM5MDIzMDNkMGJhNTRjMzFmMjg0Y2M0Li5mOWQ1OTc3OTBjZGNh
NDRkZTM0ZTk0YTkxZTZkOTVlNzA2YjUxNmRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtc25vd2xlb3BhcmQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtc25vd2xlb3BhcmQvU2tpcHBlZApAQCAtMTk3LDMgKzE5Nyw3IEBAIGZhc3QvaGlkcGkKICMg
RnJhbWU6OmZpbmRTdHJpbmcgZG9lcyBub3RoaW5nIG9uIHBhZ2VzIHRoYXQgcHJldmVudCBzZWxl
Y3Rpb24KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMzYxCiBl
ZGl0aW5nL3RleHQtaXRlcmF0b3IvZmluZFN0cmluZy1zZWxlY3Rpb24tZGlzYWJsZWQuaHRtbAor
CisjIERpY3RhdGVkIHRleHQgaW5wdXQgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3Jt
CitwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9lZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRl
cm5hdGl2ZS5odG1sCitwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQt
dGV4dC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9p
bnB1dC9lZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9lZGl0LWRpY3RhdGVkLXRleHQt
d2l0aC1hbHRlcm5hdGl2ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjU3Yzc4Y2E2MzhiNTdm
ODk0NWI5ZTAxOGQ1YzA5Yzk2ZGZmYTQ2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVy
bmF0aXZlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0VkaXRpbmcgdGV4dCB0aGF0IGhh
cyBEaWN0YXRpb25BbHRlcm5hdGl2ZXMgbWFya2VyIHdob3VsZCBjYXVzZSB0aGUgbWFya2VyIHRv
IGJlIHJlbW92ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwordGhpcyBpcyBhIHRl
eAorUEFTUyBtYXJrZWRUZXh0IGlzICIiCisKK1RFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13
aXRoLWFsdGVybmF0aXZlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9p
bnB1dC9lZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM3ZjAwNzkwMzY2MjY1ZjBkMGViYjBjYmQ2YWJhNjE2MDJkZTlkM2QKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9lZGl0LWRpY3RhdGVk
LXRleHQtd2l0aC1hbHRlcm5hdGl2ZS5odG1sCkBAIC0wLDAgKzEsNTkgQEAKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorYm9keSB7IG1hcmdpbjogMDsgcGFkZGluZzogMCB9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cHJlIGlkPSJkZXNjcmlwdGlvbiI+PC9wcmU+
Cis8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRpdGFibGU+PC9kaXY+Cis8cCBpZD0iY29uc29sZSI+
PC9wPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGRlc2NyaXB0aW9uKCJF
ZGl0aW5nIHRleHQgdGhhdCBoYXMgRGljdGF0aW9uQWx0ZXJuYXRpdmVzIG1hcmtlciB3aG91bGQg
Y2F1c2UgdGhlIG1hcmtlciB0byBiZSByZW1vdmVkLiIpOworCisgICAgdmFyIGNvbnNvbGVfbWVz
c2FnZXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOworICAgIAorICAgIGZ1bmN0aW9u
IGxvZyhtZXNzYWdlKQorICAgIHsKKyAgICAgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJsaSIpOworICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKG1lc3NhZ2UpKTsKKyAgICAgICAgY29uc29sZV9tZXNzYWdlcy5hcHBlbmRDaGlsZChp
dGVtKTsKKyAgICB9CisgICAgCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdmFyIHRlc3RBcmVhID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKKyAgICAgICAgICAgIHRlc3RBcmVhLmZvY3VzKCk7CisK
KyAgICAgICAgICAgIHZhciBkaWN0YXRlZFN0cmluZyA9IHRleHRJbnB1dENvbnRyb2xsZXIubWFr
ZURpY3RhdGVkU3RyaW5nKCJ0aGlzIGlzIGEgdGV4dCIsICJ0ZXN0IiwgMTAsIDQpOworICAgICAg
ICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFsbCIpOworICAgICAgICAgICAgdGV4
dElucHV0Q29udHJvbGxlci5pbnNlcnRUZXh0KGRpY3RhdGVkU3RyaW5nKTsKKyAgICAgICAgICAg
IHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJkZWxldGVCYWNrd2FyZDoiKTsKKworICAg
ICAgICAgICAgdmFyIG1hcmtlZFRleHQgPSAiIjsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgdmFyIHRlc3RUZXh0ID0gdGVzdEFyZWEuZmlyc3RD
aGlsZDsKKyAgICAgICAgICAgICAgICB2YXIgbWFya2VkID0gaW50ZXJuYWxzLm1hcmtlclJhbmdl
Rm9yTm9kZSh0ZXN0VGV4dCwgIkRpY3RhdGlvbkFsdGVybmF0aXZlcyIsIDApOworICAgICAgICAg
ICAgICAgIGlmIChtYXJrZWQpCisgICAgICAgICAgICAgICAgICAgIG1hcmtlZFRleHQgPSBtYXJr
ZWQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJtYXJrZWRUZXh0IiwgIiIpOworICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUo
IlRFU1QgQ09NUExFVEUiKTsKKworICAgICAgICB9IGNhdGNoIChleCkgeworICAgICAgICAgICAg
ZG9jdW1lbnQud3JpdGUoIkV4Y2VwdGlvbjogIiArIGV4LmRlc2NyaXB0aW9uKTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5h
cHBlbmRDaGlsZChjb25zb2xlX21lc3NhZ2VzKTsKKyAgICAgICAgCisgICAgfSBlbHNlIHsKKyAg
ICAgICAgZG9jdW1lbnQud3JpdGUoIihjYW5ub3QgcnVuIGludGVyYWN0aXZlbHkpIik7CisgICAg
fQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQtdGV4dC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQtZGljdGF0
ZWQtdGV4dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ0NjE3MzJlZWVmMzNmMjBmMDgwNzBm
NTExZDlkY2ZjMDIwYmEwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDggQEAKK1doZW4gaW5zZXJ0aW5nIGRpY3RhdGVkIHRleHQsIHJhbmdlIG9mIHRleHQg
dGhhdCBoYXMgYWx0ZXJuYXRpdmUgdGV4dCBpcyBhdHRhY2hlZCBhcyBEaWN0YXRpb25BbHRlcm5h
dGl2ZXMgbWFya2VyLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK3RoaXMgaXMgYSB0
ZXh0CitQQVNTIG1hcmtlZFRleHQgaXMgInRleHQiCisKK1RFU1QgQ09NUExFVEUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRl
ZC10ZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNl
cnQtZGljdGF0ZWQtdGV4dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyYTFlNDNiZDk5ZTNkMjVlMDIwODMw
MzBiZTdmMzJmOGM1ZDQ0MTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQtdGV4dC5odG1sCkBAIC0wLDAgKzEs
NTggQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorYm9keSB7IG1hcmdp
bjogMDsgcGFkZGluZzogMCB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cHJlIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wcmU+Cis8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRpdGFibGU+PC9kaXY+
Cis8cCBpZD0iY29uc29sZSI+PC9wPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgor
ICAgIGRlc2NyaXB0aW9uKCJXaGVuIGluc2VydGluZyBkaWN0YXRlZCB0ZXh0LCByYW5nZSBvZiB0
ZXh0IHRoYXQgaGFzIGFsdGVybmF0aXZlIHRleHQgaXMgYXR0YWNoZWQgYXMgRGljdGF0aW9uQWx0
ZXJuYXRpdmVzIG1hcmtlci4iKTsKKworICAgIHZhciBjb25zb2xlX21lc3NhZ2VzID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgib2wiKTsKKyAgICAKKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkK
KyAgICB7CisgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsK
KyAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdl
KSk7CisgICAgICAgIGNvbnNvbGVfbWVzc2FnZXMuYXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgfQor
ICAgIAorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgCisg
ICAgICAgIHRyeSB7CisKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgICAgIHZhciB0ZXN0QXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0ZXN0Iik7CisgICAgICAgICAgICB0ZXN0QXJlYS5mb2N1cygpOworCisgICAgICAgICAgICB2
YXIgZGljdGF0ZWRTdHJpbmcgPSB0ZXh0SW5wdXRDb250cm9sbGVyLm1ha2VEaWN0YXRlZFN0cmlu
ZygidGhpcyBpcyBhIHRleHQiLCAidGVzdCIsIDEwLCA0KTsKKyAgICAgICAgICAgIGRvY3VtZW50
LmV4ZWNDb21tYW5kKCJTZWxlY3RBbGwiKTsKKyAgICAgICAgICAgIHRleHRJbnB1dENvbnRyb2xs
ZXIuaW5zZXJ0VGV4dChkaWN0YXRlZFN0cmluZyk7CisKKyAgICAgICAgICAgIHZhciBtYXJrZWRU
ZXh0ID0gIiI7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAg
ICAgICAgIHZhciB0ZXN0VGV4dCA9IHRlc3RBcmVhLmZpcnN0Q2hpbGQ7CisgICAgICAgICAgICAg
ICAgdmFyIG1hcmtlZCA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGVzdFRleHQsICJE
aWN0YXRpb25BbHRlcm5hdGl2ZXMiLCAwKTsKKyAgICAgICAgICAgICAgICBpZiAobWFya2VkKQor
ICAgICAgICAgICAgICAgICAgICBtYXJrZWRUZXh0ID0gbWFya2VkLnRvU3RyaW5nKCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibWFya2VkVGV4
dCIsICJ0ZXh0Iik7CisgICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiVEVTVCBDT01QTEVURSIp
OworCisgICAgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgICAgICBkb2N1bWVudC53cml0ZSgi
RXhjZXB0aW9uOiAiICsgZXguZGVzY3JpcHRpb24pOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGNvbnNv
bGVfbWVzc2FnZXMpOworICAgICAgICAKKyAgICB9IGVsc2UgeworICAgICAgICBkb2N1bWVudC53
cml0ZSgiKGNhbm5vdCBydW4gaW50ZXJhY3RpdmVseSkiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146978</attachid>
            <date>2012-06-11 17:42:54 -0700</date>
            <delta_ts>2012-06-11 19:37:48 -0700</delta_ts>
            <desc>Patch (v1).</desc>
            <filename>bug-83047-20120611174254.patch</filename>
            <type>text/plain</type>
            <size>131326</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM2OGYyYTdhZTI4NmNl
NTVhODI3MDdlM2ExNDdkN2U0NjUyZWMwNC4uYWZlM2IzMTIyZmE4YjkyZjNhZTNjZTc2M2JkYTJi
MDYxZTdlMzVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDEyLTA2LTExICBKaWEg
UHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgdGV4dCB3aXRoIHRleHQgYWx0ZXJu
YXRpdmUgd2l0aCBibHVlIHVuZGVybGluZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgzMDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQt
ZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRm
b3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0Lmh0bWwKKworICAgICAg
ICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdmlzdWFsIGluZGljYXRpb24gb24gZGljdGF0ZWQgdGV4
dCB3aXRoIGFsdGVybmF0aXZlcywgYW5kIHByb3ZpZGluZyBVSQorICAgICAgICB0byBzaG93IGFs
dGVybmF0aXZlIHRleHQgb24gT1MgWC4gTWFqb3JpdHkgb2YgdGhlIGNoYW5nZXMgaXMgZm9yIGdl
bmVyYWxpemluZyBleGlzdGluZyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyCisgICAgICAgIGNs
YXNzIHRvIGhhbmRsZSBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzLiBUaGUgdHdvIG5ldyBjbGFzc2Vz
LCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgYW5kCisgICAgICAgIFRleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZSwgYXJlIHVzZWQgYnkgYm90aCBXZWJLaXQgYW5kIFdLMi4gU28gV2ViQ29yZSBz
ZWVtcyB0byBiZSB0aGUgbmF0dXJhbCBwbGFjZQorICAgICAgICBmb3IgdGhlbS4KKworICAgICAg
ICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3Bw
OiBFeHBhbmRlZCBleGlzaW5nIGNsYXNzIGludGVyZmFjZSB0byBzdXBwb3J0IGRpY3RhdGlvbiBh
bHRlcm5hdGl2ZXMuCisgICAgICAgIChEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFpbHMpOiBNYXJr
ZXIgZGV0YWlsIGNsYXNzIGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmUgbWFyay4KKyAgICAgICAg
KFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlRGV0YWlsczo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlRGV0YWlsczo6ZGljdGF0aW9uQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFpbHM6OkRpY3RhdGlv
bkFsdGVybmF0aXZlRGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlOjptYXJrZXJUeXBlc0ZvckFw
cGxpZWREaWN0YXRpb25BbHRlcm5hdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UpOiBHZW5lcmFsaXpl
ZCBleGlzdGluZyBhcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UoKSB0byBoYW5kbGUgZGljdGF0
aW9uIGFsdGVybmF0aXZlcy4KKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXI6OnRpbWVyRmlyZWQpOiBFeHBhbmRlZCBleGlzdGluZyBjb2RlIHRvIGhhbmRsZSBkaWN0
YXRpb24gYWx0ZXJuYXRpdmVzLgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQpOiBFeHBhbmRlZCBleGlzdGlu
ZyBjb2RlIHRvIGhhbmRsZSBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzLgorICAgICAgICAoV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6
IE1vdmVkIHBhcnQgb2YgdGhlIGZ1bmN0aW9uIGludG8gcmVzcG9uZFRvTWFya2VyQXRFbmRPZldv
cmQoKSB0byBpbXByb3ZlIHJlYWRhYmlsaXR5LgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjo6c2hvdWxkU3RhcnRUaW1lckZvcik6CisgICAgICAgIChXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjptYXJrZXJEZXNj
cmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFy
a2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmRpY3Rh
dGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKToKKyAgICAgICAgKiBl
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OlVOTEVTU19FTkFCTEVEKToKKyAgICAgICAgKEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXIpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bm90aWZ5Q29tcG9uZW50c09uQ2hhbmdlZFNlbGVjdGlv
bik6IFJlbmFtZWQgZXhpc3RpbmcgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbigpIGZ1bmN0aW9u
IHRvIGF2b2lkIG5hbWluZyBjb2xsaXNpb24uCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFw
cGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dW5hcHBsaWVkRWRpdGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlYXBwbGllZEVkaXRpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjp1cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNoYW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJr
ZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFwcGx5
RGljdGF0aW9uQWx0ZXJuYXRpdmVsdGVybmF0aXZlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5oOgorICAgICAgICAoRWRpdG9yKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
Lmg6CisgICAgICAgICogZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg6
IEFkZGVkLiBXSzEgYW5kIFdLMiB1c2UgdGhpcyBjbGFzcyB0byBrZWVwIHRyYWNrIG9mIHRleHQg
YWx0ZXJuYXRpdmVzIG9iamVjdHMuCisgICAgICAgIChBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIpOgorICAgICAgICAoQWxlcm5hdGl2ZVRleHRDb250ZXh0
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXI6OkFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29udGV4
dENvbnRyb2xsZXIpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZl
cyk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OkFsZXJu
YXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlc0ZvckNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4
dENvbnRleHRDb250cm9sbGVyOjpyZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2ZVRleHRD
b250ZXh0Q29udHJvbGxlcjo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjphbHRlcm5hdGl2ZXNGb3JDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6Y2xlYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpzaG93QWx0ZXJuYXRpdmVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6aGFuZGxl
QWNjZXB0ZWRBbHRlcm5hdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXI6OmRpc21pc3NBbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpyZW1vdmVBbHRlcm5hdGl2ZXMpOgorICAgICAgICAq
IGVkaXRpbmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oOiBBZGRlZC4gIEEgc2ltcGxl
IHN0cnVjdCB0byBtYWtlIGl0IGVhc2llciB0byBwYXNzIGFyb3VuZCBhIHBhaXIgb2YgdGV4dCBh
bHRlcm5hdGl2ZXMgb2JqZWN0IGFuZCByYW5nZS4KKyAgICAgICAgKiBlZGl0aW5nL21hYy9UZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Y29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXMpOgorICAgICAgICAqIHBh
Z2UvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNv
bnRyb2xsZXIuY3BwOiBBZGRlZCBjb2RlIHRvIHNob3cgYWx0ZXJuYXRpdmUgZGljdGF0ZWQgdGV4
dCBpbiBjb250ZXh0IG1lbnUuCisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xs
ZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRN
ZW51Q29udHJvbGxlcjo6cG9wdWxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVD
b250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL0Nv
bnRleHRNZW51SXRlbS5oOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyk6
CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojpw
YWludERvY3VtZW50TWFya2VyKToKKwogMjAxMi0wNi0xMSAgTWFyayBQaWxncmltICA8cGlsZ3Jp
bUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBDYWxsIHNoYXJlZCB0aW1lciBm
dW5jdGlvbnMgZGlyZWN0bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA4NTc2NzRkNDhlY2IxODI0Yzhm
ZWRlYjY5OTYwYjNjYWI0ZDNhMTA2Li44Nzg3ZmVkN2Q0NDM3MmZhODRlYjgzNGU0NmRhZDVhMTZk
YjZlMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTItMDYtMTEgIEpp
YSBQdSAgPGpwdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFyayB0ZXh0IHdpdGggdGV4dCBhbHRl
cm5hdGl2ZSB3aXRoIGJsdWUgdW5kZXJsaW5lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMwNDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VzIGluIFdlYktpdCBpbmNsdWRlIGltcGxlbWVudGF0
aW9uIG9mIG5ldyBmdW5jdGlvbnMgZGVjbGFyZWQgaW4gQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LAor
ICAgICAgICBhbmQgbG9naWMgZm9yIGNhbGxpbmcgRWRpdG9yOjppbnNlcnREaWN0YXRlZFRleHQo
KSBpbnN0ZWFkIG9mIEVkaXRvcjo6aW5zZXJ0VGV4dCgpIHdoZW4gdGhlcmUncworICAgICAgICBh
bHRlcm5hdGl2ZXMgYXR0YWNoZWQgdG8gdGhlIGlucHV0IHN0cmluZy4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbToKKyAgICAgICAgKGNvcnJlY3Rpb25JbmRp
Y2F0b3JUeXBlKToKKyAgICAgICAgKENvcnJlY3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0ZWRSZXBs
YWNlbWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50Lmg6CisgICAgICAgIChXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbToKKyAgICAgICAgKFdlYkFs
dGVybmF0aXZlVGV4dENsaWVudDo6c2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZSk6CisgICAgICAg
IChXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NBbHRlcm5hdGl2ZSk6CisgICAgICAg
IChXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NBbHRlcm5hdGl2ZVNvb24pOgorICAg
ICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVtb3ZlRGljdGF0aW9u
QWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6c2hvd0Rp
Y3RhdGlvbkFsdGVybmF0aXZlVUkpOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
OjpkaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSSk6CisgICAgICAgIChXZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQ6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyk6CisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgdmFsaWRBdHRyaWJ1dGVzRm9y
TWFya2VkVGV4dF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBpbnNlcnRUZXh0Ol0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBoYW5kbGVBY2Nl
cHRlZEFsdGVybmF0aXZlVGV4dDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfZ2V0V2ViQ29yZURp
Y3RhdGlvbkFsdGVybmF0aXZlczpmcm9tVGV4dEFsdGVybmF0aXZlczpdKToKKyAgICAgICAgKC1b
V2ViVmlldyBfc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUk6V2ViQ29yZTo6Zm9yRGljdGF0aW9u
Q29udGV4dDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0
aXZlVUldKToKKyAgICAgICAgKC1bV2ViVmlldyBfcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVz
Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IF9kaWN0YXRpb25BbHRlcm5hdGl2ZXM6XSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0Rh
dGEubW06CisgICAgICAgICgtW1dlYlZpZXdQcml2YXRlIGluaXRdKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUu
aDoKKwogMjAxMi0wNi0xMCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjExOTk1NS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCBjOTYzZWJkOTZlZjU5MjA3ZDE0NGQ0OWQ1NDk1YmViZTkyZGFmNDA4Li42MTkxMjQzNWFj
ZGQ2MmQyZWVmMjFmNzUzMjlkMzMwOGY2NzI4MTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEg
QEAKKzIwMTItMDYtMTEgIEppYSBQdSAgPGpwdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFyayB0
ZXh0IHdpdGggdGV4dCBhbHRlcm5hdGl2ZSB3aXRoIGJsdWUgdW5kZXJsaW5lLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMwNDcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VzIGluIFdlYktpdDIg
aW5jbHVkZSBpbXBsZW1lbnRhdGlvbiBvZiBuZXcgZnVuY3Rpb25zIGRlY2xhcmVkIGluIEFsdGVy
bmF0aXZlVGV4dENsaWVudCwKKyAgICAgICAgYW5kIGxvZ2ljIGZvciBjYWxsaW5nIEVkaXRvcjo6
aW5zZXJ0RGljdGF0ZWRUZXh0KCkgaW5zdGVhZCBvZiBFZGl0b3I6Omluc2VydFRleHQoKSB3aGVu
IHRoZXJlJ3MKKyAgICAgICAgYWx0ZXJuYXRpdmVzIGF0dGFjaGVkIHRvIHRoZSBpbnB1dCBzdHJp
bmcuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oOgor
ICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaDoKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudElt
cGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6YWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSSk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0
aXZlVUkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAg
KC1bV0tWaWV3IGluc2VydFRleHQ6cmVwbGFjZW1lbnRSYW5nZTpdKToKKyAgICAgICAgKC1bV0tW
aWV3IHZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHRdKToKKyAgICAgICAgKC1bV0tWaWV3IGhh
bmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlld0ludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL0NvcnJlY3Rp
b25QYW5lbC5tbToKKyAgICAgICAgKGNvcnJlY3Rpb25JbmRpY2F0b3JUeXBlKToKKyAgICAgICAg
KFdlYktpdDo6Q29ycmVjdGlvblBhbmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg6CisgICAgICAgIChX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6c2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0
aXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaXNtaXNz
QWx0ZXJuYXRpdmVTb29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnNob3dEaWN0YXRpb25BbHRl
cm5hdGl2ZVVJKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Ojpk
aXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVy
bmF0aXZlVGV4dENsaWVudDo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0
KToKKwogMjAxMi0wNi0xMSAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFFNTCBhcGkgZm9yIHNldHRpbmcgZGV2aWNlIHdpZHRo
IGFuZCBoZWlnaHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggN2E3YzY3MDY2ZWMyMzE5YTEwYTQ2
Y2VjNzZkNGVjMzBlMmY4ZGEzNC4uOGY1NjhmZWFjNGE1ZjQ5NzJhOGM0MDA0MWQyNTU4ZTc5ZWY3
ZjEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTIyMDMsMyArMjIwMywxNCBAQCBfX1pOSzdX
ZWJDb3JlNEtVUkw3aXNFbXB0eUV2CiBfX1pOSzdXZWJDb3JlNEtVUkw3aXNWYWxpZEV2CiBfX1pO
SzdXZWJDb3JlNEtVUkwyMnByb3RvY29sSXNJbkhUVFBGYW1pbHlFdgogI2VuZGlmCisKKyNpZiBQ
TEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTElPTikK
K19fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMTVhZGRBbHRlcm5hdGl2
ZXNFUktOM1dURjlSZXRhaW5QdHJJMThOU1RleHRBbHRlcm5hdGl2ZXNFRQorX19aTjdXZWJDb3Jl
MjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIyMmFsdGVybmF0aXZlc0ZvckNvbnRleHRFeQor
X19aTjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI1Y2xlYXJFdgorX19aTjdX
ZWJDb3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIxOWRpc21pc3NBbHRlcm5hdGl2ZXNF
dgorX19aTjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIxOHJlbW92ZUFsdGVy
bmF0aXZlc0V5CitfX1pON1dlYkNvcmUyN0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjE2c2hv
d0FsdGVybmF0aXZlc0VQNk5TVmlld1JLTlNfOUZsb2F0UmVjdEV5VTEzYmxvY2tfcG9pbnRlckZ2
UDhOU1N0cmluZ0UKK19fWk43V2ViQ29yZTI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlQzFFUDE4
TlNUZXh0QWx0ZXJuYXRpdmVzOF9OU1JhbmdlCitfX1pON1dlYkNvcmUzMmNvbGxlY3REaWN0YXRp
b25UZXh0QWx0ZXJuYXRpdmVzRVAxOE5TQXR0cmlidXRlZFN0cmluZ1JOM1dURjZWZWN0b3JJTlNf
MjRUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VFTG0wRUVFCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYzcwMzczNDZm
OGVjNjM0YzVjOWY3ZmEwZTI1OTFjM2UwMmU3YmYxLi4wOWJiOGRjZTc3NjZlYzhjYTJiN2QzZWFk
NWYyNmM1ZTM1NzMwNjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC01Nzg3LDYgKzU3ODcsMTAgQEAKIAkJQ0UwOEMzRDExNTJC
NTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwOEMzQ0YxNTJCNTk5QTAwMjFC
OEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwICovOyB9OwogCQlDRTA4QzNEMjE1
MkI1OTlBMDAyMUI4QzIgLyogQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwOEMzRDAxNTJCNTk5QTAwMjFC
OEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9ICgpOyB9OyB9OwogCQlDRTU0RkQzODEwMTZEOUE2MDA4QjQ0QzggLyogU2NyaXB0U291
cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFNTRGRDM3MTAxNkQ5QTYwMDhCNDRDOCAvKiBTY3JpcHRTb3VyY2VQcm92aWRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNFN0IyREIz
MTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREFGMTU4NkFCQUQw
MDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRTdCMkRCNDE1ODZBQkFEMDA5OEIz
RkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3QjJEQjAxNTg2QUJBRDAwOThCM0ZBIC8qIEFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSAqLzsgfTsKKwkJQ0U3QjJEQjUxNTg2QUJBRDAw
OThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3QjJEQjExNTg2QUJBRDAwOThCM0ZBIC8qIFRl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUNFN0IyREI2MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRTdCMkRCMjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlLm1tICovOyB9OwogCQlDRUEzOTQ5QzExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNl
dE5vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFQTM5NDlBMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3Bw
ICovOyB9OwogCQlDRUEzOTQ5RDExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVM
aXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUEz
OTQ5QjExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmggKi87IH07CiAJ
CUNFQ0FERkM2MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUNBREZDMjE1Mzc3
OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwICovOyB9OwpAQCAtMTI5Nzks
NiArMTI5ODMsMTAgQEAKIAkJQ0UwOEMzRDAxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTU0
RkQzNzEwMTZEOUE2MDA4QjQ0QzggLyogU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0U291cmNlUHJvdmlkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1Q0IxQjMxNEVEQUI2RjAwQkIyNzk1IC8qIEV2ZW50U2Vu
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50U2VuZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFN0IyREFGMTU4NkFCQUQwMDk4QjNGQSAvKiBB
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg7IHBhdGggPSBtYWMvQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFN0Iy
REIwMTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXIubW07IHBhdGggPSBtYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTdCMkRCMTE1ODZBQkFEMDA5OEIzRkEgLyog
VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oOyBwYXRoID0gbWFjL1RleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTdCMkRCMjE1ODZB
QkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tOyBw
YXRoID0gbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0VBMzk0OUExMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2Rl
TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGF0aWNIYXNo
U2V0Tm9kZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUEzOTQ5QjEx
RDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRUNBREZDMjE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0
ZXJuYXRpdmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGljdGF0
aW9uQWx0ZXJuYXRpdmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA2ODQs
OCArMjA2OTIsMTIgQEAKIAkJRUQ1MDFEQzkwQjI0OUYzOTAwQUUxOEQ5IC8qIG1hYyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0U3QjJEQjAxNTg2QUJB
RDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSAqLywKKwkJCQlDRTdC
MkRBRjE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggKi8s
CiAJCQkJRUQ1MDFEQzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAqLywKIAkJCQk0
QThDOTZFQTBCRTY5MDMyMDA0RUVGRjAgLyogRnJhbWVTZWxlY3Rpb25NYWMubW0gKi8sCisJCQkJ
Q0U3QjJEQjIxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSAq
LywKKwkJCQlDRTdCMkRCMTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC0yNTA0Niw2ICsyNTA1OCw4IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5
IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5
QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENTM3MzUzMTM3
QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0U3QjJEQjMx
NTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQ0U3QjJEQjUxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yODA4Niw2ICsyODEwMCw4IEBACiAJCQkJRTFC
RTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQ0U3QjJEQjQxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNFN0IyREI2MTU4NkFCQUQw
MDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIu
Y3BwCmluZGV4IDhkMDlmZjFiOTk4NDcxZWE2MWYzODkyNjhlNDkyNGY3MDRjZjEzYjEuLjQ0ZWE1
NzBkNTEwMmY4ZjBmMDZhZjEwZjZmNjUxMzY5ZWRjM2E5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAtNjgsNiAr
NjgsMjMgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9yZXBsYWNlbWVudFN0cmluZzsKIH07CiAK
K2NsYXNzIERpY3RhdGlvbkFsdGVybmF0aXZlRGV0YWlscyA6IHB1YmxpYyBBbHRlcm5hdGl2ZVRl
eHREZXRhaWxzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaWN0YXRpb25BbHRl
cm5hdGl2ZURldGFpbHM+IGNyZWF0ZSh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFpbHMo
ZGljdGF0aW9uQ29udGV4dCkpOworICAgIH0KKworICAgIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBtX2RpY3RhdGlvbkNvbnRleHQ7IH0KKworcHJpdmF0ZToKKyAg
ICBEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFpbHModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkK
KyAgICA6IG1fZGljdGF0aW9uQ29udGV4dChkaWN0YXRpb25Db250ZXh0KQorICAgIHsgfQorCisg
ICAgdWludDY0X3QgbV9kaWN0YXRpb25Db250ZXh0OworfTsKKwogI2lmIFVTRShBVVRPQ09SUkVD
VElPTl9QQU5FTCkKIAogc3RhdGljIGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6TWFya2Vy
VHlwZT4mIG1hcmtlclR5cGVzRm9yQXV0b2NvcnJlY3Rpb24oKQpAQCAtOTIsNiArMTA5LDE0IEBA
IHN0YXRpYyBjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBtYXJrZXJU
eXBlc0ZvclJlcGxhY2VtZW50KCkKICAgICByZXR1cm4gbWFya2VyVHlwZXNGb3JSZXBsYWNlbWVu
dDsKIH0KIAorc3RhdGljIGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4m
IG1hcmtlclR5cGVzRm9yQXBwbGllZERpY3RhdGlvbkFsdGVybmF0aXZlKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4sIG1hcmtl
clR5cGVzRm9yQXBwbGllZERpY3RhdGlvbkFsdGVybmF0aXZlLCAoKSk7CisgICAgaWYgKG1hcmtl
clR5cGVzRm9yQXBwbGllZERpY3RhdGlvbkFsdGVybmF0aXZlLmlzRW1wdHkoKSkKKyAgICAgICAg
bWFya2VyVHlwZXNGb3JBcHBsaWVkRGljdGF0aW9uQWx0ZXJuYXRpdmUuYXBwZW5kKERvY3VtZW50
TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uKTsKKyAgICByZXR1cm4gbWFya2VyVHlwZXNG
b3JBcHBsaWVkRGljdGF0aW9uQWx0ZXJuYXRpdmU7Cit9CisKIHN0YXRpYyBib29sIG1hcmtlcnNI
YXZlSWRlbnRpY2FsRGVzY3JpcHRpb24oY29uc3QgVmVjdG9yPERvY3VtZW50TWFya2VyKj4mIG1h
cmtlcnMpCiB7CiAgICAgaWYgKG1hcmtlcnMuaXNFbXB0eSgpKQpAQCAtMjE1LDE4ICsyNDAsMTgg
QEAgU3RyaW5nIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmRpc21pc3NTb29uKFJlYXNvbkZv
ckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZv
aWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHQoY29uc3Qg
U3RyaW5nJiBhbHRlcm5hdGl2ZSwgY29uc3QgVmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJrZXJU
eXBlPiYgbWFya2VyVHlwZXNUb0FkZCkKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlKiByYW5nZSwgY29uc3QgU3Ry
aW5nJiBhbHRlcm5hdGl2ZSwgQWx0ZXJuYXRpdmVUZXh0VHlwZSBhbHRlcm5hdGl2ZVR5cGUsIGNv
bnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4mIG1hcmtlclR5cGVzVG9BZGQs
IE1hcmtlckRlc2NyaXB0aW9uU3VwcGxpZXIgbWFya2VyRGVzY3JpcHRpb25TdXBwbGllcikKIHsK
LSAgICBpZiAoIW1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZSkKKyAg
ICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm47CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBSZWZQdHI8UmFuZ2U+IHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24g
PSBtX2FsdGVybmF0aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUtPmNsb25lUmFuZ2Uo
ZWMpOworICAgIFJlZlB0cjxSYW5nZT4gcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlv
biA9IHJhbmdlLT5jbG9uZVJhbmdlKGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHNldFN0YXJ0KHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24uZ2V0KCks
IHN0YXJ0T2ZQYXJhZ3JhcGgobV9hbHRlcm5hdGl2ZVRleHRJbmZvLnJhbmdlV2l0aEFsdGVybmF0
aXZlLT5zdGFydFBvc2l0aW9uKCkpKTsKLSAgICBzZXRFbmQocGFyYWdyYXBoUmFuZ2VDb250YWlu
aW5nQ29ycmVjdGlvbi5nZXQoKSwgZW5kT2ZQYXJhZ3JhcGgobV9hbHRlcm5hdGl2ZVRleHRJbmZv
LnJhbmdlV2l0aEFsdGVybmF0aXZlLT5lbmRQb3NpdGlvbigpKSk7CisgICAgc2V0U3RhcnQocGFy
YWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi5nZXQoKSwgc3RhcnRPZlBhcmFncmFwaChy
YW5nZS0+c3RhcnRQb3NpdGlvbigpKSk7CisgICAgc2V0RW5kKHBhcmFncmFwaFJhbmdlQ29udGFp
bmluZ0NvcnJlY3Rpb24uZ2V0KCksIGVuZE9mUGFyYWdyYXBoKHJhbmdlLT5lbmRQb3NpdGlvbigp
KSk7CiAKICAgICAvLyBBZnRlciB3ZSByZXBsYWNlIHRoZSB3b3JkIGF0IHJhbmdlIHJhbmdlV2l0
aEFsdGVybmF0aXZlLCB3ZSBuZWVkIHRvIGFkZCBtYXJrZXJzIHRvIHRoYXQgcmFuZ2UuCiAgICAg
Ly8gSG93ZXZlciwgb25jZSB0aGUgcmVwbGFjZW1lbnQgdG9vayBwbGFjZSwgdGhlIHZhbHVlIG9m
IHJhbmdlV2l0aEFsdGVybmF0aXZlIGlzIG5vdCB2YWxpZCBhbnltb3JlLgpAQCAtMjM4LDcgKzI2
Myw3IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRl
eHQoY29uc3QgU3RyaW5nJiBhbHRlcm5hdGl2ZSwKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFBvc2l0aW9uIHN0YXJ0UG9zaXRpb25PZnJhbmdlV2l0aEFsdGVybmF0aXZlID0g
bV9hbHRlcm5hdGl2ZVRleHRJbmZvLnJhbmdlV2l0aEFsdGVybmF0aXZlLT5zdGFydFBvc2l0aW9u
KCk7CisgICAgUG9zaXRpb24gc3RhcnRQb3NpdGlvbk9mcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBy
YW5nZS0+c3RhcnRQb3NpdGlvbigpOwogICAgIGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdy
YXBoQXNSYW5nZS0+c2V0RW5kKHN0YXJ0UG9zaXRpb25PZnJhbmdlV2l0aEFsdGVybmF0aXZlLmNv
bnRhaW5lck5vZGUoKSwgc3RhcnRQb3NpdGlvbk9mcmFuZ2VXaXRoQWx0ZXJuYXRpdmUuY29tcHV0
ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1
cm47CkBAIC0yNDcsNyArMjcyLDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjph
cHBseUFsdGVybmF0aXZlVGV4dChjb25zdCBTdHJpbmcmIGFsdGVybmF0aXZlLAogICAgIGludCBj
b3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5n
dGgoY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlLmdldCgpKTsKIAogICAg
IC8vIENsb25lIHRoZSByYW5nZSwgc2luY2UgdGhlIGNhbGxlciBvZiB0aGlzIG1ldGhvZCBtYXkg
d2FudCB0byBrZWVwIHRoZSBvcmlnaW5hbCByYW5nZSBhcm91bmQuCi0gICAgUmVmUHRyPFJhbmdl
PiByYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhB
bHRlcm5hdGl2ZS0+Y2xvbmVSYW5nZShlYyk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZVdpdGhB
bHRlcm5hdGl2ZSA9IHJhbmdlLT5jbG9uZVJhbmdlKGVjKTsKICAgICBhcHBseUNvbW1hbmQoU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKHJhbmdlV2l0aEFsdGVybmF0aXZlLCBhbHRl
cm5hdGl2ZSkpOwogICAgIHNldEVuZChwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9u
LmdldCgpLCBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuc3RhcnQoKSk7CiAgICAg
UmVmUHRyPFJhbmdlPiByZXBsYWNlbWVudFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShw
YXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLmdldCgpLCBjb3JyZWN0aW9uU3RhcnRP
ZmZzZXRJblBhcmFncmFwaCwgYWx0ZXJuYXRpdmUubGVuZ3RoKCkpOwpAQCAtMjYwLDExICsyODUs
OCBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0
KGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmUsCiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
KiBtYXJrZXJzID0gcmVwbGFjZW1lbnRSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQo
KS0+bWFya2VycygpOwogICAgIHNpemVfdCBzaXplID0gbWFya2VyVHlwZXNUb0FkZC5zaXplKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgRG9jdW1l
bnRNYXJrZXI6Ok1hcmtlclR5cGUgbWFya2VyVHlwZSA9IG1hcmtlclR5cGVzVG9BZGRbaV07Ci0g
ICAgICAgIFN0cmluZyBkZXNjcmlwdGlvbjsKLSAgICAgICAgaWYgKG1fYWx0ZXJuYXRpdmVUZXh0
SW5mby50eXBlICE9IEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb24gJiYgKG1hcmtlclR5cGUg
PT0gRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50IHx8IG1hcmtlclR5cGUgPT0gRG9jdW1lbnRN
YXJrZXI6OkF1dG9jb3JyZWN0ZWQpKQotICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBtX2FsdGVy
bmF0aXZlVGV4dEluZm8ub3JpZ2luYWxUZXh0OwotICAgICAgICBtYXJrZXJzLT5hZGRNYXJrZXIo
cmVwbGFjZW1lbnRSYW5nZS5nZXQoKSwgbWFya2VyVHlwZSwgZGVzY3JpcHRpb24pOworICAgICAg
ICBTdHJpbmcgZGVzY3JpcHRpb24gPSBtYXJrZXJEZXNjcmlwdGlvblN1cHBsaWVyID8gbWFya2Vy
RGVzY3JpcHRpb25TdXBwbGllcihhbHRlcm5hdGl2ZVR5cGUsIG1hcmtlclR5cGVzVG9BZGRbaV0p
IDogIiI7CisgICAgICAgIG1hcmtlcnMtPmFkZE1hcmtlcihyZXBsYWNlbWVudFJhbmdlLmdldCgp
LCBtYXJrZXJUeXBlc1RvQWRkW2ldLCBkZXNjcmlwdGlvbik7CiAgICAgfQogfQogCkBAIC0zNDgs
MzMgKzM3MCw1NyBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyZWQo
VGltZXI8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcj4qKQogICAgICAgICB9CiAgICAgfQogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0YXRpb25BbHRlcm5h
dGl2ZXM6CisgICAgeworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgICAgICBj
b25zdCBSYW5nZSogcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBtX2FsdGVybmF0aXZlVGV4dEluZm8u
cmFuZ2VXaXRoQWx0ZXJuYXRpdmUuZ2V0KCk7CisgICAgICAgIGNvbnN0IERpY3RhdGlvbkFsdGVy
bmF0aXZlRGV0YWlscyogZGV0YWlscyA9IHN0YXRpY19jYXN0PGNvbnN0IERpY3RhdGlvbkFsdGVy
bmF0aXZlRGV0YWlscyo+KG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5kZXRhaWxzLmdldCgpKTsKKyAg
ICAgICAgaWYgKCFyYW5nZVdpdGhBbHRlcm5hdGl2ZSB8fCAhZGV0YWlscyB8fCAhZGV0YWlscy0+
ZGljdGF0aW9uQ29udGV4dCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBGbG9hdFJl
Y3QgYm91bmRpbmdCb3ggPSByb290Vmlld1JlY3RGb3JSYW5nZShyYW5nZVdpdGhBbHRlcm5hdGl2
ZSk7CisgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5pc0FjdGl2ZSA9IHRydWU7CisgICAg
ICAgIGlmICghYm91bmRpbmdCb3guaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAoQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50KiBjbGllbnQgPSBhbHRlcm5hdGl2ZVRleHRDbGllbnQoKSkKKyAgICAg
ICAgICAgICAgICBjbGllbnQtPnNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGJvdW5kaW5nQm94
LCBkZXRhaWxzLT5kaWN0YXRpb25Db250ZXh0KCkpOworICAgICAgICB9CisjZW5kaWYKKyAgICB9
CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyOjpoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCkK
IHsKLSAgICBSYW5nZSogcmVwbGFjZWRSYW5nZSA9IG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5n
ZVdpdGhBbHRlcm5hdGl2ZS5nZXQoKTsKLSAgICBpZiAoIXJlcGxhY2VkUmFuZ2UgfHwgbV9mcmFt
ZS0+ZG9jdW1lbnQoKSAhPSByZXBsYWNlZFJhbmdlLT5vd25lckRvY3VtZW50KCkpCisgICAgUmFu
Z2UqIHJhbmdlV2l0aEFsdGVybmF0aXZlID0gbV9hbHRlcm5hdGl2ZVRleHRJbmZvLnJhbmdlV2l0
aEFsdGVybmF0aXZlLmdldCgpOworICAgIGlmICghcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgfHwgbV9m
cmFtZS0+ZG9jdW1lbnQoKSAhPSByYW5nZVdpdGhBbHRlcm5hdGl2ZS0+b3duZXJEb2N1bWVudCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgY3VycmVudFdvcmQgPSBwbGFpblRleHQo
bV9hbHRlcm5hdGl2ZVRleHRJbmZvLnJhbmdlV2l0aEFsdGVybmF0aXZlLmdldCgpKTsKKyAgICBT
dHJpbmcgY3VycmVudFdvcmQgPSBwbGFpblRleHQocmFuZ2VXaXRoQWx0ZXJuYXRpdmUpOwogICAg
IC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgd29yZCB3ZSBhcmUgYWJvdXQgdG8gY29ycmVjdCBoYXMg
YmVlbiBjaGFuZ2VkIGJldHdlZW4gdGltZXIgZmlyaW5nIGFuZCBjYWxsYmFjayBiZWluZyB0cmln
Z2VyZWQuCiAgICAgaWYgKGN1cnJlbnRXb3JkICE9IG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5vcmln
aW5hbFRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5p
c0FjdGl2ZSA9IGZhbHNlOworICAgIE1hcmtlckRlc2NyaXB0aW9uU3VwcGxpZXIgbWFya2VyRGVz
Y3JpcHRpb25TdXBwbGllciA9IF5TdHJpbmcoQWx0ZXJuYXRpdmVUZXh0VHlwZSBhbHRlcm5hdGl2
ZVRleHRUeXBlLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSBtYXJrZXJUeXBlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1hcmtlckRlc2NyaXB0aW9uRm9yQXBwbGllZEFsdGVybmF0aXZlVGV4
dChhbHRlcm5hdGl2ZVRleHRUeXBlLCBtYXJrZXJUeXBlKTsKKyAgICB9OwogCiAgICAgc3dpdGNo
IChtX2FsdGVybmF0aXZlVGV4dEluZm8udHlwZSkgewogICAgIGNhc2UgQWx0ZXJuYXRpdmVUZXh0
VHlwZUNvcnJlY3Rpb246CiAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoKCkpCi0gICAgICAgICAg
ICBhcHBseUFsdGVybmF0aXZlVGV4dChyZXN1bHQsIG1hcmtlclR5cGVzRm9yQXV0b2NvcnJlY3Rp
b24oKSk7CisgICAgICAgICAgICBhcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UocmFuZ2VXaXRo
QWx0ZXJuYXRpdmUsIHJlc3VsdCwgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLnR5cGUsIG1hcmtlclR5
cGVzRm9yQXV0b2NvcnJlY3Rpb24oKSwgbWFya2VyRGVzY3JpcHRpb25TdXBwbGllcik7CiAgICAg
ICAgIGVsc2UgaWYgKCFtX2lzRGlzbWlzc2VkQnlFZGl0aW5nKQotICAgICAgICAgICAgcmVwbGFj
ZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5hZGRNYXJr
ZXIocmVwbGFjZWRSYW5nZSwgRG9jdW1lbnRNYXJrZXI6OlJlamVjdGVkQ29ycmVjdGlvbiwgbV9h
bHRlcm5hdGl2ZVRleHRJbmZvLm9yaWdpbmFsVGV4dCk7CisgICAgICAgICAgICByYW5nZVdpdGhB
bHRlcm5hdGl2ZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5hZGRN
YXJrZXIocmFuZ2VXaXRoQWx0ZXJuYXRpdmUsIERvY3VtZW50TWFya2VyOjpSZWplY3RlZENvcnJl
Y3Rpb24sIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5vcmlnaW5hbFRleHQpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb246CiAgICAgY2FzZSBBbHRl
cm5hdGl2ZVRleHRUeXBlU3BlbGxpbmdTdWdnZXN0aW9uczoKICAgICAgICAgaWYgKHJlc3VsdC5s
ZW5ndGgoKSkKLSAgICAgICAgICAgIGFwcGx5QWx0ZXJuYXRpdmVUZXh0KHJlc3VsdCwgbWFya2Vy
VHlwZXNGb3JSZXBsYWNlbWVudCgpKTsKKyAgICAgICAgICAgIGFwcGx5QWx0ZXJuYXRpdmVUZXh0
VG9SYW5nZShyYW5nZVdpdGhBbHRlcm5hdGl2ZSwgcmVzdWx0LCBtX2FsdGVybmF0aXZlVGV4dElu
Zm8udHlwZSwgbWFya2VyVHlwZXNGb3JSZXBsYWNlbWVudCgpLCBtYXJrZXJEZXNjcmlwdGlvblN1
cHBsaWVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbHRlcm5hdGl2ZVRleHRUeXBlRGlj
dGF0aW9uQWx0ZXJuYXRpdmVzOgorICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpKQorICAgICAg
ICAgICAgYXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKHJhbmdlV2l0aEFsdGVybmF0aXZlLCBy
ZXN1bHQsIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby50eXBlLCBtYXJrZXJUeXBlc0ZvckFwcGxpZWRE
aWN0YXRpb25BbHRlcm5hdGl2ZSgpLCBtYXJrZXJEZXNjcmlwdGlvblN1cHBsaWVyKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCkBAIC00MDAsNyArNDQ2LDcgQEAgRmxvYXRSZWN0IEFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI6OnJvb3RWaWV3UmVjdEZvclJhbmdlKGNvbnN0IFJhbmdlKiByYW5n
ZSkgY28KICAgICByZXR1cm4gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KEludFJlY3QoYm91bmRp
bmdSZWN0KSk7CiB9ICAgICAgICAKIAotdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpy
ZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVj
dGlvbikKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvQ2hhbmdlZFNl
bGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24sIEZyYW1lU2VsZWN0
aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgVmlzaWJsZVNlbGVjdGlv
biBjdXJyZW50U2VsZWN0aW9uKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKSk7CiAg
ICAgLy8gV2hlbiB1c2VyIG1vdmVzIGNhcmV0IHRvIHRoZSBlbmQgb2YgYXV0b2NvcnJlY3RlZCB3
b3JkIGFuZCBwYXVzZXMsIHdlIHNob3cgdGhlIHBhbmVsCkBAIC00MjYsMjggKzQ3MiwxNSBAQCB2
b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24o
Y29uc3QgVmlzaWJsZVNlbGVjdGlvbgogICAgICAgICByZXR1cm47CiAKICAgICBOb2RlKiBub2Rl
ID0gcG9zaXRpb24uY29udGFpbmVyTm9kZSgpOwotICAgIGludCBlbmRPZmZzZXQgPSBwb3NpdGlv
bi5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBt
YXJrZXJzID0gbm9kZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5tYXJrZXJzRm9yKG5vZGUpOwog
ICAgIHNpemVfdCBtYXJrZXJDb3VudCA9IG1hcmtlcnMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbWFya2VyQ291bnQ7ICsraSkgewogICAgICAgICBjb25zdCBEb2N1bWVudE1h
cmtlciogbWFya2VyID0gbWFya2Vyc1tpXTsKLSAgICAgICAgaWYgKCFzaG91bGRTdGFydFRpbWVy
Rm9yKG1hcmtlciwgZW5kT2Zmc2V0KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBS
ZWZQdHI8UmFuZ2U+IHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9mcmFtZS0+ZG9jdW1lbnQo
KSwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgp
KTsKLSAgICAgICAgU3RyaW5nIGN1cnJlbnRXb3JkID0gcGxhaW5UZXh0KHdvcmRSYW5nZS5nZXQo
KSk7Ci0gICAgICAgIGlmICghY3VycmVudFdvcmQubGVuZ3RoKCkpCisgICAgICAgIGlmICghbWFy
a2VyKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRJ
bmZvLnJhbmdlV2l0aEFsdGVybmF0aXZlID0gd29yZFJhbmdlOwotICAgICAgICBtX2FsdGVybmF0
aXZlVGV4dEluZm8ub3JpZ2luYWxUZXh0ID0gY3VycmVudFdvcmQ7Ci0gICAgICAgIGlmIChtYXJr
ZXItPnR5cGUoKSA9PSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpCi0gICAgICAgICAgICBzdGFy
dEFsdGVybmF0aXZlVGV4dFVJVGltZXIoQWx0ZXJuYXRpdmVUZXh0VHlwZVNwZWxsaW5nU3VnZ2Vz
dGlvbnMpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5m
by5kZXRhaWxzID0gQXV0b2NvcnJlY3Rpb25BbHRlcm5hdGl2ZURldGFpbHM6OmNyZWF0ZShtYXJr
ZXItPmRlc2NyaXB0aW9uKCkpOwotICAgICAgICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRp
bWVyKEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb24pOwotICAgICAgICB9Ci0KLSAgICAgICAg
YnJlYWs7CisgICAgICAgIGlmIChyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZCgqbWFya2VyLCBw
b3NpdGlvbiwgb3B0aW9ucykpCisgICAgICAgICAgICBicmVhazsKICAgICB9CiB9CiAKQEAgLTU5
OCw3ICs2MzEsNjIgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpwcm9jZXNzTWFy
a2Vyc09uVGV4dFRvQmVSZXBsYWNlZEJ5UmVzdWx0KGNvbnN0IFQKIAogICAgIHJldHVybiB0cnVl
OwogfQotICAgIAorCitib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnNob3VsZFN0YXJ0
VGltZXJGb3IoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXIgJm1hcmtlciwgaW50IGVuZE9m
ZnNldCkgY29uc3QKK3sKKyAgICByZXR1cm4gKCgobWFya2VyLnR5cGUoKSA9PSBEb2N1bWVudE1h
cmtlcjo6UmVwbGFjZW1lbnQgJiYgIW1hcmtlci5kZXNjcmlwdGlvbigpLmlzTnVsbCgpKSB8fCBt
YXJrZXIudHlwZSgpID09IERvY3VtZW50TWFya2VyOjpTcGVsbGluZyB8fCBtYXJrZXIudHlwZSgp
ID09IERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpICYmIHN0YXRpY19jYXN0
PGludD4obWFya2VyLmVuZE9mZnNldCgpKSA9PSBlbmRPZmZzZXQpOworfQorCitib29sIEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb01hcmtlckF0RW5kT2ZXb3JkKGNvbnN0IERv
Y3VtZW50TWFya2VyJiBtYXJrZXIsIGNvbnN0IFBvc2l0aW9uJiBlbmRPZldvcmRQb3NpdGlvbiwg
RnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBpZiAo
b3B0aW9ucyAmIEZyYW1lU2VsZWN0aW9uOjpEaWN0YXRpb25UcmlnZ2VyZWQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIXNob3VsZFN0YXJ0VGltZXJGb3IobWFya2VyLCBlbmRPZldv
cmRQb3NpdGlvbi5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBOb2RlKiBub2RlID0gZW5kT2ZXb3JkUG9zaXRpb24uY29udGFpbmVyTm9kZSgpOwor
ICAgIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShtX2ZyYW1lLT5kb2N1
bWVudCgpLCBub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLmVuZE9mZnNl
dCgpKTsKKyAgICBpZiAoIXdvcmRSYW5nZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFN0
cmluZyBjdXJyZW50V29yZCA9IHBsYWluVGV4dCh3b3JkUmFuZ2UuZ2V0KCkpOworICAgIGlmICgh
Y3VycmVudFdvcmQubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX2FsdGVy
bmF0aXZlVGV4dEluZm8ub3JpZ2luYWxUZXh0ID0gY3VycmVudFdvcmQ7CisgICAgc3dpdGNoICht
YXJrZXIudHlwZSgpKSB7CisgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmc6CisgICAg
ICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHdvcmRSYW5n
ZTsKKyAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLmRldGFpbHMgPSBBdXRvY29ycmVjdGlv
bkFsdGVybmF0aXZlRGV0YWlsczo6Y3JlYXRlKCIiKTsKKyAgICAgICAgc3RhcnRBbHRlcm5hdGl2
ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVTcGVsbGluZ1N1Z2dlc3Rpb25zKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQ6CisgICAg
ICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHdvcmRSYW5n
ZTsKKyAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLmRldGFpbHMgPSBBdXRvY29ycmVjdGlv
bkFsdGVybmF0aXZlRGV0YWlsczo6Y3JlYXRlKG1hcmtlci5kZXNjcmlwdGlvbigpKTsKKyAgICAg
ICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNp
b24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25B
bHRlcm5hdGl2ZXM6IHsKKyAgICAgICAgY29uc3QgRGljdGF0aW9uTWFya2VyRGV0YWlscyogbWFy
a2VyRGV0YWlscyA9IHN0YXRpY19jYXN0PGNvbnN0IERpY3RhdGlvbk1hcmtlckRldGFpbHMqPiht
YXJrZXIuZGV0YWlscygpKTsKKyAgICAgICAgaWYgKCFtYXJrZXJEZXRhaWxzKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoY3VycmVudFdvcmQgIT0gbWFya2VyRGV0YWls
cy0+b3JpZ2luYWxUZXh0KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG1f
YWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHdvcmRSYW5nZTsKKyAg
ICAgICAgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLmRldGFpbHMgPSBEaWN0YXRpb25BbHRlcm5hdGl2
ZURldGFpbHM6OmNyZWF0ZShtYXJrZXJEZXRhaWxzLT5kaWN0YXRpb25Db250ZXh0KCkpOworICAg
ICAgICBzdGFydEFsdGVybmF0aXZlVGV4dFVJVGltZXIoQWx0ZXJuYXRpdmVUZXh0VHlwZURpY3Rh
dGlvbkFsdGVybmF0aXZlcyk7CisgICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCitTdHJpbmcgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFy
a2VyRGVzY3JpcHRpb25Gb3JBcHBsaWVkQWx0ZXJuYXRpdmVUZXh0KEFsdGVybmF0aXZlVGV4dFR5
cGUgYWx0ZXJuYXRpdmVUZXh0VHlwZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgbWFya2Vy
VHlwZSkKK3sKKyAgICBpZiAoYWx0ZXJuYXRpdmVUZXh0VHlwZSAhPSBBbHRlcm5hdGl2ZVRleHRU
eXBlUmV2ZXJzaW9uICYmIChtYXJrZXJUeXBlID09IERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVu
dCB8fCBtYXJrZXJUeXBlID09IERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkKSkKKyAgICAg
ICAgcmV0dXJuIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5vcmlnaW5hbFRleHQ7CisgICAgcmV0dXJu
ICIiOworfQorCiAjZW5kaWYKIAogYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjppbnNl
cnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8RGljdGF0aW9u
QWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIEV2ZW50KiB0cmlnZ2VyaW5nRXZl
bnQpCkBAIC02MjQsNCArNzEyLDQ2IEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
aW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjCiAgICAgcmV0
dXJuIGV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpOwogfQogCit2b2lkIEFsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXI6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcihjb25zdCBEb2N1
bWVudE1hcmtlciogbWFya2VyKQoreworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQor
ICAgIERpY3RhdGlvbk1hcmtlckRldGFpbHMqIGRldGFpbHMgPSBzdGF0aWNfY2FzdDxEaWN0YXRp
b25NYXJrZXJEZXRhaWxzKj4obWFya2VyLT5kZXRhaWxzKCkpOworICAgIGlmIChBbHRlcm5hdGl2
ZVRleHRDbGllbnQqIGNsaWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgpKQorICAgICAgICBj
bGllbnQtPnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyhkZXRhaWxzLT5kaWN0YXRpb25Db250
ZXh0KCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obWFya2VyKTsKKyNlbmRpZgorfQorCitW
ZWN0b3I8U3RyaW5nPiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpkaWN0YXRpb25BbHRlcm5h
dGl2ZXNGb3JNYXJrZXIoY29uc3QgRG9jdW1lbnRNYXJrZXIqIG1hcmtlcikKK3sKKyNpZiBVU0Uo
RElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBBU1NFUlQobWFya2VyLT50eXBlKCkgPT0gRG9j
dW1lbnRNYXJrZXI6OkRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAgaWYgKEFsdGVybmF0aXZl
VGV4dENsaWVudCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkpIHsKKyAgICAgICAg
RGljdGF0aW9uTWFya2VyRGV0YWlscyogZGV0YWlscyA9IHN0YXRpY19jYXN0PERpY3RhdGlvbk1h
cmtlckRldGFpbHMqPihtYXJrZXItPmRldGFpbHMoKSk7CisgICAgICAgIHJldHVybiBjbGllbnQt
PmRpY3RhdGlvbkFsdGVybmF0aXZlcyhkZXRhaWxzLT5kaWN0YXRpb25Db250ZXh0KCkpOworICAg
IH0KKyAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KG1hcmtlcik7CisgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CisjZW5kaWYKK30KKwordm9p
ZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKGNv
bnN0IFN0cmluZyYgYWx0ZXJuYXRpdmVTdHJpbmcpCit7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRF
Uk5BVElWRVMpCisgICAgRWRpdG9yKiBlZGl0b3IgPSBtX2ZyYW1lLT5lZGl0b3IoKTsKKyAgICBS
ZWZQdHI8UmFuZ2U+IHNlbGVjdGlvbiA9IGVkaXRvci0+c2VsZWN0ZWRSYW5nZSgpOworICAgIGlm
ICghc2VsZWN0aW9uIHx8ICFlZGl0b3ItPnNob3VsZEluc2VydFRleHQoYWx0ZXJuYXRpdmVTdHJp
bmcsIHNlbGVjdGlvbi5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKKyAgICAgICAg
cmV0dXJuOworICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciogbWFya2VycyA9IHNlbGVjdGlv
bi0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpOworICAgIFZlY3RvcjxE
b2N1bWVudE1hcmtlcio+IGRpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcnMgPSBtYXJrZXJzLT5t
YXJrZXJzSW5SYW5nZShzZWxlY3Rpb24uZ2V0KCksIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25B
bHRlcm5hdGl2ZXMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGljdGF0aW9uQWx0ZXJu
YXRpdmVzTWFya2Vycy5zaXplKCk7ICsraSkKKyAgICAgICAgcmVtb3ZlRGljdGF0aW9uQWx0ZXJu
YXRpdmVzRm9yTWFya2VyKGRpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcnNbaV0pOworCisgICAg
YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKHNlbGVjdGlvbi5nZXQoKSwgYWx0ZXJuYXRpdmVT
dHJpbmcsIEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0YXRpb25BbHRlcm5hdGl2ZXMsIG1hcmtlclR5
cGVzRm9yQXBwbGllZERpY3RhdGlvbkFsdGVybmF0aXZlKCkpOworI2VuZGlmCit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLmgKaW5kZXggMjg0NDllZmQ5M2U1NzQwYTA5ZTM1YjY1NGI4OWI1
MGM3OTgwOGQ5Yi4uYjc2YTAwODJjNDU1YTdmZjgwN2I3YTY0ZWI2ODJiZDgzMWU3ZjY1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFsdGVybmF0aXZlVGV4dENsaWVudC5o
IgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyLmgiCisjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24u
aCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2luZy5oIgogI2luY2x1
ZGUgIlRpbWVyLmgiCkBAIC0xMDgsNyArMTA5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9u
ZFRvVW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBjb25z
dCBTdHJpbmcmIGNvcnJlY3RlZCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKSBVTkxFU1NfRU5B
QkxFRCh7IFVOVVNFRF9QQVJBTShjb3JyZWN0ZWQpOyBVTlVTRURfUEFSQU0oY29ycmVjdGlvbik7
IH0pCiAgICAgdm9pZCByZXNwb25kVG9BcHBsaWVkRWRpdGluZyhDb21wb3NpdGVFZGl0Q29tbWFu
ZCopIFVOTEVTU19FTkFCTEVEKHsgfSkKICAgICB2b2lkIHJlc3BvbmRUb1VuYXBwbGllZEVkaXRp
bmcoRWRpdENvbW1hbmRDb21wb3NpdGlvbiopIFVOTEVTU19FTkFCTEVEKHsgfSkKLSAgICB2b2lk
IHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2Vs
ZWN0aW9uKSBVTkxFU1NfRU5BQkxFRCh7IFVOVVNFRF9QQVJBTShvbGRTZWxlY3Rpb24pOyB9KQor
ICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBvbGRTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zKSBVTkxF
U1NfRU5BQkxFRCh7IFVOVVNFRF9QQVJBTShvbGRTZWxlY3Rpb24pOyB9KQogCiAgICAgdm9pZCBz
dG9wUGVuZGluZ0NvcnJlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9u
KSBVTkxFU1NfRU5BQkxFRCh7IFVOVVNFRF9QQVJBTShvbGRTZWxlY3Rpb24pOyB9KQogICAgIHZv
aWQgYXBwbHlQZW5kaW5nQ29ycmVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rp
b25BZnRlclR5cGluZykgVU5MRVNTX0VOQUJMRUQoeyBVTlVTRURfUEFSQU0oc2VsZWN0aW9uQWZ0
ZXJUeXBpbmcpOyB9KQpAQCAtMTMwLDIwICsxMzEsMjIgQEAgcHVibGljOgogICAgIHZvaWQgZGVs
ZXRlZEF1dG9jb3JyZWN0aW9uQXRQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luYWxTdHJpbmcpIFVOTEVTU19FTkFCTEVEKHsgVU5VU0VEX1BBUkFNKG9yaWdpbmFs
U3RyaW5nKTsgfSkKIAogICAgIGJvb2wgaW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYs
IGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mLCBFdmVudCopOworICAgIHZvaWQg
cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKGNvbnN0IERvY3VtZW50TWFya2Vy
Kik7CisgICAgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKGNv
bnN0IERvY3VtZW50TWFya2VyKik7CisgICAgdm9pZCBhcHBseURpY3RhdGlvbkFsdGVybmF0aXZl
KGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmVTdHJpbmcpOwogCiBwcml2YXRlOgogI2lmIFVTRShB
VVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICBTdHJpbmcgZGlzbWlzc1Nvb24oUmVhc29uRm9yRGlz
bWlzc2luZ0FsdGVybmF0aXZlVGV4dCk7Ci0gICAgdm9pZCBhcHBseUFsdGVybmF0aXZlVGV4dChj
b25zdCBTdHJpbmcmIGFsdGVybmF0aXZlLCBjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1h
cmtlclR5cGU+Jik7CisgICAgdHlwZWRlZiBTdHJpbmcoXk1hcmtlckRlc2NyaXB0aW9uU3VwcGxp
ZXIpKEFsdGVybmF0aXZlVGV4dFR5cGUsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKKyAg
ICB2b2lkIGFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZShjb25zdCBSYW5nZSosIGNvbnN0IFN0
cmluZyYgYWx0ZXJuYXRpdmUsIEFsdGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0IFZlY3RvcjxEb2N1
bWVudE1hcmtlcjo6TWFya2VyVHlwZT4mLCBNYXJrZXJEZXNjcmlwdGlvblN1cHBsaWVyID0gMCk7
CiAgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI+Kik7
CiAgICAgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlUmV2ZXJzZWQoY29uc3QgU3Ry
aW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CiAg
ICAgdm9pZCByZWNvcmRTcGVsbGNoZWNrZXJSZXNwb25zZUZvck1vZGlmaWVkQ29ycmVjdGlvbihS
YW5nZSogcmFuZ2VPZkNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgY29ycmVjdGVkLCBjb25zdCBT
dHJpbmcmIGNvcnJlY3Rpb24pOworICAgIFN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxp
ZWRBbHRlcm5hdGl2ZVRleHQoQWx0ZXJuYXRpdmVUZXh0VHlwZSwgRG9jdW1lbnRNYXJrZXI6Ok1h
cmtlclR5cGUpOwogCi0gICAgYm9vbCBzaG91bGRTdGFydFRpbWVyRm9yKGNvbnN0IERvY3VtZW50
TWFya2VyKiBtYXJrZXIsIGludCBlbmRPZmZzZXQpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gKCgobWFya2VyLT50eXBlKCkgPT0gRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50ICYmICFt
YXJrZXItPmRlc2NyaXB0aW9uKCkuaXNOdWxsKCkpIAotICAgICAgICAgICAgICAgICB8fCBtYXJr
ZXItPnR5cGUoKSA9PSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpICYmIHN0YXRpY19jYXN0PGlu
dD4obWFya2VyLT5lbmRPZmZzZXQoKSkgPT0gZW5kT2Zmc2V0KTsKLSAgICB9CisgICAgYm9vbCBz
aG91bGRTdGFydFRpbWVyRm9yKGNvbnN0IERvY3VtZW50TWFya2VyJiwgaW50IGVuZE9mZnNldCkg
Y29uc3Q7CisgICAgYm9vbCByZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZChjb25zdCBEb2N1bWVu
dE1hcmtlciYsIGNvbnN0IFBvc2l0aW9uJiBlbmRPZldvcmRQb3NpdGlvbiwgRnJhbWVTZWxlY3Rp
b246OlNldFNlbGVjdGlvbk9wdGlvbnMpOwogCiAgICAgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBh
bHRlcm5hdGl2ZVRleHRDbGllbnQoKTsKICAgICBFZGl0b3JDbGllbnQqIGVkaXRvckNsaWVudCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDU1MDFkMDRmYTk4ODBjZDUwZTYxODAy
NTc2Yzc3Mjk3YWQ0ZTc3ZjkuLjA3NTMxOWNjZWZlNTYyOTEzNjg4YWIzMDg3ZDc2OTA0ZmE4OGIz
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQ4MSwxMyArNDgxLDEzIEBAIGJv
b2wgRWRpdG9yOjpzaG91bGRTaG93RGVsZXRlSW50ZXJmYWNlKEhUTUxFbGVtZW50KiBlbGVtZW50
KSBjb25zdAogICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+c2hvdWxkU2hvd0RlbGV0
ZUludGVyZmFjZShlbGVtZW50KTsKIH0KIAotdm9pZCBFZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRT
ZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uKQordm9pZCBFZGl0
b3I6Om5vdGlmeUNvbXBvbmVudHNPbkNoYW5nZWRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYgb2xkU2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyBv
cHRpb25zKQogewogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnJlc3BvbmRU
b0NoYW5nZWRTZWxlY3Rpb24obV9mcmFtZSk7CiAgICAgc2V0U3RhcnROZXdLaWxsUmluZ1NlcXVl
bmNlKHRydWUpOwogICAgIG1fZGVsZXRlQnV0dG9uQ29udHJvbGxlci0+cmVzcG9uZFRvQ2hhbmdl
ZFNlbGVjdGlvbihvbGRTZWxlY3Rpb24pOwotICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
ci0+cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihvbGRTZWxlY3Rpb24pOworICAgIG1fYWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci0+cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihvbGRTZWxlY3Rp
b24sIG9wdGlvbnMpOwogfQogCiB2b2lkIEVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRz
KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIGVuZGluZ1NlbGVjdGlvbikKQEAgLTc5MCw3ICs3OTAs
OCBAQCB2b2lkIEVkaXRvcjo6YXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cjxDb21wb3NpdGVFZGl0
Q29tbWFuZD4gY21kKQogICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+cmVzcG9uZFRv
QXBwbGllZEVkaXRpbmcoY21kLmdldCgpKTsKIAogICAgIC8vIERvbid0IGNsZWFyIHRoZSB0eXBp
bmcgc3R5bGUgd2l0aCB0aGlzIHNlbGVjdGlvbiBjaGFuZ2UuICBXZSBkbyB0aG9zZSB0aGluZ3Mg
ZWxzZXdoZXJlIGlmIG5lY2Vzc2FyeS4KLSAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQo
bmV3U2VsZWN0aW9uLCBmYWxzZSwgZmFsc2UpOworICAgIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxl
Y3Rpb25PcHRpb25zIG9wdGlvbnMgPSBjbWQtPmlzRGljdGF0aW9uQ29tbWFuZCgpID8gRnJhbWVT
ZWxlY3Rpb246OkRpY3RhdGlvblRyaWdnZXJlZCA6IDA7CisgICAgY2hhbmdlU2VsZWN0aW9uQWZ0
ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgb3B0aW9ucyk7CiAKICAgICBpZiAoIWNtZC0+cHJlc2Vy
dmVzVHlwaW5nU3R5bGUoKSkKICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPmNsZWFyVHlw
aW5nU3R5bGUoKTsKQEAgLTgxNiw3ICs4MTcsNyBAQCB2b2lkIEVkaXRvcjo6dW5hcHBsaWVkRWRp
dGluZyhQYXNzUmVmUHRyPEVkaXRDb21tYW5kQ29tcG9zaXRpb24+IGNtZCkKICAgICBkaXNwYXRj
aEVkaXRhYmxlQ29udGVudENoYW5nZWRFdmVudHMoY21kLT5zdGFydGluZ1Jvb3RFZGl0YWJsZUVs
ZW1lbnQoKSwgY21kLT5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCkpOwogICAgIAogICAgIFZp
c2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uKGNtZC0+c3RhcnRpbmdTZWxlY3Rpb24oKSk7Ci0g
ICAgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgdHJ1ZSwgdHJ1ZSk7
CisgICAgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxl
Y3Rpb246OkNsb3NlVHlwaW5nIHwgRnJhbWVTZWxlY3Rpb246OkNsZWFyVHlwaW5nU3R5bGUpOwog
ICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+cmVzcG9uZFRvVW5hcHBsaWVkRWRpdGlu
ZyhjbWQuZ2V0KCkpOwogICAgIAogICAgIG1fbGFzdEVkaXRDb21tYW5kID0gMDsKQEAgLTgzMiw3
ICs4MzMsNyBAQCB2b2lkIEVkaXRvcjo6cmVhcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyPEVkaXRD
b21tYW5kQ29tcG9zaXRpb24+IGNtZCkKICAgICBkaXNwYXRjaEVkaXRhYmxlQ29udGVudENoYW5n
ZWRFdmVudHMoY21kLT5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY21kLT5lbmRpbmdS
b290RWRpdGFibGVFbGVtZW50KCkpOwogICAgIAogICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2Vs
ZWN0aW9uKGNtZC0+ZW5kaW5nU2VsZWN0aW9uKCkpOwotICAgIGNoYW5nZVNlbGVjdGlvbkFmdGVy
Q29tbWFuZChuZXdTZWxlY3Rpb24sIHRydWUsIHRydWUpOworICAgIGNoYW5nZVNlbGVjdGlvbkFm
dGVyQ29tbWFuZChuZXdTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpDbG9zZVR5cGluZyB8IEZy
YW1lU2VsZWN0aW9uOjpDbGVhclR5cGluZ1N0eWxlKTsKICAgICAKICAgICBtX2xhc3RFZGl0Q29t
bWFuZCA9IDA7CiAgICAgaWYgKGNsaWVudCgpKQpAQCAtMjI2Nyw2ICsyMjY4LDEwIEBAIHZvaWQg
RWRpdG9yOjp1cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhib29sIGRvTm90
UmVtb3ZlSWZTZWxlY3Rpb25BCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9j
dW1lbnQoKTsKICAgICBSZWZQdHI8UmFuZ2U+IHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9j
dW1lbnQsIHN0YXJ0T2ZGaXJzdFdvcmQuZGVlcEVxdWl2YWxlbnQoKSwgZW5kT2ZMYXN0V29yZC5k
ZWVwRXF1aXZhbGVudCgpKTsKIAorICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcio+IG1hcmtlcnMg
PSBkb2N1bWVudC0+bWFya2VycygpLT5tYXJrZXJzSW5SYW5nZSh3b3JkUmFuZ2UuZ2V0KCksIERv
Y3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbWFya2Vycy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLT5yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIobWFya2Vyc1tp
XSk7CisKICAgICBkb2N1bWVudC0+bWFya2VycygpLT5yZW1vdmVNYXJrZXJzKHdvcmRSYW5nZS5n
ZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nIHwgRG9jdW1lbnRNYXJrZXI6OkNvcnJlY3Rp
b25JbmRpY2F0b3IgfCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbiB8IERv
Y3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMsIERvY3VtZW50TWFya2VyQ29udHJv
bGxlcjo6UmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXIpOwogICAgIGRvY3VtZW50LT5t
YXJrZXJzKCktPmNsZWFyRGVzY3JpcHRpb25Pbk1hcmtlcnNJbnRlcnNlY3RpbmdSYW5nZSh3b3Jk
UmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7CiB9CkBAIC0yNTUyLDcg
KzI1NTcsNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBFZGl0b3I6Om5leHRWaXNpYmxlUmFuZ2UoUmFu
Z2UqIGN1cnJlbnRSYW5nZSwgY29uc3QgU3RyaW5nJiB0YQogICAgIHJldHVybiBmaXJzdFZpc2li
bGVSYW5nZSh0YXJnZXQsIG9wdGlvbnMpOwogfQogCi12b2lkIEVkaXRvcjo6Y2hhbmdlU2VsZWN0
aW9uQWZ0ZXJDb21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgYm9v
bCBjbG9zZVR5cGluZywgYm9vbCBjbGVhclR5cGluZ1N0eWxlKQordm9pZCBFZGl0b3I6OmNoYW5n
ZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rp
b24sICBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyBvcHRpb25zKQogewogICAg
IC8vIElmIHRoZSBuZXcgc2VsZWN0aW9uIGlzIG9ycGhhbmVkLCB0aGVuIGRvbid0IHVwZGF0ZSB0
aGUgc2VsZWN0aW9uLgogICAgIGlmIChuZXdTZWxlY3Rpb24uc3RhcnQoKS5pc09ycGhhbigpIHx8
IG5ld1NlbGVjdGlvbi5lbmQoKS5pc09ycGhhbigpKQpAQCAtMjU2MywxNCArMjU2OCw4IEBAIHZv
aWQgRWRpdG9yOjpjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQoY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYgbmV3U2VsZWN0aW9uLCBiCiAgICAgLy8gVGhlIG9sZCBzZWxlY3Rpb24gY2FuIGJlIGlu
dmFsaWQgaGVyZSBhbmQgY2FsbGluZyBzaG91bGRDaGFuZ2VTZWxlY3Rpb24gY2FuIHByb2R1Y2Ug
c29tZSBzdHJhbmdlIGNhbGxzLgogICAgIC8vIFNlZSA8cmRhcjovL3Byb2JsZW0vNTcyOTMxNT4g
U29tZSBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlIGNvbnRhaW4gUmFuZ2VzIGZvciBzZWxl
Y3Rpb25zIHRoYXQgYXJlIG5vIGxvbmdlciB2YWxpZAogICAgIGJvb2wgc2VsZWN0aW9uRGlkTm90
Q2hhbmdlRE9NUG9zaXRpb24gPSBuZXdTZWxlY3Rpb24gPT0gbV9mcmFtZS0+c2VsZWN0aW9uKCkt
PnNlbGVjdGlvbigpOwotICAgIGlmIChzZWxlY3Rpb25EaWROb3RDaGFuZ2VET01Qb3NpdGlvbiB8
fCBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKG5ld1NlbGVjdGlv
bikpIHsKLSAgICAgICAgRnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9u
cyA9IDA7Ci0gICAgICAgIGlmIChjbG9zZVR5cGluZykKLSAgICAgICAgICAgIG9wdGlvbnMgfD0g
RnJhbWVTZWxlY3Rpb246OkNsb3NlVHlwaW5nOwotICAgICAgICBpZiAoY2xlYXJUeXBpbmdTdHls
ZSkKLSAgICAgICAgICAgIG9wdGlvbnMgfD0gRnJhbWVTZWxlY3Rpb246OkNsZWFyVHlwaW5nU3R5
bGU7CisgICAgaWYgKHNlbGVjdGlvbkRpZE5vdENoYW5nZURPTVBvc2l0aW9uIHx8IG1fZnJhbWUt
PnNlbGVjdGlvbigpLT5zaG91bGRDaGFuZ2VTZWxlY3Rpb24obmV3U2VsZWN0aW9uKSkKICAgICAg
ICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIG9wdGlv
bnMpOwotICAgIH0KIAogICAgIC8vIFNvbWUgZWRpdGluZyBvcGVyYXRpb25zIGNoYW5nZSB0aGUg
c2VsZWN0aW9uIHZpc3VhbGx5IHdpdGhvdXQgYWZmZWN0aW5nIGl0cyBwb3NpdGlvbiB3aXRoaW4g
dGhlIERPTS4KICAgICAvLyBGb3IgZXhhbXBsZSB3aGVuIHlvdSBwcmVzcyByZXR1cm4gaW4gdGhl
IGZvbGxvd2luZyAodGhlIGNhcmV0IGlzIG1hcmtlZCBieSBeKToKQEAgLTI5NzcsNyArMjk3Niw3
IEBAIHZvaWQgRWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIG9sZFNlbGVjdGlvbiwgRnJhCiAgICAgaWYgKCFpc0NvbnRpbnVvdXNHcmFtbWFy
Q2hlY2tpbmdFbmFibGVkKQogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5tYXJrZXJzKCkt
PnJlbW92ZU1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIpOwogCi0gICAgcmVzcG9uZFRv
Q2hhbmdlZFNlbGVjdGlvbihvbGRTZWxlY3Rpb24pOworICAgIG5vdGlmeUNvbXBvbmVudHNPbkNo
YW5nZWRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uLCBvcHRpb25zKTsKIH0KIAogc3RhdGljIE5vZGUq
IGZpbmRGaXJzdE1hcmthYmxlKE5vZGUqIG5vZGUpCkBAIC0zMDY4LDQgKzMwNjcsMTQgQEAgdm9p
ZCBFZGl0b3I6OndpbGxEZXRhY2hQYWdlKCkKICAgICAgICAgZWRpdG9yQ2xpZW50LT5mcmFtZVdp
bGxEZXRhY2hQYWdlKGZyYW1lKCkpOwogfQogCitWZWN0b3I8U3RyaW5nPiBFZGl0b3I6OmRpY3Rh
dGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcihjb25zdCBEb2N1bWVudE1hcmtlciogbWFya2VyKQor
eworICAgIHJldHVybiBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPmRpY3RhdGlvbkFsdGVy
bmF0aXZlc0Zvck1hcmtlcihtYXJrZXIpOworfQorCit2b2lkIEVkaXRvcjo6YXBwbHlEaWN0YXRp
b25BbHRlcm5hdGl2ZWx0ZXJuYXRpdmUoY29uc3QgU3RyaW5nJiBhbHRlcm5hdGl2ZVN0cmluZykK
K3sKKyAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPmFwcGx5RGljdGF0aW9uQWx0ZXJu
YXRpdmUoYWx0ZXJuYXRpdmVTdHJpbmcpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA5MGEyM2UxMjE0NzUzNGEzMjkzMzM1ZDAxNTc1ZTNl
YjUzOTVhYjBjLi5mMmE1NTRhNjg2YmQ0NTNiZjYzN2M0OWQwOTc4ZjVhY2U2OTgxMjhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTEzNCw4ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzaG91bGRTaG93RGVsZXRlSW50ZXJmYWNlKEhUTUxFbGVtZW50KikgY29uc3Q7CiAgICAgYm9v
bCBzaG91bGREZWxldGVSYW5nZShSYW5nZSopIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkQXBwbHlT
dHlsZShTdHlsZVByb3BlcnR5U2V0KiwgUmFuZ2UqKTsKLSAgICAKLSAgICB2b2lkIHJlc3BvbmRU
b0NoYW5nZWRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uKTsK
KwogICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIGVuZGluZ1NlbGVjdGlvbik7CiAKICAgICBib29sIHNlbGVjdGlvblN0YXJ0SGFzU3R5bGUo
Q1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3Q7CkBAIC0zOTksNyArMzk4
LDggQEAgcHVibGljOgogCiAgICAgRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9yIGRlZmF1bHRQYXJh
Z3JhcGhTZXBhcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0
b3I7IH0KICAgICB2b2lkIHNldERlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRWRpdG9yUGFyYWdy
YXBoU2VwYXJhdG9yIHNlcGFyYXRvcikgeyBtX2RlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IgPSBz
ZXBhcmF0b3I7IH0KLQorICAgIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlc0Zv
ck1hcmtlcihjb25zdCBEb2N1bWVudE1hcmtlciopOworICAgIHZvaWQgYXBwbHlEaWN0YXRpb25B
bHRlcm5hdGl2ZWx0ZXJuYXRpdmUoY29uc3QgU3RyaW5nJiBhbHRlcm5hdGl2ZVN0cmluZyk7CiBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGV0YWNoUGFnZSgpIE9WRVJSSURFOwogCkBA
IC00MzcsNyArNDM3LDggQEAgcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPFJhbmdlPiBsYXN0Vmlz
aWJsZVJhbmdlKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zKTsKICAgICBQYXNzUmVmUHRyPFJh
bmdlPiBuZXh0VmlzaWJsZVJhbmdlKFJhbmdlKiwgY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMp
OwogCi0gICAgdm9pZCBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQoY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYgbmV3U2VsZWN0aW9uLCBib29sIGNsb3NlVHlwaW5nLCBib29sIGNsZWFyVHlwaW5n
U3R5bGUpOworICAgIHZvaWQgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9w
dGlvbnMpOworICAgIHZvaWQgbm90aWZ5Q29tcG9uZW50c09uQ2hhbmdlZFNlbGVjdGlvbihjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxl
Y3Rpb25PcHRpb25zKTsKIAogICAgIE5vZGUqIGZpbmRFdmVudFRhcmdldEZyb21TZWxlY3Rpb24o
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCmluZGV4IDhm
YzQyZWNjZTAzNjIwMmE3ZjAyODQwYTBlNWQxMzRkYzY1ZGZiMDguLjRkN2Y5ODc3NTk1YzI2NDMz
MmJlZDg4ZjNhNDU4YWQ4MWI3NmQ0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmgKQEAgLTExOCw2ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIENsZWFyVHlwaW5n
U3R5bGUgPSAxIDw8IDIsCiAgICAgICAgIFNwZWxsQ29ycmVjdGlvblRyaWdnZXJlZCA9IDEgPDwg
MywKICAgICAgICAgRG9Ob3RTZXRGb2N1cyA9IDEgPDwgNCwKKyAgICAgICAgRGljdGF0aW9uVHJp
Z2dlcmVkID0gMSA8PCA1CiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIFNldFNlbGVjdGlv
bk9wdGlvbnM7IC8vIFVuaW9uIG9mIHZhbHVlcyBpbiBTZXRTZWxlY3Rpb25PcHRpb24gYW5kIEVV
c2VyVHJpZ2dlcmVkCiAgICAgc3RhdGljIGlubGluZSBFVXNlclRyaWdnZXJlZCBzZWxlY3Rpb25P
cHRpb25zVG9Vc2VyVHJpZ2dlcmVkKFNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNiM2U4OGE4MGNiOWNkOWNkZWM2NGJjNTY5NWVmMWJmZDFk
NWJjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcl9oCisjZGVmaW5lIEFsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlcl9oCisKKyNpbmNsdWRlICJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIK
KyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQor
T0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CitPQkpDX0NMQVNTIE5TVmlldzsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgewor
cHVibGljOgorICAgIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcigpIHsgfQorICAgIC8vIFJl
dHVybnMgYSBjb250ZXh0IElELgorICAgIHVpbnQ2NF90IGFkZEFsdGVybmF0aXZlcyhjb25zdCBS
ZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpOworICAgIHZvaWQgY2xlYXIoKTsKKyAgICB2
b2lkIHNob3dBbHRlcm5hdGl2ZXMoTlNWaWV3KiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0Jv
eE9mUHJpbWFyeVN0cmluZywgdWludDY0X3QgY29udGV4dCwgdm9pZCheYWNjZXB0YW5jZUhhbmRs
ZXIpKE5TU3RyaW5nKikpOworICAgIHZvaWQgZGlzbWlzc0FsdGVybmF0aXZlcygpOworICAgIHZv
aWQgcmVtb3ZlQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGNvbnRleHQpOworICAgIFZlY3RvcjxTdHJp
bmc+IGFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4dCk7CisKK3ByaXZhdGU6
CisgICAgdm9pZCBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlKE5TU3RyaW5nKiBhY2NlcHRlZEFs
dGVybmF0aXZlLCB1aW50NjRfdCBjb250ZXh0LCBOU1RleHRBbHRlcm5hdGl2ZXMqKTsKKworICAg
IGNsYXNzIEFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgQWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcigpIHsgfQorICAgICAgICB1aW50
NjRfdCBhZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4m
KTsKKyAgICAgICAgdm9pZCBjbGVhcigpOworICAgICAgICBOU1RleHRBbHRlcm5hdGl2ZXMqIGFs
dGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4dCk7CisgICAgICAgIHZvaWQgcmVt
b3ZlQWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0KTsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVpbnQ2NF90IGludmFsaWRDb250ZXh0ID0gMDsKKyAgICBwcml2YXRlOgorICAg
ICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2
ZXM+ID4gSGFzaE1hcFR5cGU7CisgICAgICAgIEhhc2hNYXBUeXBlIG1fYWx0ZXJuYXRpdmVzT2Jq
ZWN0TWFwOworICAgIH07CisKKyAgICBBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyIG1f
Y29udGV4dENvbnRyb2xsZXI7CisgICAgUmV0YWluUHRyPE5TVmlldz4gbV92aWV3OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZiAvLyBBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiOTYzZWZjNzMy
N2E1Yjc1NDhjMmEyMTkxYjBlMWEwNWY3MDZkYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0KQEAgLTAs
MCArMSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oIgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5B
VElWRVMpCisjaW1wb3J0IDxBcHBLaXQvTlNTcGVsbENoZWNrZXIuaD4KKyNpbXBvcnQgPEFwcEtp
dC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4KKyNpbXBvcnQgPEFwcEtpdC9OU1ZpZXcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit1aW50NjRfdCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6
OkFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyhjb25zdCBS
ZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYgYWx0ZXJuYXRpdmVzKQoreworICAgIHVpbnQ2
NF90IGNvbnRleHQgPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90PihhbHRlcm5hdGl2ZXMuZ2V0
KCkpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIGludmFsaWRDb250ZXh0Owor
ICAgIGlmIChhbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGNvbnRleHQpKQorICAgICAgICByZXR1cm4g
Y29udGV4dDsKKworICAgIEhhc2hNYXBUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9hbHRlcm5h
dGl2ZXNPYmplY3RNYXAuYWRkKGNvbnRleHQsIGFsdGVybmF0aXZlcyk7CisgICAgcmV0dXJuIHJl
c3VsdC5pc05ld0VudHJ5ID8gY29udGV4dCA6IGludmFsaWRDb250ZXh0OworfQorCitOU1RleHRB
bHRlcm5hdGl2ZXMqIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2ZVRleHRD
b250ZXh0Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0
KQoreworICAgIEhhc2hNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBpdHIgPSBtX2FsdGVybmF0aXZl
c09iamVjdE1hcC5maW5kKGNvbnRleHQpOworICAgIGlmIChpdHIgPT0gbV9hbHRlcm5hdGl2ZXNP
YmplY3RNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBpdHItPnNl
Y29uZC5nZXQoKTsKK30KKwordm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OkFsZXJu
YXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OnJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQo
dWludDY0X3QgY29udGV4dCkKK3sKKyAgICBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5yZW1vdmUo
Y29udGV4dCk7Cit9CisKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0
aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjpjbGVhcigpCit7CisgICAgbV9hbHRlcm5hdGl2ZXNP
YmplY3RNYXAuY2xlYXIoKTsKK30KKwordWludDY0X3QgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyOjphZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4m
IGFsdGVybmF0aXZlcykKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0Q29udHJvbGxlci5hZGRBbHRl
cm5hdGl2ZXMoYWx0ZXJuYXRpdmVzKTsKK30KKworVmVjdG9yPFN0cmluZz4gQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyOjphbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQp
Cit7CisgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiB0ZXh0QWx0ZXJuYXRpdmVzID0gbV9jb250ZXh0
Q29udHJvbGxlci5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGNvbnRleHQpOworICAgIFZlY3RvcjxT
dHJpbmc+IGFsdGVybmF0aXZlU3RyaW5nczsKKyAgICBmb3IgKE5TU3RyaW5nKiBzdHJpbmcgaW4g
dGV4dEFsdGVybmF0aXZlcy5hbHRlcm5hdGl2ZVN0cmluZ3MpCisgICAgICAgIGFsdGVybmF0aXZl
U3RyaW5ncy5hcHBlbmQoc3RyaW5nKTsKKyAgICByZXR1cm4gYWx0ZXJuYXRpdmVTdHJpbmdzOwor
fQorCit2b2lkIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6Y2xlYXIoKQoreworICAgIHJl
dHVybiBtX2NvbnRleHRDb250cm9sbGVyLmNsZWFyKCk7Cit9CisKK3ZvaWQgQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyOjpzaG93QWx0ZXJuYXRpdmVzKE5TVmlldyogdmlldywgY29uc3QgRmxv
YXRSZWN0JiBib3VuZGluZ0JveE9mUHJpbWFyeVN0cmluZywgdWludDY0X3QgY29udGV4dCwgdm9p
ZCheYWNjZXB0YW5jZUhhbmRsZXIpKE5TU3RyaW5nKikpCit7CisgICAgZGlzbWlzc0FsdGVybmF0
aXZlcygpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV92aWV3ID0g
dmlldzsKKyAgICBOU1RleHRBbHRlcm5hdGl2ZXMqIGFsdGVybmF0aXZlcyA9IG1fY29udGV4dENv
bnRyb2xsZXIuYWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250ZXh0KTsKKyAgICBpZiAoIWFsdGVy
bmF0aXZlcykKKyAgICAgICAgcmV0dXJuOworICAgIE5TU3BlbGxDaGVja2VyKiBzcGVsbENoZWNr
ZXIgPSBbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXTsKKyAgICBbc3BlbGxDaGVj
a2VyIHNob3dDb3JyZWN0aW9uSW5kaWNhdG9yT2ZUeXBlOk5TQ29ycmVjdGlvbkluZGljYXRvclR5
cGVHdWVzc2VzIHByaW1hcnlTdHJpbmc6YWx0ZXJuYXRpdmVzLnByaW1hcnlTdHJpbmcgYWx0ZXJu
YXRpdmVTdHJpbmdzOmFsdGVybmF0aXZlcy5hbHRlcm5hdGl2ZVN0cmluZ3MgZm9yU3RyaW5nSW5S
ZWN0OmJvdW5kaW5nQm94T2ZQcmltYXJ5U3RyaW5nIHZpZXc6bV92aWV3LmdldCgpIGNvbXBsZXRp
b25IYW5kbGVyOl4oTlNTdHJpbmcqIGFjY2VwdGVkU3RyaW5nKSB7CisgICAgICAgIGlmIChhY2Nl
cHRlZFN0cmluZykgeworICAgICAgICAgICAgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShhY2Nl
cHRlZFN0cmluZywgY29udGV4dCwgYWx0ZXJuYXRpdmVzKTsKKyAgICAgICAgICAgIGFjY2VwdGFu
Y2VIYW5kbGVyKGFjY2VwdGVkU3RyaW5nKTsKKyAgICAgICAgfQorICAgIH1dOworfQorCit2b2lk
IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6aGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShO
U1N0cmluZyogYWNjZXB0ZWRBbHRlcm5hdGl2ZSwgdWludDY0X3QgY29udGV4dCwgTlNUZXh0QWx0
ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZXMpCit7CisgICAgW2FsdGVybmF0aXZlcyBub3RlU2VsZWN0
ZWRBbHRlcm5hdGl2ZVN0cmluZzphY2NlcHRlZEFsdGVybmF0aXZlXTsKKyAgICBtX2NvbnRleHRD
b250cm9sbGVyLnJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCk7CisgICAgbV92
aWV3LmNsZWFyKCk7Cit9CisKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpkaXNt
aXNzQWx0ZXJuYXRpdmVzKCkKK3sKKyAgICBpZiAoIW1fdmlldykKKyAgICAgICAgcmV0dXJuOwor
ICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBkaXNtaXNzQ29ycmVjdGlv
bkluZGljYXRvckZvclZpZXc6bV92aWV3LmdldCgpXTsKK30KKwordm9pZCBBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXI6OnJlbW92ZUFsdGVybmF0aXZlcyh1aW50NjRfdCBjb250ZXh0KQorewor
ICAgIG1fY29udGV4dENvbnRyb2xsZXIucmVtb3ZlQWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250
ZXh0KTsKK30KK30KKyNlbmRpZiAvLyBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZS5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjQ4MzM5OTRkZmYxMDI5MzE2YzVkMjAzOTEyZTg2ZGIxMmMxN2I0OAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1RleHRBbHRlcm5h
dGl2ZVdpdGhSYW5nZS5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZV9oCisjZGVmaW5lIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZV9oCisKKyNpbmNsdWRlICJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKK09CSkNfQ0xB
U1MgTlNUZXh0QWx0ZXJuYXRpdmVzOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UgeworICAgIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZShO
U1RleHRBbHRlcm5hdGl2ZXMqIGFuQWx0ZXJuYXRpdmVzLCBOU1JhbmdlIGFSYW5nZSk7CisgICAg
TlNSYW5nZSByYW5nZTsKKyAgICBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiBhbHRlcm5h
dGl2ZXM7Cit9OworCit2b2lkIGNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzKE5TQXR0
cmlidXRlZFN0cmluZyosIFZlY3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBhbHRlcm5h
dGl2ZXMpOworCisjZWxzZQorc3RydWN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSB7IH07Cisj
ZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1Rl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1Rl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWE1OGY4OTRmOGVlZjVlNjM1
YTg3OWEwYjc4MTBkZmQ0YzJmZTFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tCkBAIC0wLDAgKzEsNTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXh0QWx0ZXJuYXRpdmVX
aXRoUmFuZ2UuaCIKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorI2ltcG9ydCA8
QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Rl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZTo6VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlKE5TVGV4dEFs
dGVybmF0aXZlcyogYW5BbHRlcm5hdGl2ZXMsIE5TUmFuZ2UgYVJhbmdlKQorOiByYW5nZShhUmFu
Z2UpCissIGFsdGVybmF0aXZlcyhhbkFsdGVybmF0aXZlcykKK3sKK30KKwordm9pZCBjb2xsZWN0
RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVj
dG9yPFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGFsdGVybmF0aXZlcykgeworICAgIE5TUmFu
Z2UgZWZmZWN0aXZlUmFuZ2UgPSBOU01ha2VSYW5nZSgwLCAwKTsKKyAgICBOU1VJbnRlZ2VyIGxl
bmd0aCA9IFtzdHJpbmcgbGVuZ3RoXTsKKyAgICBkbyB7CisgICAgICAgIE5TRGljdGlvbmFyeSAq
YXR0cmlidXRlcyA9IFtzdHJpbmcgYXR0cmlidXRlc0F0SW5kZXg6ZWZmZWN0aXZlUmFuZ2UubG9j
YXRpb24gZWZmZWN0aXZlUmFuZ2U6JmVmZmVjdGl2ZVJhbmdlXTsKKyAgICAgICAgaWYgKCFhdHRy
aWJ1dGVzKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIE5TVGV4dEFsdGVybmF0aXZlcyAq
dGV4dEFsdGVybmF0aXZlcyA9IFthdHRyaWJ1dGVzIG9iamVjdEZvcktleTpOU1RleHRBbHRlcm5h
dGl2ZXNBdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgaWYgKHRleHRBbHRlcm5hdGl2ZXMpCisgICAg
ICAgICAgICBhbHRlcm5hdGl2ZXMuYXBwZW5kKFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSh0ZXh0
QWx0ZXJuYXRpdmVzLCBlZmZlY3RpdmVSYW5nZSkpOworICAgICAgICBlZmZlY3RpdmVSYW5nZS5s
b2NhdGlvbiA9IE5TTWF4UmFuZ2UoZWZmZWN0aXZlUmFuZ2UpOworICAgIH0gd2hpbGUgKGVmZmVj
dGl2ZVJhbmdlLmxvY2F0aW9uIDwgbGVuZ3RoKTsKK30KK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggMDk0N2M4N2JhMDI0MTQ0MzFl
NjZkMzYzYzY4YTkzNjY2ZmRlOTZmZC4uNzRmMDc4MjIyNmU1NjQyNzkxMzdlMDVhNTMzMmJmNmNl
YjEyMWFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRleHRD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0aXZlVGV4dENsaWVudC5o
CkBAIC0zMSw2ICszMSwxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJ
TERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9MSU9OKQorLy8gU29tZSBwbGF0Zm9ybXMgcHJvdmlkZSBV
SSBmb3Igc3VnZ2VzdGluZyBhbHRlcm5hdGl2ZSBkaWN0YXRpb24gdGV4dC4KKyNkZWZpbmUgV1RG
X1VTRV9ESUNUQVRJT05fQUxURVJOQVRJVkVTIDEKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpICYm
ICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NO
T1dfTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTElPTikKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBlbnVtIFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQgewpAQCAt
NDMsNiArNDgsNyBAQCBlbnVtIEFsdGVybmF0aXZlVGV4dFR5cGUgewogICAgIEFsdGVybmF0aXZl
VGV4dFR5cGVDb3JyZWN0aW9uID0gMCwKICAgICBBbHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9u
LAogICAgIEFsdGVybmF0aXZlVGV4dFR5cGVTcGVsbGluZ1N1Z2dlc3Rpb25zLAorICAgIEFsdGVy
bmF0aXZlVGV4dFR5cGVEaWN0YXRpb25BbHRlcm5hdGl2ZXMsCiB9OwogCiBlbnVtIEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2VUeXBlIHsKQEAgLTU0LDExICs2MCwxOCBAQCBjbGFzcyBBbHRlcm5hdGl2
ZVRleHRDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkFsdGVybmF0aXZlVGV4dENsaWVu
dCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgPSAwOwotCisjaWYgVVNF
KEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvbkFs
dGVybmF0aXZlKEFsdGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdC
b3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcGxhY21lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2
ZVJlcGxhY2VtZW50U3RyaW5ncykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQWx0ZXJu
YXRpdmUoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgPSAwOwogICAgIHZpcnR1
YWwgU3RyaW5nIGRpc21pc3NBbHRlcm5hdGl2ZVNvb24oUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVy
bmF0aXZlVGV4dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJl
c3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vk
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSA9IDA7CisjZW5kaWYKKyNp
ZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0RpY3Rh
dGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9m
RGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4
dCkgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVz
KHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKKyNlbmRpZgogfTsKICAgICAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCA5Yjkx
MDcyNGI1ZTdlZGZiMTA3NjhjM2YxZDUyNWI5NWQ4M2ZkOGQ3Li43Y2YyZGJlNWJlMjA0ODBhMjQ1
YzMxMjU5YjEyMDVmMmU4MjM2ODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwCkBAIC00ODEsNiArNDgxLDkgQEAgdm9pZCBDb250ZXh0TWVudUNv
bnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkK
ICAgICAgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+aW5zcGVjdChtX2hpdFRl
c3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpOwogICAgICAgICBicmVhazsKICNlbmRpZgor
ICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGljdGF0aW9uQWx0ZXJuYXRpdmU6CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZWx0ZXJuYXRpdmUoaXRl
bS0+dGl0bGUoKSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFr
OwogICAgIH0KQEAgLTg5Niw1MCArODk5LDY1IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVy
Ojpwb3B1bGF0ZSgpCiAgICAgfSBlbHNlIHsgLy8gTWFrZSBhbiBlZGl0aW5nIGNvbnRleHQgbWVu
dQogICAgICAgICBGcmFtZVNlbGVjdGlvbiogc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigp
OwogICAgICAgICBib29sIGluUGFzc3dvcmRGaWVsZCA9IHNlbGVjdGlvbi0+aXNJblBhc3N3b3Jk
RmllbGQoKTsKLSAgICAgICAgYm9vbCBzcGVsbENoZWNraW5nRW5hYmxlZCA9IGZyYW1lLT5lZGl0
b3IoKS0+aXNTcGVsbENoZWNraW5nRW5hYmxlZEZvcihub2RlKTsKLQotICAgICAgICBpZiAoIWlu
UGFzc3dvcmRGaWVsZCAmJiBzcGVsbENoZWNraW5nRW5hYmxlZCkgewotICAgICAgICAgICAgLy8g
Q29uc2lkZXIgYWRkaW5nIHNwZWxsaW5nLXJlbGF0ZWQgb3IgZ3JhbW1hci1yZWxhdGVkIGNvbnRl
eHQgbWVudSBpdGVtcyAobmV2ZXIgYm90aCwgc2luY2UgYSBzaW5nbGUgc2VsZWN0ZWQgcmFuZ2UK
LSAgICAgICAgICAgIC8vIGlzIG5ldmVyIGNvbnNpZGVyZWQgYSBtaXNzcGVsbGluZyBhbmQgYmFk
IGdyYW1tYXIgYXQgdGhlIHNhbWUgdGltZSkKLSAgICAgICAgICAgIGJvb2wgbWlzc3BlbGxpbmc7
Ci0gICAgICAgICAgICBib29sIGJhZEdyYW1tYXI7Ci0gICAgICAgICAgICBWZWN0b3I8U3RyaW5n
PiBndWVzc2VzID0gZnJhbWUtPmVkaXRvcigpLT5ndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFt
bWF0aWNhbFNlbGVjdGlvbihtaXNzcGVsbGluZywgYmFkR3JhbW1hcik7Ci0gICAgICAgICAgICBp
ZiAobWlzc3BlbGxpbmcgfHwgYmFkR3JhbW1hcikgewotICAgICAgICAgICAgICAgIHNpemVfdCBz
aXplID0gZ3Vlc3Nlcy5zaXplKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHNpemUgPT0gMCkgewot
ICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSdzIGJhZCBncmFtbWFyIGJ1dCBubyBzdWdn
ZXN0aW9ucyAoZS5nLiwgcmVwZWF0ZWQgd29yZCksIGp1c3QgbGVhdmUgb2ZmIHRoZSBzdWdnZXN0
aW9ucwotICAgICAgICAgICAgICAgICAgICAvLyBsaXN0IGFuZCB0cmFpbGluZyBzZXBhcmF0b3Ig
cmF0aGVyIHRoYW4gYWRkaW5nIGEgIk5vIEd1ZXNzZXMgRm91bmQiIGl0ZW0gKG1hdGNoZXMgQXBw
S2l0KQotICAgICAgICAgICAgICAgICAgICBpZiAobWlzc3BlbGxpbmcpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGFwcGVuZEl0ZW0oTm9HdWVzc2VzSXRlbSwgbV9jb250ZXh0TWVudS5nZXQo
KSk7CisgICAgICAgIGlmICghaW5QYXNzd29yZEZpZWxkKSB7CisgICAgICAgICAgICBib29sIGhh
dmVDb250ZXh0TWVudUl0ZW1zRm9yTWlzc3BlbGxpbmdPckdyYW1tZXIgPSBmYWxzZTsKKyAgICAg
ICAgICAgIGJvb2wgc3BlbGxDaGVja2luZ0VuYWJsZWQgPSBmcmFtZS0+ZWRpdG9yKCktPmlzU3Bl
bGxDaGVja2luZ0VuYWJsZWRGb3Iobm9kZSk7CisgICAgICAgICAgICBpZiAoc3BlbGxDaGVja2lu
Z0VuYWJsZWQpIHsKKyAgICAgICAgICAgICAgICAvLyBDb25zaWRlciBhZGRpbmcgc3BlbGxpbmct
cmVsYXRlZCBvciBncmFtbWFyLXJlbGF0ZWQgY29udGV4dCBtZW51IGl0ZW1zIChuZXZlciBib3Ro
LCBzaW5jZSBhIHNpbmdsZSBzZWxlY3RlZCByYW5nZQorICAgICAgICAgICAgICAgIC8vIGlzIG5l
dmVyIGNvbnNpZGVyZWQgYSBtaXNzcGVsbGluZyBhbmQgYmFkIGdyYW1tYXIgYXQgdGhlIHNhbWUg
dGltZSkKKyAgICAgICAgICAgICAgICBib29sIG1pc3NwZWxsaW5nOworICAgICAgICAgICAgICAg
IGJvb2wgYmFkR3JhbW1hcjsKKyAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBndWVzc2Vz
ID0gZnJhbWUtPmVkaXRvcigpLT5ndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFNl
bGVjdGlvbihtaXNzcGVsbGluZywgYmFkR3JhbW1hcik7CisgICAgICAgICAgICAgICAgaWYgKG1p
c3NwZWxsaW5nIHx8IGJhZEdyYW1tYXIpIHsKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNp
emUgPSBndWVzc2VzLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFzaXplKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSdzIGJhZCBncmFtbWFyIGJ1dCBubyBz
dWdnZXN0aW9ucyAoZS5nLiwgcmVwZWF0ZWQgd29yZCksIGp1c3QgbGVhdmUgb2ZmIHRoZSBzdWdn
ZXN0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGlzdCBhbmQgdHJhaWxpbmcgc2Vw
YXJhdG9yIHJhdGhlciB0aGFuIGFkZGluZyBhICJObyBHdWVzc2VzIEZvdW5kIiBpdGVtIChtYXRj
aGVzIEFwcEtpdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaXNzcGVsbGluZykgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oTm9HdWVzc2VzSXRlbSwgbV9j
b250ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRl
bSgqc2VwYXJhdG9ySXRlbSgpLCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcgJmd1ZXNzID0gZ3Vlc3Nlc1tpXTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWd1ZXNzLmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gaXRlbShBY3Rpb25UeXBl
LCBDb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ0d1ZXNzLCBndWVzcyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oaXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbSgqc2VwYXJhdG9ySXRlbSgpLCBt
X2NvbnRleHRNZW51LmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICBpZiAobWlzc3BlbGxpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVu
ZEl0ZW0oSWdub3JlU3BlbGxpbmdJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oTGVhcm5TcGVsbGluZ0l0ZW0sIG1fY29udGV4dE1l
bnUuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZEl0ZW0oSWdub3JlR3JhbW1hckl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkp
OworICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29u
dGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBoYXZlQ29udGV4dE1lbnVJdGVt
c0Zvck1pc3NwZWxsaW5nT3JHcmFtbWVyID0gdHJ1ZTsKKyNpZiBQTEFURk9STShNQUMpICYmICFk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgewot
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nICZndWVzcyA9IGd1ZXNzZXNbaV07
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWd1ZXNzLmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBpdGVtKEFjdGlvblR5cGUsIENv
bnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nR3Vlc3MsIGd1ZXNzKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRJdGVtKGl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgc3RyaW5n
IHdhcyBhdXRvY29ycmVjdGVkLCBnZW5lcmF0ZSBhIGNvbnRleHR1YWwgbWVudSBpdGVtIGFsbG93
aW5nIGl0IHRvIGJlIGNoYW5nZWQgYmFjay4KKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHJl
cGxhY2VkU3RyaW5nID0gbV9oaXRUZXN0UmVzdWx0LnJlcGxhY2VkU3RyaW5nKCk7CisgICAgICAg
ICAgICAgICAgICAgIGlmICghcmVwbGFjZWRTdHJpbmcuaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gaXRlbShBY3Rpb25UeXBlLCBDb250ZXh0TWVu
dUl0ZW1UYWdDaGFuZ2VCYWNrLCBjb250ZXh0TWVudUl0ZW1UYWdDaGFuZ2VCYWNrKHJlcGxhY2Vk
U3RyaW5nKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKGl0ZW0sIG1fY29u
dGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbSgqc2Vw
YXJhdG9ySXRlbSgpLCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGhhdmVDb250ZXh0TWVudUl0ZW1zRm9yTWlzc3BlbGxpbmdPckdyYW1tZXIgPSB0cnVlOwog
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNl
cGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7ICAgICAgICAgICAgICAgICAgICAK
KyNlbmRpZgogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICBpZiAobWlzc3BlbGxpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShJ
Z25vcmVTcGVsbGluZ0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwotICAgICAgICAgICAgICAg
ICAgICBhcHBlbmRJdGVtKExlYXJuU3BlbGxpbmdJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsK
LSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShJ
Z25vcmVHcmFtbWFySXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAg
YXBwZW5kSXRlbSgqc2VwYXJhdG9ySXRlbSgpLCBtX2NvbnRleHRNZW51LmdldCgpKTsKLSNpZiBQ
TEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi0gICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIElmIHRoZSBzdHJpbmcgd2FzIGF1dG9jb3Jy
ZWN0ZWQsIGdlbmVyYXRlIGEgY29udGV4dHVhbCBtZW51IGl0ZW0gYWxsb3dpbmcgaXQgdG8gYmUg
Y2hhbmdlZCBiYWNrLgotICAgICAgICAgICAgICAgIFN0cmluZyByZXBsYWNlZFN0cmluZyA9IG1f
aGl0VGVzdFJlc3VsdC5yZXBsYWNlZFN0cmluZygpOwotICAgICAgICAgICAgICAgIGlmICghcmVw
bGFjZWRTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51
SXRlbSBpdGVtKEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0NoYW5nZUJhY2ssIGNvbnRl
eHRNZW51SXRlbVRhZ0NoYW5nZUJhY2socmVwbGFjZWRTdHJpbmcpKTsKLSAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kSXRlbShpdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKCFoYXZlQ29udGV4dE1lbnVJdGVtc0Zvck1pc3NwZWxsaW5n
T3JHcmFtbWVyKSB7CisgICAgICAgICAgICAgICAgLy8gU3BlbGxpbmcgYW5kIGdyYW1tYXIgY2hl
Y2tpbmcgaXMgbXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggZGljdGF0aW9uIGFsdGVybmF0aXZlcy4K
KyAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMgPSBt
X2hpdFRlc3RSZXN1bHQuZGljdGF0aW9uQWx0ZXJuYXRpdmVzKCk7CisgICAgICAgICAgICAgICAg
aWYgKCFkaWN0YXRpb25BbHRlcm5hdGl2ZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLnNpemUoKTsg
KytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gaXRlbShBY3Rp
b25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5hdGl2ZSwgZGljdGF0aW9u
QWx0ZXJuYXRpdmVzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oaXRl
bSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kSXRlbSgqc2VwYXJhdG9ySXRlbSgpLCBtX2NvbnRleHRNZW51Lmdl
dCgpKTsKICAgICAgICAgICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCkBAIC0xMzUyLDYgKzEzNzAsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hl
Y2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRlbSkgY29uc3QKICAgICAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1DdXN0b21UYWdOb0FjdGlvbjoKICAgICAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1MYXN0Q3VzdG9tVGFnOgogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbUJh
c2VBcHBsaWNhdGlvblRhZzoKKyAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdEaWN0YXRp
b25BbHRlcm5hdGl2ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRN
ZW51SXRlbVRhZ01lZGlhUGxheVBhdXNlOgogICAgICAgICAgICAgaWYgKG1faGl0VGVzdFJlc3Vs
dC5tZWRpYVBsYXlpbmcoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nv
bnRleHRNZW51SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVt
LmgKaW5kZXggZjhhMWEyOWFhMTU2YTZiYTI3OWY0ZTczNTFlNWZhNDJjMmU1MTc3YS4uNjk3Mzc5
ODc1M2FmMDA0MDc2MTM2MzVjNDEwZjJiOGRmOTRlMzU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKQEAgLTEzNCw2ICsxMzQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIENvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0LAogICAgICAgICBD
b250ZXh0TWVudUl0ZW1UYWdQREZTaW5nbGVQYWdlU2Nyb2xsaW5nLAogICAgICAgICBDb250ZXh0
TWVudUl0ZW1UYWdQREZGYWNpbmdQYWdlc1Njcm9sbGluZywKKyAgICAgICAgQ29udGV4dE1lbnVJ
dGVtVGFnRGljdGF0aW9uQWx0ZXJuYXRpdmUsCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICAg
ICAgQ29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQsCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCA0ZTNmNmJkY2IyOTUwMTliNWU3
MjBiNGMyMGU1YWMzZWIyMmE3NDcwLi41ZmZiNjU5NjlhZTZmMzJlMmQ4OGNiYzE0MjI1NDVmNmUx
MGRkZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3Vs
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBA
IC03MTAsNCArNzEwLDIxIEBAIEhpdFRlc3RSZXN1bHQ6Ok5vZGVTZXQmIEhpdFRlc3RSZXN1bHQ6
Om11dGFibGVSZWN0QmFzZWRUZXN0UmVzdWx0KCkKICAgICByZXR1cm4gKm1fcmVjdEJhc2VkVGVz
dFJlc3VsdDsKIH0KIAorVmVjdG9yPFN0cmluZz4gSGl0VGVzdFJlc3VsdDo6ZGljdGF0aW9uQWx0
ZXJuYXRpdmVzKCkgY29uc3QKK3sKKyAgICAvLyBSZXR1cm4gdGhlIGRpY3RhdGlvbiBjb250ZXh0
IGhhbmRsZSBpZiB0aGUgdGV4dCBhdCB0aGlzIHBvaW50IGhhcyBEaWN0YXRpb25BbHRlcm5hdGl2
ZSBtYXJrZXIsIHdoaWNoIG1lYW5zIHRoaXMgdGV4dCBpcworICAgIGlmICghbV9pbm5lck5vblNo
YXJlZE5vZGUpCisgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworCisgICAgRG9jdW1l
bnRNYXJrZXIqIG1hcmtlciA9IG1faW5uZXJOb25TaGFyZWROb2RlLT5kb2N1bWVudCgpLT5tYXJr
ZXJzKCktPm1hcmtlckNvbnRhaW5pbmdQb2ludChoaXRUZXN0UG9pbnQoKS5wb2ludCgpLCBEb2N1
bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyAgICBpZiAoIW1hcmtlcikKKyAg
ICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CisKKyAgICBGcmFtZSogZnJhbWUgPSBpbm5l
ck5vblNoYXJlZE5vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQor
ICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKworICAgIHJldHVybiBmcmFtZS0+ZWRp
dG9yKCktPmRpY3RhdGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcihtYXJrZXIpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
aAppbmRleCBhMThmZGI1YTI1NThlOWViOGM1ZjU1ZDkzZDE2ZmRhYmViYTE0NDhlLi4xOWRkYmQx
YWMyYzdmZThiNzAxMjRlMjBjMGNkOTFmNDhhNmFiMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmgKQEAgLTE1Nyw2ICsxNTcsOCBAQCBwdWJsaWM6CiAgICAgLy8g
dGhlIHNhbWUgdGhpbmcgYXMgbXV0YWJsZVJlY3RCYXNlZFRlc3RSZXN1bHQoKSwgYnV0IGhlcmUg
dGhlIHJldHVybiB2YWx1ZSBpcyBjb25zdC4KICAgICBjb25zdCBOb2RlU2V0JiByZWN0QmFzZWRU
ZXN0UmVzdWx0KCkgY29uc3Q7CiAKKyAgICBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBOb2RlU2V0JiBtdXRhYmxlUmVjdEJhc2Vk
VGVzdFJlc3VsdCgpOyAvLyBTZWUgYWJvdmUuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVUZXh0Qm94LmNwcAppbmRleCAxMWI3MDU1OWRhNjM0MzQ3NGQ3NTBjMmVhNDdhNjA1OWVm
NWE2ZDY2Li45ZTczMWQ2Mzg2ZGM3YTNiMzkxY2YyODk0NDMzYjA4YmQzY2NhYjEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0xMDMwLDcgKzEwMzAs
OCBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RG9jdW1lbnRNYXJrZXIoR3JhcGhpY3NDb250
ZXh0KiBwdCwgY29uc3QgRmxvYXRQb2ludCYgYgogICAgIGlmIChtX3RydW5jYXRpb24gIT0gY05v
VHJ1bmNhdGlvbikKICAgICAgICAgbWFya2VyU3BhbnNXaG9sZUJveCA9IGZhbHNlOwogCi0gICAg
aWYgKCFtYXJrZXJTcGFuc1dob2xlQm94IHx8IGdyYW1tYXIpIHsKKyAgICBib29sIGlzRGljdGF0
aW9uTWFya2VyID0gbWFya2VyLT50eXBlKCkgPT0gRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvbkFs
dGVybmF0aXZlczsKKyAgICBpZiAoIW1hcmtlclNwYW5zV2hvbGVCb3ggfHwgZ3JhbW1hciB8fCBp
c0RpY3RhdGlvbk1hcmtlcikgewogICAgICAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IG1heDxpbnQ+
KG1hcmtlci0+c3RhcnRPZmZzZXQoKSAtIG1fc3RhcnQsIDApOwogICAgICAgICBpbnQgZW5kUG9z
aXRpb24gPSBtaW48aW50PihtYXJrZXItPmVuZE9mZnNldCgpIC0gbV9zdGFydCwgbV9sZW4pOwog
ICAgICAgICAKQEAgLTEwNTAsNyArMTA1MSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRE
b2N1bWVudE1hcmtlcihHcmFwaGljc0NvbnRleHQqIHB0LCBjb25zdCBGbG9hdFBvaW50JiBiCiAg
ICAgICAgIAogICAgICAgICAvLyBTdG9yZSByZW5kZXJlZCByZWN0cyBmb3IgYmFkIGdyYW1tYXIg
bWFya2Vycywgc28gd2UgY2FuIGhpdC10ZXN0IGFnYWluc3QgaXQgZWxzZXdoZXJlIGluIG9yZGVy
IHRvCiAgICAgICAgIC8vIGRpc3BsYXkgYSB0b29sVGlwLiBXZSBkb24ndCBkbyB0aGlzIGZvciBt
aXNzcGVsbGluZyBtYXJrZXJzLgotICAgICAgICBpZiAoZ3JhbW1hcikgeworICAgICAgICBpZiAo
Z3JhbW1hciB8fCBpc0RpY3RhdGlvbk1hcmtlcikgewogICAgICAgICAgICAgbWFya2VyUmVjdC5t
b3ZlKC1ib3hPcmlnaW4ueCgpLCAtYm94T3JpZ2luLnkoKSk7CiAgICAgICAgICAgICBtYXJrZXJS
ZWN0ID0gcmVuZGVyZXIoKS0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QobWFya2VyUmVj
dCkpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7CiAgICAgICAgICAgICB0b1JlbmRlcmVkRG9jdW1l
bnRNYXJrZXIobWFya2VyKS0+c2V0UmVuZGVyZWRSZWN0KG1hcmtlclJlY3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tCmluZGV4
IDY1ODNjZWU2NjIxMTEwNzZjMWUwMjQ3MjZlZWNiYjBhOGY1NDA3OTAuLjc3MTkxMGI0YmM1MDFl
NDgzODBjZGI4M2UwM2JmNmUyM2Y1MWFjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0KQEAgLTI1LDcgKzI1LDYgQEAKICNp
bXBvcnQgIkNvcnJlY3Rpb25QYW5lbC5oIgogCiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIK
LSNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCiAKICNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFO
RUwpCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTM5LDYgKzM4LDkgQEAgc3RhdGljIGlu
bGluZSBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlIGNvcnJlY3Rpb25JbmRpY2F0b3JUeXBlKEFs
dGVybmF0aXZlVGV4dFQKICAgICAgICAgcmV0dXJuIE5TQ29ycmVjdGlvbkluZGljYXRvclR5cGVS
ZXZlcnNpb247CiAgICAgY2FzZSBBbHRlcm5hdGl2ZVRleHRUeXBlU3BlbGxpbmdTdWdnZXN0aW9u
czoKICAgICAgICAgcmV0dXJuIE5TQ29ycmVjdGlvbkluZGljYXRvclR5cGVHdWVzc2VzOworICAg
IGNhc2UgQWx0ZXJuYXRpdmVUZXh0VHlwZURpY3RhdGlvbkFsdGVybmF0aXZlczoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gTlNDb3JyZWN0aW9uSW5kaWNhdG9yVHlwZURlZmF1
bHQ7CkBAIC0xMzEsNyArMTMzLDcgQEAgdm9pZCBDb3JyZWN0aW9uUGFuZWw6OmhhbmRsZUFjY2Vw
dGVkUmVwbGFjZW1lbnQoTlNTdHJpbmcqIGFjY2VwdGVkUmVwbGFjZW1lbnQsIE4KICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIAotICAgIFttX3ZpZXcuZ2V0KCkgaGFuZGxlQ29ycmVjdGlvblBh
bmVsUmVzdWx0OmFjY2VwdGVkUmVwbGFjZW1lbnRdOworICAgIFttX3ZpZXcuZ2V0KCkgaGFuZGxl
QWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6YWNjZXB0ZWRSZXBsYWNlbWVudF07CiAgICAgbV92aWV3
LmNsZWFyKCk7CiAgICAgaWYgKGFjY2VwdGVkUmVwbGFjZW1lbnQpCiAgICAgICAgIG1fcmVzdWx0
Rm9yRGlzbWlzc2FsLmFkb3B0TlMoW2FjY2VwdGVkUmVwbGFjZW1lbnQgY29weV0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQuaAppbmRleCA1ZTY2YWNhZjdiNzFhZTc0ZWNmZGQyYjRlNzIxZDkzZmQ4Y2Nm
YzdkLi5iYzRlYzQ3MjM4NWQ1NjYzYTBlMDZiNmE4ZGY1NGE4NWM5NmZjZDc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQuaApAQCAtMzcsMTAgKzM3LDE4IEBAIHB1YmxpYzoKICAgICBXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQoV2ViVmlldyAqKTsKICAgICB2aXJ0dWFsIH5XZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpIE9WRVJSSURFOwor
I2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJl
Y3Rpb25BbHRlcm5hdGl2ZShXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5n
JiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0FsdGVybmF0aXZlKFdlYkNvcmU6OlJlYXNvbkZvckRp
c21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGRp
c21pc3NBbHRlcm5hdGl2ZVNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0
aXZlVGV4dCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9u
UmVzcG9uc2UoV2ViQ29yZTo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpIE9WRVJS
SURFOworI2VuZGlmCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgdmlydHVh
bCB2b2lkIHNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJ
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZl
cyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFZlY3Rv
cjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0
KSBPVkVSUklERTsKKyNlbmRpZgogcHJpdmF0ZToKICAgICBXZWJWaWV3KiBtX3dlYlZpZXc7CiAj
aWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tCmluZGV4
IGYxYTcwZmM1NDNjNmM1YzdhODIxMWU1N2M1MDlhOThiYjAwZmZkY2YuLjRkNzg5ZDNjMGQ4ODli
MGNhNjhkZmExYTI5ZTU1NWYwMzQwZmFiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0KQEAg
LTI1LDYgKzI1LDggQEAKIAogI2luY2x1ZGUgIldlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIgog
CisjaW5jbHVkZSAiV2ViVmlld0ludGVybmFsLmgiCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudChX
ZWJWaWV3KiB3ZWJWaWV3KQpAQCAtNDQsMzMgKzQ2LDQ3IEBAIHZvaWQgV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50OjpwYWdlRGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAorI2lmIFVT
RShBVVRPQ09SUkVDVElPTl9QQU5FTCkKIHZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Ojpz
aG93Q29ycmVjdGlvbkFsdGVybmF0aXZlKEFsdGVybmF0aXZlVGV4dFR5cGUgdHlwZSwgY29uc3Qg
RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykKIHsKLSNpZiBVU0UoQVVU
T0NPUlJFQ1RJT05fUEFORUwpCiAgICAgbV9jb3JyZWN0aW9uUGFuZWwuc2hvdyhtX3dlYlZpZXcs
IHR5cGUsIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgcmVwbGFjZWRTdHJpbmcsIHJlcGxh
Y2VtZW50U3RyaW5nLCBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7Ci0jZW5kaWYKIH0K
IAogdm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NBbHRlcm5hdGl2ZShSZWFz
b25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0IHJlYXNvbikKIHsKLSNpZiBVU0UoQVVUT0NP
UlJFQ1RJT05fUEFORUwpCiAgICAgbV9jb3JyZWN0aW9uUGFuZWwuZGlzbWlzcyhyZWFzb24pOwot
I2VuZGlmCiB9CiAKIFN0cmluZyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NBbHRl
cm5hdGl2ZVNvb24oUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCByZWFzb24pCiB7
Ci0jaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogICAgIHJldHVybiBtX2NvcnJlY3Rpb25Q
YW5lbC5kaXNtaXNzKHJlYXNvbik7Ci0jZWxzZQotcmV0dXJuIFN0cmluZygpOwotI2VuZGlmCiB9
CiAKIHZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZWNvcmRBdXRvY29ycmVjdGlvblJl
c3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3Ry
aW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKIHsK
LSNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgTlNDb3JyZWN0aW9uUmVzcG9uc2Ug
cmVzcG9uc2UgPSByZXNwb25zZVR5cGUgPT0gQXV0b2NvcnJlY3Rpb25SZXZlcnRlZCA/IE5TQ29y
cmVjdGlvblJlc3BvbnNlUmV2ZXJ0ZWQgOiBOU0NvcnJlY3Rpb25SZXNwb25zZUVkaXRlZDsKLUNv
cnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShtX3dlYlZpZXcsIHJl
c3BvbnNlLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpOworICAgIENvcnJlY3Rp
b25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShtX3dlYlZpZXcsIHJlc3BvbnNl
LCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpOworfQogI2VuZGlmCisKKyNpZiBV
U0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKK3ZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
OjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkK
K3sKKyAgICBbbV93ZWJWaWV3IF9yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6ZGljdGF0aW9u
Q29udGV4dF07Cit9CisKK3ZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpzaG93RGljdGF0
aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZE
aWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgW21fd2ViVmll
dyBfc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUk6Ym91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCBm
b3JEaWN0YXRpb25Db250ZXh0OmRpY3RhdGlvbkNvbnRleHRdOwogfQorCit2b2lkIFdlYkFsdGVy
bmF0aXZlVGV4dENsaWVudDo6ZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoKQoreworICAg
IFttX3dlYlZpZXcgX2Rpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJXTsKK30KKworVmVjdG9y
PFN0cmluZz4gV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMo
dWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICByZXR1cm4gW21fd2ViVmlldyBfZGlj
dGF0aW9uQWx0ZXJuYXRpdmVzOmRpY3RhdGlvbkNvbnRleHRdOworfQorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCAxN2QzMDkzY2QwYmVjZWQzYTcy
Zjc5NWE0ZWNlZGQ5YWE2ZjA3ZWE4Li5mMDI0MzkwZWUxZTVlNmM2ODZlMmUwNjUwYmM2OTZiNzhj
NTI4YmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTEx
Myw2ICsxMTMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TaW1wbGVGb250RGF0YS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TdHlsZVByb3BlcnR5U2V0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHQuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkZvbnRDYWNo
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaD4KQEAg
LTU2MDMsNyArNTYwNCw3IEBAIHN0YXRpYyBDR1BvaW50IGNvcmVHcmFwaGljc1NjcmVlblBvaW50
Rm9yQXBwS2l0U2NyZWVuUG9pbnQoTlNQb2ludCBwb2ludCkKICAgICBpZiAoIXZhbGlkQXR0cmli
dXRlcykgewogICAgICAgICB2YWxpZEF0dHJpYnV0ZXMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRX
aXRoT2JqZWN0czoKICAgICAgICAgICAgIE5TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lLCBO
U1VuZGVybGluZUNvbG9yQXR0cmlidXRlTmFtZSwKLSAgICAgICAgICAgIE5TTWFya2VkQ2xhdXNl
U2VnbWVudEF0dHJpYnV0ZU5hbWUsIE5TVGV4dElucHV0UmVwbGFjZW1lbnRSYW5nZUF0dHJpYnV0
ZU5hbWUsIG5pbF07CisgICAgICAgICAgICBOU01hcmtlZENsYXVzZVNlZ21lbnRBdHRyaWJ1dGVO
YW1lLCBOU1RleHRJbnB1dFJlcGxhY2VtZW50UmFuZ2VBdHRyaWJ1dGVOYW1lLCBOU1RleHRBbHRl
cm5hdGl2ZXNBdHRyaWJ1dGVOYW1lLCBuaWxdOwogICAgICAgICAvLyBOU1RleHQgYWxzbyBzdXBw
b3J0cyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMsIGJ1dCBpdCdzCiAgICAgICAgIC8vIGhhcmQg
dG8gdGVsbCB3aGljaCBhcmUgcmVhbGx5IHJlcXVpcmVkIGZvciB0ZXh0IGlucHV0IHRvCiAgICAg
ICAgIC8vIHdvcmsgd2VsbDsgSSBoYXZlIG5vdCBzZWVuIGFueSBpbnB1dCBtZXRob2QgbWFrZSB1
c2Ugb2YgdGhlbSB5ZXQuCkBAIC01OTIzLDcgKzU5MjQsMTQgQEAgc3RhdGljIHZvaWQgZXh0cmFj
dFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlv
blVuZGUKICAgICBOU1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UgPSB7IE5TTm90Rm91bmQsIDAgfTsK
ICAgICBib29sIGlzRnJvbUlucHV0TWV0aG9kID0gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRp
dG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7CiAKKyAgICBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRp
dmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zOwogICAgIGlmIChpc0F0dHJpYnV0ZWRT
dHJpbmcpIHsKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICAgICAgVmVjdG9y
PFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4gdGV4dEFsdGVybmF0aXZlczsKKyAg
ICAgICAgY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXMoc3RyaW5nLCB0ZXh0QWx0ZXJu
YXRpdmVzKTsKKyAgICAgICAgaWYgKCF0ZXh0QWx0ZXJuYXRpdmVzLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIFtbc2VsZiBfd2ViVmlld10gX2dldFdlYkNvcmVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6
ZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMgZnJvbVRleHRBbHRlcm5hdGl2ZXM6dGV4dEFs
dGVybmF0aXZlc107CisjZW5kaWYKICAgICAgICAgLy8gRklYTUU6IFdlIGlnbm9yZSBtb3N0IGF0
dHJpYnV0ZXMgZnJvbSB0aGUgc3RyaW5nLCBzbyBmb3IgZXhhbXBsZSBpbnNlcnRpbmcgZnJvbSBD
aGFyYWN0ZXIgUGFsZXR0ZSBsb3NlcyBmb250IGFuZCBnbHlwaCB2YXJpYXRpb24gZGF0YS4KICAg
ICAgICAgLy8gSXQgZG9lcyBub3QgbG9vayBsaWtlIGFueSBpbnB1dCBtZXRob2RzIGV2ZXIgdXNl
IGluc2VydFRleHQ6IHdpdGggYXR0cmlidXRlcyBvdGhlciB0aGFuIE5TVGV4dElucHV0UmVwbGFj
ZW1lbnRSYW5nZUF0dHJpYnV0ZU5hbWUuCiAgICAgICAgIHRleHQgPSBbc3RyaW5nIHN0cmluZ107
CkBAIC01OTYyLDcgKzU5NzAsMTEgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNB
dHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUKICAgICBpZiAo
IWNvcmVGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkpIHsKICAgICAgICAgLy8gQW4g
aW5zZXJ0VGV4dDogbWlnaHQgYmUgaGFuZGxlZCBieSBvdGhlciByZXNwb25kZXJzIGluIHRoZSBj
aGFpbiBpZiB3ZSBkb24ndCBoYW5kbGUgaXQuCiAgICAgICAgIC8vIE9uZSBleGFtcGxlIGlzIHNw
YWNlIGJhciB0aGF0IHJlc3VsdHMgaW4gc2Nyb2xsaW5nIGRvd24gdGhlIHBhZ2UuCi0gICAgICAg
IGV2ZW50SGFuZGxlZCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoZXZlbnRUZXh0
LCBldmVudCk7CisKKyAgICAgICAgaWYgKCFkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucy5p
c0VtcHR5KCkpCisgICAgICAgICAgICBldmVudEhhbmRsZWQgPSBjb3JlRnJhbWUtPmVkaXRvcigp
LT5pbnNlcnREaWN0YXRlZFRleHQoZXZlbnRUZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0
aW9ucywgZXZlbnQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBldmVudEhhbmRsZWQgPSBj
b3JlRnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGV2ZW50VGV4dCwgZXZlbnQpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIGV2ZW50SGFuZGxlZCA9IHRydWU7CiAgICAgICAgIGNvcmVGcmFtZS0+
ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbihldmVudFRleHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCmluZGV4IGM5MzgyM2EzOTQwY2E4NjZmZGFjNjZlOWQwNTgxYWRmZTY3
MGZlNDMuLjc5NzZmYjA2ZTAwZTUyOWU3YjJkM2QyZGFiNWI2YTcyM2MzY2Q2YzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTExMSw2ICsxMTEsNyBAQAogI2ltcG9ydCA8
SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNWYWx1
ZVJlZi5oPgogI2ltcG9ydCA8V2ViQ29yZS9BYnN0cmFjdERhdGFiYXNlLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9CYWNrRm9yd2FyZExp
c3RJbXBsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CkBAIC01NTM2LDE2ICs1
NTM3LDYgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVl
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBqc1ZhbHUKIAogI2VuZGlmCiAKLSNpZiAhZGVmaW5l
ZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BB
UkQpCi0tICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDooTlNTdHJpbmcqKXJlc3Vs
dAotewotICAgIFdlYkZyYW1lICp3ZWJGcmFtZSA9IFtzZWxmIF9zZWxlY3RlZE9yTWFpbkZyYW1l
XTsKLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh3ZWJGcmFtZSk7Ci0gICAgaWYgKGNvcmVG
cmFtZSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+aGFuZGxlQWx0ZXJuYXRpdmVUZXh0
VUlSZXN1bHQocmVzdWx0KTsKLX0KLSNlbmRpZgotCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBX
ZWJWaWV3IChXZWJWaWV3VW5kb2FibGVFZGl0aW5nKQpAQCAtNjQxMCw2ICs2NDAxLDQ4IEBAIHN0
YXRpYyB2b2lkIGdsaWJDb250ZXh0SXRlcmF0aW9uQ2FsbGJhY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJS
ZWYsIENGUnVuTG9vcEFjdGl2aXR5CiB9CiAjZW5kaWYKIAorI2lmIFVTRShBVVRPQ09SUkVDVElP
Tl9QQU5FTCkKKy0gKHZvaWQpaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6KE5TU3RyaW5n
Kil0ZXh0Cit7CisgICAgV2ViRnJhbWUgKndlYkZyYW1lID0gW3NlbGYgX3NlbGVjdGVkT3JNYWlu
RnJhbWVdOworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHdlYkZyYW1lKTsKKyAgICBpZiAo
Y29yZUZyYW1lKQorICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5oYW5kbGVBbHRlcm5hdGl2
ZVRleHRVSVJlc3VsdCh0ZXh0KTsKK30KKworLSAodm9pZClfZ2V0V2ViQ29yZURpY3RhdGlvbkFs
dGVybmF0aXZlczooVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiYpYWx0ZXJuYXRpdmVzIGZy
b21UZXh0QWx0ZXJuYXRpdmVzOihjb25zdCBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdl
PiYpYWx0ZXJuYXRpdmVzV2l0aFJhbmdlCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBh
bHRlcm5hdGl2ZXNXaXRoUmFuZ2Uuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgVGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlJiBhbHRlcm5hdGl2ZVdpdGhSYW5nZSA9IGFsdGVybmF0aXZlc1dp
dGhSYW5nZVtpXTsKKyAgICAgICAgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCA9IF9wcml2YXRl
LT5tX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+YWRkQWx0ZXJuYXRpdmVzKGFsdGVybmF0
aXZlV2l0aFJhbmdlLmFsdGVybmF0aXZlcyk7CisgICAgICAgIGlmIChkaWN0YXRpb25Db250ZXh0
KQorICAgICAgICAgICAgYWx0ZXJuYXRpdmVzLmFwcGVuZChEaWN0YXRpb25BbHRlcm5hdGl2ZShh
bHRlcm5hdGl2ZVdpdGhSYW5nZS5yYW5nZS5sb2NhdGlvbiwgYWx0ZXJuYXRpdmVXaXRoUmFuZ2Uu
cmFuZ2UubGVuZ3RoLCBkaWN0YXRpb25Db250ZXh0KSk7CisgICAgfQorfQorCistICh2b2lkKV9z
aG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSTooY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jilib3Vu
ZGluZ0JveE9mRGljdGF0ZWRUZXh0IGZvckRpY3RhdGlvbkNvbnRleHQ6KHVpbnQ2NF90KWRpY3Rh
dGlvbkNvbnRleHQKK3sKKyAgICBfcHJpdmF0ZS0+bV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXItPnNob3dBbHRlcm5hdGl2ZXMoc2VsZiwgW3NlbGYgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3
OmJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHRdLCBkaWN0YXRpb25Db250ZXh0LCBeKE5TU3RyaW5n
KiBhY2NlcHRlZEFsdGVybmF0aXZlKSB7CisgICAgICAgIFtzZWxmIGhhbmRsZUFjY2VwdGVkQWx0
ZXJuYXRpdmVUZXh0OmFjY2VwdGVkQWx0ZXJuYXRpdmVdOworICAgIH0pOworfQorCistICh2b2lk
KV9kaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSQoreworICAgIF9wcml2YXRlLT5tX2FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci0+ZGlzbWlzc0FsdGVybmF0aXZlcygpOworfQorCistICh2
b2lkKV9yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6KHVpbnQ2NF90KWRpY3RhdGlvbkNvbnRl
eHQKK3sKKyAgICBfcHJpdmF0ZS0+bV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPnJlbW92
ZUFsdGVybmF0aXZlcyhkaWN0YXRpb25Db250ZXh0KTsKK30KKworLSAoVmVjdG9yPFN0cmluZz4p
X2RpY3RhdGlvbkFsdGVybmF0aXZlczoodWludDY0X3QpZGljdGF0aW9uQ29udGV4dAoreworICAg
IHJldHVybiBfcHJpdmF0ZS0+bV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmFsdGVybmF0
aXZlc0ZvckNvbnRleHQoZGljdGF0aW9uQ29udGV4dCk7Cit9CisjZW5kaWYKKwogLSAoTlNQb2lu
dClfY29udmVydFBvaW50RnJvbVJvb3RWaWV3OihOU1BvaW50KXBvaW50CiB7CiAgICAgcmV0dXJu
IE5TTWFrZVBvaW50KHBvaW50LngsIFtzZWxmIGJvdW5kc10uc2l6ZS5oZWlnaHQgLSBwb2ludC55
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaCBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAppbmRleCBlYTJiZmNmNjA3
NGU5YTUxMWMzYzNlYWUyZGI0ZmY1ZTVlYzNjNGY2Li4yYWQ0MjAwZDc0NDVhOGY4ZmU0ZDkwZTIw
MjFhYThhMTY3OGQwMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXdEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5o
CkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKICNpbXBv
cnQgIldlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgiCisjaW1wb3J0IDxXZWJDb3Jl
L0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9MYXllckZsdXNoU2No
ZWR1bGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xheWVyRmx1c2hTY2hlZHVsZXJDbGllbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TdHJpbmcuaD4KQEAgLTM4LDggKzM5LDkgQEAKICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNz
IEhpc3RvcnlJdGVtOwotICAgIGNsYXNzIFBhZ2U7CitjbGFzcyBBbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXI7CitjbGFzcyBIaXN0b3J5SXRlbTsKK2NsYXNzIFBhZ2U7CiB9CiAKIEBjbGFzcyBX
ZWJJbnNwZWN0b3I7CkBAIC0yMDAsNSArMjAyLDkgQEAgcHJpdmF0ZToKICAgICBpbnQgdmFsaWRh
dGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb247CiAKICAgICBmbG9hdCBjdXN0b21EZXZpY2VT
Y2FsZUZhY3RvcjsKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIE93blB0
cjxXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+IG1fYWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyOworI2VuZGlmCiB9CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3RGF0YS5tbQppbmRleCAwYjgxMTdhMDk3MDZkNWI2ZWM0ZTY0NTdjMzM5OGU0NzYyNmM1
OGJhLi5lMjc2NmYwMWEzNWJjMDdlZWFhNDg2YzI2NTViNGMwMWJhZWQ5N2E2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KQEAgLTMxLDYgKzMxLDcgQEAKIAogI2lt
cG9ydCAiV2ViS2l0TG9nZ2luZy5oIgogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZUtleXNQcml2YXRl
LmgiCisjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IaXN0
b3J5SXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW5Mb29wLmg+CkBAIC0xMDAsNiArMTAxLDEw
IEBAIExheWVyRmx1c2hDb250cm9sbGVyOjpMYXllckZsdXNoQ29udHJvbGxlcihXZWJWaWV3KiB3
ZWJWaWV3KQogCiAgICAgcGx1Z2luRGF0YWJhc2VDbGllbnRDb3VudCsrOwogCisjaWYgVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIg
PSBhZG9wdFB0cihuZXcgV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKTsKKyNl
bmRpZgorCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDAyY2M1NTAxMDZiMDQ0ZmJjMTc3YzlmNTlhMWY4M2Y1
OTBkZTUwYjAuLmMwNTI1NzQyZWMzYmJiY2ZhYzkzYmM4YzA5ODBhNmViOTA3OWY2MmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtMzQsMjAgKzM0
LDI2IEBACiAjaW1wb3J0ICJXZWJUeXBlc0ludGVybmFsLmgiCiAKICNpZmRlZiBfX2NwbHVzcGx1
cworI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRmluZE9wdGlvbnMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW1w
b3J0IDxXZWJDb3JlL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaD4KIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xh
c3MgRWxlbWVudDsKLSAgICBjbGFzcyBGcmFtZTsKLSAgICBjbGFzcyBIaXN0b3J5SXRlbTsKLSAg
ICBjbGFzcyBLVVJMOwotICAgIGNsYXNzIEtleWJvYXJkRXZlbnQ7Ci0gICAgY2xhc3MgUGFnZTsK
LSAgICBjbGFzcyBSZW5kZXJCb3g7Ci0gICAgY2xhc3MgTm9kZTsKK2NsYXNzIEVsZW1lbnQ7Citj
bGFzcyBFdmVudDsKK2NsYXNzIEZyYW1lOworY2xhc3MgSGlzdG9yeUl0ZW07CitjbGFzcyBLVVJM
OworY2xhc3MgS2V5Ym9hcmRFdmVudDsKK2NsYXNzIFBhZ2U7CitjbGFzcyBSZW5kZXJCb3g7Citj
bGFzcyBOb2RlOworc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOwogfQogI2VuZGlmCiAKQEAg
LTU5LDYgKzY1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV2ViQ29yZTo6RmluZE9wdGlv
bnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMgb3B0aW9ucyk7CiAKKyNpZiBVU0UoRElDVEFU
SU9OX0FMVEVSTkFUSVZFUykKK09CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOworI2VuZGlm
CisKIEBpbnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld0VkaXRpbmdFeHRyYXMpCiAtIChCT09MKV9z
aG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihET01SYW5nZSAqKWN1cnJlbnRSYW5nZSB0b0RP
TVJhbmdlOihET01SYW5nZSAqKXByb3Bvc2VkUmFuZ2UgYWZmaW5pdHk6KE5TU2VsZWN0aW9uQWZm
aW5pdHkpc2VsZWN0aW9uQWZmaW5pdHkgc3RpbGxTZWxlY3Rpbmc6KEJPT0wpZmxhZzsKIEBlbmQK
QEAgLTk1LDYgKzEwNSwxOCBAQCBXZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlT3B0aW9ucyhXZWJG
aW5kT3B0aW9ucyBvcHRpb25zKTsKIC0gKHZvaWQpX3NjaGVkdWxlR2xpYkNvbnRleHRJdGVyYXRp
b25zOwogI2VuZGlmCiAKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCistICh2b2lkKWhh
bmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0OihOU1N0cmluZyopdGV4dDsKKyNlbmRpZgorCisj
aWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCistICh2b2lkKV9nZXRXZWJDb3JlRGljdGF0
aW9uQWx0ZXJuYXRpdmVzOihWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+Jilh
bHRlcm5hdGl2ZXMgZnJvbVRleHRBbHRlcm5hdGl2ZXM6KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JilhbHRlcm5hdGl2ZXNXaXRoUmFuZ2U7CistICh2b2lk
KV9zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSTooY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jili
b3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0IGZvckRpY3RhdGlvbkNvbnRleHQ6KHVpbnQ2NF90KWRp
Y3RhdGlvbkNvbnRleHQ7CistICh2b2lkKV9kaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSTsK
Ky0gKHZvaWQpX3JlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlczoodWludDY0X3QpZGljdGF0aW9u
Q29udGV4dDsKKy0gKFZlY3RvcjxTdHJpbmc+KV9kaWN0YXRpb25BbHRlcm5hdGl2ZXM6KHVpbnQ2
NF90KWRpY3RhdGlvbkNvbnRleHQ7CisjZW5kaWYKKwogQGVuZAogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRleCAwMmY3YmNjNDU2N2Q3NjVj
N2JkM2E0MzRmMjU3MjZhNjEwM2UzMTMwLi44Mjg5YjEyYzE4OGJlZGFmMDUxMDQ2ZmE2ODIyMjc1
MmVlOThkZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5o
CkBAIC02ODcsOSArNjg3LDYgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAt
ICh2b2lkKXNldEF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ6KEJPT0wpZmxhZzsK
IC0gKHZvaWQpdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uOihpZClzZW5kZXI7CiAj
ZW5kaWYKLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlM
RElOR19PTl9TTk9XX0xFT1BBUkQpCi0tICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3Vs
dDooTlNTdHJpbmcqKXJlc3VsdDsKLSNlbmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIFdlYlZpZXcg
KFdlYlZpZXdFZGl0aW5nSW5NYWlsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtVHlwZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS0NvbnRleHRNZW51SXRlbVR5cGVzLmgKaW5kZXggYTM1MzZkOTZkN2YzZjkyY2MzZjk0
ODBjMmY5ZTMwNzIxOTUxZDAzOS4uYjMyNjc5NGRlODcwOWM0N2UyOGRkODgxN2UzNDk1MzExZThm
ODJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1l
bnVJdGVtVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tDb250ZXh0
TWVudUl0ZW1UeXBlcy5oCkBAIC04OCw2ICs4OCw3IEBAIGVudW0gewogICAgIGtXS0NvbnRleHRN
ZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0LAogICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ1BERlNpbmds
ZVBhZ2VTY3JvbGxpbmcsCiAgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnUERGRmFjaW5nUGFnZXNT
Y3JvbGxpbmcsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnRGljdGF0aW9uQWx0ZXJuYXRpdmUs
CiAgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQsCiAgICAga1dLQ29udGV4
dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUsCiAgICAga1dLQ29udGV4dE1lbnVJdGVtVGFn
VGV4dERpcmVjdGlvbkRlZmF1bHQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tTaGFyZWRBUElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tT
aGFyZWRBUElDYXN0LmgKaW5kZXggNWU0YmY2OWZmYjY3MmRlOWNlNmRlNGRhMDYyZTg4MzdkZjFl
YzIxYi4uZmQxYTg5Njc1YTZkMDNiMTlkNDhlYWRjNWY5NzVkOTExMjk2YzM3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaApAQCAtNDE0LDYgKzQx
NCw4IEBAIGlubGluZSBXS0NvbnRleHRNZW51SXRlbVRhZyB0b0FQSShXZWJDb3JlOjpDb250ZXh0
TWVudUFjdGlvbiBhY3Rpb24pCiAgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdQ
REZTaW5nbGVQYWdlU2Nyb2xsaW5nOwogICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnUERGRmFjaW5nUGFnZXNTY3JvbGxpbmc6CiAgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVu
dUl0ZW1UYWdQREZGYWNpbmdQYWdlc1Njcm9sbGluZzsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ0RpY3RhdGlvbkFsdGVybmF0aXZlOgorICAgICAgICByZXR1cm4ga1dLQ29u
dGV4dE1lbnVJdGVtVGFnRGljdGF0aW9uQWx0ZXJuYXRpdmU7CiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKICAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50Ogog
ICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQ7CkBAIC01
OTIsNiArNTk0LDggQEAgaW5saW5lIFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIHRvSW1wbChX
S0NvbnRleHRNZW51SXRlbVRhZyB0YWcpCiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdQREZTaW5nbGVQYWdlU2Nyb2xsaW5nOwogICAgIGNhc2Uga1dLQ29udGV4dE1l
bnVJdGVtVGFnUERGRmFjaW5nUGFnZXNTY3JvbGxpbmc6CiAgICAgICAgIHJldHVybiBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdQREZGYWNpbmdQYWdlc1Njcm9sbGluZzsKKyAgICBjYXNlIGtX
S0NvbnRleHRNZW51SXRlbVRhZ0RpY3RhdGlvbkFsdGVybmF0aXZlOgorICAgICAgICByZXR1cm4g
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnRGljdGF0aW9uQWx0ZXJuYXRpdmU7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKICAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVt
ZW50OgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVs
ZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCmluZGV4IDNjYjU3YjAxMzMyZGZkOWQxY2EzNDQxZmQ2ZWQ1M2I4ODJlNmM3NWUuLjU0MmZk
M2ZmOGM3MjQ5MDBmMWZmNjc3M2Y4YjVlYzY0ZTUzZmQ5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3Iu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlRGV0YWlscy5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdTZXNzaW9u
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVD
aG9vc2VyLmg+CkBAIC01MjUsNiArNTI2LDI0IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxEYXRhYmFz
ZURldGFpbHM+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBEYXRhYmFzZURlCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxEaWN0YXRpb25BbHRlcm5h
dGl2ZT46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IERpY3RhdGlvbkFs
dGVybmF0aXZlJiBkaWN0YXRpb25BbHRlcm5hdGl2ZSkKK3sKKyAgICBlbmNvZGVyLT5lbmNvZGUo
ZGljdGF0aW9uQWx0ZXJuYXRpdmUucmFuZ2VTdGFydCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGRp
Y3RhdGlvbkFsdGVybmF0aXZlLnJhbmdlTGVuZ3RoKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoZGlj
dGF0aW9uQWx0ZXJuYXRpdmUuZGljdGF0aW9uQ29udGV4dCk7Cit9CisKK2Jvb2wgQXJndW1lbnRD
b2RlcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29k
ZXIsIERpY3RhdGlvbkFsdGVybmF0aXZlJiBkaWN0YXRpb25BbHRlcm5hdGl2ZSkKK3sKKyAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShkaWN0YXRpb25BbHRlcm5hdGl2ZS5yYW5nZVN0YXJ0KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRpY3RhdGlvbkFs
dGVybmF0aXZlLnJhbmdlTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKGRpY3RhdGlvbkFsdGVybmF0aXZlLmRpY3RhdGlvbkNvbnRleHQpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIAogdm9pZCBBcmd1
bWVudENvZGVyPEZpbGVDaG9vc2VyU2V0dGluZ3M+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBl
bmNvZGVyLCBjb25zdCBGaWxlQ2hvb3NlclNldHRpbmdzJiBzZXR0aW5ncykKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAyNjk3NDA4ZWQ1
NmVkNmQxMzYzZjg0M2E2MjA0ZmI5NzQwYzY5Mjg1Li5kYjJiOGY3NDFlYzJhMzFhY2JkYzEyN2M0
MTcxZjljYjM3ZDQ1OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCkBAIC01MCw2ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKICAgICBz
dHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmU7CisgICAgc3RydWN0IERpY3RhdGlvbkFsdGVybmF0
aXZlOwogICAgIHN0cnVjdCBEcmFnU2Vzc2lvbjsKICAgICBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0
aW5nczsKICAgICBzdHJ1Y3QgR3JhbW1hckRldGFpbDsKQEAgLTIwOSw2ICsyMTAsMTEgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpEYXRhYmFzZURldGFpbHM+IHsK
ICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6RGF0YWJh
c2VEZXRhaWxzJik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3Vt
ZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlJik7CisgICAg
c3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkRpY3RhdGlvbkFs
dGVybmF0aXZlJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkZpbGVDaG9vc2VyU2V0dGluZ3M+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1l
bnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOwogICAgIHN0
YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNl
dHRpbmdzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9Q
YWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNs
aWVudEltcGwuaAppbmRleCAxNDI4OGZmZWUwOGY2ZDkzYTg0NjBkZjZmMjhlNGYzZGEwMzQ2MWNk
Li4zOWE2NWY1NzdjNDgwNjM0NDk2ZWQ2MzAyYzIxN2FlMDAxYTA5OGQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTMzLDgg
KzMzLDExIEBACiBAY2xhc3MgV0tFZGl0b3JVbmRvVGFyZ2V0T2JqQzsKIEBjbGFzcyBXS1ZpZXc7
CiAKLW5hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyOworfQogCituYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEZp
bmRJbmRpY2F0b3JXaW5kb3c7CiAKIGNsYXNzIFBhZ2VDbGllbnRJbXBsIDogcHVibGljIFBhZ2VD
bGllbnQgewpAQCAtMTI5LDExICsxMzIsMjIgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgV0tW
aWV3KiB3a1ZpZXcoKSBjb25zdCB7IHJldHVybiBtX3drVmlldzsgfQogCisjaWYgVVNFKERJQ1RB
VElPTl9BTFRFUk5BVElWRVMpCisgICAgdmlydHVhbCB1aW50NjRfdCBhZGREaWN0YXRpb25BbHRl
cm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNv
bnRleHQpOworICAgIHZpcnR1YWwgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90
IGRpY3RhdGlvbkNvbnRleHQpOworICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzRGljdGF0aW9uQWx0
ZXJuYXRpdmVVSSgpOworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJu
YXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOworI2VuZGlmCisKICAgICBXS1ZpZXcq
IG1fd2tWaWV3OwogICAgIFJldGFpblB0cjxXS0VkaXRvclVuZG9UYXJnZXRPYmpDPiBtX3VuZG9U
YXJnZXQ7CiAjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogICAgIENvcnJlY3Rpb25QYW5l
bCBtX2NvcnJlY3Rpb25QYW5lbDsKICNlbmRpZgorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQorICAgIE93blB0cjxXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+IG1f
YWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1Bh
Z2VDbGllbnRJbXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNs
aWVudEltcGwubW0KaW5kZXggYWE3ZTUzODA3NzVkNmQ4MTk4NWM0ZjgzMDYzYWRmNjdjN2U3OTdl
Mi4uNmExMDgwOGY2YjcwN2U3ZDIyMzk5OWUyOTZjYTM1NjhhYWNlZWQyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAgLTI2
LDYgKzI2LDkgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUGFnZUNsaWVudEltcGwu
aCIKIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorI2ltcG9ydCA8QXBwS2l0L05T
VGV4dEFsdGVybmF0aXZlcy5oPgorI2VuZGlmCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW1wb3J0ICJEaWN0aW9uYXJ5UG9wdXBJbmZvLmgiCiAjaW1wb3J0ICJGaW5kSW5kaWNhdG9yLmgi
CkBAIC0zNyw2ICs0MCw3IEBACiAjaW1wb3J0ICJXZWJDb250ZXh0TWVudVByb3h5TWFjLmgiCiAj
aW1wb3J0ICJXZWJFZGl0Q29tbWFuZFByb3h5LmgiCiAjaW1wb3J0ICJXZWJQb3B1cE1lbnVQcm94
eU1hYy5oIgorI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ3Vyc29y
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgpAQCAtMTIyLDYgKzEyNiw5IEBAIFBh
c3NPd25QdHI8UGFnZUNsaWVudEltcGw+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGUoV0tWaWV3KiB3
a1ZpZXcpCiBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV0tWaWV3KiB3a1ZpZXcpCiAg
ICAgOiBtX3drVmlldyh3a1ZpZXcpCiAgICAgLCBtX3VuZG9UYXJnZXQoQWRvcHROUywgW1tXS0Vk
aXRvclVuZG9UYXJnZXRPYmpDIGFsbG9jXSBpbml0XSkKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVS
TkFUSVZFUykKKyAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKGFkb3B0UHRyKG5l
dyBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIpKQorI2VuZGlmCiB7CiB9CiAKQEAgLTIwOSwx
MCArMjE2LDEzIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnByb2Nlc3NEaWRDcmFzaCgpCiB7CiAg
ICAgW21fd2tWaWV3IF9wcm9jZXNzRGlkQ3Jhc2hdOwogfQotICAgIAorCiB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpwYWdlQ2xvc2VkKCkKIHsKICAgICBbbV93a1ZpZXcgX3BhZ2VDbG9zZWRdOworI2lm
IFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyLT5jbGVhcigpOworI2VuZGlmCiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFJl
bGF1bmNoUHJvY2VzcygpCkBAIC01MjksNCArNTM5LDM1IEBAIGJvb2wgUGFnZUNsaWVudEltcGw6
OmV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JTdHJp
bmcpCiAgICAgcmV0dXJuIFttX3drVmlldyBfZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3I6
TlNTZWxlY3RvckZyb21TdHJpbmcoc2VsZWN0b3JTdHJpbmcpXTsKIH0KIAorI2lmIFVTRShESUNU
QVRJT05fQUxURVJOQVRJVkVTKQordWludDY0X3QgUGFnZUNsaWVudEltcGw6OmFkZERpY3RhdGlv
bkFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYgYWx0ZXJu
YXRpdmVzKQoreworICAgIHJldHVybiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+YWRk
QWx0ZXJuYXRpdmVzKGFsdGVybmF0aXZlcyk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnJl
bW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQorewor
ICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5yZW1vdmVBbHRlcm5hdGl2ZXMoZGlj
dGF0aW9uQ29udGV4dCk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNob3dEaWN0YXRpb25B
bHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3Rh
dGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBpZiAoIWlzVmlld1Zp
c2libGUoKSB8fCAhaXNWaWV3SW5XaW5kb3coKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fYWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5zaG93QWx0ZXJuYXRpdmVzKG1fd2tWaWV3LCBib3Vu
ZGluZ0JveE9mRGljdGF0ZWRUZXh0LCBkaWN0YXRpb25Db250ZXh0LCBeKE5TU3RyaW5nKiBhY2Nl
cHRlZEFsdGVybmF0aXZlKXsKKyAgICAgICAgW21fd2tWaWV3IGhhbmRsZUFjY2VwdGVkQWx0ZXJu
YXRpdmVUZXh0OmFjY2VwdGVkQWx0ZXJuYXRpdmVdOworICAgIH0pOworfQorCitWZWN0b3I8U3Ry
aW5nPiBQYWdlQ2xpZW50SW1wbDo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3Rh
dGlvbkNvbnRleHQpCit7CisgICAgcmV0dXJuIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
LT5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGRpY3RhdGlvbkNvbnRleHQpOworfQorCit2b2lkIFBh
Z2VDbGllbnRJbXBsOjpkaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSSgpCit7CisgICAgbV9h
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKK30KKyNl
bmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLVmlldy5tbQppbmRleCA3OGRhNWRjYjU3MjYwMWZiZjMyZTkxY2ViY2EyYmZiN2Zl
YTQ4NWYzLi4yMDVhMmFjNDk1NTc3ZTk3YTU5NWQ4MjU4NjI4ZjQwYjg0ZGNhODYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0yNiw2ICsyNiwxMSBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS1ZpZXcuaCIKIAorI2lmIFVTRShESUNU
QVRJT05fQUxURVJOQVRJVkVTKQorI2ltcG9ydCA8QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5o
PgorI2ltcG9ydCA8QXBwS2l0L05TQXR0cmlidXRlZFN0cmluZy5oPgorI2VuZGlmCisKICNpbXBv
cnQgIkF0dHJpYnV0ZWRTdHJpbmcuaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBv
cnQgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgiCkBAIC03Myw2ICs3OCw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL1JlZ2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVX
aXRoUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TU3RyaW5nRXh0cmFzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVy
ZmFjZS5oPgpAQCAtMTE3Myw3ICsxMTc5LDEyIEBAIHN0YXRpYyBjb25zdCBzaG9ydCBrSU9ISURF
dmVudFR5cGVTY3JvbGwgPSA2OwogICAgIE5TU3RyaW5nICp0ZXh0OwogICAgIGJvb2wgaXNGcm9t
SW5wdXRNZXRob2QgPSBfZGF0YS0+X3BhZ2UtPmVkaXRvclN0YXRlKCkuaGFzQ29tcG9zaXRpb247
CiAKKyAgICBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiBkaWN0YXRpb25BbHRlcm5h
dGl2ZXM7CisKICAgICBpZiAoaXNBdHRyaWJ1dGVkU3RyaW5nKSB7CisjaWYgVVNFKERJQ1RBVElP
Tl9BTFRFUk5BVElWRVMpCisgICAgICAgIGNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVz
KHN0cmluZywgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyNlbmRpZgogICAgICAgICAvLyBGSVhN
RTogV2UgaWdub3JlIG1vc3QgYXR0cmlidXRlcyBmcm9tIHRoZSBzdHJpbmcsIHNvIGZvciBleGFt
cGxlIGluc2VydGluZyBmcm9tIENoYXJhY3RlciBQYWxldHRlIGxvc2VzIGZvbnQgYW5kIGdseXBo
IHZhcmlhdGlvbiBkYXRhLgogICAgICAgICB0ZXh0ID0gW3N0cmluZyBzdHJpbmddOwogICAgIH0g
ZWxzZQpAQCAtMTE5NSw3ICsxMjA2LDExIEBAIHN0YXRpYyBjb25zdCBzaG9ydCBrSU9ISURFdmVu
dFR5cGVTY3JvbGwgPSA2OwogCiAgICAgU3RyaW5nIGV2ZW50VGV4dCA9IHRleHQ7CiAgICAgZXZl
bnRUZXh0LnJlcGxhY2UoTlNCYWNrVGFiQ2hhcmFjdGVyLCBOU1RhYkNoYXJhY3Rlcik7IC8vIHNh
bWUgdGhpbmcgaXMgZG9uZSBpbiBLZXlFdmVudE1hYy5tbSBpbiBXZWJDb3JlCi0gICAgYm9vbCBl
dmVudEhhbmRsZWQgPSBfZGF0YS0+X3BhZ2UtPmluc2VydFRleHQoZXZlbnRUZXh0LCByZXBsYWNl
bWVudFJhbmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKHJlcGxhY2VtZW50UmFuZ2UpKTsKKyAgICBi
b29sIGV2ZW50SGFuZGxlZDsKKyAgICBpZiAoIWRpY3RhdGlvbkFsdGVybmF0aXZlcy5pc0VtcHR5
KCkpCisgICAgICAgIGV2ZW50SGFuZGxlZCA9IF9kYXRhLT5fcGFnZS0+aW5zZXJ0RGljdGF0ZWRU
ZXh0KGV2ZW50VGV4dCwgcmVwbGFjZW1lbnRSYW5nZS5sb2NhdGlvbiwgTlNNYXhSYW5nZShyZXBs
YWNlbWVudFJhbmdlKSwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyAgICBlbHNlCisgICAgICAg
IGV2ZW50SGFuZGxlZCA9IF9kYXRhLT5fcGFnZS0+aW5zZXJ0VGV4dChldmVudFRleHQsIHJlcGxh
Y2VtZW50UmFuZ2UubG9jYXRpb24sIE5TTWF4UmFuZ2UocmVwbGFjZW1lbnRSYW5nZSkpOwogCiAg
ICAgaWYgKHBhcmFtZXRlcnMpCiAgICAgICAgIHBhcmFtZXRlcnMtPmV2ZW50SW50ZXJwcmV0YXRp
b25IYWRTaWRlRWZmZWN0cyB8PSBldmVudEhhbmRsZWQ7CkBAIC0xNDQ3LDcgKzE0NjIsNyBAQCBz
dGF0aWMgY29uc3Qgc2hvcnQga0lPSElERXZlbnRUeXBlU2Nyb2xsID0gNjsKICAgICBpZiAoIXZh
bGlkQXR0cmlidXRlcykgewogICAgICAgICB2YWxpZEF0dHJpYnV0ZXMgPSBbW05TQXJyYXkgYWxs
b2NdIGluaXRXaXRoT2JqZWN0czoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TVW5kZXJs
aW5lU3R5bGVBdHRyaWJ1dGVOYW1lLCBOU1VuZGVybGluZUNvbG9yQXR0cmlidXRlTmFtZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5TTWFya2VkQ2xhdXNlU2VnbWVudEF0dHJpYnV0ZU5h
bWUsIG5pbF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICBOU01hcmtlZENsYXVzZVNlZ21l
bnRBdHRyaWJ1dGVOYW1lLCBOU1RleHRBbHRlcm5hdGl2ZXNBdHRyaWJ1dGVOYW1lLCBuaWxdOwog
ICAgICAgICAvLyBOU1RleHQgYWxzbyBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMs
IGJ1dCBpdCdzCiAgICAgICAgIC8vIGhhcmQgdG8gdGVsbCB3aGljaCBhcmUgcmVhbGx5IHJlcXVp
cmVkIGZvciB0ZXh0IGlucHV0IHRvCiAgICAgICAgIC8vIHdvcmsgd2VsbDsgSSBoYXZlIG5vdCBz
ZWVuIGFueSBpbnB1dCBtZXRob2QgbWFrZSB1c2Ugb2YgdGhlbSB5ZXQuCkBAIC0yODc2LDkgKzI4
OTEsOSBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5T
U3RyaW5nICpwYXRoKQogICAgIHJldHVybiBfZGF0YS0+X3NwZWxsQ2hlY2tlckRvY3VtZW50VGFn
OwogfQogCi0tICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDooTlNTdHJpbmcqKXJl
c3VsdAorLSAodm9pZCloYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDooTlNTdHJpbmcqKXRl
eHQKIHsKLSAgICBfZGF0YS0+X3BhZ2UtPmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHJl
c3VsdCk7CisgICAgX2RhdGEtPl9wYWdlLT5oYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdCh0
ZXh0KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlld0ludGVybmFsLmgKaW5kZXggNmI2ZWI2YmY0MWQxOTE0ZDNkNmQwNmYwZjIzMjYzMGMz
OTJiODA1Yi4uNDNjNmUyYmFhYTA1MGRlNGI2MjA1ODg0ZDYyZTdhMjMxNjEzNWU4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCkBA
IC05Niw2ICs5Niw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogLSAodm9pZClfY2FjaGVXaW5kb3dC
b3R0b21Db3JuZXJSZWN0OwogCiAtIChOU0ludGVnZXIpc3BlbGxDaGVja2VyRG9jdW1lbnRUYWc7
Ci0tICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDooTlNTdHJpbmcqKXJlc3VsdDsK
Ky0gKHZvaWQpaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6KE5TU3RyaW5nKil0ZXh0Owog
CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCAwOGNkZDk0ZDVh
ZTI4Mzk4NDEwY2UwOTgxYTA2YjdjOTE4YTEzZTJhLi4xMWJhMTE0MGEwODI1MDcxYjg3NWUwNWE3
MjkwYWU3OTE4MzYwMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAg
LTM4LDYgKzM4LDcgQEAKIAogI2lmIFVTRShBUFBLSVQpCiBPQkpDX0NMQVNTIFdLVmlldzsKK09C
SkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtMTk1LDYg
KzE5NiwxMiBAQCBwdWJsaWM6CiAgICAgCiAjaWYgVVNFKEFQUEtJVCkKICAgICB2aXJ0dWFsIFdL
Vmlldyogd2tWaWV3KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB1aW50NjRfdCBhZGREaWN0
YXRpb25BbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRf
dCBkaWN0YXRpb25Db250ZXh0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dEaWN0YXRpb25B
bHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3Rh
dGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSSgpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3Rv
cjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0
KSA9IDA7CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IDJiNTM4ZTVkOGIwNzlkOTI5MDg3NjI1MjJiYjkxMzliMjhhY2UwMjIu
LmQyYjNmMzFhYjFlZjZlNzY3OGJkMDBmNTU4MGQ5Mjc4NmVkM2U4YzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zODEwLDYgKzM4MTAsMjkgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KGNvbnN0IFN0cmlu
ZyYgcmVzdWx0KQogICAgICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okhh
bmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHJlc3VsdCksIG1fcGFnZUlELCAwKTsKICNlbmRp
ZgogfQorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCit2b2lkIFdlYlBhZ2VQcm94
eTo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBi
b3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQorewor
ICAgIG1fcGFnZUNsaWVudC0+c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoYm91bmRpbmdCb3hP
ZkRpY3RhdGVkVGV4dCwgZGljdGF0aW9uQ29udGV4dCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5
OjpkaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSSgpCit7CisgICAgbV9wYWdlQ2xpZW50LT5k
aXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSSgpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7
CisgICAgbV9wYWdlQ2xpZW50LT5yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGljdGF0aW9u
Q29udGV4dCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMo
dWludDY0X3QgZGljdGF0aW9uQ29udGV4dCwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkKK3sKKyAg
ICByZXN1bHQgPSBtX3BhZ2VDbGllbnQtPmRpY3RhdGlvbkFsdGVybmF0aXZlcyhkaWN0YXRpb25D
b250ZXh0KTsKK30KKyNlbmRpZgorCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCA4MjZjM2FiNTlhYzYyMWJmOTE2NzI1ZTM2MjkwNDhjYjIyYzhhZDllLi44NTUxMzNiM2FmN2Jk
ZmI3MjFjMDQ4MDJmYWI2ZGM0YzNlYTNiOTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC01OCw2ICs1OCw5IEBACiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJv
eHkuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJV
SUNsaWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ1Nl
c3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CkBAIC05
NSw2ICs5OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbnRTaXplOwogICAg
IGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKICAgICBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5nczsK
KyAgICBzdHJ1Y3QgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlOwogICAgIHN0cnVjdCBUZXh0Q2hl
Y2tpbmdSZXN1bHQ7CiAgICAgc3RydWN0IFZpZXdwb3J0QXR0cmlidXRlczsKICAgICBzdHJ1Y3Qg
V2luZG93RmVhdHVyZXM7CkBAIC0zNTIsNiArMzU2LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29u
ZmlybUNvbXBvc2l0aW9uKCk7CiAgICAgdm9pZCBjYW5jZWxDb21wb3NpdGlvbigpOwogICAgIGJv
b2wgaW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFu
Z2VTdGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCk7CisgICAgYm9vbCBpbnNlcnRE
aWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdl
U3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogICAg
IHZvaWQgZ2V0TWFya2VkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3Ro
KTsKICAgICB2b2lkIGdldFNlbGVjdGVkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRf
dCYgbGVuZ3RoKTsKICAgICB2b2lkIGdldEF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UodWlu
dDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgQXR0cmlidXRlZFN0cmluZyYpOwpAQCAt
ODk5LDYgKzkwNCwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5l
bFNvb24oaW50MzJfdCByZWFzb24sIFN0cmluZyYgcmVzdWx0KTsKICAgICB2b2lkIHJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UoaW50MzJfdCByZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogI2VuZGlm
IC8vICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKworI2lmIFVTRShESUNUQVRJ
T05fQUxURVJOQVRJVkVTKQorICAgIHZvaWQgc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRf
dCBkaWN0YXRpb25Db250ZXh0KTsKKyAgICB2b2lkIGRpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2
ZVVJKCk7CisgICAgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGlj
dGF0aW9uQ29udGV4dCk7CisgICAgdm9pZCBkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3Qg
ZGljdGF0aW9uQ29udGV4dCwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCk7CisjZW5kaWYKICNlbmRp
ZiAvLyBQTEFURk9STShNQUMpCiAKICAgICB2b2lkIGNsZWFyTG9hZERlcGVuZGVudENhbGxiYWNr
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggZGU2MGE3MTY2ZjU0YTgxODkxMzUwZTA3NTQyNWEzYTk4M2UzZTBlMy4uOTM4
NThhODMyYmE5NzBiOTgzZGE1YWExMDU2NTIzOTA5NTJmNjczMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yODEsNiArMjgx
LDEzIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgUmVjb3JkQXV0b2NvcnJlY3Rp
b25SZXNwb25zZShpbnQzMl90IHJlc3BvbnNlVHlwZSwgU3RyaW5nIHJlcGxhY2VkU3RyaW5nLCBT
dHJpbmcgcmVwbGFjZW1lbnRTdHJpbmcpOwogI2VuZGlmCiAKKyNpZiBVU0UoRElDVEFUSU9OX0FM
VEVSTkFUSVZFUykKKyAgICBTaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShXZWJDb3JlOjpGbG9h
dFJlY3QgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4
dCkKKyAgICBEaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSSgpCisgICAgUmVtb3ZlRGljdGF0
aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCisgICAgRGljdGF0aW9u
QWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIC0+IChWZWN0b3I8U3RyaW5n
PiBhbHRlcm5hdGl2ZXMpCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAjIFdpbmRv
d3MgNyBHZXN0dXJlIE1lc3NhZ2VzCiAgICAgU2V0R2VzdHVyZVJlYWNoZWRTY3JvbGxpbmdMaW1p
dChib29sIGxpbWl0UmVhY2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9D
b3JyZWN0aW9uUGFuZWwubW0KaW5kZXggMjk2ODFjNzRkYTZlMGI4ZGI2Nzc5NzY5YTU2MWQ3YTMz
YmVjMjJlNy4uMzNmM2ZlOTgyY2ZiZTg0NGI3YTA1ZGNhODNlMDY2NjhjMGYyNDYzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0KQEAgLTQz
LDYgKzQzLDkgQEAgc3RhdGljIGlubGluZSBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlIGNvcnJl
Y3Rpb25JbmRpY2F0b3JUeXBlKEFsdGVybmF0aXZlVGV4dFQKICAgICAgICAgcmV0dXJuIE5TQ29y
cmVjdGlvbkluZGljYXRvclR5cGVSZXZlcnNpb247CiAgICAgY2FzZSBBbHRlcm5hdGl2ZVRleHRU
eXBlU3BlbGxpbmdTdWdnZXN0aW9uczoKICAgICAgICAgcmV0dXJuIE5TQ29ycmVjdGlvbkluZGlj
YXRvclR5cGVHdWVzc2VzOworICAgIGNhc2UgQWx0ZXJuYXRpdmVUZXh0VHlwZURpY3RhdGlvbkFs
dGVybmF0aXZlczoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gTlNDb3JyZWN0
aW9uSW5kaWNhdG9yVHlwZURlZmF1bHQ7CkBAIC0xMzgsNyArMTQxLDcgQEAgdm9pZCBDb3JyZWN0
aW9uUGFuZWw6OmhhbmRsZUFjY2VwdGVkUmVwbGFjZW1lbnQoTlNTdHJpbmcqIGFjY2VwdGVkUmVw
bGFjZW1lbnQsIE4KICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgW21fdmlldy5nZXQoKSBo
YW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQ6YWNjZXB0ZWRSZXBsYWNlbWVudF07CisgICAgW21f
dmlldy5nZXQoKSBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDphY2NlcHRlZFJlcGxhY2Vt
ZW50XTsKICAgICBtX3ZpZXcuY2xlYXIoKTsKICAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVudCkK
ICAgICAgICAgbV9yZXN1bHRGb3JEaXNtaXNzYWwuYWRvcHROUyhbYWNjZXB0ZWRSZXBsYWNlbWVu
dCBjb3B5XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tCmluZGV4IDQzOGJiNjU5MWI1Mjg2YjhiMmFiOGFmZjI0ZDIxNzA5NDk5ZDNkMWUuLjli
NDc5NDM4NDJlN2QxMTgzNjY4ZTkwOTRmYzQ3YWFiMTExNTVlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0zOCw3ICszOCw5IEBA
CiAjaW1wb3J0ICJUZXh0Q2hlY2tlci5oIgogI2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAj
aW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRGljdGF0aW9uQWx0
ZXJuYXRpdmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCkBA
IC0xOTgsNiArMjAwLDM1IEBAIGJvb2wgV2ViUGFnZVByb3h5OjppbnNlcnRUZXh0KGNvbnN0IFN0
cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0CiAgICAgcmV0dXJuIGhh
bmRsZWQ7CiB9CiAKK2Jvb2wgV2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHQoY29uc3Qg
U3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJl
cGxhY2VtZW50UmFuZ2VFbmQsIGNvbnN0IFZlY3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+
JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFuZ2UpCit7CisjaWYgVVNFKERJQ1RBVElPTl9B
TFRFUk5BVElWRVMpCisgICAgaWYgKGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBpbnNlcnRUZXh0KHRleHQsIHJlcGxhY2VtZW50UmFuZ2VT
dGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCk7CisKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3Rh
dGlvbkFsdGVybmF0aXZlczsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGljdGF0aW9u
QWx0ZXJuYXRpdmVzV2l0aFJhbmdlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFRleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZSYgYWx0ZXJuYXRpdmVXaXRoUmFuZ2UgPSBkaWN0YXRpb25BbHRl
cm5hdGl2ZXNXaXRoUmFuZ2VbaV07CisgICAgICAgIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQg
PSBtX3BhZ2VDbGllbnQtPmFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyhhbHRlcm5hdGl2ZVdpdGhS
YW5nZS5hbHRlcm5hdGl2ZXMpOworICAgICAgICBpZiAoZGljdGF0aW9uQ29udGV4dCkKKyAgICAg
ICAgICAgIGRpY3RhdGlvbkFsdGVybmF0aXZlcy5hcHBlbmQoRGljdGF0aW9uQWx0ZXJuYXRpdmUo
YWx0ZXJuYXRpdmVXaXRoUmFuZ2UucmFuZ2UubG9jYXRpb24sIGFsdGVybmF0aXZlV2l0aFJhbmdl
LnJhbmdlLmxlbmd0aCwgZGljdGF0aW9uQ29udGV4dCkpOworICAgIH0KKworICAgIGlmIChkaWN0
YXRpb25BbHRlcm5hdGl2ZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gaW5zZXJ0VGV4dCh0
ZXh0LCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQpOworCisgICAg
Ym9vbCBoYW5kbGVkID0gdHJ1ZTsKKyAgICBwcm9jZXNzKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpJbnNlcnREaWN0YXRlZFRleHQodGV4dCwgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCBy
ZXBsYWNlbWVudFJhbmdlRW5kLCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpLCBNZXNzYWdlczo6V2Vi
UGFnZTo6SW5zZXJ0RGljdGF0ZWRUZXh0OjpSZXBseShoYW5kbGVkLCBtX2VkaXRvclN0YXRlKSwg
bV9wYWdlSUQpOworICAgIHJldHVybiBoYW5kbGVkOworI2Vsc2UKKyAgICByZXR1cm4gaW5zZXJ0
VGV4dCh0ZXh0LCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQpOwor
I2VuZGlmCit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5nZSh1aW50NjRfdCYg
bG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpCiB7CiAgICAgbG9jYXRpb24gPSBOU05vdEZvdW5k
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggMjAwNzY1ODM2ODA1
M2ZmMmIyZWZiYjBhMzRiZmZmY2ZiOWQyOTcxYS4uODBhYTlhNGU1OGE5MzBmOGUwNTI5NDY0MWQz
MzI1YzM3ZTFiN2Q5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCkBA
IC0zOCwxMCArMzgsMTggQEAgcHVibGljOgogICAgIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudChX
ZWJQYWdlICopOwogICAgIHZpcnR1YWwgfldlYkFsdGVybmF0aXZlVGV4dENsaWVudCgpOwogICAg
IHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgT1ZFUlJJREU7CisjaWYgVVNFKEFVVE9DT1JS
RUNUSU9OX1BBTkVMKQogICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvbkFsdGVybmF0aXZl
KFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
Ym91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNtaXNzQWx0ZXJuYXRpdmUoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0
aXZlVGV4dCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0FsdGVybmF0aXZl
U29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShXZWJDb3Jl
OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgT1ZFUlJJREU7CisjZW5kaWYKKyNp
ZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0RpY3Rh
dGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9m
RGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3Rh
dGlvbkNvbnRleHQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZGljdGF0
aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIE9WRVJSSURFOworI2Vu
ZGlmCiBwcml2YXRlOgogICAgIFdlYlBhZ2UgKm1fcGFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcAppbmRleCBhYzFkZmM1ODNhNjRhYTEyMTM2
NjY5ZjI5NGIyZTRmZWVmYzkwYzBhLi4xZmNlYzkxMTM4NTJkYWE0MWY3YWQ0OTIzOWZiNTgwMGI0
NWFkOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5j
cHAKQEAgLTUxLDM0ICs1MSw1MSBAQCB2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cGFn
ZURlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJ
T05fUEFORUwpCiB2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6c2hvd0NvcnJlY3Rpb25B
bHRlcm5hdGl2ZShBbHRlcm5hdGl2ZVRleHRUeXBlIHR5cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91
bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0
ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCiB7Ci0jaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BB
TkVMKQogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Q29ycmVj
dGlvblBhbmVsKHR5cGUsIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgcmVwbGFjZWRTdHJp
bmcsIHJlcGxhY2VtZW50U3RyaW5nLCBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykpOwot
I2VuZGlmCiB9CiAKIHZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaXNtaXNzQWx0ZXJu
YXRpdmUoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCByZWFzb24pCiB7Ci0jaWYg
VVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaXNtaXNzQ29ycmVjdGlvblBhbmVsKHJlYXNvbikpOwotI2VuZGlmCiB9CiAK
IFN0cmluZyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NBbHRlcm5hdGl2ZVNvb24o
UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCByZWFzb24pCiB7CiAgICAgU3RyaW5n
IHJlc3VsdDsKLSNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgbV9wYWdlLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihy
ZWFzb24pLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaXNtaXNzQ29ycmVjdGlvblBhbmVsU29v
bjo6UmVwbHkocmVzdWx0KSk7Ci0jZW5kaWYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lk
IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShB
dXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCiB7Ci0jaWYgVVNF
KEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKHJlc3BvbnNlVHlwZSwgcmVwbGFj
ZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKSk7Cit9CiAjZW5kaWYKKworI2lmIFVTRShESUNU
QVRJT05fQUxURVJOQVRJVkVTKQordm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJlbW92
ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZW1vdmVEaWN0YXRpb25BbHRl
cm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCkpOwogfQogCit2b2lkIFdlYkFsdGVybmF0aXZlVGV4
dENsaWVudDo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0
KQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93RGljdGF0
aW9uQWx0ZXJuYXRpdmVVSShib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCBkaWN0YXRpb25Db250
ZXh0KSk7Cit9CisKK3ZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaXNtaXNzRGljdGF0
aW9uQWx0ZXJuYXRpdmVVSSgpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKCkpOworfQorCitWZWN0b3I8U3Ry
aW5nPiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50
NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAg
ICBtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpY3RhdGlvbkFsdGVy
bmF0aXZlcyhkaWN0YXRpb25Db250ZXh0KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGljdGF0
aW9uQWx0ZXJuYXRpdmVzOjpSZXBseShyZXN1bHQpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
I2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApp
bmRleCAxNWRhN2Y1ZjE1YmE2MmZiZGMwN2I4NzZmNzgzZGQ0YTJkZDAxNDQ4Li5jYjg3ZjBlMmI4
NTM2ZGNlMWIyNGRkOTI5N2RmY2U3MTRlMjRhMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAi
V2ViVW5kb1N0ZXAuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0RpY3RhdGlvbkFsdGVybmF0aXZlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9y
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CkBAIC00MTksNyArNDIw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50KGNv
bnN0IFdlYktpdDo6V2ViTW91c2VFdmVudCYsIGJvb2wmIHJlc3VsdCk7CiAgICAgdm9pZCBhY2Nl
cHRzRmlyc3RNb3VzZShpbnQgZXZlbnROdW1iZXIsIGNvbnN0IFdlYktpdDo6V2ViTW91c2VFdmVu
dCYsIGJvb2wmIHJlc3VsdCk7CiAgICAgYm9vbCBwZXJmb3JtTm9uRWRpdGluZ0JlaGF2aW9yRm9y
U2VsZWN0b3IoY29uc3QgU3RyaW5nJik7Ci0KKyAgICB2b2lkIGluc2VydERpY3RhdGVkVGV4dChj
b25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0
X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFs
dGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGJvb2wmIGhhbmRsZWQs
IEVkaXRvclN0YXRlJiBuZXdTdGF0ZSk7CiAjZWxpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBj
b25maXJtQ29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZyk7CiAgICAg
dm9pZCBzZXRDb21wb3NpdGlvbihjb25zdCBXVEY6OlN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcs
IGNvbnN0IFdURjo6VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJs
aW5lcywgdWludDY0X3QgY3Vyc29yUG9zaXRpb24pOwpAQCAtNTA0LDcgKzUwNSw2IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgdW5tYXJrQWxsTWlzc3BlbGxpbmdzKCk7CiAgICAgdm9pZCB1bm1hcmtB
bGxCYWRHcmFtbWFyKCk7Ci0KICNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX1NOT1dfTEVPUEFSRCkKICAgICB2b2lkIGhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0
KGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDNiMGNlZGM0YWM4ODEwNTI2
MjAwYzNhNGMzZWY0ZmMwYjVjNTg4YmEuLjA5NGUzNzk0YmQ0YWVlMjk0MWVjYzIwYjA0YmY1NzAz
ZWVjZDE0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yNTAsNiArMjUwLDcgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZSB7CiAgICAgRXhlY3V0ZUtleXByZXNzQ29tbWFuZHMoVmVjdG9yPFdlYkNvcmU6OktleXBy
ZXNzQ29tbWFuZD4gc2F2ZWRDb21tYW5kcykgLT4gKGJvb2wgaGFuZGxlZCwgV2ViS2l0OjpFZGl0
b3JTdGF0ZSBuZXdTdGF0ZSkKICAgICBTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQoV2Vi
S2l0OjpXZWJNb3VzZUV2ZW50IGV2ZW50KSAtPiAoYm9vbCByZXN1bHQpCiAgICAgQWNjZXB0c0Zp
cnN0TW91c2UoaW50IGV2ZW50TnVtYmVyLCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQgZXZlbnQpIC0+
IChib29sIHJlc3VsdCkKKyAgICBJbnNlcnREaWN0YXRlZFRleHQoV1RGOjpTdHJpbmcgdGV4dCwg
dWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdl
RW5kLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4gZGljdGF0aW9u
QWx0ZXJuYXRpdmVzKSAtPiAoYm9vbCBoYW5kbGVkLCBXZWJLaXQ6OkVkaXRvclN0YXRlIG5ld1N0
YXRlKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIC8vIEZJWE1FOiBVbmlmeSB3aXRo
IE1hYyBjb3VudGVycGFydHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggOWUwYzEzNzc1ZDI2ZjAwY2YyZDg5NzhiNmM3
ZmZhOTIxYWZhZGNlNC4uMjJlZWRlODQzNTBlZTg5ZjM1OTc0M2I4NmRmZmNkNzA1MjZlNzU2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQpAQCAtMjkwLDYgKzI5MCwyMSBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydFRleHQoY29u
c3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbgogICAg
IG5ld1N0YXRlID0gZWRpdG9yU3RhdGUoKTsKIH0KIAordm9pZCBXZWJQYWdlOjppbnNlcnREaWN0
YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3Rh
cnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpE
aWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBib29s
JiBoYW5kbGVkLCBFZGl0b3JTdGF0ZSYgbmV3U3RhdGUpCit7CisgICAgRnJhbWUqIGZyYW1lID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisKKyAgICBp
ZiAocmVwbGFjZW1lbnRSYW5nZVN0YXJ0ICE9IE5TTm90Rm91bmQpIHsKKyAgICAgICAgUmVmUHRy
PFJhbmdlPiByZXBsYWNlbWVudFJhbmdlID0gY29udmVydFRvUmFuZ2UoZnJhbWUsIE5TTWFrZVJh
bmdlKHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCAtIHJlcGxhY2Vt
ZW50UmFuZ2VTdGFydCkpOworICAgICAgICBpZiAocmVwbGFjZW1lbnRSYW5nZSkKKyAgICAgICAg
ICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmVw
bGFjZW1lbnRSYW5nZS5nZXQoKSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKKyAgICB9CisKKyAg
ICBBU1NFUlQoIWZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSk7CisgICAgaGFuZGxl
ZCA9IGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0RGljdGF0ZWRUZXh0KHRleHQsIGRpY3RhdGlvbkFs
dGVybmF0aXZlTG9jYXRpb25zLCBtX2tleWJvYXJkRXZlbnRCZWluZ0ludGVycHJldGVkKTsKKyAg
ICBuZXdTdGF0ZSA9IGVkaXRvclN0YXRlKCk7Cit9CisKIHZvaWQgV2ViUGFnZTo6Z2V0TWFya2Vk
UmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKQogewogICAgIGxvY2F0
aW9uID0gTlNOb3RGb3VuZDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA2YjNmMmE3NzZjMWU4YjA4Yjg0NzQ3OTk2MDg1YjM4NDM5ZDk2OGY4Li40
M2Q3YmI1MzExNDlmODhmZGUwODA1NjlkMGYyM2E5ZDY4ZmYwZGUzIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTIt
MDYtMTEgIEppYSBQdSAgPGpwdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFyayB0ZXh0IHdpdGgg
dGV4dCBhbHRlcm5hdGl2ZSB3aXRoIGJsdWUgdW5kZXJsaW5lLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMwNDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5w
dXRDb250cm9sbGVyLm06CisgICAgICAgICgrW1RleHRJbnB1dENvbnRyb2xsZXIgaXNTZWxlY3Rv
ckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDpdKToKKyAgICAgICAgKCtbVGV4dElucHV0Q29udHJvbGxl
ciB3ZWJTY3JpcHROYW1lRm9yU2VsZWN0b3I6XSk6CisgICAgICAgICgtW1RleHRJbnB1dENvbnRy
b2xsZXIgZGljdGF0ZWRTdHJpbmdXaXRoUHJpbWFyeVN0cmluZzphbHRlcm5hdGl2ZTphbHRlcm5h
dGl2ZU9mZnNldDphbHRlcm5hdGl2ZUxlbmd0aDpdKToKKwogMjAxMi0wNi0xMSAgRGF2aWQgRG9y
d2luICA8ZGRvcndpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBQcm92aWRl
IGFjY2VzcyB0byB0aGUgV2ViUGx1Z2luIGNyZWF0ZWQgYnkgdGhlIGhlbHBlciBwbHVnaW4gd2lk
Z2V0CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJv
bGxlci5tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXIubQpp
bmRleCBmNzgwNzk0NDYzNjllNzhjOWY0OGNlMDgxNWVmMWNjYzhkZjBiOTlkLi5hZmViMTZlNGQy
NDJiMmI2MDIwYzAyZTQ0MWFlODNkNzQwZTkzMmYzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyLm0KQEAgLTMxLDYgKzMxLDEwIEBACiAKICNpbXBv
cnQgIkR1bXBSZW5kZXJUcmVlTWFjLmgiCiAjaW1wb3J0IDxBcHBLaXQvTlNJbnB1dE1hbmFnZXIu
aD4KKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElO
R19PTl9TTk9XX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xJT04pCisjZGVmaW5l
IFNVUFBPUlRfRElDVEFUSU9OX0FMVEVSTkFUSVZFUworI2ltcG9ydCA8QXBwS2l0L05TVGV4dEFs
dGVybmF0aXZlcy5oPgorI2VuZGlmCiAjaW1wb3J0IDxXZWJLaXQvV2ViRG9jdW1lbnQuaD4KICNp
bXBvcnQgPFdlYktpdC9XZWJGcmFtZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lUHJpdmF0
ZS5oPgpAQCAtMTcwLDcgKzE3NCw4IEBAICsgKEJPT0wpaXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdl
YlNjcmlwdDooU0VMKWFTZWxlY3RvcgogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxl
Y3RvcihjaGFyYWN0ZXJJbmRleEZvclBvaW50WDpZOikKICAgICAgICAgICAgIHx8IGFTZWxlY3Rv
ciA9PSBAc2VsZWN0b3IodmFsaWRBdHRyaWJ1dGVzRm9yTWFya2VkVGV4dCkKICAgICAgICAgICAg
IHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYXR0cmlidXRlZFN0cmluZ1dpdGhTdHJpbmc6KQot
ICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihzZXRJbnB1dE1ldGhvZEhhbmRs
ZXI6KSkKKyAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc2V0SW5wdXRNZXRo
b2RIYW5kbGVyOikKKyAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoZGljdGF0
ZWRTdHJpbmdXaXRoUHJpbWFyeVN0cmluZzphbHRlcm5hdGl2ZTphbHRlcm5hdGl2ZU9mZnNldDph
bHRlcm5hdGl2ZUxlbmd0aDopKQogICAgICAgICByZXR1cm4gTk87CiAgICAgcmV0dXJuIFlFUzsK
IH0KQEAgLTE5NCw3ICsxOTksOSBAQCArIChOU1N0cmluZyAqKXdlYlNjcmlwdE5hbWVGb3JTZWxl
Y3RvcjooU0VMKWFTZWxlY3RvcgogICAgIGVsc2UgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3Io
YXR0cmlidXRlZFN0cmluZ1dpdGhTdHJpbmc6KSkKICAgICAgICAgcmV0dXJuIEAibWFrZUF0dHJp
YnV0ZWRTdHJpbmciOyAvLyBqdXN0IGEgZmFjdG9yeSBtZXRob2QsIGRvZXNuJ3QgY2FsbCBpbnRv
IE5TVGV4dElucHV0CiAgICAgZWxzZSBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihzZXRJbnB1
dE1ldGhvZEhhbmRsZXI6KSkKLSAgICAgICAgcmV0dXJuIEAic2V0SW5wdXRNZXRob2RIYW5kbGVy
IjsgCisgICAgICAgIHJldHVybiBAInNldElucHV0TWV0aG9kSGFuZGxlciI7CisgICAgZWxzZSBp
ZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihkaWN0YXRlZFN0cmluZ1dpdGhQcmltYXJ5U3RyaW5n
OmFsdGVybmF0aXZlOmFsdGVybmF0aXZlT2Zmc2V0OmFsdGVybmF0aXZlTGVuZ3RoOikpCisgICAg
ICAgIHJldHVybiBAIm1ha2VEaWN0YXRlZFN0cmluZyI7CiAKICAgICByZXR1cm4gbmlsOwogfQpA
QCAtMzc1LDYgKzM4MiwyNyBAQCAtIChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmli
dXRlZFN0cmluZ1dpdGhTdHJpbmc6KE5TU3RyaW5nICopYVN0cmluZwogICAgIHJldHVybiBbW1tO
U011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzphU3RyaW5nXSBh
dXRvcmVsZWFzZV07CiB9CiAKKy0gKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqKWRpY3RhdGVk
U3RyaW5nV2l0aFByaW1hcnlTdHJpbmc6KE5TU3RyaW5nKilhU3RyaW5nIGFsdGVybmF0aXZlOihO
U1N0cmluZyopYWx0ZXJuYXRpdmUgYWx0ZXJuYXRpdmVPZmZzZXQ6KGludClvZmZzZXQgYWx0ZXJu
YXRpdmVMZW5ndGg6KGludClsZW5ndGgKK3sKKyNpZiBkZWZpbmVkKFNVUFBPUlRfRElDVEFUSU9O
X0FMVEVSTkFUSVZFUykKKyAgICBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBkaWN0YXRlZFN0
cmluZyA9IFtzZWxmIGF0dHJpYnV0ZWRTdHJpbmdXaXRoU3RyaW5nOmFTdHJpbmddOworICAgIE5T
UmFuZ2UgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBOU01ha2VSYW5nZSgoTlNVSW50ZWdlcilvZmZz
ZXQsIChOU1VJbnRlZ2VyKWxlbmd0aCk7CisgICAgTlNTdHJpbmcqIHN1YlN0cmluZ1dpdGhBbHRl
cm5hdGl2ZSA9IFthU3RyaW5nIHN1YnN0cmluZ1dpdGhSYW5nZTpyYW5nZVdpdGhBbHRlcm5hdGl2
ZV07CisgICAgaWYgKCFzdWJTdHJpbmdXaXRoQWx0ZXJuYXRpdmUpCisgICAgICAgIHJldHVybiBu
aWw7CisKKyAgICBOU1RleHRBbHRlcm5hdGl2ZXMqIGFsdGVybmF0aXZlT2JqZWN0ID0gW1tbTlNU
ZXh0QWx0ZXJuYXRpdmVzIGFsbG9jXSBpbml0V2l0aFByaW1hcnlTdHJpbmc6c3ViU3RyaW5nV2l0
aEFsdGVybmF0aXZlIGFsdGVybmF0aXZlU3RyaW5nczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6
YWx0ZXJuYXRpdmVdXSBhdXRvcmVsZWFzZV07CisgICAgaWYgKCFhbHRlcm5hdGl2ZU9iamVjdCkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIFtkaWN0YXRlZFN0cmluZyBhZGRBdHRyaWJ1dGU6
TlNUZXh0QWx0ZXJuYXRpdmVzQXR0cmlidXRlTmFtZSB2YWx1ZTphbHRlcm5hdGl2ZU9iamVjdCBy
YW5nZTpyYW5nZVdpdGhBbHRlcm5hdGl2ZV07CisKKyAgICByZXR1cm4gZGljdGF0ZWRTdHJpbmc7
CisjZWxzZQorICAgIHJldHVybiBuaWw7CisjZW5kaWYKK30KKwogLSAodm9pZClzZXRJbnB1dE1l
dGhvZEhhbmRsZXI6KFdlYlNjcmlwdE9iamVjdCAqKWhhbmRsZXIKIHsKICAgICBpZiAoaW5wdXRN
ZXRob2RIYW5kbGVyID09IGhhbmRsZXIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTRhNDQ4YWJlZmQ5YmUwZmRhYzFmMjY4
MjA1MDdkODgzMTI1ZWI0Yy4uZTJhY2NiM2U2YWNkN2Q2MjFlM2VmZGZiMzYyNTFhNTFjOTg3OWE0
YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA2LTExICBKaWEgUHUgIDxqcHVAYXBwbGUu
Y29tPgorCisgICAgICAgIE1hcmsgdGV4dCB3aXRoIHRleHQgYWx0ZXJuYXRpdmUgd2l0aCBibHVl
IHVuZGVybGluZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgzMDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMtc25vd2xlb3BhcmQvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvZWRpdGluZy9pbnB1dC9lZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0
L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5z
ZXJ0LWRpY3RhdGVkLXRleHQuaHRtbDogQWRkZWQuCisKIDIwMTItMDYtMTEgIFByYXZpbiBEICA8
cHJhdmluZC4yazRAZ21haWwuY29tPgogCiAgICAgICAgIFJlbGF0aXZlIHBvcy4gaW5wdXQgZmll
bGRzIGluIGNvbHVtbnMgdmFuaXNoIHdoZW4geW91IHN0YXJ0IHR5cGluZyBpbiB0aGVtCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtc25vd2xlb3BhcmQvU2tpcHBlZCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy1zbm93bGVvcGFyZC9Ta2lwcGVkCmluZGV4IDUyYTczNmU5
NTg0MmE2NThkMDNiNjgwYTVhNzdhMWZiNTc4ZTZhNjIuLmIyNzE0NWU4ZjQ0N2UwMjI2YTNkYmQw
NWY2OTFiYmMyNWE4MGY2ZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1z
bm93bGVvcGFyZC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1zbm93bGVv
cGFyZC9Ta2lwcGVkCkBAIC0yMTEsMyArMjExLDcgQEAgZmFzdC9zdWItcGl4ZWwvZmlsZS11cGxv
YWQtY29udHJvbC1hdC1mcmFjdGlvbmFsLW9mZnNldC5odG1sCiAjIEZyYW1lOjpmaW5kU3RyaW5n
IGRvZXMgbm90aGluZyBvbiBwYWdlcyB0aGF0IHByZXZlbnQgc2VsZWN0aW9uCiAjIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM2MQogZWRpdGluZy90ZXh0LWl0ZXJh
dG9yL2ZpbmRTdHJpbmctc2VsZWN0aW9uLWRpc2FibGVkLmh0bWwKKworIyBEaWN0YXRlZCB0ZXh0
IGlucHV0IGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybQorcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUuaHRtbAorcGxh
dGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQuaHRtbApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRl
ZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1N2M3OGNhNjM4YjU3Zjg5NDViOWUwMThkNWMwOWM5
NmRmZmE0NjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRp
dGluZy9pbnB1dC9lZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw4IEBACitFZGl0aW5nIHRleHQgdGhhdCBoYXMgRGljdGF0aW9uQWx0ZXJu
YXRpdmVzIG1hcmtlciB3aG91bGQgY2F1c2UgdGhlIG1hcmtlciB0byBiZSByZW1vdmVkLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK3RoaXMgaXMgYSB0ZXgKK1BBU1MgbWFya2VkVGV4
dCBpcyAiIgorCitURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9pbnB1dC9lZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRl
ZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jN2YwMDc5MDM2NjI2NWYw
ZDBlYmIwY2JkNmFiYTYxNjAyZGU5ZDNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJu
YXRpdmUuaHRtbApAQCAtMCwwICsxLDU5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzdHlsZT4KK2JvZHkgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDAgfQorPC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorPHByZSBpZD0iZGVzY3JpcHRpb24iPjwvcHJlPgorPGRpdiBpZD0idGVzdCIg
Y29udGVudGVkaXRhYmxlPjwvZGl2PgorPHAgaWQ9ImNvbnNvbGUiPjwvcD4KKzxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBkZXNjcmlwdGlvbigiRWRpdGluZyB0ZXh0IHRoYXQg
aGFzIERpY3RhdGlvbkFsdGVybmF0aXZlcyBtYXJrZXIgd2hvdWxkIGNhdXNlIHRoZSBtYXJrZXIg
dG8gYmUgcmVtb3ZlZC4iKTsKKworICAgIHZhciBjb25zb2xlX21lc3NhZ2VzID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgib2wiKTsKKyAgICAKKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAg
ICB7CisgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAg
ICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7
CisgICAgICAgIGNvbnNvbGVfbWVzc2FnZXMuYXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgfQorICAg
IAorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgCisgICAg
ICAgIHRyeSB7CisKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICAgICAgICAgIHZhciB0ZXN0QXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
ZXN0Iik7CisgICAgICAgICAgICB0ZXN0QXJlYS5mb2N1cygpOworCisgICAgICAgICAgICB2YXIg
ZGljdGF0ZWRTdHJpbmcgPSB0ZXh0SW5wdXRDb250cm9sbGVyLm1ha2VEaWN0YXRlZFN0cmluZygi
dGhpcyBpcyBhIHRleHQiLCAidGVzdCIsIDEwLCA0KTsKKyAgICAgICAgICAgIGRvY3VtZW50LmV4
ZWNDb21tYW5kKCJTZWxlY3RBbGwiKTsKKyAgICAgICAgICAgIHRleHRJbnB1dENvbnRyb2xsZXIu
aW5zZXJ0VGV4dChkaWN0YXRlZFN0cmluZyk7CisgICAgICAgICAgICB0ZXh0SW5wdXRDb250cm9s
bGVyLmRvQ29tbWFuZCgiZGVsZXRlQmFja3dhcmQ6Iik7CisKKyAgICAgICAgICAgIHZhciBtYXJr
ZWRUZXh0ID0gIiI7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAg
ICAgICAgICAgIHZhciB0ZXN0VGV4dCA9IHRlc3RBcmVhLmZpcnN0Q2hpbGQ7CisgICAgICAgICAg
ICAgICAgdmFyIG1hcmtlZCA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGVzdFRleHQs
ICJEaWN0YXRpb25BbHRlcm5hdGl2ZXMiLCAwKTsKKyAgICAgICAgICAgICAgICBpZiAobWFya2Vk
KQorICAgICAgICAgICAgICAgICAgICBtYXJrZWRUZXh0ID0gbWFya2VkLnRvU3RyaW5nKCk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibWFya2Vk
VGV4dCIsICIiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCJURVNUIENPTVBMRVRFIik7
CisKKyAgICAgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCJF
eGNlcHRpb246ICIgKyBleC5kZXNjcmlwdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoY29uc29s
ZV9tZXNzYWdlcyk7CisgICAgICAgIAorICAgIH0gZWxzZSB7CisgICAgICAgIGRvY3VtZW50Lndy
aXRlKCIoY2Fubm90IHJ1biBpbnRlcmFjdGl2ZWx5KSIpOworICAgIH0KKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJkNDYxNzMyZWVlZjMzZjIwZjA4MDcwZjUxMWQ5ZGNmYzAyMGJhMDEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1
dC9pbnNlcnQtZGljdGF0ZWQtdGV4dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitXaGVu
IGluc2VydGluZyBkaWN0YXRlZCB0ZXh0LCByYW5nZSBvZiB0ZXh0IHRoYXQgaGFzIGFsdGVybmF0
aXZlIHRleHQgaXMgYXR0YWNoZWQgYXMgRGljdGF0aW9uQWx0ZXJuYXRpdmVzIG1hcmtlci4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCit0aGlzIGlzIGEgdGV4dAorUEFTUyBtYXJrZWRU
ZXh0IGlzICJ0ZXh0IgorCitURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQtdGV4dC5odG1sIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMmExZTQzYmQ5OWUzZDI1ZTAyMDgzMDMwYmU3ZjMyZjhjNWQ0NDE0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5w
dXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQuaHRtbApAQCAtMCwwICsxLDU4IEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK2JvZHkgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDAg
fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHByZSBpZD0iZGVzY3JpcHRpb24iPjwvcHJl
PgorPGRpdiBpZD0idGVzdCIgY29udGVudGVkaXRhYmxlPjwvZGl2PgorPHAgaWQ9ImNvbnNvbGUi
PjwvcD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBkZXNjcmlwdGlvbigi
V2hlbiBpbnNlcnRpbmcgZGljdGF0ZWQgdGV4dCwgcmFuZ2Ugb2YgdGV4dCB0aGF0IGhhcyBhbHRl
cm5hdGl2ZSB0ZXh0IGlzIGF0dGFjaGVkIGFzIERpY3RhdGlvbkFsdGVybmF0aXZlcyBtYXJrZXIu
Iik7CisKKyAgICB2YXIgY29uc29sZV9tZXNzYWdlcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
Im9sIik7CisgICAgCisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCisgICAgeworICAgICAgICB2
YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgIGl0ZW0uYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgICAgICBjb25z
b2xlX21lc3NhZ2VzLmFwcGVuZENoaWxkKGl0ZW0pOworICAgIH0KKyAgICAKKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIAorICAgICAgICB0cnkgeworCisg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAg
ICB2YXIgdGVzdEFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworICAgICAg
ICAgICAgdGVzdEFyZWEuZm9jdXMoKTsKKworICAgICAgICAgICAgdmFyIGRpY3RhdGVkU3RyaW5n
ID0gdGV4dElucHV0Q29udHJvbGxlci5tYWtlRGljdGF0ZWRTdHJpbmcoInRoaXMgaXMgYSB0ZXh0
IiwgInRlc3QiLCAxMCwgNCk7CisgICAgICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2Vs
ZWN0QWxsIik7CisgICAgICAgICAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmluc2VydFRleHQoZGlj
dGF0ZWRTdHJpbmcpOworCisgICAgICAgICAgICB2YXIgbWFya2VkVGV4dCA9ICIiOworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICB2YXIgdGVzdFRl
eHQgPSB0ZXN0QXJlYS5maXJzdENoaWxkOworICAgICAgICAgICAgICAgIHZhciBtYXJrZWQgPSBp
bnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRlc3RUZXh0LCAiRGljdGF0aW9uQWx0ZXJuYXRp
dmVzIiwgMCk7CisgICAgICAgICAgICAgICAgaWYgKG1hcmtlZCkKKyAgICAgICAgICAgICAgICAg
ICAgbWFya2VkVGV4dCA9IG1hcmtlZC50b1N0cmluZygpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIm1hcmtlZFRleHQiLCAidGV4dCIpOworICAg
ICAgICAgICAgZG9jdW1lbnQud3JpdGUoIlRFU1QgQ09NUExFVEUiKTsKKworICAgICAgICB9IGNh
dGNoIChleCkgeworICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIkV4Y2VwdGlvbjogIiArIGV4
LmRlc2NyaXB0aW9uKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChjb25zb2xlX21lc3NhZ2VzKTsKKyAg
ICAgICAgCisgICAgfSBlbHNlIHsKKyAgICAgICAgZG9jdW1lbnQud3JpdGUoIihjYW5ub3QgcnVu
IGludGVyYWN0aXZlbHkpIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146995</attachid>
            <date>2012-06-11 19:37:52 -0700</date>
            <delta_ts>2012-06-13 00:27:46 -0700</delta_ts>
            <desc>Patch (v2).</desc>
            <filename>bug-83047-20120611193752.patch</filename>
            <type>text/plain</type>
            <size>131257</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTAyYTA2ZDRmMDA2Nzkz
YWU1YTQxYWI1YTYzODk5OTZhNjAxZGVhMC4uMDY1MWRjNTRiMzlkZTczNDI2YTRkY2UxZTNmNTdi
M2Q1YTZkYzBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTA2LTExICBKaWEg
UHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgdGV4dCB3aXRoIHRleHQgYWx0ZXJu
YXRpdmUgd2l0aCBibHVlIHVuZGVybGluZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgzMDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQt
ZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRm
b3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0Lmh0bWwKKworICAgICAg
ICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdmlzdWFsIGluZGljYXRpb24gb24gZGljdGF0ZWQgdGV4
dCB3aXRoIGFsdGVybmF0aXZlcywgYW5kIHByb3ZpZGluZyBVSQorICAgICAgICB0byBzaG93IGFs
dGVybmF0aXZlIHRleHQgb24gT1MgWC4gTWFqb3JpdHkgb2YgdGhlIGNoYW5nZXMgaXMgZm9yIGdl
bmVyYWxpemluZyBleGlzdGluZyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyCisgICAgICAgIGNs
YXNzIHRvIGhhbmRsZSBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzLiBUaGUgdHdvIG5ldyBjbGFzc2Vz
LCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgYW5kCisgICAgICAgIFRleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZSwgYXJlIHVzZWQgYnkgYm90aCBXZWJLaXQgYW5kIFdLMi4gU28gV2ViQ29yZSBz
ZWVtcyB0byBiZSB0aGUgbmF0dXJhbCBwbGFjZQorICAgICAgICBmb3IgdGhlbS4KKworICAgICAg
ICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3Bw
OiBFeHBhbmRlZCBleGlzaW5nIGNsYXNzIGludGVyZmFjZSB0byBzdXBwb3J0IGRpY3RhdGlvbiBh
bHRlcm5hdGl2ZXMuCisgICAgICAgIChEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFpbHMpOiBNYXJr
ZXIgZGV0YWlsIGNsYXNzIGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmUgbWFyay4KKyAgICAgICAg
KFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlRGV0YWlsczo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlRGV0YWlsczo6ZGljdGF0aW9uQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFpbHM6OkRpY3RhdGlv
bkFsdGVybmF0aXZlRGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlOjptYXJrZXJUeXBlc0ZvckFw
cGxpZWREaWN0YXRpb25BbHRlcm5hdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UpOiBHZW5lcmFsaXpl
ZCBleGlzdGluZyBhcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UoKSB0byBoYW5kbGUgZGljdGF0
aW9uIGFsdGVybmF0aXZlcy4KKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXI6OnRpbWVyRmlyZWQpOiBFeHBhbmRlZCBleGlzdGluZyBjb2RlIHRvIGhhbmRsZSBkaWN0
YXRpb24gYWx0ZXJuYXRpdmVzLgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQpOiBFeHBhbmRlZCBleGlzdGlu
ZyBjb2RlIHRvIGhhbmRsZSBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzLgorICAgICAgICAoV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6
IE1vdmVkIHBhcnQgb2YgdGhlIGZ1bmN0aW9uIGludG8gcmVzcG9uZFRvTWFya2VyQXRFbmRPZldv
cmQoKSB0byBpbXByb3ZlIHJlYWRhYmlsaXR5LgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjo6c2hvdWxkU3RhcnRUaW1lckZvcik6CisgICAgICAgIChXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjptYXJrZXJEZXNj
cmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFy
a2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmRpY3Rh
dGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKToKKyAgICAgICAgKiBl
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5vdGlmeUNvbXBvbmVudHNPbkNo
YW5nZWRTZWxlY3Rpb24pOiBSZW5hbWVkIGV4aXN0aW5nIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rp
b24oKSBmdW5jdGlvbiB0byBhdm9pZCBuYW1pbmcgY29sbGlzaW9uLgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjphcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVu
YXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFwcGxpZWRFZGl0
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZm
ZWN0ZWRCeUVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjaGFuZ2VTZWxlY3Rp
b25BZnRlckNvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXNwb25kVG9DaGFu
Z2VkU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGljdGF0aW9uQWx0ZXJu
YXRpdmVzRm9yTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlEaWN0YXRp
b25BbHRlcm5hdGl2ZWx0ZXJuYXRpdmUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6Cisg
ICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvbWFj
L0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oOiBBZGRlZC4gV0sxIGFuZCBXSzIgdXNlIHRo
aXMgY2xhc3MgdG8ga2VlcCB0cmFjayBvZiB0ZXh0IGFsdGVybmF0aXZlcyBvYmplY3RzLgorICAg
ICAgICAoQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKToK
KyAgICAgICAgKEFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRD
b250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyKToKKyAgICAgICAgKiBl
ZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW06IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENv
bnRleHRDb250cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVy
OjphbHRlcm5hdGl2ZXNGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6cmVtb3Zl
QWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmNsZWFyKToK
KyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWRkQWx0ZXJu
YXRpdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlcjo6c2hvd0FsdGVybmF0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpkaXNtaXNzQWx0ZXJu
YXRpdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
cmVtb3ZlQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2UuaDogQWRkZWQuICBBIHNpbXBsZSBzdHJ1Y3QgdG8gbWFrZSBpdCBlYXNpZXIg
dG8gcGFzcyBhcm91bmQgYSBwYWlyIG9mIHRleHQgYWx0ZXJuYXRpdmVzIG9iamVjdCBhbmQgcmFu
Z2UuCisgICAgICAgICogZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZTo6VGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3REaWN0YXRpb25U
ZXh0QWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKiBwYWdlL0FsdGVybmF0aXZlVGV4dENsaWVudC5o
OgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDogQWRkZWQgY29kZSB0
byBzaG93IGFsdGVybmF0aXZlIGRpY3RhdGVkIHRleHQgaW4gY29udGV4dCBtZW51LgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3Rl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlm
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0OjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1hcmtlcik6CisKIDIw
MTItMDYtMTEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIFBvcnQgRHJhd2luZ0J1ZmZlckNocm9taXVtIGZyb20gVGV4dHVyZUxheWVy
Q2hyb21pdW0gb3ZlciB0byBXZWJFeHRlcm5hbFRleHR1cmVMYXllcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IDYyMzY5MjE1ZTcwNmY3MDI5OWVhYTgwMWFiYzRhZTY3YjE2OTRhMDYuLjgxMjk4MDI5Mjlh
MDFlMjVmYmMzODBjMGY4ODA1MzhmYTJiOGFjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0NCBAQAorMjAxMi0wNi0xMSAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KKworICAgICAgICBN
YXJrIHRleHQgd2l0aCB0ZXh0IGFsdGVybmF0aXZlIHdpdGggYmx1ZSB1bmRlcmxpbmUuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzA0NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZXMgaW4gV2Vi
S2l0IGluY2x1ZGUgaW1wbGVtZW50YXRpb24gb2YgbmV3IGZ1bmN0aW9ucyBkZWNsYXJlZCBpbiBB
bHRlcm5hdGl2ZVRleHRDbGllbnQsCisgICAgICAgIGFuZCBsb2dpYyBmb3IgY2FsbGluZyBFZGl0
b3I6Omluc2VydERpY3RhdGVkVGV4dCgpIGluc3RlYWQgb2YgRWRpdG9yOjppbnNlcnRUZXh0KCkg
d2hlbiB0aGVyZSdzCisgICAgICAgIGFsdGVybmF0aXZlcyBhdHRhY2hlZCB0byB0aGUgaW5wdXQg
c3RyaW5nLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tOgor
ICAgICAgICAoY29ycmVjdGlvbkluZGljYXRvclR5cGUpOgorICAgICAgICAoQ29ycmVjdGlvblBh
bmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDoKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4
dENsaWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50Lm1tOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpzaG93Q29ycmVjdGlv
bkFsdGVybmF0aXZlKToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlz
c0FsdGVybmF0aXZlKToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlz
c0FsdGVybmF0aXZlU29vbik6CisgICAgICAgIChXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50OjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50OjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSSk6CisgICAgICAgIChX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKToK
KyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVz
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1M
VmlldyB2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0XSk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IGluc2VydFRleHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAg
ICAoLVtXZWJWaWV3IGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0Ol0pOgorICAgICAgICAo
LVtXZWJWaWV3IF9nZXRXZWJDb3JlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOmZyb21UZXh0QWx0ZXJu
YXRpdmVzOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVV
STpXZWJDb3JlOjpmb3JEaWN0YXRpb25Db250ZXh0Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IF9k
aXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSV0pOgorICAgICAgICAoLVtXZWJWaWV3IF9yZW1v
dmVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2RpY3RhdGlv
bkFsdGVybmF0aXZlczpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5tbToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUg
aW5pdF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDEyLTA2LTExICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIGRpc2Nvbm5lY3RlZC9l
eGNsdWRlZCBmcm9tIHNlYXJjaCBmcmFtZXMsIHRoZXkgYXJlIG5vdCB1c2VkIGJ5IFNhZmFyaSBh
bnltb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2ExOWNjYTUxM2UxZDA5MmUwZmJhNGQ1Yzk1NWExMmI1MzMw
ZjRjYi4uNDYxMDk1NWZhMDA0Y2YxYzc1ZjIwOTQ4YWNhYTE3YTkxZDRmZGJiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTA2LTExICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgor
CisgICAgICAgIE1hcmsgdGV4dCB3aXRoIHRleHQgYWx0ZXJuYXRpdmUgd2l0aCBibHVlIHVuZGVy
bGluZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgz
MDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hh
bmdlcyBpbiBXZWJLaXQyIGluY2x1ZGUgaW1wbGVtZW50YXRpb24gb2YgbmV3IGZ1bmN0aW9ucyBk
ZWNsYXJlZCBpbiBBbHRlcm5hdGl2ZVRleHRDbGllbnQsCisgICAgICAgIGFuZCBsb2dpYyBmb3Ig
Y2FsbGluZyBFZGl0b3I6Omluc2VydERpY3RhdGVkVGV4dCgpIGluc3RlYWQgb2YgRWRpdG9yOjpp
bnNlcnRUZXh0KCkgd2hlbiB0aGVyZSdzCisgICAgICAgIGFsdGVybmF0aXZlcyBhdHRhY2hlZCB0
byB0aGUgaW5wdXQgc3RyaW5nLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1l
bnVJdGVtVHlwZXMuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
bWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNs
aWVudEltcGwubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50
SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwYWdlQ2xvc2VkKToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpyZW1vdmVEaWN0YXRpb25BbHRlcm5h
dGl2ZXMpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2hvd0RpY3RhdGlvbkFs
dGVybmF0aXZlVUkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGljdGF0aW9u
QWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpc21pc3NE
aWN0YXRpb25BbHRlcm5hdGl2ZVVJKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW06CisgICAgICAgICgtW1dLVmlldyBpbnNlcnRUZXh0OnJlcGxhY2VtZW50UmFuZ2U6XSk6
CisgICAgICAgICgtW1dLVmlldyB2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0XSk6CisgICAg
ICAgICgtW1dLVmlldyBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc21pc3NEaWN0YXRpb25BbHRlcm5h
dGl2ZVVJKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZW1vdmVEaWN0YXRpb25B
bHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpY3RhdGlvbkFs
dGVybmF0aXZlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW06CisgICAgICAgIChjb3JyZWN0aW9uSW5kaWNhdG9y
VHlwZSk6CisgICAgICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0ZWRS
ZXBsYWNlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVu
dC5oOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnNob3dDb3JyZWN0aW9u
QWx0ZXJuYXRpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6
OmRpc21pc3NBbHRlcm5hdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0aXZlVGV4
dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0aXZlU29vbik6CisgICAgICAgIChXZWJLaXQ6OldlYkFs
dGVybmF0aXZlVGV4dENsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVtb3ZlRGljdGF0aW9uQWx0
ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Ojpz
aG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0
aXZlVGV4dENsaWVudDo6ZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omlu
c2VydERpY3RhdGVkVGV4dCk6CisKIDIwMTItMDYtMTEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBQYXNzIHRoZSByaWdodCBjb2xvciBzcGFjZSBvdmVy
IHRvIHRoZSB3ZWIgcHJvY2VzcyBzbyB3ZSBjYW4gc2V0IGl0IG9uIG91ciBDQSBjb250ZXh0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCmluZGV4IGFlZDA0ZTFiZjBkMzkzMDZiOTY1YjM1ZjI1YTA5MTkzNmM4
MTkwN2EuLmIwMjdjZjYzMmNlZjhiZDY2Njc4MzM4NzA5M2FkYjBiY2Q3MWIwMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCkBAIC0yMjAzLDMgKzIyMDMsMTQgQEAgX19aTks3V2ViQ29yZTRLVVJMN2lz
RW1wdHlFdgogX19aTks3V2ViQ29yZTRLVVJMN2lzVmFsaWRFdgogX19aTks3V2ViQ29yZTRLVVJM
MjJwcm90b2NvbElzSW5IVFRQRmFtaWx5RXYKICNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9T
Tk9XX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xJT04pCitfX1pON1dlYkNvcmUy
N0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjE1YWRkQWx0ZXJuYXRpdmVzRVJLTjNXVEY5UmV0
YWluUHRySTE4TlNUZXh0QWx0ZXJuYXRpdmVzRUUKK19fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyMjJhbHRlcm5hdGl2ZXNGb3JDb250ZXh0RXkKK19fWk43V2ViQ29yZTI3
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyNWNsZWFyRXYKK19fWk43V2ViQ29yZTI3QWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyMTlkaXNtaXNzQWx0ZXJuYXRpdmVzRXYKK19fWk43V2ViQ29y
ZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMThyZW1vdmVBbHRlcm5hdGl2ZXNFeQorX19a
TjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIxNnNob3dBbHRlcm5hdGl2ZXNF
UDZOU1ZpZXdSS05TXzlGbG9hdFJlY3RFeVUxM2Jsb2NrX3BvaW50ZXJGdlA4TlNTdHJpbmdFCitf
X1pON1dlYkNvcmUyNFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZUMxRVAxOE5TVGV4dEFsdGVybmF0
aXZlczhfTlNSYW5nZQorX19aTjdXZWJDb3JlMzJjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0
aXZlc0VQMThOU0F0dHJpYnV0ZWRTdHJpbmdSTjNXVEY2VmVjdG9ySU5TXzI0VGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlRUxtMEVFRQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGM3MDM3MzQ2ZjhlYzYzNGM1YzlmN2Zh
MGUyNTkxYzNlMDJlN2JmMS4uMDliYjhkY2U3NzY2ZWM4Y2EyYjdkM2VhZDVmMjZjNWUzNTczMDYw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNTc4Nyw2ICs1Nzg3LDEwIEBACiAJCUNFMDhDM0QxMTUyQjU5OUEwMDIxQjhDMiAv
KiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0NGMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMy
IC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsg
fTsKIAkJQ0U1NEZEMzgxMDE2RDlBNjAwOEI0NEM4IC8qIFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTU0RkQzNzEw
MTZEOUE2MDA4QjQ0QzggLyogU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRTdCMkRCMzE1ODZBQkFEMDA5OEIz
RkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTdCMkRBRjE1ODZBQkFEMDA5OEIzRkEgLyogQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0U3QjJEQjQxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFN0IyREIwMTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXIubW0gKi87IH07CisJCUNFN0IyREI1MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFN0IyREIxMTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVX
aXRoUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlDRTdCMkRCNjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3QjJE
QjIxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSAqLzsgfTsK
IAkJQ0VBMzk0OUMxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUEzOTQ5QTEx
RDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCAqLzsgfTsKIAkJQ0VB
Mzk0OUQxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VBMzk0OUIxMUQ0NUNEQTAw
MzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oICovOyB9OwogCQlDRUNBREZDNjE1Mzc3
OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDQURGQzIxNTM3NzhGRjAwRTM3MDY4IC8q
IERpY3RhdGlvbkFsdGVybmF0aXZlLmNwcCAqLzsgfTsKQEAgLTEyOTc5LDYgKzEyOTgzLDEwIEBA
CiAJCUNFMDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1NEZEMzcxMDE2RDlBNjAw
OEI0NEM4IC8qIFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcmlwdFNvdXJjZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNFNUNCMUIzMTRFREFCNkYwMEJCMjc5NSAvKiBFdmVudFNlbmRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFNlbmRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDRTdCMkRBRjE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlci5oOyBwYXRoID0gbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTdCMkRCMDE1ODZBQkFEMDA5
OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tOyBw
YXRoID0gbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0U3QjJEQjExNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UuaDsgcGF0aCA9IG1hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U3QjJEQjIxNTg2QUJBRDAwOThCM0ZBIC8q
IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTsgcGF0aCA9IG1hYy9UZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNF
QTM5NDlBMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljSGFzaFNldE5vZGVMaXN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VBMzk0OUIxMUQ0NUNEQTAwMzA5NENG
IC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0VDQURGQzIxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlvbkFsdGVybmF0aXZl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNjg0LDggKzIwNjkyLDEyIEBA
CiAJCUVENTAxREM5MEIyNDlGMzkwMEFFMThEOSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNFN0IyREIwMTU4NkFCQUQwMDk4QjNGQSAvKiBB
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKi8sCisJCQkJQ0U3QjJEQUYxNTg2QUJBRDAw
OThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oICovLAogCQkJCUVENTAxREM1
MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gKi8sCiAJCQkJNEE4Qzk2RUEwQkU2OTAz
MjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tICovLAorCQkJCUNFN0IyREIyMTU4NkFC
QUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gKi8sCisJCQkJQ0U3QjJE
QjExNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oICovLAogCQkJ
KTsKIAkJCW5hbWUgPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjUwNDYs
NiArMjUwNTgsOCBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29k
ZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBY
U1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0Ug
LyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFN0IyREIzMTU4NkFCQUQwMDk4QjNG
QSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNF
N0IyREI1MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMjgwODYsNiArMjgxMDAsOCBAQAogCQkJCUUxQkU1MTJEMENGNkM1MTIw
MDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJF
MEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUNFN0IyREI0MTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQlDRTdCMkRCNjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCA4ZDA5
ZmYxYjk5ODQ3MWVhNjFmMzg5MjY4ZTQ5MjRmNzA0Y2YxM2IxLi40NGVhNTcwZDUxMDJmOGYwZjA2
YWYxMGY2ZjY1MTM2OWVkYzNhOWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTY4LDYgKzY4LDIzIEBAIHByaXZh
dGU6CiAgICAgU3RyaW5nIG1fcmVwbGFjZW1lbnRTdHJpbmc7CiB9OwogCitjbGFzcyBEaWN0YXRp
b25BbHRlcm5hdGl2ZURldGFpbHMgOiBwdWJsaWMgQWx0ZXJuYXRpdmVUZXh0RGV0YWlscyB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGljdGF0aW9uQWx0ZXJuYXRpdmVEZXRhaWxz
PiBjcmVhdGUodWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRGljdGF0aW9uQWx0ZXJuYXRpdmVEZXRhaWxzKGRpY3RhdGlvbkNvbnRl
eHQpKTsKKyAgICB9CisKKyAgICB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9kaWN0YXRpb25Db250ZXh0OyB9CisKK3ByaXZhdGU6CisgICAgRGljdGF0aW9uQWx0
ZXJuYXRpdmVEZXRhaWxzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCisgICAgOiBtX2RpY3Rh
dGlvbkNvbnRleHQoZGljdGF0aW9uQ29udGV4dCkKKyAgICB7IH0KKworICAgIHVpbnQ2NF90IG1f
ZGljdGF0aW9uQ29udGV4dDsKK307CisKICNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAK
IHN0YXRpYyBjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBtYXJrZXJU
eXBlc0ZvckF1dG9jb3JyZWN0aW9uKCkKQEAgLTkyLDYgKzEwOSwxNCBAQCBzdGF0aWMgY29uc3Qg
VmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiYgbWFya2VyVHlwZXNGb3JSZXBsYWNl
bWVudCgpCiAgICAgcmV0dXJuIG1hcmtlclR5cGVzRm9yUmVwbGFjZW1lbnQ7CiB9CiAKK3N0YXRp
YyBjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBtYXJrZXJUeXBlc0Zv
ckFwcGxpZWREaWN0YXRpb25BbHRlcm5hdGl2ZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+LCBtYXJrZXJUeXBlc0ZvckFwcGxp
ZWREaWN0YXRpb25BbHRlcm5hdGl2ZSwgKCkpOworICAgIGlmIChtYXJrZXJUeXBlc0ZvckFwcGxp
ZWREaWN0YXRpb25BbHRlcm5hdGl2ZS5pc0VtcHR5KCkpCisgICAgICAgIG1hcmtlclR5cGVzRm9y
QXBwbGllZERpY3RhdGlvbkFsdGVybmF0aXZlLmFwcGVuZChEb2N1bWVudE1hcmtlcjo6U3BlbGxD
aGVja2luZ0V4ZW1wdGlvbik7CisgICAgcmV0dXJuIG1hcmtlclR5cGVzRm9yQXBwbGllZERpY3Rh
dGlvbkFsdGVybmF0aXZlOworfQorCiBzdGF0aWMgYm9vbCBtYXJrZXJzSGF2ZUlkZW50aWNhbERl
c2NyaXB0aW9uKGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcio+JiBtYXJrZXJzKQogewogICAg
IGlmIChtYXJrZXJzLmlzRW1wdHkoKSkKQEAgLTIxNSwxOCArMjQwLDE4IEBAIFN0cmluZyBBbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyOjpkaXNtaXNzU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0
ZXJuYXRpdmVUZXh0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12b2lkIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0KGNvbnN0IFN0cmluZyYgYWx0ZXJu
YXRpdmUsIGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4mIG1hcmtlclR5
cGVzVG9BZGQpCit2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRp
dmVUZXh0VG9SYW5nZShjb25zdCBSYW5nZSogcmFuZ2UsIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRp
dmUsIEFsdGVybmF0aXZlVGV4dFR5cGUgYWx0ZXJuYXRpdmVUeXBlLCBjb25zdCBWZWN0b3I8RG9j
dW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBtYXJrZXJUeXBlc1RvQWRkLCBNYXJrZXJEZXNjcmlw
dGlvblN1cHBsaWVyIG1hcmtlckRlc2NyaXB0aW9uU3VwcGxpZXIpCiB7Ci0gICAgaWYgKCFtX2Fs
dGVybmF0aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUpCisgICAgaWYgKCFyYW5nZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRy
PFJhbmdlPiBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uID0gbV9hbHRlcm5hdGl2
ZVRleHRJbmZvLnJhbmdlV2l0aEFsdGVybmF0aXZlLT5jbG9uZVJhbmdlKGVjKTsKKyAgICBSZWZQ
dHI8UmFuZ2U+IHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24gPSByYW5nZS0+Y2xv
bmVSYW5nZShlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXRTdGFy
dChwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLmdldCgpLCBzdGFydE9mUGFyYWdy
YXBoKG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZS0+c3RhcnRQb3Np
dGlvbigpKSk7Ci0gICAgc2V0RW5kKHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24u
Z2V0KCksIGVuZE9mUGFyYWdyYXBoKG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRl
cm5hdGl2ZS0+ZW5kUG9zaXRpb24oKSkpOworICAgIHNldFN0YXJ0KHBhcmFncmFwaFJhbmdlQ29u
dGFpbmluZ0NvcnJlY3Rpb24uZ2V0KCksIHN0YXJ0T2ZQYXJhZ3JhcGgocmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKSkpOworICAgIHNldEVuZChwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9u
LmdldCgpLCBlbmRPZlBhcmFncmFwaChyYW5nZS0+ZW5kUG9zaXRpb24oKSkpOwogCiAgICAgLy8g
QWZ0ZXIgd2UgcmVwbGFjZSB0aGUgd29yZCBhdCByYW5nZSByYW5nZVdpdGhBbHRlcm5hdGl2ZSwg
d2UgbmVlZCB0byBhZGQgbWFya2VycyB0byB0aGF0IHJhbmdlLgogICAgIC8vIEhvd2V2ZXIsIG9u
Y2UgdGhlIHJlcGxhY2VtZW50IHRvb2sgcGxhY2UsIHRoZSB2YWx1ZSBvZiByYW5nZVdpdGhBbHRl
cm5hdGl2ZSBpcyBub3QgdmFsaWQgYW55bW9yZS4KQEAgLTIzOCw3ICsyNjMsNyBAQCB2b2lkIEFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0KGNvbnN0IFN0cmlu
ZyYgYWx0ZXJuYXRpdmUsCiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAKLSAgICBQb3Np
dGlvbiBzdGFydFBvc2l0aW9uT2ZyYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IG1fYWx0ZXJuYXRpdmVU
ZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZS0+c3RhcnRQb3NpdGlvbigpOworICAgIFBvc2l0
aW9uIHN0YXJ0UG9zaXRpb25PZnJhbmdlV2l0aEFsdGVybmF0aXZlID0gcmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKTsKICAgICBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UtPnNl
dEVuZChzdGFydFBvc2l0aW9uT2ZyYW5nZVdpdGhBbHRlcm5hdGl2ZS5jb250YWluZXJOb2RlKCks
IHN0YXJ0UG9zaXRpb25PZnJhbmdlV2l0aEFsdGVybmF0aXZlLmNvbXB1dGVPZmZzZXRJbkNvbnRh
aW5lck5vZGUoKSwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ3LDcg
KzI3Miw3IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2
ZVRleHQoY29uc3QgU3RyaW5nJiBhbHRlcm5hdGl2ZSwKICAgICBpbnQgY29ycmVjdGlvblN0YXJ0
T2Zmc2V0SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGNvcnJlY3Rpb25T
dGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZS5nZXQoKSk7CiAKICAgICAvLyBDbG9uZSB0aGUg
cmFuZ2UsIHNpbmNlIHRoZSBjYWxsZXIgb2YgdGhpcyBtZXRob2QgbWF5IHdhbnQgdG8ga2VlcCB0
aGUgb3JpZ2luYWwgcmFuZ2UgYXJvdW5kLgotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VXaXRoQWx0
ZXJuYXRpdmUgPSBtX2FsdGVybmF0aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUtPmNs
b25lUmFuZ2UoZWMpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBy
YW5nZS0+Y2xvbmVSYW5nZShlYyk7CiAgICAgYXBwbHlDb21tYW5kKFNwZWxsaW5nQ29ycmVjdGlv
bkNvbW1hbmQ6OmNyZWF0ZShyYW5nZVdpdGhBbHRlcm5hdGl2ZSwgYWx0ZXJuYXRpdmUpKTsKICAg
ICBzZXRFbmQocGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi5nZXQoKSwgbV9mcmFt
ZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLnN0YXJ0KCkpOwogICAgIFJlZlB0cjxSYW5nZT4g
cmVwbGFjZW1lbnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UocGFyYWdyYXBoUmFuZ2VD
b250YWluaW5nQ29ycmVjdGlvbi5nZXQoKSwgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3Jh
cGgsIGFsdGVybmF0aXZlLmxlbmd0aCgpKTsKQEAgLTI2MCwxMSArMjg1LDggQEAgdm9pZCBBbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dChjb25zdCBTdHJpbmcm
IGFsdGVybmF0aXZlLAogICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciogbWFya2VycyA9IHJl
cGxhY2VtZW50UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKTsK
ICAgICBzaXplX3Qgc2l6ZSA9IG1hcmtlclR5cGVzVG9BZGQuc2l6ZSgpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIERvY3VtZW50TWFya2VyOjpNYXJr
ZXJUeXBlIG1hcmtlclR5cGUgPSBtYXJrZXJUeXBlc1RvQWRkW2ldOwotICAgICAgICBTdHJpbmcg
ZGVzY3JpcHRpb247Ci0gICAgICAgIGlmIChtX2FsdGVybmF0aXZlVGV4dEluZm8udHlwZSAhPSBB
bHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9uICYmIChtYXJrZXJUeXBlID09IERvY3VtZW50TWFy
a2VyOjpSZXBsYWNlbWVudCB8fCBtYXJrZXJUeXBlID09IERvY3VtZW50TWFya2VyOjpBdXRvY29y
cmVjdGVkKSkKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gbV9hbHRlcm5hdGl2ZVRleHRJbmZv
Lm9yaWdpbmFsVGV4dDsKLSAgICAgICAgbWFya2Vycy0+YWRkTWFya2VyKHJlcGxhY2VtZW50UmFu
Z2UuZ2V0KCksIG1hcmtlclR5cGUsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgU3RyaW5nIGRlc2Ny
aXB0aW9uID0gbWFya2VyRGVzY3JpcHRpb25TdXBwbGllciA/IG1hcmtlckRlc2NyaXB0aW9uU3Vw
cGxpZXIoYWx0ZXJuYXRpdmVUeXBlLCBtYXJrZXJUeXBlc1RvQWRkW2ldKSA6ICIiOworICAgICAg
ICBtYXJrZXJzLT5hZGRNYXJrZXIocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSwgbWFya2VyVHlwZXNU
b0FkZFtpXSwgZGVzY3JpcHRpb24pOwogICAgIH0KIH0KIApAQCAtMzQ4LDMzICszNzAsNTcgQEAg
dm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjp0aW1lckZpcmVkKFRpbWVyPEFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI+KikKICAgICAgICAgfQogICAgIH0KICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBBbHRlcm5hdGl2ZVRleHRUeXBlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOgorICAgIHsK
KyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICAgICAgY29uc3QgUmFuZ2UqIHJh
bmdlV2l0aEFsdGVybmF0aXZlID0gbV9hbHRlcm5hdGl2ZVRleHRJbmZvLnJhbmdlV2l0aEFsdGVy
bmF0aXZlLmdldCgpOworICAgICAgICBjb25zdCBEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFpbHMq
IGRldGFpbHMgPSBzdGF0aWNfY2FzdDxjb25zdCBEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFpbHMq
PihtX2FsdGVybmF0aXZlVGV4dEluZm8uZGV0YWlscy5nZXQoKSk7CisgICAgICAgIGlmICghcmFu
Z2VXaXRoQWx0ZXJuYXRpdmUgfHwgIWRldGFpbHMgfHwgIWRldGFpbHMtPmRpY3RhdGlvbkNvbnRl
eHQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94
ID0gcm9vdFZpZXdSZWN0Rm9yUmFuZ2UocmFuZ2VXaXRoQWx0ZXJuYXRpdmUpOworICAgICAgICBt
X2FsdGVybmF0aXZlVGV4dEluZm8uaXNBY3RpdmUgPSB0cnVlOworICAgICAgICBpZiAoIWJvdW5k
aW5nQm94LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKEFsdGVybmF0aXZlVGV4dENsaWVu
dCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkpCisgICAgICAgICAgICAgICAgY2xp
ZW50LT5zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShib3VuZGluZ0JveCwgZGV0YWlscy0+ZGlj
dGF0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorICAgICAgICBicmVh
azsKICAgICB9CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aGFuZGxlQWx0
ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCiB7Ci0gICAgUmFuZ2Uq
IHJlcGxhY2VkUmFuZ2UgPSBtX2FsdGVybmF0aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRp
dmUuZ2V0KCk7Ci0gICAgaWYgKCFyZXBsYWNlZFJhbmdlIHx8IG1fZnJhbWUtPmRvY3VtZW50KCkg
IT0gcmVwbGFjZWRSYW5nZS0+b3duZXJEb2N1bWVudCgpKQorICAgIFJhbmdlKiByYW5nZVdpdGhB
bHRlcm5hdGl2ZSA9IG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZS5n
ZXQoKTsKKyAgICBpZiAoIXJhbmdlV2l0aEFsdGVybmF0aXZlIHx8IG1fZnJhbWUtPmRvY3VtZW50
KCkgIT0gcmFuZ2VXaXRoQWx0ZXJuYXRpdmUtPm93bmVyRG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgU3RyaW5nIGN1cnJlbnRXb3JkID0gcGxhaW5UZXh0KG1fYWx0ZXJuYXRpdmVU
ZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZS5nZXQoKSk7CisgICAgU3RyaW5nIGN1cnJlbnRX
b3JkID0gcGxhaW5UZXh0KHJhbmdlV2l0aEFsdGVybmF0aXZlKTsKICAgICAvLyBDaGVjayB0byBz
ZWUgaWYgdGhlIHdvcmQgd2UgYXJlIGFib3V0IHRvIGNvcnJlY3QgaGFzIGJlZW4gY2hhbmdlZCBi
ZXR3ZWVuIHRpbWVyIGZpcmluZyBhbmQgY2FsbGJhY2sgYmVpbmcgdHJpZ2dlcmVkLgogICAgIGlm
IChjdXJyZW50V29yZCAhPSBtX2FsdGVybmF0aXZlVGV4dEluZm8ub3JpZ2luYWxUZXh0KQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX2FsdGVybmF0aXZlVGV4dEluZm8uaXNBY3RpdmUgPSBmYWxz
ZTsKKyAgICBNYXJrZXJEZXNjcmlwdGlvblN1cHBsaWVyIG1hcmtlckRlc2NyaXB0aW9uU3VwcGxp
ZXIgPSBeU3RyaW5nKEFsdGVybmF0aXZlVGV4dFR5cGUgYWx0ZXJuYXRpdmVUZXh0VHlwZSwgRG9j
dW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgbWFya2VyVHlwZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBtYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQoYWx0ZXJuYXRpdmVU
ZXh0VHlwZSwgbWFya2VyVHlwZSk7CisgICAgfTsKIAogICAgIHN3aXRjaCAobV9hbHRlcm5hdGl2
ZVRleHRJbmZvLnR5cGUpIHsKICAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5cGVDb3JyZWN0aW9u
OgogICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpKQotICAgICAgICAgICAgYXBwbHlBbHRlcm5h
dGl2ZVRleHQocmVzdWx0LCBtYXJrZXJUeXBlc0ZvckF1dG9jb3JyZWN0aW9uKCkpOworICAgICAg
ICAgICAgYXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKHJhbmdlV2l0aEFsdGVybmF0aXZlLCBy
ZXN1bHQsIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby50eXBlLCBtYXJrZXJUeXBlc0ZvckF1dG9jb3Jy
ZWN0aW9uKCksIG1hcmtlckRlc2NyaXB0aW9uU3VwcGxpZXIpOwogICAgICAgICBlbHNlIGlmICgh
bV9pc0Rpc21pc3NlZEJ5RWRpdGluZykKLSAgICAgICAgICAgIHJlcGxhY2VkUmFuZ2UtPnN0YXJ0
Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKHJlcGxhY2VkUmFu
Z2UsIERvY3VtZW50TWFya2VyOjpSZWplY3RlZENvcnJlY3Rpb24sIG1fYWx0ZXJuYXRpdmVUZXh0
SW5mby5vcmlnaW5hbFRleHQpOworICAgICAgICAgICAgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUtPnN0
YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKHJhbmdlV2l0
aEFsdGVybmF0aXZlLCBEb2N1bWVudE1hcmtlcjo6UmVqZWN0ZWRDb3JyZWN0aW9uLCBtX2FsdGVy
bmF0aXZlVGV4dEluZm8ub3JpZ2luYWxUZXh0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBB
bHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9uOgogICAgIGNhc2UgQWx0ZXJuYXRpdmVUZXh0VHlw
ZVNwZWxsaW5nU3VnZ2VzdGlvbnM6CiAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoKCkpCi0gICAg
ICAgICAgICBhcHBseUFsdGVybmF0aXZlVGV4dChyZXN1bHQsIG1hcmtlclR5cGVzRm9yUmVwbGFj
ZW1lbnQoKSk7CisgICAgICAgICAgICBhcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UocmFuZ2VX
aXRoQWx0ZXJuYXRpdmUsIHJlc3VsdCwgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLnR5cGUsIG1hcmtl
clR5cGVzRm9yUmVwbGFjZW1lbnQoKSwgbWFya2VyRGVzY3JpcHRpb25TdXBwbGllcik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQWx0ZXJuYXRpdmVUZXh0VHlwZURpY3RhdGlvbkFsdGVybmF0
aXZlczoKKyAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGgoKSkKKyAgICAgICAgICAgIGFwcGx5QWx0
ZXJuYXRpdmVUZXh0VG9SYW5nZShyYW5nZVdpdGhBbHRlcm5hdGl2ZSwgcmVzdWx0LCBtX2FsdGVy
bmF0aXZlVGV4dEluZm8udHlwZSwgbWFya2VyVHlwZXNGb3JBcHBsaWVkRGljdGF0aW9uQWx0ZXJu
YXRpdmUoKSwgbWFya2VyRGVzY3JpcHRpb25TdXBwbGllcik7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIApAQCAtNDAwLDcgKzQ0Niw3IEBAIEZsb2F0UmVjdCBBbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyOjpyb290Vmlld1JlY3RGb3JSYW5nZShjb25zdCBSYW5nZSogcmFuZ2UpIGNvCiAgICAgcmV0
dXJuIHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhJbnRSZWN0KGJvdW5kaW5nUmVjdCkpOwogfSAg
ICAgICAgCiAKLXZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvQ2hhbmdl
ZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24pCit2b2lkIEFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0
aW9uT3B0aW9ucyBvcHRpb25zKQogewogICAgIFZpc2libGVTZWxlY3Rpb24gY3VycmVudFNlbGVj
dGlvbihtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOwogICAgIC8vIFdoZW4gdXNl
ciBtb3ZlcyBjYXJldCB0byB0aGUgZW5kIG9mIGF1dG9jb3JyZWN0ZWQgd29yZCBhbmQgcGF1c2Vz
LCB3ZSBzaG93IHRoZSBwYW5lbApAQCAtNDI2LDI4ICs0NzIsMTUgQEAgdm9pZCBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24KICAgICAgICAgcmV0dXJuOwogCiAgICAgTm9kZSogbm9kZSA9IHBvc2l0aW9uLmNv
bnRhaW5lck5vZGUoKTsKLSAgICBpbnQgZW5kT2Zmc2V0ID0gcG9zaXRpb24ub2Zmc2V0SW5Db250
YWluZXJOb2RlKCk7CiAgICAgVmVjdG9yPERvY3VtZW50TWFya2VyKj4gbWFya2VycyA9IG5vZGUt
PmRvY3VtZW50KCktPm1hcmtlcnMoKS0+bWFya2Vyc0Zvcihub2RlKTsKICAgICBzaXplX3QgbWFy
a2VyQ291bnQgPSBtYXJrZXJzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1h
cmtlckNvdW50OyArK2kpIHsKICAgICAgICAgY29uc3QgRG9jdW1lbnRNYXJrZXIqIG1hcmtlciA9
IG1hcmtlcnNbaV07Ci0gICAgICAgIGlmICghc2hvdWxkU3RhcnRUaW1lckZvcihtYXJrZXIsIGVu
ZE9mZnNldCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgUmVmUHRyPFJhbmdlPiB3
b3JkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIG5vZGUsIG1hcmtl
ci0+c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgIFN0
cmluZyBjdXJyZW50V29yZCA9IHBsYWluVGV4dCh3b3JkUmFuZ2UuZ2V0KCkpOwotICAgICAgICBp
ZiAoIWN1cnJlbnRXb3JkLmxlbmd0aCgpKQorICAgICAgICBpZiAoIW1hcmtlcikKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhB
bHRlcm5hdGl2ZSA9IHdvcmRSYW5nZTsKLSAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLm9y
aWdpbmFsVGV4dCA9IGN1cnJlbnRXb3JkOwotICAgICAgICBpZiAobWFya2VyLT50eXBlKCkgPT0g
RG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nKQotICAgICAgICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRl
eHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVTcGVsbGluZ1N1Z2dlc3Rpb25zKTsKLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBtX2FsdGVybmF0aXZlVGV4dEluZm8uZGV0YWlscyA9IEF1
dG9jb3JyZWN0aW9uQWx0ZXJuYXRpdmVEZXRhaWxzOjpjcmVhdGUobWFya2VyLT5kZXNjcmlwdGlv
bigpKTsKLSAgICAgICAgICAgIHN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcihBbHRlcm5hdGl2
ZVRleHRUeXBlUmV2ZXJzaW9uKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJyZWFrOworICAgICAg
ICBpZiAocmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQoKm1hcmtlciwgcG9zaXRpb24sIG9wdGlv
bnMpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC01OTgsNyArNjMxLDYyIEBA
IGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cHJvY2Vzc01hcmtlcnNPblRleHRUb0Jl
UmVwbGFjZWRCeVJlc3VsdChjb25zdCBUCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KLSAgICAKKwor
Ym9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpzaG91bGRTdGFydFRpbWVyRm9yKGNvbnN0
IFdlYkNvcmU6OkRvY3VtZW50TWFya2VyICZtYXJrZXIsIGludCBlbmRPZmZzZXQpIGNvbnN0Cit7
CisgICAgcmV0dXJuICgoKG1hcmtlci50eXBlKCkgPT0gRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2Vt
ZW50ICYmICFtYXJrZXIuZGVzY3JpcHRpb24oKS5pc051bGwoKSkgfHwgbWFya2VyLnR5cGUoKSA9
PSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcgfHwgbWFya2VyLnR5cGUoKSA9PSBEb2N1bWVudE1h
cmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzKSAmJiBzdGF0aWNfY2FzdDxpbnQ+KG1hcmtlci5l
bmRPZmZzZXQoKSkgPT0gZW5kT2Zmc2V0KTsKK30KKworYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZChjb25zdCBEb2N1bWVudE1hcmtlciYg
bWFya2VyLCBjb25zdCBQb3NpdGlvbiYgZW5kT2ZXb3JkUG9zaXRpb24sIEZyYW1lU2VsZWN0aW9u
OjpTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMpCit7CisgICAgaWYgKG9wdGlvbnMgJiBGcmFt
ZVNlbGVjdGlvbjo6RGljdGF0aW9uVHJpZ2dlcmVkKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFzaG91bGRTdGFydFRpbWVyRm9yKG1hcmtlciwgZW5kT2ZXb3JkUG9zaXRpb24ub2Zm
c2V0SW5Db250YWluZXJOb2RlKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgTm9kZSog
bm9kZSA9IGVuZE9mV29yZFBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKTsKKyAgICBSZWZQdHI8UmFu
Z2U+IHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9mcmFtZS0+ZG9jdW1lbnQoKSwgbm9kZSwg
bWFya2VyLnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7CisgICAgaWYg
KCF3b3JkUmFuZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTdHJpbmcgY3VycmVudFdv
cmQgPSBwbGFpblRleHQod29yZFJhbmdlLmdldCgpKTsKKyAgICBpZiAoIWN1cnJlbnRXb3JkLmxl
bmd0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9hbHRlcm5hdGl2ZVRleHRJbmZv
Lm9yaWdpbmFsVGV4dCA9IGN1cnJlbnRXb3JkOworICAgIHN3aXRjaCAobWFya2VyLnR5cGUoKSkg
eworICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nOgorICAgICAgICBtX2FsdGVybmF0
aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1f
YWx0ZXJuYXRpdmVUZXh0SW5mby5kZXRhaWxzID0gQXV0b2NvcnJlY3Rpb25BbHRlcm5hdGl2ZURl
dGFpbHM6OmNyZWF0ZSgiIik7CisgICAgICAgIHN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcihB
bHRlcm5hdGl2ZVRleHRUeXBlU3BlbGxpbmdTdWdnZXN0aW9ucyk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50OgorICAgICAgICBtX2FsdGVybmF0
aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1f
YWx0ZXJuYXRpdmVUZXh0SW5mby5kZXRhaWxzID0gQXV0b2NvcnJlY3Rpb25BbHRlcm5hdGl2ZURl
dGFpbHM6OmNyZWF0ZShtYXJrZXIuZGVzY3JpcHRpb24oKSk7CisgICAgICAgIHN0YXJ0QWx0ZXJu
YXRpdmVUZXh0VUlUaW1lcihBbHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9uKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzOiB7
CisgICAgICAgIGNvbnN0IERpY3RhdGlvbk1hcmtlckRldGFpbHMqIG1hcmtlckRldGFpbHMgPSBz
dGF0aWNfY2FzdDxjb25zdCBEaWN0YXRpb25NYXJrZXJEZXRhaWxzKj4obWFya2VyLmRldGFpbHMo
KSk7CisgICAgICAgIGlmICghbWFya2VyRGV0YWlscykKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgaWYgKGN1cnJlbnRXb3JkICE9IG1hcmtlckRldGFpbHMtPm9yaWdpbmFsVGV4
dCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtX2FsdGVybmF0aXZlVGV4
dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1fYWx0ZXJu
YXRpdmVUZXh0SW5mby5kZXRhaWxzID0gRGljdGF0aW9uQWx0ZXJuYXRpdmVEZXRhaWxzOjpjcmVh
dGUobWFya2VyRGV0YWlscy0+ZGljdGF0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgc3RhcnRBbHRl
cm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0YXRpb25BbHRlcm5hdGl2
ZXMpOworICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworU3RyaW5nIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Om1hcmtlckRlc2NyaXB0aW9u
Rm9yQXBwbGllZEFsdGVybmF0aXZlVGV4dChBbHRlcm5hdGl2ZVRleHRUeXBlIGFsdGVybmF0aXZl
VGV4dFR5cGUsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIG1hcmtlclR5cGUpCit7CisgICAg
aWYgKGFsdGVybmF0aXZlVGV4dFR5cGUgIT0gQWx0ZXJuYXRpdmVUZXh0VHlwZVJldmVyc2lvbiAm
JiAobWFya2VyVHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQgfHwgbWFya2VyVHlw
ZSA9PSBEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3RlZCkpCisgICAgICAgIHJldHVybiBtX2Fs
dGVybmF0aXZlVGV4dEluZm8ub3JpZ2luYWxUZXh0OworICAgIHJldHVybiAiIjsKK30KKwogI2Vu
ZGlmCiAKIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aW5zZXJ0RGljdGF0ZWRUZXh0
KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiYg
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50KQpAQCAtNjI0LDQg
KzcxMiw0NiBAQCBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Omluc2VydERpY3RhdGVk
VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlYwogICAgIHJldHVybiBldmVudC0+ZGVm
YXVsdEhhbmRsZWQoKTsKIH0KIAordm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZW1v
dmVEaWN0YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIoY29uc3QgRG9jdW1lbnRNYXJrZXIqIG1h
cmtlcikKK3sKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBEaWN0YXRpb25N
YXJrZXJEZXRhaWxzKiBkZXRhaWxzID0gc3RhdGljX2Nhc3Q8RGljdGF0aW9uTWFya2VyRGV0YWls
cyo+KG1hcmtlci0+ZGV0YWlscygpKTsKKyAgICBpZiAoQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBj
bGllbnQgPSBhbHRlcm5hdGl2ZVRleHRDbGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5yZW1vdmVE
aWN0YXRpb25BbHRlcm5hdGl2ZXMoZGV0YWlscy0+ZGljdGF0aW9uQ29udGV4dCgpKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKG1hcmtlcik7CisjZW5kaWYKK30KKworVmVjdG9yPFN0cmluZz4g
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2Vy
KGNvbnN0IERvY3VtZW50TWFya2VyKiBtYXJrZXIpCit7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRF
Uk5BVElWRVMpCisgICAgQVNTRVJUKG1hcmtlci0+dHlwZSgpID09IERvY3VtZW50TWFya2VyOjpE
aWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgIGlmIChBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGNs
aWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgpKSB7CisgICAgICAgIERpY3RhdGlvbk1hcmtl
ckRldGFpbHMqIGRldGFpbHMgPSBzdGF0aWNfY2FzdDxEaWN0YXRpb25NYXJrZXJEZXRhaWxzKj4o
bWFya2VyLT5kZXRhaWxzKCkpOworICAgICAgICByZXR1cm4gY2xpZW50LT5kaWN0YXRpb25BbHRl
cm5hdGl2ZXMoZGV0YWlscy0+ZGljdGF0aW9uQ29udGV4dCgpKTsKKyAgICB9CisgICAgcmV0dXJu
IFZlY3RvcjxTdHJpbmc+KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShtYXJrZXIpOworICAg
IHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworI2VuZGlmCit9CisKK3ZvaWQgQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlcjo6YXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZShjb25zdCBTdHJpbmcmIGFs
dGVybmF0aXZlU3RyaW5nKQoreworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAg
IEVkaXRvciogZWRpdG9yID0gbV9mcmFtZS0+ZWRpdG9yKCk7CisgICAgUmVmUHRyPFJhbmdlPiBz
ZWxlY3Rpb24gPSBlZGl0b3ItPnNlbGVjdGVkUmFuZ2UoKTsKKyAgICBpZiAoIXNlbGVjdGlvbiB8
fCAhZWRpdG9yLT5zaG91bGRJbnNlcnRUZXh0KGFsdGVybmF0aXZlU3RyaW5nLCBzZWxlY3Rpb24u
Z2V0KCksIEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpCisgICAgICAgIHJldHVybjsKKyAgICBE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIqIG1hcmtlcnMgPSBzZWxlY3Rpb24tPnN0YXJ0Q29udGFp
bmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKTsKKyAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIq
PiBkaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXJzID0gbWFya2Vycy0+bWFya2Vyc0luUmFuZ2Uo
c2VsZWN0aW9uLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcnMu
c2l6ZSgpOyArK2kpCisgICAgICAgIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlc0Zvck1hcmtl
cihkaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXJzW2ldKTsKKworICAgIGFwcGx5QWx0ZXJuYXRp
dmVUZXh0VG9SYW5nZShzZWxlY3Rpb24uZ2V0KCksIGFsdGVybmF0aXZlU3RyaW5nLCBBbHRlcm5h
dGl2ZVRleHRUeXBlRGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBtYXJrZXJUeXBlc0ZvckFwcGxpZWRE
aWN0YXRpb25BbHRlcm5hdGl2ZSgpKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlci5oCmluZGV4IDI4NDQ5ZWZkOTNlNTc0MGEwOWUzNWI2NTRiODliNTBjNzk4MDhkOWIuLmI3
NmEwMDgyYzQ1NWE3ZmY4MDdiN2E2NGViNjgyYmQ4MzFlN2Y2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpbmNsdWRlICJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKICNpbmNsdWRlICJE
b2N1bWVudE1hcmtlci5oIgorI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAi
UmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tpbmcuaCIKICNpbmNsdWRlICJUaW1lci5oIgpA
QCAtMTA4LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbmRUb1VuYXBwbGllZFNw
ZWxsQ29ycmVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBjb3Jy
ZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbikgVU5MRVNTX0VOQUJMRUQoeyBVTlVTRURf
UEFSQU0oY29ycmVjdGVkKTsgVU5VU0VEX1BBUkFNKGNvcnJlY3Rpb24pOyB9KQogICAgIHZvaWQg
cmVzcG9uZFRvQXBwbGllZEVkaXRpbmcoQ29tcG9zaXRlRWRpdENvbW1hbmQqKSBVTkxFU1NfRU5B
QkxFRCh7IH0pCiAgICAgdm9pZCByZXNwb25kVG9VbmFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5k
Q29tcG9zaXRpb24qKSBVTkxFU1NfRU5BQkxFRCh7IH0pCi0gICAgdm9pZCByZXNwb25kVG9DaGFu
Z2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbikgVU5MRVNT
X0VOQUJMRUQoeyBVTlVTRURfUEFSQU0ob2xkU2VsZWN0aW9uKTsgfSkKKyAgICB2b2lkIHJlc3Bv
bmRUb0NoYW5nZWRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9u
LCBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucykgVU5MRVNTX0VOQUJMRUQoeyBV
TlVTRURfUEFSQU0ob2xkU2VsZWN0aW9uKTsgfSkKIAogICAgIHZvaWQgc3RvcFBlbmRpbmdDb3Jy
ZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbikgVU5MRVNTX0VOQUJM
RUQoeyBVTlVTRURfUEFSQU0ob2xkU2VsZWN0aW9uKTsgfSkKICAgICB2b2lkIGFwcGx5UGVuZGlu
Z0NvcnJlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uQWZ0ZXJUeXBpbmcp
IFVOTEVTU19FTkFCTEVEKHsgVU5VU0VEX1BBUkFNKHNlbGVjdGlvbkFmdGVyVHlwaW5nKTsgfSkK
QEAgLTEzMCwyMCArMTMxLDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZWRBdXRvY29ycmVj
dGlvbkF0UG9zaXRpb24oY29uc3QgUG9zaXRpb24mLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsU3Ry
aW5nKSBVTkxFU1NfRU5BQkxFRCh7IFVOVVNFRF9QQVJBTShvcmlnaW5hbFN0cmluZyk7IH0pCiAK
ICAgICBib29sIGluc2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8
RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiwgRXZlbnQqKTsKKyAgICB2b2lkIHJlbW92ZURpY3RhdGlv
bkFsdGVybmF0aXZlc0Zvck1hcmtlcihjb25zdCBEb2N1bWVudE1hcmtlciopOworICAgIFZlY3Rv
cjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcihjb25zdCBEb2N1bWVudE1h
cmtlciopOworICAgIHZvaWQgYXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZShjb25zdCBTdHJpbmcm
IGFsdGVybmF0aXZlU3RyaW5nKTsKIAogcHJpdmF0ZToKICNpZiBVU0UoQVVUT0NPUlJFQ1RJT05f
UEFORUwpCiAgICAgU3RyaW5nIGRpc21pc3NTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5h
dGl2ZVRleHQpOwotICAgIHZvaWQgYXBwbHlBbHRlcm5hdGl2ZVRleHQoY29uc3QgU3RyaW5nJiBh
bHRlcm5hdGl2ZSwgY29uc3QgVmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiYpOwor
ICAgIHR5cGVkZWYgU3RyaW5nKF5NYXJrZXJEZXNjcmlwdGlvblN1cHBsaWVyKShBbHRlcm5hdGl2
ZVRleHRUeXBlLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7CisgICAgdm9pZCBhcHBseUFs
dGVybmF0aXZlVGV4dFRvUmFuZ2UoY29uc3QgUmFuZ2UqLCBjb25zdCBTdHJpbmcmIGFsdGVybmF0
aXZlLCBBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1h
cmtlclR5cGU+JiwgTWFya2VyRGVzY3JpcHRpb25TdXBwbGllciA9IDApOwogICAgIHZvaWQgdGlt
ZXJGaXJlZChUaW1lcjxBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyPiopOwogICAgIHZvaWQgcmVj
b3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2VkKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogICAgIHZvaWQgcmVjb3Jk
U3BlbGxjaGVja2VyUmVzcG9uc2VGb3JNb2RpZmllZENvcnJlY3Rpb24oUmFuZ2UqIHJhbmdlT2ZD
b3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIGNvcnJlY3RlZCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0
aW9uKTsKKyAgICBTdHJpbmcgbWFya2VyRGVzY3JpcHRpb25Gb3JBcHBsaWVkQWx0ZXJuYXRpdmVU
ZXh0KEFsdGVybmF0aXZlVGV4dFR5cGUsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKIAot
ICAgIGJvb2wgc2hvdWxkU3RhcnRUaW1lckZvcihjb25zdCBEb2N1bWVudE1hcmtlciogbWFya2Vy
LCBpbnQgZW5kT2Zmc2V0KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICgoKG1hcmtlci0+
dHlwZSgpID09IERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCAmJiAhbWFya2VyLT5kZXNjcmlw
dGlvbigpLmlzTnVsbCgpKSAKLSAgICAgICAgICAgICAgICAgfHwgbWFya2VyLT50eXBlKCkgPT0g
RG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nKSAmJiBzdGF0aWNfY2FzdDxpbnQ+KG1hcmtlci0+ZW5k
T2Zmc2V0KCkpID09IGVuZE9mZnNldCk7Ci0gICAgfQorICAgIGJvb2wgc2hvdWxkU3RhcnRUaW1l
ckZvcihjb25zdCBEb2N1bWVudE1hcmtlciYsIGludCBlbmRPZmZzZXQpIGNvbnN0OworICAgIGJv
b2wgcmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQoY29uc3QgRG9jdW1lbnRNYXJrZXImLCBjb25z
dCBQb3NpdGlvbiYgZW5kT2ZXb3JkUG9zaXRpb24sIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rp
b25PcHRpb25zKTsKIAogICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCogYWx0ZXJuYXRpdmVUZXh0
Q2xpZW50KCk7CiAgICAgRWRpdG9yQ2xpZW50KiBlZGl0b3JDbGllbnQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAppbmRleCBiNDYwZWQxOTJhYTIzYTFmNTNhMTM4ZDM1NTlhZjgyNzQ2NmMx
ZDFkLi4xNDg5Mjg0NTZjNGFmZTEzMDUyMGExZGQ0Y2Q3MjgzNTQzYzBkOTBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00ODEsMTMgKzQ4MSwxMyBAQCBib29sIEVkaXRvcjo6c2hv
dWxkU2hvd0RlbGV0ZUludGVyZmFjZShIVE1MRWxlbWVudCogZWxlbWVudCkgY29uc3QKICAgICBy
ZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPnNob3VsZFNob3dEZWxldGVJbnRlcmZhY2UoZWxl
bWVudCk7CiB9CiAKLXZvaWQgRWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbikKK3ZvaWQgRWRpdG9yOjpub3RpZnlDb21w
b25lbnRzT25DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVj
dGlvbiwgRnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucykKIHsKICAg
ICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5yZXNwb25kVG9DaGFuZ2VkU2VsZWN0
aW9uKG1fZnJhbWUpOwogICAgIHNldFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZSh0cnVlKTsKICAg
ICBtX2RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXItPnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24ob2xk
U2VsZWN0aW9uKTsKLSAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPnJlc3BvbmRUb0No
YW5nZWRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uKTsKKyAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXItPnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uLCBvcHRpb25zKTsK
IH0KIAogdm9pZCBFZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiBlbmRpbmdTZWxlY3Rpb24pCkBAIC03OTAsNyArNzkwLDggQEAgdm9pZCBFZGl0
b3I6OmFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQdHI8Q29tcG9zaXRlRWRpdENvbW1hbmQ+IGNtZCkK
ICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPnJlc3BvbmRUb0FwcGxpZWRFZGl0aW5n
KGNtZC5nZXQoKSk7CiAKICAgICAvLyBEb24ndCBjbGVhciB0aGUgdHlwaW5nIHN0eWxlIHdpdGgg
dGhpcyBzZWxlY3Rpb24gY2hhbmdlLiAgV2UgZG8gdGhvc2UgdGhpbmdzIGVsc2V3aGVyZSBpZiBu
ZWNlc3NhcnkuCi0gICAgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwg
ZmFsc2UsIGZhbHNlKTsKKyAgICBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyBv
cHRpb25zID0gY21kLT5pc0RpY3RhdGlvbkNvbW1hbmQoKSA/IEZyYW1lU2VsZWN0aW9uOjpEaWN0
YXRpb25UcmlnZ2VyZWQgOiAwOworICAgIGNoYW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChuZXdT
ZWxlY3Rpb24sIG9wdGlvbnMpOwogCiAgICAgaWYgKCFjbWQtPnByZXNlcnZlc1R5cGluZ1N0eWxl
KCkpCiAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5jbGVhclR5cGluZ1N0eWxlKCk7CkBA
IC04MTYsNyArODE3LDcgQEAgdm9pZCBFZGl0b3I6OnVuYXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0
cjxFZGl0Q29tbWFuZENvbXBvc2l0aW9uPiBjbWQpCiAgICAgZGlzcGF0Y2hFZGl0YWJsZUNvbnRl
bnRDaGFuZ2VkRXZlbnRzKGNtZC0+c3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCksIGNtZC0+
ZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpKTsKICAgICAKICAgICBWaXNpYmxlU2VsZWN0aW9u
IG5ld1NlbGVjdGlvbihjbWQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkpOwotICAgIGNoYW5nZVNlbGVj
dGlvbkFmdGVyQ29tbWFuZChuZXdTZWxlY3Rpb24sIHRydWUsIHRydWUpOworICAgIGNoYW5nZVNl
bGVjdGlvbkFmdGVyQ29tbWFuZChuZXdTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpDbG9zZVR5
cGluZyB8IEZyYW1lU2VsZWN0aW9uOjpDbGVhclR5cGluZ1N0eWxlKTsKICAgICBtX2FsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXItPnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcoY21kLmdldCgpKTsK
ICAgICAKICAgICBtX2xhc3RFZGl0Q29tbWFuZCA9IDA7CkBAIC04MzIsNyArODMzLDcgQEAgdm9p
ZCBFZGl0b3I6OnJlYXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cjxFZGl0Q29tbWFuZENvbXBvc2l0
aW9uPiBjbWQpCiAgICAgZGlzcGF0Y2hFZGl0YWJsZUNvbnRlbnRDaGFuZ2VkRXZlbnRzKGNtZC0+
c3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCksIGNtZC0+ZW5kaW5nUm9vdEVkaXRhYmxlRWxl
bWVudCgpKTsKICAgICAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbihjbWQtPmVu
ZGluZ1NlbGVjdGlvbigpKTsKLSAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3U2Vs
ZWN0aW9uLCB0cnVlLCB0cnVlKTsKKyAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3
U2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6Q2xvc2VUeXBpbmcgfCBGcmFtZVNlbGVjdGlvbjo6
Q2xlYXJUeXBpbmdTdHlsZSk7CiAgICAgCiAgICAgbV9sYXN0RWRpdENvbW1hbmQgPSAwOwogICAg
IGlmIChjbGllbnQoKSkKQEAgLTIyNjcsNiArMjI2OCwxMCBAQCB2b2lkIEVkaXRvcjo6dXBkYXRl
TWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoYm9vbCBkb05vdFJlbW92ZUlmU2VsZWN0
aW9uQQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CiAgICAg
UmVmUHRyPFJhbmdlPiB3b3JkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBzdGFydE9m
Rmlyc3RXb3JkLmRlZXBFcXVpdmFsZW50KCksIGVuZE9mTGFzdFdvcmQuZGVlcEVxdWl2YWxlbnQo
KSk7CiAKKyAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBtYXJrZXJzID0gZG9jdW1lbnQtPm1h
cmtlcnMoKS0+bWFya2Vyc0luUmFuZ2Uod29yZFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6
RGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hcmtl
cnMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+cmVt
b3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKG1hcmtlcnNbaV0pOworCiAgICAgZG9j
dW1lbnQtPm1hcmtlcnMoKS0+cmVtb3ZlTWFya2Vycyh3b3JkUmFuZ2UuZ2V0KCksIERvY3VtZW50
TWFya2VyOjpTcGVsbGluZyB8IERvY3VtZW50TWFya2VyOjpDb3JyZWN0aW9uSW5kaWNhdG9yIHwg
RG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24gfCBEb2N1bWVudE1hcmtlcjo6
RGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OlJlbW92ZVBh
cnRpYWxseU92ZXJsYXBwaW5nTWFya2VyKTsKICAgICBkb2N1bWVudC0+bWFya2VycygpLT5jbGVh
ckRlc2NyaXB0aW9uT25NYXJrZXJzSW50ZXJzZWN0aW5nUmFuZ2Uod29yZFJhbmdlLmdldCgpLCBE
b2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpOwogfQpAQCAtMjQxNCw3ICsyNDE5LDcgQEAgdm9p
ZCBFZGl0b3I6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxBc0lnbm9yZWQoKQogICAgIG1fYWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci0+ZGlzbWlzcyhSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRp
dmVUZXh0SWdub3JlZCk7CiB9CiAKLXZvaWQgRWRpdG9yOjpjaGFuZ2VTZWxlY3Rpb25BZnRlckNv
bW1hbmQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9uLCBib29sIGNsb3NlVHlw
aW5nLCBib29sIGNsZWFyVHlwaW5nU3R5bGUpCit2b2lkIEVkaXRvcjo6Y2hhbmdlU2VsZWN0aW9u
QWZ0ZXJDb21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgIEZyYW1l
U2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgLy8gSWYgdGhl
IG5ldyBzZWxlY3Rpb24gaXMgb3JwaGFuZWQsIHRoZW4gZG9uJ3QgdXBkYXRlIHRoZSBzZWxlY3Rp
b24uCiAgICAgaWYgKG5ld1NlbGVjdGlvbi5zdGFydCgpLmlzT3JwaGFuKCkgfHwgbmV3U2VsZWN0
aW9uLmVuZCgpLmlzT3JwaGFuKCkpCkBAIC0yNDI1LDE0ICsyNDMwLDggQEAgdm9pZCBFZGl0b3I6
OmNoYW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdT
ZWxlY3Rpb24sIGIKICAgICAvLyBUaGUgb2xkIHNlbGVjdGlvbiBjYW4gYmUgaW52YWxpZCBoZXJl
IGFuZCBjYWxsaW5nIHNob3VsZENoYW5nZVNlbGVjdGlvbiBjYW4gcHJvZHVjZSBzb21lIHN0cmFu
Z2UgY2FsbHMuCiAgICAgLy8gU2VlIDxyZGFyOi8vcHJvYmxlbS81NzI5MzE1PiBTb21lIHNob3Vs
ZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2UgY29udGFpbiBSYW5nZXMgZm9yIHNlbGVjdGlvbnMgdGhh
dCBhcmUgbm8gbG9uZ2VyIHZhbGlkCiAgICAgYm9vbCBzZWxlY3Rpb25EaWROb3RDaGFuZ2VET01Q
b3NpdGlvbiA9IG5ld1NlbGVjdGlvbiA9PSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9u
KCk7Ci0gICAgaWYgKHNlbGVjdGlvbkRpZE5vdENoYW5nZURPTVBvc2l0aW9uIHx8IG1fZnJhbWUt
PnNlbGVjdGlvbigpLT5zaG91bGRDaGFuZ2VTZWxlY3Rpb24obmV3U2VsZWN0aW9uKSkgewotICAg
ICAgICBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyBvcHRpb25zID0gMDsKLSAg
ICAgICAgaWYgKGNsb3NlVHlwaW5nKQotICAgICAgICAgICAgb3B0aW9ucyB8PSBGcmFtZVNlbGVj
dGlvbjo6Q2xvc2VUeXBpbmc7Ci0gICAgICAgIGlmIChjbGVhclR5cGluZ1N0eWxlKQotICAgICAg
ICAgICAgb3B0aW9ucyB8PSBGcmFtZVNlbGVjdGlvbjo6Q2xlYXJUeXBpbmdTdHlsZTsKKyAgICBp
ZiAoc2VsZWN0aW9uRGlkTm90Q2hhbmdlRE9NUG9zaXRpb24gfHwgbV9mcmFtZS0+c2VsZWN0aW9u
KCktPnNob3VsZENoYW5nZVNlbGVjdGlvbihuZXdTZWxlY3Rpb24pKQogICAgICAgICBtX2ZyYW1l
LT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgb3B0aW9ucyk7Ci0gICAg
fQogCiAgICAgLy8gU29tZSBlZGl0aW5nIG9wZXJhdGlvbnMgY2hhbmdlIHRoZSBzZWxlY3Rpb24g
dmlzdWFsbHkgd2l0aG91dCBhZmZlY3RpbmcgaXRzIHBvc2l0aW9uIHdpdGhpbiB0aGUgRE9NLgog
ICAgIC8vIEZvciBleGFtcGxlIHdoZW4geW91IHByZXNzIHJldHVybiBpbiB0aGUgZm9sbG93aW5n
ICh0aGUgY2FyZXQgaXMgbWFya2VkIGJ5IF4pOgpAQCAtMjgyNyw3ICsyODI2LDcgQEAgdm9pZCBF
ZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
b2xkU2VsZWN0aW9uLCBGcmEKICAgICBpZiAoIWlzQ29udGludW91c0dyYW1tYXJDaGVja2luZ0Vu
YWJsZWQpCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+cmVtb3ZlTWFy
a2VycyhEb2N1bWVudE1hcmtlcjo6R3JhbW1hcik7CiAKLSAgICByZXNwb25kVG9DaGFuZ2VkU2Vs
ZWN0aW9uKG9sZFNlbGVjdGlvbik7CisgICAgbm90aWZ5Q29tcG9uZW50c09uQ2hhbmdlZFNlbGVj
dGlvbihvbGRTZWxlY3Rpb24sIG9wdGlvbnMpOwogfQogCiBzdGF0aWMgTm9kZSogZmluZEZpcnN0
TWFya2FibGUoTm9kZSogbm9kZSkKQEAgLTI5MTgsNCArMjkxNywxNCBAQCB2b2lkIEVkaXRvcjo6
d2lsbERldGFjaFBhZ2UoKQogICAgICAgICBlZGl0b3JDbGllbnQtPmZyYW1lV2lsbERldGFjaFBh
Z2UoZnJhbWUoKSk7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IEVkaXRvcjo6ZGljdGF0aW9uQWx0ZXJu
YXRpdmVzRm9yTWFya2VyKGNvbnN0IERvY3VtZW50TWFya2VyKiBtYXJrZXIpCit7CisgICAgcmV0
dXJuIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+ZGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9y
TWFya2VyKG1hcmtlcik7Cit9CisKK3ZvaWQgRWRpdG9yOjphcHBseURpY3RhdGlvbkFsdGVybmF0
aXZlbHRlcm5hdGl2ZShjb25zdCBTdHJpbmcmIGFsdGVybmF0aXZlU3RyaW5nKQoreworICAgIG1f
YWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+YXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZShhbHRl
cm5hdGl2ZVN0cmluZyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCmluZGV4IGYwZTVjMjRlNjViOTFmNjM1NzAxYzUzNTllMDlkYzFkYzdhYjdlZGMu
LmNiMTBiYzVhZjZhMGI2Yjg1MjhjZmFkYzMyZGYyODJiNDg1NjM4M2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaApAQCAtMTM0LDggKzEzNCw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZFNo
b3dEZWxldGVJbnRlcmZhY2UoSFRNTEVsZW1lbnQqKSBjb25zdDsKICAgICBib29sIHNob3VsZERl
bGV0ZVJhbmdlKFJhbmdlKikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKFN0eWxl
UHJvcGVydHlTZXQqLCBSYW5nZSopOwotICAgIAotICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNl
bGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24pOworCiAgICAgdm9p
ZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZW5kaW5n
U2VsZWN0aW9uKTsKIAogICAgIGJvb2wgc2VsZWN0aW9uU3RhcnRIYXNTdHlsZShDU1NQcm9wZXJ0
eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdDsKQEAgLTM5NSw3ICszOTQsOCBAQCBwdWJs
aWM6CiAKICAgICBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3IgZGVmYXVsdFBhcmFncmFwaFNlcGFy
YXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcjsgfQogICAg
IHZvaWQgc2V0RGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0
b3Igc2VwYXJhdG9yKSB7IG1fZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvciA9IHNlcGFyYXRvcjsg
fQotCisgICAgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKGNv
bnN0IERvY3VtZW50TWFya2VyKik7CisgICAgdm9pZCBhcHBseURpY3RhdGlvbkFsdGVybmF0aXZl
bHRlcm5hdGl2ZShjb25zdCBTdHJpbmcmIGFsdGVybmF0aXZlU3RyaW5nKTsKIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hQYWdlKCkgT1ZFUlJJREU7CiAKQEAgLTQyOSw3ICs0
MjksOCBAQCBwcml2YXRlOgogICAgIGVudW0gU2V0Q29tcG9zaXRpb25Nb2RlIHsgQ29uZmlybUNv
bXBvc2l0aW9uLCBDYW5jZWxDb21wb3NpdGlvbiB9OwogICAgIHZvaWQgc2V0Q29tcG9zaXRpb24o
Y29uc3QgU3RyaW5nJiwgU2V0Q29tcG9zaXRpb25Nb2RlKTsKIAotICAgIHZvaWQgY2hhbmdlU2Vs
ZWN0aW9uQWZ0ZXJDb21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwg
Ym9vbCBjbG9zZVR5cGluZywgYm9vbCBjbGVhclR5cGluZ1N0eWxlKTsKKyAgICB2b2lkIGNoYW5n
ZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rp
b24sIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zKTsKKyAgICB2b2lkIG5vdGlm
eUNvbXBvbmVudHNPbkNoYW5nZWRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xk
U2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyk7CiAKICAgICBO
b2RlKiBmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCA4ZmM0MmVjY2UwMzYyMDJhN2YwMjg0MGEw
ZTVkMTM0ZGM2NWRmYjA4Li40ZDdmOTg3NzU5NWMyNjQzMzJiZWQ4OGYzYTQ1OGFkODFiNzZkNDMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCkBAIC0xMTgsNiArMTE4
LDcgQEAgcHVibGljOgogICAgICAgICBDbGVhclR5cGluZ1N0eWxlID0gMSA8PCAyLAogICAgICAg
ICBTcGVsbENvcnJlY3Rpb25UcmlnZ2VyZWQgPSAxIDw8IDMsCiAgICAgICAgIERvTm90U2V0Rm9j
dXMgPSAxIDw8IDQsCisgICAgICAgIERpY3RhdGlvblRyaWdnZXJlZCA9IDEgPDwgNQogICAgIH07
CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBTZXRTZWxlY3Rpb25PcHRpb25zOyAvLyBVbmlvbiBvZiB2
YWx1ZXMgaW4gU2V0U2VsZWN0aW9uT3B0aW9uIGFuZCBFVXNlclRyaWdnZXJlZAogICAgIHN0YXRp
YyBpbmxpbmUgRVVzZXJUcmlnZ2VyZWQgc2VsZWN0aW9uT3B0aW9uc1RvVXNlclRyaWdnZXJlZChT
ZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQz
YjNlODhhODBjYjljZDljZGVjNjRiYzU2OTVlZjFiZmQxZDViY2QKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIu
aApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXJfaAorI2RlZmluZSBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXJfaAorCisj
aW5jbHVkZSAiQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisK
KyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKK09CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJu
YXRpdmVzOworT0JKQ19DTEFTUyBOU1ZpZXc7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyIHsKK3B1YmxpYzoKKyAgICBBbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXIoKSB7IH0KKyAgICAvLyBSZXR1cm5zIGEgY29udGV4dCBJRC4KKyAg
ICB1aW50NjRfdCBhZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0
aXZlcz4mKTsKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCBzaG93QWx0ZXJuYXRpdmVzKE5T
VmlldyosIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlByaW1hcnlTdHJpbmcsIHVpbnQ2
NF90IGNvbnRleHQsIHZvaWQoXmFjY2VwdGFuY2VIYW5kbGVyKShOU1N0cmluZyopKTsKKyAgICB2
b2lkIGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKKyAgICB2b2lkIHJlbW92ZUFsdGVybmF0aXZlcyh1
aW50NjRfdCBjb250ZXh0KTsKKyAgICBWZWN0b3I8U3RyaW5nPiBhbHRlcm5hdGl2ZXNGb3JDb250
ZXh0KHVpbnQ2NF90IGNvbnRleHQpOworCitwcml2YXRlOgorICAgIHZvaWQgaGFuZGxlQWNjZXB0
ZWRBbHRlcm5hdGl2ZShOU1N0cmluZyogYWNjZXB0ZWRBbHRlcm5hdGl2ZSwgdWludDY0X3QgY29u
dGV4dCwgTlNUZXh0QWx0ZXJuYXRpdmVzKik7CisKKyAgICBjbGFzcyBBbGVybmF0aXZlVGV4dENv
bnRleHRDb250cm9sbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEFsZXJuYXRpdmVUZXh0Q29u
dGV4dENvbnRyb2xsZXIoKSB7IH0KKyAgICAgICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNv
bnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7CisgICAgICAgIHZvaWQgY2xlYXIo
KTsKKyAgICAgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVp
bnQ2NF90IGNvbnRleHQpOworICAgICAgICB2b2lkIHJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRl
eHQodWludDY0X3QgY29udGV4dCk7CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBpbnZh
bGlkQ29udGV4dCA9IDA7CisgICAgcHJpdmF0ZToKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPHVp
bnQ2NF90LCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiA+IEhhc2hNYXBUeXBlOworICAg
ICAgICBIYXNoTWFwVHlwZSBtX2FsdGVybmF0aXZlc09iamVjdE1hcDsKKyAgICB9OworCisgICAg
QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlciBtX2NvbnRleHRDb250cm9sbGVyOworICAg
IFJldGFpblB0cjxOU1ZpZXc+IG1fdmlldzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCisjZW5kaWYgLy8gQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjk2M2VmYzczMjdhNWI3NTQ4YzJhMjE5MWIwZTFhMDVm
NzA2ZGFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXIuaCIKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorI2ltcG9ydCA8QXBwS2l0
L05TU3BlbGxDaGVja2VyLmg+CisjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+
CisjaW1wb3J0IDxBcHBLaXQvTlNWaWV3Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordWlu
dDY0X3QgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRD
b250cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0
aXZlcz4mIGFsdGVybmF0aXZlcykKK3sKKyAgICB1aW50NjRfdCBjb250ZXh0ID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50NjRfdD4oYWx0ZXJuYXRpdmVzLmdldCgpKTsKKyAgICBpZiAoIWNvbnRleHQp
CisgICAgICAgIHJldHVybiBpbnZhbGlkQ29udGV4dDsKKyAgICBpZiAoYWx0ZXJuYXRpdmVzRm9y
Q29udGV4dChjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQ7CisKKyAgICBIYXNoTWFw
VHlwZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmFkZChjb250
ZXh0LCBhbHRlcm5hdGl2ZXMpOworICAgIHJldHVybiByZXN1bHQuaXNOZXdFbnRyeSA/IGNvbnRl
eHQgOiBpbnZhbGlkQ29udGV4dDsKK30KKworTlNUZXh0QWx0ZXJuYXRpdmVzKiBBbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmFsdGVy
bmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4dCkKK3sKKyAgICBIYXNoTWFwVHlwZTo6
Y29uc3RfaXRlcmF0b3IgaXRyID0gbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuZmluZChjb250ZXh0
KTsKKyAgICBpZiAoaXRyID09IG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmVuZCgpKQorICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gaXRyLT5zZWNvbmQuZ2V0KCk7Cit9CisKK3ZvaWQg
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9s
bGVyOjpyZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpCit7Cisg
ICAgbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAucmVtb3ZlKGNvbnRleHQpOworfQorCit2b2lkIEFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxl
cjo6Y2xlYXIoKQoreworICAgIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmNsZWFyKCk7Cit9CisK
K3VpbnQ2NF90IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWRkQWx0ZXJuYXRpdmVzKGNv
bnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBhbHRlcm5hdGl2ZXMpCit7CisgICAg
cmV0dXJuIG1fY29udGV4dENvbnRyb2xsZXIuYWRkQWx0ZXJuYXRpdmVzKGFsdGVybmF0aXZlcyk7
Cit9CisKK1ZlY3RvcjxTdHJpbmc+IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWx0ZXJu
YXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0KQoreworICAgIE5TVGV4dEFsdGVybmF0
aXZlcyogdGV4dEFsdGVybmF0aXZlcyA9IG1fY29udGV4dENvbnRyb2xsZXIuYWx0ZXJuYXRpdmVz
Rm9yQ29udGV4dChjb250ZXh0KTsKKyAgICBWZWN0b3I8U3RyaW5nPiBhbHRlcm5hdGl2ZVN0cmlu
Z3M7CisgICAgZm9yIChOU1N0cmluZyogc3RyaW5nIGluIHRleHRBbHRlcm5hdGl2ZXMuYWx0ZXJu
YXRpdmVTdHJpbmdzKQorICAgICAgICBhbHRlcm5hdGl2ZVN0cmluZ3MuYXBwZW5kKHN0cmluZyk7
CisgICAgcmV0dXJuIGFsdGVybmF0aXZlU3RyaW5nczsKK30KKwordm9pZCBBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXI6OmNsZWFyKCkKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0Q29udHJvbGxl
ci5jbGVhcigpOworfQorCit2b2lkIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6c2hvd0Fs
dGVybmF0aXZlcyhOU1ZpZXcqIHZpZXcsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlBy
aW1hcnlTdHJpbmcsIHVpbnQ2NF90IGNvbnRleHQsIHZvaWQoXmFjY2VwdGFuY2VIYW5kbGVyKShO
U1N0cmluZyopKQoreworICAgIGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKKyAgICBpZiAoIXZpZXcp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fdmlldyA9IHZpZXc7CisgICAgTlNUZXh0QWx0ZXJu
YXRpdmVzKiBhbHRlcm5hdGl2ZXMgPSBtX2NvbnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0Zv
ckNvbnRleHQoY29udGV4dCk7CisgICAgaWYgKCFhbHRlcm5hdGl2ZXMpCisgICAgICAgIHJldHVy
bjsKKyAgICBOU1NwZWxsQ2hlY2tlciogc3BlbGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNo
YXJlZFNwZWxsQ2hlY2tlcl07CisgICAgW3NwZWxsQ2hlY2tlciBzaG93Q29ycmVjdGlvbkluZGlj
YXRvck9mVHlwZTpOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlR3Vlc3NlcyBwcmltYXJ5U3RyaW5n
OmFsdGVybmF0aXZlcy5wcmltYXJ5U3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2
ZXMuYWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUHJpbWFy
eVN0cmluZyB2aWV3Om1fdmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nKiBh
Y2NlcHRlZFN0cmluZykgeworICAgICAgICBpZiAoYWNjZXB0ZWRTdHJpbmcpIHsKKyAgICAgICAg
ICAgIGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUoYWNjZXB0ZWRTdHJpbmcsIGNvbnRleHQsIGFs
dGVybmF0aXZlcyk7CisgICAgICAgICAgICBhY2NlcHRhbmNlSGFuZGxlcihhY2NlcHRlZFN0cmlu
Zyk7CisgICAgICAgIH0KKyAgICB9XTsKK30KKwordm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXI6OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUoTlNTdHJpbmcqIGFjY2VwdGVkQWx0ZXJu
YXRpdmUsIHVpbnQ2NF90IGNvbnRleHQsIE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVz
KQoreworICAgIFthbHRlcm5hdGl2ZXMgbm90ZVNlbGVjdGVkQWx0ZXJuYXRpdmVTdHJpbmc6YWNj
ZXB0ZWRBbHRlcm5hdGl2ZV07CisgICAgbV9jb250ZXh0Q29udHJvbGxlci5yZW1vdmVBbHRlcm5h
dGl2ZXNGb3JDb250ZXh0KGNvbnRleHQpOworICAgIG1fdmlldy5jbGVhcigpOworfQorCit2b2lk
IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6ZGlzbWlzc0FsdGVybmF0aXZlcygpCit7Cisg
ICAgaWYgKCFtX3ZpZXcpCisgICAgICAgIHJldHVybjsKKyAgICBbW05TU3BlbGxDaGVja2VyIHNo
YXJlZFNwZWxsQ2hlY2tlcl0gZGlzbWlzc0NvcnJlY3Rpb25JbmRpY2F0b3JGb3JWaWV3Om1fdmll
dy5nZXQoKV07Cit9CisKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpyZW1vdmVB
bHRlcm5hdGl2ZXModWludDY0X3QgY29udGV4dCkKK3sKKyAgICBtX2NvbnRleHRDb250cm9sbGVy
LnJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCk7Cit9Cit9CisjZW5kaWYgLy8g
VVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0ODMzOTk0
ZGZmMTAyOTMxNmM1ZDIwMzkxMmU4NmRiMTJjMTdiNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaApAQCAtMCww
ICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2Vf
aAorI2RlZmluZSBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VfaAorCisjaW5jbHVkZSAiQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgVVNF
KERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCitPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdl
IHsKKyAgICBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UoTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbkFs
dGVybmF0aXZlcywgTlNSYW5nZSBhUmFuZ2UpOworICAgIE5TUmFuZ2UgcmFuZ2U7CisgICAgUmV0
YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4gYWx0ZXJuYXRpdmVzOworfTsKKwordm9pZCBjb2xs
ZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlcyhOU0F0dHJpYnV0ZWRTdHJpbmcqLCBWZWN0b3I8
VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgYWx0ZXJuYXRpdmVzKTsKKworI2Vsc2UKK3N0cnVj
dCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UgeyB9OworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2Uu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2Uu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWVhNThmODk0ZjhlZWY1ZTYzNWE4NzlhMGI3ODEwZGZkNGMyZmUxYwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1RleHRBbHRlcm5h
dGl2ZVdpdGhSYW5nZS5tbQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmgiCisKKyNpZiBVU0Uo
RElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyNpbXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2
ZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U6
OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZShOU1RleHRBbHRlcm5hdGl2ZXMqIGFuQWx0ZXJuYXRp
dmVzLCBOU1JhbmdlIGFSYW5nZSkKKzogcmFuZ2UoYVJhbmdlKQorLCBhbHRlcm5hdGl2ZXMoYW5B
bHRlcm5hdGl2ZXMpCit7Cit9CisKK3ZvaWQgY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2
ZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRo
UmFuZ2U+JiBhbHRlcm5hdGl2ZXMpIHsKKyAgICBOU1JhbmdlIGVmZmVjdGl2ZVJhbmdlID0gTlNN
YWtlUmFuZ2UoMCwgMCk7CisgICAgTlNVSW50ZWdlciBsZW5ndGggPSBbc3RyaW5nIGxlbmd0aF07
CisgICAgZG8geworICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbc3RyaW5nIGF0
dHJpYnV0ZXNBdEluZGV4OmVmZmVjdGl2ZVJhbmdlLmxvY2F0aW9uIGVmZmVjdGl2ZVJhbmdlOiZl
ZmZlY3RpdmVSYW5nZV07CisgICAgICAgIGlmICghYXR0cmlidXRlcykKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBOU1RleHRBbHRlcm5hdGl2ZXMgKnRleHRBbHRlcm5hdGl2ZXMgPSBbYXR0
cmlidXRlcyBvYmplY3RGb3JLZXk6TlNUZXh0QWx0ZXJuYXRpdmVzQXR0cmlidXRlTmFtZV07Cisg
ICAgICAgIGlmICh0ZXh0QWx0ZXJuYXRpdmVzKQorICAgICAgICAgICAgYWx0ZXJuYXRpdmVzLmFw
cGVuZChUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UodGV4dEFsdGVybmF0aXZlcywgZWZmZWN0aXZl
UmFuZ2UpKTsKKyAgICAgICAgZWZmZWN0aXZlUmFuZ2UubG9jYXRpb24gPSBOU01heFJhbmdlKGVm
ZmVjdGl2ZVJhbmdlKTsKKyAgICB9IHdoaWxlIChlZmZlY3RpdmVSYW5nZS5sb2NhdGlvbiA8IGxl
bmd0aCk7Cit9Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0aXZlVGV4
dENsaWVudC5oCmluZGV4IDA5NDdjODdiYTAyNDE0NDMxZTY2ZDM2M2M2OGE5MzY2NmZkZTk2ZmQu
Ljc0ZjA3ODIyMjZlNTY0Mjc5MTM3ZTA1YTUzMzJiZjZjZWIxMjFhYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaApAQCAtMzEsNiArMzEsMTEgQEAKICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
KyNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFk
ZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
TElPTikKKy8vIFNvbWUgcGxhdGZvcm1zIHByb3ZpZGUgVUkgZm9yIHN1Z2dlc3RpbmcgYWx0ZXJu
YXRpdmUgZGljdGF0aW9uIHRleHQuCisjZGVmaW5lIFdURl9VU0VfRElDVEFUSU9OX0FMVEVSTkFU
SVZFUyAxCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9M
RU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX0xJT04pCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBSZWFzb25G
b3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0IHsKQEAgLTQzLDYgKzQ4LDcgQEAgZW51bSBBbHRl
cm5hdGl2ZVRleHRUeXBlIHsKICAgICBBbHRlcm5hdGl2ZVRleHRUeXBlQ29ycmVjdGlvbiA9IDAs
CiAgICAgQWx0ZXJuYXRpdmVUZXh0VHlwZVJldmVyc2lvbiwKICAgICBBbHRlcm5hdGl2ZVRleHRU
eXBlU3BlbGxpbmdTdWdnZXN0aW9ucywKKyAgICBBbHRlcm5hdGl2ZVRleHRUeXBlRGljdGF0aW9u
QWx0ZXJuYXRpdmVzLAogfTsKIAogZW51bSBBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSB7CkBA
IC01NCwxMSArNjAsMTggQEAgY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5BbHRlcm5hdGl2ZVRleHRDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgcGFnZURlc3Ryb3llZCgpID0gMDsKLQorI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkK
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShBbHRlcm5hdGl2ZVRl
eHRUeXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNtZW50U3RyaW5n
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0FsdGVybmF0aXZlKFJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQWx0ZXJu
YXRpdmVTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJl
c3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlbWVudFN0cmluZykgPSAwOworI2VuZGlmCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5B
VElWRVMpCisgICAgdmlydHVhbCB2b2lkIHNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3Qg
ZGljdGF0aW9uQ29udGV4dCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzRGljdGF0aW9u
QWx0ZXJuYXRpdmVVSSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0
ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKKyAgICB2aXJ0dWFsIFZl
Y3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250
ZXh0KSA9IDA7CisjZW5kaWYKIH07CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggOWI5MTA3MjRiNWU3ZWRmYjEwNzY4YzNmMWQ1
MjViOTVkODNmZDhkNy4uN2NmMmRiZTViZTIwNDgwYTI0NWMzMTI1OWIxMjA1ZjJlODIzNjgxOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAt
NDgxLDYgKzQ4MSw5IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0
ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAgICAgICBwYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmluc3BlY3QobV9oaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVk
Tm9kZSgpKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKKyAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ0RpY3RhdGlvbkFsdGVybmF0aXZlOgorICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGx5
RGljdGF0aW9uQWx0ZXJuYXRpdmVsdGVybmF0aXZlKGl0ZW0tPnRpdGxlKCkpOworICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkBAIC04OTYsNTAgKzg5
OSw2NSBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAgIH0gZWxz
ZSB7IC8vIE1ha2UgYW4gZWRpdGluZyBjb250ZXh0IG1lbnUKICAgICAgICAgRnJhbWVTZWxlY3Rp
b24qIHNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKTsKICAgICAgICAgYm9vbCBpblBhc3N3
b3JkRmllbGQgPSBzZWxlY3Rpb24tPmlzSW5QYXNzd29yZEZpZWxkKCk7Ci0gICAgICAgIGJvb2wg
c3BlbGxDaGVja2luZ0VuYWJsZWQgPSBmcmFtZS0+ZWRpdG9yKCktPmlzU3BlbGxDaGVja2luZ0Vu
YWJsZWRGb3Iobm9kZSk7Ci0KLSAgICAgICAgaWYgKCFpblBhc3N3b3JkRmllbGQgJiYgc3BlbGxD
aGVja2luZ0VuYWJsZWQpIHsKLSAgICAgICAgICAgIC8vIENvbnNpZGVyIGFkZGluZyBzcGVsbGlu
Zy1yZWxhdGVkIG9yIGdyYW1tYXItcmVsYXRlZCBjb250ZXh0IG1lbnUgaXRlbXMgKG5ldmVyIGJv
dGgsIHNpbmNlIGEgc2luZ2xlIHNlbGVjdGVkIHJhbmdlCi0gICAgICAgICAgICAvLyBpcyBuZXZl
ciBjb25zaWRlcmVkIGEgbWlzc3BlbGxpbmcgYW5kIGJhZCBncmFtbWFyIGF0IHRoZSBzYW1lIHRp
bWUpCi0gICAgICAgICAgICBib29sIG1pc3NwZWxsaW5nOwotICAgICAgICAgICAgYm9vbCBiYWRH
cmFtbWFyOwotICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZ3Vlc3NlcyA9IGZyYW1lLT5lZGl0
b3IoKS0+Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxTZWxlY3Rpb24obWlzc3Bl
bGxpbmcsIGJhZEdyYW1tYXIpOwotICAgICAgICAgICAgaWYgKG1pc3NwZWxsaW5nIHx8IGJhZEdy
YW1tYXIpIHsKLSAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IGd1ZXNzZXMuc2l6ZSgpOwot
ICAgICAgICAgICAgICAgIGlmIChzaXplID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgLy8g
SWYgdGhlcmUncyBiYWQgZ3JhbW1hciBidXQgbm8gc3VnZ2VzdGlvbnMgKGUuZy4sIHJlcGVhdGVk
IHdvcmQpLCBqdXN0IGxlYXZlIG9mZiB0aGUgc3VnZ2VzdGlvbnMKLSAgICAgICAgICAgICAgICAg
ICAgLy8gbGlzdCBhbmQgdHJhaWxpbmcgc2VwYXJhdG9yIHJhdGhlciB0aGFuIGFkZGluZyBhICJO
byBHdWVzc2VzIEZvdW5kIiBpdGVtIChtYXRjaGVzIEFwcEtpdCkKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKG1pc3NwZWxsaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVt
KE5vR3Vlc3Nlc0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAgICBpZiAoIWluUGFz
c3dvcmRGaWVsZCkgeworICAgICAgICAgICAgYm9vbCBoYXZlQ29udGV4dE1lbnVJdGVtc0Zvck1p
c3NwZWxsaW5nT3JHcmFtbWVyID0gZmFsc2U7CisgICAgICAgICAgICBib29sIHNwZWxsQ2hlY2tp
bmdFbmFibGVkID0gZnJhbWUtPmVkaXRvcigpLT5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkRm9yKG5v
ZGUpOworICAgICAgICAgICAgaWYgKHNwZWxsQ2hlY2tpbmdFbmFibGVkKSB7CisgICAgICAgICAg
ICAgICAgLy8gQ29uc2lkZXIgYWRkaW5nIHNwZWxsaW5nLXJlbGF0ZWQgb3IgZ3JhbW1hci1yZWxh
dGVkIGNvbnRleHQgbWVudSBpdGVtcyAobmV2ZXIgYm90aCwgc2luY2UgYSBzaW5nbGUgc2VsZWN0
ZWQgcmFuZ2UKKyAgICAgICAgICAgICAgICAvLyBpcyBuZXZlciBjb25zaWRlcmVkIGEgbWlzc3Bl
bGxpbmcgYW5kIGJhZCBncmFtbWFyIGF0IHRoZSBzYW1lIHRpbWUpCisgICAgICAgICAgICAgICAg
Ym9vbCBtaXNzcGVsbGluZzsKKyAgICAgICAgICAgICAgICBib29sIGJhZEdyYW1tYXI7CisgICAg
ICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZ3Vlc3NlcyA9IGZyYW1lLT5lZGl0b3IoKS0+Z3Vl
c3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxTZWxlY3Rpb24obWlzc3BlbGxpbmcsIGJh
ZEdyYW1tYXIpOworICAgICAgICAgICAgICAgIGlmIChtaXNzcGVsbGluZyB8fCBiYWRHcmFtbWFy
KSB7CisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplID0gZ3Vlc3Nlcy5zaXplKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghc2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gSWYgdGhlcmUncyBiYWQgZ3JhbW1hciBidXQgbm8gc3VnZ2VzdGlvbnMgKGUuZy4sIHJlcGVh
dGVkIHdvcmQpLCBqdXN0IGxlYXZlIG9mZiB0aGUgc3VnZ2VzdGlvbnMKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGxpc3QgYW5kIHRyYWlsaW5nIHNlcGFyYXRvciByYXRoZXIgdGhhbiBhZGRp
bmcgYSAiTm8gR3Vlc3NlcyBGb3VuZCIgaXRlbSAobWF0Y2hlcyBBcHBLaXQpCisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobWlzc3BlbGxpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcHBlbmRJdGVtKE5vR3Vlc3Nlc0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9j
b250ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nICZndWVzcyA9IGd1ZXNzZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFndWVzcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnU3Bl
bGxpbmdHdWVzcywgZ3Vlc3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBl
bmRJdGVtKGl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1pc3NwZWxsaW5n
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKElnbm9yZVNwZWxsaW5nSXRl
bSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRJ
dGVtKExlYXJuU3BlbGxpbmdJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKElnbm9y
ZUdyYW1tYXJJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
YXBwZW5kSXRlbSgqc2VwYXJhdG9ySXRlbSgpLCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgaGF2ZUNvbnRleHRNZW51SXRlbXNGb3JNaXNzcGVsbGluZ09yR3JhbW1l
ciA9IHRydWU7CisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9Q
QVJEKQogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFN0cmluZyAmZ3Vlc3MgPSBndWVzc2VzW2ldOwotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFndWVzcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
b250ZXh0TWVudUl0ZW0gaXRlbShBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTcGVsbGlu
Z0d1ZXNzLCBndWVzcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShp
dGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHN0cmluZyB3YXMgYXV0b2NvcnJlY3RlZCwgZ2Vu
ZXJhdGUgYSBjb250ZXh0dWFsIG1lbnUgaXRlbSBhbGxvd2luZyBpdCB0byBiZSBjaGFuZ2VkIGJh
Y2suCisgICAgICAgICAgICAgICAgICAgIFN0cmluZyByZXBsYWNlZFN0cmluZyA9IG1faGl0VGVz
dFJlc3VsdC5yZXBsYWNlZFN0cmluZygpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXJlcGxh
Y2VkU3RyaW5nLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dE1l
bnVJdGVtIGl0ZW0oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFjaywgY29u
dGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFjayhyZXBsYWNlZFN0cmluZykpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kSXRlbShpdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0
TWVudS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlQ29udGV4dE1lbnVJdGVt
c0Zvck1pc3NwZWxsaW5nT3JHcmFtbWVyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4
dE1lbnUuZ2V0KCkpOyAgICAgICAgICAgICAgICAgICAgCisjZW5kaWYKICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKG1pc3NwZWxsaW5nKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oSWdub3JlU3BlbGxpbmdJdGVtLCBtX2Nv
bnRleHRNZW51LmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShMZWFyblNw
ZWxsaW5nSXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oSWdub3JlR3JhbW1hckl0ZW0sIG1fY29u
dGV4dE1lbnUuZ2V0KCkpOwotICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0
ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9MRU9QQVJEKQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAvLyBJZiB0aGUgc3RyaW5nIHdhcyBhdXRvY29ycmVjdGVkLCBnZW5lcmF0ZSBhIGNvbnRl
eHR1YWwgbWVudSBpdGVtIGFsbG93aW5nIGl0IHRvIGJlIGNoYW5nZWQgYmFjay4KLSAgICAgICAg
ICAgICAgICBTdHJpbmcgcmVwbGFjZWRTdHJpbmcgPSBtX2hpdFRlc3RSZXN1bHQucmVwbGFjZWRT
dHJpbmcoKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlcGxhY2VkU3RyaW5nLmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gaXRlbShBY3Rpb25UeXBlLCBD
b250ZXh0TWVudUl0ZW1UYWdDaGFuZ2VCYWNrLCBjb250ZXh0TWVudUl0ZW1UYWdDaGFuZ2VCYWNr
KHJlcGxhY2VkU3RyaW5nKSk7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oaXRlbSwg
bV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgh
aGF2ZUNvbnRleHRNZW51SXRlbXNGb3JNaXNzcGVsbGluZ09yR3JhbW1lcikgeworICAgICAgICAg
ICAgICAgIC8vIFNwZWxsaW5nIGFuZCBncmFtbWFyIGNoZWNraW5nIGlzIG11dHVhbGx5IGV4Y2x1
c2l2ZSB3aXRoIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMuCisgICAgICAgICAgICAgICAgVmVjdG9y
PFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzID0gbV9oaXRUZXN0UmVzdWx0LmRpY3RhdGlv
bkFsdGVybmF0aXZlcygpOworICAgICAgICAgICAgICAgIGlmICghZGljdGF0aW9uQWx0ZXJuYXRp
dmVzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGRpY3RhdGlvbkFsdGVybmF0aXZlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVt
VGFnRGljdGF0aW9uQWx0ZXJuYXRpdmUsIGRpY3RhdGlvbkFsdGVybmF0aXZlc1tpXSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKGl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkp
OworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0o
KnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAgICAgICAgICAgICAgICAg
fQotI2VuZGlmCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMTM1Miw2ICsxMzcwLDcg
QEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JFbmFibGVJZk5lZWRlZChDb250
ZXh0TWVudUl0ZW0mIGl0ZW0pIGNvbnN0CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtQ3Vz
dG9tVGFnTm9BY3Rpb246CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtTGFzdEN1c3RvbVRh
ZzoKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWc6CisgICAg
ICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGljdGF0aW9uQWx0ZXJuYXRpdmU6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBsYXlQYXVz
ZToKICAgICAgICAgICAgIGlmIChtX2hpdFRlc3RSZXN1bHQubWVkaWFQbGF5aW5nKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCmluZGV4IGY4YTFhMjlhYTE1NmE2
YmEyNzlmNGU3MzUxZTVmYTQyYzJlNTE3N2EuLjY5NzM3OTg3NTNhZjAwNDA3NjEzNjM1YzQxMGYy
YjhkZjk0ZTM1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRN
ZW51SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5o
CkBAIC0xMzQsNiArMTM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDb250ZXh0
TWVudUl0ZW1UYWdSaWdodFRvTGVmdCwKICAgICAgICAgQ29udGV4dE1lbnVJdGVtVGFnUERGU2lu
Z2xlUGFnZVNjcm9sbGluZywKICAgICAgICAgQ29udGV4dE1lbnVJdGVtVGFnUERGRmFjaW5nUGFn
ZXNTY3JvbGxpbmcsCisgICAgICAgIENvbnRleHRNZW51SXRlbVRhZ0RpY3RhdGlvbkFsdGVybmF0
aXZlLAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgICAgIENvbnRleHRNZW51SXRlbVRhZ0lu
c3BlY3RFbGVtZW50LAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJl
c3VsdC5jcHAKaW5kZXggNGUzZjZiZGNiMjk1MDE5YjVlNzIwYjRjMjBlNWFjM2ViMjJhNzQ3MC4u
NWZmYjY1OTY5YWU2ZjMyZTJkODhjYmMxNDIyNTQ1ZjZlMTBkZGQzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtNzEwLDQgKzcxMCwyMSBAQCBIaXRU
ZXN0UmVzdWx0OjpOb2RlU2V0JiBIaXRUZXN0UmVzdWx0OjptdXRhYmxlUmVjdEJhc2VkVGVzdFJl
c3VsdCgpCiAgICAgcmV0dXJuICptX3JlY3RCYXNlZFRlc3RSZXN1bHQ7CiB9CiAKK1ZlY3RvcjxT
dHJpbmc+IEhpdFRlc3RSZXN1bHQ6OmRpY3RhdGlvbkFsdGVybmF0aXZlcygpIGNvbnN0Cit7Cisg
ICAgLy8gUmV0dXJuIHRoZSBkaWN0YXRpb24gY29udGV4dCBoYW5kbGUgaWYgdGhlIHRleHQgYXQg
dGhpcyBwb2ludCBoYXMgRGljdGF0aW9uQWx0ZXJuYXRpdmUgbWFya2VyLCB3aGljaCBtZWFucyB0
aGlzIHRleHQgaXMKKyAgICBpZiAoIW1faW5uZXJOb25TaGFyZWROb2RlKQorICAgICAgICByZXR1
cm4gVmVjdG9yPFN0cmluZz4oKTsKKworICAgIERvY3VtZW50TWFya2VyKiBtYXJrZXIgPSBtX2lu
bmVyTm9uU2hhcmVkTm9kZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5tYXJrZXJDb250YWluaW5n
UG9pbnQoaGl0VGVzdFBvaW50KCkucG9pbnQoKSwgRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvbkFs
dGVybmF0aXZlcyk7CisgICAgaWYgKCFtYXJrZXIpCisgICAgICAgIHJldHVybiBWZWN0b3I8U3Ry
aW5nPigpOworCisgICAgRnJhbWUqIGZyYW1lID0gaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3Vt
ZW50KCktPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxT
dHJpbmc+KCk7CisKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5kaWN0YXRpb25BbHRlcm5h
dGl2ZXNGb3JNYXJrZXIobWFya2VyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5kZXggYTE4ZmRiNWEyNTU4ZTll
YjhjNWY1NWQ5M2QxNmZkYWJlYmExNDQ4ZS4uMTlkZGJkMWFjMmM3ZmU4YjcwMTI0ZTIwYzBjZDkx
ZjQ4YTZhYjIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBA
IC0xNTcsNiArMTU3LDggQEAgcHVibGljOgogICAgIC8vIHRoZSBzYW1lIHRoaW5nIGFzIG11dGFi
bGVSZWN0QmFzZWRUZXN0UmVzdWx0KCksIGJ1dCBoZXJlIHRoZSByZXR1cm4gdmFsdWUgaXMgY29u
c3QuCiAgICAgY29uc3QgTm9kZVNldCYgcmVjdEJhc2VkVGVzdFJlc3VsdCgpIGNvbnN0OwogCisg
ICAgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzKCkgY29uc3Q7CisKIHByaXZh
dGU6CiAgICAgTm9kZVNldCYgbXV0YWJsZVJlY3RCYXNlZFRlc3RSZXN1bHQoKTsgLy8gU2VlIGFi
b3ZlLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXgg
MTFiNzA1NTlkYTYzNDM0NzRkNzUwYzJlYTQ3YTYwNTllZjVhNmQ2Ni4uOWU3MzFkNjM4NmRjN2Ez
YjM5MWNmMjg5NDQzM2IwOGJkM2NjYWIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVUZXh0Qm94LmNwcApAQCAtMTAzMCw3ICsxMDMwLDggQEAgdm9pZCBJbmxpbmVUZXh0Qm94
OjpwYWludERvY3VtZW50TWFya2VyKEdyYXBoaWNzQ29udGV4dCogcHQsIGNvbnN0IEZsb2F0UG9p
bnQmIGIKICAgICBpZiAobV90cnVuY2F0aW9uICE9IGNOb1RydW5jYXRpb24pCiAgICAgICAgIG1h
cmtlclNwYW5zV2hvbGVCb3ggPSBmYWxzZTsKIAotICAgIGlmICghbWFya2VyU3BhbnNXaG9sZUJv
eCB8fCBncmFtbWFyKSB7CisgICAgYm9vbCBpc0RpY3RhdGlvbk1hcmtlciA9IG1hcmtlci0+dHlw
ZSgpID09IERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXM7CisgICAgaWYgKCFt
YXJrZXJTcGFuc1dob2xlQm94IHx8IGdyYW1tYXIgfHwgaXNEaWN0YXRpb25NYXJrZXIpIHsKICAg
ICAgICAgaW50IHN0YXJ0UG9zaXRpb24gPSBtYXg8aW50PihtYXJrZXItPnN0YXJ0T2Zmc2V0KCkg
LSBtX3N0YXJ0LCAwKTsKICAgICAgICAgaW50IGVuZFBvc2l0aW9uID0gbWluPGludD4obWFya2Vy
LT5lbmRPZmZzZXQoKSAtIG1fc3RhcnQsIG1fbGVuKTsKICAgICAgICAgCkBAIC0xMDUwLDcgKzEw
NTEsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RG9jdW1lbnRNYXJrZXIoR3JhcGhpY3ND
b250ZXh0KiBwdCwgY29uc3QgRmxvYXRQb2ludCYgYgogICAgICAgICAKICAgICAgICAgLy8gU3Rv
cmUgcmVuZGVyZWQgcmVjdHMgZm9yIGJhZCBncmFtbWFyIG1hcmtlcnMsIHNvIHdlIGNhbiBoaXQt
dGVzdCBhZ2FpbnN0IGl0IGVsc2V3aGVyZSBpbiBvcmRlciB0bwogICAgICAgICAvLyBkaXNwbGF5
IGEgdG9vbFRpcC4gV2UgZG9uJ3QgZG8gdGhpcyBmb3IgbWlzc3BlbGxpbmcgbWFya2Vycy4KLSAg
ICAgICAgaWYgKGdyYW1tYXIpIHsKKyAgICAgICAgaWYgKGdyYW1tYXIgfHwgaXNEaWN0YXRpb25N
YXJrZXIpIHsKICAgICAgICAgICAgIG1hcmtlclJlY3QubW92ZSgtYm94T3JpZ2luLngoKSwgLWJv
eE9yaWdpbi55KCkpOwogICAgICAgICAgICAgbWFya2VyUmVjdCA9IHJlbmRlcmVyKCktPmxvY2Fs
VG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KG1hcmtlclJlY3QpKS5lbmNsb3NpbmdCb3VuZGluZ0Jv
eCgpOwogICAgICAgICAgICAgdG9SZW5kZXJlZERvY3VtZW50TWFya2VyKG1hcmtlciktPnNldFJl
bmRlcmVkUmVjdChtYXJrZXJSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbQppbmRleCA2NTgzY2VlNjYyMTExMDc2YzFlMDI0
NzI2ZWVjYmIwYThmNTQwNzkwLi43NzE5MTBiNGJjNTAxZTQ4MzgwY2RiODNlMDNiZjZlMjNmNTFh
Y2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0
aW9uUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVj
dGlvblBhbmVsLm1tCkBAIC0yNSw3ICsyNSw2IEBACiAjaW1wb3J0ICJDb3JyZWN0aW9uUGFuZWwu
aCIKIAogI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCi0jaW1wb3J0ICJXZWJWaWV3UHJpdmF0
ZS5oIgogCiAjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CkBAIC0zOSw2ICszOCw5IEBAIHN0YXRpYyBpbmxpbmUgTlNDb3JyZWN0aW9uSW5kaWNh
dG9yVHlwZSBjb3JyZWN0aW9uSW5kaWNhdG9yVHlwZShBbHRlcm5hdGl2ZVRleHRUCiAgICAgICAg
IHJldHVybiBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlUmV2ZXJzaW9uOwogICAgIGNhc2UgQWx0
ZXJuYXRpdmVUZXh0VHlwZVNwZWxsaW5nU3VnZ2VzdGlvbnM6CiAgICAgICAgIHJldHVybiBOU0Nv
cnJlY3Rpb25JbmRpY2F0b3JUeXBlR3Vlc3NlczsKKyAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5
cGVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIE5TQ29ycmVjdGlvbkluZGljYXRvclR5cGVEZWZhdWx0OwpAQCAtMTMxLDcgKzEzMyw3IEBA
IHZvaWQgQ29ycmVjdGlvblBhbmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KE5TU3RyaW5n
KiBhY2NlcHRlZFJlcGxhY2VtZW50LCBOCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAg
ICBbbV92aWV3LmdldCgpIGhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDphY2NlcHRlZFJlcGxh
Y2VtZW50XTsKKyAgICBbbV92aWV3LmdldCgpIGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0
OmFjY2VwdGVkUmVwbGFjZW1lbnRdOwogICAgIG1fdmlldy5jbGVhcigpOwogICAgIGlmIChhY2Nl
cHRlZFJlcGxhY2VtZW50KQogICAgICAgICBtX3Jlc3VsdEZvckRpc21pc3NhbC5hZG9wdE5TKFth
Y2NlcHRlZFJlcGxhY2VtZW50IGNvcHldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggNWU2
NmFjYWY3YjcxYWU3NGVjZmRkMmI0ZTcyMWQ5M2ZkOGNjZmM3ZC4uYmM0ZWM0NzIzODVkNTY2M2Ew
ZTA2YjZhOGRmNTRhODVjOTZmY2Q3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAgLTM3LDEw
ICszNywxOCBAQCBwdWJsaWM6CiAgICAgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KFdlYlZpZXcg
Kik7CiAgICAgdmlydHVhbCB+V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCk7CiAgICAgdmlydHVh
bCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSBPVkVSUklERTsKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05f
UEFORUwpCiAgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uQWx0ZXJuYXRpdmUoV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGlu
Z0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5h
dGl2ZVJlcGxhY2VtZW50U3RyaW5ncykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc21p
c3NBbHRlcm5hdGl2ZShXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFdl
YkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYkNvcmU6OkF1dG9j
b3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSBPVkVSUklERTsKKyNlbmRpZgorI2lmIFVTRShE
SUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93RGljdGF0aW9uQWx0
ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRl
ZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBkaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSSgpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29u
dGV4dCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRl
cm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgT1ZFUlJJREU7CisjZW5kaWYKIHBy
aXZhdGU6CiAgICAgV2ViVmlldyogbV93ZWJWaWV3OwogI2lmIFVTRShBVVRPQ09SUkVDVElPTl9Q
QU5FTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbQppbmRleCBmMWE3MGZjNTQzYzZjNWM3YTgyMTFl
NTdjNTA5YTk4YmIwMGZmZGNmLi40ZDc4OWQzYzBkODg5YjBjYTY4ZGZhMWEyOWU1NTVmMDM0MGZh
YjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tCkBAIC0yNSw2ICsyNSw4IEBACiAKICNpbmNs
dWRlICJXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKIAorI2luY2x1ZGUgIldlYlZpZXdJbnRl
cm5hbC5oIgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoV2ViVmlldyogd2ViVmlldykKQEAgLTQ0
LDMzICs0Niw0NyBAQCB2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cGFnZURlc3Ryb3ll
ZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwp
CiB2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6c2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2
ZShBbHRlcm5hdGl2ZVRleHRUeXBlIHR5cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hP
ZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVS
ZXBsYWNlbWVudFN0cmluZ3MpCiB7Ci0jaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogICAg
IG1fY29ycmVjdGlvblBhbmVsLnNob3cobV93ZWJWaWV3LCB0eXBlLCBib3VuZGluZ0JveE9mUmVw
bGFjZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZywgYWx0ZXJuYXRp
dmVSZXBsYWNlbWVudFN0cmluZ3MpOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50OjpkaXNtaXNzQWx0ZXJuYXRpdmUoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0
aXZlVGV4dCByZWFzb24pCiB7Ci0jaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogICAgIG1f
Y29ycmVjdGlvblBhbmVsLmRpc21pc3MocmVhc29uKTsKLSNlbmRpZgogfQogCiBTdHJpbmcgV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFJlYXNvbkZvckRp
c21pc3NpbmdBbHRlcm5hdGl2ZVRleHQgcmVhc29uKQogewotI2lmIFVTRShBVVRPQ09SUkVDVElP
Tl9QQU5FTCkKICAgICByZXR1cm4gbV9jb3JyZWN0aW9uUGFuZWwuZGlzbWlzcyhyZWFzb24pOwot
I2Vsc2UKLXJldHVybiBTdHJpbmcoKTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYkFsdGVybmF0aXZl
VGV4dENsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJl
c3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCiB7Ci0jaWYgVVNFKEFVVE9DT1JSRUNUSU9O
X1BBTkVMKQogICAgIE5TQ29ycmVjdGlvblJlc3BvbnNlIHJlc3BvbnNlID0gcmVzcG9uc2VUeXBl
ID09IEF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQgPyBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVk
IDogTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7Ci1Db3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UobV93ZWJWaWV3LCByZXNwb25zZSwgcmVwbGFjZWRTdHJpbmcs
IHJlcGxhY2VtZW50U3RyaW5nKTsKKyAgICBDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UobV93ZWJWaWV3LCByZXNwb25zZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxh
Y2VtZW50U3RyaW5nKTsKK30KICNlbmRpZgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElW
RVMpCit2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJu
YXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgW21fd2ViVmlldyBfcmVt
b3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOmRpY3RhdGlvbkNvbnRleHRdOworfQorCit2b2lkIFdl
YkFsdGVybmF0aXZlVGV4dENsaWVudDo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBk
aWN0YXRpb25Db250ZXh0KQoreworICAgIFttX3dlYlZpZXcgX3Nob3dEaWN0YXRpb25BbHRlcm5h
dGl2ZVVJOmJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQgZm9yRGljdGF0aW9uQ29udGV4dDpkaWN0
YXRpb25Db250ZXh0XTsKIH0KKwordm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21p
c3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKCkKK3sKKyAgICBbbV93ZWJWaWV3IF9kaXNtaXNzRGlj
dGF0aW9uQWx0ZXJuYXRpdmVVSV07Cit9CisKK1ZlY3RvcjxTdHJpbmc+IFdlYkFsdGVybmF0aXZl
VGV4dENsaWVudDo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRl
eHQpCit7CisgICAgcmV0dXJuIFttX3dlYlZpZXcgX2RpY3RhdGlvbkFsdGVybmF0aXZlczpkaWN0
YXRpb25Db250ZXh0XTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0KaW5kZXggMTdkMzA5M2NkMGJlY2VkM2E3MmY3OTVhNGVjZWRkOWFhNmYwN2VhOC4u
ZjAyNDM5MGVlMWU1ZTZjNjg2ZTJlMDY1MGJjNjk2Yjc4YzUyOGJmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0xMTMsNiArMTEzLDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvU2ltcGxlRm9udERhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVQcm9wZXJ0
eVNldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1RleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJh
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJGb250Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmg+CkBAIC01NjAzLDcgKzU2MDQsNyBAQCBzdGF0
aWMgQ0dQb2ludCBjb3JlR3JhcGhpY3NTY3JlZW5Qb2ludEZvckFwcEtpdFNjcmVlblBvaW50KE5T
UG9pbnQgcG9pbnQpCiAgICAgaWYgKCF2YWxpZEF0dHJpYnV0ZXMpIHsKICAgICAgICAgdmFsaWRB
dHRyaWJ1dGVzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6CiAgICAgICAgICAg
ICBOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZSwgTlNVbmRlcmxpbmVDb2xvckF0dHJpYnV0
ZU5hbWUsCi0gICAgICAgICAgICBOU01hcmtlZENsYXVzZVNlZ21lbnRBdHRyaWJ1dGVOYW1lLCBO
U1RleHRJbnB1dFJlcGxhY2VtZW50UmFuZ2VBdHRyaWJ1dGVOYW1lLCBuaWxdOworICAgICAgICAg
ICAgTlNNYXJrZWRDbGF1c2VTZWdtZW50QXR0cmlidXRlTmFtZSwgTlNUZXh0SW5wdXRSZXBsYWNl
bWVudFJhbmdlQXR0cmlidXRlTmFtZSwgTlNUZXh0QWx0ZXJuYXRpdmVzQXR0cmlidXRlTmFtZSwg
bmlsXTsKICAgICAgICAgLy8gTlNUZXh0IGFsc28gc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBhdHRy
aWJ1dGVzLCBidXQgaXQncwogICAgICAgICAvLyBoYXJkIHRvIHRlbGwgd2hpY2ggYXJlIHJlYWxs
eSByZXF1aXJlZCBmb3IgdGV4dCBpbnB1dCB0bwogICAgICAgICAvLyB3b3JrIHdlbGw7IEkgaGF2
ZSBub3Qgc2VlbiBhbnkgaW5wdXQgbWV0aG9kIG1ha2UgdXNlIG9mIHRoZW0geWV0LgpAQCAtNTky
Myw3ICs1OTI0LDE0IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRl
ZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAgICAgTlNSYW5nZSByZXBs
YWNlbWVudFJhbmdlID0geyBOU05vdEZvdW5kLCAwIH07CiAgICAgYm9vbCBpc0Zyb21JbnB1dE1l
dGhvZCA9IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigp
OwogCisgICAgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiBkaWN0YXRpb25BbHRlcm5hdGl2
ZUxvY2F0aW9uczsKICAgICBpZiAoaXNBdHRyaWJ1dGVkU3RyaW5nKSB7CisjaWYgVVNFKERJQ1RB
VElPTl9BTFRFUk5BVElWRVMpCisgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpUZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2U+IHRleHRBbHRlcm5hdGl2ZXM7CisgICAgICAgIGNvbGxlY3REaWN0YXRpb25U
ZXh0QWx0ZXJuYXRpdmVzKHN0cmluZywgdGV4dEFsdGVybmF0aXZlcyk7CisgICAgICAgIGlmICgh
dGV4dEFsdGVybmF0aXZlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICBbW3NlbGYgX3dlYlZpZXdd
IF9nZXRXZWJDb3JlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOmRpY3RhdGlvbkFsdGVybmF0aXZlTG9j
YXRpb25zIGZyb21UZXh0QWx0ZXJuYXRpdmVzOnRleHRBbHRlcm5hdGl2ZXNdOworI2VuZGlmCiAg
ICAgICAgIC8vIEZJWE1FOiBXZSBpZ25vcmUgbW9zdCBhdHRyaWJ1dGVzIGZyb20gdGhlIHN0cmlu
Zywgc28gZm9yIGV4YW1wbGUgaW5zZXJ0aW5nIGZyb20gQ2hhcmFjdGVyIFBhbGV0dGUgbG9zZXMg
Zm9udCBhbmQgZ2x5cGggdmFyaWF0aW9uIGRhdGEuCiAgICAgICAgIC8vIEl0IGRvZXMgbm90IGxv
b2sgbGlrZSBhbnkgaW5wdXQgbWV0aG9kcyBldmVyIHVzZSBpbnNlcnRUZXh0OiB3aXRoIGF0dHJp
YnV0ZXMgb3RoZXIgdGhhbiBOU1RleHRJbnB1dFJlcGxhY2VtZW50UmFuZ2VBdHRyaWJ1dGVOYW1l
LgogICAgICAgICB0ZXh0ID0gW3N0cmluZyBzdHJpbmddOwpAQCAtNTk2Miw3ICs1OTcwLDExIEBA
IHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5n
LCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAgICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLT5o
YXNDb21wb3NpdGlvbigpKSB7CiAgICAgICAgIC8vIEFuIGluc2VydFRleHQ6IG1pZ2h0IGJlIGhh
bmRsZWQgYnkgb3RoZXIgcmVzcG9uZGVycyBpbiB0aGUgY2hhaW4gaWYgd2UgZG9uJ3QgaGFuZGxl
IGl0LgogICAgICAgICAvLyBPbmUgZXhhbXBsZSBpcyBzcGFjZSBiYXIgdGhhdCByZXN1bHRzIGlu
IHNjcm9sbGluZyBkb3duIHRoZSBwYWdlLgotICAgICAgICBldmVudEhhbmRsZWQgPSBjb3JlRnJh
bWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGV2ZW50VGV4dCwgZXZlbnQpOworCisgICAgICAgIGlm
ICghZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMuaXNFbXB0eSgpKQorICAgICAgICAgICAg
ZXZlbnRIYW5kbGVkID0gY29yZUZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0RGljdGF0ZWRUZXh0KGV2
ZW50VGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGV2ZW50KTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgZXZlbnRIYW5kbGVkID0gY29yZUZyYW1lLT5lZGl0b3IoKS0+aW5z
ZXJ0VGV4dChldmVudFRleHQsIGV2ZW50KTsKICAgICB9IGVsc2UgewogICAgICAgICBldmVudEhh
bmRsZWQgPSB0cnVlOwogICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9z
aXRpb24oZXZlbnRUZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBj
OTM4MjNhMzk0MGNhODY2ZmRhYzY2ZTlkMDU4MWFkZmU2NzBmZTQzLi43OTc2ZmIwNmUwMGU1Mjll
N2IyZDNkMmRhYjViNmE3MjNjM2NkNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCkBAIC0xMTEsNiArMTExLDcgQEAKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3Qu
aD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWVSZWYuaD4KICNpbXBvcnQgPFdlYkNv
cmUvQWJzdHJhY3REYXRhYmFzZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
aD4KICNpbXBvcnQgPFdlYkNvcmUvQmFja0ZvcndhcmRMaXN0SW1wbC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9NZW1vcnlDYWNoZS5oPgpAQCAtNTUzNiwxNiArNTUzNyw2IEBAIHN0YXRpYyBOU0FwcGxl
RXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm9tSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUganNWYWx1CiAKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotLSAodm9pZCloYW5kbGVDb3Jy
ZWN0aW9uUGFuZWxSZXN1bHQ6KE5TU3RyaW5nKilyZXN1bHQKLXsKLSAgICBXZWJGcmFtZSAqd2Vi
RnJhbWUgPSBbc2VsZiBfc2VsZWN0ZWRPck1haW5GcmFtZV07Ci0gICAgRnJhbWUqIGNvcmVGcmFt
ZSA9IGNvcmUod2ViRnJhbWUpOwotICAgIGlmIChjb3JlRnJhbWUpCi0gICAgICAgIGNvcmVGcmFt
ZS0+ZWRpdG9yKCktPmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHJlc3VsdCk7Ci19Ci0j
ZW5kaWYKLQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViVmlld1VuZG9hYmxl
RWRpdGluZykKQEAgLTY0MTAsNiArNjQwMSw0OCBAQCBzdGF0aWMgdm9pZCBnbGliQ29udGV4dEl0
ZXJhdGlvbkNhbGxiYWNrKENGUnVuTG9vcE9ic2VydmVyUmVmLCBDRlJ1bkxvb3BBY3Rpdml0eQog
fQogI2VuZGlmCiAKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCistICh2b2lkKWhhbmRs
ZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0OihOU1N0cmluZyopdGV4dAoreworICAgIFdlYkZyYW1l
ICp3ZWJGcmFtZSA9IFtzZWxmIF9zZWxlY3RlZE9yTWFpbkZyYW1lXTsKKyAgICBGcmFtZSogY29y
ZUZyYW1lID0gY29yZSh3ZWJGcmFtZSk7CisgICAgaWYgKGNvcmVGcmFtZSkKKyAgICAgICAgY29y
ZUZyYW1lLT5lZGl0b3IoKS0+aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQodGV4dCk7Cit9
CisKKy0gKHZvaWQpX2dldFdlYkNvcmVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6KFZlY3RvcjxEaWN0
YXRpb25BbHRlcm5hdGl2ZT4mKWFsdGVybmF0aXZlcyBmcm9tVGV4dEFsdGVybmF0aXZlczooY29u
c3QgVmVjdG9yPFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mKWFsdGVybmF0aXZlc1dpdGhSYW5n
ZQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYWx0ZXJuYXRpdmVzV2l0aFJhbmdlLnNp
emUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSYgYWx0
ZXJuYXRpdmVXaXRoUmFuZ2UgPSBhbHRlcm5hdGl2ZXNXaXRoUmFuZ2VbaV07CisgICAgICAgIHVp
bnQ2NF90IGRpY3RhdGlvbkNvbnRleHQgPSBfcHJpdmF0ZS0+bV9hbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXItPmFkZEFsdGVybmF0aXZlcyhhbHRlcm5hdGl2ZVdpdGhSYW5nZS5hbHRlcm5hdGl2
ZXMpOworICAgICAgICBpZiAoZGljdGF0aW9uQ29udGV4dCkKKyAgICAgICAgICAgIGFsdGVybmF0
aXZlcy5hcHBlbmQoRGljdGF0aW9uQWx0ZXJuYXRpdmUoYWx0ZXJuYXRpdmVXaXRoUmFuZ2UucmFu
Z2UubG9jYXRpb24sIGFsdGVybmF0aXZlV2l0aFJhbmdlLnJhbmdlLmxlbmd0aCwgZGljdGF0aW9u
Q29udGV4dCkpOworICAgIH0KK30KKworLSAodm9pZClfc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZl
VUk6KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCBm
b3JEaWN0YXRpb25Db250ZXh0Oih1aW50NjRfdClkaWN0YXRpb25Db250ZXh0Cit7CisgICAgX3By
aXZhdGUtPm1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5zaG93QWx0ZXJuYXRpdmVzKHNl
bGYsIFtzZWxmIF9jb252ZXJ0UmVjdEZyb21Sb290Vmlldzpib3VuZGluZ0JveE9mRGljdGF0ZWRU
ZXh0XSwgZGljdGF0aW9uQ29udGV4dCwgXihOU1N0cmluZyogYWNjZXB0ZWRBbHRlcm5hdGl2ZSkg
eworICAgICAgICBbc2VsZiBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDphY2NlcHRlZEFs
dGVybmF0aXZlXTsKKyAgICB9KTsKK30KKworLSAodm9pZClfZGlzbWlzc0RpY3RhdGlvbkFsdGVy
bmF0aXZlVUkKK3sKKyAgICBfcHJpdmF0ZS0+bV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIt
PmRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKK30KKworLSAodm9pZClfcmVtb3ZlRGljdGF0aW9uQWx0
ZXJuYXRpdmVzOih1aW50NjRfdClkaWN0YXRpb25Db250ZXh0Cit7CisgICAgX3ByaXZhdGUtPm1f
YWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5yZW1vdmVBbHRlcm5hdGl2ZXMoZGljdGF0aW9u
Q29udGV4dCk7Cit9CisKKy0gKFZlY3RvcjxTdHJpbmc+KV9kaWN0YXRpb25BbHRlcm5hdGl2ZXM6
KHVpbnQ2NF90KWRpY3RhdGlvbkNvbnRleHQKK3sKKyAgICByZXR1cm4gX3ByaXZhdGUtPm1fYWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGRpY3RhdGlv
bkNvbnRleHQpOworfQorI2VuZGlmCisKIC0gKE5TUG9pbnQpX2NvbnZlcnRQb2ludEZyb21Sb290
VmlldzooTlNQb2ludClwb2ludAogewogICAgIHJldHVybiBOU01ha2VQb2ludChwb2ludC54LCBb
c2VsZiBib3VuZHNdLnNpemUuaGVpZ2h0IC0gcG9pbnQueSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXdEYXRhLmgKaW5kZXggZWEyYmZjZjYwNzRlOWE1MTFjM2MzZWFlMmRiNGZmNWU1
ZWMzYzRmNi4uMmFkNDIwMGQ3NDQ1YThmOGZlNGQ5MGUyMDIxYWE4YTE2NzhkMDIzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaApAQCAtMjksNiArMjksNyBAQAogCiAj
aW1wb3J0ICJXZWJUeXBlc0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJEZWxlZ2F0ZUltcGxlbWVu
dGF0aW9uQ2FjaGluZy5oIgorI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvTGF5ZXJGbHVzaFNjaGVkdWxlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9MYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRm
b3JtU3RyaW5nLmg+CkBAIC0zOCw4ICszOSw5IEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBIaXN0b3J5SXRlbTsKLSAgICBjbGFz
cyBQYWdlOworY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOworY2xhc3MgSGlzdG9y
eUl0ZW07CitjbGFzcyBQYWdlOwogfQogCiBAY2xhc3MgV2ViSW5zcGVjdG9yOwpAQCAtMjAwLDUg
KzIwMiw5IEBAIHByaXZhdGU6CiAgICAgaW50IHZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZp
Y2F0aW9uOwogCiAgICAgZmxvYXQgY3VzdG9tRGV2aWNlU2NhbGVGYWN0b3I7CisKKyNpZiBVU0Uo
RElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBPd25QdHI8V2ViQ29yZTo6QWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyPiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKKyNlbmRpZgog
fQogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0
YS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KaW5kZXggMGI4
MTE3YTA5NzA2ZDViNmVjNGU2NDU3YzMzOThlNDc2MjZjNThiYS4uZTI3NjZmMDFhMzViYzA3ZWVh
YTQ4NmMyNjU1YjRjMDFiYWVkOTdhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3RGF0YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdEYXRhLm1tCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbXBvcnQgIldlYktpdExvZ2dpbmcuaCIK
ICNpbXBvcnQgIldlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oIgorI2ltcG9ydCA8V2ViQ29yZS9B
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9i
akNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSGlzdG9yeUl0ZW0uaD4KICNpbXBvcnQgPFdl
YkNvcmUvUnVuTG9vcC5oPgpAQCAtMTAwLDYgKzEwMSwxMCBAQCBMYXllckZsdXNoQ29udHJvbGxl
cjo6TGF5ZXJGbHVzaENvbnRyb2xsZXIoV2ViVmlldyogd2ViVmlldykKIAogICAgIHBsdWdpbkRh
dGFiYXNlQ2xpZW50Q291bnQrKzsKIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQor
ICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IFdlYkNvcmU6
OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcik7CisjZW5kaWYKKwogICAgIHJldHVybiBzZWxm
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRl
cm5hbC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRl
eCAwMmNjNTUwMTA2YjA0NGZiYzE3N2M5ZjU5YTFmODNmNTkwZGU1MGIwLi5jMDUyNTc0MmVjM2Ji
YmNmYWM5M2JjOGMwOTgwYTZlYjkwNzlmNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlld0ludGVybmFsLmgKQEAgLTM0LDIwICszNCwyNiBAQAogI2ltcG9ydCAiV2ViVHlw
ZXNJbnRlcm5hbC5oIgogCiAjaWZkZWYgX19jcGx1c3BsdXMKKyNpbXBvcnQgPFdlYkNvcmUvQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUtleWJvYXJkVUlNb2Rl
Lmg+CiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEVsZW1lbnQ7Ci0gICAgY2xhc3Mg
RnJhbWU7Ci0gICAgY2xhc3MgSGlzdG9yeUl0ZW07Ci0gICAgY2xhc3MgS1VSTDsKLSAgICBjbGFz
cyBLZXlib2FyZEV2ZW50OwotICAgIGNsYXNzIFBhZ2U7Ci0gICAgY2xhc3MgUmVuZGVyQm94Owot
ICAgIGNsYXNzIE5vZGU7CitjbGFzcyBFbGVtZW50OworY2xhc3MgRXZlbnQ7CitjbGFzcyBGcmFt
ZTsKK2NsYXNzIEhpc3RvcnlJdGVtOworY2xhc3MgS1VSTDsKK2NsYXNzIEtleWJvYXJkRXZlbnQ7
CitjbGFzcyBQYWdlOworY2xhc3MgUmVuZGVyQm94OworY2xhc3MgTm9kZTsKK3N0cnVjdCBEaWN0
YXRpb25BbHRlcm5hdGl2ZTsKIH0KICNlbmRpZgogCkBAIC01OSw2ICs2NSwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRP
cHRpb25zIG9wdGlvbnMpOwogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCitPQkpD
X0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKKyNlbmRpZgorCiBAaW50ZXJmYWNlIFdlYlZpZXcg
KFdlYlZpZXdFZGl0aW5nRXh0cmFzKQogLSAoQk9PTClfc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01S
YW5nZTooRE9NUmFuZ2UgKiljdXJyZW50UmFuZ2UgdG9ET01SYW5nZTooRE9NUmFuZ2UgKilwcm9w
b3NlZFJhbmdlIGFmZmluaXR5OihOU1NlbGVjdGlvbkFmZmluaXR5KXNlbGVjdGlvbkFmZmluaXR5
IHN0aWxsU2VsZWN0aW5nOihCT09MKWZsYWc7CiBAZW5kCkBAIC05NSw2ICsxMDUsMTggQEAgV2Vi
Q29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMgb3B0aW9ucyk7CiAt
ICh2b2lkKV9zY2hlZHVsZUdsaWJDb250ZXh0SXRlcmF0aW9uczsKICNlbmRpZgogCisjaWYgVVNF
KEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorLSAodm9pZCloYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZl
VGV4dDooTlNTdHJpbmcqKXRleHQ7CisjZW5kaWYKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJO
QVRJVkVTKQorLSAodm9pZClfZ2V0V2ViQ29yZURpY3RhdGlvbkFsdGVybmF0aXZlczooVmVjdG9y
PFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiYpYWx0ZXJuYXRpdmVzIGZyb21UZXh0QWx0
ZXJuYXRpdmVzOihjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdl
PiYpYWx0ZXJuYXRpdmVzV2l0aFJhbmdlOworLSAodm9pZClfc2hvd0RpY3RhdGlvbkFsdGVybmF0
aXZlVUk6KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4
dCBmb3JEaWN0YXRpb25Db250ZXh0Oih1aW50NjRfdClkaWN0YXRpb25Db250ZXh0OworLSAodm9p
ZClfZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUk7CistICh2b2lkKV9yZW1vdmVEaWN0YXRp
b25BbHRlcm5hdGl2ZXM6KHVpbnQ2NF90KWRpY3RhdGlvbkNvbnRleHQ7CistIChWZWN0b3I8U3Ry
aW5nPilfZGljdGF0aW9uQWx0ZXJuYXRpdmVzOih1aW50NjRfdClkaWN0YXRpb25Db250ZXh0Owor
I2VuZGlmCisKIEBlbmQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdQcml2YXRlLmgKaW5kZXggMDJmN2JjYzQ1NjdkNzY1YzdiZDNhNDM0ZjI1NzI2YTYxMDNlMzEz
MC4uODI4OWIxMmMxODhiZWRhZjA1MTA0NmZhNjgyMjI3NTJlZTk4ZGQ1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaApAQCAtNjg3LDkgKzY4Nyw2IEBAIENv
dWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgogLSAodm9pZClzZXRBdXRvbWF0aWNTcGVs
bGluZ0NvcnJlY3Rpb25FbmFibGVkOihCT09MKWZsYWc7CiAtICh2b2lkKXRvZ2dsZUF1dG9tYXRp
Y1NwZWxsaW5nQ29ycmVjdGlvbjooaWQpc2VuZGVyOwogI2VuZGlmCi0jaWYgIWRlZmluZWQoQlVJ
TERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQot
LSAodm9pZCloYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQ6KE5TU3RyaW5nKilyZXN1bHQ7Ci0j
ZW5kaWYKIEBlbmQKIAogQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3RWRpdGluZ0luTWFpbCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRl
bVR5cGVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW1U
eXBlcy5oCmluZGV4IGEzNTM2ZDk2ZDdmM2Y5MmNjM2Y5NDgwYzJmOWUzMDcyMTk1MWQwMzkuLmIz
MjY3OTRkZTg3MDljNDdlMjhkZDg4MTdlMzQ5NTMxMWU4ZjgyZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbVR5cGVzLmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtVHlwZXMuaApAQCAtODgs
NiArODgsNyBAQCBlbnVtIHsKICAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdCwK
ICAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdQREZTaW5nbGVQYWdlU2Nyb2xsaW5nLAogICAgIGtX
S0NvbnRleHRNZW51SXRlbVRhZ1BERkZhY2luZ1BhZ2VzU2Nyb2xsaW5nLAorICAgIGtXS0NvbnRl
eHRNZW51SXRlbVRhZ0RpY3RhdGlvbkFsdGVybmF0aXZlLAogICAgIGtXS0NvbnRleHRNZW51SXRl
bVRhZ0luc3BlY3RFbGVtZW50LAogICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rp
b25NZW51LAogICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25EZWZhdWx0LApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCmluZGV4IDVl
NGJmNjlmZmI2NzJkZTljZTZkZTRkYTA2MmU4ODM3ZGYxZWMyMWIuLmZkMWE4OTY3NWE2ZDAzYjE5
ZDQ4ZWFkYzVmOTc1ZDkxMTI5NmMzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tTaGFyZWRBUElDYXN0LmgKQEAgLTQxNCw2ICs0MTQsOCBAQCBpbmxpbmUgV0tDb250ZXh0
TWVudUl0ZW1UYWcgdG9BUEkoV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24gYWN0aW9uKQogICAg
ICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnUERGU2luZ2xlUGFnZVNjcm9sbGluZzsK
ICAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1BERkZhY2luZ1BhZ2VzU2Nyb2xs
aW5nOgogICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnUERGRmFjaW5nUGFnZXNT
Y3JvbGxpbmc7CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdEaWN0YXRpb25B
bHRlcm5hdGl2ZToKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ0RpY3RhdGlv
bkFsdGVybmF0aXZlOwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgY2FzZSBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudDoKICAgICAgICAgcmV0dXJuIGtXS0NvbnRl
eHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50OwpAQCAtNTkyLDYgKzU5NCw4IEBAIGlubGluZSBX
ZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbiB0b0ltcGwoV0tDb250ZXh0TWVudUl0ZW1UYWcgdGFn
KQogICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnUERGU2luZ2xlUGFn
ZVNjcm9sbGluZzsKICAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ1BERkZhY2luZ1BhZ2Vz
U2Nyb2xsaW5nOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnUERG
RmFjaW5nUGFnZXNTY3JvbGxpbmc7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdEaWN0
YXRpb25BbHRlcm5hdGl2ZToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ0RpY3RhdGlvbkFsdGVybmF0aXZlOwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgY2Fz
ZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudDoKICAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCAzY2I1N2IwMTMzMmRm
ZDlkMWNhMzQ0MWZkNmVkNTNiODgyZTZjNzVlLi41NDJmZDNmZjhjNzI0OTAwZjFmZjY3NzNmOGI1
ZWM2NGU1M2ZkOWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ3JlZGVu
dGlhbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vyc29yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9E
YXRhYmFzZURldGFpbHMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RpY3RhdGlvbkFsdGVybmF0aXZl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RWRpdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlQ2hvb3Nlci5oPgpAQCAtNTI1LDYgKzUy
NiwyNCBAQCBib29sIEFyZ3VtZW50Q29kZXI8RGF0YWJhc2VEZXRhaWxzPjo6ZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciogZGVjb2RlciwgRGF0YWJhc2VEZQogICAgIHJldHVybiB0cnVlOwogfQogCit2
b2lkIEFyZ3VtZW50Q29kZXI8RGljdGF0aW9uQWx0ZXJuYXRpdmU+OjplbmNvZGUoQXJndW1lbnRF
bmNvZGVyKiBlbmNvZGVyLCBjb25zdCBEaWN0YXRpb25BbHRlcm5hdGl2ZSYgZGljdGF0aW9uQWx0
ZXJuYXRpdmUpCit7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGRpY3RhdGlvbkFsdGVybmF0aXZlLnJh
bmdlU3RhcnQpOworICAgIGVuY29kZXItPmVuY29kZShkaWN0YXRpb25BbHRlcm5hdGl2ZS5yYW5n
ZUxlbmd0aCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGRpY3RhdGlvbkFsdGVybmF0aXZlLmRpY3Rh
dGlvbkNvbnRleHQpOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8RGljdGF0aW9uQWx0ZXJuYXRp
dmU+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBEaWN0YXRpb25BbHRlcm5hdGl2
ZSYgZGljdGF0aW9uQWx0ZXJuYXRpdmUpCit7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZGlj
dGF0aW9uQWx0ZXJuYXRpdmUucmFuZ2VTdGFydCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoIWRlY29kZXItPmRlY29kZShkaWN0YXRpb25BbHRlcm5hdGl2ZS5yYW5nZUxlbmd0aCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShkaWN0YXRp
b25BbHRlcm5hdGl2ZS5kaWN0YXRpb25Db250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiB0cnVlOworfQorCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxGaWxlQ2hvb3NlclNl
dHRpbmdzPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgRmlsZUNob29z
ZXJTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjY5NzQwOGVkNTZlZDZkMTM2M2Y4NDNhNjIwNGZiOTc0
MGM2OTI4NS4uZGIyYjhmNzQxZWMyYTMxYWNiZGMxMjdjNDE3MWY5Y2IzN2Q0NTlhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNTAsNiAr
NTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
ICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAgICAgc3RydWN0IENvbXBvc2l0aW9uVW5kZXJs
aW5lOworICAgIHN0cnVjdCBEaWN0YXRpb25BbHRlcm5hdGl2ZTsKICAgICBzdHJ1Y3QgRHJhZ1Nl
c3Npb247CiAgICAgc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3M7CiAgICAgc3RydWN0IEdyYW1t
YXJEZXRhaWw7CkBAIC0yMDksNiArMjEwLDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzPiB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyYpOwogfTsKIAordGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2
ZT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJD
b3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZSYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1
bWVudERlY29kZXIqLCBXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZSYpOworfTsKKwogdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdz
PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNv
cmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1l
bnREZWNvZGVyKiwgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggNTJkZDA1
MGI4NjBmNmU2ZGRlOTJiOTBlOGJmOGFmNDg0MTQyZjdjNC4uYWMwNzRlOGNjNTU3Mjg0NDE4MmFh
NTkzNWMxMDQ5ZWVmN2M3ZDU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCkBAIC0zMyw4ICszMywxMSBAQAogQGNsYXNzIFdLRWRp
dG9yVW5kb1RhcmdldE9iakM7CiBAY2xhc3MgV0tWaWV3OwogCi1uYW1lc3BhY2UgV2ViS2l0IHsK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjsK
K30KIAorbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBGaW5kSW5kaWNhdG9yV2luZG93OwogCiBj
bGFzcyBQYWdlQ2xpZW50SW1wbCA6IHB1YmxpYyBQYWdlQ2xpZW50IHsKQEAgLTEzMCwxMSArMTMz
LDIyIEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFdLVmlldyogd2tWaWV3KCkgY29uc3QgeyBy
ZXR1cm4gbV93a1ZpZXc7IH0KIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAg
IHZpcnR1YWwgdWludDY0X3QgYWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0
cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURpY3RhdGlv
bkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBi
b3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoKTsKKyAgICB2aXJ0
dWFsIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRp
b25Db250ZXh0KTsKKyNlbmRpZgorCiAgICAgV0tWaWV3KiBtX3drVmlldzsKICAgICBSZXRhaW5Q
dHI8V0tFZGl0b3JVbmRvVGFyZ2V0T2JqQz4gbV91bmRvVGFyZ2V0OwogI2lmIFVTRShBVVRPQ09S
UkVDVElPTl9QQU5FTCkKICAgICBDb3JyZWN0aW9uUGFuZWwgbV9jb3JyZWN0aW9uUGFuZWw7CiAj
ZW5kaWYKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBPd25QdHI8V2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IDc4M2Mz
MjgwMDkwZTk2ZGNiNTQ0OWQ1ZDMzMTRhOGQ2NzJiMGYxZTkuLjhkMDkxM2U1MmM4M2ZjMTU2YTU3
ODhhNTFlODQ3MmZiYTc3ZWQzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCkBAIC0yNiw2ICsyNiw5IEBACiAjaW1wb3J0ICJj
b25maWcuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnRJbXBsLmgiCiAKKyNpZiBVU0UoRElDVEFUSU9O
X0FMVEVSTkFUSVZFUykKKyNpbXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4KKyNl
bmRpZgogI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbXBvcnQgIkRpY3Rpb25hcnlQb3B1cEluZm8uaCIKQEAgLTM4LDYgKzQxLDcgQEAKICNp
bXBvcnQgIldlYkNvbnRleHRNZW51UHJveHlNYWMuaCIKICNpbXBvcnQgIldlYkVkaXRDb21tYW5k
UHJveHkuaCIKICNpbXBvcnQgIldlYlBvcHVwTWVudVByb3h5TWFjLmgiCisjaW1wb3J0IDxXZWJD
b3JlL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9CaXRt
YXBJbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RmxvYXRSZWN0Lmg+CkBAIC0xMjMsNiArMTI3LDkgQEAgUGFzc093blB0cjxQYWdlQ2xpZW50SW1w
bD4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZShXS1ZpZXcqIHdrVmlldykKIFBhZ2VDbGllbnRJbXBs
OjpQYWdlQ2xpZW50SW1wbChXS1ZpZXcqIHdrVmlldykKICAgICA6IG1fd2tWaWV3KHdrVmlldykK
ICAgICAsIG1fdW5kb1RhcmdldChBZG9wdE5TLCBbW1dLRWRpdG9yVW5kb1RhcmdldE9iakMgYWxs
b2NdIGluaXRdKQorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgICwgbV9hbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIoYWRvcHRQdHIobmV3IEFsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlcikpCisjZW5kaWYKIHsKIH0KIApAQCAtMjE1LDEwICsyMjIsMTMgQEAgdm9pZCBQYWdl
Q2xpZW50SW1wbDo6cHJvY2Vzc0RpZENyYXNoKCkKIHsKICAgICBbbV93a1ZpZXcgX3Byb2Nlc3NE
aWRDcmFzaF07CiB9Ci0gICAgCisKIHZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQoKQog
ewogICAgIFttX3drVmlldyBfcGFnZUNsb3NlZF07CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5B
VElWRVMpCisgICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmNsZWFyKCk7CisjZW5k
aWYKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkKQEAgLTUz
NSw0ICs1NDUsMzUgQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6ZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5
U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvclN0cmluZykKICAgICByZXR1cm4gW21fd2tW
aWV3IF9leGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3RvcjpOU1NlbGVjdG9yRnJvbVN0cmluZyhz
ZWxlY3RvclN0cmluZyldOwogfQogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCit1
aW50NjRfdCBQYWdlQ2xpZW50SW1wbDo6YWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJl
dGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBhbHRlcm5hdGl2ZXMpCit7CisgICAgcmV0dXJu
IG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5hZGRBbHRlcm5hdGl2ZXMoYWx0ZXJuYXRp
dmVzKTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRp
dmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgbV9hbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXItPnJlbW92ZUFsdGVybmF0aXZlcyhkaWN0YXRpb25Db250ZXh0KTsKK30KKwor
dm9pZCBQYWdlQ2xpZW50SW1wbDo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0
YXRpb25Db250ZXh0KQoreworICAgIGlmICghaXNWaWV3VmlzaWJsZSgpIHx8ICFpc1ZpZXdJbldp
bmRvdygpKQorICAgICAgICByZXR1cm47CisgICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXItPnNob3dBbHRlcm5hdGl2ZXMobV93a1ZpZXcsIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQs
IGRpY3RhdGlvbkNvbnRleHQsIF4oTlNTdHJpbmcqIGFjY2VwdGVkQWx0ZXJuYXRpdmUpeworICAg
ICAgICBbbV93a1ZpZXcgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6YWNjZXB0ZWRBbHRl
cm5hdGl2ZV07CisgICAgfSk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IFBhZ2VDbGllbnRJbXBsOjpk
aWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBy
ZXR1cm4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmFsdGVybmF0aXZlc0ZvckNvbnRl
eHQoZGljdGF0aW9uQ29udGV4dCk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpc21pc3NE
aWN0YXRpb25BbHRlcm5hdGl2ZVVJKCkKK3sKKyAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci0+ZGlzbWlzc0FsdGVybmF0aXZlcygpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4
IDI5MjQ1NTNlMjA1Nzc3ZTc1YTEwZjNkYzIzOTEzMWUzMzM1NjZjYWIuLmU0MTI1ZjkzNTVmM2Yz
NGYwMWMyZjg5YWM3Mzg0MGEyYThiZDA0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0KQEAgLTI2LDYgKzI2LDExIEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIldLVmlldy5oIgogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisj
aW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CisjaW1wb3J0IDxBcHBLaXQvTlNB
dHRyaWJ1dGVkU3RyaW5nLmg+CisjZW5kaWYKKwogI2ltcG9ydCAiQXR0cmlidXRlZFN0cmluZy5o
IgogI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIK
QEAgLTc0LDYgKzc5LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUmVnaW9uLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1J1bkxvb3AuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW1w
b3J0IDxXZWJDb3JlL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJDb3JlTlNTdHJpbmdFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CkBAIC0xMTc3LDcgKzExODMsMTIg
QEAgc3RhdGljIGNvbnN0IHNob3J0IGtJT0hJREV2ZW50VHlwZVNjcm9sbCA9IDY7CiAgICAgTlNT
dHJpbmcgKnRleHQ7CiAgICAgYm9vbCBpc0Zyb21JbnB1dE1ldGhvZCA9IF9kYXRhLT5fcGFnZS0+
ZWRpdG9yU3RhdGUoKS5oYXNDb21wb3NpdGlvbjsKIAorICAgIFZlY3RvcjxUZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2U+IGRpY3RhdGlvbkFsdGVybmF0aXZlczsKKwogICAgIGlmIChpc0F0dHJpYnV0
ZWRTdHJpbmcpIHsKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICAgICAgY29s
bGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXMoc3RyaW5nLCBkaWN0YXRpb25BbHRlcm5hdGl2
ZXMpOworI2VuZGlmCiAgICAgICAgIC8vIEZJWE1FOiBXZSBpZ25vcmUgbW9zdCBhdHRyaWJ1dGVz
IGZyb20gdGhlIHN0cmluZywgc28gZm9yIGV4YW1wbGUgaW5zZXJ0aW5nIGZyb20gQ2hhcmFjdGVy
IFBhbGV0dGUgbG9zZXMgZm9udCBhbmQgZ2x5cGggdmFyaWF0aW9uIGRhdGEuCiAgICAgICAgIHRl
eHQgPSBbc3RyaW5nIHN0cmluZ107CiAgICAgfSBlbHNlCkBAIC0xMTk5LDcgKzEyMTAsMTEgQEAg
c3RhdGljIGNvbnN0IHNob3J0IGtJT0hJREV2ZW50VHlwZVNjcm9sbCA9IDY7CiAKICAgICBTdHJp
bmcgZXZlbnRUZXh0ID0gdGV4dDsKICAgICBldmVudFRleHQucmVwbGFjZShOU0JhY2tUYWJDaGFy
YWN0ZXIsIE5TVGFiQ2hhcmFjdGVyKTsgLy8gc2FtZSB0aGluZyBpcyBkb25lIGluIEtleUV2ZW50
TWFjLm1tIGluIFdlYkNvcmUKLSAgICBib29sIGV2ZW50SGFuZGxlZCA9IF9kYXRhLT5fcGFnZS0+
aW5zZXJ0VGV4dChldmVudFRleHQsIHJlcGxhY2VtZW50UmFuZ2UubG9jYXRpb24sIE5TTWF4UmFu
Z2UocmVwbGFjZW1lbnRSYW5nZSkpOworICAgIGJvb2wgZXZlbnRIYW5kbGVkOworICAgIGlmICgh
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzLmlzRW1wdHkoKSkKKyAgICAgICAgZXZlbnRIYW5kbGVkID0g
X2RhdGEtPl9wYWdlLT5pbnNlcnREaWN0YXRlZFRleHQoZXZlbnRUZXh0LCByZXBsYWNlbWVudFJh
bmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKHJlcGxhY2VtZW50UmFuZ2UpLCBkaWN0YXRpb25BbHRl
cm5hdGl2ZXMpOworICAgIGVsc2UKKyAgICAgICAgZXZlbnRIYW5kbGVkID0gX2RhdGEtPl9wYWdl
LT5pbnNlcnRUZXh0KGV2ZW50VGV4dCwgcmVwbGFjZW1lbnRSYW5nZS5sb2NhdGlvbiwgTlNNYXhS
YW5nZShyZXBsYWNlbWVudFJhbmdlKSk7CiAKICAgICBpZiAocGFyYW1ldGVycykKICAgICAgICAg
cGFyYW1ldGVycy0+ZXZlbnRJbnRlcnByZXRhdGlvbkhhZFNpZGVFZmZlY3RzIHw9IGV2ZW50SGFu
ZGxlZDsKQEAgLTE0NTEsNyArMTQ2Niw3IEBAIHN0YXRpYyBjb25zdCBzaG9ydCBrSU9ISURFdmVu
dFR5cGVTY3JvbGwgPSA2OwogICAgIGlmICghdmFsaWRBdHRyaWJ1dGVzKSB7CiAgICAgICAgIHZh
bGlkQXR0cmlidXRlcyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWUsIE5TVW5k
ZXJsaW5lQ29sb3JBdHRyaWJ1dGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNN
YXJrZWRDbGF1c2VTZWdtZW50QXR0cmlidXRlTmFtZSwgbmlsXTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5TTWFya2VkQ2xhdXNlU2VnbWVudEF0dHJpYnV0ZU5hbWUsIE5TVGV4dEFsdGVy
bmF0aXZlc0F0dHJpYnV0ZU5hbWUsIG5pbF07CiAgICAgICAgIC8vIE5TVGV4dCBhbHNvIHN1cHBv
cnRzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcywgYnV0IGl0J3MKICAgICAgICAgLy8gaGFyZCB0
byB0ZWxsIHdoaWNoIGFyZSByZWFsbHkgcmVxdWlyZWQgZm9yIHRleHQgaW5wdXQgdG8KICAgICAg
ICAgLy8gd29yayB3ZWxsOyBJIGhhdmUgbm90IHNlZW4gYW55IGlucHV0IG1ldGhvZCBtYWtlIHVz
ZSBvZiB0aGVtIHlldC4KQEAgLTI5MDYsOSArMjkyMSw5IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0
aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAgICAgcmV0dXJuIF9k
YXRhLT5fc3BlbGxDaGVja2VyRG9jdW1lbnRUYWc7CiB9CiAKLS0gKHZvaWQpaGFuZGxlQ29ycmVj
dGlvblBhbmVsUmVzdWx0OihOU1N0cmluZyopcmVzdWx0CistICh2b2lkKWhhbmRsZUFjY2VwdGVk
QWx0ZXJuYXRpdmVUZXh0OihOU1N0cmluZyopdGV4dAogewotICAgIF9kYXRhLT5fcGFnZS0+aGFu
ZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0KTsKKyAgICBfZGF0YS0+X3BhZ2UtPmhh
bmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHRleHQpOwogfQogCiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAppbmRleCAwOGNm
ZjE0MGNmZmE4MDFhMGYzMzJiYzhkMjc3NDQ1OGZiOTQwOTJkLi4wOWI5YzhjZjFkMTZhN2I5NzBi
MmNjZTJiZGUzMjI3YjM4MmY3OTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKQEAgLTk5LDUgKzk5LDYgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAtICh2b2lkKV9jYWNoZVdpbmRvd0JvdHRvbUNvcm5lclJlY3Q7CiAKIC0gKE5TSW50
ZWdlcilzcGVsbENoZWNrZXJEb2N1bWVudFRhZzsKLS0gKHZvaWQpaGFuZGxlQ29ycmVjdGlvblBh
bmVsUmVzdWx0OihOU1N0cmluZyopcmVzdWx0OworLSAodm9pZCloYW5kbGVBY2NlcHRlZEFsdGVy
bmF0aXZlVGV4dDooTlNTdHJpbmcqKXRleHQ7CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCmluZGV4IDYyMDU4ZmQ0OGI5M2ZmYTZhZDVkMGZjMmQyMzJhZmI1NTEzMGM3
Y2UuLjc5ODViNjhkOTJlMTI3YWVmNmE0MWNlNzY1OGExZWU1NzVlZTA5YTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQAogCiAjaWYgVVNFKEFQ
UEtJVCkKIE9CSkNfQ0xBU1MgV0tWaWV3OworT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7
CiAjZW5kaWYKICNlbmRpZgogCkBAIC0yMDEsNiArMjAyLDEyIEBAIHB1YmxpYzoKIAogI2lmIFVT
RShBUFBLSVQpCiAgICAgdmlydHVhbCBXS1ZpZXcqIHdrVmlldygpIGNvbnN0ID0gMDsKKworICAg
IHZpcnR1YWwgdWludDY0X3QgYWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0
cjxOU1RleHRBbHRlcm5hdGl2ZXM+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0
YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRl
eHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUko
KSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMo
dWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOwogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBhODRjNDY3OTMxZTVhMjc3
ZmMxODdkN2YyMWM2NjlhNjc5YWM2ZmQ4Li5jYzk4MGQzMThlYTM5MzNmYWE5NmI0NjdiY2FkZGIw
ZjQ2OTcwZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtMzgxMSw2ICszODExLDI5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVBbHRlcm5hdGl2
ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCkKICAgICAgICAgcHJvY2VzcygpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChyZXN1
bHQpLCBtX3BhZ2VJRCwgMCk7CiAjZW5kaWYKIH0KKworI2lmIFVTRShESUNUQVRJT05fQUxURVJO
QVRJVkVTKQordm9pZCBXZWJQYWdlUHJveHk6OnNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0
X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBtX3BhZ2VDbGllbnQtPnNob3dEaWN0YXRpb25B
bHRlcm5hdGl2ZVVJKGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIGRpY3RhdGlvbkNvbnRleHQp
OworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUko
KQoreworICAgIG1fcGFnZUNsaWVudC0+ZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoKTsK
K30KKwordm9pZCBXZWJQYWdlUHJveHk6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50
NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIG1fcGFnZUNsaWVudC0+cmVtb3ZlRGljdGF0
aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94
eTo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQsIFZlY3Rv
cjxTdHJpbmc+JiByZXN1bHQpCit7CisgICAgcmVzdWx0ID0gbV9wYWdlQ2xpZW50LT5kaWN0YXRp
b25BbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCk7Cit9CisjZW5kaWYKKwogI2VuZGlmIC8v
IFBMQVRGT1JNKE1BQykKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNmQ5ODU5OGZmZWM0OGRjY2ZhN2I1ZDdiYTllYTEz
YjMxNTM2Y2FiOC4uNjlmOTg4MTkxMGQwNGJlMmU1MDljZmNjNGIwMGU2MDI1M2M5Y2I0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNTgsNiArNTgsOSBAQAog
I2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2Fk
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViVUlDbGllbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Fs
dGVybmF0aXZlVGV4dENsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0RyYWdTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXRU
ZXN0UmVzdWx0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QbGF0Zm9ybVNjcmVlbi5oPgpAQCAtOTUsNiArOTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgSW50U2l6ZTsKICAgICBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiAgICAgc3Ry
dWN0IEZpbGVDaG9vc2VyU2V0dGluZ3M7CisgICAgc3RydWN0IFRleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZTsKICAgICBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0OwogICAgIHN0cnVjdCBWaWV3cG9y
dEF0dHJpYnV0ZXM7CiAgICAgc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwpAQCAtMzUzLDYgKzM1Nyw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbmZpcm1Db21wb3NpdGlvbigpOwogICAgIHZvaWQgY2Fu
Y2VsQ29tcG9zaXRpb24oKTsKICAgICBib29sIGluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFu
Z2VFbmQpOworICAgIGJvb2wgaW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwg
dWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdl
RW5kLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgZGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICB2b2lkIGdldE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBs
b2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCk7CiAgICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlKHVp
bnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCk7CiAgICAgdm9pZCBnZXRBdHRyaWJ1
dGVkU3Vic3RyaW5nRnJvbVJhbmdlKHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgs
IEF0dHJpYnV0ZWRTdHJpbmcmKTsKQEAgLTkwMiw2ICs5MDcsMTMgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKGludDMyX3QgcmVhc29uLCBTdHJpbmcmIHJl
c3VsdCk7CiAgICAgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVz
cG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50U3RyaW5nKTsKICNlbmRpZiAvLyAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xF
T1BBUkQpCisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICB2b2lkIHNob3dE
aWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdC
b3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCk7CisgICAgdm9pZCBk
aXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSSgpOworICAgIHZvaWQgcmVtb3ZlRGljdGF0aW9u
QWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOworICAgIHZvaWQgZGljdGF0
aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQsIFZlY3RvcjxTdHJpbmc+
JiByZXN1bHQpOworI2VuZGlmCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAgICAgdm9pZCBj
bGVhckxvYWREZXBlbmRlbnRDYWxsYmFja3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGRlNjBhNzE2NmY1NGE4MTg5MTM1
MGUwNzU0MjVhM2E5ODNlM2UwZTMuLjkzODU4YTgzMmJhOTcwYjk4M2RhNWFhMTA1NjUyMzkwOTUy
ZjY3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMjgxLDYgKzI4MSwxMyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkg
ewogICAgIFJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoaW50MzJfdCByZXNwb25zZVR5cGUs
IFN0cmluZyByZXBsYWNlZFN0cmluZywgU3RyaW5nIHJlcGxhY2VtZW50U3RyaW5nKTsKICNlbmRp
ZgogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgU2hvd0RpY3RhdGlvbkFs
dGVybmF0aXZlVUkoV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQs
IHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCisgICAgRGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0
aXZlVUkoKQorICAgIFJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRp
b25Db250ZXh0KQorICAgIERpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25D
b250ZXh0KSAtPiAoVmVjdG9yPFN0cmluZz4gYWx0ZXJuYXRpdmVzKQorI2VuZGlmCisKICNpZiBQ
TEFURk9STShXSU4pCiAgICAgIyBXaW5kb3dzIDcgR2VzdHVyZSBNZXNzYWdlcwogICAgIFNldEdl
c3R1cmVSZWFjaGVkU2Nyb2xsaW5nTGltaXQoYm9vbCBsaW1pdFJlYWNoZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tCmluZGV4IDI5NjgxYzc0
ZGE2ZTBiOGRiNjc3OTc2OWE1NjFkN2EzM2JlYzIyZTcuLjMzZjNmZTk4MmNmYmU4NDRiN2EwNWRj
YTgzZTA2NjY4YzBmMjQ2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvQ29ycmVjdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
Q29ycmVjdGlvblBhbmVsLm1tCkBAIC00Myw2ICs0Myw5IEBAIHN0YXRpYyBpbmxpbmUgTlNDb3Jy
ZWN0aW9uSW5kaWNhdG9yVHlwZSBjb3JyZWN0aW9uSW5kaWNhdG9yVHlwZShBbHRlcm5hdGl2ZVRl
eHRUCiAgICAgICAgIHJldHVybiBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlUmV2ZXJzaW9uOwog
ICAgIGNhc2UgQWx0ZXJuYXRpdmVUZXh0VHlwZVNwZWxsaW5nU3VnZ2VzdGlvbnM6CiAgICAgICAg
IHJldHVybiBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlR3Vlc3NlczsKKyAgICBjYXNlIEFsdGVy
bmF0aXZlVGV4dFR5cGVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIE5TQ29ycmVjdGlvbkluZGljYXRvclR5cGVEZWZhdWx0OwpAQCAtMTM4
LDcgKzE0MSw3IEBAIHZvaWQgQ29ycmVjdGlvblBhbmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxhY2Vt
ZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJlcGxhY2VtZW50LCBOCiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAotICAgIFttX3ZpZXcuZ2V0KCkgaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OmFjY2Vw
dGVkUmVwbGFjZW1lbnRdOworICAgIFttX3ZpZXcuZ2V0KCkgaGFuZGxlQWNjZXB0ZWRBbHRlcm5h
dGl2ZVRleHQ6YWNjZXB0ZWRSZXBsYWNlbWVudF07CiAgICAgbV92aWV3LmNsZWFyKCk7CiAgICAg
aWYgKGFjY2VwdGVkUmVwbGFjZW1lbnQpCiAgICAgICAgIG1fcmVzdWx0Rm9yRGlzbWlzc2FsLmFk
b3B0TlMoW2FjY2VwdGVkUmVwbGFjZW1lbnQgY29weV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBlYTdlNWVmNjNhNjcxODI2Yjg4
MGRlODQwOGZmNjRkYzE2N2JiYjgyLi45NjcxMmJmMGM1MjczNjIyMTczY2U1NWNlNGUwNDRlYzNm
YTZlOTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbQpAQCAtMzksNyArMzksOSBAQAogI2ltcG9ydCAiVGV4dENoZWNrZXIuaCIKICNpbXBv
cnQgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW1w
b3J0IDxXZWJDb3JlL0RpY3RhdGlvbkFsdGVybmF0aXZlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2Uu
aD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGUuaD4KIApAQCAtMTk5LDYgKzIwMSwzNSBAQCBib29sIFdlYlBhZ2VQ
cm94eTo6aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50
UmFuZ2VTdGFydAogICAgIHJldHVybiBoYW5kbGVkOwogfQogCitib29sIFdlYlBhZ2VQcm94eTo6
aW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1l
bnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kLCBjb25zdCBWZWN0b3I8
VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzV2l0aFJhbmdl
KQoreworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIGlmIChkaWN0YXRpb25B
bHRlcm5hdGl2ZXNXaXRoUmFuZ2UuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gaW5zZXJ0VGV4
dCh0ZXh0LCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQpOworCisg
ICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgVmVjdG9yPERp
Y3RhdGlvbkFsdGVybmF0aXZlPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXM7CisKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZS5zaXplKCk7ICsr
aSkgeworICAgICAgICBjb25zdCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UmIGFsdGVybmF0aXZl
V2l0aFJhbmdlID0gZGljdGF0aW9uQWx0ZXJuYXRpdmVzV2l0aFJhbmdlW2ldOworICAgICAgICB1
aW50NjRfdCBkaWN0YXRpb25Db250ZXh0ID0gbV9wYWdlQ2xpZW50LT5hZGREaWN0YXRpb25BbHRl
cm5hdGl2ZXMoYWx0ZXJuYXRpdmVXaXRoUmFuZ2UuYWx0ZXJuYXRpdmVzKTsKKyAgICAgICAgaWYg
KGRpY3RhdGlvbkNvbnRleHQpCisgICAgICAgICAgICBkaWN0YXRpb25BbHRlcm5hdGl2ZXMuYXBw
ZW5kKERpY3RhdGlvbkFsdGVybmF0aXZlKGFsdGVybmF0aXZlV2l0aFJhbmdlLnJhbmdlLmxvY2F0
aW9uLCBhbHRlcm5hdGl2ZVdpdGhSYW5nZS5yYW5nZS5sZW5ndGgsIGRpY3RhdGlvbkNvbnRleHQp
KTsKKyAgICB9CisKKyAgICBpZiAoZGljdGF0aW9uQWx0ZXJuYXRpdmVzLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIGluc2VydFRleHQodGV4dCwgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBs
YWNlbWVudFJhbmdlRW5kKTsKKworICAgIGJvb2wgaGFuZGxlZCA9IHRydWU7CisgICAgcHJvY2Vz
cygpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RGljdGF0ZWRUZXh0KHRleHQs
IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCwgZGljdGF0aW9uQWx0
ZXJuYXRpdmVzKSwgTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERpY3RhdGVkVGV4dDo6UmVwbHko
aGFuZGxlZCwgbV9lZGl0b3JTdGF0ZSksIG1fcGFnZUlEKTsKKyAgICByZXR1cm4gaGFuZGxlZDsK
KyNlbHNlCisgICAgcmV0dXJuIGluc2VydFRleHQodGV4dCwgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0
LCByZXBsYWNlbWVudFJhbmdlRW5kKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0TWFya2VkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKQogewog
ICAgIGxvY2F0aW9uID0gTlNOb3RGb3VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENs
aWVudC5oCmluZGV4IDIwMDc2NTgzNjgwNTNmZjJiMmVmYmIwYTM0YmZmZmNmYjlkMjk3MWEuLjgw
YWE5YTRlNThhOTMwZjhlMDUyOTQ2NDFkMzMyNWMzN2UxYjdkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQuaApAQCAtMzgsMTAgKzM4LDE4IEBAIHB1YmxpYzoKICAgICBX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoV2ViUGFnZSAqKTsKICAgICB2aXJ0dWFsIH5XZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpIE9W
RVJSSURFOworI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICB2aXJ0dWFsIHZvaWQg
c2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmlu
ZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0FsdGVybmF0aXZlKFdlYkNvcmU6OlJl
YXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
U3RyaW5nIGRpc21pc3NBbHRlcm5hdGl2ZVNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2lu
Z0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9j
b3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJp
bmcpIE9WRVJSSURFOworI2VuZGlmCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisg
ICAgdmlydHVhbCB2b2lkIHNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9u
Q29udGV4dCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc21pc3NEaWN0YXRpb25BbHRl
cm5hdGl2ZVVJKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURpY3RhdGlvbkFs
dGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRp
b25Db250ZXh0KSBPVkVSUklERTsKKyNlbmRpZgogcHJpdmF0ZToKICAgICBXZWJQYWdlICptX3Bh
Z2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAK
aW5kZXggYWMxZGZjNTgzYTY0YWExMjEzNjY2OWYyOTRiMmU0ZmVlZmM5MGMwYS4uMWZjZWM5MTEz
ODUyZGFhNDFmN2FkNDkyMzlmYjU4MDBiNDVhZDk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwCkBAIC01MSwzNCArNTEsNTEgQEAgdm9pZCBXZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQ6OnBhZ2VEZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0aGlzOwog
fQogCisjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogdm9pZCBXZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQ6OnNob3dDb3JyZWN0aW9uQWx0ZXJuYXRpdmUoQWx0ZXJuYXRpdmVUZXh0VHlwZSB0
eXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQogewot
I2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2hvd0NvcnJlY3Rpb25QYW5lbCh0eXBlLCBib3VuZGluZ0JveE9mUmVw
bGFjZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZywgYWx0ZXJuYXRp
dmVSZXBsYWNlbWVudFN0cmluZ3MpKTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYkFsdGVybmF0aXZl
VGV4dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0aXZlKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5h
dGl2ZVRleHQgcmVhc29uKQogewotI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlzbWlzc0NvcnJlY3Rpb25QYW5l
bChyZWFzb24pKTsKLSNlbmRpZgogfQogCiBTdHJpbmcgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
OjpkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRl
eHQgcmVhc29uKQogewogICAgIFN0cmluZyByZXN1bHQ7Ci0jaWYgVVNFKEFVVE9DT1JSRUNUSU9O
X1BBTkVMKQogICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlz
bWlzc0NvcnJlY3Rpb25QYW5lbFNvb24ocmVhc29uKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb246OlJlcGx5KHJlc3VsdCkpOwotI2VuZGlmCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJlY29y
ZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVzcG9u
c2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50U3RyaW5nKQogewotI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNw
b25zZShyZXNwb25zZVR5cGUsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZykpOwor
fQogI2VuZGlmCisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKK3ZvaWQgV2ViQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3Qg
ZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6UmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpKTsKIH0K
IAordm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnNob3dEaWN0YXRpb25BbHRlcm5hdGl2
ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwg
dWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoYm91bmRpbmdCb3hPZkRp
Y3RhdGVkVGV4dCwgZGljdGF0aW9uQ29udGV4dCkpOworfQorCit2b2lkIFdlYkFsdGVybmF0aXZl
VGV4dENsaWVudDo6ZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoKQoreworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRp
dmVVSSgpKTsKK30KKworVmVjdG9yPFN0cmluZz4gV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Ojpk
aWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBW
ZWN0b3I8U3RyaW5nPiByZXN1bHQ7CisgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCksIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpY3RhdGlvbkFsdGVybmF0aXZlczo6UmVwbHkocmVzdWx0KSk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMTVkYTdmNWYxNWJhNjJmYmRjMDdiODc2Zjc4
M2RkNGEyZGQwMTQ0OC4uY2I4N2YwZTJiODUzNmRjZTFiMjRkZDkyOTdkZmNlNzE0ZTI0YTE5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00OCw2
ICs0OCw3IEBACiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNoYXJl
YWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIldlYlVuZG9TdGVwLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2Fk
ZXJUeXBlcy5oPgpAQCAtNDE5LDcgKzQyMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3VsZERl
bGF5V2luZG93T3JkZXJpbmdFdmVudChjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQmLCBib29s
JiByZXN1bHQpOwogICAgIHZvaWQgYWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVyLCBj
b25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQmLCBib29sJiByZXN1bHQpOwogICAgIGJvb2wgcGVy
Zm9ybU5vbkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbnN0IFN0cmluZyYpOwotCisgICAg
dm9pZCBpbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBs
YWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZl
TG9jYXRpb25zLCBib29sJiBoYW5kbGVkLCBFZGl0b3JTdGF0ZSYgbmV3U3RhdGUpOwogI2VsaWYg
UExBVEZPUk0oV0lOKQogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYg
Y29tcG9zaXRpb25TdHJpbmcpOwogICAgIHZvaWQgc2V0Q29tcG9zaXRpb24oY29uc3QgV1RGOjpT
dHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCBjb25zdCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpDb21w
b3NpdGlvblVuZGVybGluZT4mIHVuZGVybGluZXMsIHVpbnQ2NF90IGN1cnNvclBvc2l0aW9uKTsK
QEAgLTUwNCw3ICs1MDUsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVubWFya0FsbE1pc3NwZWxs
aW5ncygpOwogICAgIHZvaWQgdW5tYXJrQWxsQmFkR3JhbW1hcigpOwotCiAjaWYgUExBVEZPUk0o
TUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAgICAgdm9pZCBoYW5k
bGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmKTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgppbmRleCAzYjBjZWRjNGFjODgxMDUyNjIwMGMzYTRjM2VmNGZjMGI1YzU4OGJhLi4wOTRlMzc5
NGJkNGFlZTI5NDFlY2MyMGIwNGJmNTcwM2VlY2QxNGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjUwLDYg
KzI1MCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogICAgIEV4ZWN1dGVLZXlwcmVzc0NvbW1h
bmRzKFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+IHNhdmVkQ29tbWFuZHMpIC0+IChi
b29sIGhhbmRsZWQsIFdlYktpdDo6RWRpdG9yU3RhdGUgbmV3U3RhdGUpCiAgICAgU2hvdWxkRGVs
YXlXaW5kb3dPcmRlcmluZ0V2ZW50KFdlYktpdDo6V2ViTW91c2VFdmVudCBldmVudCkgLT4gKGJv
b2wgcmVzdWx0KQogICAgIEFjY2VwdHNGaXJzdE1vdXNlKGludCBldmVudE51bWJlciwgV2ViS2l0
OjpXZWJNb3VzZUV2ZW50IGV2ZW50KSAtPiAoYm9vbCByZXN1bHQpCisgICAgSW5zZXJ0RGljdGF0
ZWRUZXh0KFdURjo6U3RyaW5nIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwg
dWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCwgV1RGOjpWZWN0b3I8V2ViQ29yZTo6RGljdGF0
aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlcykgLT4gKGJvb2wgaGFuZGxlZCwg
V2ViS2l0OjpFZGl0b3JTdGF0ZSBuZXdTdGF0ZSkKICNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikK
ICAgICAvLyBGSVhNRTogVW5pZnkgd2l0aCBNYWMgY291bnRlcnBhcnRzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDll
MGMxMzc3NWQyNmYwMGNmMmQ4OTc4YjZjN2ZmYTkyMWFmYWRjZTQuLjIyZWVkZTg0MzUwZWU4OWYz
NTk3NDNiODZkZmZjZDcwNTI2ZTc1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTI5MCw2ICsyOTAsMjEgQEAgdm9p
ZCBXZWJQYWdlOjppbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFj
ZW1lbnRSYW5nZVN0YXJ0LCB1aW4KICAgICBuZXdTdGF0ZSA9IGVkaXRvclN0YXRlKCk7CiB9CiAK
K3ZvaWQgV2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWlu
dDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5k
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25B
bHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9vbCYgaGFuZGxlZCwgRWRpdG9yU3RhdGUmIG5ld1N0YXRl
KQoreworICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3Vz
ZWRPck1haW5GcmFtZSgpOworCisgICAgaWYgKHJlcGxhY2VtZW50UmFuZ2VTdGFydCAhPSBOU05v
dEZvdW5kKSB7CisgICAgICAgIFJlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9IGNvbnZl
cnRUb1JhbmdlKGZyYW1lLCBOU01ha2VSYW5nZShyZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxh
Y2VtZW50UmFuZ2VFbmQgLSByZXBsYWNlbWVudFJhbmdlU3RhcnQpKTsKKyAgICAgICAgaWYgKHJl
cGxhY2VtZW50UmFuZ2UpCisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVj
dGlvbihWaXNpYmxlU2VsZWN0aW9uKHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCksIFNFTF9ERUZBVUxU
X0FGRklOSVRZKSk7CisgICAgfQorCisgICAgQVNTRVJUKCFmcmFtZS0+ZWRpdG9yKCktPmhhc0Nv
bXBvc2l0aW9uKCkpOworICAgIGhhbmRsZWQgPSBmcmFtZS0+ZWRpdG9yKCktPmluc2VydERpY3Rh
dGVkVGV4dCh0ZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgbV9rZXlib2FyZEV2
ZW50QmVpbmdJbnRlcnByZXRlZCk7CisgICAgbmV3U3RhdGUgPSBlZGl0b3JTdGF0ZSgpOworfQor
CiB2b2lkIFdlYlBhZ2U6OmdldE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0
X3QmIGxlbmd0aCkKIHsKICAgICBsb2NhdGlvbiA9IE5TTm90Rm91bmQ7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjU3ZGE5NDg5OGRiNTY0ZTE4
ZjU4NTE0OGRkODQ0NDJmNWNhZWZmYS4uNWU5YTYxOGZlZWUxMTFhOTk3NTUwMmY4N2ZkOWU5OGE5
NmUwNjUwYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA2LTExICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgor
CisgICAgICAgIE1hcmsgdGV4dCB3aXRoIHRleHQgYWx0ZXJuYXRpdmUgd2l0aCBibHVlIHVuZGVy
bGluZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgz
MDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlci5tOgorICAgICAgICAoK1tUZXh0
SW5wdXRDb250cm9sbGVyIGlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6XSk6CisgICAg
ICAgICgrW1RleHRJbnB1dENvbnRyb2xsZXIgd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOl0pOgor
ICAgICAgICAoLVtUZXh0SW5wdXRDb250cm9sbGVyIGRpY3RhdGVkU3RyaW5nV2l0aFByaW1hcnlT
dHJpbmc6YWx0ZXJuYXRpdmU6YWx0ZXJuYXRpdmVPZmZzZXQ6YWx0ZXJuYXRpdmVMZW5ndGg6XSk6
CisKIDIwMTItMDYtMTEgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBEb24ndCBjb25zaWRlciBzaG93IHdhcm5pbmdzIGluIHRoZSBnYXJkZW4tby1tYXRpYyBVSSBm
b3Igbm9uLWxheW91dCB0ZXN0IGZhaWx1cmVzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlci5tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1RleHRJbnB1dENvbnRyb2xsZXIubQppbmRleCBmNzgwNzk0NDYzNjllNzhjOWY0OGNlMDgxNWVm
MWNjYzhkZjBiOTlkLi5hZmViMTZlNGQyNDJiMmI2MDIwYzAyZTQ0MWFlODNkNzQwZTkzMmYzIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlci5t
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyLm0KQEAg
LTMxLDYgKzMxLDEwIEBACiAKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlTWFjLmgiCiAjaW1wb3J0
IDxBcHBLaXQvTlNJbnB1dE1hbmFnZXIuaD4KKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9Q
QVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpICYmICFkZWZpbmVkKEJV
SUxESU5HX09OX0xJT04pCisjZGVmaW5lIFNVUFBPUlRfRElDVEFUSU9OX0FMVEVSTkFUSVZFUwor
I2ltcG9ydCA8QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgorI2VuZGlmCiAjaW1wb3J0IDxX
ZWJLaXQvV2ViRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZS5oPgogI2ltcG9y
dCA8V2ViS2l0L1dlYkZyYW1lUHJpdmF0ZS5oPgpAQCAtMTcwLDcgKzE3NCw4IEBAICsgKEJPT0wp
aXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDooU0VMKWFTZWxlY3RvcgogICAgICAgICAg
ICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihjaGFyYWN0ZXJJbmRleEZvclBvaW50WDpZOikK
ICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IodmFsaWRBdHRyaWJ1dGVzRm9y
TWFya2VkVGV4dCkKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYXR0cmli
dXRlZFN0cmluZ1dpdGhTdHJpbmc6KQotICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxl
Y3RvcihzZXRJbnB1dE1ldGhvZEhhbmRsZXI6KSkKKyAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9
PSBAc2VsZWN0b3Ioc2V0SW5wdXRNZXRob2RIYW5kbGVyOikKKyAgICAgICAgICAgIHx8IGFTZWxl
Y3RvciA9PSBAc2VsZWN0b3IoZGljdGF0ZWRTdHJpbmdXaXRoUHJpbWFyeVN0cmluZzphbHRlcm5h
dGl2ZTphbHRlcm5hdGl2ZU9mZnNldDphbHRlcm5hdGl2ZUxlbmd0aDopKQogICAgICAgICByZXR1
cm4gTk87CiAgICAgcmV0dXJuIFlFUzsKIH0KQEAgLTE5NCw3ICsxOTksOSBAQCArIChOU1N0cmlu
ZyAqKXdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjooU0VMKWFTZWxlY3RvcgogICAgIGVsc2UgaWYg
KGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYXR0cmlidXRlZFN0cmluZ1dpdGhTdHJpbmc6KSkKICAg
ICAgICAgcmV0dXJuIEAibWFrZUF0dHJpYnV0ZWRTdHJpbmciOyAvLyBqdXN0IGEgZmFjdG9yeSBt
ZXRob2QsIGRvZXNuJ3QgY2FsbCBpbnRvIE5TVGV4dElucHV0CiAgICAgZWxzZSBpZiAoYVNlbGVj
dG9yID09IEBzZWxlY3RvcihzZXRJbnB1dE1ldGhvZEhhbmRsZXI6KSkKLSAgICAgICAgcmV0dXJu
IEAic2V0SW5wdXRNZXRob2RIYW5kbGVyIjsgCisgICAgICAgIHJldHVybiBAInNldElucHV0TWV0
aG9kSGFuZGxlciI7CisgICAgZWxzZSBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihkaWN0YXRl
ZFN0cmluZ1dpdGhQcmltYXJ5U3RyaW5nOmFsdGVybmF0aXZlOmFsdGVybmF0aXZlT2Zmc2V0OmFs
dGVybmF0aXZlTGVuZ3RoOikpCisgICAgICAgIHJldHVybiBAIm1ha2VEaWN0YXRlZFN0cmluZyI7
CiAKICAgICByZXR1cm4gbmlsOwogfQpAQCAtMzc1LDYgKzM4MiwyNyBAQCAtIChOU011dGFibGVB
dHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRlZFN0cmluZ1dpdGhTdHJpbmc6KE5TU3RyaW5nICop
YVN0cmluZwogICAgIHJldHVybiBbW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFN0cmluZzphU3RyaW5nXSBhdXRvcmVsZWFzZV07CiB9CiAKKy0gKE5TTXV0YWJsZUF0
dHJpYnV0ZWRTdHJpbmcqKWRpY3RhdGVkU3RyaW5nV2l0aFByaW1hcnlTdHJpbmc6KE5TU3RyaW5n
KilhU3RyaW5nIGFsdGVybmF0aXZlOihOU1N0cmluZyopYWx0ZXJuYXRpdmUgYWx0ZXJuYXRpdmVP
ZmZzZXQ6KGludClvZmZzZXQgYWx0ZXJuYXRpdmVMZW5ndGg6KGludClsZW5ndGgKK3sKKyNpZiBk
ZWZpbmVkKFNVUFBPUlRfRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBOU011dGFibGVBdHRy
aWJ1dGVkU3RyaW5nKiBkaWN0YXRlZFN0cmluZyA9IFtzZWxmIGF0dHJpYnV0ZWRTdHJpbmdXaXRo
U3RyaW5nOmFTdHJpbmddOworICAgIE5TUmFuZ2UgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBOU01h
a2VSYW5nZSgoTlNVSW50ZWdlcilvZmZzZXQsIChOU1VJbnRlZ2VyKWxlbmd0aCk7CisgICAgTlNT
dHJpbmcqIHN1YlN0cmluZ1dpdGhBbHRlcm5hdGl2ZSA9IFthU3RyaW5nIHN1YnN0cmluZ1dpdGhS
YW5nZTpyYW5nZVdpdGhBbHRlcm5hdGl2ZV07CisgICAgaWYgKCFzdWJTdHJpbmdXaXRoQWx0ZXJu
YXRpdmUpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBOU1RleHRBbHRlcm5hdGl2ZXMqIGFs
dGVybmF0aXZlT2JqZWN0ID0gW1tbTlNUZXh0QWx0ZXJuYXRpdmVzIGFsbG9jXSBpbml0V2l0aFBy
aW1hcnlTdHJpbmc6c3ViU3RyaW5nV2l0aEFsdGVybmF0aXZlIGFsdGVybmF0aXZlU3RyaW5nczpb
TlNBcnJheSBhcnJheVdpdGhPYmplY3Q6YWx0ZXJuYXRpdmVdXSBhdXRvcmVsZWFzZV07CisgICAg
aWYgKCFhbHRlcm5hdGl2ZU9iamVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIFtkaWN0
YXRlZFN0cmluZyBhZGRBdHRyaWJ1dGU6TlNUZXh0QWx0ZXJuYXRpdmVzQXR0cmlidXRlTmFtZSB2
YWx1ZTphbHRlcm5hdGl2ZU9iamVjdCByYW5nZTpyYW5nZVdpdGhBbHRlcm5hdGl2ZV07CisKKyAg
ICByZXR1cm4gZGljdGF0ZWRTdHJpbmc7CisjZWxzZQorICAgIHJldHVybiBuaWw7CisjZW5kaWYK
K30KKwogLSAodm9pZClzZXRJbnB1dE1ldGhvZEhhbmRsZXI6KFdlYlNjcmlwdE9iamVjdCAqKWhh
bmRsZXIKIHsKICAgICBpZiAoaW5wdXRNZXRob2RIYW5kbGVyID09IGhhbmRsZXIpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YmM0YmY1Zjk2MGVhOGNmYTMyYjVkMmQ4NGIzMmVjZmU4MjZkOWY0Zi4uOWU1YzNhYTZkZDIxOTBh
M2FkOGE1NzQ2MTZlMzA4YzJmYzAwOTNmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA2
LTExICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgdGV4dCB3aXRoIHRl
eHQgYWx0ZXJuYXRpdmUgd2l0aCBibHVlIHVuZGVybGluZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtc25vd2xlb3BhcmQvU2tp
cHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9lZGl0LWRpY3RhdGVk
LXRleHQtd2l0aC1hbHRlcm5hdGl2ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0
aXZlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2lu
c2VydC1kaWN0YXRlZC10ZXh0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQuaHRtbDogQWRkZWQuCisK
IDIwMTItMDYtMTEgIE1heCBGZWlsICA8bWZlaWxAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tC
ZXJyeV0gVW5leHBlY3RlZCByZXBlYXRzIG9mIHNob3J0IG1lZGlhCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtc25vd2xlb3BhcmQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy1zbm93bGVvcGFyZC9Ta2lwcGVkCmluZGV4IDUyYTczNmU5NTg0MmE2NThkMDNi
NjgwYTVhNzdhMWZiNTc4ZTZhNjIuLmIyNzE0NWU4ZjQ0N2UwMjI2YTNkYmQwNWY2OTFiYmMyNWE4
MGY2ZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1zbm93bGVvcGFyZC9T
a2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1zbm93bGVvcGFyZC9Ta2lwcGVk
CkBAIC0yMTEsMyArMjExLDcgQEAgZmFzdC9zdWItcGl4ZWwvZmlsZS11cGxvYWQtY29udHJvbC1h
dC1mcmFjdGlvbmFsLW9mZnNldC5odG1sCiAjIEZyYW1lOjpmaW5kU3RyaW5nIGRvZXMgbm90aGlu
ZyBvbiBwYWdlcyB0aGF0IHByZXZlbnQgc2VsZWN0aW9uCiAjIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MDM2MQogZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2ZpbmRTdHJp
bmctc2VsZWN0aW9uLWRpc2FibGVkLmh0bWwKKworIyBEaWN0YXRlZCB0ZXh0IGlucHV0IGlzIG5v
dCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybQorcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQv
ZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUuaHRtbAorcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgt
YWx0ZXJuYXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI1N2M3OGNhNjM4YjU3Zjg5NDViOWUwMThkNWMwOWM5NmRmZmE0NjMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9l
ZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw4IEBACitFZGl0aW5nIHRleHQgdGhhdCBoYXMgRGljdGF0aW9uQWx0ZXJuYXRpdmVzIG1hcmtl
ciB3aG91bGQgY2F1c2UgdGhlIG1hcmtlciB0byBiZSByZW1vdmVkLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKK3RoaXMgaXMgYSB0ZXgKK1BBU1MgbWFya2VkVGV4dCBpcyAiIgorCitU
RVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGlu
Zy9pbnB1dC9lZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS5odG1sIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgt
YWx0ZXJuYXRpdmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jN2YwMDc5MDM2NjI2NWYwZDBlYmIwY2JkNmFi
YTYxNjAyZGU5ZDNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUuaHRtbApA
QCAtMCwwICsxLDU5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK2Jv
ZHkgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
PHByZSBpZD0iZGVzY3JpcHRpb24iPjwvcHJlPgorPGRpdiBpZD0idGVzdCIgY29udGVudGVkaXRh
YmxlPjwvZGl2PgorPHAgaWQ9ImNvbnNvbGUiPjwvcD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KKyAgICBkZXNjcmlwdGlvbigiRWRpdGluZyB0ZXh0IHRoYXQgaGFzIERpY3RhdGlv
bkFsdGVybmF0aXZlcyBtYXJrZXIgd2hvdWxkIGNhdXNlIHRoZSBtYXJrZXIgdG8gYmUgcmVtb3Zl
ZC4iKTsKKworICAgIHZhciBjb25zb2xlX21lc3NhZ2VzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgib2wiKTsKKyAgICAKKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICB7CisgICAgICAg
IHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgaXRlbS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgICAgIGNv
bnNvbGVfbWVzc2FnZXMuYXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgfQorICAgIAorICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgCisgICAgICAgIHRyeSB7CisK
KyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAg
ICAgIHZhciB0ZXN0QXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisgICAg
ICAgICAgICB0ZXN0QXJlYS5mb2N1cygpOworCisgICAgICAgICAgICB2YXIgZGljdGF0ZWRTdHJp
bmcgPSB0ZXh0SW5wdXRDb250cm9sbGVyLm1ha2VEaWN0YXRlZFN0cmluZygidGhpcyBpcyBhIHRl
eHQiLCAidGVzdCIsIDEwLCA0KTsKKyAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJT
ZWxlY3RBbGwiKTsKKyAgICAgICAgICAgIHRleHRJbnB1dENvbnRyb2xsZXIuaW5zZXJ0VGV4dChk
aWN0YXRlZFN0cmluZyk7CisgICAgICAgICAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29tbWFu
ZCgiZGVsZXRlQmFja3dhcmQ6Iik7CisKKyAgICAgICAgICAgIHZhciBtYXJrZWRUZXh0ID0gIiI7
CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAgICAgICAgIHZh
ciB0ZXN0VGV4dCA9IHRlc3RBcmVhLmZpcnN0Q2hpbGQ7CisgICAgICAgICAgICAgICAgdmFyIG1h
cmtlZCA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGVzdFRleHQsICJEaWN0YXRpb25B
bHRlcm5hdGl2ZXMiLCAwKTsKKyAgICAgICAgICAgICAgICBpZiAobWFya2VkKQorICAgICAgICAg
ICAgICAgICAgICBtYXJrZWRUZXh0ID0gbWFya2VkLnRvU3RyaW5nKCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibWFya2VkVGV4dCIsICIiKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCJURVNUIENPTVBMRVRFIik7CisKKyAgICAgICAg
fSBjYXRjaCAoZXgpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCJFeGNlcHRpb246ICIg
KyBleC5kZXNjcmlwdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoY29uc29sZV9tZXNzYWdlcyk7
CisgICAgICAgIAorICAgIH0gZWxzZSB7CisgICAgICAgIGRvY3VtZW50LndyaXRlKCIoY2Fubm90
IHJ1biBpbnRlcmFjdGl2ZWx5KSIpOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5z
ZXJ0LWRpY3RhdGVkLXRleHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJkNDYxNzMyZWVlZjMzZjIwZjA4MDcwZjUxMWQ5ZGNmYzAyMGJhMDEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQtZGlj
dGF0ZWQtdGV4dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitXaGVuIGluc2VydGluZyBk
aWN0YXRlZCB0ZXh0LCByYW5nZSBvZiB0ZXh0IHRoYXQgaGFzIGFsdGVybmF0aXZlIHRleHQgaXMg
YXR0YWNoZWQgYXMgRGljdGF0aW9uQWx0ZXJuYXRpdmVzIG1hcmtlci4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCit0aGlzIGlzIGEgdGV4dAorUEFTUyBtYXJrZWRUZXh0IGlzICJ0ZXh0
IgorCitURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZWRpdGluZy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQtdGV4dC5odG1sIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lMmExZTQzYmQ5OWUzZDI1ZTAyMDgzMDMwYmU3ZjMyZjhjNWQ0NDE0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRp
Y3RhdGVkLXRleHQuaHRtbApAQCAtMCwwICsxLDU4IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzdHlsZT4KK2JvZHkgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDAgfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorPHByZSBpZD0iZGVzY3JpcHRpb24iPjwvcHJlPgorPGRpdiBpZD0i
dGVzdCIgY29udGVudGVkaXRhYmxlPjwvZGl2PgorPHAgaWQ9ImNvbnNvbGUiPjwvcD4KKzxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBkZXNjcmlwdGlvbigiV2hlbiBpbnNlcnRp
bmcgZGljdGF0ZWQgdGV4dCwgcmFuZ2Ugb2YgdGV4dCB0aGF0IGhhcyBhbHRlcm5hdGl2ZSB0ZXh0
IGlzIGF0dGFjaGVkIGFzIERpY3RhdGlvbkFsdGVybmF0aXZlcyBtYXJrZXIuIik7CisKKyAgICB2
YXIgY29uc29sZV9tZXNzYWdlcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7CisgICAg
CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCisgICAgeworICAgICAgICB2YXIgaXRlbSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgICAgICBjb25zb2xlX21lc3NhZ2Vz
LmFwcGVuZENoaWxkKGl0ZW0pOworICAgIH0KKyAgICAKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgICAgIAorICAgICAgICB0cnkgeworCisgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB2YXIgdGVzdEFy
ZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworICAgICAgICAgICAgdGVzdEFy
ZWEuZm9jdXMoKTsKKworICAgICAgICAgICAgdmFyIGRpY3RhdGVkU3RyaW5nID0gdGV4dElucHV0
Q29udHJvbGxlci5tYWtlRGljdGF0ZWRTdHJpbmcoInRoaXMgaXMgYSB0ZXh0IiwgInRlc3QiLCAx
MCwgNCk7CisgICAgICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxsIik7Cisg
ICAgICAgICAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmluc2VydFRleHQoZGljdGF0ZWRTdHJpbmcp
OworCisgICAgICAgICAgICB2YXIgbWFya2VkVGV4dCA9ICIiOworICAgICAgICAgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICB2YXIgdGVzdFRleHQgPSB0ZXN0QXJl
YS5maXJzdENoaWxkOworICAgICAgICAgICAgICAgIHZhciBtYXJrZWQgPSBpbnRlcm5hbHMubWFy
a2VyUmFuZ2VGb3JOb2RlKHRlc3RUZXh0LCAiRGljdGF0aW9uQWx0ZXJuYXRpdmVzIiwgMCk7Cisg
ICAgICAgICAgICAgICAgaWYgKG1hcmtlZCkKKyAgICAgICAgICAgICAgICAgICAgbWFya2VkVGV4
dCA9IG1hcmtlZC50b1N0cmluZygpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIm1hcmtlZFRleHQiLCAidGV4dCIpOworICAgICAgICAgICAgZG9j
dW1lbnQud3JpdGUoIlRFU1QgQ09NUExFVEUiKTsKKworICAgICAgICB9IGNhdGNoIChleCkgewor
ICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIkV4Y2VwdGlvbjogIiArIGV4LmRlc2NyaXB0aW9u
KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnNvbGUiKS5hcHBlbmRDaGlsZChjb25zb2xlX21lc3NhZ2VzKTsKKyAgICAgICAgCisgICAg
fSBlbHNlIHsKKyAgICAgICAgZG9jdW1lbnQud3JpdGUoIihjYW5ub3QgcnVuIGludGVyYWN0aXZl
bHkpIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147251</attachid>
            <date>2012-06-13 00:27:51 -0700</date>
            <delta_ts>2012-06-13 10:09:05 -0700</delta_ts>
            <desc>Fixing Lion build.</desc>
            <filename>bug-83047-20120613002751.patch</filename>
            <type>text/plain</type>
            <size>131342</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTAyYTA2ZDRmMDA2Nzkz
YWU1YTQxYWI1YTYzODk5OTZhNjAxZGVhMC4uMDY1MWRjNTRiMzlkZTczNDI2YTRkY2UxZTNmNTdi
M2Q1YTZkYzBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTA2LTExICBKaWEg
UHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgdGV4dCB3aXRoIHRleHQgYWx0ZXJu
YXRpdmUgd2l0aCBibHVlIHVuZGVybGluZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgzMDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQt
ZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRm
b3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0Lmh0bWwKKworICAgICAg
ICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdmlzdWFsIGluZGljYXRpb24gb24gZGljdGF0ZWQgdGV4
dCB3aXRoIGFsdGVybmF0aXZlcywgYW5kIHByb3ZpZGluZyBVSQorICAgICAgICB0byBzaG93IGFs
dGVybmF0aXZlIHRleHQgb24gT1MgWC4gTWFqb3JpdHkgb2YgdGhlIGNoYW5nZXMgaXMgZm9yIGdl
bmVyYWxpemluZyBleGlzdGluZyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyCisgICAgICAgIGNs
YXNzIHRvIGhhbmRsZSBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzLiBUaGUgdHdvIG5ldyBjbGFzc2Vz
LCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgYW5kCisgICAgICAgIFRleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZSwgYXJlIHVzZWQgYnkgYm90aCBXZWJLaXQgYW5kIFdLMi4gU28gV2ViQ29yZSBz
ZWVtcyB0byBiZSB0aGUgbmF0dXJhbCBwbGFjZQorICAgICAgICBmb3IgdGhlbS4KKworICAgICAg
ICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3Bw
OiBFeHBhbmRlZCBleGlzaW5nIGNsYXNzIGludGVyZmFjZSB0byBzdXBwb3J0IGRpY3RhdGlvbiBh
bHRlcm5hdGl2ZXMuCisgICAgICAgIChEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFpbHMpOiBNYXJr
ZXIgZGV0YWlsIGNsYXNzIGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmUgbWFyay4KKyAgICAgICAg
KFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlRGV0YWlsczo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlRGV0YWlsczo6ZGljdGF0aW9uQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFpbHM6OkRpY3RhdGlv
bkFsdGVybmF0aXZlRGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlOjptYXJrZXJUeXBlc0ZvckFw
cGxpZWREaWN0YXRpb25BbHRlcm5hdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UpOiBHZW5lcmFsaXpl
ZCBleGlzdGluZyBhcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UoKSB0byBoYW5kbGUgZGljdGF0
aW9uIGFsdGVybmF0aXZlcy4KKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXI6OnRpbWVyRmlyZWQpOiBFeHBhbmRlZCBleGlzdGluZyBjb2RlIHRvIGhhbmRsZSBkaWN0
YXRpb24gYWx0ZXJuYXRpdmVzLgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQpOiBFeHBhbmRlZCBleGlzdGlu
ZyBjb2RlIHRvIGhhbmRsZSBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzLgorICAgICAgICAoV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6
IE1vdmVkIHBhcnQgb2YgdGhlIGZ1bmN0aW9uIGludG8gcmVzcG9uZFRvTWFya2VyQXRFbmRPZldv
cmQoKSB0byBpbXByb3ZlIHJlYWRhYmlsaXR5LgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjo6c2hvdWxkU3RhcnRUaW1lckZvcik6CisgICAgICAgIChXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjptYXJrZXJEZXNj
cmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFy
a2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmRpY3Rh
dGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKToKKyAgICAgICAgKiBl
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5vdGlmeUNvbXBvbmVudHNPbkNo
YW5nZWRTZWxlY3Rpb24pOiBSZW5hbWVkIGV4aXN0aW5nIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rp
b24oKSBmdW5jdGlvbiB0byBhdm9pZCBuYW1pbmcgY29sbGlzaW9uLgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjphcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVu
YXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFwcGxpZWRFZGl0
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZm
ZWN0ZWRCeUVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjaGFuZ2VTZWxlY3Rp
b25BZnRlckNvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXNwb25kVG9DaGFu
Z2VkU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGljdGF0aW9uQWx0ZXJu
YXRpdmVzRm9yTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlEaWN0YXRp
b25BbHRlcm5hdGl2ZWx0ZXJuYXRpdmUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6Cisg
ICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvbWFj
L0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oOiBBZGRlZC4gV0sxIGFuZCBXSzIgdXNlIHRo
aXMgY2xhc3MgdG8ga2VlcCB0cmFjayBvZiB0ZXh0IGFsdGVybmF0aXZlcyBvYmplY3RzLgorICAg
ICAgICAoQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKToK
KyAgICAgICAgKEFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRD
b250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyKToKKyAgICAgICAgKiBl
ZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW06IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENv
bnRleHRDb250cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVy
OjphbHRlcm5hdGl2ZXNGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6cmVtb3Zl
QWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmNsZWFyKToK
KyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWRkQWx0ZXJu
YXRpdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlcjo6c2hvd0FsdGVybmF0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpkaXNtaXNzQWx0ZXJu
YXRpdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
cmVtb3ZlQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2UuaDogQWRkZWQuICBBIHNpbXBsZSBzdHJ1Y3QgdG8gbWFrZSBpdCBlYXNpZXIg
dG8gcGFzcyBhcm91bmQgYSBwYWlyIG9mIHRleHQgYWx0ZXJuYXRpdmVzIG9iamVjdCBhbmQgcmFu
Z2UuCisgICAgICAgICogZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZTo6VGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3REaWN0YXRpb25U
ZXh0QWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKiBwYWdlL0FsdGVybmF0aXZlVGV4dENsaWVudC5o
OgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDogQWRkZWQgY29kZSB0
byBzaG93IGFsdGVybmF0aXZlIGRpY3RhdGVkIHRleHQgaW4gY29udGV4dCBtZW51LgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3Rl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlm
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0OjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1hcmtlcik6CisKIDIw
MTItMDYtMTEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIFBvcnQgRHJhd2luZ0J1ZmZlckNocm9taXVtIGZyb20gVGV4dHVyZUxheWVy
Q2hyb21pdW0gb3ZlciB0byBXZWJFeHRlcm5hbFRleHR1cmVMYXllcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IDYyMzY5MjE1ZTcwNmY3MDI5OWVhYTgwMWFiYzRhZTY3YjE2OTRhMDYuLjgxMjk4MDI5Mjlh
MDFlMjVmYmMzODBjMGY4ODA1MzhmYTJiOGFjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0NCBAQAorMjAxMi0wNi0xMSAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KKworICAgICAgICBN
YXJrIHRleHQgd2l0aCB0ZXh0IGFsdGVybmF0aXZlIHdpdGggYmx1ZSB1bmRlcmxpbmUuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzA0NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZXMgaW4gV2Vi
S2l0IGluY2x1ZGUgaW1wbGVtZW50YXRpb24gb2YgbmV3IGZ1bmN0aW9ucyBkZWNsYXJlZCBpbiBB
bHRlcm5hdGl2ZVRleHRDbGllbnQsCisgICAgICAgIGFuZCBsb2dpYyBmb3IgY2FsbGluZyBFZGl0
b3I6Omluc2VydERpY3RhdGVkVGV4dCgpIGluc3RlYWQgb2YgRWRpdG9yOjppbnNlcnRUZXh0KCkg
d2hlbiB0aGVyZSdzCisgICAgICAgIGFsdGVybmF0aXZlcyBhdHRhY2hlZCB0byB0aGUgaW5wdXQg
c3RyaW5nLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tOgor
ICAgICAgICAoY29ycmVjdGlvbkluZGljYXRvclR5cGUpOgorICAgICAgICAoQ29ycmVjdGlvblBh
bmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDoKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4
dENsaWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50Lm1tOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpzaG93Q29ycmVjdGlv
bkFsdGVybmF0aXZlKToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlz
c0FsdGVybmF0aXZlKToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlz
c0FsdGVybmF0aXZlU29vbik6CisgICAgICAgIChXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50OjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50OjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSSk6CisgICAgICAgIChX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKToK
KyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVz
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1M
VmlldyB2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0XSk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IGluc2VydFRleHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAg
ICAoLVtXZWJWaWV3IGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0Ol0pOgorICAgICAgICAo
LVtXZWJWaWV3IF9nZXRXZWJDb3JlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOmZyb21UZXh0QWx0ZXJu
YXRpdmVzOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVV
STpXZWJDb3JlOjpmb3JEaWN0YXRpb25Db250ZXh0Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IF9k
aXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSV0pOgorICAgICAgICAoLVtXZWJWaWV3IF9yZW1v
dmVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2RpY3RhdGlv
bkFsdGVybmF0aXZlczpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5tbToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUg
aW5pdF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDEyLTA2LTExICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIGRpc2Nvbm5lY3RlZC9l
eGNsdWRlZCBmcm9tIHNlYXJjaCBmcmFtZXMsIHRoZXkgYXJlIG5vdCB1c2VkIGJ5IFNhZmFyaSBh
bnltb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2ExOWNjYTUxM2UxZDA5MmUwZmJhNGQ1Yzk1NWExMmI1MzMw
ZjRjYi4uNDYxMDk1NWZhMDA0Y2YxYzc1ZjIwOTQ4YWNhYTE3YTkxZDRmZGJiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTA2LTExICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgor
CisgICAgICAgIE1hcmsgdGV4dCB3aXRoIHRleHQgYWx0ZXJuYXRpdmUgd2l0aCBibHVlIHVuZGVy
bGluZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgz
MDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hh
bmdlcyBpbiBXZWJLaXQyIGluY2x1ZGUgaW1wbGVtZW50YXRpb24gb2YgbmV3IGZ1bmN0aW9ucyBk
ZWNsYXJlZCBpbiBBbHRlcm5hdGl2ZVRleHRDbGllbnQsCisgICAgICAgIGFuZCBsb2dpYyBmb3Ig
Y2FsbGluZyBFZGl0b3I6Omluc2VydERpY3RhdGVkVGV4dCgpIGluc3RlYWQgb2YgRWRpdG9yOjpp
bnNlcnRUZXh0KCkgd2hlbiB0aGVyZSdzCisgICAgICAgIGFsdGVybmF0aXZlcyBhdHRhY2hlZCB0
byB0aGUgaW5wdXQgc3RyaW5nLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1l
bnVJdGVtVHlwZXMuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
bWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNs
aWVudEltcGwubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50
SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwYWdlQ2xvc2VkKToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpyZW1vdmVEaWN0YXRpb25BbHRlcm5h
dGl2ZXMpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2hvd0RpY3RhdGlvbkFs
dGVybmF0aXZlVUkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGljdGF0aW9u
QWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpc21pc3NE
aWN0YXRpb25BbHRlcm5hdGl2ZVVJKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW06CisgICAgICAgICgtW1dLVmlldyBpbnNlcnRUZXh0OnJlcGxhY2VtZW50UmFuZ2U6XSk6
CisgICAgICAgICgtW1dLVmlldyB2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0XSk6CisgICAg
ICAgICgtW1dLVmlldyBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc21pc3NEaWN0YXRpb25BbHRlcm5h
dGl2ZVVJKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZW1vdmVEaWN0YXRpb25B
bHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpY3RhdGlvbkFs
dGVybmF0aXZlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW06CisgICAgICAgIChjb3JyZWN0aW9uSW5kaWNhdG9y
VHlwZSk6CisgICAgICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0ZWRS
ZXBsYWNlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVu
dC5oOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnNob3dDb3JyZWN0aW9u
QWx0ZXJuYXRpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6
OmRpc21pc3NBbHRlcm5hdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0aXZlVGV4
dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0aXZlU29vbik6CisgICAgICAgIChXZWJLaXQ6OldlYkFs
dGVybmF0aXZlVGV4dENsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVtb3ZlRGljdGF0aW9uQWx0
ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Ojpz
aG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0
aXZlVGV4dENsaWVudDo6ZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omlu
c2VydERpY3RhdGVkVGV4dCk6CisKIDIwMTItMDYtMTEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBQYXNzIHRoZSByaWdodCBjb2xvciBzcGFjZSBvdmVy
IHRvIHRoZSB3ZWIgcHJvY2VzcyBzbyB3ZSBjYW4gc2V0IGl0IG9uIG91ciBDQSBjb250ZXh0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCmluZGV4IGFlZDA0ZTFiZjBkMzkzMDZiOTY1YjM1ZjI1YTA5MTkzNmM4
MTkwN2EuLmIwMjdjZjYzMmNlZjhiZDY2Njc4MzM4NzA5M2FkYjBiY2Q3MWIwMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCkBAIC0yMjAzLDMgKzIyMDMsMTQgQEAgX19aTks3V2ViQ29yZTRLVVJMN2lz
RW1wdHlFdgogX19aTks3V2ViQ29yZTRLVVJMN2lzVmFsaWRFdgogX19aTks3V2ViQ29yZTRLVVJM
MjJwcm90b2NvbElzSW5IVFRQRmFtaWx5RXYKICNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9T
Tk9XX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xJT04pCitfX1pON1dlYkNvcmUy
N0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjE1YWRkQWx0ZXJuYXRpdmVzRVJLTjNXVEY5UmV0
YWluUHRySTE4TlNUZXh0QWx0ZXJuYXRpdmVzRUUKK19fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyMjJhbHRlcm5hdGl2ZXNGb3JDb250ZXh0RXkKK19fWk43V2ViQ29yZTI3
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyNWNsZWFyRXYKK19fWk43V2ViQ29yZTI3QWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyMTlkaXNtaXNzQWx0ZXJuYXRpdmVzRXYKK19fWk43V2ViQ29y
ZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMThyZW1vdmVBbHRlcm5hdGl2ZXNFeQorX19a
TjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIxNnNob3dBbHRlcm5hdGl2ZXNF
UDZOU1ZpZXdSS05TXzlGbG9hdFJlY3RFeVUxM2Jsb2NrX3BvaW50ZXJGdlA4TlNTdHJpbmdFCitf
X1pON1dlYkNvcmUyNFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZUMxRVAxOE5TVGV4dEFsdGVybmF0
aXZlczhfTlNSYW5nZQorX19aTjdXZWJDb3JlMzJjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0
aXZlc0VQMThOU0F0dHJpYnV0ZWRTdHJpbmdSTjNXVEY2VmVjdG9ySU5TXzI0VGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlRUxtMEVFRQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGM3MDM3MzQ2ZjhlYzYzNGM1YzlmN2Zh
MGUyNTkxYzNlMDJlN2JmMS4uMDliYjhkY2U3NzY2ZWM4Y2EyYjdkM2VhZDVmMjZjNWUzNTczMDYw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNTc4Nyw2ICs1Nzg3LDEwIEBACiAJCUNFMDhDM0QxMTUyQjU5OUEwMDIxQjhDMiAv
KiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0NGMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMy
IC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsg
fTsKIAkJQ0U1NEZEMzgxMDE2RDlBNjAwOEI0NEM4IC8qIFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTU0RkQzNzEw
MTZEOUE2MDA4QjQ0QzggLyogU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRTdCMkRCMzE1ODZBQkFEMDA5OEIz
RkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTdCMkRBRjE1ODZBQkFEMDA5OEIzRkEgLyogQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0U3QjJEQjQxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFN0IyREIwMTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXIubW0gKi87IH07CisJCUNFN0IyREI1MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFN0IyREIxMTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVX
aXRoUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlDRTdCMkRCNjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3QjJE
QjIxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSAqLzsgfTsK
IAkJQ0VBMzk0OUMxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUEzOTQ5QTEx
RDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCAqLzsgfTsKIAkJQ0VB
Mzk0OUQxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VBMzk0OUIxMUQ0NUNEQTAw
MzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oICovOyB9OwogCQlDRUNBREZDNjE1Mzc3
OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDQURGQzIxNTM3NzhGRjAwRTM3MDY4IC8q
IERpY3RhdGlvbkFsdGVybmF0aXZlLmNwcCAqLzsgfTsKQEAgLTEyOTc5LDYgKzEyOTgzLDEwIEBA
CiAJCUNFMDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1NEZEMzcxMDE2RDlBNjAw
OEI0NEM4IC8qIFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcmlwdFNvdXJjZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNFNUNCMUIzMTRFREFCNkYwMEJCMjc5NSAvKiBFdmVudFNlbmRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFNlbmRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDRTdCMkRBRjE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlci5oOyBwYXRoID0gbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTdCMkRCMDE1ODZBQkFEMDA5
OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tOyBw
YXRoID0gbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0U3QjJEQjExNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UuaDsgcGF0aCA9IG1hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U3QjJEQjIxNTg2QUJBRDAwOThCM0ZBIC8q
IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTsgcGF0aCA9IG1hYy9UZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNF
QTM5NDlBMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljSGFzaFNldE5vZGVMaXN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VBMzk0OUIxMUQ0NUNEQTAwMzA5NENG
IC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0VDQURGQzIxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlvbkFsdGVybmF0aXZl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNjg0LDggKzIwNjkyLDEyIEBA
CiAJCUVENTAxREM5MEIyNDlGMzkwMEFFMThEOSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNFN0IyREIwMTU4NkFCQUQwMDk4QjNGQSAvKiBB
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKi8sCisJCQkJQ0U3QjJEQUYxNTg2QUJBRDAw
OThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oICovLAogCQkJCUVENTAxREM1
MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gKi8sCiAJCQkJNEE4Qzk2RUEwQkU2OTAz
MjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tICovLAorCQkJCUNFN0IyREIyMTU4NkFC
QUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gKi8sCisJCQkJQ0U3QjJE
QjExNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oICovLAogCQkJ
KTsKIAkJCW5hbWUgPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjUwNDYs
NiArMjUwNTgsOCBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29k
ZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBY
U1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0Ug
LyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFN0IyREIzMTU4NkFCQUQwMDk4QjNG
QSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNF
N0IyREI1MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMjgwODYsNiArMjgxMDAsOCBAQAogCQkJCUUxQkU1MTJEMENGNkM1MTIw
MDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJF
MEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUNFN0IyREI0MTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQlDRTdCMkRCNjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCA4ZDA5
ZmYxYjk5ODQ3MWVhNjFmMzg5MjY4ZTQ5MjRmNzA0Y2YxM2IxLi40ZGNmNDk3NDhmYWI4NzRhYmE4
YjAxNjM0OWJhYTAyNGY3ZTlhYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTY4LDYgKzY4LDIzIEBAIHByaXZh
dGU6CiAgICAgU3RyaW5nIG1fcmVwbGFjZW1lbnRTdHJpbmc7CiB9OwogCitjbGFzcyBEaWN0YXRp
b25BbHRlcm5hdGl2ZURldGFpbHMgOiBwdWJsaWMgQWx0ZXJuYXRpdmVUZXh0RGV0YWlscyB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGljdGF0aW9uQWx0ZXJuYXRpdmVEZXRhaWxz
PiBjcmVhdGUodWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRGljdGF0aW9uQWx0ZXJuYXRpdmVEZXRhaWxzKGRpY3RhdGlvbkNvbnRl
eHQpKTsKKyAgICB9CisKKyAgICB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9kaWN0YXRpb25Db250ZXh0OyB9CisKK3ByaXZhdGU6CisgICAgRGljdGF0aW9uQWx0
ZXJuYXRpdmVEZXRhaWxzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCisgICAgOiBtX2RpY3Rh
dGlvbkNvbnRleHQoZGljdGF0aW9uQ29udGV4dCkKKyAgICB7IH0KKworICAgIHVpbnQ2NF90IG1f
ZGljdGF0aW9uQ29udGV4dDsKK307CisKICNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAK
IHN0YXRpYyBjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBtYXJrZXJU
eXBlc0ZvckF1dG9jb3JyZWN0aW9uKCkKQEAgLTkyLDYgKzEwOSwxNCBAQCBzdGF0aWMgY29uc3Qg
VmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiYgbWFya2VyVHlwZXNGb3JSZXBsYWNl
bWVudCgpCiAgICAgcmV0dXJuIG1hcmtlclR5cGVzRm9yUmVwbGFjZW1lbnQ7CiB9CiAKK3N0YXRp
YyBjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBtYXJrZXJUeXBlc0Zv
ckFwcGxpZWREaWN0YXRpb25BbHRlcm5hdGl2ZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+LCBtYXJrZXJUeXBlc0ZvckFwcGxp
ZWREaWN0YXRpb25BbHRlcm5hdGl2ZSwgKCkpOworICAgIGlmIChtYXJrZXJUeXBlc0ZvckFwcGxp
ZWREaWN0YXRpb25BbHRlcm5hdGl2ZS5pc0VtcHR5KCkpCisgICAgICAgIG1hcmtlclR5cGVzRm9y
QXBwbGllZERpY3RhdGlvbkFsdGVybmF0aXZlLmFwcGVuZChEb2N1bWVudE1hcmtlcjo6U3BlbGxD
aGVja2luZ0V4ZW1wdGlvbik7CisgICAgcmV0dXJuIG1hcmtlclR5cGVzRm9yQXBwbGllZERpY3Rh
dGlvbkFsdGVybmF0aXZlOworfQorCiBzdGF0aWMgYm9vbCBtYXJrZXJzSGF2ZUlkZW50aWNhbERl
c2NyaXB0aW9uKGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcio+JiBtYXJrZXJzKQogewogICAg
IGlmIChtYXJrZXJzLmlzRW1wdHkoKSkKQEAgLTIxNSwxOCArMjQwLDE4IEBAIFN0cmluZyBBbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyOjpkaXNtaXNzU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0
ZXJuYXRpdmVUZXh0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12b2lkIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0KGNvbnN0IFN0cmluZyYgYWx0ZXJu
YXRpdmUsIGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4mIG1hcmtlclR5
cGVzVG9BZGQpCit2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRp
dmVUZXh0VG9SYW5nZShjb25zdCBSYW5nZSogcmFuZ2UsIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRp
dmUsIEFsdGVybmF0aXZlVGV4dFR5cGUgYWx0ZXJuYXRpdmVUeXBlLCBjb25zdCBWZWN0b3I8RG9j
dW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBtYXJrZXJUeXBlc1RvQWRkLCBNYXJrZXJEZXNjcmlw
dGlvblN1cHBsaWVyIG1hcmtlckRlc2NyaXB0aW9uU3VwcGxpZXIpCiB7Ci0gICAgaWYgKCFtX2Fs
dGVybmF0aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUpCisgICAgaWYgKCFyYW5nZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRy
PFJhbmdlPiBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uID0gbV9hbHRlcm5hdGl2
ZVRleHRJbmZvLnJhbmdlV2l0aEFsdGVybmF0aXZlLT5jbG9uZVJhbmdlKGVjKTsKKyAgICBSZWZQ
dHI8UmFuZ2U+IHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24gPSByYW5nZS0+Y2xv
bmVSYW5nZShlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXRTdGFy
dChwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLmdldCgpLCBzdGFydE9mUGFyYWdy
YXBoKG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZS0+c3RhcnRQb3Np
dGlvbigpKSk7Ci0gICAgc2V0RW5kKHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24u
Z2V0KCksIGVuZE9mUGFyYWdyYXBoKG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRl
cm5hdGl2ZS0+ZW5kUG9zaXRpb24oKSkpOworICAgIHNldFN0YXJ0KHBhcmFncmFwaFJhbmdlQ29u
dGFpbmluZ0NvcnJlY3Rpb24uZ2V0KCksIHN0YXJ0T2ZQYXJhZ3JhcGgocmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKSkpOworICAgIHNldEVuZChwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9u
LmdldCgpLCBlbmRPZlBhcmFncmFwaChyYW5nZS0+ZW5kUG9zaXRpb24oKSkpOwogCiAgICAgLy8g
QWZ0ZXIgd2UgcmVwbGFjZSB0aGUgd29yZCBhdCByYW5nZSByYW5nZVdpdGhBbHRlcm5hdGl2ZSwg
d2UgbmVlZCB0byBhZGQgbWFya2VycyB0byB0aGF0IHJhbmdlLgogICAgIC8vIEhvd2V2ZXIsIG9u
Y2UgdGhlIHJlcGxhY2VtZW50IHRvb2sgcGxhY2UsIHRoZSB2YWx1ZSBvZiByYW5nZVdpdGhBbHRl
cm5hdGl2ZSBpcyBub3QgdmFsaWQgYW55bW9yZS4KQEAgLTIzOCw3ICsyNjMsNyBAQCB2b2lkIEFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0KGNvbnN0IFN0cmlu
ZyYgYWx0ZXJuYXRpdmUsCiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAKLSAgICBQb3Np
dGlvbiBzdGFydFBvc2l0aW9uT2ZyYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IG1fYWx0ZXJuYXRpdmVU
ZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZS0+c3RhcnRQb3NpdGlvbigpOworICAgIFBvc2l0
aW9uIHN0YXJ0UG9zaXRpb25PZnJhbmdlV2l0aEFsdGVybmF0aXZlID0gcmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKTsKICAgICBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UtPnNl
dEVuZChzdGFydFBvc2l0aW9uT2ZyYW5nZVdpdGhBbHRlcm5hdGl2ZS5jb250YWluZXJOb2RlKCks
IHN0YXJ0UG9zaXRpb25PZnJhbmdlV2l0aEFsdGVybmF0aXZlLmNvbXB1dGVPZmZzZXRJbkNvbnRh
aW5lck5vZGUoKSwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ3LDcg
KzI3Miw3IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2
ZVRleHQoY29uc3QgU3RyaW5nJiBhbHRlcm5hdGl2ZSwKICAgICBpbnQgY29ycmVjdGlvblN0YXJ0
T2Zmc2V0SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGNvcnJlY3Rpb25T
dGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZS5nZXQoKSk7CiAKICAgICAvLyBDbG9uZSB0aGUg
cmFuZ2UsIHNpbmNlIHRoZSBjYWxsZXIgb2YgdGhpcyBtZXRob2QgbWF5IHdhbnQgdG8ga2VlcCB0
aGUgb3JpZ2luYWwgcmFuZ2UgYXJvdW5kLgotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VXaXRoQWx0
ZXJuYXRpdmUgPSBtX2FsdGVybmF0aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUtPmNs
b25lUmFuZ2UoZWMpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBy
YW5nZS0+Y2xvbmVSYW5nZShlYyk7CiAgICAgYXBwbHlDb21tYW5kKFNwZWxsaW5nQ29ycmVjdGlv
bkNvbW1hbmQ6OmNyZWF0ZShyYW5nZVdpdGhBbHRlcm5hdGl2ZSwgYWx0ZXJuYXRpdmUpKTsKICAg
ICBzZXRFbmQocGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi5nZXQoKSwgbV9mcmFt
ZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLnN0YXJ0KCkpOwogICAgIFJlZlB0cjxSYW5nZT4g
cmVwbGFjZW1lbnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UocGFyYWdyYXBoUmFuZ2VD
b250YWluaW5nQ29ycmVjdGlvbi5nZXQoKSwgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3Jh
cGgsIGFsdGVybmF0aXZlLmxlbmd0aCgpKTsKQEAgLTI2MCwxMSArMjg1LDggQEAgdm9pZCBBbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dChjb25zdCBTdHJpbmcm
IGFsdGVybmF0aXZlLAogICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciogbWFya2VycyA9IHJl
cGxhY2VtZW50UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKTsK
ICAgICBzaXplX3Qgc2l6ZSA9IG1hcmtlclR5cGVzVG9BZGQuc2l6ZSgpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIERvY3VtZW50TWFya2VyOjpNYXJr
ZXJUeXBlIG1hcmtlclR5cGUgPSBtYXJrZXJUeXBlc1RvQWRkW2ldOwotICAgICAgICBTdHJpbmcg
ZGVzY3JpcHRpb247Ci0gICAgICAgIGlmIChtX2FsdGVybmF0aXZlVGV4dEluZm8udHlwZSAhPSBB
bHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9uICYmIChtYXJrZXJUeXBlID09IERvY3VtZW50TWFy
a2VyOjpSZXBsYWNlbWVudCB8fCBtYXJrZXJUeXBlID09IERvY3VtZW50TWFya2VyOjpBdXRvY29y
cmVjdGVkKSkKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gbV9hbHRlcm5hdGl2ZVRleHRJbmZv
Lm9yaWdpbmFsVGV4dDsKLSAgICAgICAgbWFya2Vycy0+YWRkTWFya2VyKHJlcGxhY2VtZW50UmFu
Z2UuZ2V0KCksIG1hcmtlclR5cGUsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgU3RyaW5nIGRlc2Ny
aXB0aW9uID0gbWFya2VyRGVzY3JpcHRpb25TdXBwbGllciA/IG1hcmtlckRlc2NyaXB0aW9uU3Vw
cGxpZXIoYWx0ZXJuYXRpdmVUeXBlLCBtYXJrZXJUeXBlc1RvQWRkW2ldKSA6ICIiOworICAgICAg
ICBtYXJrZXJzLT5hZGRNYXJrZXIocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSwgbWFya2VyVHlwZXNU
b0FkZFtpXSwgZGVzY3JpcHRpb24pOwogICAgIH0KIH0KIApAQCAtMzQ4LDMzICszNzAsNTcgQEAg
dm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjp0aW1lckZpcmVkKFRpbWVyPEFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI+KikKICAgICAgICAgfQogICAgIH0KICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBBbHRlcm5hdGl2ZVRleHRUeXBlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOgorICAgIHsK
KyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICAgICAgY29uc3QgUmFuZ2UqIHJh
bmdlV2l0aEFsdGVybmF0aXZlID0gbV9hbHRlcm5hdGl2ZVRleHRJbmZvLnJhbmdlV2l0aEFsdGVy
bmF0aXZlLmdldCgpOworICAgICAgICBjb25zdCBEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFpbHMq
IGRldGFpbHMgPSBzdGF0aWNfY2FzdDxjb25zdCBEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFpbHMq
PihtX2FsdGVybmF0aXZlVGV4dEluZm8uZGV0YWlscy5nZXQoKSk7CisgICAgICAgIGlmICghcmFu
Z2VXaXRoQWx0ZXJuYXRpdmUgfHwgIWRldGFpbHMgfHwgIWRldGFpbHMtPmRpY3RhdGlvbkNvbnRl
eHQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94
ID0gcm9vdFZpZXdSZWN0Rm9yUmFuZ2UocmFuZ2VXaXRoQWx0ZXJuYXRpdmUpOworICAgICAgICBt
X2FsdGVybmF0aXZlVGV4dEluZm8uaXNBY3RpdmUgPSB0cnVlOworICAgICAgICBpZiAoIWJvdW5k
aW5nQm94LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKEFsdGVybmF0aXZlVGV4dENsaWVu
dCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkpCisgICAgICAgICAgICAgICAgY2xp
ZW50LT5zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShib3VuZGluZ0JveCwgZGV0YWlscy0+ZGlj
dGF0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorICAgICAgICBicmVh
azsKICAgICB9CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aGFuZGxlQWx0
ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCiB7Ci0gICAgUmFuZ2Uq
IHJlcGxhY2VkUmFuZ2UgPSBtX2FsdGVybmF0aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRp
dmUuZ2V0KCk7Ci0gICAgaWYgKCFyZXBsYWNlZFJhbmdlIHx8IG1fZnJhbWUtPmRvY3VtZW50KCkg
IT0gcmVwbGFjZWRSYW5nZS0+b3duZXJEb2N1bWVudCgpKQorICAgIFJhbmdlKiByYW5nZVdpdGhB
bHRlcm5hdGl2ZSA9IG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZS5n
ZXQoKTsKKyAgICBpZiAoIXJhbmdlV2l0aEFsdGVybmF0aXZlIHx8IG1fZnJhbWUtPmRvY3VtZW50
KCkgIT0gcmFuZ2VXaXRoQWx0ZXJuYXRpdmUtPm93bmVyRG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgU3RyaW5nIGN1cnJlbnRXb3JkID0gcGxhaW5UZXh0KG1fYWx0ZXJuYXRpdmVU
ZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZS5nZXQoKSk7CisgICAgU3RyaW5nIGN1cnJlbnRX
b3JkID0gcGxhaW5UZXh0KHJhbmdlV2l0aEFsdGVybmF0aXZlKTsKICAgICAvLyBDaGVjayB0byBz
ZWUgaWYgdGhlIHdvcmQgd2UgYXJlIGFib3V0IHRvIGNvcnJlY3QgaGFzIGJlZW4gY2hhbmdlZCBi
ZXR3ZWVuIHRpbWVyIGZpcmluZyBhbmQgY2FsbGJhY2sgYmVpbmcgdHJpZ2dlcmVkLgogICAgIGlm
IChjdXJyZW50V29yZCAhPSBtX2FsdGVybmF0aXZlVGV4dEluZm8ub3JpZ2luYWxUZXh0KQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX2FsdGVybmF0aXZlVGV4dEluZm8uaXNBY3RpdmUgPSBmYWxz
ZTsKKyAgICBNYXJrZXJEZXNjcmlwdGlvblN1cHBsaWVyIG1hcmtlckRlc2NyaXB0aW9uU3VwcGxp
ZXIgPSBeU3RyaW5nKEFsdGVybmF0aXZlVGV4dFR5cGUgYWx0ZXJuYXRpdmVUZXh0VHlwZSwgRG9j
dW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgbWFya2VyVHlwZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBtYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQoYWx0ZXJuYXRpdmVU
ZXh0VHlwZSwgbWFya2VyVHlwZSk7CisgICAgfTsKIAogICAgIHN3aXRjaCAobV9hbHRlcm5hdGl2
ZVRleHRJbmZvLnR5cGUpIHsKICAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5cGVDb3JyZWN0aW9u
OgogICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpKQotICAgICAgICAgICAgYXBwbHlBbHRlcm5h
dGl2ZVRleHQocmVzdWx0LCBtYXJrZXJUeXBlc0ZvckF1dG9jb3JyZWN0aW9uKCkpOworICAgICAg
ICAgICAgYXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKHJhbmdlV2l0aEFsdGVybmF0aXZlLCBy
ZXN1bHQsIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby50eXBlLCBtYXJrZXJUeXBlc0ZvckF1dG9jb3Jy
ZWN0aW9uKCksIG1hcmtlckRlc2NyaXB0aW9uU3VwcGxpZXIpOwogICAgICAgICBlbHNlIGlmICgh
bV9pc0Rpc21pc3NlZEJ5RWRpdGluZykKLSAgICAgICAgICAgIHJlcGxhY2VkUmFuZ2UtPnN0YXJ0
Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKHJlcGxhY2VkUmFu
Z2UsIERvY3VtZW50TWFya2VyOjpSZWplY3RlZENvcnJlY3Rpb24sIG1fYWx0ZXJuYXRpdmVUZXh0
SW5mby5vcmlnaW5hbFRleHQpOworICAgICAgICAgICAgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUtPnN0
YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKHJhbmdlV2l0
aEFsdGVybmF0aXZlLCBEb2N1bWVudE1hcmtlcjo6UmVqZWN0ZWRDb3JyZWN0aW9uLCBtX2FsdGVy
bmF0aXZlVGV4dEluZm8ub3JpZ2luYWxUZXh0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBB
bHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9uOgogICAgIGNhc2UgQWx0ZXJuYXRpdmVUZXh0VHlw
ZVNwZWxsaW5nU3VnZ2VzdGlvbnM6CiAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoKCkpCi0gICAg
ICAgICAgICBhcHBseUFsdGVybmF0aXZlVGV4dChyZXN1bHQsIG1hcmtlclR5cGVzRm9yUmVwbGFj
ZW1lbnQoKSk7CisgICAgICAgICAgICBhcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UocmFuZ2VX
aXRoQWx0ZXJuYXRpdmUsIHJlc3VsdCwgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLnR5cGUsIG1hcmtl
clR5cGVzRm9yUmVwbGFjZW1lbnQoKSwgbWFya2VyRGVzY3JpcHRpb25TdXBwbGllcik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQWx0ZXJuYXRpdmVUZXh0VHlwZURpY3RhdGlvbkFsdGVybmF0
aXZlczoKKyAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGgoKSkKKyAgICAgICAgICAgIGFwcGx5QWx0
ZXJuYXRpdmVUZXh0VG9SYW5nZShyYW5nZVdpdGhBbHRlcm5hdGl2ZSwgcmVzdWx0LCBtX2FsdGVy
bmF0aXZlVGV4dEluZm8udHlwZSwgbWFya2VyVHlwZXNGb3JBcHBsaWVkRGljdGF0aW9uQWx0ZXJu
YXRpdmUoKSwgbWFya2VyRGVzY3JpcHRpb25TdXBwbGllcik7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIApAQCAtNDAwLDcgKzQ0Niw3IEBAIEZsb2F0UmVjdCBBbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyOjpyb290Vmlld1JlY3RGb3JSYW5nZShjb25zdCBSYW5nZSogcmFuZ2UpIGNvCiAgICAgcmV0
dXJuIHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhJbnRSZWN0KGJvdW5kaW5nUmVjdCkpOwogfSAg
ICAgICAgCiAKLXZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvQ2hhbmdl
ZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24pCit2b2lkIEFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0
aW9uT3B0aW9ucyBvcHRpb25zKQogewogICAgIFZpc2libGVTZWxlY3Rpb24gY3VycmVudFNlbGVj
dGlvbihtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOwogICAgIC8vIFdoZW4gdXNl
ciBtb3ZlcyBjYXJldCB0byB0aGUgZW5kIG9mIGF1dG9jb3JyZWN0ZWQgd29yZCBhbmQgcGF1c2Vz
LCB3ZSBzaG93IHRoZSBwYW5lbApAQCAtNDI2LDI4ICs0NzIsMTUgQEAgdm9pZCBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24KICAgICAgICAgcmV0dXJuOwogCiAgICAgTm9kZSogbm9kZSA9IHBvc2l0aW9uLmNv
bnRhaW5lck5vZGUoKTsKLSAgICBpbnQgZW5kT2Zmc2V0ID0gcG9zaXRpb24ub2Zmc2V0SW5Db250
YWluZXJOb2RlKCk7CiAgICAgVmVjdG9yPERvY3VtZW50TWFya2VyKj4gbWFya2VycyA9IG5vZGUt
PmRvY3VtZW50KCktPm1hcmtlcnMoKS0+bWFya2Vyc0Zvcihub2RlKTsKICAgICBzaXplX3QgbWFy
a2VyQ291bnQgPSBtYXJrZXJzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1h
cmtlckNvdW50OyArK2kpIHsKICAgICAgICAgY29uc3QgRG9jdW1lbnRNYXJrZXIqIG1hcmtlciA9
IG1hcmtlcnNbaV07Ci0gICAgICAgIGlmICghc2hvdWxkU3RhcnRUaW1lckZvcihtYXJrZXIsIGVu
ZE9mZnNldCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgUmVmUHRyPFJhbmdlPiB3
b3JkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIG5vZGUsIG1hcmtl
ci0+c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgIFN0
cmluZyBjdXJyZW50V29yZCA9IHBsYWluVGV4dCh3b3JkUmFuZ2UuZ2V0KCkpOwotICAgICAgICBp
ZiAoIWN1cnJlbnRXb3JkLmxlbmd0aCgpKQorICAgICAgICBpZiAoIW1hcmtlcikKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhB
bHRlcm5hdGl2ZSA9IHdvcmRSYW5nZTsKLSAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLm9y
aWdpbmFsVGV4dCA9IGN1cnJlbnRXb3JkOwotICAgICAgICBpZiAobWFya2VyLT50eXBlKCkgPT0g
RG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nKQotICAgICAgICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRl
eHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVTcGVsbGluZ1N1Z2dlc3Rpb25zKTsKLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBtX2FsdGVybmF0aXZlVGV4dEluZm8uZGV0YWlscyA9IEF1
dG9jb3JyZWN0aW9uQWx0ZXJuYXRpdmVEZXRhaWxzOjpjcmVhdGUobWFya2VyLT5kZXNjcmlwdGlv
bigpKTsKLSAgICAgICAgICAgIHN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcihBbHRlcm5hdGl2
ZVRleHRUeXBlUmV2ZXJzaW9uKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJyZWFrOworICAgICAg
ICBpZiAocmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQoKm1hcmtlciwgcG9zaXRpb24sIG9wdGlv
bnMpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC01OTgsNyArNjMxLDYyIEBA
IGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cHJvY2Vzc01hcmtlcnNPblRleHRUb0Jl
UmVwbGFjZWRCeVJlc3VsdChjb25zdCBUCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KLSAgICAKKwor
Ym9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpzaG91bGRTdGFydFRpbWVyRm9yKGNvbnN0
IFdlYkNvcmU6OkRvY3VtZW50TWFya2VyICZtYXJrZXIsIGludCBlbmRPZmZzZXQpIGNvbnN0Cit7
CisgICAgcmV0dXJuICgoKG1hcmtlci50eXBlKCkgPT0gRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2Vt
ZW50ICYmICFtYXJrZXIuZGVzY3JpcHRpb24oKS5pc051bGwoKSkgfHwgbWFya2VyLnR5cGUoKSA9
PSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcgfHwgbWFya2VyLnR5cGUoKSA9PSBEb2N1bWVudE1h
cmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzKSAmJiBzdGF0aWNfY2FzdDxpbnQ+KG1hcmtlci5l
bmRPZmZzZXQoKSkgPT0gZW5kT2Zmc2V0KTsKK30KKworYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZChjb25zdCBEb2N1bWVudE1hcmtlciYg
bWFya2VyLCBjb25zdCBQb3NpdGlvbiYgZW5kT2ZXb3JkUG9zaXRpb24sIEZyYW1lU2VsZWN0aW9u
OjpTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMpCit7CisgICAgaWYgKG9wdGlvbnMgJiBGcmFt
ZVNlbGVjdGlvbjo6RGljdGF0aW9uVHJpZ2dlcmVkKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFzaG91bGRTdGFydFRpbWVyRm9yKG1hcmtlciwgZW5kT2ZXb3JkUG9zaXRpb24ub2Zm
c2V0SW5Db250YWluZXJOb2RlKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgTm9kZSog
bm9kZSA9IGVuZE9mV29yZFBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKTsKKyAgICBSZWZQdHI8UmFu
Z2U+IHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9mcmFtZS0+ZG9jdW1lbnQoKSwgbm9kZSwg
bWFya2VyLnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7CisgICAgaWYg
KCF3b3JkUmFuZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTdHJpbmcgY3VycmVudFdv
cmQgPSBwbGFpblRleHQod29yZFJhbmdlLmdldCgpKTsKKyAgICBpZiAoIWN1cnJlbnRXb3JkLmxl
bmd0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9hbHRlcm5hdGl2ZVRleHRJbmZv
Lm9yaWdpbmFsVGV4dCA9IGN1cnJlbnRXb3JkOworICAgIHN3aXRjaCAobWFya2VyLnR5cGUoKSkg
eworICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nOgorICAgICAgICBtX2FsdGVybmF0
aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1f
YWx0ZXJuYXRpdmVUZXh0SW5mby5kZXRhaWxzID0gQXV0b2NvcnJlY3Rpb25BbHRlcm5hdGl2ZURl
dGFpbHM6OmNyZWF0ZSgiIik7CisgICAgICAgIHN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcihB
bHRlcm5hdGl2ZVRleHRUeXBlU3BlbGxpbmdTdWdnZXN0aW9ucyk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50OgorICAgICAgICBtX2FsdGVybmF0
aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1f
YWx0ZXJuYXRpdmVUZXh0SW5mby5kZXRhaWxzID0gQXV0b2NvcnJlY3Rpb25BbHRlcm5hdGl2ZURl
dGFpbHM6OmNyZWF0ZShtYXJrZXIuZGVzY3JpcHRpb24oKSk7CisgICAgICAgIHN0YXJ0QWx0ZXJu
YXRpdmVUZXh0VUlUaW1lcihBbHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9uKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzOiB7
CisgICAgICAgIGNvbnN0IERpY3RhdGlvbk1hcmtlckRldGFpbHMqIG1hcmtlckRldGFpbHMgPSBz
dGF0aWNfY2FzdDxjb25zdCBEaWN0YXRpb25NYXJrZXJEZXRhaWxzKj4obWFya2VyLmRldGFpbHMo
KSk7CisgICAgICAgIGlmICghbWFya2VyRGV0YWlscykKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgaWYgKGN1cnJlbnRXb3JkICE9IG1hcmtlckRldGFpbHMtPm9yaWdpbmFsVGV4
dCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtX2FsdGVybmF0aXZlVGV4
dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1fYWx0ZXJu
YXRpdmVUZXh0SW5mby5kZXRhaWxzID0gRGljdGF0aW9uQWx0ZXJuYXRpdmVEZXRhaWxzOjpjcmVh
dGUobWFya2VyRGV0YWlscy0+ZGljdGF0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgc3RhcnRBbHRl
cm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0YXRpb25BbHRlcm5hdGl2
ZXMpOworICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworU3RyaW5nIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Om1hcmtlckRlc2NyaXB0aW9u
Rm9yQXBwbGllZEFsdGVybmF0aXZlVGV4dChBbHRlcm5hdGl2ZVRleHRUeXBlIGFsdGVybmF0aXZl
VGV4dFR5cGUsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIG1hcmtlclR5cGUpCit7CisgICAg
aWYgKGFsdGVybmF0aXZlVGV4dFR5cGUgIT0gQWx0ZXJuYXRpdmVUZXh0VHlwZVJldmVyc2lvbiAm
JiAobWFya2VyVHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQgfHwgbWFya2VyVHlw
ZSA9PSBEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3RlZCkpCisgICAgICAgIHJldHVybiBtX2Fs
dGVybmF0aXZlVGV4dEluZm8ub3JpZ2luYWxUZXh0OworICAgIHJldHVybiAiIjsKK30KKwogI2Vu
ZGlmCiAKIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aW5zZXJ0RGljdGF0ZWRUZXh0
KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiYg
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50KQpAQCAtNjI0LDQg
KzcxMiw0OCBAQCBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Omluc2VydERpY3RhdGVk
VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlYwogICAgIHJldHVybiBldmVudC0+ZGVm
YXVsdEhhbmRsZWQoKTsKIH0KIAordm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZW1v
dmVEaWN0YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIoY29uc3QgRG9jdW1lbnRNYXJrZXIqIG1h
cmtlcikKK3sKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBEaWN0YXRpb25N
YXJrZXJEZXRhaWxzKiBkZXRhaWxzID0gc3RhdGljX2Nhc3Q8RGljdGF0aW9uTWFya2VyRGV0YWls
cyo+KG1hcmtlci0+ZGV0YWlscygpKTsKKyAgICBpZiAoQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBj
bGllbnQgPSBhbHRlcm5hdGl2ZVRleHRDbGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5yZW1vdmVE
aWN0YXRpb25BbHRlcm5hdGl2ZXMoZGV0YWlscy0+ZGljdGF0aW9uQ29udGV4dCgpKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKG1hcmtlcik7CisjZW5kaWYKK30KKworVmVjdG9yPFN0cmluZz4g
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2Vy
KGNvbnN0IERvY3VtZW50TWFya2VyKiBtYXJrZXIpCit7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRF
Uk5BVElWRVMpCisgICAgQVNTRVJUKG1hcmtlci0+dHlwZSgpID09IERvY3VtZW50TWFya2VyOjpE
aWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgIGlmIChBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGNs
aWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgpKSB7CisgICAgICAgIERpY3RhdGlvbk1hcmtl
ckRldGFpbHMqIGRldGFpbHMgPSBzdGF0aWNfY2FzdDxEaWN0YXRpb25NYXJrZXJEZXRhaWxzKj4o
bWFya2VyLT5kZXRhaWxzKCkpOworICAgICAgICByZXR1cm4gY2xpZW50LT5kaWN0YXRpb25BbHRl
cm5hdGl2ZXMoZGV0YWlscy0+ZGljdGF0aW9uQ29udGV4dCgpKTsKKyAgICB9CisgICAgcmV0dXJu
IFZlY3RvcjxTdHJpbmc+KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShtYXJrZXIpOworICAg
IHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworI2VuZGlmCit9CisKK3ZvaWQgQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlcjo6YXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZShjb25zdCBTdHJpbmcmIGFs
dGVybmF0aXZlU3RyaW5nKQoreworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAg
IEVkaXRvciogZWRpdG9yID0gbV9mcmFtZS0+ZWRpdG9yKCk7CisgICAgUmVmUHRyPFJhbmdlPiBz
ZWxlY3Rpb24gPSBlZGl0b3ItPnNlbGVjdGVkUmFuZ2UoKTsKKyAgICBpZiAoIXNlbGVjdGlvbiB8
fCAhZWRpdG9yLT5zaG91bGRJbnNlcnRUZXh0KGFsdGVybmF0aXZlU3RyaW5nLCBzZWxlY3Rpb24u
Z2V0KCksIEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpCisgICAgICAgIHJldHVybjsKKyAgICBE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIqIG1hcmtlcnMgPSBzZWxlY3Rpb24tPnN0YXJ0Q29udGFp
bmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKTsKKyAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIq
PiBkaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXJzID0gbWFya2Vycy0+bWFya2Vyc0luUmFuZ2Uo
c2VsZWN0aW9uLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcnMu
c2l6ZSgpOyArK2kpCisgICAgICAgIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlc0Zvck1hcmtl
cihkaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXJzW2ldKTsKKworICAgIGFwcGx5QWx0ZXJuYXRp
dmVUZXh0VG9SYW5nZShzZWxlY3Rpb24uZ2V0KCksIGFsdGVybmF0aXZlU3RyaW5nLCBBbHRlcm5h
dGl2ZVRleHRUeXBlRGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBtYXJrZXJUeXBlc0ZvckFwcGxpZWRE
aWN0YXRpb25BbHRlcm5hdGl2ZSgpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGFsdGVybmF0
aXZlU3RyaW5nKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCmluZGV4
IDI4NDQ5ZWZkOTNlNTc0MGEwOWUzNWI2NTRiODliNTBjNzk4MDhkOWIuLmI3NmEwMDgyYzQ1NWE3
ZmY4MDdiN2E2NGViNjgyYmQ4MzFlN2Y2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlICJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudE1hcmtl
ci5oIgorI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNp
bmNsdWRlICJUZXh0Q2hlY2tpbmcuaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtMTA4LDcgKzEw
OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbmRUb1VuYXBwbGllZFNwZWxsQ29ycmVjdGlv
bihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBjb3JyZWN0ZWQsIGNvbnN0
IFN0cmluZyYgY29ycmVjdGlvbikgVU5MRVNTX0VOQUJMRUQoeyBVTlVTRURfUEFSQU0oY29ycmVj
dGVkKTsgVU5VU0VEX1BBUkFNKGNvcnJlY3Rpb24pOyB9KQogICAgIHZvaWQgcmVzcG9uZFRvQXBw
bGllZEVkaXRpbmcoQ29tcG9zaXRlRWRpdENvbW1hbmQqKSBVTkxFU1NfRU5BQkxFRCh7IH0pCiAg
ICAgdm9pZCByZXNwb25kVG9VbmFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24q
KSBVTkxFU1NfRU5BQkxFRCh7IH0pCi0gICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9u
KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbikgVU5MRVNTX0VOQUJMRUQoeyBV
TlVTRURfUEFSQU0ob2xkU2VsZWN0aW9uKTsgfSkKKyAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRT
ZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBGcmFtZVNlbGVj
dGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucykgVU5MRVNTX0VOQUJMRUQoeyBVTlVTRURfUEFSQU0o
b2xkU2VsZWN0aW9uKTsgfSkKIAogICAgIHZvaWQgc3RvcFBlbmRpbmdDb3JyZWN0aW9uKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbikgVU5MRVNTX0VOQUJMRUQoeyBVTlVTRURf
UEFSQU0ob2xkU2VsZWN0aW9uKTsgfSkKICAgICB2b2lkIGFwcGx5UGVuZGluZ0NvcnJlY3Rpb24o
Y29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uQWZ0ZXJUeXBpbmcpIFVOTEVTU19FTkFC
TEVEKHsgVU5VU0VEX1BBUkFNKHNlbGVjdGlvbkFmdGVyVHlwaW5nKTsgfSkKQEAgLTEzMCwyMCAr
MTMxLDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZWRBdXRvY29ycmVjdGlvbkF0UG9zaXRp
b24oY29uc3QgUG9zaXRpb24mLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsU3RyaW5nKSBVTkxFU1Nf
RU5BQkxFRCh7IFVOVVNFRF9QQVJBTShvcmlnaW5hbFN0cmluZyk7IH0pCiAKICAgICBib29sIGlu
c2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0
ZXJuYXRpdmU+JiwgRXZlbnQqKTsKKyAgICB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZl
c0Zvck1hcmtlcihjb25zdCBEb2N1bWVudE1hcmtlciopOworICAgIFZlY3RvcjxTdHJpbmc+IGRp
Y3RhdGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcihjb25zdCBEb2N1bWVudE1hcmtlciopOworICAg
IHZvaWQgYXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZShjb25zdCBTdHJpbmcmIGFsdGVybmF0aXZl
U3RyaW5nKTsKIAogcHJpdmF0ZToKICNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAg
U3RyaW5nIGRpc21pc3NTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpOwot
ICAgIHZvaWQgYXBwbHlBbHRlcm5hdGl2ZVRleHQoY29uc3QgU3RyaW5nJiBhbHRlcm5hdGl2ZSwg
Y29uc3QgVmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiYpOworICAgIHR5cGVkZWYg
U3RyaW5nKF5NYXJrZXJEZXNjcmlwdGlvblN1cHBsaWVyKShBbHRlcm5hdGl2ZVRleHRUeXBlLCBE
b2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7CisgICAgdm9pZCBhcHBseUFsdGVybmF0aXZlVGV4
dFRvUmFuZ2UoY29uc3QgUmFuZ2UqLCBjb25zdCBTdHJpbmcmIGFsdGVybmF0aXZlLCBBbHRlcm5h
dGl2ZVRleHRUeXBlLCBjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+Jiwg
TWFya2VyRGVzY3JpcHRpb25TdXBwbGllciA9IDApOwogICAgIHZvaWQgdGltZXJGaXJlZChUaW1l
cjxBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyPiopOwogICAgIHZvaWQgcmVjb3JkQXV0b2NvcnJl
Y3Rpb25SZXNwb25zZVJldmVyc2VkKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogICAgIHZvaWQgcmVjb3JkU3BlbGxjaGVja2Vy
UmVzcG9uc2VGb3JNb2RpZmllZENvcnJlY3Rpb24oUmFuZ2UqIHJhbmdlT2ZDb3JyZWN0aW9uLCBj
b25zdCBTdHJpbmcmIGNvcnJlY3RlZCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKTsKKyAgICBT
dHJpbmcgbWFya2VyRGVzY3JpcHRpb25Gb3JBcHBsaWVkQWx0ZXJuYXRpdmVUZXh0KEFsdGVybmF0
aXZlVGV4dFR5cGUsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKIAotICAgIGJvb2wgc2hv
dWxkU3RhcnRUaW1lckZvcihjb25zdCBEb2N1bWVudE1hcmtlciogbWFya2VyLCBpbnQgZW5kT2Zm
c2V0KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICgoKG1hcmtlci0+dHlwZSgpID09IERv
Y3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCAmJiAhbWFya2VyLT5kZXNjcmlwdGlvbigpLmlzTnVs
bCgpKSAKLSAgICAgICAgICAgICAgICAgfHwgbWFya2VyLT50eXBlKCkgPT0gRG9jdW1lbnRNYXJr
ZXI6OlNwZWxsaW5nKSAmJiBzdGF0aWNfY2FzdDxpbnQ+KG1hcmtlci0+ZW5kT2Zmc2V0KCkpID09
IGVuZE9mZnNldCk7Ci0gICAgfQorICAgIGJvb2wgc2hvdWxkU3RhcnRUaW1lckZvcihjb25zdCBE
b2N1bWVudE1hcmtlciYsIGludCBlbmRPZmZzZXQpIGNvbnN0OworICAgIGJvb2wgcmVzcG9uZFRv
TWFya2VyQXRFbmRPZldvcmQoY29uc3QgRG9jdW1lbnRNYXJrZXImLCBjb25zdCBQb3NpdGlvbiYg
ZW5kT2ZXb3JkUG9zaXRpb24sIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zKTsK
IAogICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCogYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCk7CiAg
ICAgRWRpdG9yQ2xpZW50KiBlZGl0b3JDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAppbmRleCBiNDYwZWQxOTJhYTIzYTFmNTNhMTM4ZDM1NTlhZjgyNzQ2NmMxZDFkLi4xNDg5Mjg0
NTZjNGFmZTEzMDUyMGExZGQ0Y2Q3MjgzNTQzYzBkOTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCkBAIC00ODEsMTMgKzQ4MSwxMyBAQCBib29sIEVkaXRvcjo6c2hvdWxkU2hvd0RlbGV0
ZUludGVyZmFjZShIVE1MRWxlbWVudCogZWxlbWVudCkgY29uc3QKICAgICByZXR1cm4gY2xpZW50
KCkgJiYgY2xpZW50KCktPnNob3VsZFNob3dEZWxldGVJbnRlcmZhY2UoZWxlbWVudCk7CiB9CiAK
LXZvaWQgRWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIG9sZFNlbGVjdGlvbikKK3ZvaWQgRWRpdG9yOjpub3RpZnlDb21wb25lbnRzT25DaGFu
Z2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbiwgRnJhbWVT
ZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBpZiAoY2xpZW50
KCkpCiAgICAgICAgIGNsaWVudCgpLT5yZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKG1fZnJhbWUp
OwogICAgIHNldFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZSh0cnVlKTsKICAgICBtX2RlbGV0ZUJ1
dHRvbkNvbnRyb2xsZXItPnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uKTsK
LSAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rp
b24ob2xkU2VsZWN0aW9uKTsKKyAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPnJlc3Bv
bmRUb0NoYW5nZWRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uLCBvcHRpb25zKTsKIH0KIAogdm9pZCBF
ZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBl
bmRpbmdTZWxlY3Rpb24pCkBAIC03OTAsNyArNzkwLDggQEAgdm9pZCBFZGl0b3I6OmFwcGxpZWRF
ZGl0aW5nKFBhc3NSZWZQdHI8Q29tcG9zaXRlRWRpdENvbW1hbmQ+IGNtZCkKICAgICBtX2FsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXItPnJlc3BvbmRUb0FwcGxpZWRFZGl0aW5nKGNtZC5nZXQoKSk7
CiAKICAgICAvLyBEb24ndCBjbGVhciB0aGUgdHlwaW5nIHN0eWxlIHdpdGggdGhpcyBzZWxlY3Rp
b24gY2hhbmdlLiAgV2UgZG8gdGhvc2UgdGhpbmdzIGVsc2V3aGVyZSBpZiBuZWNlc3NhcnkuCi0g
ICAgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgZmFsc2UsIGZhbHNl
KTsKKyAgICBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyBvcHRpb25zID0gY21k
LT5pc0RpY3RhdGlvbkNvbW1hbmQoKSA/IEZyYW1lU2VsZWN0aW9uOjpEaWN0YXRpb25UcmlnZ2Vy
ZWQgOiAwOworICAgIGNoYW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChuZXdTZWxlY3Rpb24sIG9w
dGlvbnMpOwogCiAgICAgaWYgKCFjbWQtPnByZXNlcnZlc1R5cGluZ1N0eWxlKCkpCiAgICAgICAg
IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5jbGVhclR5cGluZ1N0eWxlKCk7CkBAIC04MTYsNyArODE3
LDcgQEAgdm9pZCBFZGl0b3I6OnVuYXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cjxFZGl0Q29tbWFu
ZENvbXBvc2l0aW9uPiBjbWQpCiAgICAgZGlzcGF0Y2hFZGl0YWJsZUNvbnRlbnRDaGFuZ2VkRXZl
bnRzKGNtZC0+c3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCksIGNtZC0+ZW5kaW5nUm9vdEVk
aXRhYmxlRWxlbWVudCgpKTsKICAgICAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlv
bihjbWQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkpOwotICAgIGNoYW5nZVNlbGVjdGlvbkFmdGVyQ29t
bWFuZChuZXdTZWxlY3Rpb24sIHRydWUsIHRydWUpOworICAgIGNoYW5nZVNlbGVjdGlvbkFmdGVy
Q29tbWFuZChuZXdTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpDbG9zZVR5cGluZyB8IEZyYW1l
U2VsZWN0aW9uOjpDbGVhclR5cGluZ1N0eWxlKTsKICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXItPnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcoY21kLmdldCgpKTsKICAgICAKICAgICBt
X2xhc3RFZGl0Q29tbWFuZCA9IDA7CkBAIC04MzIsNyArODMzLDcgQEAgdm9pZCBFZGl0b3I6OnJl
YXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cjxFZGl0Q29tbWFuZENvbXBvc2l0aW9uPiBjbWQpCiAg
ICAgZGlzcGF0Y2hFZGl0YWJsZUNvbnRlbnRDaGFuZ2VkRXZlbnRzKGNtZC0+c3RhcnRpbmdSb290
RWRpdGFibGVFbGVtZW50KCksIGNtZC0+ZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpKTsKICAg
ICAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbihjbWQtPmVuZGluZ1NlbGVjdGlv
bigpKTsKLSAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3U2VsZWN0aW9uLCB0cnVl
LCB0cnVlKTsKKyAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3U2VsZWN0aW9uLCBG
cmFtZVNlbGVjdGlvbjo6Q2xvc2VUeXBpbmcgfCBGcmFtZVNlbGVjdGlvbjo6Q2xlYXJUeXBpbmdT
dHlsZSk7CiAgICAgCiAgICAgbV9sYXN0RWRpdENvbW1hbmQgPSAwOwogICAgIGlmIChjbGllbnQo
KSkKQEAgLTIyNjcsNiArMjI2OCwxMCBAQCB2b2lkIEVkaXRvcjo6dXBkYXRlTWFya2Vyc0Zvcldv
cmRzQWZmZWN0ZWRCeUVkaXRpbmcoYm9vbCBkb05vdFJlbW92ZUlmU2VsZWN0aW9uQQogICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgUmVmUHRyPFJhbmdl
PiB3b3JkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBzdGFydE9mRmlyc3RXb3JkLmRl
ZXBFcXVpdmFsZW50KCksIGVuZE9mTGFzdFdvcmQuZGVlcEVxdWl2YWxlbnQoKSk7CiAKKyAgICBW
ZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBtYXJrZXJzID0gZG9jdW1lbnQtPm1hcmtlcnMoKS0+bWFy
a2Vyc0luUmFuZ2Uod29yZFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0
ZXJuYXRpdmVzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hcmtlcnMuc2l6ZSgpOyAr
K2kpCisgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+cmVtb3ZlRGljdGF0aW9u
QWx0ZXJuYXRpdmVzRm9yTWFya2VyKG1hcmtlcnNbaV0pOworCiAgICAgZG9jdW1lbnQtPm1hcmtl
cnMoKS0+cmVtb3ZlTWFya2Vycyh3b3JkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVs
bGluZyB8IERvY3VtZW50TWFya2VyOjpDb3JyZWN0aW9uSW5kaWNhdG9yIHwgRG9jdW1lbnRNYXJr
ZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24gfCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0
ZXJuYXRpdmVzLCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRpYWxseU92ZXJs
YXBwaW5nTWFya2VyKTsKICAgICBkb2N1bWVudC0+bWFya2VycygpLT5jbGVhckRlc2NyaXB0aW9u
T25NYXJrZXJzSW50ZXJzZWN0aW5nUmFuZ2Uod29yZFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtl
cjo6UmVwbGFjZW1lbnQpOwogfQpAQCAtMjQxNCw3ICsyNDE5LDcgQEAgdm9pZCBFZGl0b3I6OmRp
c21pc3NDb3JyZWN0aW9uUGFuZWxBc0lnbm9yZWQoKQogICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlci0+ZGlzbWlzcyhSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0SWdub3Jl
ZCk7CiB9CiAKLXZvaWQgRWRpdG9yOjpjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQoY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9uLCBib29sIGNsb3NlVHlwaW5nLCBib29sIGNs
ZWFyVHlwaW5nU3R5bGUpCit2b2lkIEVkaXRvcjo6Y2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5k
KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgIEZyYW1lU2VsZWN0aW9uOjpT
ZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgLy8gSWYgdGhlIG5ldyBzZWxlY3Rp
b24gaXMgb3JwaGFuZWQsIHRoZW4gZG9uJ3QgdXBkYXRlIHRoZSBzZWxlY3Rpb24uCiAgICAgaWYg
KG5ld1NlbGVjdGlvbi5zdGFydCgpLmlzT3JwaGFuKCkgfHwgbmV3U2VsZWN0aW9uLmVuZCgpLmlz
T3JwaGFuKCkpCkBAIC0yNDI1LDE0ICsyNDMwLDggQEAgdm9pZCBFZGl0b3I6OmNoYW5nZVNlbGVj
dGlvbkFmdGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIGIK
ICAgICAvLyBUaGUgb2xkIHNlbGVjdGlvbiBjYW4gYmUgaW52YWxpZCBoZXJlIGFuZCBjYWxsaW5n
IHNob3VsZENoYW5nZVNlbGVjdGlvbiBjYW4gcHJvZHVjZSBzb21lIHN0cmFuZ2UgY2FsbHMuCiAg
ICAgLy8gU2VlIDxyZGFyOi8vcHJvYmxlbS81NzI5MzE1PiBTb21lIHNob3VsZENoYW5nZVNlbGVj
dGVkRE9NUmFuZ2UgY29udGFpbiBSYW5nZXMgZm9yIHNlbGVjdGlvbnMgdGhhdCBhcmUgbm8gbG9u
Z2VyIHZhbGlkCiAgICAgYm9vbCBzZWxlY3Rpb25EaWROb3RDaGFuZ2VET01Qb3NpdGlvbiA9IG5l
d1NlbGVjdGlvbiA9PSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCk7Ci0gICAgaWYg
KHNlbGVjdGlvbkRpZE5vdENoYW5nZURPTVBvc2l0aW9uIHx8IG1fZnJhbWUtPnNlbGVjdGlvbigp
LT5zaG91bGRDaGFuZ2VTZWxlY3Rpb24obmV3U2VsZWN0aW9uKSkgewotICAgICAgICBGcmFtZVNl
bGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyBvcHRpb25zID0gMDsKLSAgICAgICAgaWYgKGNs
b3NlVHlwaW5nKQotICAgICAgICAgICAgb3B0aW9ucyB8PSBGcmFtZVNlbGVjdGlvbjo6Q2xvc2VU
eXBpbmc7Ci0gICAgICAgIGlmIChjbGVhclR5cGluZ1N0eWxlKQotICAgICAgICAgICAgb3B0aW9u
cyB8PSBGcmFtZVNlbGVjdGlvbjo6Q2xlYXJUeXBpbmdTdHlsZTsKKyAgICBpZiAoc2VsZWN0aW9u
RGlkTm90Q2hhbmdlRE9NUG9zaXRpb24gfHwgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNob3VsZENo
YW5nZVNlbGVjdGlvbihuZXdTZWxlY3Rpb24pKQogICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24o
KS0+c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgb3B0aW9ucyk7Ci0gICAgfQogCiAgICAgLy8g
U29tZSBlZGl0aW5nIG9wZXJhdGlvbnMgY2hhbmdlIHRoZSBzZWxlY3Rpb24gdmlzdWFsbHkgd2l0
aG91dCBhZmZlY3RpbmcgaXRzIHBvc2l0aW9uIHdpdGhpbiB0aGUgRE9NLgogICAgIC8vIEZvciBl
eGFtcGxlIHdoZW4geW91IHByZXNzIHJldHVybiBpbiB0aGUgZm9sbG93aW5nICh0aGUgY2FyZXQg
aXMgbWFya2VkIGJ5IF4pOgpAQCAtMjgyNyw3ICsyODI2LDcgQEAgdm9pZCBFZGl0b3I6OnJlc3Bv
bmRUb0NoYW5nZWRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9u
LCBGcmEKICAgICBpZiAoIWlzQ29udGludW91c0dyYW1tYXJDaGVja2luZ0VuYWJsZWQpCiAgICAg
ICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+cmVtb3ZlTWFya2VycyhEb2N1bWVu
dE1hcmtlcjo6R3JhbW1hcik7CiAKLSAgICByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKG9sZFNl
bGVjdGlvbik7CisgICAgbm90aWZ5Q29tcG9uZW50c09uQ2hhbmdlZFNlbGVjdGlvbihvbGRTZWxl
Y3Rpb24sIG9wdGlvbnMpOwogfQogCiBzdGF0aWMgTm9kZSogZmluZEZpcnN0TWFya2FibGUoTm9k
ZSogbm9kZSkKQEAgLTI5MTgsNCArMjkxNywxNCBAQCB2b2lkIEVkaXRvcjo6d2lsbERldGFjaFBh
Z2UoKQogICAgICAgICBlZGl0b3JDbGllbnQtPmZyYW1lV2lsbERldGFjaFBhZ2UoZnJhbWUoKSk7
CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IEVkaXRvcjo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFy
a2VyKGNvbnN0IERvY3VtZW50TWFya2VyKiBtYXJrZXIpCit7CisgICAgcmV0dXJuIG1fYWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci0+ZGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKG1hcmtl
cik7Cit9CisKK3ZvaWQgRWRpdG9yOjphcHBseURpY3RhdGlvbkFsdGVybmF0aXZlbHRlcm5hdGl2
ZShjb25zdCBTdHJpbmcmIGFsdGVybmF0aXZlU3RyaW5nKQoreworICAgIG1fYWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlci0+YXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZShhbHRlcm5hdGl2ZVN0cmlu
Zyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmlu
ZGV4IGYwZTVjMjRlNjViOTFmNjM1NzAxYzUzNTllMDlkYzFkYzdhYjdlZGMuLmNiMTBiYzVhZjZh
MGI2Yjg1MjhjZmFkYzMyZGYyODJiNDg1NjM4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApA
QCAtMTM0LDggKzEzNCw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZFNob3dEZWxldGVJbnRl
cmZhY2UoSFRNTEVsZW1lbnQqKSBjb25zdDsKICAgICBib29sIHNob3VsZERlbGV0ZVJhbmdlKFJh
bmdlKikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKFN0eWxlUHJvcGVydHlTZXQq
LCBSYW5nZSopOwotICAgIAotICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24pOworCiAgICAgdm9pZCByZXNwb25kVG9D
aGFuZ2VkQ29udGVudHMoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZW5kaW5nU2VsZWN0aW9uKTsK
IAogICAgIGJvb2wgc2VsZWN0aW9uU3RhcnRIYXNTdHlsZShDU1NQcm9wZXJ0eUlELCBjb25zdCBT
dHJpbmcmIHZhbHVlKSBjb25zdDsKQEAgLTM5NSw3ICszOTQsOCBAQCBwdWJsaWM6CiAKICAgICBF
ZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3IgZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcigpIGNvbnN0
IHsgcmV0dXJuIG1fZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcjsgfQogICAgIHZvaWQgc2V0RGVm
YXVsdFBhcmFncmFwaFNlcGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3Igc2VwYXJhdG9y
KSB7IG1fZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvciA9IHNlcGFyYXRvcjsgfQotCisgICAgVmVj
dG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKGNvbnN0IERvY3VtZW50
TWFya2VyKik7CisgICAgdm9pZCBhcHBseURpY3RhdGlvbkFsdGVybmF0aXZlbHRlcm5hdGl2ZShj
b25zdCBTdHJpbmcmIGFsdGVybmF0aXZlU3RyaW5nKTsKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxEZXRhY2hQYWdlKCkgT1ZFUlJJREU7CiAKQEAgLTQyOSw3ICs0MjksOCBAQCBwcml2
YXRlOgogICAgIGVudW0gU2V0Q29tcG9zaXRpb25Nb2RlIHsgQ29uZmlybUNvbXBvc2l0aW9uLCBD
YW5jZWxDb21wb3NpdGlvbiB9OwogICAgIHZvaWQgc2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5n
JiwgU2V0Q29tcG9zaXRpb25Nb2RlKTsKIAotICAgIHZvaWQgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJD
b21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgYm9vbCBjbG9zZVR5
cGluZywgYm9vbCBjbGVhclR5cGluZ1N0eWxlKTsKKyAgICB2b2lkIGNoYW5nZVNlbGVjdGlvbkFm
dGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIEZyYW1lU2Vs
ZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zKTsKKyAgICB2b2lkIG5vdGlmeUNvbXBvbmVudHNP
bkNoYW5nZWRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBG
cmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyk7CiAKICAgICBOb2RlKiBmaW5kRXZl
bnRUYXJnZXRGcm9tU2VsZWN0aW9uKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJh
bWVTZWxlY3Rpb24uaAppbmRleCA4ZmM0MmVjY2UwMzYyMDJhN2YwMjg0MGEwZTVkMTM0ZGM2NWRm
YjA4Li40ZDdmOTg3NzU5NWMyNjQzMzJiZWQ4OGYzYTQ1OGFkODFiNzZkNDMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCkBAIC0xMTgsNiArMTE4LDcgQEAgcHVibGlj
OgogICAgICAgICBDbGVhclR5cGluZ1N0eWxlID0gMSA8PCAyLAogICAgICAgICBTcGVsbENvcnJl
Y3Rpb25UcmlnZ2VyZWQgPSAxIDw8IDMsCiAgICAgICAgIERvTm90U2V0Rm9jdXMgPSAxIDw8IDQs
CisgICAgICAgIERpY3RhdGlvblRyaWdnZXJlZCA9IDEgPDwgNQogICAgIH07CiAgICAgdHlwZWRl
ZiB1bnNpZ25lZCBTZXRTZWxlY3Rpb25PcHRpb25zOyAvLyBVbmlvbiBvZiB2YWx1ZXMgaW4gU2V0
U2VsZWN0aW9uT3B0aW9uIGFuZCBFVXNlclRyaWdnZXJlZAogICAgIHN0YXRpYyBpbmxpbmUgRVVz
ZXJUcmlnZ2VyZWQgc2VsZWN0aW9uT3B0aW9uc1RvVXNlclRyaWdnZXJlZChTZXRTZWxlY3Rpb25P
cHRpb25zIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9B
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzYjNlODhhODBjYjlj
ZDljZGVjNjRiYzU2OTVlZjFiZmQxZDViY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaApAQCAtMCwwICsx
LDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXJf
aAorI2RlZmluZSBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXJfaAorCisjaW5jbHVkZSAiQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBVU0UoRElD
VEFUSU9OX0FMVEVSTkFUSVZFUykKK09CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOworT0JK
Q19DTEFTUyBOU1ZpZXc7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyIHsKK3B1YmxpYzoKKyAgICBBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIoKSB7IH0KKyAgICAvLyBSZXR1cm5zIGEgY29udGV4dCBJRC4KKyAgICB1aW50NjRfdCBh
ZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKKyAg
ICB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCBzaG93QWx0ZXJuYXRpdmVzKE5TVmlldyosIGNvbnN0
IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlByaW1hcnlTdHJpbmcsIHVpbnQ2NF90IGNvbnRleHQs
IHZvaWQoXmFjY2VwdGFuY2VIYW5kbGVyKShOU1N0cmluZyopKTsKKyAgICB2b2lkIGRpc21pc3NB
bHRlcm5hdGl2ZXMoKTsKKyAgICB2b2lkIHJlbW92ZUFsdGVybmF0aXZlcyh1aW50NjRfdCBjb250
ZXh0KTsKKyAgICBWZWN0b3I8U3RyaW5nPiBhbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90
IGNvbnRleHQpOworCitwcml2YXRlOgorICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2
ZShOU1N0cmluZyogYWNjZXB0ZWRBbHRlcm5hdGl2ZSwgdWludDY0X3QgY29udGV4dCwgTlNUZXh0
QWx0ZXJuYXRpdmVzKik7CisKKyAgICBjbGFzcyBBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9s
bGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xs
ZXIoKSB7IH0KKyAgICAgICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0
cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7CisgICAgICAgIHZvaWQgY2xlYXIoKTsKKyAgICAgICAg
TlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRl
eHQpOworICAgICAgICB2b2lkIHJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3Qg
Y29udGV4dCk7CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBpbnZhbGlkQ29udGV4dCA9
IDA7CisgICAgcHJpdmF0ZToKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZXRh
aW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiA+IEhhc2hNYXBUeXBlOworICAgICAgICBIYXNoTWFw
VHlwZSBtX2FsdGVybmF0aXZlc09iamVjdE1hcDsKKyAgICB9OworCisgICAgQWxlcm5hdGl2ZVRl
eHRDb250ZXh0Q29udHJvbGxlciBtX2NvbnRleHRDb250cm9sbGVyOworICAgIFJldGFpblB0cjxO
U1ZpZXc+IG1fdmlldzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisj
ZW5kaWYgLy8gQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wYjk2M2VmYzczMjdhNWI3NTQ4YzJhMjE5MWIwZTFhMDVmNzA2ZGFmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyLm1tCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCIKKworI2lm
IFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorI2ltcG9ydCA8QXBwS2l0L05TU3BlbGxDaGVj
a2VyLmg+CisjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CisjaW1wb3J0IDxB
cHBLaXQvTlNWaWV3Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordWludDY0X3QgQWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjph
ZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mIGFsdGVy
bmF0aXZlcykKK3sKKyAgICB1aW50NjRfdCBjb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50
NjRfdD4oYWx0ZXJuYXRpdmVzLmdldCgpKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJl
dHVybiBpbnZhbGlkQ29udGV4dDsKKyAgICBpZiAoYWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250
ZXh0KSkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQ7CisKKyAgICBIYXNoTWFwVHlwZTo6QWRkUmVz
dWx0IHJlc3VsdCA9IG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmFkZChjb250ZXh0LCBhbHRlcm5h
dGl2ZXMpOworICAgIHJldHVybiByZXN1bHQuaXNOZXdFbnRyeSA/IGNvbnRleHQgOiBpbnZhbGlk
Q29udGV4dDsKK30KKworTlNUZXh0QWx0ZXJuYXRpdmVzKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlc0ZvckNv
bnRleHQodWludDY0X3QgY29udGV4dCkKK3sKKyAgICBIYXNoTWFwVHlwZTo6Y29uc3RfaXRlcmF0
b3IgaXRyID0gbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuZmluZChjb250ZXh0KTsKKyAgICBpZiAo
aXRyID09IG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gTlVM
TDsKKyAgICByZXR1cm4gaXRyLT5zZWNvbmQuZ2V0KCk7Cit9CisKK3ZvaWQgQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjpyZW1vdmVB
bHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpCit7CisgICAgbV9hbHRlcm5h
dGl2ZXNPYmplY3RNYXAucmVtb3ZlKGNvbnRleHQpOworfQorCit2b2lkIEFsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6Y2xlYXIoKQor
eworICAgIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmNsZWFyKCk7Cit9CisKK3VpbnQ2NF90IEFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0
cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBhbHRlcm5hdGl2ZXMpCit7CisgICAgcmV0dXJuIG1fY29u
dGV4dENvbnRyb2xsZXIuYWRkQWx0ZXJuYXRpdmVzKGFsdGVybmF0aXZlcyk7Cit9CisKK1ZlY3Rv
cjxTdHJpbmc+IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29u
dGV4dCh1aW50NjRfdCBjb250ZXh0KQoreworICAgIE5TVGV4dEFsdGVybmF0aXZlcyogdGV4dEFs
dGVybmF0aXZlcyA9IG1fY29udGV4dENvbnRyb2xsZXIuYWx0ZXJuYXRpdmVzRm9yQ29udGV4dChj
b250ZXh0KTsKKyAgICBWZWN0b3I8U3RyaW5nPiBhbHRlcm5hdGl2ZVN0cmluZ3M7CisgICAgZm9y
IChOU1N0cmluZyogc3RyaW5nIGluIHRleHRBbHRlcm5hdGl2ZXMuYWx0ZXJuYXRpdmVTdHJpbmdz
KQorICAgICAgICBhbHRlcm5hdGl2ZVN0cmluZ3MuYXBwZW5kKHN0cmluZyk7CisgICAgcmV0dXJu
IGFsdGVybmF0aXZlU3RyaW5nczsKK30KKwordm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXI6OmNsZWFyKCkKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0Q29udHJvbGxlci5jbGVhcigpOwor
fQorCit2b2lkIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6c2hvd0FsdGVybmF0aXZlcyhO
U1ZpZXcqIHZpZXcsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlByaW1hcnlTdHJpbmcs
IHVpbnQ2NF90IGNvbnRleHQsIHZvaWQoXmFjY2VwdGFuY2VIYW5kbGVyKShOU1N0cmluZyopKQor
eworICAgIGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fdmlldyA9IHZpZXc7CisgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRl
cm5hdGl2ZXMgPSBtX2NvbnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29u
dGV4dCk7CisgICAgaWYgKCFhbHRlcm5hdGl2ZXMpCisgICAgICAgIHJldHVybjsKKyAgICBOU1Nw
ZWxsQ2hlY2tlciogc3BlbGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hl
Y2tlcl07CisgICAgW3NwZWxsQ2hlY2tlciBzaG93Q29ycmVjdGlvbkluZGljYXRvck9mVHlwZTpO
U0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlR3Vlc3NlcyBwcmltYXJ5U3RyaW5nOmFsdGVybmF0aXZl
cy5wcmltYXJ5U3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZXMuYWx0ZXJuYXRp
dmVTdHJpbmdzIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUHJpbWFyeVN0cmluZyB2aWV3
Om1fdmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nKiBhY2NlcHRlZFN0cmlu
ZykgeworICAgICAgICBpZiAoYWNjZXB0ZWRTdHJpbmcpIHsKKyAgICAgICAgICAgIGhhbmRsZUFj
Y2VwdGVkQWx0ZXJuYXRpdmUoYWNjZXB0ZWRTdHJpbmcsIGNvbnRleHQsIGFsdGVybmF0aXZlcyk7
CisgICAgICAgICAgICBhY2NlcHRhbmNlSGFuZGxlcihhY2NlcHRlZFN0cmluZyk7CisgICAgICAg
IH0KKyAgICB9XTsKK30KKwordm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmhhbmRs
ZUFjY2VwdGVkQWx0ZXJuYXRpdmUoTlNTdHJpbmcqIGFjY2VwdGVkQWx0ZXJuYXRpdmUsIHVpbnQ2
NF90IGNvbnRleHQsIE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVzKQoreworICAgIFth
bHRlcm5hdGl2ZXMgbm90ZVNlbGVjdGVkQWx0ZXJuYXRpdmVTdHJpbmc6YWNjZXB0ZWRBbHRlcm5h
dGl2ZV07CisgICAgbV9jb250ZXh0Q29udHJvbGxlci5yZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250
ZXh0KGNvbnRleHQpOworICAgIG1fdmlldy5jbGVhcigpOworfQorCit2b2lkIEFsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlcjo6ZGlzbWlzc0FsdGVybmF0aXZlcygpCit7CisgICAgaWYgKCFtX3Zp
ZXcpCisgICAgICAgIHJldHVybjsKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hl
Y2tlcl0gZGlzbWlzc0NvcnJlY3Rpb25JbmRpY2F0b3JGb3JWaWV3Om1fdmlldy5nZXQoKV07Cit9
CisKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpyZW1vdmVBbHRlcm5hdGl2ZXMo
dWludDY0X3QgY29udGV4dCkKK3sKKyAgICBtX2NvbnRleHRDb250cm9sbGVyLnJlbW92ZUFsdGVy
bmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCk7Cit9Cit9CisjZW5kaWYgLy8gVVNFKERJQ1RBVElP
Tl9BTFRFUk5BVElWRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9U
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1Rl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwOWUxZTlkMWI4MTZhZmQxNTI1
OTc2ZmY5ZTUyY2VhYWQ4Zjg0NTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaApAQCAtMCwwICsxLDUzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VfaAorI2RlZmluZSBU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VfaAorCisjaW5jbHVkZSAiQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50LmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgVVNFKERJQ1RBVElPTl9B
TFRFUk5BVElWRVMpCitPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKK3N0
cnVjdCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UgeworICAgIFRleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZShOU1RleHRBbHRlcm5hdGl2ZXMqIGFuQWx0ZXJuYXRpdmVzLCBOU1JhbmdlIGFSYW5nZSk7
CisgICAgTlNSYW5nZSByYW5nZTsKKyAgICBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiBh
bHRlcm5hdGl2ZXM7Cit9OworCit2b2lkIGNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVz
KE5TQXR0cmlidXRlZFN0cmluZyosIFZlY3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBh
bHRlcm5hdGl2ZXMpOworCisjZWxzZQorc3RydWN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSB7
IH07CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWE1OGY4OTRmOGVl
ZjVlNjM1YTg3OWEwYjc4MTBkZmQ0YzJmZTFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tCkBAIC0wLDAgKzEs
NTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UuaCIKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorI2lt
cG9ydCA8QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZTo6VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlKE5T
VGV4dEFsdGVybmF0aXZlcyogYW5BbHRlcm5hdGl2ZXMsIE5TUmFuZ2UgYVJhbmdlKQorOiByYW5n
ZShhUmFuZ2UpCissIGFsdGVybmF0aXZlcyhhbkFsdGVybmF0aXZlcykKK3sKK30KKwordm9pZCBj
b2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmlu
ZywgVmVjdG9yPFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGFsdGVybmF0aXZlcykgeworICAg
IE5TUmFuZ2UgZWZmZWN0aXZlUmFuZ2UgPSBOU01ha2VSYW5nZSgwLCAwKTsKKyAgICBOU1VJbnRl
Z2VyIGxlbmd0aCA9IFtzdHJpbmcgbGVuZ3RoXTsKKyAgICBkbyB7CisgICAgICAgIE5TRGljdGlv
bmFyeSAqYXR0cmlidXRlcyA9IFtzdHJpbmcgYXR0cmlidXRlc0F0SW5kZXg6ZWZmZWN0aXZlUmFu
Z2UubG9jYXRpb24gZWZmZWN0aXZlUmFuZ2U6JmVmZmVjdGl2ZVJhbmdlXTsKKyAgICAgICAgaWYg
KCFhdHRyaWJ1dGVzKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIE5TVGV4dEFsdGVybmF0
aXZlcyAqdGV4dEFsdGVybmF0aXZlcyA9IFthdHRyaWJ1dGVzIG9iamVjdEZvcktleTpOU1RleHRB
bHRlcm5hdGl2ZXNBdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgaWYgKHRleHRBbHRlcm5hdGl2ZXMp
CisgICAgICAgICAgICBhbHRlcm5hdGl2ZXMuYXBwZW5kKFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZSh0ZXh0QWx0ZXJuYXRpdmVzLCBlZmZlY3RpdmVSYW5nZSkpOworICAgICAgICBlZmZlY3RpdmVS
YW5nZS5sb2NhdGlvbiA9IE5TTWF4UmFuZ2UoZWZmZWN0aXZlUmFuZ2UpOworICAgIH0gd2hpbGUg
KGVmZmVjdGl2ZVJhbmdlLmxvY2F0aW9uIDwgbGVuZ3RoKTsKK30KK30KKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggMDk0N2M4N2JhMDI0
MTQ0MzFlNjZkMzYzYzY4YTkzNjY2ZmRlOTZmZC4uNjcyNDVlNjRkNzYzMDg1OWVmOWY3N2ZjY2Vm
ZGJiMGU0MGNkNTFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2
ZVRleHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0aXZlVGV4dENs
aWVudC5oCkBAIC0zMSw2ICszMSwxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmlu
ZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9Q
QVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MSU9OKQorLy8gU29tZSBwbGF0Zm9ybXMgcHJv
dmlkZSBVSSBmb3Igc3VnZ2VzdGluZyBhbHRlcm5hdGl2ZSBkaWN0YXRpb24gdGV4dC4KKyNkZWZp
bmUgV1RGX1VTRV9ESUNUQVRJT05fQUxURVJOQVRJVkVTIDEKKyNlbmRpZiAvLyBQTEFURk9STShN
QUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX1NOT1dfTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTElPTikKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBlbnVtIFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQg
ewpAQCAtNDMsNiArNDgsNyBAQCBlbnVtIEFsdGVybmF0aXZlVGV4dFR5cGUgewogICAgIEFsdGVy
bmF0aXZlVGV4dFR5cGVDb3JyZWN0aW9uID0gMCwKICAgICBBbHRlcm5hdGl2ZVRleHRUeXBlUmV2
ZXJzaW9uLAogICAgIEFsdGVybmF0aXZlVGV4dFR5cGVTcGVsbGluZ1N1Z2dlc3Rpb25zLAorICAg
IEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0YXRpb25BbHRlcm5hdGl2ZXMKIH07CiAKIGVudW0gQXV0
b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgewpAQCAtNTQsMTEgKzYwLDE4IEBAIGNsYXNzIEFsdGVy
bmF0aXZlVGV4dENsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWx0ZXJuYXRpdmVUZXh0
Q2xpZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSA9IDA7Ci0KKyNp
ZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0
aW9uQWx0ZXJuYXRpdmUoQWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgRmxvYXRSZWN0JiBib3Vu
ZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVwbGFjbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVy
bmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NB
bHRlcm5hdGl2ZShSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSA9IDA7CiAgICAg
dmlydHVhbCBTdHJpbmcgZGlzbWlzc0FsdGVybmF0aXZlU29vbihSZWFzb25Gb3JEaXNtaXNzaW5n
QWx0ZXJuYXRpdmVUZXh0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0gMDsKKyNlbmRp
ZgorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93
RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25D
b250ZXh0KSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5h
dGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOworI2VuZGlmCiB9OwogICAgIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4
IDliOTEwNzI0YjVlN2VkZmIxMDc2OGMzZjFkNTI1Yjk1ZDgzZmQ4ZDcuLjdjZjJkYmU1YmUyMDQ4
MGEyNDVjMzEyNTliMTIwNWYyZTgyMzY4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTQ4MSw2ICs0ODEsOSBAQCB2b2lkIENvbnRleHRN
ZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBp
dGVtKQogICAgICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5pbnNwZWN0KG1f
aGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSk7CiAgICAgICAgIGJyZWFrOwogI2Vu
ZGlmCisgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5hdGl2ZToKKyAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseURpY3RhdGlvbkFsdGVybmF0aXZlbHRlcm5hdGl2
ZShpdGVtLT50aXRsZSgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
YnJlYWs7CiAgICAgfQpAQCAtODk2LDUwICs4OTksNjUgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRy
b2xsZXI6OnBvcHVsYXRlKCkKICAgICB9IGVsc2UgeyAvLyBNYWtlIGFuIGVkaXRpbmcgY29udGV4
dCBtZW51CiAgICAgICAgIEZyYW1lU2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0
aW9uKCk7CiAgICAgICAgIGJvb2wgaW5QYXNzd29yZEZpZWxkID0gc2VsZWN0aW9uLT5pc0luUGFz
c3dvcmRGaWVsZCgpOwotICAgICAgICBib29sIHNwZWxsQ2hlY2tpbmdFbmFibGVkID0gZnJhbWUt
PmVkaXRvcigpLT5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkRm9yKG5vZGUpOwotCi0gICAgICAgIGlm
ICghaW5QYXNzd29yZEZpZWxkICYmIHNwZWxsQ2hlY2tpbmdFbmFibGVkKSB7Ci0gICAgICAgICAg
ICAvLyBDb25zaWRlciBhZGRpbmcgc3BlbGxpbmctcmVsYXRlZCBvciBncmFtbWFyLXJlbGF0ZWQg
Y29udGV4dCBtZW51IGl0ZW1zIChuZXZlciBib3RoLCBzaW5jZSBhIHNpbmdsZSBzZWxlY3RlZCBy
YW5nZQotICAgICAgICAgICAgLy8gaXMgbmV2ZXIgY29uc2lkZXJlZCBhIG1pc3NwZWxsaW5nIGFu
ZCBiYWQgZ3JhbW1hciBhdCB0aGUgc2FtZSB0aW1lKQotICAgICAgICAgICAgYm9vbCBtaXNzcGVs
bGluZzsKLSAgICAgICAgICAgIGJvb2wgYmFkR3JhbW1hcjsKLSAgICAgICAgICAgIFZlY3RvcjxT
dHJpbmc+IGd1ZXNzZXMgPSBmcmFtZS0+ZWRpdG9yKCktPmd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JV
bmdyYW1tYXRpY2FsU2VsZWN0aW9uKG1pc3NwZWxsaW5nLCBiYWRHcmFtbWFyKTsKLSAgICAgICAg
ICAgIGlmIChtaXNzcGVsbGluZyB8fCBiYWRHcmFtbWFyKSB7Ci0gICAgICAgICAgICAgICAgc2l6
ZV90IHNpemUgPSBndWVzc2VzLnNpemUoKTsKLSAgICAgICAgICAgICAgICBpZiAoc2l6ZSA9PSAw
KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYmFkIGdyYW1tYXIgYnV0IG5v
IHN1Z2dlc3Rpb25zIChlLmcuLCByZXBlYXRlZCB3b3JkKSwganVzdCBsZWF2ZSBvZmYgdGhlIHN1
Z2dlc3Rpb25zCi0gICAgICAgICAgICAgICAgICAgIC8vIGxpc3QgYW5kIHRyYWlsaW5nIHNlcGFy
YXRvciByYXRoZXIgdGhhbiBhZGRpbmcgYSAiTm8gR3Vlc3NlcyBGb3VuZCIgaXRlbSAobWF0Y2hl
cyBBcHBLaXQpCi0gICAgICAgICAgICAgICAgICAgIGlmIChtaXNzcGVsbGluZykgewotICAgICAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShOb0d1ZXNzZXNJdGVtLCBtX2NvbnRleHRNZW51
LmdldCgpKTsKKyAgICAgICAgaWYgKCFpblBhc3N3b3JkRmllbGQpIHsKKyAgICAgICAgICAgIGJv
b2wgaGF2ZUNvbnRleHRNZW51SXRlbXNGb3JNaXNzcGVsbGluZ09yR3JhbW1lciA9IGZhbHNlOwor
ICAgICAgICAgICAgYm9vbCBzcGVsbENoZWNraW5nRW5hYmxlZCA9IGZyYW1lLT5lZGl0b3IoKS0+
aXNTcGVsbENoZWNraW5nRW5hYmxlZEZvcihub2RlKTsKKyAgICAgICAgICAgIGlmIChzcGVsbENo
ZWNraW5nRW5hYmxlZCkgeworICAgICAgICAgICAgICAgIC8vIENvbnNpZGVyIGFkZGluZyBzcGVs
bGluZy1yZWxhdGVkIG9yIGdyYW1tYXItcmVsYXRlZCBjb250ZXh0IG1lbnUgaXRlbXMgKG5ldmVy
IGJvdGgsIHNpbmNlIGEgc2luZ2xlIHNlbGVjdGVkIHJhbmdlCisgICAgICAgICAgICAgICAgLy8g
aXMgbmV2ZXIgY29uc2lkZXJlZCBhIG1pc3NwZWxsaW5nIGFuZCBiYWQgZ3JhbW1hciBhdCB0aGUg
c2FtZSB0aW1lKQorICAgICAgICAgICAgICAgIGJvb2wgbWlzc3BlbGxpbmc7CisgICAgICAgICAg
ICAgICAgYm9vbCBiYWRHcmFtbWFyOworICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGd1
ZXNzZXMgPSBmcmFtZS0+ZWRpdG9yKCktPmd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRp
Y2FsU2VsZWN0aW9uKG1pc3NwZWxsaW5nLCBiYWRHcmFtbWFyKTsKKyAgICAgICAgICAgICAgICBp
ZiAobWlzc3BlbGxpbmcgfHwgYmFkR3JhbW1hcikgeworICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgc2l6ZSA9IGd1ZXNzZXMuc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXNpemUp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYmFkIGdyYW1tYXIgYnV0
IG5vIHN1Z2dlc3Rpb25zIChlLmcuLCByZXBlYXRlZCB3b3JkKSwganVzdCBsZWF2ZSBvZmYgdGhl
IHN1Z2dlc3Rpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBsaXN0IGFuZCB0cmFpbGlu
ZyBzZXBhcmF0b3IgcmF0aGVyIHRoYW4gYWRkaW5nIGEgIk5vIEd1ZXNzZXMgRm91bmQiIGl0ZW0g
KG1hdGNoZXMgQXBwS2l0KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pc3NwZWxsaW5n
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShOb0d1ZXNzZXNJdGVt
LCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBl
bmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyAmZ3Vlc3MgPSBndWVzc2VzW2ld
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZ3Vlc3MuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBpdGVtKEFjdGlv
blR5cGUsIENvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nR3Vlc3MsIGd1ZXNzKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShpdGVtLCBtX2NvbnRleHRNZW51Lmdl
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVt
KCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIGlmIChtaXNzcGVsbGluZykgeworICAgICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kSXRlbShJZ25vcmVTcGVsbGluZ0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShMZWFyblNwZWxsaW5nSXRlbSwgbV9jb250
ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kSXRlbShJZ25vcmVHcmFtbWFySXRlbSwgbV9jb250ZXh0TWVudS5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwg
bV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGhhdmVDb250ZXh0TWVu
dUl0ZW1zRm9yTWlzc3BlbGxpbmdPckdyYW1tZXIgPSB0cnVlOworI2lmIFBMQVRGT1JNKE1BQykg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsr
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcgJmd1ZXNzID0gZ3Vlc3Nl
c1tpXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZ3Vlc3MuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oQWN0aW9uVHlw
ZSwgQ29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdHdWVzcywgZ3Vlc3MpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oaXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBz
dHJpbmcgd2FzIGF1dG9jb3JyZWN0ZWQsIGdlbmVyYXRlIGEgY29udGV4dHVhbCBtZW51IGl0ZW0g
YWxsb3dpbmcgaXQgdG8gYmUgY2hhbmdlZCBiYWNrLgorICAgICAgICAgICAgICAgICAgICBTdHJp
bmcgcmVwbGFjZWRTdHJpbmcgPSBtX2hpdFRlc3RSZXN1bHQucmVwbGFjZWRTdHJpbmcoKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFyZXBsYWNlZFN0cmluZy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBpdGVtKEFjdGlvblR5cGUsIENvbnRl
eHRNZW51SXRlbVRhZ0NoYW5nZUJhY2ssIGNvbnRleHRNZW51SXRlbVRhZ0NoYW5nZUJhY2socmVw
bGFjZWRTdHJpbmcpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oaXRlbSwg
bV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVt
KCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaGF2ZUNvbnRleHRNZW51SXRlbXNGb3JNaXNzcGVsbGluZ09yR3JhbW1lciA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRl
bSgqc2VwYXJhdG9ySXRlbSgpLCBtX2NvbnRleHRNZW51LmdldCgpKTsgICAgICAgICAgICAgICAg
ICAgIAorI2VuZGlmCiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIGlmIChtaXNzcGVsbGluZykgewotICAgICAgICAgICAgICAgICAgICBhcHBlbmRJ
dGVtKElnbm9yZVNwZWxsaW5nSXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGFwcGVuZEl0ZW0oTGVhcm5TcGVsbGluZ0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0
KCkpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBhcHBlbmRJ
dGVtKElnbm9yZUdyYW1tYXJJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKLSAgICAgICAgICAg
ICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOwot
I2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgdGhlIHN0cmluZyB3YXMgYXV0
b2NvcnJlY3RlZCwgZ2VuZXJhdGUgYSBjb250ZXh0dWFsIG1lbnUgaXRlbSBhbGxvd2luZyBpdCB0
byBiZSBjaGFuZ2VkIGJhY2suCi0gICAgICAgICAgICAgICAgU3RyaW5nIHJlcGxhY2VkU3RyaW5n
ID0gbV9oaXRUZXN0UmVzdWx0LnJlcGxhY2VkU3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFyZXBsYWNlZFN0cmluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgQ29udGV4
dE1lbnVJdGVtIGl0ZW0oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFjaywg
Y29udGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFjayhyZXBsYWNlZFN0cmluZykpOwotICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRJdGVtKGl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWhhdmVDb250ZXh0TWVudUl0ZW1zRm9yTWlzc3Bl
bGxpbmdPckdyYW1tZXIpIHsKKyAgICAgICAgICAgICAgICAvLyBTcGVsbGluZyBhbmQgZ3JhbW1h
ciBjaGVja2luZyBpcyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCBkaWN0YXRpb24gYWx0ZXJuYXRp
dmVzLgorICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZl
cyA9IG1faGl0VGVzdFJlc3VsdC5kaWN0YXRpb25BbHRlcm5hdGl2ZXMoKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWRpY3RhdGlvbkFsdGVybmF0aXZlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBpdGVt
KEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0RpY3RhdGlvbkFsdGVybmF0aXZlLCBkaWN0
YXRpb25BbHRlcm5hdGl2ZXNbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRl
bShpdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1l
bnUuZ2V0KCkpOwogICAgICAgICAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKQEAgLTEzNTIsNiArMTM3MCw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVy
OjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAg
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbUN1c3RvbVRhZ05vQWN0aW9uOgogICAgICAgICBjYXNl
IENvbnRleHRNZW51SXRlbUxhc3RDdXN0b21UYWc6CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtQmFzZUFwcGxpY2F0aW9uVGFnOgorICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0Rp
Y3RhdGlvbkFsdGVybmF0aXZlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5UGF1c2U6CiAgICAgICAgICAgICBpZiAobV9oaXRUZXN0
UmVzdWx0Lm1lZGlhUGxheWluZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ29udGV4dE1lbnVJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVu
dUl0ZW0uaAppbmRleCBmOGExYTI5YWExNTZhNmJhMjc5ZjRlNzM1MWU1ZmE0MmMyZTUxNzdhLi42
OTczNzk4NzUzYWYwMDQwNzYxMzYzNWM0MTBmMmI4ZGY5NGUzNTgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaApAQCAtMTM0LDYgKzEzNCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgQ29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQsCiAgICAg
ICAgIENvbnRleHRNZW51SXRlbVRhZ1BERlNpbmdsZVBhZ2VTY3JvbGxpbmcsCiAgICAgICAgIENv
bnRleHRNZW51SXRlbVRhZ1BERkZhY2luZ1BhZ2VzU2Nyb2xsaW5nLAorICAgICAgICBDb250ZXh0
TWVudUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5hdGl2ZSwKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
ICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCwKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDRlM2Y2YmRjYjI5NTAx
OWI1ZTcyMGI0YzIwZTVhYzNlYjIyYTc0NzAuLjVmZmI2NTk2OWFlNmYzMmUyZDg4Y2JjMTQyMjU0
NWY2ZTEwZGRkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0
UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAKQEAgLTcxMCw0ICs3MTAsMjEgQEAgSGl0VGVzdFJlc3VsdDo6Tm9kZVNldCYgSGl0VGVzdFJl
c3VsdDo6bXV0YWJsZVJlY3RCYXNlZFRlc3RSZXN1bHQoKQogICAgIHJldHVybiAqbV9yZWN0QmFz
ZWRUZXN0UmVzdWx0OwogfQogCitWZWN0b3I8U3RyaW5nPiBIaXRUZXN0UmVzdWx0OjpkaWN0YXRp
b25BbHRlcm5hdGl2ZXMoKSBjb25zdAoreworICAgIC8vIFJldHVybiB0aGUgZGljdGF0aW9uIGNv
bnRleHQgaGFuZGxlIGlmIHRoZSB0ZXh0IGF0IHRoaXMgcG9pbnQgaGFzIERpY3RhdGlvbkFsdGVy
bmF0aXZlIG1hcmtlciwgd2hpY2ggbWVhbnMgdGhpcyB0ZXh0IGlzCisgICAgaWYgKCFtX2lubmVy
Tm9uU2hhcmVkTm9kZSkKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CisKKyAgICBE
b2N1bWVudE1hcmtlciogbWFya2VyID0gbV9pbm5lck5vblNoYXJlZE5vZGUtPmRvY3VtZW50KCkt
Pm1hcmtlcnMoKS0+bWFya2VyQ29udGFpbmluZ1BvaW50KGhpdFRlc3RQb2ludCgpLnBvaW50KCks
IERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgIGlmICghbWFya2Vy
KQorICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKworICAgIEZyYW1lKiBmcmFtZSA9
IGlubmVyTm9uU2hhcmVkTm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIGlmICghZnJh
bWUpCisgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworCisgICAgcmV0dXJuIGZyYW1l
LT5lZGl0b3IoKS0+ZGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKG1hcmtlcik7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJl
c3VsdC5oCmluZGV4IGExOGZkYjVhMjU1OGU5ZWI4YzVmNTVkOTNkMTZmZGFiZWJhMTQ0OGUuLjE5
ZGRiZDFhYzJjN2ZlOGI3MDEyNGUyMGMwY2Q5MWY0OGE2YWIyMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtMTU3LDYgKzE1Nyw4IEBAIHB1YmxpYzoKICAg
ICAvLyB0aGUgc2FtZSB0aGluZyBhcyBtdXRhYmxlUmVjdEJhc2VkVGVzdFJlc3VsdCgpLCBidXQg
aGVyZSB0aGUgcmV0dXJuIHZhbHVlIGlzIGNvbnN0LgogICAgIGNvbnN0IE5vZGVTZXQmIHJlY3RC
YXNlZFRlc3RSZXN1bHQoKSBjb25zdDsKIAorICAgIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFs
dGVybmF0aXZlcygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIE5vZGVTZXQmIG11dGFibGVSZWN0
QmFzZWRUZXN0UmVzdWx0KCk7IC8vIFNlZSBhYm92ZS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDExYjcwNTU5ZGE2MzQzNDc0ZDc1MGMyZWE0N2E2
MDU5ZWY1YTZkNjYuLjllNzMxZDYzODZkYzdhM2IzOTFjZjI4OTQ0MzNiMDhiZDNjY2FiMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTEwMzAsNyAr
MTAzMCw4IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1hcmtlcihHcmFwaGlj
c0NvbnRleHQqIHB0LCBjb25zdCBGbG9hdFBvaW50JiBiCiAgICAgaWYgKG1fdHJ1bmNhdGlvbiAh
PSBjTm9UcnVuY2F0aW9uKQogICAgICAgICBtYXJrZXJTcGFuc1dob2xlQm94ID0gZmFsc2U7CiAK
LSAgICBpZiAoIW1hcmtlclNwYW5zV2hvbGVCb3ggfHwgZ3JhbW1hcikgeworICAgIGJvb2wgaXNE
aWN0YXRpb25NYXJrZXIgPSBtYXJrZXItPnR5cGUoKSA9PSBEb2N1bWVudE1hcmtlcjo6RGljdGF0
aW9uQWx0ZXJuYXRpdmVzOworICAgIGlmICghbWFya2VyU3BhbnNXaG9sZUJveCB8fCBncmFtbWFy
IHx8IGlzRGljdGF0aW9uTWFya2VyKSB7CiAgICAgICAgIGludCBzdGFydFBvc2l0aW9uID0gbWF4
PGludD4obWFya2VyLT5zdGFydE9mZnNldCgpIC0gbV9zdGFydCwgMCk7CiAgICAgICAgIGludCBl
bmRQb3NpdGlvbiA9IG1pbjxpbnQ+KG1hcmtlci0+ZW5kT2Zmc2V0KCkgLSBtX3N0YXJ0LCBtX2xl
bik7CiAgICAgICAgIApAQCAtMTA1MCw3ICsxMDUxLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94Ojpw
YWludERvY3VtZW50TWFya2VyKEdyYXBoaWNzQ29udGV4dCogcHQsIGNvbnN0IEZsb2F0UG9pbnQm
IGIKICAgICAgICAgCiAgICAgICAgIC8vIFN0b3JlIHJlbmRlcmVkIHJlY3RzIGZvciBiYWQgZ3Jh
bW1hciBtYXJrZXJzLCBzbyB3ZSBjYW4gaGl0LXRlc3QgYWdhaW5zdCBpdCBlbHNld2hlcmUgaW4g
b3JkZXIgdG8KICAgICAgICAgLy8gZGlzcGxheSBhIHRvb2xUaXAuIFdlIGRvbid0IGRvIHRoaXMg
Zm9yIG1pc3NwZWxsaW5nIG1hcmtlcnMuCi0gICAgICAgIGlmIChncmFtbWFyKSB7CisgICAgICAg
IGlmIChncmFtbWFyIHx8IGlzRGljdGF0aW9uTWFya2VyKSB7CiAgICAgICAgICAgICBtYXJrZXJS
ZWN0Lm1vdmUoLWJveE9yaWdpbi54KCksIC1ib3hPcmlnaW4ueSgpKTsKICAgICAgICAgICAgIG1h
cmtlclJlY3QgPSByZW5kZXJlcigpLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChtYXJr
ZXJSZWN0KSkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKICAgICAgICAgICAgIHRvUmVuZGVyZWRE
b2N1bWVudE1hcmtlcihtYXJrZXIpLT5zZXRSZW5kZXJlZFJlY3QobWFya2VyUmVjdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0K
aW5kZXggNjU4M2NlZTY2MjExMTA3NmMxZTAyNDcyNmVlY2JiMGE4ZjU0MDc5MC4uNzcxOTEwYjRi
YzUwMWU0ODM4MGNkYjgzZTAzYmY2ZTIzZjUxYWNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbQpAQCAtMjUsNyArMjUsNiBA
QAogI2ltcG9ydCAiQ29ycmVjdGlvblBhbmVsLmgiCiAKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5h
bC5oIgotI2ltcG9ydCAiV2ViVmlld1ByaXZhdGUuaCIKIAogI2lmIFVTRShBVVRPQ09SUkVDVElP
Tl9QQU5FTCkKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMzksNiArMzgsOSBAQCBzdGF0
aWMgaW5saW5lIE5TQ29ycmVjdGlvbkluZGljYXRvclR5cGUgY29ycmVjdGlvbkluZGljYXRvclR5
cGUoQWx0ZXJuYXRpdmVUZXh0VAogICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uSW5kaWNhdG9y
VHlwZVJldmVyc2lvbjsKICAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5cGVTcGVsbGluZ1N1Z2dl
c3Rpb25zOgogICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uSW5kaWNhdG9yVHlwZUd1ZXNzZXM7
CisgICAgY2FzZSBBbHRlcm5hdGl2ZVRleHRUeXBlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBl
RGVmYXVsdDsKQEAgLTEzMSw3ICsxMzMsNyBAQCB2b2lkIENvcnJlY3Rpb25QYW5lbDo6aGFuZGxl
QWNjZXB0ZWRSZXBsYWNlbWVudChOU1N0cmluZyogYWNjZXB0ZWRSZXBsYWNlbWVudCwgTgogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAgW21fdmlldy5nZXQoKSBoYW5kbGVDb3JyZWN0
aW9uUGFuZWxSZXN1bHQ6YWNjZXB0ZWRSZXBsYWNlbWVudF07CisgICAgW21fdmlldy5nZXQoKSBo
YW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDphY2NlcHRlZFJlcGxhY2VtZW50XTsKICAgICBt
X3ZpZXcuY2xlYXIoKTsKICAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVudCkKICAgICAgICAgbV9y
ZXN1bHRGb3JEaXNtaXNzYWwuYWRvcHROUyhbYWNjZXB0ZWRSZXBsYWNlbWVudCBjb3B5XSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5oCmluZGV4IDVlNjZhY2FmN2I3MWFlNzRlY2ZkZDJiNGU3MjFkOTNm
ZDhjY2ZjN2QuLmJjNGVjNDcyMzg1ZDU2NjNhMGUwNmI2YThkZjU0YTg1Yzk2ZmNkNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4
dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5oCkBAIC0zNywxMCArMzcsMTggQEAgcHVibGljOgogICAgIFdlYkFs
dGVybmF0aXZlVGV4dENsaWVudChXZWJWaWV3ICopOwogICAgIHZpcnR1YWwgfldlYkFsdGVybmF0
aXZlVGV4dENsaWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgT1ZFUlJJ
REU7CisjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogICAgIHZpcnR1YWwgdm9pZCBzaG93
Q29ycmVjdGlvbkFsdGVybmF0aXZlKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmUoV2ViQ29yZTo6UmVhc29u
Rm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJp
bmcgZGlzbWlzc0FsdGVybmF0aXZlU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0
ZXJuYXRpdmVUZXh0KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJl
Y3Rpb25SZXNwb25zZShXZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3Qg
U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykg
T1ZFUlJJREU7CisjZW5kaWYKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICB2
aXJ0dWFsIHZvaWQgc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250
ZXh0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0
aXZlVUkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJu
YXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
VmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNv
bnRleHQpIE9WRVJSSURFOworI2VuZGlmCiBwcml2YXRlOgogICAgIFdlYlZpZXcqIG1fd2ViVmll
dzsKICNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0K
aW5kZXggZjFhNzBmYzU0M2M2YzVjN2E4MjExZTU3YzUwOWE5OGJiMDBmZmRjZi4uNGQ3ODlkM2Mw
ZDg4OWIwY2E2OGRmYTFhMjllNTU1ZjAzNDBmYWI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5t
bQpAQCAtMjUsNiArMjUsOCBAQAogCiAjaW5jbHVkZSAiV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
LmgiCiAKKyNpbmNsdWRlICJXZWJWaWV3SW50ZXJuYWwuaCIKKwogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50KFdlYlZpZXcqIHdlYlZpZXcpCkBAIC00NCwzMyArNDYsNDcgQEAgdm9pZCBXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQ6OnBhZ2VEZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0aGlzOwogfQogCisj
aWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogdm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQ6OnNob3dDb3JyZWN0aW9uQWx0ZXJuYXRpdmUoQWx0ZXJuYXRpdmVUZXh0VHlwZSB0eXBlLCBj
b25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5n
JiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQogewotI2lmIFVT
RShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICBtX2NvcnJlY3Rpb25QYW5lbC5zaG93KG1fd2Vi
VmlldywgdHlwZSwgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCByZXBsYWNlZFN0cmluZywg
cmVwbGFjZW1lbnRTdHJpbmcsIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKLSNlbmRp
ZgogfQogCiB2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0aXZl
KFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQgcmVhc29uKQogewotI2lmIFVTRShB
VVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICBtX2NvcnJlY3Rpb25QYW5lbC5kaXNtaXNzKHJlYXNv
bik7Ci0jZW5kaWYKIH0KIAogU3RyaW5nIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlz
c0FsdGVybmF0aXZlU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0IHJlYXNv
bikKIHsKLSNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgcmV0dXJuIG1fY29ycmVj
dGlvblBhbmVsLmRpc21pc3MocmVhc29uKTsKLSNlbHNlCi1yZXR1cm4gU3RyaW5nKCk7Ci0jZW5k
aWYKIH0KIAogdm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJlY29yZEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5n
KQogewotI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICBOU0NvcnJlY3Rpb25SZXNw
b25zZSByZXNwb25zZSA9IHJlc3BvbnNlVHlwZSA9PSBBdXRvY29ycmVjdGlvblJldmVydGVkID8g
TlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZCA6IE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVk
OwotQ29ycmVjdGlvblBhbmVsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKG1fd2ViVmll
dywgcmVzcG9uc2UsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7CisgICAgQ29y
cmVjdGlvblBhbmVsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKG1fd2ViVmlldywgcmVz
cG9uc2UsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7Cit9CiAjZW5kaWYKKwor
I2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQordm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQ6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250
ZXh0KQoreworICAgIFttX3dlYlZpZXcgX3JlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlczpkaWN0
YXRpb25Db250ZXh0XTsKK30KKwordm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnNob3dE
aWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdC
b3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBbbV93
ZWJWaWV3IF9zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSTpib3VuZGluZ0JveE9mRGljdGF0ZWRU
ZXh0IGZvckRpY3RhdGlvbkNvbnRleHQ6ZGljdGF0aW9uQ29udGV4dF07CiB9CisKK3ZvaWQgV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSSgpCit7
CisgICAgW21fd2ViVmlldyBfZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUldOworfQorCitW
ZWN0b3I8U3RyaW5nPiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpY3RhdGlvbkFsdGVybmF0
aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIHJldHVybiBbbV93ZWJWaWV3
IF9kaWN0YXRpb25BbHRlcm5hdGl2ZXM6ZGljdGF0aW9uQ29udGV4dF07Cit9CisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDE3ZDMwOTNjZDBiZWNl
ZDNhNzJmNzk1YTRlY2VkZDlhYTZmMDdlYTguLmYwMjQzOTBlZTFlNWU2YzY4NmUyZTA2NTBiYzY5
NmI3OGM1MjhiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpA
QCAtMTEzLDYgKzExMyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NpbXBsZUZvbnREYXRhLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydHlTZXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4
dC5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViRm9u
dENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5o
PgpAQCAtNTYwMyw3ICs1NjA0LDcgQEAgc3RhdGljIENHUG9pbnQgY29yZUdyYXBoaWNzU2NyZWVu
UG9pbnRGb3JBcHBLaXRTY3JlZW5Qb2ludChOU1BvaW50IHBvaW50KQogICAgIGlmICghdmFsaWRB
dHRyaWJ1dGVzKSB7CiAgICAgICAgIHZhbGlkQXR0cmlidXRlcyA9IFtbTlNBcnJheSBhbGxvY10g
aW5pdFdpdGhPYmplY3RzOgogICAgICAgICAgICAgTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5h
bWUsIE5TVW5kZXJsaW5lQ29sb3JBdHRyaWJ1dGVOYW1lLAotICAgICAgICAgICAgTlNNYXJrZWRD
bGF1c2VTZWdtZW50QXR0cmlidXRlTmFtZSwgTlNUZXh0SW5wdXRSZXBsYWNlbWVudFJhbmdlQXR0
cmlidXRlTmFtZSwgbmlsXTsKKyAgICAgICAgICAgIE5TTWFya2VkQ2xhdXNlU2VnbWVudEF0dHJp
YnV0ZU5hbWUsIE5TVGV4dElucHV0UmVwbGFjZW1lbnRSYW5nZUF0dHJpYnV0ZU5hbWUsIE5TVGV4
dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5hbWUsIG5pbF07CiAgICAgICAgIC8vIE5TVGV4dCBhbHNv
IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcywgYnV0IGl0J3MKICAgICAgICAgLy8g
aGFyZCB0byB0ZWxsIHdoaWNoIGFyZSByZWFsbHkgcmVxdWlyZWQgZm9yIHRleHQgaW5wdXQgdG8K
ICAgICAgICAgLy8gd29yayB3ZWxsOyBJIGhhdmUgbm90IHNlZW4gYW55IGlucHV0IG1ldGhvZCBt
YWtlIHVzZSBvZiB0aGVtIHlldC4KQEAgLTU5MjMsNyArNTkyNCwxNCBAQCBzdGF0aWMgdm9pZCBl
eHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBv
c2l0aW9uVW5kZQogICAgIE5TUmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSA9IHsgTlNOb3RGb3VuZCwg
MCB9OwogICAgIGJvb2wgaXNGcm9tSW5wdXRNZXRob2QgPSBjb3JlRnJhbWUgJiYgY29yZUZyYW1l
LT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKTsKIAorICAgIFZlY3RvcjxEaWN0YXRpb25BbHRl
cm5hdGl2ZT4gZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnM7CiAgICAgaWYgKGlzQXR0cmli
dXRlZFN0cmluZykgeworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgICAgICBW
ZWN0b3I8V2ViQ29yZTo6VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiB0ZXh0QWx0ZXJuYXRpdmVz
OworICAgICAgICBjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlcyhzdHJpbmcsIHRleHRB
bHRlcm5hdGl2ZXMpOworICAgICAgICBpZiAoIXRleHRBbHRlcm5hdGl2ZXMuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgW1tzZWxmIF93ZWJWaWV3XSBfZ2V0V2ViQ29yZURpY3RhdGlvbkFsdGVybmF0
aXZlczpkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucyBmcm9tVGV4dEFsdGVybmF0aXZlczp0
ZXh0QWx0ZXJuYXRpdmVzXTsKKyNlbmRpZgogICAgICAgICAvLyBGSVhNRTogV2UgaWdub3JlIG1v
c3QgYXR0cmlidXRlcyBmcm9tIHRoZSBzdHJpbmcsIHNvIGZvciBleGFtcGxlIGluc2VydGluZyBm
cm9tIENoYXJhY3RlciBQYWxldHRlIGxvc2VzIGZvbnQgYW5kIGdseXBoIHZhcmlhdGlvbiBkYXRh
LgogICAgICAgICAvLyBJdCBkb2VzIG5vdCBsb29rIGxpa2UgYW55IGlucHV0IG1ldGhvZHMgZXZl
ciB1c2UgaW5zZXJ0VGV4dDogd2l0aCBhdHRyaWJ1dGVzIG90aGVyIHRoYW4gTlNUZXh0SW5wdXRS
ZXBsYWNlbWVudFJhbmdlQXR0cmlidXRlTmFtZS4KICAgICAgICAgdGV4dCA9IFtzdHJpbmcgc3Ry
aW5nXTsKQEAgLTU5NjIsNyArNTk3MCwxMSBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5l
cyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0aW9uVW5kZQogICAg
IGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSkgewogICAgICAgICAv
LyBBbiBpbnNlcnRUZXh0OiBtaWdodCBiZSBoYW5kbGVkIGJ5IG90aGVyIHJlc3BvbmRlcnMgaW4g
dGhlIGNoYWluIGlmIHdlIGRvbid0IGhhbmRsZSBpdC4KICAgICAgICAgLy8gT25lIGV4YW1wbGUg
aXMgc3BhY2UgYmFyIHRoYXQgcmVzdWx0cyBpbiBzY3JvbGxpbmcgZG93biB0aGUgcGFnZS4KLSAg
ICAgICAgZXZlbnRIYW5kbGVkID0gY29yZUZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChldmVu
dFRleHQsIGV2ZW50KTsKKworICAgICAgICBpZiAoIWRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRp
b25zLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGV2ZW50SGFuZGxlZCA9IGNvcmVGcmFtZS0+ZWRp
dG9yKCktPmluc2VydERpY3RhdGVkVGV4dChldmVudFRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZl
TG9jYXRpb25zLCBldmVudCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGV2ZW50SGFuZGxl
ZCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoZXZlbnRUZXh0LCBldmVudCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgZXZlbnRIYW5kbGVkID0gdHJ1ZTsKICAgICAgICAgY29yZUZy
YW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKGV2ZW50VGV4dCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYzkzODIzYTM5NDBjYTg2NmZkYWM2NmU5ZDA1ODFh
ZGZlNjcwZmU0My4uNzk3NmZiMDZlMDBlNTI5ZTdiMmQzZDJkYWI1YjZhNzIzYzNjZDZjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTExLDYgKzExMSw3IEBACiAjaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9K
U1ZhbHVlUmVmLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Fic3RyYWN0RGF0YWJhc2UuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0JhY2tGb3J3
YXJkTGlzdEltcGwuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVtb3J5Q2FjaGUuaD4KQEAgLTU1MzYs
MTYgKzU1MzcsNiBAQCBzdGF0aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvbUpT
VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGpzVmFsdQogCiAjZW5kaWYKIAotI2lmICFk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1df
TEVPUEFSRCkKLS0gKHZvaWQpaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OihOU1N0cmluZyop
cmVzdWx0Ci17Ci0gICAgV2ViRnJhbWUgKndlYkZyYW1lID0gW3NlbGYgX3NlbGVjdGVkT3JNYWlu
RnJhbWVdOwotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHdlYkZyYW1lKTsKLSAgICBpZiAo
Y29yZUZyYW1lKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5oYW5kbGVBbHRlcm5hdGl2
ZVRleHRVSVJlc3VsdChyZXN1bHQpOwotfQotI2VuZGlmCi0KIEBlbmQKIAogQGltcGxlbWVudGF0
aW9uIFdlYlZpZXcgKFdlYlZpZXdVbmRvYWJsZUVkaXRpbmcpCkBAIC02NDEwLDYgKzY0MDEsNDgg
QEAgc3RhdGljIHZvaWQgZ2xpYkNvbnRleHRJdGVyYXRpb25DYWxsYmFjayhDRlJ1bkxvb3BPYnNl
cnZlclJlZiwgQ0ZSdW5Mb29wQWN0aXZpdHkKIH0KICNlbmRpZgogCisjaWYgVVNFKEFVVE9DT1JS
RUNUSU9OX1BBTkVMKQorLSAodm9pZCloYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDooTlNT
dHJpbmcqKXRleHQKK3sKKyAgICBXZWJGcmFtZSAqd2ViRnJhbWUgPSBbc2VsZiBfc2VsZWN0ZWRP
ck1haW5GcmFtZV07CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUod2ViRnJhbWUpOworICAg
IGlmIChjb3JlRnJhbWUpCisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmhhbmRsZUFsdGVy
bmF0aXZlVGV4dFVJUmVzdWx0KHRleHQpOworfQorCistICh2b2lkKV9nZXRXZWJDb3JlRGljdGF0
aW9uQWx0ZXJuYXRpdmVzOihWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JilhbHRlcm5hdGl2
ZXMgZnJvbVRleHRBbHRlcm5hdGl2ZXM6KGNvbnN0IFZlY3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRo
UmFuZ2U+JilhbHRlcm5hdGl2ZXNXaXRoUmFuZ2UKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGFsdGVybmF0aXZlc1dpdGhSYW5nZS5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UmIGFsdGVybmF0aXZlV2l0aFJhbmdlID0gYWx0ZXJuYXRp
dmVzV2l0aFJhbmdlW2ldOworICAgICAgICB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0ID0gX3By
aXZhdGUtPm1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5hZGRBbHRlcm5hdGl2ZXMoYWx0
ZXJuYXRpdmVXaXRoUmFuZ2UuYWx0ZXJuYXRpdmVzKTsKKyAgICAgICAgaWYgKGRpY3RhdGlvbkNv
bnRleHQpCisgICAgICAgICAgICBhbHRlcm5hdGl2ZXMuYXBwZW5kKERpY3RhdGlvbkFsdGVybmF0
aXZlKGFsdGVybmF0aXZlV2l0aFJhbmdlLnJhbmdlLmxvY2F0aW9uLCBhbHRlcm5hdGl2ZVdpdGhS
YW5nZS5yYW5nZS5sZW5ndGgsIGRpY3RhdGlvbkNvbnRleHQpKTsKKyAgICB9Cit9CisKKy0gKHZv
aWQpX3Nob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJOihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
KWJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQgZm9yRGljdGF0aW9uQ29udGV4dDoodWludDY0X3Qp
ZGljdGF0aW9uQ29udGV4dAoreworICAgIF9wcml2YXRlLT5tX2FsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlci0+c2hvd0FsdGVybmF0aXZlcyhzZWxmLCBbc2VsZiBfY29udmVydFJlY3RGcm9tUm9v
dFZpZXc6Ym91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dF0sIGRpY3RhdGlvbkNvbnRleHQsIF4oTlNT
dHJpbmcqIGFjY2VwdGVkQWx0ZXJuYXRpdmUpIHsKKyAgICAgICAgW3NlbGYgaGFuZGxlQWNjZXB0
ZWRBbHRlcm5hdGl2ZVRleHQ6YWNjZXB0ZWRBbHRlcm5hdGl2ZV07CisgICAgfSk7Cit9CisKKy0g
KHZvaWQpX2Rpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJCit7CisgICAgX3ByaXZhdGUtPm1f
YWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5kaXNtaXNzQWx0ZXJuYXRpdmVzKCk7Cit9CisK
Ky0gKHZvaWQpX3JlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlczoodWludDY0X3QpZGljdGF0aW9u
Q29udGV4dAoreworICAgIF9wcml2YXRlLT5tX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+
cmVtb3ZlQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpOworfQorCistIChWZWN0b3I8U3Ry
aW5nPilfZGljdGF0aW9uQWx0ZXJuYXRpdmVzOih1aW50NjRfdClkaWN0YXRpb25Db250ZXh0Cit7
CisgICAgcmV0dXJuIF9wcml2YXRlLT5tX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+YWx0
ZXJuYXRpdmVzRm9yQ29udGV4dChkaWN0YXRpb25Db250ZXh0KTsKK30KKyNlbmRpZgorCiAtIChO
U1BvaW50KV9jb252ZXJ0UG9pbnRGcm9tUm9vdFZpZXc6KE5TUG9pbnQpcG9pbnQKIHsKICAgICBy
ZXR1cm4gTlNNYWtlUG9pbnQocG9pbnQueCwgW3NlbGYgYm91bmRzXS5zaXplLmhlaWdodCAtIHBv
aW50LnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0
YS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCmluZGV4IGVhMmJm
Y2Y2MDc0ZTlhNTExYzNjM2VhZTJkYjRmZjVlNWVjM2M0ZjYuLjJhZDQyMDBkNzQ0NWE4ZjhmZTRk
OTBlMjAyMWFhOGExNjc4ZDAyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlld0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdE
YXRhLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2ltcG9ydCAiV2ViVHlwZXNJbnRlcm5hbC5oIgog
I2ltcG9ydCAiV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaCIKKyNpbXBvcnQgPFdl
YkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xheWVyRmx1
c2hTY2hlZHVsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvTGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVu
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVN0cmluZy5oPgpAQCAtMzgsOCArMzksOSBA
QAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAg
Y2xhc3MgSGlzdG9yeUl0ZW07Ci0gICAgY2xhc3MgUGFnZTsKK2NsYXNzIEFsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlcjsKK2NsYXNzIEhpc3RvcnlJdGVtOworY2xhc3MgUGFnZTsKIH0KIAogQGNs
YXNzIFdlYkluc3BlY3RvcjsKQEAgLTIwMCw1ICsyMDIsOSBAQCBwcml2YXRlOgogICAgIGludCB2
YWxpZGF0aW9uTWVzc2FnZVRpbWVyTWFnbmlmaWNhdGlvbjsKIAogICAgIGZsb2F0IGN1c3RvbURl
dmljZVNjYWxlRmFjdG9yOworCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAg
T3duUHRyPFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4gbV9hbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXI7CisjZW5kaWYKIH0KIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXdEYXRhLm1tCmluZGV4IDBiODExN2EwOTcwNmQ1YjZlYzRlNjQ1N2MzMzk4ZTQ3
NjI2YzU4YmEuLmUyNzY2ZjAxYTM1YmMwN2VlYWE0ODZjMjY1NWI0YzAxYmFlZDk3YTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQpAQCAtMzEsNiArMzEsNyBAQAog
CiAjaW1wb3J0ICJXZWJLaXRMb2dnaW5nLmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlS2V5c1By
aXZhdGUuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0hpc3RvcnlJdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bkxvb3AuaD4KQEAgLTEwMCw2ICsx
MDEsMTAgQEAgTGF5ZXJGbHVzaENvbnRyb2xsZXI6OkxheWVyRmx1c2hDb250cm9sbGVyKFdlYlZp
ZXcqIHdlYlZpZXcpCiAKICAgICBwbHVnaW5EYXRhYmFzZUNsaWVudENvdW50Kys7CiAKKyNpZiBV
U0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlciA9IGFkb3B0UHRyKG5ldyBXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIp
OworI2VuZGlmCisKICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggMDJjYzU1MDEwNmIwNDRmYmMxNzdjOWY1OWEx
ZjgzZjU5MGRlNTBiMC4uYzA1MjU3NDJlYzNiYmJjZmFjOTNiYzhjMDk4MGE2ZWI5MDc5ZjYyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC0zNCwy
MCArMzQsMjYgQEAKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKIAogI2lmZGVmIF9fY3Bs
dXNwbHVzCisjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9GaW5kT3B0aW9ucy5oPgorI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYkNvcmVLZXlib2FyZFVJTW9kZS5oPgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAg
ICBjbGFzcyBFbGVtZW50OwotICAgIGNsYXNzIEZyYW1lOwotICAgIGNsYXNzIEhpc3RvcnlJdGVt
OwotICAgIGNsYXNzIEtVUkw7Ci0gICAgY2xhc3MgS2V5Ym9hcmRFdmVudDsKLSAgICBjbGFzcyBQ
YWdlOwotICAgIGNsYXNzIFJlbmRlckJveDsKLSAgICBjbGFzcyBOb2RlOworY2xhc3MgRWxlbWVu
dDsKK2NsYXNzIEV2ZW50OworY2xhc3MgRnJhbWU7CitjbGFzcyBIaXN0b3J5SXRlbTsKK2NsYXNz
IEtVUkw7CitjbGFzcyBLZXlib2FyZEV2ZW50OworY2xhc3MgUGFnZTsKK2NsYXNzIFJlbmRlckJv
eDsKK2NsYXNzIE5vZGU7CitzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmU7CiB9CiAjZW5kaWYK
IApAQCAtNTksNiArNjUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXZWJDb3JlOjpGaW5k
T3B0aW9ucyBjb3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyBvcHRpb25zKTsKIAorI2lmIFVTRShE
SUNUQVRJT05fQUxURVJOQVRJVkVTKQorT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7Cisj
ZW5kaWYKKwogQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3RWRpdGluZ0V4dHJhcykKIC0gKEJP
T0wpX3Nob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KERPTVJhbmdlICopY3VycmVudFJhbmdl
IHRvRE9NUmFuZ2U6KERPTVJhbmdlICopcHJvcG9zZWRSYW5nZSBhZmZpbml0eTooTlNTZWxlY3Rp
b25BZmZpbml0eSlzZWxlY3Rpb25BZmZpbml0eSBzdGlsbFNlbGVjdGluZzooQk9PTClmbGFnOwog
QGVuZApAQCAtOTUsNiArMTA1LDE4IEBAIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25z
KFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpOwogLSAodm9pZClfc2NoZWR1bGVHbGliQ29udGV4dEl0
ZXJhdGlvbnM7CiAjZW5kaWYKIAorI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKy0gKHZv
aWQpaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6KE5TU3RyaW5nKil0ZXh0OworI2VuZGlm
CisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKy0gKHZvaWQpX2dldFdlYkNvcmVE
aWN0YXRpb25BbHRlcm5hdGl2ZXM6KFZlY3RvcjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2
ZT4mKWFsdGVybmF0aXZlcyBmcm9tVGV4dEFsdGVybmF0aXZlczooY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mKWFsdGVybmF0aXZlc1dpdGhSYW5nZTsKKy0g
KHZvaWQpX3Nob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJOihjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmKWJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQgZm9yRGljdGF0aW9uQ29udGV4dDoodWludDY0
X3QpZGljdGF0aW9uQ29udGV4dDsKKy0gKHZvaWQpX2Rpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2
ZVVJOworLSAodm9pZClfcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOih1aW50NjRfdClkaWN0
YXRpb25Db250ZXh0OworLSAoVmVjdG9yPFN0cmluZz4pX2RpY3RhdGlvbkFsdGVybmF0aXZlczoo
dWludDY0X3QpZGljdGF0aW9uQ29udGV4dDsKKyNlbmRpZgorCiBAZW5kCiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDAyZjdiY2M0NTY3
ZDc2NWM3YmQzYTQzNGYyNTcyNmE2MTAzZTMxMzAuLjgyODliMTJjMTg4YmVkYWYwNTEwNDZmYTY4
MjIyNzUyZWU5OGRkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2
YXRlLmgKQEAgLTY4Nyw5ICs2ODcsNiBAQCBDb3VsZCBiZSB3b3J0aCBhZGRpbmcgdG8gdGhlIEFQ
SS4KIC0gKHZvaWQpc2V0QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZDooQk9PTClm
bGFnOwogLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb246KGlkKXNlbmRl
cjsKICNlbmRpZgotI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKLS0gKHZvaWQpaGFuZGxlQ29ycmVjdGlvblBhbmVs
UmVzdWx0OihOU1N0cmluZyopcmVzdWx0OwotI2VuZGlmCiBAZW5kCiAKIEBpbnRlcmZhY2UgV2Vi
VmlldyAoV2ViVmlld0VkaXRpbmdJbk1haWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtVHlwZXMuaAppbmRleCBhMzUzNmQ5NmQ3ZjNmOTJj
YzNmOTQ4MGMyZjllMzA3MjE5NTFkMDM5Li5iMzI2Nzk0ZGU4NzA5YzQ3ZTI4ZGQ4ODE3ZTM0OTUz
MTFlOGY4MmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tDb250
ZXh0TWVudUl0ZW1UeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Nv
bnRleHRNZW51SXRlbVR5cGVzLmgKQEAgLTg4LDYgKzg4LDcgQEAgZW51bSB7CiAgICAga1dLQ29u
dGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQsCiAgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnUERG
U2luZ2xlUGFnZVNjcm9sbGluZywKICAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdQREZGYWNpbmdQ
YWdlc1Njcm9sbGluZywKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5h
dGl2ZSwKICAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCwKICAgICBrV0tD
b250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSwKICAgICBrV0tDb250ZXh0TWVudUl0
ZW1UYWdUZXh0RGlyZWN0aW9uRGVmYXVsdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9XS1NoYXJlZEFQSUNhc3QuaAppbmRleCA1ZTRiZjY5ZmZiNjcyZGU5Y2U2ZGU0ZGEwNjJlODgz
N2RmMWVjMjFiLi5mZDFhODk2NzVhNmQwM2IxOWQ0OGVhZGM1Zjk3NWQ5MTEyOTZjMzcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCkBAIC00MTQs
NiArNDE0LDggQEAgaW5saW5lIFdLQ29udGV4dE1lbnVJdGVtVGFnIHRvQVBJKFdlYkNvcmU6OkNv
bnRleHRNZW51QWN0aW9uIGFjdGlvbikKICAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRl
bVRhZ1BERlNpbmdsZVBhZ2VTY3JvbGxpbmc7CiAgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1UYWdQREZGYWNpbmdQYWdlc1Njcm9sbGluZzoKICAgICAgICAgcmV0dXJuIGtXS0NvbnRl
eHRNZW51SXRlbVRhZ1BERkZhY2luZ1BhZ2VzU2Nyb2xsaW5nOworICAgIGNhc2UgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnRGljdGF0aW9uQWx0ZXJuYXRpdmU6CisgICAgICAgIHJldHVybiBr
V0tDb250ZXh0TWVudUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5hdGl2ZTsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1l
bnQ6CiAgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudDsK
QEAgLTU5Miw2ICs1OTQsOCBAQCBpbmxpbmUgV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24gdG9J
bXBsKFdLQ29udGV4dE1lbnVJdGVtVGFnIHRhZykKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVRhZ1BERlNpbmdsZVBhZ2VTY3JvbGxpbmc7CiAgICAgY2FzZSBrV0tDb250
ZXh0TWVudUl0ZW1UYWdQREZGYWNpbmdQYWdlc1Njcm9sbGluZzoKICAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1BERkZhY2luZ1BhZ2VzU2Nyb2xsaW5nOworICAgIGNh
c2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnRGljdGF0aW9uQWx0ZXJuYXRpdmU6CisgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5hdGl2ZTsKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnSW5zcGVj
dEVsZW1lbnQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdJbnNw
ZWN0RWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKaW5kZXggM2NiNTdiMDEzMzJkZmQ5ZDFjYTM0NDFmZDZlZDUzYjg4MmU2Yzc1ZS4u
NTQyZmQzZmY4YzcyNDkwMGYxZmY2NzczZjhiNWVjNjRlNTNmZDllYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0NyZWRlbnRpYWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0N1
cnNvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VEZXRhaWxzLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ1Nl
c3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZUNob29zZXIuaD4KQEAgLTUyNSw2ICs1MjYsMjQgQEAgYm9vbCBBcmd1bWVudENvZGVyPERh
dGFiYXNlRGV0YWlscz46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIERhdGFiYXNl
RGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVyPERpY3RhdGlvbkFs
dGVybmF0aXZlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgRGljdGF0
aW9uQWx0ZXJuYXRpdmUmIGRpY3RhdGlvbkFsdGVybmF0aXZlKQoreworICAgIGVuY29kZXItPmVu
Y29kZShkaWN0YXRpb25BbHRlcm5hdGl2ZS5yYW5nZVN0YXJ0KTsKKyAgICBlbmNvZGVyLT5lbmNv
ZGUoZGljdGF0aW9uQWx0ZXJuYXRpdmUucmFuZ2VMZW5ndGgpOworICAgIGVuY29kZXItPmVuY29k
ZShkaWN0YXRpb25BbHRlcm5hdGl2ZS5kaWN0YXRpb25Db250ZXh0KTsKK30KKworYm9vbCBBcmd1
bWVudENvZGVyPERpY3RhdGlvbkFsdGVybmF0aXZlPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwgRGljdGF0aW9uQWx0ZXJuYXRpdmUmIGRpY3RhdGlvbkFsdGVybmF0aXZlKQorewor
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRpY3RhdGlvbkFsdGVybmF0aXZlLnJhbmdlU3RhcnQp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZGljdGF0
aW9uQWx0ZXJuYXRpdmUucmFuZ2VMZW5ndGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUoZGljdGF0aW9uQWx0ZXJuYXRpdmUuZGljdGF0aW9uQ29udGV4
dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogCiB2b2lk
IEFyZ3VtZW50Q29kZXI8RmlsZUNob29zZXJTZXR0aW5ncz46OmVuY29kZShBcmd1bWVudEVuY29k
ZXIqIGVuY29kZXIsIGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmIHNldHRpbmdzKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDI2OTc0
MDhlZDU2ZWQ2ZDEzNjNmODQzYTYyMDRmYjk3NDBjNjkyODUuLmRiMmI4Zjc0MWVjMmEzMWFjYmRj
MTI3YzQxNzFmOWNiMzdkNDU5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwog
ICAgIHN0cnVjdCBDb21wb3NpdGlvblVuZGVybGluZTsKKyAgICBzdHJ1Y3QgRGljdGF0aW9uQWx0
ZXJuYXRpdmU7CiAgICAgc3RydWN0IERyYWdTZXNzaW9uOwogICAgIHN0cnVjdCBGaWxlQ2hvb3Nl
clNldHRpbmdzOwogICAgIHN0cnVjdCBHcmFtbWFyRGV0YWlsOwpAQCAtMjA5LDYgKzIxMCwxMSBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkRhdGFiYXNlRGV0YWls
cz4gewogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpE
YXRhYmFzZURldGFpbHMmKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmUmKTsK
KyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6RGljdGF0
aW9uQWx0ZXJuYXRpdmUmKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncz4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShB
cmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJik7CiAg
ICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkZpbGVDaG9v
c2VyU2V0dGluZ3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9Q
YWdlQ2xpZW50SW1wbC5oCmluZGV4IDUyZGQwNTBiODYwZjZlNmRkZTkyYjkwZThiZjhhZjQ4NDE0
MmY3YzQuLmFjMDc0ZThjYzU1NzI4NDQxODJhYTU5MzVjMTA0OWVlZjdjN2Q1NGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaApAQCAt
MzMsOCArMzMsMTEgQEAKIEBjbGFzcyBXS0VkaXRvclVuZG9UYXJnZXRPYmpDOwogQGNsYXNzIFdL
VmlldzsKIAotbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBB
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI7Cit9CiAKK25hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgRmluZEluZGljYXRvcldpbmRvdzsKIAogY2xhc3MgUGFnZUNsaWVudEltcGwgOiBwdWJsaWMg
UGFnZUNsaWVudCB7CkBAIC0xMzAsMTEgKzEzMywyMiBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCBXS1ZpZXcqIHdrVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fd2tWaWV3OyB9CiAKKyNpZiBVU0Uo
RElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICB2aXJ0dWFsIHVpbnQ2NF90IGFkZERpY3RhdGlv
bkFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpOworICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0
aW9uQ29udGV4dCk7CisgICAgdmlydHVhbCB2b2lkIHNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJ
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWlu
dDY0X3QgZGljdGF0aW9uQ29udGV4dCk7CisgICAgdmlydHVhbCB2b2lkIGRpc21pc3NEaWN0YXRp
b25BbHRlcm5hdGl2ZVVJKCk7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25B
bHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCk7CisjZW5kaWYKKwogICAgIFdL
VmlldyogbV93a1ZpZXc7CiAgICAgUmV0YWluUHRyPFdLRWRpdG9yVW5kb1RhcmdldE9iakM+IG1f
dW5kb1RhcmdldDsKICNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgQ29ycmVjdGlv
blBhbmVsIG1fY29ycmVjdGlvblBhbmVsOwogI2VuZGlmCisjaWYgVVNFKERJQ1RBVElPTl9BTFRF
Uk5BVElWRVMpCisgICAgT3duUHRyPFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
cj4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvUGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9Q
YWdlQ2xpZW50SW1wbC5tbQppbmRleCA3ODNjMzI4MDA5MGU5NmRjYjU0NDlkNWQzMzE0YThkNjcy
YjBmMWU5Li44ZDA5MTNlNTJjODNmYzE1NmE1Nzg4YTUxZTg0NzJmYmE3N2VkMzc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQpA
QCAtMjYsNiArMjYsOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJQYWdlQ2xpZW50
SW1wbC5oIgogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisjaW1wb3J0IDxBcHBL
aXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CisjZW5kaWYKICNpbXBvcnQgIkNvbG9yU3BhY2VEYXRh
LmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJEaWN0aW9uYXJ5UG9wdXBJ
bmZvLmgiCkBAIC0zOCw2ICs0MSw3IEBACiAjaW1wb3J0ICJXZWJDb250ZXh0TWVudVByb3h5TWFj
LmgiCiAjaW1wb3J0ICJXZWJFZGl0Q29tbWFuZFByb3h5LmgiCiAjaW1wb3J0ICJXZWJQb3B1cE1l
bnVQcm94eU1hYy5oIgorI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
Q3Vyc29yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgpAQCAtMTIzLDYgKzEyNyw5
IEBAIFBhc3NPd25QdHI8UGFnZUNsaWVudEltcGw+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGUoV0tW
aWV3KiB3a1ZpZXcpCiBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV0tWaWV3KiB3a1Zp
ZXcpCiAgICAgOiBtX3drVmlldyh3a1ZpZXcpCiAgICAgLCBtX3VuZG9UYXJnZXQoQWRvcHROUywg
W1tXS0VkaXRvclVuZG9UYXJnZXRPYmpDIGFsbG9jXSBpbml0XSkKKyNpZiBVU0UoRElDVEFUSU9O
X0FMVEVSTkFUSVZFUykKKyAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKGFkb3B0
UHRyKG5ldyBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIpKQorI2VuZGlmCiB7CiB9CiAKQEAg
LTIxNSwxMCArMjIyLDEzIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnByb2Nlc3NEaWRDcmFzaCgp
CiB7CiAgICAgW21fd2tWaWV3IF9wcm9jZXNzRGlkQ3Jhc2hdOwogfQotICAgIAorCiB2b2lkIFBh
Z2VDbGllbnRJbXBsOjpwYWdlQ2xvc2VkKCkKIHsKICAgICBbbV93a1ZpZXcgX3BhZ2VDbG9zZWRd
OworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIG1fYWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyLT5jbGVhcigpOworI2VuZGlmCiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6
OmRpZFJlbGF1bmNoUHJvY2VzcygpCkBAIC01MzUsNCArNTQ1LDM1IEBAIGJvb2wgUGFnZUNsaWVu
dEltcGw6OmV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0
b3JTdHJpbmcpCiAgICAgcmV0dXJuIFttX3drVmlldyBfZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2Vs
ZWN0b3I6TlNTZWxlY3RvckZyb21TdHJpbmcoc2VsZWN0b3JTdHJpbmcpXTsKIH0KIAorI2lmIFVT
RShESUNUQVRJT05fQUxURVJOQVRJVkVTKQordWludDY0X3QgUGFnZUNsaWVudEltcGw6OmFkZERp
Y3RhdGlvbkFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYg
YWx0ZXJuYXRpdmVzKQoreworICAgIHJldHVybiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ci0+YWRkQWx0ZXJuYXRpdmVzKGFsdGVybmF0aXZlcyk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudElt
cGw6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0
KQoreworICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5yZW1vdmVBbHRlcm5hdGl2
ZXMoZGljdGF0aW9uQ29udGV4dCk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNob3dEaWN0
YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hP
ZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBpZiAoIWlz
Vmlld1Zpc2libGUoKSB8fCAhaXNWaWV3SW5XaW5kb3coKSkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5zaG93QWx0ZXJuYXRpdmVzKG1fd2tWaWV3
LCBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCBkaWN0YXRpb25Db250ZXh0LCBeKE5TU3RyaW5n
KiBhY2NlcHRlZEFsdGVybmF0aXZlKXsKKyAgICAgICAgW21fd2tWaWV3IGhhbmRsZUFjY2VwdGVk
QWx0ZXJuYXRpdmVUZXh0OmFjY2VwdGVkQWx0ZXJuYXRpdmVdOworICAgIH0pOworfQorCitWZWN0
b3I8U3RyaW5nPiBQYWdlQ2xpZW50SW1wbDo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90
IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgcmV0dXJuIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyLT5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGRpY3RhdGlvbkNvbnRleHQpOworfQorCit2
b2lkIFBhZ2VDbGllbnRJbXBsOjpkaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSSgpCit7Cisg
ICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmRpc21pc3NBbHRlcm5hdGl2ZXMoKTsK
K30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCAyOTI0NTUzZTIwNTc3N2U3NWExMGYzZGMyMzkx
MzFlMzMzNTY2Y2FiLi5lNDEyNWY5MzU1ZjNmMzRmMDFjMmY4OWFjNzM4NDBhMmE4YmQwNDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0yNiw2ICsy
NiwxMSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS1ZpZXcuaCIKIAorI2lmIFVT
RShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorI2ltcG9ydCA8QXBwS2l0L05TVGV4dEFsdGVybmF0
aXZlcy5oPgorI2ltcG9ydCA8QXBwS2l0L05TQXR0cmlidXRlZFN0cmluZy5oPgorI2VuZGlmCisK
ICNpbXBvcnQgIkF0dHJpYnV0ZWRTdHJpbmcuaCIKICNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgi
CiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCkBAIC03NCw2ICs3OSw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL1JlZ2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVX
aXRoUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TU3RyaW5nRXh0cmFzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVy
ZmFjZS5oPgpAQCAtMTE3Nyw3ICsxMTgzLDEyIEBAIHN0YXRpYyBjb25zdCBzaG9ydCBrSU9ISURF
dmVudFR5cGVTY3JvbGwgPSA2OwogICAgIE5TU3RyaW5nICp0ZXh0OwogICAgIGJvb2wgaXNGcm9t
SW5wdXRNZXRob2QgPSBfZGF0YS0+X3BhZ2UtPmVkaXRvclN0YXRlKCkuaGFzQ29tcG9zaXRpb247
CiAKKyAgICBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiBkaWN0YXRpb25BbHRlcm5h
dGl2ZXM7CisKICAgICBpZiAoaXNBdHRyaWJ1dGVkU3RyaW5nKSB7CisjaWYgVVNFKERJQ1RBVElP
Tl9BTFRFUk5BVElWRVMpCisgICAgICAgIGNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVz
KHN0cmluZywgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyNlbmRpZgogICAgICAgICAvLyBGSVhN
RTogV2UgaWdub3JlIG1vc3QgYXR0cmlidXRlcyBmcm9tIHRoZSBzdHJpbmcsIHNvIGZvciBleGFt
cGxlIGluc2VydGluZyBmcm9tIENoYXJhY3RlciBQYWxldHRlIGxvc2VzIGZvbnQgYW5kIGdseXBo
IHZhcmlhdGlvbiBkYXRhLgogICAgICAgICB0ZXh0ID0gW3N0cmluZyBzdHJpbmddOwogICAgIH0g
ZWxzZQpAQCAtMTE5OSw3ICsxMjEwLDExIEBAIHN0YXRpYyBjb25zdCBzaG9ydCBrSU9ISURFdmVu
dFR5cGVTY3JvbGwgPSA2OwogCiAgICAgU3RyaW5nIGV2ZW50VGV4dCA9IHRleHQ7CiAgICAgZXZl
bnRUZXh0LnJlcGxhY2UoTlNCYWNrVGFiQ2hhcmFjdGVyLCBOU1RhYkNoYXJhY3Rlcik7IC8vIHNh
bWUgdGhpbmcgaXMgZG9uZSBpbiBLZXlFdmVudE1hYy5tbSBpbiBXZWJDb3JlCi0gICAgYm9vbCBl
dmVudEhhbmRsZWQgPSBfZGF0YS0+X3BhZ2UtPmluc2VydFRleHQoZXZlbnRUZXh0LCByZXBsYWNl
bWVudFJhbmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKHJlcGxhY2VtZW50UmFuZ2UpKTsKKyAgICBi
b29sIGV2ZW50SGFuZGxlZDsKKyAgICBpZiAoIWRpY3RhdGlvbkFsdGVybmF0aXZlcy5pc0VtcHR5
KCkpCisgICAgICAgIGV2ZW50SGFuZGxlZCA9IF9kYXRhLT5fcGFnZS0+aW5zZXJ0RGljdGF0ZWRU
ZXh0KGV2ZW50VGV4dCwgcmVwbGFjZW1lbnRSYW5nZS5sb2NhdGlvbiwgTlNNYXhSYW5nZShyZXBs
YWNlbWVudFJhbmdlKSwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyAgICBlbHNlCisgICAgICAg
IGV2ZW50SGFuZGxlZCA9IF9kYXRhLT5fcGFnZS0+aW5zZXJ0VGV4dChldmVudFRleHQsIHJlcGxh
Y2VtZW50UmFuZ2UubG9jYXRpb24sIE5TTWF4UmFuZ2UocmVwbGFjZW1lbnRSYW5nZSkpOwogCiAg
ICAgaWYgKHBhcmFtZXRlcnMpCiAgICAgICAgIHBhcmFtZXRlcnMtPmV2ZW50SW50ZXJwcmV0YXRp
b25IYWRTaWRlRWZmZWN0cyB8PSBldmVudEhhbmRsZWQ7CkBAIC0xNDUxLDcgKzE0NjYsNyBAQCBz
dGF0aWMgY29uc3Qgc2hvcnQga0lPSElERXZlbnRUeXBlU2Nyb2xsID0gNjsKICAgICBpZiAoIXZh
bGlkQXR0cmlidXRlcykgewogICAgICAgICB2YWxpZEF0dHJpYnV0ZXMgPSBbW05TQXJyYXkgYWxs
b2NdIGluaXRXaXRoT2JqZWN0czoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TVW5kZXJs
aW5lU3R5bGVBdHRyaWJ1dGVOYW1lLCBOU1VuZGVybGluZUNvbG9yQXR0cmlidXRlTmFtZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5TTWFya2VkQ2xhdXNlU2VnbWVudEF0dHJpYnV0ZU5h
bWUsIG5pbF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICBOU01hcmtlZENsYXVzZVNlZ21l
bnRBdHRyaWJ1dGVOYW1lLCBOU1RleHRBbHRlcm5hdGl2ZXNBdHRyaWJ1dGVOYW1lLCBuaWxdOwog
ICAgICAgICAvLyBOU1RleHQgYWxzbyBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMs
IGJ1dCBpdCdzCiAgICAgICAgIC8vIGhhcmQgdG8gdGVsbCB3aGljaCBhcmUgcmVhbGx5IHJlcXVp
cmVkIGZvciB0ZXh0IGlucHV0IHRvCiAgICAgICAgIC8vIHdvcmsgd2VsbDsgSSBoYXZlIG5vdCBz
ZWVuIGFueSBpbnB1dCBtZXRob2QgbWFrZSB1c2Ugb2YgdGhlbSB5ZXQuCkBAIC0yOTA2LDkgKzI5
MjEsOSBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5T
U3RyaW5nICpwYXRoKQogICAgIHJldHVybiBfZGF0YS0+X3NwZWxsQ2hlY2tlckRvY3VtZW50VGFn
OwogfQogCi0tICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDooTlNTdHJpbmcqKXJl
c3VsdAorLSAodm9pZCloYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDooTlNTdHJpbmcqKXRl
eHQKIHsKLSAgICBfZGF0YS0+X3BhZ2UtPmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHJl
c3VsdCk7CisgICAgX2RhdGEtPl9wYWdlLT5oYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdCh0
ZXh0KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlld0ludGVybmFsLmgKaW5kZXggMDhjZmYxNDBjZmZhODAxYTBmMzMyYmM4ZDI3NzQ0NThm
Yjk0MDkyZC4uMDliOWM4Y2YxZDE2YTdiOTcwYjJjY2UyYmRlMzIyN2IzODJmNzk0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCkBA
IC05OSw1ICs5OSw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogLSAodm9pZClfY2FjaGVXaW5kb3dC
b3R0b21Db3JuZXJSZWN0OwogCiAtIChOU0ludGVnZXIpc3BlbGxDaGVja2VyRG9jdW1lbnRUYWc7
Ci0tICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDooTlNTdHJpbmcqKXJlc3VsdDsK
Ky0gKHZvaWQpaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6KE5TU3RyaW5nKil0ZXh0Owor
CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA2MjA1OGZkNDhi
OTNmZmE2YWQ1ZDBmYzJkMjMyYWZiNTUxMzBjN2NlLi43OTg1YjY4ZDkyZTEyN2FlZjZhNDFjZTc2
NThhMWVlNTc1ZWUwOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAg
LTM4LDYgKzM4LDcgQEAKIAogI2lmIFVTRShBUFBLSVQpCiBPQkpDX0NMQVNTIFdLVmlldzsKK09C
SkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtMjAxLDYg
KzIwMiwxMiBAQCBwdWJsaWM6CiAKICNpZiBVU0UoQVBQS0lUKQogICAgIHZpcnR1YWwgV0tWaWV3
KiB3a1ZpZXcoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHVpbnQ2NF90IGFkZERpY3RhdGlv
bkFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRp
Y3RhdGlvbkNvbnRleHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0RpY3RhdGlvbkFsdGVy
bmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRU
ZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
c21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKCkgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPFN0
cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0g
MDsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggYTg0YzQ2NzkzMWU1YTI3N2ZjMTg3ZDdmMjFjNjY5YTY3OWFjNmZkOC4uY2M5
ODBkMzE4ZWEzOTMzZmFhOTZiNDY3YmNhZGRiMGY0Njk3MGYyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM4MTEsNiArMzgxMSwyOSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJiBy
ZXN1bHQpCiAgICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxl
QWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0KSwgbV9wYWdlSUQsIDApOwogI2VuZGlmCiB9
CisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpz
aG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5k
aW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAg
bV9wYWdlQ2xpZW50LT5zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShib3VuZGluZ0JveE9mRGlj
dGF0ZWRUZXh0LCBkaWN0YXRpb25Db250ZXh0KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRp
c21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKCkKK3sKKyAgICBtX3BhZ2VDbGllbnQtPmRpc21p
c3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZW1v
dmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAg
ICBtX3BhZ2VDbGllbnQtPnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyhkaWN0YXRpb25Db250
ZXh0KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50
NjRfdCBkaWN0YXRpb25Db250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KQoreworICAgIHJl
c3VsdCA9IG1fcGFnZUNsaWVudC0+ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRl
eHQpOworfQorI2VuZGlmCisKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDZk
OTg1OThmZmVjNDhkY2NmYTdiNWQ3YmE5ZWExM2IzMTUzNmNhYjguLjY5Zjk4ODE5MTBkMDRiZTJl
NTA5Y2ZjYzRiMDBlNjAyNTNjOWNiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTU4LDYgKzU4LDkgQEAKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5o
IgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZENsaWVudC5oIgogI2luY2x1ZGUgIldlYlVJQ2xp
ZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EcmFnU2Vzc2lv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KQEAgLTk1LDYg
Kzk4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEludFNpemU7CiAgICAgY2xh
c3MgUHJvdGVjdGlvblNwYWNlOwogICAgIHN0cnVjdCBGaWxlQ2hvb3NlclNldHRpbmdzOworICAg
IHN0cnVjdCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U7CiAgICAgc3RydWN0IFRleHRDaGVja2lu
Z1Jlc3VsdDsKICAgICBzdHJ1Y3QgVmlld3BvcnRBdHRyaWJ1dGVzOwogICAgIHN0cnVjdCBXaW5k
b3dGZWF0dXJlczsKQEAgLTM1Myw2ICszNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25maXJt
Q29tcG9zaXRpb24oKTsKICAgICB2b2lkIGNhbmNlbENvbXBvc2l0aW9uKCk7CiAgICAgYm9vbCBp
bnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0
YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kKTsKKyAgICBib29sIGluc2VydERpY3Rh
dGVkVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFy
dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAgICAgdm9p
ZCBnZXRNYXJrZWRSYW5nZSh1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpOwog
ICAgIHZvaWQgZ2V0U2VsZWN0ZWRSYW5nZSh1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBs
ZW5ndGgpOwogICAgIHZvaWQgZ2V0QXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSh1aW50NjRf
dCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBBdHRyaWJ1dGVkU3RyaW5nJik7CkBAIC05MDIs
NiArOTA3LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29v
bihpbnQzMl90IHJlYXNvbiwgU3RyaW5nJiByZXN1bHQpOwogICAgIHZvaWQgcmVjb3JkQXV0b2Nv
cnJlY3Rpb25SZXNwb25zZShpbnQzMl90IHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBs
YWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CiAjZW5kaWYgLy8g
IWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorCisjaWYgVVNFKERJQ1RBVElPTl9B
TFRFUk5BVElWRVMpCisgICAgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRp
Y3RhdGlvbkNvbnRleHQpOworICAgIHZvaWQgZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUko
KTsKKyAgICB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRp
b25Db250ZXh0KTsKKyAgICB2b2lkIGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0
YXRpb25Db250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KTsKKyNlbmRpZgogI2VuZGlmIC8v
IFBMQVRGT1JNKE1BQykKIAogICAgIHZvaWQgY2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgppbmRleCBkZTYwYTcxNjZmNTRhODE4OTEzNTBlMDc1NDI1YTNhOTgzZTNlMGUzLi45Mzg1OGE4
MzJiYTk3MGI5ODNkYTVhYTEwNTY1MjM5MDk1MmY2NzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTI4MSw2ICsyODEsMTMg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBSZWNvcmRBdXRvY29ycmVjdGlvblJl
c3BvbnNlKGludDMyX3QgcmVzcG9uc2VUeXBlLCBTdHJpbmcgcmVwbGFjZWRTdHJpbmcsIFN0cmlu
ZyByZXBsYWNlbWVudFN0cmluZyk7CiAjZW5kaWYKIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJO
QVRJVkVTKQorICAgIFNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKFdlYkNvcmU6OkZsb2F0UmVj
dCBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQor
ICAgIERpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKCkKKyAgICBSZW1vdmVEaWN0YXRpb25B
bHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKKyAgICBEaWN0YXRpb25BbHRl
cm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgLT4gKFZlY3RvcjxTdHJpbmc+IGFs
dGVybmF0aXZlcykKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oV0lOKQogICAgICMgV2luZG93cyA3
IEdlc3R1cmUgTWVzc2FnZXMKICAgICBTZXRHZXN0dXJlUmVhY2hlZFNjcm9sbGluZ0xpbWl0KGJv
b2wgbGltaXRSZWFjaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9Db3JyZWN0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJl
Y3Rpb25QYW5lbC5tbQppbmRleCAyOTY4MWM3NGRhNmUwYjhkYjY3Nzk3NjlhNTYxZDdhMzNiZWMy
MmU3Li4zM2YzZmU5ODJjZmJlODQ0YjdhMDVkY2E4M2UwNjY2OGMwZjI0NjNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbQpAQCAtNDMsNiAr
NDMsOSBAQCBzdGF0aWMgaW5saW5lIE5TQ29ycmVjdGlvbkluZGljYXRvclR5cGUgY29ycmVjdGlv
bkluZGljYXRvclR5cGUoQWx0ZXJuYXRpdmVUZXh0VAogICAgICAgICByZXR1cm4gTlNDb3JyZWN0
aW9uSW5kaWNhdG9yVHlwZVJldmVyc2lvbjsKICAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5cGVT
cGVsbGluZ1N1Z2dlc3Rpb25zOgogICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uSW5kaWNhdG9y
VHlwZUd1ZXNzZXM7CisgICAgY2FzZSBBbHRlcm5hdGl2ZVRleHRUeXBlRGljdGF0aW9uQWx0ZXJu
YXRpdmVzOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBOU0NvcnJlY3Rpb25J
bmRpY2F0b3JUeXBlRGVmYXVsdDsKQEAgLTEzOCw3ICsxNDEsNyBAQCB2b2lkIENvcnJlY3Rpb25Q
YW5lbDo6aGFuZGxlQWNjZXB0ZWRSZXBsYWNlbWVudChOU1N0cmluZyogYWNjZXB0ZWRSZXBsYWNl
bWVudCwgTgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBbbV92aWV3LmdldCgpIGhhbmRs
ZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDphY2NlcHRlZFJlcGxhY2VtZW50XTsKKyAgICBbbV92aWV3
LmdldCgpIGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0OmFjY2VwdGVkUmVwbGFjZW1lbnRd
OwogICAgIG1fdmlldy5jbGVhcigpOwogICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQogICAg
ICAgICBtX3Jlc3VsdEZvckRpc21pc3NhbC5hZG9wdE5TKFthY2NlcHRlZFJlcGxhY2VtZW50IGNv
cHldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0KaW5kZXggZWE3ZTVlZjYzYTY3MTgyNmI4ODBkZTg0MDhmZjY0ZGMxNjdiYmI4Mi4uOTY3MTJi
ZjBjNTI3MzYyMjE3M2NlNTVjZTRlMDQ0ZWMzZmE2ZTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTM5LDcgKzM5LDkgQEAKICNp
bXBvcnQgIlRleHRDaGVja2VyLmgiCiAjaW1wb3J0ICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbXBv
cnQgIldlYlByb2Nlc3NQcm94eS5oIgorI2ltcG9ydCA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5h
dGl2ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKQEAgLTE5
OSw2ICsyMDEsMzUgQEAgYm9vbCBXZWJQYWdlUHJveHk6Omluc2VydFRleHQoY29uc3QgU3RyaW5n
JiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQKICAgICByZXR1cm4gaGFuZGxl
ZDsKIH0KIAorYm9vbCBXZWJQYWdlUHJveHk6Omluc2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVwbGFj
ZW1lbnRSYW5nZUVuZCwgY29uc3QgVmVjdG9yPFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGRp
Y3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZSkKK3sKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVS
TkFUSVZFUykKKyAgICBpZiAoZGljdGF0aW9uQWx0ZXJuYXRpdmVzV2l0aFJhbmdlLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIGluc2VydFRleHQodGV4dCwgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0
LCByZXBsYWNlbWVudFJhbmdlRW5kKTsKKworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4gZGljdGF0aW9u
QWx0ZXJuYXRpdmVzOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkaWN0YXRpb25BbHRl
cm5hdGl2ZXNXaXRoUmFuZ2Uuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgVGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlJiBhbHRlcm5hdGl2ZVdpdGhSYW5nZSA9IGRpY3RhdGlvbkFsdGVybmF0
aXZlc1dpdGhSYW5nZVtpXTsKKyAgICAgICAgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCA9IG1f
cGFnZUNsaWVudC0+YWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGFsdGVybmF0aXZlV2l0aFJhbmdl
LmFsdGVybmF0aXZlcyk7CisgICAgICAgIGlmIChkaWN0YXRpb25Db250ZXh0KQorICAgICAgICAg
ICAgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLmFwcGVuZChEaWN0YXRpb25BbHRlcm5hdGl2ZShhbHRl
cm5hdGl2ZVdpdGhSYW5nZS5yYW5nZS5sb2NhdGlvbiwgYWx0ZXJuYXRpdmVXaXRoUmFuZ2UucmFu
Z2UubGVuZ3RoLCBkaWN0YXRpb25Db250ZXh0KSk7CisgICAgfQorCisgICAgaWYgKGRpY3RhdGlv
bkFsdGVybmF0aXZlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBpbnNlcnRUZXh0KHRleHQs
IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCk7CisKKyAgICBib29s
IGhhbmRsZWQgPSB0cnVlOworICAgIHByb2Nlc3MoKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
Z2U6Okluc2VydERpY3RhdGVkVGV4dCh0ZXh0LCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxh
Y2VtZW50UmFuZ2VFbmQsIGRpY3RhdGlvbkFsdGVybmF0aXZlcyksIE1lc3NhZ2VzOjpXZWJQYWdl
OjpJbnNlcnREaWN0YXRlZFRleHQ6OlJlcGx5KGhhbmRsZWQsIG1fZWRpdG9yU3RhdGUpLCBtX3Bh
Z2VJRCk7CisgICAgcmV0dXJuIGhhbmRsZWQ7CisjZWxzZQorICAgIHJldHVybiBpbnNlcnRUZXh0
KHRleHQsIHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCk7CisjZW5k
aWYKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBsb2Nh
dGlvbiwgdWludDY0X3QmIGxlbmd0aCkKIHsKICAgICBsb2NhdGlvbiA9IE5TTm90Rm91bmQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAppbmRleCAyMDA3NjU4MzY4MDUzZmYy
YjJlZmJiMGEzNGJmZmZjZmI5ZDI5NzFhLi44MGFhOWE0ZTU4YTkzMGY4ZTA1Mjk0NjQxZDMzMjVj
MzdlMWI3ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAgLTM4
LDEwICszOCwxOCBAQCBwdWJsaWM6CiAgICAgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KFdlYlBh
Z2UgKik7CiAgICAgdmlydHVhbCB+V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCk7CiAgICAgdmly
dHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSBPVkVSUklERTsKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJ
T05fUEFORUwpCiAgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uQWx0ZXJuYXRpdmUoV2Vi
Q29yZTo6QWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3Vu
ZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRl
cm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRp
c21pc3NBbHRlcm5hdGl2ZShXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVU
ZXh0KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQWx0ZXJuYXRpdmVTb29u
KFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYkNvcmU6OkF1
dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSBPVkVSUklERTsKKyNlbmRpZgorI2lmIFVT
RShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93RGljdGF0aW9u
QWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0
YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSSgpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9u
Q29udGV4dCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25B
bHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgT1ZFUlJJREU7CisjZW5kaWYK
IHByaXZhdGU6CiAgICAgV2ViUGFnZSAqbV9wYWdlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwCmluZGV4IGFjMWRmYzU4M2E2NGFhMTIxMzY2Njlm
Mjk0YjJlNGZlZWZjOTBjMGEuLjFmY2VjOTExMzg1MmRhYTQxZjdhZDQ5MjM5ZmI1ODAwYjQ1YWQ5
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcApA
QCAtNTEsMzQgKzUxLDUxIEBAIHZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpwYWdlRGVz
dHJveWVkKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAorI2lmIFVTRShBVVRPQ09SUkVDVElPTl9Q
QU5FTCkKIHZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpzaG93Q29ycmVjdGlvbkFsdGVy
bmF0aXZlKEFsdGVybmF0aXZlVGV4dFR5cGUgdHlwZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGlu
Z0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5h
dGl2ZVJlcGxhY2VtZW50U3RyaW5ncykKIHsKLSNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwp
CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb3JyZWN0aW9u
UGFuZWwodHlwZSwgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCByZXBsYWNlZFN0cmluZywg
cmVwbGFjZW1lbnRTdHJpbmcsIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSk7Ci0jZW5k
aWYKIH0KIAogdm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NBbHRlcm5hdGl2
ZShSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0IHJlYXNvbikKIHsKLSNpZiBVU0Uo
QVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpc21pc3NDb3JyZWN0aW9uUGFuZWwocmVhc29uKSk7Ci0jZW5kaWYKIH0KIAogU3Ry
aW5nIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0aXZlU29vbihSZWFz
b25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0IHJlYXNvbikKIHsKICAgICBTdHJpbmcgcmVz
dWx0OwotI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICBtX3BhZ2UtPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKHJlYXNv
biksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uOjpS
ZXBseShyZXN1bHQpKTsKLSNlbmRpZgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9j
b3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKIHsKLSNpZiBVU0UoQVVU
T0NPUlJFQ1RJT05fUEFORUwpCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UocmVzcG9uc2VUeXBlLCByZXBsYWNlZFN0
cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpKTsKK30KICNlbmRpZgorCisjaWYgVVNFKERJQ1RBVElP
Tl9BTFRFUk5BVElWRVMpCit2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVtb3ZlRGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlbW92ZURpY3RhdGlvbkFsdGVybmF0
aXZlcyhkaWN0YXRpb25Db250ZXh0KSk7CiB9CiAKK3ZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50OjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
IGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dEaWN0YXRpb25B
bHRlcm5hdGl2ZVVJKGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIGRpY3RhdGlvbkNvbnRleHQp
KTsKK30KKwordm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NEaWN0YXRpb25B
bHRlcm5hdGl2ZVVJKCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoKSk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+
IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90
IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OworICAgIG1f
cGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGljdGF0aW9uQWx0ZXJuYXRp
dmVzKGRpY3RhdGlvbkNvbnRleHQpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWN0YXRpb25B
bHRlcm5hdGl2ZXM6OlJlcGx5KHJlc3VsdCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5k
aWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IDE1ZGE3ZjVmMTViYTYyZmJkYzA3Yjg3NmY3ODNkZDRhMmRkMDE0NDguLmNiODdmMGUyYjg1MzZk
Y2UxYjI0ZGQ5Mjk3ZGZjZTcxNGUyNGExOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIlNhbmRib3hF
eHRlbnNpb24uaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXZWJV
bmRvU3RlcC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KQEAgLTQxOSw3ICs0MjAsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQoY29uc3Qg
V2ViS2l0OjpXZWJNb3VzZUV2ZW50JiwgYm9vbCYgcmVzdWx0KTsKICAgICB2b2lkIGFjY2VwdHNG
aXJzdE1vdXNlKGludCBldmVudE51bWJlciwgY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW50Jiwg
Ym9vbCYgcmVzdWx0KTsKICAgICBib29sIHBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxl
Y3Rvcihjb25zdCBTdHJpbmcmKTsKLQorICAgIHZvaWQgaW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0
IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCBy
ZXBsYWNlbWVudFJhbmdlRW5kLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJu
YXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9vbCYgaGFuZGxlZCwgRWRp
dG9yU3RhdGUmIG5ld1N0YXRlKTsKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkIGNvbmZp
cm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nKTsKICAgICB2b2lk
IHNldENvbXBvc2l0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgY29u
c3QgV1RGOjpWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVz
LCB1aW50NjRfdCBjdXJzb3JQb3NpdGlvbik7CkBAIC01MDQsNyArNTA1LDYgQEAgcHVibGljOgog
CiAgICAgdm9pZCB1bm1hcmtBbGxNaXNzcGVsbGluZ3MoKTsKICAgICB2b2lkIHVubWFya0FsbEJh
ZEdyYW1tYXIoKTsKLQogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
U05PV19MRU9QQVJEKQogICAgIHZvaWQgaGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29u
c3QgU3RyaW5nJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggM2IwY2VkYzRhYzg4MTA1MjYyMDBj
M2E0YzNlZjRmYzBiNWM1ODhiYS4uMDk0ZTM3OTRiZDRhZWUyOTQxZWNjMjBiMDRiZjU3MDNlZWNk
MTRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KQEAgLTI1MCw2ICsyNTAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
IHsKICAgICBFeGVjdXRlS2V5cHJlc3NDb21tYW5kcyhWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3ND
b21tYW5kPiBzYXZlZENvbW1hbmRzKSAtPiAoYm9vbCBoYW5kbGVkLCBXZWJLaXQ6OkVkaXRvclN0
YXRlIG5ld1N0YXRlKQogICAgIFNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudChXZWJLaXQ6
OldlYk1vdXNlRXZlbnQgZXZlbnQpIC0+IChib29sIHJlc3VsdCkKICAgICBBY2NlcHRzRmlyc3RN
b3VzZShpbnQgZXZlbnROdW1iZXIsIFdlYktpdDo6V2ViTW91c2VFdmVudCBldmVudCkgLT4gKGJv
b2wgcmVzdWx0KQorICAgIEluc2VydERpY3RhdGVkVGV4dChXVEY6OlN0cmluZyB0ZXh0LCB1aW50
NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQs
IFdURjo6VmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiBkaWN0YXRpb25BbHRl
cm5hdGl2ZXMpIC0+IChib29sIGhhbmRsZWQsIFdlYktpdDo6RWRpdG9yU3RhdGUgbmV3U3RhdGUp
CiAjZW5kaWYKICNpZiBQTEFURk9STShXSU4pCiAgICAgLy8gRklYTUU6IFVuaWZ5IHdpdGggTWFj
IGNvdW50ZXJwYXJ0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA5ZTBjMTM3NzVkMjZmMDBjZjJkODk3OGI2YzdmZmE5
MjFhZmFkY2U0Li4yMmVlZGU4NDM1MGVlODlmMzU5NzQzYjg2ZGZmY2Q3MDUyNmU3NTZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCkBAIC0yOTAsNiArMjkwLDIxIEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0VGV4dChjb25zdCBT
dHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWluCiAgICAgbmV3
U3RhdGUgPSBlZGl0b3JTdGF0ZSgpOwogfQogCit2b2lkIFdlYlBhZ2U6Omluc2VydERpY3RhdGVk
VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwg
dWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkRpY3Rh
dGlvbkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGJvb2wmIGhh
bmRsZWQsIEVkaXRvclN0YXRlJiBuZXdTdGF0ZSkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKworICAgIGlmIChy
ZXBsYWNlbWVudFJhbmdlU3RhcnQgIT0gTlNOb3RGb3VuZCkgeworICAgICAgICBSZWZQdHI8UmFu
Z2U+IHJlcGxhY2VtZW50UmFuZ2UgPSBjb252ZXJ0VG9SYW5nZShmcmFtZSwgTlNNYWtlUmFuZ2Uo
cmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdlRW5kIC0gcmVwbGFjZW1lbnRS
YW5nZVN0YXJ0KSk7CisgICAgICAgIGlmIChyZXBsYWNlbWVudFJhbmdlKQorICAgICAgICAgICAg
ZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihyZXBsYWNl
bWVudFJhbmdlLmdldCgpLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOworICAgIH0KKworICAgIEFT
U0VSVCghZnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKTsKKyAgICBoYW5kbGVkID0g
ZnJhbWUtPmVkaXRvcigpLT5pbnNlcnREaWN0YXRlZFRleHQodGV4dCwgZGljdGF0aW9uQWx0ZXJu
YXRpdmVMb2NhdGlvbnMsIG1fa2V5Ym9hcmRFdmVudEJlaW5nSW50ZXJwcmV0ZWQpOworICAgIG5l
d1N0YXRlID0gZWRpdG9yU3RhdGUoKTsKK30KKwogdm9pZCBXZWJQYWdlOjpnZXRNYXJrZWRSYW5n
ZSh1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpCiB7CiAgICAgbG9jYXRpb24g
PSBOU05vdEZvdW5kOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGI1N2RhOTQ4OThkYjU2NGUxOGY1ODUxNDhkZDg0NDQyZjVjYWVmZmEuLjVlOWE2
MThmZWVlMTExYTk5NzU1MDJmODdmZDllOThhOTZlMDY1MGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0x
MSAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KKworICAgICAgICBNYXJrIHRleHQgd2l0aCB0ZXh0
IGFsdGVybmF0aXZlIHdpdGggYmx1ZSB1bmRlcmxpbmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENv
bnRyb2xsZXIubToKKyAgICAgICAgKCtbVGV4dElucHV0Q29udHJvbGxlciBpc1NlbGVjdG9yRXhj
bHVkZWRGcm9tV2ViU2NyaXB0Ol0pOgorICAgICAgICAoK1tUZXh0SW5wdXRDb250cm9sbGVyIHdl
YlNjcmlwdE5hbWVGb3JTZWxlY3RvcjpdKToKKyAgICAgICAgKC1bVGV4dElucHV0Q29udHJvbGxl
ciBkaWN0YXRlZFN0cmluZ1dpdGhQcmltYXJ5U3RyaW5nOmFsdGVybmF0aXZlOmFsdGVybmF0aXZl
T2Zmc2V0OmFsdGVybmF0aXZlTGVuZ3RoOl0pOgorCiAyMDEyLTA2LTExICBPamFuIFZhZmFpICA8
b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRG9uJ3QgY29uc2lkZXIgc2hvdyB3YXJuaW5n
cyBpbiB0aGUgZ2FyZGVuLW8tbWF0aWMgVUkgZm9yIG5vbi1sYXlvdXQgdGVzdCBmYWlsdXJlcwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXIu
bSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyLm0KaW5kZXgg
Zjc4MDc5NDQ2MzY5ZTc4YzlmNDhjZTA4MTVlZjFjY2M4ZGYwYjk5ZC4uYWZlYjE2ZTRkMjQyYjJi
NjAyMGMwMmU0NDFhZTgzZDc0MGU5MzJmMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXIubQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVGV4dElucHV0Q29udHJvbGxlci5tCkBAIC0zMSw2ICszMSwxMCBAQAogCiAjaW1wb3J0ICJE
dW1wUmVuZGVyVHJlZU1hYy5oIgogI2ltcG9ydCA8QXBwS2l0L05TSW5wdXRNYW5hZ2VyLmg+Cisj
aWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
U05PV19MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MSU9OKQorI2RlZmluZSBTVVBQ
T1JUX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMKKyNpbXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5h
dGl2ZXMuaD4KKyNlbmRpZgogI2ltcG9ydCA8V2ViS2l0L1dlYkRvY3VtZW50Lmg+CiAjaW1wb3J0
IDxXZWJLaXQvV2ViRnJhbWUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZVByaXZhdGUuaD4K
QEAgLTE3MCw3ICsxNzQsOCBAQCArIChCT09MKWlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3Jp
cHQ6KFNFTClhU2VsZWN0b3IKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Io
Y2hhcmFjdGVySW5kZXhGb3JQb2ludFg6WTopCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0g
QHNlbGVjdG9yKHZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQpCiAgICAgICAgICAgICB8fCBh
U2VsZWN0b3IgPT0gQHNlbGVjdG9yKGF0dHJpYnV0ZWRTdHJpbmdXaXRoU3RyaW5nOikKLSAgICAg
ICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc2V0SW5wdXRNZXRob2RIYW5kbGVyOikp
CisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNldElucHV0TWV0aG9kSGFu
ZGxlcjopCisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGRpY3RhdGVkU3Ry
aW5nV2l0aFByaW1hcnlTdHJpbmc6YWx0ZXJuYXRpdmU6YWx0ZXJuYXRpdmVPZmZzZXQ6YWx0ZXJu
YXRpdmVMZW5ndGg6KSkKICAgICAgICAgcmV0dXJuIE5POwogICAgIHJldHVybiBZRVM7CiB9CkBA
IC0xOTQsNyArMTk5LDkgQEAgKyAoTlNTdHJpbmcgKil3ZWJTY3JpcHROYW1lRm9yU2VsZWN0b3I6
KFNFTClhU2VsZWN0b3IKICAgICBlbHNlIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGF0dHJp
YnV0ZWRTdHJpbmdXaXRoU3RyaW5nOikpCiAgICAgICAgIHJldHVybiBAIm1ha2VBdHRyaWJ1dGVk
U3RyaW5nIjsgLy8ganVzdCBhIGZhY3RvcnkgbWV0aG9kLCBkb2Vzbid0IGNhbGwgaW50byBOU1Rl
eHRJbnB1dAogICAgIGVsc2UgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc2V0SW5wdXRNZXRo
b2RIYW5kbGVyOikpCi0gICAgICAgIHJldHVybiBAInNldElucHV0TWV0aG9kSGFuZGxlciI7IAor
ICAgICAgICByZXR1cm4gQCJzZXRJbnB1dE1ldGhvZEhhbmRsZXIiOworICAgIGVsc2UgaWYgKGFT
ZWxlY3RvciA9PSBAc2VsZWN0b3IoZGljdGF0ZWRTdHJpbmdXaXRoUHJpbWFyeVN0cmluZzphbHRl
cm5hdGl2ZTphbHRlcm5hdGl2ZU9mZnNldDphbHRlcm5hdGl2ZUxlbmd0aDopKQorICAgICAgICBy
ZXR1cm4gQCJtYWtlRGljdGF0ZWRTdHJpbmciOwogCiAgICAgcmV0dXJuIG5pbDsKIH0KQEAgLTM3
NSw2ICszODIsMjcgQEAgLSAoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqKWF0dHJpYnV0ZWRT
dHJpbmdXaXRoU3RyaW5nOihOU1N0cmluZyAqKWFTdHJpbmcKICAgICByZXR1cm4gW1tbTlNNdXRh
YmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6YVN0cmluZ10gYXV0b3Jl
bGVhc2VdOwogfQogCistIChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKilkaWN0YXRlZFN0cmlu
Z1dpdGhQcmltYXJ5U3RyaW5nOihOU1N0cmluZyopYVN0cmluZyBhbHRlcm5hdGl2ZTooTlNTdHJp
bmcqKWFsdGVybmF0aXZlIGFsdGVybmF0aXZlT2Zmc2V0OihpbnQpb2Zmc2V0IGFsdGVybmF0aXZl
TGVuZ3RoOihpbnQpbGVuZ3RoCit7CisjaWYgZGVmaW5lZChTVVBQT1JUX0RJQ1RBVElPTl9BTFRF
Uk5BVElWRVMpCisgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogZGljdGF0ZWRTdHJpbmcg
PSBbc2VsZiBhdHRyaWJ1dGVkU3RyaW5nV2l0aFN0cmluZzphU3RyaW5nXTsKKyAgICBOU1Jhbmdl
IHJhbmdlV2l0aEFsdGVybmF0aXZlID0gTlNNYWtlUmFuZ2UoKE5TVUludGVnZXIpb2Zmc2V0LCAo
TlNVSW50ZWdlcilsZW5ndGgpOworICAgIE5TU3RyaW5nKiBzdWJTdHJpbmdXaXRoQWx0ZXJuYXRp
dmUgPSBbYVN0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6cmFuZ2VXaXRoQWx0ZXJuYXRpdmVdOwor
ICAgIGlmICghc3ViU3RyaW5nV2l0aEFsdGVybmF0aXZlKQorICAgICAgICByZXR1cm4gbmlsOwor
CisgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZU9iamVjdCA9IFtbW05TVGV4dEFs
dGVybmF0aXZlcyBhbGxvY10gaW5pdFdpdGhQcmltYXJ5U3RyaW5nOnN1YlN0cmluZ1dpdGhBbHRl
cm5hdGl2ZSBhbHRlcm5hdGl2ZVN0cmluZ3M6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OmFsdGVy
bmF0aXZlXV0gYXV0b3JlbGVhc2VdOworICAgIGlmICghYWx0ZXJuYXRpdmVPYmplY3QpCisgICAg
ICAgIHJldHVybiBuaWw7CisKKyAgICBbZGljdGF0ZWRTdHJpbmcgYWRkQXR0cmlidXRlOk5TVGV4
dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5hbWUgdmFsdWU6YWx0ZXJuYXRpdmVPYmplY3QgcmFuZ2U6
cmFuZ2VXaXRoQWx0ZXJuYXRpdmVdOworCisgICAgcmV0dXJuIGRpY3RhdGVkU3RyaW5nOworI2Vs
c2UKKyAgICByZXR1cm4gbmlsOworI2VuZGlmCit9CisKIC0gKHZvaWQpc2V0SW5wdXRNZXRob2RI
YW5kbGVyOihXZWJTY3JpcHRPYmplY3QgKiloYW5kbGVyCiB7CiAgICAgaWYgKGlucHV0TWV0aG9k
SGFuZGxlciA9PSBoYW5kbGVyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJjNGJmNWY5NjBlYThjZmEzMmI1ZDJkODRiMzJl
Y2ZlODI2ZDlmNGYuLjllNWMzYWE2ZGQyMTkwYTNhZDhhNTc0NjE2ZTMwOGMyZmMwMDkzZjEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNi0xMSAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4K
KworICAgICAgICBNYXJrIHRleHQgd2l0aCB0ZXh0IGFsdGVybmF0aXZlIHdpdGggYmx1ZSB1bmRl
cmxpbmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MzA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9lZGl0
LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQtdGV4dC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1k
aWN0YXRlZC10ZXh0Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTA2LTExICBNYXggRmVpbCAgPG1mZWls
QHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIFVuZXhwZWN0ZWQgcmVwZWF0cyBvZiBz
aG9ydCBtZWRpYQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9w
YXJkL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtc25vd2xlb3BhcmQvU2tpcHBl
ZAppbmRleCA1MmE3MzZlOTU4NDJhNjU4ZDAzYjY4MGE1YTc3YTFmYjU3OGU2YTYyLi5iMjcxNDVl
OGY0NDdlMDIyNmEzZGJkMDVmNjkxYmJjMjVhODBmNmUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtc25vd2xlb3BhcmQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtc25vd2xlb3BhcmQvU2tpcHBlZApAQCAtMjExLDMgKzIxMSw3IEBAIGZhc3Qvc3Vi
LXBpeGVsL2ZpbGUtdXBsb2FkLWNvbnRyb2wtYXQtZnJhY3Rpb25hbC1vZmZzZXQuaHRtbAogIyBG
cmFtZTo6ZmluZFN0cmluZyBkb2VzIG5vdGhpbmcgb24gcGFnZXMgdGhhdCBwcmV2ZW50IHNlbGVj
dGlvbgogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNjEKIGVk
aXRpbmcvdGV4dC1pdGVyYXRvci9maW5kU3RyaW5nLXNlbGVjdGlvbi1kaXNhYmxlZC5odG1sCisK
KyMgRGljdGF0ZWQgdGV4dCBpbnB1dCBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0K
K3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVy
bmF0aXZlLmh0bWwKK3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10
ZXh0Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lu
cHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13
aXRoLWFsdGVybmF0aXZlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTdjNzhjYTYzOGI1N2Y4
OTQ1YjllMDE4ZDVjMDljOTZkZmZhNDYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJu
YXRpdmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorRWRpdGluZyB0ZXh0IHRoYXQgaGFz
IERpY3RhdGlvbkFsdGVybmF0aXZlcyBtYXJrZXIgd2hvdWxkIGNhdXNlIHRoZSBtYXJrZXIgdG8g
YmUgcmVtb3ZlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCit0aGlzIGlzIGEgdGV4
CitQQVNTIG1hcmtlZFRleHQgaXMgIiIKKworVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdp
dGgtYWx0ZXJuYXRpdmUuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lu
cHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzdmMDA3OTAzNjYyNjVmMGQwZWJiMGNiZDZhYmE2MTYwMmRlOWQzZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQt
dGV4dC13aXRoLWFsdGVybmF0aXZlLmh0bWwKQEAgLTAsMCArMSw1OSBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Citib2R5IHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwIH0K
Kzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwcmUgaWQ9ImRlc2NyaXB0aW9uIj48L3ByZT4K
KzxkaXYgaWQ9InRlc3QiIGNvbnRlbnRlZGl0YWJsZT48L2Rpdj4KKzxwIGlkPSJjb25zb2xlIj48
L3A+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZGVzY3JpcHRpb24oIkVk
aXRpbmcgdGV4dCB0aGF0IGhhcyBEaWN0YXRpb25BbHRlcm5hdGl2ZXMgbWFya2VyIHdob3VsZCBj
YXVzZSB0aGUgbWFya2VyIHRvIGJlIHJlbW92ZWQuIik7CisKKyAgICB2YXIgY29uc29sZV9tZXNz
YWdlcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7CisgICAgCisgICAgZnVuY3Rpb24g
bG9nKG1lc3NhZ2UpCisgICAgeworICAgICAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImxpIik7CisgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUobWVzc2FnZSkpOworICAgICAgICBjb25zb2xlX21lc3NhZ2VzLmFwcGVuZENoaWxkKGl0
ZW0pOworICAgIH0KKyAgICAKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgICAgIAorICAgICAgICB0cnkgeworCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB2YXIgdGVzdEFyZWEgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGVzdCIpOworICAgICAgICAgICAgdGVzdEFyZWEuZm9jdXMoKTsKKwor
ICAgICAgICAgICAgdmFyIGRpY3RhdGVkU3RyaW5nID0gdGV4dElucHV0Q29udHJvbGxlci5tYWtl
RGljdGF0ZWRTdHJpbmcoInRoaXMgaXMgYSB0ZXh0IiwgInRlc3QiLCAxMCwgNCk7CisgICAgICAg
ICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxsIik7CisgICAgICAgICAgICB0ZXh0
SW5wdXRDb250cm9sbGVyLmluc2VydFRleHQoZGljdGF0ZWRTdHJpbmcpOworICAgICAgICAgICAg
dGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoImRlbGV0ZUJhY2t3YXJkOiIpOworCisgICAg
ICAgICAgICB2YXIgbWFya2VkVGV4dCA9ICIiOworICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpIHsKKyAgICAgICAgICAgICAgICB2YXIgdGVzdFRleHQgPSB0ZXN0QXJlYS5maXJzdENo
aWxkOworICAgICAgICAgICAgICAgIHZhciBtYXJrZWQgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VG
b3JOb2RlKHRlc3RUZXh0LCAiRGljdGF0aW9uQWx0ZXJuYXRpdmVzIiwgMCk7CisgICAgICAgICAg
ICAgICAgaWYgKG1hcmtlZCkKKyAgICAgICAgICAgICAgICAgICAgbWFya2VkVGV4dCA9IG1hcmtl
ZC50b1N0cmluZygpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoIm1hcmtlZFRleHQiLCAiIik7CisgICAgICAgICAgICBkb2N1bWVudC53cml0ZSgi
VEVTVCBDT01QTEVURSIpOworCisgICAgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgICAgICBk
b2N1bWVudC53cml0ZSgiRXhjZXB0aW9uOiAiICsgZXguZGVzY3JpcHRpb24pOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFw
cGVuZENoaWxkKGNvbnNvbGVfbWVzc2FnZXMpOworICAgICAgICAKKyAgICB9IGVsc2UgeworICAg
ICAgICBkb2N1bWVudC53cml0ZSgiKGNhbm5vdCBydW4gaW50ZXJhY3RpdmVseSkiKTsKKyAgICB9
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRl
ZC10ZXh0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDQ2MTczMmVlZWYzM2YyMGYwODA3MGY1
MTFkOWRjZmMwMjBiYTAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsOCBAQAorV2hlbiBpbnNlcnRpbmcgZGljdGF0ZWQgdGV4dCwgcmFuZ2Ugb2YgdGV4dCB0
aGF0IGhhcyBhbHRlcm5hdGl2ZSB0ZXh0IGlzIGF0dGFjaGVkIGFzIERpY3RhdGlvbkFsdGVybmF0
aXZlcyBtYXJrZXIuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwordGhpcyBpcyBhIHRl
eHQKK1BBU1MgbWFya2VkVGV4dCBpcyAidGV4dCIKKworVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVk
LXRleHQuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2Vy
dC1kaWN0YXRlZC10ZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJhMWU0M2JkOTllM2QyNWUwMjA4MzAz
MGJlN2YzMmY4YzVkNDQxNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0Lmh0bWwKQEAgLTAsMCArMSw1
OCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Citib2R5IHsgbWFyZ2lu
OiAwOyBwYWRkaW5nOiAwIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwcmUgaWQ9ImRl
c2NyaXB0aW9uIj48L3ByZT4KKzxkaXYgaWQ9InRlc3QiIGNvbnRlbnRlZGl0YWJsZT48L2Rpdj4K
KzxwIGlkPSJjb25zb2xlIj48L3A+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cisg
ICAgZGVzY3JpcHRpb24oIldoZW4gaW5zZXJ0aW5nIGRpY3RhdGVkIHRleHQsIHJhbmdlIG9mIHRl
eHQgdGhhdCBoYXMgYWx0ZXJuYXRpdmUgdGV4dCBpcyBhdHRhY2hlZCBhcyBEaWN0YXRpb25BbHRl
cm5hdGl2ZXMgbWFya2VyLiIpOworCisgICAgdmFyIGNvbnNvbGVfbWVzc2FnZXMgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJvbCIpOworICAgIAorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQor
ICAgIHsKKyAgICAgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOwor
ICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2Up
KTsKKyAgICAgICAgY29uc29sZV9tZXNzYWdlcy5hcHBlbmRDaGlsZChpdGVtKTsKKyAgICB9Cisg
ICAgCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAKKyAg
ICAgICAgdHJ5IHsKKworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgdmFyIHRlc3RBcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRlc3QiKTsKKyAgICAgICAgICAgIHRlc3RBcmVhLmZvY3VzKCk7CisKKyAgICAgICAgICAgIHZh
ciBkaWN0YXRlZFN0cmluZyA9IHRleHRJbnB1dENvbnRyb2xsZXIubWFrZURpY3RhdGVkU3RyaW5n
KCJ0aGlzIGlzIGEgdGV4dCIsICJ0ZXN0IiwgMTAsIDQpOworICAgICAgICAgICAgZG9jdW1lbnQu
ZXhlY0NvbW1hbmQoIlNlbGVjdEFsbCIpOworICAgICAgICAgICAgdGV4dElucHV0Q29udHJvbGxl
ci5pbnNlcnRUZXh0KGRpY3RhdGVkU3RyaW5nKTsKKworICAgICAgICAgICAgdmFyIG1hcmtlZFRl
eHQgPSAiIjsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAg
ICAgICAgdmFyIHRlc3RUZXh0ID0gdGVzdEFyZWEuZmlyc3RDaGlsZDsKKyAgICAgICAgICAgICAg
ICB2YXIgbWFya2VkID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXN0VGV4dCwgIkRp
Y3RhdGlvbkFsdGVybmF0aXZlcyIsIDApOworICAgICAgICAgICAgICAgIGlmIChtYXJrZWQpCisg
ICAgICAgICAgICAgICAgICAgIG1hcmtlZFRleHQgPSBtYXJrZWQudG9TdHJpbmcoKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJtYXJrZWRUZXh0
IiwgInRleHQiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCJURVNUIENPTVBMRVRFIik7
CisKKyAgICAgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCJF
eGNlcHRpb246ICIgKyBleC5kZXNjcmlwdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoY29uc29s
ZV9tZXNzYWdlcyk7CisgICAgICAgIAorICAgIH0gZWxzZSB7CisgICAgICAgIGRvY3VtZW50Lndy
aXRlKCIoY2Fubm90IHJ1biBpbnRlcmFjdGl2ZWx5KSIpOworICAgIH0KKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147351</attachid>
            <date>2012-06-13 10:09:12 -0700</date>
            <delta_ts>2012-06-13 18:44:19 -0700</delta_ts>
            <desc>Fixing Lion build.</desc>
            <filename>bug-83047-20120613100911.patch</filename>
            <type>text/plain</type>
            <size>132416</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTAyYTA2ZDRmMDA2Nzkz
YWU1YTQxYWI1YTYzODk5OTZhNjAxZGVhMC4uMDY1MWRjNTRiMzlkZTczNDI2YTRkY2UxZTNmNTdi
M2Q1YTZkYzBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTA2LTExICBKaWEg
UHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgdGV4dCB3aXRoIHRleHQgYWx0ZXJu
YXRpdmUgd2l0aCBibHVlIHVuZGVybGluZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgzMDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQt
ZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRm
b3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0Lmh0bWwKKworICAgICAg
ICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdmlzdWFsIGluZGljYXRpb24gb24gZGljdGF0ZWQgdGV4
dCB3aXRoIGFsdGVybmF0aXZlcywgYW5kIHByb3ZpZGluZyBVSQorICAgICAgICB0byBzaG93IGFs
dGVybmF0aXZlIHRleHQgb24gT1MgWC4gTWFqb3JpdHkgb2YgdGhlIGNoYW5nZXMgaXMgZm9yIGdl
bmVyYWxpemluZyBleGlzdGluZyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyCisgICAgICAgIGNs
YXNzIHRvIGhhbmRsZSBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzLiBUaGUgdHdvIG5ldyBjbGFzc2Vz
LCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgYW5kCisgICAgICAgIFRleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZSwgYXJlIHVzZWQgYnkgYm90aCBXZWJLaXQgYW5kIFdLMi4gU28gV2ViQ29yZSBz
ZWVtcyB0byBiZSB0aGUgbmF0dXJhbCBwbGFjZQorICAgICAgICBmb3IgdGhlbS4KKworICAgICAg
ICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3Bw
OiBFeHBhbmRlZCBleGlzaW5nIGNsYXNzIGludGVyZmFjZSB0byBzdXBwb3J0IGRpY3RhdGlvbiBh
bHRlcm5hdGl2ZXMuCisgICAgICAgIChEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFpbHMpOiBNYXJr
ZXIgZGV0YWlsIGNsYXNzIGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmUgbWFyay4KKyAgICAgICAg
KFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlRGV0YWlsczo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlRGV0YWlsczo6ZGljdGF0aW9uQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFpbHM6OkRpY3RhdGlv
bkFsdGVybmF0aXZlRGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlOjptYXJrZXJUeXBlc0ZvckFw
cGxpZWREaWN0YXRpb25BbHRlcm5hdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UpOiBHZW5lcmFsaXpl
ZCBleGlzdGluZyBhcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UoKSB0byBoYW5kbGUgZGljdGF0
aW9uIGFsdGVybmF0aXZlcy4KKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXI6OnRpbWVyRmlyZWQpOiBFeHBhbmRlZCBleGlzdGluZyBjb2RlIHRvIGhhbmRsZSBkaWN0
YXRpb24gYWx0ZXJuYXRpdmVzLgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQpOiBFeHBhbmRlZCBleGlzdGlu
ZyBjb2RlIHRvIGhhbmRsZSBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzLgorICAgICAgICAoV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6
IE1vdmVkIHBhcnQgb2YgdGhlIGZ1bmN0aW9uIGludG8gcmVzcG9uZFRvTWFya2VyQXRFbmRPZldv
cmQoKSB0byBpbXByb3ZlIHJlYWRhYmlsaXR5LgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjo6c2hvdWxkU3RhcnRUaW1lckZvcik6CisgICAgICAgIChXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjptYXJrZXJEZXNj
cmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFy
a2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmRpY3Rh
dGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKToKKyAgICAgICAgKiBl
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5vdGlmeUNvbXBvbmVudHNPbkNo
YW5nZWRTZWxlY3Rpb24pOiBSZW5hbWVkIGV4aXN0aW5nIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rp
b24oKSBmdW5jdGlvbiB0byBhdm9pZCBuYW1pbmcgY29sbGlzaW9uLgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjphcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVu
YXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFwcGxpZWRFZGl0
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZm
ZWN0ZWRCeUVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjaGFuZ2VTZWxlY3Rp
b25BZnRlckNvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXNwb25kVG9DaGFu
Z2VkU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGljdGF0aW9uQWx0ZXJu
YXRpdmVzRm9yTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlEaWN0YXRp
b25BbHRlcm5hdGl2ZWx0ZXJuYXRpdmUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6Cisg
ICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvbWFj
L0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oOiBBZGRlZC4gV0sxIGFuZCBXSzIgdXNlIHRo
aXMgY2xhc3MgdG8ga2VlcCB0cmFjayBvZiB0ZXh0IGFsdGVybmF0aXZlcyBvYmplY3RzLgorICAg
ICAgICAoQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKToK
KyAgICAgICAgKEFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRD
b250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyKToKKyAgICAgICAgKiBl
ZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW06IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENv
bnRleHRDb250cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVy
OjphbHRlcm5hdGl2ZXNGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6cmVtb3Zl
QWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmNsZWFyKToK
KyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWRkQWx0ZXJu
YXRpdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlcjo6c2hvd0FsdGVybmF0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpkaXNtaXNzQWx0ZXJu
YXRpdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
cmVtb3ZlQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2UuaDogQWRkZWQuICBBIHNpbXBsZSBzdHJ1Y3QgdG8gbWFrZSBpdCBlYXNpZXIg
dG8gcGFzcyBhcm91bmQgYSBwYWlyIG9mIHRleHQgYWx0ZXJuYXRpdmVzIG9iamVjdCBhbmQgcmFu
Z2UuCisgICAgICAgICogZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZTo6VGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3REaWN0YXRpb25U
ZXh0QWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKiBwYWdlL0FsdGVybmF0aXZlVGV4dENsaWVudC5o
OgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDogQWRkZWQgY29kZSB0
byBzaG93IGFsdGVybmF0aXZlIGRpY3RhdGVkIHRleHQgaW4gY29udGV4dCBtZW51LgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3Rl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlm
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0OjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1hcmtlcik6CisKIDIw
MTItMDYtMTEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIFBvcnQgRHJhd2luZ0J1ZmZlckNocm9taXVtIGZyb20gVGV4dHVyZUxheWVy
Q2hyb21pdW0gb3ZlciB0byBXZWJFeHRlcm5hbFRleHR1cmVMYXllcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IDYyMzY5MjE1ZTcwNmY3MDI5OWVhYTgwMWFiYzRhZTY3YjE2OTRhMDYuLjgxMjk4MDI5Mjlh
MDFlMjVmYmMzODBjMGY4ODA1MzhmYTJiOGFjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0NCBAQAorMjAxMi0wNi0xMSAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KKworICAgICAgICBN
YXJrIHRleHQgd2l0aCB0ZXh0IGFsdGVybmF0aXZlIHdpdGggYmx1ZSB1bmRlcmxpbmUuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzA0NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZXMgaW4gV2Vi
S2l0IGluY2x1ZGUgaW1wbGVtZW50YXRpb24gb2YgbmV3IGZ1bmN0aW9ucyBkZWNsYXJlZCBpbiBB
bHRlcm5hdGl2ZVRleHRDbGllbnQsCisgICAgICAgIGFuZCBsb2dpYyBmb3IgY2FsbGluZyBFZGl0
b3I6Omluc2VydERpY3RhdGVkVGV4dCgpIGluc3RlYWQgb2YgRWRpdG9yOjppbnNlcnRUZXh0KCkg
d2hlbiB0aGVyZSdzCisgICAgICAgIGFsdGVybmF0aXZlcyBhdHRhY2hlZCB0byB0aGUgaW5wdXQg
c3RyaW5nLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tOgor
ICAgICAgICAoY29ycmVjdGlvbkluZGljYXRvclR5cGUpOgorICAgICAgICAoQ29ycmVjdGlvblBh
bmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDoKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4
dENsaWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50Lm1tOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpzaG93Q29ycmVjdGlv
bkFsdGVybmF0aXZlKToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlz
c0FsdGVybmF0aXZlKToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlz
c0FsdGVybmF0aXZlU29vbik6CisgICAgICAgIChXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50OjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50OjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSSk6CisgICAgICAgIChX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKToK
KyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVz
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1M
VmlldyB2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0XSk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IGluc2VydFRleHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAg
ICAoLVtXZWJWaWV3IGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0Ol0pOgorICAgICAgICAo
LVtXZWJWaWV3IF9nZXRXZWJDb3JlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOmZyb21UZXh0QWx0ZXJu
YXRpdmVzOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVV
STpXZWJDb3JlOjpmb3JEaWN0YXRpb25Db250ZXh0Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IF9k
aXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSV0pOgorICAgICAgICAoLVtXZWJWaWV3IF9yZW1v
dmVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2RpY3RhdGlv
bkFsdGVybmF0aXZlczpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5tbToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUg
aW5pdF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDEyLTA2LTExICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIGRpc2Nvbm5lY3RlZC9l
eGNsdWRlZCBmcm9tIHNlYXJjaCBmcmFtZXMsIHRoZXkgYXJlIG5vdCB1c2VkIGJ5IFNhZmFyaSBh
bnltb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2ExOWNjYTUxM2UxZDA5MmUwZmJhNGQ1Yzk1NWExMmI1MzMw
ZjRjYi4uNDYxMDk1NWZhMDA0Y2YxYzc1ZjIwOTQ4YWNhYTE3YTkxZDRmZGJiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTA2LTExICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgor
CisgICAgICAgIE1hcmsgdGV4dCB3aXRoIHRleHQgYWx0ZXJuYXRpdmUgd2l0aCBibHVlIHVuZGVy
bGluZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgz
MDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hh
bmdlcyBpbiBXZWJLaXQyIGluY2x1ZGUgaW1wbGVtZW50YXRpb24gb2YgbmV3IGZ1bmN0aW9ucyBk
ZWNsYXJlZCBpbiBBbHRlcm5hdGl2ZVRleHRDbGllbnQsCisgICAgICAgIGFuZCBsb2dpYyBmb3Ig
Y2FsbGluZyBFZGl0b3I6Omluc2VydERpY3RhdGVkVGV4dCgpIGluc3RlYWQgb2YgRWRpdG9yOjpp
bnNlcnRUZXh0KCkgd2hlbiB0aGVyZSdzCisgICAgICAgIGFsdGVybmF0aXZlcyBhdHRhY2hlZCB0
byB0aGUgaW5wdXQgc3RyaW5nLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1l
bnVJdGVtVHlwZXMuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
bWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNs
aWVudEltcGwubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50
SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwYWdlQ2xvc2VkKToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpyZW1vdmVEaWN0YXRpb25BbHRlcm5h
dGl2ZXMpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2hvd0RpY3RhdGlvbkFs
dGVybmF0aXZlVUkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGljdGF0aW9u
QWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpc21pc3NE
aWN0YXRpb25BbHRlcm5hdGl2ZVVJKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW06CisgICAgICAgICgtW1dLVmlldyBpbnNlcnRUZXh0OnJlcGxhY2VtZW50UmFuZ2U6XSk6
CisgICAgICAgICgtW1dLVmlldyB2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0XSk6CisgICAg
ICAgICgtW1dLVmlldyBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc21pc3NEaWN0YXRpb25BbHRlcm5h
dGl2ZVVJKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZW1vdmVEaWN0YXRpb25B
bHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpY3RhdGlvbkFs
dGVybmF0aXZlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW06CisgICAgICAgIChjb3JyZWN0aW9uSW5kaWNhdG9y
VHlwZSk6CisgICAgICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0ZWRS
ZXBsYWNlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVu
dC5oOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnNob3dDb3JyZWN0aW9u
QWx0ZXJuYXRpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6
OmRpc21pc3NBbHRlcm5hdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0aXZlVGV4
dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0aXZlU29vbik6CisgICAgICAgIChXZWJLaXQ6OldlYkFs
dGVybmF0aXZlVGV4dENsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVtb3ZlRGljdGF0aW9uQWx0
ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Ojpz
aG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0
aXZlVGV4dENsaWVudDo6ZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omlu
c2VydERpY3RhdGVkVGV4dCk6CisKIDIwMTItMDYtMTEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBQYXNzIHRoZSByaWdodCBjb2xvciBzcGFjZSBvdmVy
IHRvIHRoZSB3ZWIgcHJvY2VzcyBzbyB3ZSBjYW4gc2V0IGl0IG9uIG91ciBDQSBjb250ZXh0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCmluZGV4IGFlZDA0ZTFiZjBkMzkzMDZiOTY1YjM1ZjI1YTA5MTkzNmM4
MTkwN2EuLmIwMjdjZjYzMmNlZjhiZDY2Njc4MzM4NzA5M2FkYjBiY2Q3MWIwMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCkBAIC0yMjAzLDMgKzIyMDMsMTQgQEAgX19aTks3V2ViQ29yZTRLVVJMN2lz
RW1wdHlFdgogX19aTks3V2ViQ29yZTRLVVJMN2lzVmFsaWRFdgogX19aTks3V2ViQ29yZTRLVVJM
MjJwcm90b2NvbElzSW5IVFRQRmFtaWx5RXYKICNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9T
Tk9XX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xJT04pCitfX1pON1dlYkNvcmUy
N0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjE1YWRkQWx0ZXJuYXRpdmVzRVJLTjNXVEY5UmV0
YWluUHRySTE4TlNUZXh0QWx0ZXJuYXRpdmVzRUUKK19fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyMjJhbHRlcm5hdGl2ZXNGb3JDb250ZXh0RXkKK19fWk43V2ViQ29yZTI3
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyNWNsZWFyRXYKK19fWk43V2ViQ29yZTI3QWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyMTlkaXNtaXNzQWx0ZXJuYXRpdmVzRXYKK19fWk43V2ViQ29y
ZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMThyZW1vdmVBbHRlcm5hdGl2ZXNFeQorX19a
TjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIxNnNob3dBbHRlcm5hdGl2ZXNF
UDZOU1ZpZXdSS05TXzlGbG9hdFJlY3RFeVUxM2Jsb2NrX3BvaW50ZXJGdlA4TlNTdHJpbmdFCitf
X1pON1dlYkNvcmUyNFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZUMxRVAxOE5TVGV4dEFsdGVybmF0
aXZlczhfTlNSYW5nZQorX19aTjdXZWJDb3JlMzJjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0
aXZlc0VQMThOU0F0dHJpYnV0ZWRTdHJpbmdSTjNXVEY2VmVjdG9ySU5TXzI0VGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlRUxtMEVFRQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGM3MDM3MzQ2ZjhlYzYzNGM1YzlmN2Zh
MGUyNTkxYzNlMDJlN2JmMS4uMDliYjhkY2U3NzY2ZWM4Y2EyYjdkM2VhZDVmMjZjNWUzNTczMDYw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNTc4Nyw2ICs1Nzg3LDEwIEBACiAJCUNFMDhDM0QxMTUyQjU5OUEwMDIxQjhDMiAv
KiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0NGMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMy
IC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsg
fTsKIAkJQ0U1NEZEMzgxMDE2RDlBNjAwOEI0NEM4IC8qIFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTU0RkQzNzEw
MTZEOUE2MDA4QjQ0QzggLyogU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRTdCMkRCMzE1ODZBQkFEMDA5OEIz
RkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTdCMkRBRjE1ODZBQkFEMDA5OEIzRkEgLyogQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0U3QjJEQjQxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFN0IyREIwMTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXIubW0gKi87IH07CisJCUNFN0IyREI1MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFN0IyREIxMTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVX
aXRoUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlDRTdCMkRCNjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3QjJE
QjIxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSAqLzsgfTsK
IAkJQ0VBMzk0OUMxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUEzOTQ5QTEx
RDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCAqLzsgfTsKIAkJQ0VB
Mzk0OUQxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VBMzk0OUIxMUQ0NUNEQTAw
MzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oICovOyB9OwogCQlDRUNBREZDNjE1Mzc3
OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDQURGQzIxNTM3NzhGRjAwRTM3MDY4IC8q
IERpY3RhdGlvbkFsdGVybmF0aXZlLmNwcCAqLzsgfTsKQEAgLTEyOTc5LDYgKzEyOTgzLDEwIEBA
CiAJCUNFMDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1NEZEMzcxMDE2RDlBNjAw
OEI0NEM4IC8qIFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcmlwdFNvdXJjZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNFNUNCMUIzMTRFREFCNkYwMEJCMjc5NSAvKiBFdmVudFNlbmRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFNlbmRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDRTdCMkRBRjE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlci5oOyBwYXRoID0gbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTdCMkRCMDE1ODZBQkFEMDA5
OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tOyBw
YXRoID0gbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0U3QjJEQjExNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UuaDsgcGF0aCA9IG1hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U3QjJEQjIxNTg2QUJBRDAwOThCM0ZBIC8q
IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTsgcGF0aCA9IG1hYy9UZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNF
QTM5NDlBMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljSGFzaFNldE5vZGVMaXN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VBMzk0OUIxMUQ0NUNEQTAwMzA5NENG
IC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0VDQURGQzIxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlvbkFsdGVybmF0aXZl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNjg0LDggKzIwNjkyLDEyIEBA
CiAJCUVENTAxREM5MEIyNDlGMzkwMEFFMThEOSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNFN0IyREIwMTU4NkFCQUQwMDk4QjNGQSAvKiBB
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKi8sCisJCQkJQ0U3QjJEQUYxNTg2QUJBRDAw
OThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oICovLAogCQkJCUVENTAxREM1
MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gKi8sCiAJCQkJNEE4Qzk2RUEwQkU2OTAz
MjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tICovLAorCQkJCUNFN0IyREIyMTU4NkFC
QUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gKi8sCisJCQkJQ0U3QjJE
QjExNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oICovLAogCQkJ
KTsKIAkJCW5hbWUgPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjUwNDYs
NiArMjUwNTgsOCBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29k
ZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBY
U1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0Ug
LyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFN0IyREIzMTU4NkFCQUQwMDk4QjNG
QSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNF
N0IyREI1MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMjgwODYsNiArMjgxMDAsOCBAQAogCQkJCUUxQkU1MTJEMENGNkM1MTIw
MDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJF
MEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUNFN0IyREI0MTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQlDRTdCMkRCNjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCA4ZDA5
ZmYxYjk5ODQ3MWVhNjFmMzg5MjY4ZTQ5MjRmNzA0Y2YxM2IxLi40ZGNmNDk3NDhmYWI4NzRhYmE4
YjAxNjM0OWJhYTAyNGY3ZTlhYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTY4LDYgKzY4LDIzIEBAIHByaXZh
dGU6CiAgICAgU3RyaW5nIG1fcmVwbGFjZW1lbnRTdHJpbmc7CiB9OwogCitjbGFzcyBEaWN0YXRp
b25BbHRlcm5hdGl2ZURldGFpbHMgOiBwdWJsaWMgQWx0ZXJuYXRpdmVUZXh0RGV0YWlscyB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGljdGF0aW9uQWx0ZXJuYXRpdmVEZXRhaWxz
PiBjcmVhdGUodWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRGljdGF0aW9uQWx0ZXJuYXRpdmVEZXRhaWxzKGRpY3RhdGlvbkNvbnRl
eHQpKTsKKyAgICB9CisKKyAgICB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9kaWN0YXRpb25Db250ZXh0OyB9CisKK3ByaXZhdGU6CisgICAgRGljdGF0aW9uQWx0
ZXJuYXRpdmVEZXRhaWxzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCisgICAgOiBtX2RpY3Rh
dGlvbkNvbnRleHQoZGljdGF0aW9uQ29udGV4dCkKKyAgICB7IH0KKworICAgIHVpbnQ2NF90IG1f
ZGljdGF0aW9uQ29udGV4dDsKK307CisKICNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAK
IHN0YXRpYyBjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBtYXJrZXJU
eXBlc0ZvckF1dG9jb3JyZWN0aW9uKCkKQEAgLTkyLDYgKzEwOSwxNCBAQCBzdGF0aWMgY29uc3Qg
VmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiYgbWFya2VyVHlwZXNGb3JSZXBsYWNl
bWVudCgpCiAgICAgcmV0dXJuIG1hcmtlclR5cGVzRm9yUmVwbGFjZW1lbnQ7CiB9CiAKK3N0YXRp
YyBjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBtYXJrZXJUeXBlc0Zv
ckFwcGxpZWREaWN0YXRpb25BbHRlcm5hdGl2ZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+LCBtYXJrZXJUeXBlc0ZvckFwcGxp
ZWREaWN0YXRpb25BbHRlcm5hdGl2ZSwgKCkpOworICAgIGlmIChtYXJrZXJUeXBlc0ZvckFwcGxp
ZWREaWN0YXRpb25BbHRlcm5hdGl2ZS5pc0VtcHR5KCkpCisgICAgICAgIG1hcmtlclR5cGVzRm9y
QXBwbGllZERpY3RhdGlvbkFsdGVybmF0aXZlLmFwcGVuZChEb2N1bWVudE1hcmtlcjo6U3BlbGxD
aGVja2luZ0V4ZW1wdGlvbik7CisgICAgcmV0dXJuIG1hcmtlclR5cGVzRm9yQXBwbGllZERpY3Rh
dGlvbkFsdGVybmF0aXZlOworfQorCiBzdGF0aWMgYm9vbCBtYXJrZXJzSGF2ZUlkZW50aWNhbERl
c2NyaXB0aW9uKGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcio+JiBtYXJrZXJzKQogewogICAg
IGlmIChtYXJrZXJzLmlzRW1wdHkoKSkKQEAgLTIxNSwxOCArMjQwLDE4IEBAIFN0cmluZyBBbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyOjpkaXNtaXNzU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0
ZXJuYXRpdmVUZXh0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12b2lkIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0KGNvbnN0IFN0cmluZyYgYWx0ZXJu
YXRpdmUsIGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4mIG1hcmtlclR5
cGVzVG9BZGQpCit2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRp
dmVUZXh0VG9SYW5nZShjb25zdCBSYW5nZSogcmFuZ2UsIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRp
dmUsIEFsdGVybmF0aXZlVGV4dFR5cGUgYWx0ZXJuYXRpdmVUeXBlLCBjb25zdCBWZWN0b3I8RG9j
dW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBtYXJrZXJUeXBlc1RvQWRkLCBNYXJrZXJEZXNjcmlw
dGlvblN1cHBsaWVyIG1hcmtlckRlc2NyaXB0aW9uU3VwcGxpZXIpCiB7Ci0gICAgaWYgKCFtX2Fs
dGVybmF0aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUpCisgICAgaWYgKCFyYW5nZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRy
PFJhbmdlPiBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uID0gbV9hbHRlcm5hdGl2
ZVRleHRJbmZvLnJhbmdlV2l0aEFsdGVybmF0aXZlLT5jbG9uZVJhbmdlKGVjKTsKKyAgICBSZWZQ
dHI8UmFuZ2U+IHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24gPSByYW5nZS0+Y2xv
bmVSYW5nZShlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXRTdGFy
dChwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLmdldCgpLCBzdGFydE9mUGFyYWdy
YXBoKG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZS0+c3RhcnRQb3Np
dGlvbigpKSk7Ci0gICAgc2V0RW5kKHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24u
Z2V0KCksIGVuZE9mUGFyYWdyYXBoKG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRl
cm5hdGl2ZS0+ZW5kUG9zaXRpb24oKSkpOworICAgIHNldFN0YXJ0KHBhcmFncmFwaFJhbmdlQ29u
dGFpbmluZ0NvcnJlY3Rpb24uZ2V0KCksIHN0YXJ0T2ZQYXJhZ3JhcGgocmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKSkpOworICAgIHNldEVuZChwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9u
LmdldCgpLCBlbmRPZlBhcmFncmFwaChyYW5nZS0+ZW5kUG9zaXRpb24oKSkpOwogCiAgICAgLy8g
QWZ0ZXIgd2UgcmVwbGFjZSB0aGUgd29yZCBhdCByYW5nZSByYW5nZVdpdGhBbHRlcm5hdGl2ZSwg
d2UgbmVlZCB0byBhZGQgbWFya2VycyB0byB0aGF0IHJhbmdlLgogICAgIC8vIEhvd2V2ZXIsIG9u
Y2UgdGhlIHJlcGxhY2VtZW50IHRvb2sgcGxhY2UsIHRoZSB2YWx1ZSBvZiByYW5nZVdpdGhBbHRl
cm5hdGl2ZSBpcyBub3QgdmFsaWQgYW55bW9yZS4KQEAgLTIzOCw3ICsyNjMsNyBAQCB2b2lkIEFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0KGNvbnN0IFN0cmlu
ZyYgYWx0ZXJuYXRpdmUsCiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAKLSAgICBQb3Np
dGlvbiBzdGFydFBvc2l0aW9uT2ZyYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IG1fYWx0ZXJuYXRpdmVU
ZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZS0+c3RhcnRQb3NpdGlvbigpOworICAgIFBvc2l0
aW9uIHN0YXJ0UG9zaXRpb25PZnJhbmdlV2l0aEFsdGVybmF0aXZlID0gcmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKTsKICAgICBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UtPnNl
dEVuZChzdGFydFBvc2l0aW9uT2ZyYW5nZVdpdGhBbHRlcm5hdGl2ZS5jb250YWluZXJOb2RlKCks
IHN0YXJ0UG9zaXRpb25PZnJhbmdlV2l0aEFsdGVybmF0aXZlLmNvbXB1dGVPZmZzZXRJbkNvbnRh
aW5lck5vZGUoKSwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ3LDcg
KzI3Miw3IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2
ZVRleHQoY29uc3QgU3RyaW5nJiBhbHRlcm5hdGl2ZSwKICAgICBpbnQgY29ycmVjdGlvblN0YXJ0
T2Zmc2V0SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGNvcnJlY3Rpb25T
dGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZS5nZXQoKSk7CiAKICAgICAvLyBDbG9uZSB0aGUg
cmFuZ2UsIHNpbmNlIHRoZSBjYWxsZXIgb2YgdGhpcyBtZXRob2QgbWF5IHdhbnQgdG8ga2VlcCB0
aGUgb3JpZ2luYWwgcmFuZ2UgYXJvdW5kLgotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VXaXRoQWx0
ZXJuYXRpdmUgPSBtX2FsdGVybmF0aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUtPmNs
b25lUmFuZ2UoZWMpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBy
YW5nZS0+Y2xvbmVSYW5nZShlYyk7CiAgICAgYXBwbHlDb21tYW5kKFNwZWxsaW5nQ29ycmVjdGlv
bkNvbW1hbmQ6OmNyZWF0ZShyYW5nZVdpdGhBbHRlcm5hdGl2ZSwgYWx0ZXJuYXRpdmUpKTsKICAg
ICBzZXRFbmQocGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi5nZXQoKSwgbV9mcmFt
ZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLnN0YXJ0KCkpOwogICAgIFJlZlB0cjxSYW5nZT4g
cmVwbGFjZW1lbnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UocGFyYWdyYXBoUmFuZ2VD
b250YWluaW5nQ29ycmVjdGlvbi5nZXQoKSwgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3Jh
cGgsIGFsdGVybmF0aXZlLmxlbmd0aCgpKTsKQEAgLTI2MCwxMSArMjg1LDggQEAgdm9pZCBBbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dChjb25zdCBTdHJpbmcm
IGFsdGVybmF0aXZlLAogICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciogbWFya2VycyA9IHJl
cGxhY2VtZW50UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKTsK
ICAgICBzaXplX3Qgc2l6ZSA9IG1hcmtlclR5cGVzVG9BZGQuc2l6ZSgpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIERvY3VtZW50TWFya2VyOjpNYXJr
ZXJUeXBlIG1hcmtlclR5cGUgPSBtYXJrZXJUeXBlc1RvQWRkW2ldOwotICAgICAgICBTdHJpbmcg
ZGVzY3JpcHRpb247Ci0gICAgICAgIGlmIChtX2FsdGVybmF0aXZlVGV4dEluZm8udHlwZSAhPSBB
bHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9uICYmIChtYXJrZXJUeXBlID09IERvY3VtZW50TWFy
a2VyOjpSZXBsYWNlbWVudCB8fCBtYXJrZXJUeXBlID09IERvY3VtZW50TWFya2VyOjpBdXRvY29y
cmVjdGVkKSkKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gbV9hbHRlcm5hdGl2ZVRleHRJbmZv
Lm9yaWdpbmFsVGV4dDsKLSAgICAgICAgbWFya2Vycy0+YWRkTWFya2VyKHJlcGxhY2VtZW50UmFu
Z2UuZ2V0KCksIG1hcmtlclR5cGUsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgU3RyaW5nIGRlc2Ny
aXB0aW9uID0gbWFya2VyRGVzY3JpcHRpb25TdXBwbGllciA/IG1hcmtlckRlc2NyaXB0aW9uU3Vw
cGxpZXIoYWx0ZXJuYXRpdmVUeXBlLCBtYXJrZXJUeXBlc1RvQWRkW2ldKSA6ICIiOworICAgICAg
ICBtYXJrZXJzLT5hZGRNYXJrZXIocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSwgbWFya2VyVHlwZXNU
b0FkZFtpXSwgZGVzY3JpcHRpb24pOwogICAgIH0KIH0KIApAQCAtMzQ4LDMzICszNzAsNTcgQEAg
dm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjp0aW1lckZpcmVkKFRpbWVyPEFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI+KikKICAgICAgICAgfQogICAgIH0KICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBBbHRlcm5hdGl2ZVRleHRUeXBlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOgorICAgIHsK
KyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICAgICAgY29uc3QgUmFuZ2UqIHJh
bmdlV2l0aEFsdGVybmF0aXZlID0gbV9hbHRlcm5hdGl2ZVRleHRJbmZvLnJhbmdlV2l0aEFsdGVy
bmF0aXZlLmdldCgpOworICAgICAgICBjb25zdCBEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFpbHMq
IGRldGFpbHMgPSBzdGF0aWNfY2FzdDxjb25zdCBEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFpbHMq
PihtX2FsdGVybmF0aXZlVGV4dEluZm8uZGV0YWlscy5nZXQoKSk7CisgICAgICAgIGlmICghcmFu
Z2VXaXRoQWx0ZXJuYXRpdmUgfHwgIWRldGFpbHMgfHwgIWRldGFpbHMtPmRpY3RhdGlvbkNvbnRl
eHQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94
ID0gcm9vdFZpZXdSZWN0Rm9yUmFuZ2UocmFuZ2VXaXRoQWx0ZXJuYXRpdmUpOworICAgICAgICBt
X2FsdGVybmF0aXZlVGV4dEluZm8uaXNBY3RpdmUgPSB0cnVlOworICAgICAgICBpZiAoIWJvdW5k
aW5nQm94LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKEFsdGVybmF0aXZlVGV4dENsaWVu
dCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkpCisgICAgICAgICAgICAgICAgY2xp
ZW50LT5zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShib3VuZGluZ0JveCwgZGV0YWlscy0+ZGlj
dGF0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorICAgICAgICBicmVh
azsKICAgICB9CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aGFuZGxlQWx0
ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCiB7Ci0gICAgUmFuZ2Uq
IHJlcGxhY2VkUmFuZ2UgPSBtX2FsdGVybmF0aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRp
dmUuZ2V0KCk7Ci0gICAgaWYgKCFyZXBsYWNlZFJhbmdlIHx8IG1fZnJhbWUtPmRvY3VtZW50KCkg
IT0gcmVwbGFjZWRSYW5nZS0+b3duZXJEb2N1bWVudCgpKQorICAgIFJhbmdlKiByYW5nZVdpdGhB
bHRlcm5hdGl2ZSA9IG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZS5n
ZXQoKTsKKyAgICBpZiAoIXJhbmdlV2l0aEFsdGVybmF0aXZlIHx8IG1fZnJhbWUtPmRvY3VtZW50
KCkgIT0gcmFuZ2VXaXRoQWx0ZXJuYXRpdmUtPm93bmVyRG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgU3RyaW5nIGN1cnJlbnRXb3JkID0gcGxhaW5UZXh0KG1fYWx0ZXJuYXRpdmVU
ZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZS5nZXQoKSk7CisgICAgU3RyaW5nIGN1cnJlbnRX
b3JkID0gcGxhaW5UZXh0KHJhbmdlV2l0aEFsdGVybmF0aXZlKTsKICAgICAvLyBDaGVjayB0byBz
ZWUgaWYgdGhlIHdvcmQgd2UgYXJlIGFib3V0IHRvIGNvcnJlY3QgaGFzIGJlZW4gY2hhbmdlZCBi
ZXR3ZWVuIHRpbWVyIGZpcmluZyBhbmQgY2FsbGJhY2sgYmVpbmcgdHJpZ2dlcmVkLgogICAgIGlm
IChjdXJyZW50V29yZCAhPSBtX2FsdGVybmF0aXZlVGV4dEluZm8ub3JpZ2luYWxUZXh0KQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX2FsdGVybmF0aXZlVGV4dEluZm8uaXNBY3RpdmUgPSBmYWxz
ZTsKKyAgICBNYXJrZXJEZXNjcmlwdGlvblN1cHBsaWVyIG1hcmtlckRlc2NyaXB0aW9uU3VwcGxp
ZXIgPSBeU3RyaW5nKEFsdGVybmF0aXZlVGV4dFR5cGUgYWx0ZXJuYXRpdmVUZXh0VHlwZSwgRG9j
dW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgbWFya2VyVHlwZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBtYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQoYWx0ZXJuYXRpdmVU
ZXh0VHlwZSwgbWFya2VyVHlwZSk7CisgICAgfTsKIAogICAgIHN3aXRjaCAobV9hbHRlcm5hdGl2
ZVRleHRJbmZvLnR5cGUpIHsKICAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5cGVDb3JyZWN0aW9u
OgogICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpKQotICAgICAgICAgICAgYXBwbHlBbHRlcm5h
dGl2ZVRleHQocmVzdWx0LCBtYXJrZXJUeXBlc0ZvckF1dG9jb3JyZWN0aW9uKCkpOworICAgICAg
ICAgICAgYXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKHJhbmdlV2l0aEFsdGVybmF0aXZlLCBy
ZXN1bHQsIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby50eXBlLCBtYXJrZXJUeXBlc0ZvckF1dG9jb3Jy
ZWN0aW9uKCksIG1hcmtlckRlc2NyaXB0aW9uU3VwcGxpZXIpOwogICAgICAgICBlbHNlIGlmICgh
bV9pc0Rpc21pc3NlZEJ5RWRpdGluZykKLSAgICAgICAgICAgIHJlcGxhY2VkUmFuZ2UtPnN0YXJ0
Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKHJlcGxhY2VkUmFu
Z2UsIERvY3VtZW50TWFya2VyOjpSZWplY3RlZENvcnJlY3Rpb24sIG1fYWx0ZXJuYXRpdmVUZXh0
SW5mby5vcmlnaW5hbFRleHQpOworICAgICAgICAgICAgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUtPnN0
YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKHJhbmdlV2l0
aEFsdGVybmF0aXZlLCBEb2N1bWVudE1hcmtlcjo6UmVqZWN0ZWRDb3JyZWN0aW9uLCBtX2FsdGVy
bmF0aXZlVGV4dEluZm8ub3JpZ2luYWxUZXh0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBB
bHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9uOgogICAgIGNhc2UgQWx0ZXJuYXRpdmVUZXh0VHlw
ZVNwZWxsaW5nU3VnZ2VzdGlvbnM6CiAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoKCkpCi0gICAg
ICAgICAgICBhcHBseUFsdGVybmF0aXZlVGV4dChyZXN1bHQsIG1hcmtlclR5cGVzRm9yUmVwbGFj
ZW1lbnQoKSk7CisgICAgICAgICAgICBhcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UocmFuZ2VX
aXRoQWx0ZXJuYXRpdmUsIHJlc3VsdCwgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLnR5cGUsIG1hcmtl
clR5cGVzRm9yUmVwbGFjZW1lbnQoKSwgbWFya2VyRGVzY3JpcHRpb25TdXBwbGllcik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQWx0ZXJuYXRpdmVUZXh0VHlwZURpY3RhdGlvbkFsdGVybmF0
aXZlczoKKyAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGgoKSkKKyAgICAgICAgICAgIGFwcGx5QWx0
ZXJuYXRpdmVUZXh0VG9SYW5nZShyYW5nZVdpdGhBbHRlcm5hdGl2ZSwgcmVzdWx0LCBtX2FsdGVy
bmF0aXZlVGV4dEluZm8udHlwZSwgbWFya2VyVHlwZXNGb3JBcHBsaWVkRGljdGF0aW9uQWx0ZXJu
YXRpdmUoKSwgbWFya2VyRGVzY3JpcHRpb25TdXBwbGllcik7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIApAQCAtNDAwLDcgKzQ0Niw3IEBAIEZsb2F0UmVjdCBBbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyOjpyb290Vmlld1JlY3RGb3JSYW5nZShjb25zdCBSYW5nZSogcmFuZ2UpIGNvCiAgICAgcmV0
dXJuIHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhJbnRSZWN0KGJvdW5kaW5nUmVjdCkpOwogfSAg
ICAgICAgCiAKLXZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvQ2hhbmdl
ZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24pCit2b2lkIEFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0
aW9uT3B0aW9ucyBvcHRpb25zKQogewogICAgIFZpc2libGVTZWxlY3Rpb24gY3VycmVudFNlbGVj
dGlvbihtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOwogICAgIC8vIFdoZW4gdXNl
ciBtb3ZlcyBjYXJldCB0byB0aGUgZW5kIG9mIGF1dG9jb3JyZWN0ZWQgd29yZCBhbmQgcGF1c2Vz
LCB3ZSBzaG93IHRoZSBwYW5lbApAQCAtNDI2LDI4ICs0NzIsMTUgQEAgdm9pZCBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24KICAgICAgICAgcmV0dXJuOwogCiAgICAgTm9kZSogbm9kZSA9IHBvc2l0aW9uLmNv
bnRhaW5lck5vZGUoKTsKLSAgICBpbnQgZW5kT2Zmc2V0ID0gcG9zaXRpb24ub2Zmc2V0SW5Db250
YWluZXJOb2RlKCk7CiAgICAgVmVjdG9yPERvY3VtZW50TWFya2VyKj4gbWFya2VycyA9IG5vZGUt
PmRvY3VtZW50KCktPm1hcmtlcnMoKS0+bWFya2Vyc0Zvcihub2RlKTsKICAgICBzaXplX3QgbWFy
a2VyQ291bnQgPSBtYXJrZXJzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1h
cmtlckNvdW50OyArK2kpIHsKICAgICAgICAgY29uc3QgRG9jdW1lbnRNYXJrZXIqIG1hcmtlciA9
IG1hcmtlcnNbaV07Ci0gICAgICAgIGlmICghc2hvdWxkU3RhcnRUaW1lckZvcihtYXJrZXIsIGVu
ZE9mZnNldCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgUmVmUHRyPFJhbmdlPiB3
b3JkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIG5vZGUsIG1hcmtl
ci0+c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgIFN0
cmluZyBjdXJyZW50V29yZCA9IHBsYWluVGV4dCh3b3JkUmFuZ2UuZ2V0KCkpOwotICAgICAgICBp
ZiAoIWN1cnJlbnRXb3JkLmxlbmd0aCgpKQorICAgICAgICBpZiAoIW1hcmtlcikKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhB
bHRlcm5hdGl2ZSA9IHdvcmRSYW5nZTsKLSAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLm9y
aWdpbmFsVGV4dCA9IGN1cnJlbnRXb3JkOwotICAgICAgICBpZiAobWFya2VyLT50eXBlKCkgPT0g
RG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nKQotICAgICAgICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRl
eHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVTcGVsbGluZ1N1Z2dlc3Rpb25zKTsKLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBtX2FsdGVybmF0aXZlVGV4dEluZm8uZGV0YWlscyA9IEF1
dG9jb3JyZWN0aW9uQWx0ZXJuYXRpdmVEZXRhaWxzOjpjcmVhdGUobWFya2VyLT5kZXNjcmlwdGlv
bigpKTsKLSAgICAgICAgICAgIHN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcihBbHRlcm5hdGl2
ZVRleHRUeXBlUmV2ZXJzaW9uKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJyZWFrOworICAgICAg
ICBpZiAocmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQoKm1hcmtlciwgcG9zaXRpb24sIG9wdGlv
bnMpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC01OTgsNyArNjMxLDYyIEBA
IGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cHJvY2Vzc01hcmtlcnNPblRleHRUb0Jl
UmVwbGFjZWRCeVJlc3VsdChjb25zdCBUCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KLSAgICAKKwor
Ym9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpzaG91bGRTdGFydFRpbWVyRm9yKGNvbnN0
IFdlYkNvcmU6OkRvY3VtZW50TWFya2VyICZtYXJrZXIsIGludCBlbmRPZmZzZXQpIGNvbnN0Cit7
CisgICAgcmV0dXJuICgoKG1hcmtlci50eXBlKCkgPT0gRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2Vt
ZW50ICYmICFtYXJrZXIuZGVzY3JpcHRpb24oKS5pc051bGwoKSkgfHwgbWFya2VyLnR5cGUoKSA9
PSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcgfHwgbWFya2VyLnR5cGUoKSA9PSBEb2N1bWVudE1h
cmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzKSAmJiBzdGF0aWNfY2FzdDxpbnQ+KG1hcmtlci5l
bmRPZmZzZXQoKSkgPT0gZW5kT2Zmc2V0KTsKK30KKworYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZChjb25zdCBEb2N1bWVudE1hcmtlciYg
bWFya2VyLCBjb25zdCBQb3NpdGlvbiYgZW5kT2ZXb3JkUG9zaXRpb24sIEZyYW1lU2VsZWN0aW9u
OjpTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMpCit7CisgICAgaWYgKG9wdGlvbnMgJiBGcmFt
ZVNlbGVjdGlvbjo6RGljdGF0aW9uVHJpZ2dlcmVkKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFzaG91bGRTdGFydFRpbWVyRm9yKG1hcmtlciwgZW5kT2ZXb3JkUG9zaXRpb24ub2Zm
c2V0SW5Db250YWluZXJOb2RlKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgTm9kZSog
bm9kZSA9IGVuZE9mV29yZFBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKTsKKyAgICBSZWZQdHI8UmFu
Z2U+IHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9mcmFtZS0+ZG9jdW1lbnQoKSwgbm9kZSwg
bWFya2VyLnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7CisgICAgaWYg
KCF3b3JkUmFuZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTdHJpbmcgY3VycmVudFdv
cmQgPSBwbGFpblRleHQod29yZFJhbmdlLmdldCgpKTsKKyAgICBpZiAoIWN1cnJlbnRXb3JkLmxl
bmd0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9hbHRlcm5hdGl2ZVRleHRJbmZv
Lm9yaWdpbmFsVGV4dCA9IGN1cnJlbnRXb3JkOworICAgIHN3aXRjaCAobWFya2VyLnR5cGUoKSkg
eworICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nOgorICAgICAgICBtX2FsdGVybmF0
aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1f
YWx0ZXJuYXRpdmVUZXh0SW5mby5kZXRhaWxzID0gQXV0b2NvcnJlY3Rpb25BbHRlcm5hdGl2ZURl
dGFpbHM6OmNyZWF0ZSgiIik7CisgICAgICAgIHN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcihB
bHRlcm5hdGl2ZVRleHRUeXBlU3BlbGxpbmdTdWdnZXN0aW9ucyk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50OgorICAgICAgICBtX2FsdGVybmF0
aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1f
YWx0ZXJuYXRpdmVUZXh0SW5mby5kZXRhaWxzID0gQXV0b2NvcnJlY3Rpb25BbHRlcm5hdGl2ZURl
dGFpbHM6OmNyZWF0ZShtYXJrZXIuZGVzY3JpcHRpb24oKSk7CisgICAgICAgIHN0YXJ0QWx0ZXJu
YXRpdmVUZXh0VUlUaW1lcihBbHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9uKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzOiB7
CisgICAgICAgIGNvbnN0IERpY3RhdGlvbk1hcmtlckRldGFpbHMqIG1hcmtlckRldGFpbHMgPSBz
dGF0aWNfY2FzdDxjb25zdCBEaWN0YXRpb25NYXJrZXJEZXRhaWxzKj4obWFya2VyLmRldGFpbHMo
KSk7CisgICAgICAgIGlmICghbWFya2VyRGV0YWlscykKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgaWYgKGN1cnJlbnRXb3JkICE9IG1hcmtlckRldGFpbHMtPm9yaWdpbmFsVGV4
dCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtX2FsdGVybmF0aXZlVGV4
dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1fYWx0ZXJu
YXRpdmVUZXh0SW5mby5kZXRhaWxzID0gRGljdGF0aW9uQWx0ZXJuYXRpdmVEZXRhaWxzOjpjcmVh
dGUobWFya2VyRGV0YWlscy0+ZGljdGF0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgc3RhcnRBbHRl
cm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0YXRpb25BbHRlcm5hdGl2
ZXMpOworICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworU3RyaW5nIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Om1hcmtlckRlc2NyaXB0aW9u
Rm9yQXBwbGllZEFsdGVybmF0aXZlVGV4dChBbHRlcm5hdGl2ZVRleHRUeXBlIGFsdGVybmF0aXZl
VGV4dFR5cGUsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIG1hcmtlclR5cGUpCit7CisgICAg
aWYgKGFsdGVybmF0aXZlVGV4dFR5cGUgIT0gQWx0ZXJuYXRpdmVUZXh0VHlwZVJldmVyc2lvbiAm
JiAobWFya2VyVHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQgfHwgbWFya2VyVHlw
ZSA9PSBEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3RlZCkpCisgICAgICAgIHJldHVybiBtX2Fs
dGVybmF0aXZlVGV4dEluZm8ub3JpZ2luYWxUZXh0OworICAgIHJldHVybiAiIjsKK30KKwogI2Vu
ZGlmCiAKIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aW5zZXJ0RGljdGF0ZWRUZXh0
KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiYg
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50KQpAQCAtNjI0LDQg
KzcxMiw0OCBAQCBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Omluc2VydERpY3RhdGVk
VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlYwogICAgIHJldHVybiBldmVudC0+ZGVm
YXVsdEhhbmRsZWQoKTsKIH0KIAordm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZW1v
dmVEaWN0YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIoY29uc3QgRG9jdW1lbnRNYXJrZXIqIG1h
cmtlcikKK3sKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBEaWN0YXRpb25N
YXJrZXJEZXRhaWxzKiBkZXRhaWxzID0gc3RhdGljX2Nhc3Q8RGljdGF0aW9uTWFya2VyRGV0YWls
cyo+KG1hcmtlci0+ZGV0YWlscygpKTsKKyAgICBpZiAoQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBj
bGllbnQgPSBhbHRlcm5hdGl2ZVRleHRDbGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5yZW1vdmVE
aWN0YXRpb25BbHRlcm5hdGl2ZXMoZGV0YWlscy0+ZGljdGF0aW9uQ29udGV4dCgpKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKG1hcmtlcik7CisjZW5kaWYKK30KKworVmVjdG9yPFN0cmluZz4g
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2Vy
KGNvbnN0IERvY3VtZW50TWFya2VyKiBtYXJrZXIpCit7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRF
Uk5BVElWRVMpCisgICAgQVNTRVJUKG1hcmtlci0+dHlwZSgpID09IERvY3VtZW50TWFya2VyOjpE
aWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgIGlmIChBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGNs
aWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgpKSB7CisgICAgICAgIERpY3RhdGlvbk1hcmtl
ckRldGFpbHMqIGRldGFpbHMgPSBzdGF0aWNfY2FzdDxEaWN0YXRpb25NYXJrZXJEZXRhaWxzKj4o
bWFya2VyLT5kZXRhaWxzKCkpOworICAgICAgICByZXR1cm4gY2xpZW50LT5kaWN0YXRpb25BbHRl
cm5hdGl2ZXMoZGV0YWlscy0+ZGljdGF0aW9uQ29udGV4dCgpKTsKKyAgICB9CisgICAgcmV0dXJu
IFZlY3RvcjxTdHJpbmc+KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShtYXJrZXIpOworICAg
IHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworI2VuZGlmCit9CisKK3ZvaWQgQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlcjo6YXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZShjb25zdCBTdHJpbmcmIGFs
dGVybmF0aXZlU3RyaW5nKQoreworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAg
IEVkaXRvciogZWRpdG9yID0gbV9mcmFtZS0+ZWRpdG9yKCk7CisgICAgUmVmUHRyPFJhbmdlPiBz
ZWxlY3Rpb24gPSBlZGl0b3ItPnNlbGVjdGVkUmFuZ2UoKTsKKyAgICBpZiAoIXNlbGVjdGlvbiB8
fCAhZWRpdG9yLT5zaG91bGRJbnNlcnRUZXh0KGFsdGVybmF0aXZlU3RyaW5nLCBzZWxlY3Rpb24u
Z2V0KCksIEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpCisgICAgICAgIHJldHVybjsKKyAgICBE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIqIG1hcmtlcnMgPSBzZWxlY3Rpb24tPnN0YXJ0Q29udGFp
bmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKTsKKyAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIq
PiBkaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXJzID0gbWFya2Vycy0+bWFya2Vyc0luUmFuZ2Uo
c2VsZWN0aW9uLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcnMu
c2l6ZSgpOyArK2kpCisgICAgICAgIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlc0Zvck1hcmtl
cihkaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXJzW2ldKTsKKworICAgIGFwcGx5QWx0ZXJuYXRp
dmVUZXh0VG9SYW5nZShzZWxlY3Rpb24uZ2V0KCksIGFsdGVybmF0aXZlU3RyaW5nLCBBbHRlcm5h
dGl2ZVRleHRUeXBlRGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBtYXJrZXJUeXBlc0ZvckFwcGxpZWRE
aWN0YXRpb25BbHRlcm5hdGl2ZSgpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGFsdGVybmF0
aXZlU3RyaW5nKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCmluZGV4
IDI4NDQ5ZWZkOTNlNTc0MGEwOWUzNWI2NTRiODliNTBjNzk4MDhkOWIuLmI3NmEwMDgyYzQ1NWE3
ZmY4MDdiN2E2NGViNjgyYmQ4MzFlN2Y2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlICJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudE1hcmtl
ci5oIgorI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNp
bmNsdWRlICJUZXh0Q2hlY2tpbmcuaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtMTA4LDcgKzEw
OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbmRUb1VuYXBwbGllZFNwZWxsQ29ycmVjdGlv
bihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBjb3JyZWN0ZWQsIGNvbnN0
IFN0cmluZyYgY29ycmVjdGlvbikgVU5MRVNTX0VOQUJMRUQoeyBVTlVTRURfUEFSQU0oY29ycmVj
dGVkKTsgVU5VU0VEX1BBUkFNKGNvcnJlY3Rpb24pOyB9KQogICAgIHZvaWQgcmVzcG9uZFRvQXBw
bGllZEVkaXRpbmcoQ29tcG9zaXRlRWRpdENvbW1hbmQqKSBVTkxFU1NfRU5BQkxFRCh7IH0pCiAg
ICAgdm9pZCByZXNwb25kVG9VbmFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24q
KSBVTkxFU1NfRU5BQkxFRCh7IH0pCi0gICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9u
KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbikgVU5MRVNTX0VOQUJMRUQoeyBV
TlVTRURfUEFSQU0ob2xkU2VsZWN0aW9uKTsgfSkKKyAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRT
ZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBGcmFtZVNlbGVj
dGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucykgVU5MRVNTX0VOQUJMRUQoeyBVTlVTRURfUEFSQU0o
b2xkU2VsZWN0aW9uKTsgfSkKIAogICAgIHZvaWQgc3RvcFBlbmRpbmdDb3JyZWN0aW9uKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbikgVU5MRVNTX0VOQUJMRUQoeyBVTlVTRURf
UEFSQU0ob2xkU2VsZWN0aW9uKTsgfSkKICAgICB2b2lkIGFwcGx5UGVuZGluZ0NvcnJlY3Rpb24o
Y29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uQWZ0ZXJUeXBpbmcpIFVOTEVTU19FTkFC
TEVEKHsgVU5VU0VEX1BBUkFNKHNlbGVjdGlvbkFmdGVyVHlwaW5nKTsgfSkKQEAgLTEzMCwyMCAr
MTMxLDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZWRBdXRvY29ycmVjdGlvbkF0UG9zaXRp
b24oY29uc3QgUG9zaXRpb24mLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsU3RyaW5nKSBVTkxFU1Nf
RU5BQkxFRCh7IFVOVVNFRF9QQVJBTShvcmlnaW5hbFN0cmluZyk7IH0pCiAKICAgICBib29sIGlu
c2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0
ZXJuYXRpdmU+JiwgRXZlbnQqKTsKKyAgICB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZl
c0Zvck1hcmtlcihjb25zdCBEb2N1bWVudE1hcmtlciopOworICAgIFZlY3RvcjxTdHJpbmc+IGRp
Y3RhdGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcihjb25zdCBEb2N1bWVudE1hcmtlciopOworICAg
IHZvaWQgYXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZShjb25zdCBTdHJpbmcmIGFsdGVybmF0aXZl
U3RyaW5nKTsKIAogcHJpdmF0ZToKICNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAg
U3RyaW5nIGRpc21pc3NTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpOwot
ICAgIHZvaWQgYXBwbHlBbHRlcm5hdGl2ZVRleHQoY29uc3QgU3RyaW5nJiBhbHRlcm5hdGl2ZSwg
Y29uc3QgVmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiYpOworICAgIHR5cGVkZWYg
U3RyaW5nKF5NYXJrZXJEZXNjcmlwdGlvblN1cHBsaWVyKShBbHRlcm5hdGl2ZVRleHRUeXBlLCBE
b2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7CisgICAgdm9pZCBhcHBseUFsdGVybmF0aXZlVGV4
dFRvUmFuZ2UoY29uc3QgUmFuZ2UqLCBjb25zdCBTdHJpbmcmIGFsdGVybmF0aXZlLCBBbHRlcm5h
dGl2ZVRleHRUeXBlLCBjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+Jiwg
TWFya2VyRGVzY3JpcHRpb25TdXBwbGllciA9IDApOwogICAgIHZvaWQgdGltZXJGaXJlZChUaW1l
cjxBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyPiopOwogICAgIHZvaWQgcmVjb3JkQXV0b2NvcnJl
Y3Rpb25SZXNwb25zZVJldmVyc2VkKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogICAgIHZvaWQgcmVjb3JkU3BlbGxjaGVja2Vy
UmVzcG9uc2VGb3JNb2RpZmllZENvcnJlY3Rpb24oUmFuZ2UqIHJhbmdlT2ZDb3JyZWN0aW9uLCBj
b25zdCBTdHJpbmcmIGNvcnJlY3RlZCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKTsKKyAgICBT
dHJpbmcgbWFya2VyRGVzY3JpcHRpb25Gb3JBcHBsaWVkQWx0ZXJuYXRpdmVUZXh0KEFsdGVybmF0
aXZlVGV4dFR5cGUsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKIAotICAgIGJvb2wgc2hv
dWxkU3RhcnRUaW1lckZvcihjb25zdCBEb2N1bWVudE1hcmtlciogbWFya2VyLCBpbnQgZW5kT2Zm
c2V0KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICgoKG1hcmtlci0+dHlwZSgpID09IERv
Y3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCAmJiAhbWFya2VyLT5kZXNjcmlwdGlvbigpLmlzTnVs
bCgpKSAKLSAgICAgICAgICAgICAgICAgfHwgbWFya2VyLT50eXBlKCkgPT0gRG9jdW1lbnRNYXJr
ZXI6OlNwZWxsaW5nKSAmJiBzdGF0aWNfY2FzdDxpbnQ+KG1hcmtlci0+ZW5kT2Zmc2V0KCkpID09
IGVuZE9mZnNldCk7Ci0gICAgfQorICAgIGJvb2wgc2hvdWxkU3RhcnRUaW1lckZvcihjb25zdCBE
b2N1bWVudE1hcmtlciYsIGludCBlbmRPZmZzZXQpIGNvbnN0OworICAgIGJvb2wgcmVzcG9uZFRv
TWFya2VyQXRFbmRPZldvcmQoY29uc3QgRG9jdW1lbnRNYXJrZXImLCBjb25zdCBQb3NpdGlvbiYg
ZW5kT2ZXb3JkUG9zaXRpb24sIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zKTsK
IAogICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCogYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCk7CiAg
ICAgRWRpdG9yQ2xpZW50KiBlZGl0b3JDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAppbmRleCBiNDYwZWQxOTJhYTIzYTFmNTNhMTM4ZDM1NTlhZjgyNzQ2NmMxZDFkLi4xNDg5Mjg0
NTZjNGFmZTEzMDUyMGExZGQ0Y2Q3MjgzNTQzYzBkOTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCkBAIC00ODEsMTMgKzQ4MSwxMyBAQCBib29sIEVkaXRvcjo6c2hvdWxkU2hvd0RlbGV0
ZUludGVyZmFjZShIVE1MRWxlbWVudCogZWxlbWVudCkgY29uc3QKICAgICByZXR1cm4gY2xpZW50
KCkgJiYgY2xpZW50KCktPnNob3VsZFNob3dEZWxldGVJbnRlcmZhY2UoZWxlbWVudCk7CiB9CiAK
LXZvaWQgRWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIG9sZFNlbGVjdGlvbikKK3ZvaWQgRWRpdG9yOjpub3RpZnlDb21wb25lbnRzT25DaGFu
Z2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbiwgRnJhbWVT
ZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBpZiAoY2xpZW50
KCkpCiAgICAgICAgIGNsaWVudCgpLT5yZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKG1fZnJhbWUp
OwogICAgIHNldFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZSh0cnVlKTsKICAgICBtX2RlbGV0ZUJ1
dHRvbkNvbnRyb2xsZXItPnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uKTsK
LSAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rp
b24ob2xkU2VsZWN0aW9uKTsKKyAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPnJlc3Bv
bmRUb0NoYW5nZWRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uLCBvcHRpb25zKTsKIH0KIAogdm9pZCBF
ZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBl
bmRpbmdTZWxlY3Rpb24pCkBAIC03OTAsNyArNzkwLDggQEAgdm9pZCBFZGl0b3I6OmFwcGxpZWRF
ZGl0aW5nKFBhc3NSZWZQdHI8Q29tcG9zaXRlRWRpdENvbW1hbmQ+IGNtZCkKICAgICBtX2FsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXItPnJlc3BvbmRUb0FwcGxpZWRFZGl0aW5nKGNtZC5nZXQoKSk7
CiAKICAgICAvLyBEb24ndCBjbGVhciB0aGUgdHlwaW5nIHN0eWxlIHdpdGggdGhpcyBzZWxlY3Rp
b24gY2hhbmdlLiAgV2UgZG8gdGhvc2UgdGhpbmdzIGVsc2V3aGVyZSBpZiBuZWNlc3NhcnkuCi0g
ICAgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgZmFsc2UsIGZhbHNl
KTsKKyAgICBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyBvcHRpb25zID0gY21k
LT5pc0RpY3RhdGlvbkNvbW1hbmQoKSA/IEZyYW1lU2VsZWN0aW9uOjpEaWN0YXRpb25UcmlnZ2Vy
ZWQgOiAwOworICAgIGNoYW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChuZXdTZWxlY3Rpb24sIG9w
dGlvbnMpOwogCiAgICAgaWYgKCFjbWQtPnByZXNlcnZlc1R5cGluZ1N0eWxlKCkpCiAgICAgICAg
IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5jbGVhclR5cGluZ1N0eWxlKCk7CkBAIC04MTYsNyArODE3
LDcgQEAgdm9pZCBFZGl0b3I6OnVuYXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cjxFZGl0Q29tbWFu
ZENvbXBvc2l0aW9uPiBjbWQpCiAgICAgZGlzcGF0Y2hFZGl0YWJsZUNvbnRlbnRDaGFuZ2VkRXZl
bnRzKGNtZC0+c3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCksIGNtZC0+ZW5kaW5nUm9vdEVk
aXRhYmxlRWxlbWVudCgpKTsKICAgICAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlv
bihjbWQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkpOwotICAgIGNoYW5nZVNlbGVjdGlvbkFmdGVyQ29t
bWFuZChuZXdTZWxlY3Rpb24sIHRydWUsIHRydWUpOworICAgIGNoYW5nZVNlbGVjdGlvbkFmdGVy
Q29tbWFuZChuZXdTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpDbG9zZVR5cGluZyB8IEZyYW1l
U2VsZWN0aW9uOjpDbGVhclR5cGluZ1N0eWxlKTsKICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXItPnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcoY21kLmdldCgpKTsKICAgICAKICAgICBt
X2xhc3RFZGl0Q29tbWFuZCA9IDA7CkBAIC04MzIsNyArODMzLDcgQEAgdm9pZCBFZGl0b3I6OnJl
YXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cjxFZGl0Q29tbWFuZENvbXBvc2l0aW9uPiBjbWQpCiAg
ICAgZGlzcGF0Y2hFZGl0YWJsZUNvbnRlbnRDaGFuZ2VkRXZlbnRzKGNtZC0+c3RhcnRpbmdSb290
RWRpdGFibGVFbGVtZW50KCksIGNtZC0+ZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpKTsKICAg
ICAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbihjbWQtPmVuZGluZ1NlbGVjdGlv
bigpKTsKLSAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3U2VsZWN0aW9uLCB0cnVl
LCB0cnVlKTsKKyAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3U2VsZWN0aW9uLCBG
cmFtZVNlbGVjdGlvbjo6Q2xvc2VUeXBpbmcgfCBGcmFtZVNlbGVjdGlvbjo6Q2xlYXJUeXBpbmdT
dHlsZSk7CiAgICAgCiAgICAgbV9sYXN0RWRpdENvbW1hbmQgPSAwOwogICAgIGlmIChjbGllbnQo
KSkKQEAgLTIyNjcsNiArMjI2OCwxMCBAQCB2b2lkIEVkaXRvcjo6dXBkYXRlTWFya2Vyc0Zvcldv
cmRzQWZmZWN0ZWRCeUVkaXRpbmcoYm9vbCBkb05vdFJlbW92ZUlmU2VsZWN0aW9uQQogICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgUmVmUHRyPFJhbmdl
PiB3b3JkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBzdGFydE9mRmlyc3RXb3JkLmRl
ZXBFcXVpdmFsZW50KCksIGVuZE9mTGFzdFdvcmQuZGVlcEVxdWl2YWxlbnQoKSk7CiAKKyAgICBW
ZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBtYXJrZXJzID0gZG9jdW1lbnQtPm1hcmtlcnMoKS0+bWFy
a2Vyc0luUmFuZ2Uod29yZFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0
ZXJuYXRpdmVzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hcmtlcnMuc2l6ZSgpOyAr
K2kpCisgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+cmVtb3ZlRGljdGF0aW9u
QWx0ZXJuYXRpdmVzRm9yTWFya2VyKG1hcmtlcnNbaV0pOworCiAgICAgZG9jdW1lbnQtPm1hcmtl
cnMoKS0+cmVtb3ZlTWFya2Vycyh3b3JkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVs
bGluZyB8IERvY3VtZW50TWFya2VyOjpDb3JyZWN0aW9uSW5kaWNhdG9yIHwgRG9jdW1lbnRNYXJr
ZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24gfCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0
ZXJuYXRpdmVzLCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRpYWxseU92ZXJs
YXBwaW5nTWFya2VyKTsKICAgICBkb2N1bWVudC0+bWFya2VycygpLT5jbGVhckRlc2NyaXB0aW9u
T25NYXJrZXJzSW50ZXJzZWN0aW5nUmFuZ2Uod29yZFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtl
cjo6UmVwbGFjZW1lbnQpOwogfQpAQCAtMjQxNCw3ICsyNDE5LDcgQEAgdm9pZCBFZGl0b3I6OmRp
c21pc3NDb3JyZWN0aW9uUGFuZWxBc0lnbm9yZWQoKQogICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlci0+ZGlzbWlzcyhSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0SWdub3Jl
ZCk7CiB9CiAKLXZvaWQgRWRpdG9yOjpjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQoY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9uLCBib29sIGNsb3NlVHlwaW5nLCBib29sIGNs
ZWFyVHlwaW5nU3R5bGUpCit2b2lkIEVkaXRvcjo6Y2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5k
KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgIEZyYW1lU2VsZWN0aW9uOjpT
ZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgLy8gSWYgdGhlIG5ldyBzZWxlY3Rp
b24gaXMgb3JwaGFuZWQsIHRoZW4gZG9uJ3QgdXBkYXRlIHRoZSBzZWxlY3Rpb24uCiAgICAgaWYg
KG5ld1NlbGVjdGlvbi5zdGFydCgpLmlzT3JwaGFuKCkgfHwgbmV3U2VsZWN0aW9uLmVuZCgpLmlz
T3JwaGFuKCkpCkBAIC0yNDI1LDE0ICsyNDMwLDggQEAgdm9pZCBFZGl0b3I6OmNoYW5nZVNlbGVj
dGlvbkFmdGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIGIK
ICAgICAvLyBUaGUgb2xkIHNlbGVjdGlvbiBjYW4gYmUgaW52YWxpZCBoZXJlIGFuZCBjYWxsaW5n
IHNob3VsZENoYW5nZVNlbGVjdGlvbiBjYW4gcHJvZHVjZSBzb21lIHN0cmFuZ2UgY2FsbHMuCiAg
ICAgLy8gU2VlIDxyZGFyOi8vcHJvYmxlbS81NzI5MzE1PiBTb21lIHNob3VsZENoYW5nZVNlbGVj
dGVkRE9NUmFuZ2UgY29udGFpbiBSYW5nZXMgZm9yIHNlbGVjdGlvbnMgdGhhdCBhcmUgbm8gbG9u
Z2VyIHZhbGlkCiAgICAgYm9vbCBzZWxlY3Rpb25EaWROb3RDaGFuZ2VET01Qb3NpdGlvbiA9IG5l
d1NlbGVjdGlvbiA9PSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCk7Ci0gICAgaWYg
KHNlbGVjdGlvbkRpZE5vdENoYW5nZURPTVBvc2l0aW9uIHx8IG1fZnJhbWUtPnNlbGVjdGlvbigp
LT5zaG91bGRDaGFuZ2VTZWxlY3Rpb24obmV3U2VsZWN0aW9uKSkgewotICAgICAgICBGcmFtZVNl
bGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyBvcHRpb25zID0gMDsKLSAgICAgICAgaWYgKGNs
b3NlVHlwaW5nKQotICAgICAgICAgICAgb3B0aW9ucyB8PSBGcmFtZVNlbGVjdGlvbjo6Q2xvc2VU
eXBpbmc7Ci0gICAgICAgIGlmIChjbGVhclR5cGluZ1N0eWxlKQotICAgICAgICAgICAgb3B0aW9u
cyB8PSBGcmFtZVNlbGVjdGlvbjo6Q2xlYXJUeXBpbmdTdHlsZTsKKyAgICBpZiAoc2VsZWN0aW9u
RGlkTm90Q2hhbmdlRE9NUG9zaXRpb24gfHwgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNob3VsZENo
YW5nZVNlbGVjdGlvbihuZXdTZWxlY3Rpb24pKQogICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24o
KS0+c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgb3B0aW9ucyk7Ci0gICAgfQogCiAgICAgLy8g
U29tZSBlZGl0aW5nIG9wZXJhdGlvbnMgY2hhbmdlIHRoZSBzZWxlY3Rpb24gdmlzdWFsbHkgd2l0
aG91dCBhZmZlY3RpbmcgaXRzIHBvc2l0aW9uIHdpdGhpbiB0aGUgRE9NLgogICAgIC8vIEZvciBl
eGFtcGxlIHdoZW4geW91IHByZXNzIHJldHVybiBpbiB0aGUgZm9sbG93aW5nICh0aGUgY2FyZXQg
aXMgbWFya2VkIGJ5IF4pOgpAQCAtMjgyNyw3ICsyODI2LDcgQEAgdm9pZCBFZGl0b3I6OnJlc3Bv
bmRUb0NoYW5nZWRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9u
LCBGcmEKICAgICBpZiAoIWlzQ29udGludW91c0dyYW1tYXJDaGVja2luZ0VuYWJsZWQpCiAgICAg
ICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+cmVtb3ZlTWFya2VycyhEb2N1bWVu
dE1hcmtlcjo6R3JhbW1hcik7CiAKLSAgICByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKG9sZFNl
bGVjdGlvbik7CisgICAgbm90aWZ5Q29tcG9uZW50c09uQ2hhbmdlZFNlbGVjdGlvbihvbGRTZWxl
Y3Rpb24sIG9wdGlvbnMpOwogfQogCiBzdGF0aWMgTm9kZSogZmluZEZpcnN0TWFya2FibGUoTm9k
ZSogbm9kZSkKQEAgLTI5MTgsNCArMjkxNywxNCBAQCB2b2lkIEVkaXRvcjo6d2lsbERldGFjaFBh
Z2UoKQogICAgICAgICBlZGl0b3JDbGllbnQtPmZyYW1lV2lsbERldGFjaFBhZ2UoZnJhbWUoKSk7
CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IEVkaXRvcjo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFy
a2VyKGNvbnN0IERvY3VtZW50TWFya2VyKiBtYXJrZXIpCit7CisgICAgcmV0dXJuIG1fYWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci0+ZGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKG1hcmtl
cik7Cit9CisKK3ZvaWQgRWRpdG9yOjphcHBseURpY3RhdGlvbkFsdGVybmF0aXZlbHRlcm5hdGl2
ZShjb25zdCBTdHJpbmcmIGFsdGVybmF0aXZlU3RyaW5nKQoreworICAgIG1fYWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlci0+YXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZShhbHRlcm5hdGl2ZVN0cmlu
Zyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmlu
ZGV4IGYwZTVjMjRlNjViOTFmNjM1NzAxYzUzNTllMDlkYzFkYzdhYjdlZGMuLmNiMTBiYzVhZjZh
MGI2Yjg1MjhjZmFkYzMyZGYyODJiNDg1NjM4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApA
QCAtMTM0LDggKzEzNCw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZFNob3dEZWxldGVJbnRl
cmZhY2UoSFRNTEVsZW1lbnQqKSBjb25zdDsKICAgICBib29sIHNob3VsZERlbGV0ZVJhbmdlKFJh
bmdlKikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKFN0eWxlUHJvcGVydHlTZXQq
LCBSYW5nZSopOwotICAgIAotICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24pOworCiAgICAgdm9pZCByZXNwb25kVG9D
aGFuZ2VkQ29udGVudHMoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZW5kaW5nU2VsZWN0aW9uKTsK
IAogICAgIGJvb2wgc2VsZWN0aW9uU3RhcnRIYXNTdHlsZShDU1NQcm9wZXJ0eUlELCBjb25zdCBT
dHJpbmcmIHZhbHVlKSBjb25zdDsKQEAgLTM5NSw3ICszOTQsOCBAQCBwdWJsaWM6CiAKICAgICBF
ZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3IgZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcigpIGNvbnN0
IHsgcmV0dXJuIG1fZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcjsgfQogICAgIHZvaWQgc2V0RGVm
YXVsdFBhcmFncmFwaFNlcGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3Igc2VwYXJhdG9y
KSB7IG1fZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvciA9IHNlcGFyYXRvcjsgfQotCisgICAgVmVj
dG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKGNvbnN0IERvY3VtZW50
TWFya2VyKik7CisgICAgdm9pZCBhcHBseURpY3RhdGlvbkFsdGVybmF0aXZlbHRlcm5hdGl2ZShj
b25zdCBTdHJpbmcmIGFsdGVybmF0aXZlU3RyaW5nKTsKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxEZXRhY2hQYWdlKCkgT1ZFUlJJREU7CiAKQEAgLTQyOSw3ICs0MjksOCBAQCBwcml2
YXRlOgogICAgIGVudW0gU2V0Q29tcG9zaXRpb25Nb2RlIHsgQ29uZmlybUNvbXBvc2l0aW9uLCBD
YW5jZWxDb21wb3NpdGlvbiB9OwogICAgIHZvaWQgc2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5n
JiwgU2V0Q29tcG9zaXRpb25Nb2RlKTsKIAotICAgIHZvaWQgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJD
b21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgYm9vbCBjbG9zZVR5
cGluZywgYm9vbCBjbGVhclR5cGluZ1N0eWxlKTsKKyAgICB2b2lkIGNoYW5nZVNlbGVjdGlvbkFm
dGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIEZyYW1lU2Vs
ZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zKTsKKyAgICB2b2lkIG5vdGlmeUNvbXBvbmVudHNP
bkNoYW5nZWRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBG
cmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyk7CiAKICAgICBOb2RlKiBmaW5kRXZl
bnRUYXJnZXRGcm9tU2VsZWN0aW9uKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJh
bWVTZWxlY3Rpb24uaAppbmRleCA4ZmM0MmVjY2UwMzYyMDJhN2YwMjg0MGEwZTVkMTM0ZGM2NWRm
YjA4Li40ZDdmOTg3NzU5NWMyNjQzMzJiZWQ4OGYzYTQ1OGFkODFiNzZkNDMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCkBAIC0xMTgsNiArMTE4LDcgQEAgcHVibGlj
OgogICAgICAgICBDbGVhclR5cGluZ1N0eWxlID0gMSA8PCAyLAogICAgICAgICBTcGVsbENvcnJl
Y3Rpb25UcmlnZ2VyZWQgPSAxIDw8IDMsCiAgICAgICAgIERvTm90U2V0Rm9jdXMgPSAxIDw8IDQs
CisgICAgICAgIERpY3RhdGlvblRyaWdnZXJlZCA9IDEgPDwgNQogICAgIH07CiAgICAgdHlwZWRl
ZiB1bnNpZ25lZCBTZXRTZWxlY3Rpb25PcHRpb25zOyAvLyBVbmlvbiBvZiB2YWx1ZXMgaW4gU2V0
U2VsZWN0aW9uT3B0aW9uIGFuZCBFVXNlclRyaWdnZXJlZAogICAgIHN0YXRpYyBpbmxpbmUgRVVz
ZXJUcmlnZ2VyZWQgc2VsZWN0aW9uT3B0aW9uc1RvVXNlclRyaWdnZXJlZChTZXRTZWxlY3Rpb25P
cHRpb25zIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9B
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzYjNlODhhODBjYjlj
ZDljZGVjNjRiYzU2OTVlZjFiZmQxZDViY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaApAQCAtMCwwICsx
LDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXJf
aAorI2RlZmluZSBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXJfaAorCisjaW5jbHVkZSAiQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBVU0UoRElD
VEFUSU9OX0FMVEVSTkFUSVZFUykKK09CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOworT0JK
Q19DTEFTUyBOU1ZpZXc7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyIHsKK3B1YmxpYzoKKyAgICBBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIoKSB7IH0KKyAgICAvLyBSZXR1cm5zIGEgY29udGV4dCBJRC4KKyAgICB1aW50NjRfdCBh
ZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKKyAg
ICB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCBzaG93QWx0ZXJuYXRpdmVzKE5TVmlldyosIGNvbnN0
IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlByaW1hcnlTdHJpbmcsIHVpbnQ2NF90IGNvbnRleHQs
IHZvaWQoXmFjY2VwdGFuY2VIYW5kbGVyKShOU1N0cmluZyopKTsKKyAgICB2b2lkIGRpc21pc3NB
bHRlcm5hdGl2ZXMoKTsKKyAgICB2b2lkIHJlbW92ZUFsdGVybmF0aXZlcyh1aW50NjRfdCBjb250
ZXh0KTsKKyAgICBWZWN0b3I8U3RyaW5nPiBhbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90
IGNvbnRleHQpOworCitwcml2YXRlOgorICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2
ZShOU1N0cmluZyogYWNjZXB0ZWRBbHRlcm5hdGl2ZSwgdWludDY0X3QgY29udGV4dCwgTlNUZXh0
QWx0ZXJuYXRpdmVzKik7CisKKyAgICBjbGFzcyBBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9s
bGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xs
ZXIoKSB7IH0KKyAgICAgICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0
cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7CisgICAgICAgIHZvaWQgY2xlYXIoKTsKKyAgICAgICAg
TlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRl
eHQpOworICAgICAgICB2b2lkIHJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3Qg
Y29udGV4dCk7CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBpbnZhbGlkQ29udGV4dCA9
IDA7CisgICAgcHJpdmF0ZToKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZXRh
aW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiA+IEhhc2hNYXBUeXBlOworICAgICAgICBIYXNoTWFw
VHlwZSBtX2FsdGVybmF0aXZlc09iamVjdE1hcDsKKyAgICB9OworCisgICAgQWxlcm5hdGl2ZVRl
eHRDb250ZXh0Q29udHJvbGxlciBtX2NvbnRleHRDb250cm9sbGVyOworICAgIFJldGFpblB0cjxO
U1ZpZXc+IG1fdmlldzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisj
ZW5kaWYgLy8gQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wYjk2M2VmYzczMjdhNWI3NTQ4YzJhMjE5MWIwZTFhMDVmNzA2ZGFmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyLm1tCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCIKKworI2lm
IFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorI2ltcG9ydCA8QXBwS2l0L05TU3BlbGxDaGVj
a2VyLmg+CisjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CisjaW1wb3J0IDxB
cHBLaXQvTlNWaWV3Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordWludDY0X3QgQWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjph
ZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mIGFsdGVy
bmF0aXZlcykKK3sKKyAgICB1aW50NjRfdCBjb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50
NjRfdD4oYWx0ZXJuYXRpdmVzLmdldCgpKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJl
dHVybiBpbnZhbGlkQ29udGV4dDsKKyAgICBpZiAoYWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250
ZXh0KSkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQ7CisKKyAgICBIYXNoTWFwVHlwZTo6QWRkUmVz
dWx0IHJlc3VsdCA9IG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmFkZChjb250ZXh0LCBhbHRlcm5h
dGl2ZXMpOworICAgIHJldHVybiByZXN1bHQuaXNOZXdFbnRyeSA/IGNvbnRleHQgOiBpbnZhbGlk
Q29udGV4dDsKK30KKworTlNUZXh0QWx0ZXJuYXRpdmVzKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlc0ZvckNv
bnRleHQodWludDY0X3QgY29udGV4dCkKK3sKKyAgICBIYXNoTWFwVHlwZTo6Y29uc3RfaXRlcmF0
b3IgaXRyID0gbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuZmluZChjb250ZXh0KTsKKyAgICBpZiAo
aXRyID09IG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gTlVM
TDsKKyAgICByZXR1cm4gaXRyLT5zZWNvbmQuZ2V0KCk7Cit9CisKK3ZvaWQgQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjpyZW1vdmVB
bHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpCit7CisgICAgbV9hbHRlcm5h
dGl2ZXNPYmplY3RNYXAucmVtb3ZlKGNvbnRleHQpOworfQorCit2b2lkIEFsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6Y2xlYXIoKQor
eworICAgIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmNsZWFyKCk7Cit9CisKK3VpbnQ2NF90IEFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0
cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBhbHRlcm5hdGl2ZXMpCit7CisgICAgcmV0dXJuIG1fY29u
dGV4dENvbnRyb2xsZXIuYWRkQWx0ZXJuYXRpdmVzKGFsdGVybmF0aXZlcyk7Cit9CisKK1ZlY3Rv
cjxTdHJpbmc+IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29u
dGV4dCh1aW50NjRfdCBjb250ZXh0KQoreworICAgIE5TVGV4dEFsdGVybmF0aXZlcyogdGV4dEFs
dGVybmF0aXZlcyA9IG1fY29udGV4dENvbnRyb2xsZXIuYWx0ZXJuYXRpdmVzRm9yQ29udGV4dChj
b250ZXh0KTsKKyAgICBWZWN0b3I8U3RyaW5nPiBhbHRlcm5hdGl2ZVN0cmluZ3M7CisgICAgZm9y
IChOU1N0cmluZyogc3RyaW5nIGluIHRleHRBbHRlcm5hdGl2ZXMuYWx0ZXJuYXRpdmVTdHJpbmdz
KQorICAgICAgICBhbHRlcm5hdGl2ZVN0cmluZ3MuYXBwZW5kKHN0cmluZyk7CisgICAgcmV0dXJu
IGFsdGVybmF0aXZlU3RyaW5nczsKK30KKwordm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXI6OmNsZWFyKCkKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0Q29udHJvbGxlci5jbGVhcigpOwor
fQorCit2b2lkIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6c2hvd0FsdGVybmF0aXZlcyhO
U1ZpZXcqIHZpZXcsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlByaW1hcnlTdHJpbmcs
IHVpbnQ2NF90IGNvbnRleHQsIHZvaWQoXmFjY2VwdGFuY2VIYW5kbGVyKShOU1N0cmluZyopKQor
eworICAgIGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fdmlldyA9IHZpZXc7CisgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRl
cm5hdGl2ZXMgPSBtX2NvbnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29u
dGV4dCk7CisgICAgaWYgKCFhbHRlcm5hdGl2ZXMpCisgICAgICAgIHJldHVybjsKKyAgICBOU1Nw
ZWxsQ2hlY2tlciogc3BlbGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hl
Y2tlcl07CisgICAgW3NwZWxsQ2hlY2tlciBzaG93Q29ycmVjdGlvbkluZGljYXRvck9mVHlwZTpO
U0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlR3Vlc3NlcyBwcmltYXJ5U3RyaW5nOmFsdGVybmF0aXZl
cy5wcmltYXJ5U3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZXMuYWx0ZXJuYXRp
dmVTdHJpbmdzIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUHJpbWFyeVN0cmluZyB2aWV3
Om1fdmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nKiBhY2NlcHRlZFN0cmlu
ZykgeworICAgICAgICBpZiAoYWNjZXB0ZWRTdHJpbmcpIHsKKyAgICAgICAgICAgIGhhbmRsZUFj
Y2VwdGVkQWx0ZXJuYXRpdmUoYWNjZXB0ZWRTdHJpbmcsIGNvbnRleHQsIGFsdGVybmF0aXZlcyk7
CisgICAgICAgICAgICBhY2NlcHRhbmNlSGFuZGxlcihhY2NlcHRlZFN0cmluZyk7CisgICAgICAg
IH0KKyAgICB9XTsKK30KKwordm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmhhbmRs
ZUFjY2VwdGVkQWx0ZXJuYXRpdmUoTlNTdHJpbmcqIGFjY2VwdGVkQWx0ZXJuYXRpdmUsIHVpbnQ2
NF90IGNvbnRleHQsIE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVzKQoreworICAgIFth
bHRlcm5hdGl2ZXMgbm90ZVNlbGVjdGVkQWx0ZXJuYXRpdmVTdHJpbmc6YWNjZXB0ZWRBbHRlcm5h
dGl2ZV07CisgICAgbV9jb250ZXh0Q29udHJvbGxlci5yZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250
ZXh0KGNvbnRleHQpOworICAgIG1fdmlldy5jbGVhcigpOworfQorCit2b2lkIEFsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlcjo6ZGlzbWlzc0FsdGVybmF0aXZlcygpCit7CisgICAgaWYgKCFtX3Zp
ZXcpCisgICAgICAgIHJldHVybjsKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hl
Y2tlcl0gZGlzbWlzc0NvcnJlY3Rpb25JbmRpY2F0b3JGb3JWaWV3Om1fdmlldy5nZXQoKV07Cit9
CisKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpyZW1vdmVBbHRlcm5hdGl2ZXMo
dWludDY0X3QgY29udGV4dCkKK3sKKyAgICBtX2NvbnRleHRDb250cm9sbGVyLnJlbW92ZUFsdGVy
bmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCk7Cit9Cit9CisjZW5kaWYgLy8gVVNFKERJQ1RBVElP
Tl9BTFRFUk5BVElWRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9U
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1Rl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwOWUxZTlkMWI4MTZhZmQxNTI1
OTc2ZmY5ZTUyY2VhYWQ4Zjg0NTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaApAQCAtMCwwICsxLDUzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VfaAorI2RlZmluZSBU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VfaAorCisjaW5jbHVkZSAiQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50LmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgVVNFKERJQ1RBVElPTl9B
TFRFUk5BVElWRVMpCitPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKK3N0
cnVjdCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UgeworICAgIFRleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZShOU1RleHRBbHRlcm5hdGl2ZXMqIGFuQWx0ZXJuYXRpdmVzLCBOU1JhbmdlIGFSYW5nZSk7
CisgICAgTlNSYW5nZSByYW5nZTsKKyAgICBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiBh
bHRlcm5hdGl2ZXM7Cit9OworCit2b2lkIGNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVz
KE5TQXR0cmlidXRlZFN0cmluZyosIFZlY3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBh
bHRlcm5hdGl2ZXMpOworCisjZWxzZQorc3RydWN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSB7
IH07CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWE1OGY4OTRmOGVl
ZjVlNjM1YTg3OWEwYjc4MTBkZmQ0YzJmZTFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tCkBAIC0wLDAgKzEs
NTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UuaCIKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorI2lt
cG9ydCA8QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZTo6VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlKE5T
VGV4dEFsdGVybmF0aXZlcyogYW5BbHRlcm5hdGl2ZXMsIE5TUmFuZ2UgYVJhbmdlKQorOiByYW5n
ZShhUmFuZ2UpCissIGFsdGVybmF0aXZlcyhhbkFsdGVybmF0aXZlcykKK3sKK30KKwordm9pZCBj
b2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmlu
ZywgVmVjdG9yPFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGFsdGVybmF0aXZlcykgeworICAg
IE5TUmFuZ2UgZWZmZWN0aXZlUmFuZ2UgPSBOU01ha2VSYW5nZSgwLCAwKTsKKyAgICBOU1VJbnRl
Z2VyIGxlbmd0aCA9IFtzdHJpbmcgbGVuZ3RoXTsKKyAgICBkbyB7CisgICAgICAgIE5TRGljdGlv
bmFyeSAqYXR0cmlidXRlcyA9IFtzdHJpbmcgYXR0cmlidXRlc0F0SW5kZXg6ZWZmZWN0aXZlUmFu
Z2UubG9jYXRpb24gZWZmZWN0aXZlUmFuZ2U6JmVmZmVjdGl2ZVJhbmdlXTsKKyAgICAgICAgaWYg
KCFhdHRyaWJ1dGVzKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIE5TVGV4dEFsdGVybmF0
aXZlcyAqdGV4dEFsdGVybmF0aXZlcyA9IFthdHRyaWJ1dGVzIG9iamVjdEZvcktleTpOU1RleHRB
bHRlcm5hdGl2ZXNBdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgaWYgKHRleHRBbHRlcm5hdGl2ZXMp
CisgICAgICAgICAgICBhbHRlcm5hdGl2ZXMuYXBwZW5kKFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZSh0ZXh0QWx0ZXJuYXRpdmVzLCBlZmZlY3RpdmVSYW5nZSkpOworICAgICAgICBlZmZlY3RpdmVS
YW5nZS5sb2NhdGlvbiA9IE5TTWF4UmFuZ2UoZWZmZWN0aXZlUmFuZ2UpOworICAgIH0gd2hpbGUg
KGVmZmVjdGl2ZVJhbmdlLmxvY2F0aW9uIDwgbGVuZ3RoKTsKK30KK30KKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggMDk0N2M4N2JhMDI0
MTQ0MzFlNjZkMzYzYzY4YTkzNjY2ZmRlOTZmZC4uNjcyNDVlNjRkNzYzMDg1OWVmOWY3N2ZjY2Vm
ZGJiMGU0MGNkNTFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2
ZVRleHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0aXZlVGV4dENs
aWVudC5oCkBAIC0zMSw2ICszMSwxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmlu
ZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9Q
QVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MSU9OKQorLy8gU29tZSBwbGF0Zm9ybXMgcHJv
dmlkZSBVSSBmb3Igc3VnZ2VzdGluZyBhbHRlcm5hdGl2ZSBkaWN0YXRpb24gdGV4dC4KKyNkZWZp
bmUgV1RGX1VTRV9ESUNUQVRJT05fQUxURVJOQVRJVkVTIDEKKyNlbmRpZiAvLyBQTEFURk9STShN
QUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX1NOT1dfTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTElPTikKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBlbnVtIFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQg
ewpAQCAtNDMsNiArNDgsNyBAQCBlbnVtIEFsdGVybmF0aXZlVGV4dFR5cGUgewogICAgIEFsdGVy
bmF0aXZlVGV4dFR5cGVDb3JyZWN0aW9uID0gMCwKICAgICBBbHRlcm5hdGl2ZVRleHRUeXBlUmV2
ZXJzaW9uLAogICAgIEFsdGVybmF0aXZlVGV4dFR5cGVTcGVsbGluZ1N1Z2dlc3Rpb25zLAorICAg
IEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0YXRpb25BbHRlcm5hdGl2ZXMKIH07CiAKIGVudW0gQXV0
b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgewpAQCAtNTQsMTEgKzYwLDE4IEBAIGNsYXNzIEFsdGVy
bmF0aXZlVGV4dENsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWx0ZXJuYXRpdmVUZXh0
Q2xpZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSA9IDA7Ci0KKyNp
ZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0
aW9uQWx0ZXJuYXRpdmUoQWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgRmxvYXRSZWN0JiBib3Vu
ZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVwbGFjbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVy
bmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NB
bHRlcm5hdGl2ZShSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSA9IDA7CiAgICAg
dmlydHVhbCBTdHJpbmcgZGlzbWlzc0FsdGVybmF0aXZlU29vbihSZWFzb25Gb3JEaXNtaXNzaW5n
QWx0ZXJuYXRpdmVUZXh0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0gMDsKKyNlbmRp
ZgorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93
RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25D
b250ZXh0KSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5h
dGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOworI2VuZGlmCiB9OwogICAgIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4
IDliOTEwNzI0YjVlN2VkZmIxMDc2OGMzZjFkNTI1Yjk1ZDgzZmQ4ZDcuLjdjZjJkYmU1YmUyMDQ4
MGEyNDVjMzEyNTliMTIwNWYyZTgyMzY4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTQ4MSw2ICs0ODEsOSBAQCB2b2lkIENvbnRleHRN
ZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBp
dGVtKQogICAgICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5pbnNwZWN0KG1f
aGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSk7CiAgICAgICAgIGJyZWFrOwogI2Vu
ZGlmCisgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5hdGl2ZToKKyAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseURpY3RhdGlvbkFsdGVybmF0aXZlbHRlcm5hdGl2
ZShpdGVtLT50aXRsZSgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
YnJlYWs7CiAgICAgfQpAQCAtODk2LDUwICs4OTksNjUgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRy
b2xsZXI6OnBvcHVsYXRlKCkKICAgICB9IGVsc2UgeyAvLyBNYWtlIGFuIGVkaXRpbmcgY29udGV4
dCBtZW51CiAgICAgICAgIEZyYW1lU2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0
aW9uKCk7CiAgICAgICAgIGJvb2wgaW5QYXNzd29yZEZpZWxkID0gc2VsZWN0aW9uLT5pc0luUGFz
c3dvcmRGaWVsZCgpOwotICAgICAgICBib29sIHNwZWxsQ2hlY2tpbmdFbmFibGVkID0gZnJhbWUt
PmVkaXRvcigpLT5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkRm9yKG5vZGUpOwotCi0gICAgICAgIGlm
ICghaW5QYXNzd29yZEZpZWxkICYmIHNwZWxsQ2hlY2tpbmdFbmFibGVkKSB7Ci0gICAgICAgICAg
ICAvLyBDb25zaWRlciBhZGRpbmcgc3BlbGxpbmctcmVsYXRlZCBvciBncmFtbWFyLXJlbGF0ZWQg
Y29udGV4dCBtZW51IGl0ZW1zIChuZXZlciBib3RoLCBzaW5jZSBhIHNpbmdsZSBzZWxlY3RlZCBy
YW5nZQotICAgICAgICAgICAgLy8gaXMgbmV2ZXIgY29uc2lkZXJlZCBhIG1pc3NwZWxsaW5nIGFu
ZCBiYWQgZ3JhbW1hciBhdCB0aGUgc2FtZSB0aW1lKQotICAgICAgICAgICAgYm9vbCBtaXNzcGVs
bGluZzsKLSAgICAgICAgICAgIGJvb2wgYmFkR3JhbW1hcjsKLSAgICAgICAgICAgIFZlY3RvcjxT
dHJpbmc+IGd1ZXNzZXMgPSBmcmFtZS0+ZWRpdG9yKCktPmd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JV
bmdyYW1tYXRpY2FsU2VsZWN0aW9uKG1pc3NwZWxsaW5nLCBiYWRHcmFtbWFyKTsKLSAgICAgICAg
ICAgIGlmIChtaXNzcGVsbGluZyB8fCBiYWRHcmFtbWFyKSB7Ci0gICAgICAgICAgICAgICAgc2l6
ZV90IHNpemUgPSBndWVzc2VzLnNpemUoKTsKLSAgICAgICAgICAgICAgICBpZiAoc2l6ZSA9PSAw
KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYmFkIGdyYW1tYXIgYnV0IG5v
IHN1Z2dlc3Rpb25zIChlLmcuLCByZXBlYXRlZCB3b3JkKSwganVzdCBsZWF2ZSBvZmYgdGhlIHN1
Z2dlc3Rpb25zCi0gICAgICAgICAgICAgICAgICAgIC8vIGxpc3QgYW5kIHRyYWlsaW5nIHNlcGFy
YXRvciByYXRoZXIgdGhhbiBhZGRpbmcgYSAiTm8gR3Vlc3NlcyBGb3VuZCIgaXRlbSAobWF0Y2hl
cyBBcHBLaXQpCi0gICAgICAgICAgICAgICAgICAgIGlmIChtaXNzcGVsbGluZykgewotICAgICAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShOb0d1ZXNzZXNJdGVtLCBtX2NvbnRleHRNZW51
LmdldCgpKTsKKyAgICAgICAgaWYgKCFpblBhc3N3b3JkRmllbGQpIHsKKyAgICAgICAgICAgIGJv
b2wgaGF2ZUNvbnRleHRNZW51SXRlbXNGb3JNaXNzcGVsbGluZ09yR3JhbW1lciA9IGZhbHNlOwor
ICAgICAgICAgICAgYm9vbCBzcGVsbENoZWNraW5nRW5hYmxlZCA9IGZyYW1lLT5lZGl0b3IoKS0+
aXNTcGVsbENoZWNraW5nRW5hYmxlZEZvcihub2RlKTsKKyAgICAgICAgICAgIGlmIChzcGVsbENo
ZWNraW5nRW5hYmxlZCkgeworICAgICAgICAgICAgICAgIC8vIENvbnNpZGVyIGFkZGluZyBzcGVs
bGluZy1yZWxhdGVkIG9yIGdyYW1tYXItcmVsYXRlZCBjb250ZXh0IG1lbnUgaXRlbXMgKG5ldmVy
IGJvdGgsIHNpbmNlIGEgc2luZ2xlIHNlbGVjdGVkIHJhbmdlCisgICAgICAgICAgICAgICAgLy8g
aXMgbmV2ZXIgY29uc2lkZXJlZCBhIG1pc3NwZWxsaW5nIGFuZCBiYWQgZ3JhbW1hciBhdCB0aGUg
c2FtZSB0aW1lKQorICAgICAgICAgICAgICAgIGJvb2wgbWlzc3BlbGxpbmc7CisgICAgICAgICAg
ICAgICAgYm9vbCBiYWRHcmFtbWFyOworICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGd1
ZXNzZXMgPSBmcmFtZS0+ZWRpdG9yKCktPmd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRp
Y2FsU2VsZWN0aW9uKG1pc3NwZWxsaW5nLCBiYWRHcmFtbWFyKTsKKyAgICAgICAgICAgICAgICBp
ZiAobWlzc3BlbGxpbmcgfHwgYmFkR3JhbW1hcikgeworICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgc2l6ZSA9IGd1ZXNzZXMuc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXNpemUp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYmFkIGdyYW1tYXIgYnV0
IG5vIHN1Z2dlc3Rpb25zIChlLmcuLCByZXBlYXRlZCB3b3JkKSwganVzdCBsZWF2ZSBvZmYgdGhl
IHN1Z2dlc3Rpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBsaXN0IGFuZCB0cmFpbGlu
ZyBzZXBhcmF0b3IgcmF0aGVyIHRoYW4gYWRkaW5nIGEgIk5vIEd1ZXNzZXMgRm91bmQiIGl0ZW0g
KG1hdGNoZXMgQXBwS2l0KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pc3NwZWxsaW5n
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShOb0d1ZXNzZXNJdGVt
LCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBl
bmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyAmZ3Vlc3MgPSBndWVzc2VzW2ld
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZ3Vlc3MuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBpdGVtKEFjdGlv
blR5cGUsIENvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nR3Vlc3MsIGd1ZXNzKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShpdGVtLCBtX2NvbnRleHRNZW51Lmdl
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVt
KCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIGlmIChtaXNzcGVsbGluZykgeworICAgICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kSXRlbShJZ25vcmVTcGVsbGluZ0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShMZWFyblNwZWxsaW5nSXRlbSwgbV9jb250
ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kSXRlbShJZ25vcmVHcmFtbWFySXRlbSwgbV9jb250ZXh0TWVudS5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwg
bV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGhhdmVDb250ZXh0TWVu
dUl0ZW1zRm9yTWlzc3BlbGxpbmdPckdyYW1tZXIgPSB0cnVlOworI2lmIFBMQVRGT1JNKE1BQykg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsr
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcgJmd1ZXNzID0gZ3Vlc3Nl
c1tpXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZ3Vlc3MuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oQWN0aW9uVHlw
ZSwgQ29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdHdWVzcywgZ3Vlc3MpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oaXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBz
dHJpbmcgd2FzIGF1dG9jb3JyZWN0ZWQsIGdlbmVyYXRlIGEgY29udGV4dHVhbCBtZW51IGl0ZW0g
YWxsb3dpbmcgaXQgdG8gYmUgY2hhbmdlZCBiYWNrLgorICAgICAgICAgICAgICAgICAgICBTdHJp
bmcgcmVwbGFjZWRTdHJpbmcgPSBtX2hpdFRlc3RSZXN1bHQucmVwbGFjZWRTdHJpbmcoKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFyZXBsYWNlZFN0cmluZy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBpdGVtKEFjdGlvblR5cGUsIENvbnRl
eHRNZW51SXRlbVRhZ0NoYW5nZUJhY2ssIGNvbnRleHRNZW51SXRlbVRhZ0NoYW5nZUJhY2socmVw
bGFjZWRTdHJpbmcpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oaXRlbSwg
bV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVt
KCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaGF2ZUNvbnRleHRNZW51SXRlbXNGb3JNaXNzcGVsbGluZ09yR3JhbW1lciA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRl
bSgqc2VwYXJhdG9ySXRlbSgpLCBtX2NvbnRleHRNZW51LmdldCgpKTsgICAgICAgICAgICAgICAg
ICAgIAorI2VuZGlmCiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIGlmIChtaXNzcGVsbGluZykgewotICAgICAgICAgICAgICAgICAgICBhcHBlbmRJ
dGVtKElnbm9yZVNwZWxsaW5nSXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGFwcGVuZEl0ZW0oTGVhcm5TcGVsbGluZ0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0
KCkpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBhcHBlbmRJ
dGVtKElnbm9yZUdyYW1tYXJJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKLSAgICAgICAgICAg
ICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOwot
I2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgdGhlIHN0cmluZyB3YXMgYXV0
b2NvcnJlY3RlZCwgZ2VuZXJhdGUgYSBjb250ZXh0dWFsIG1lbnUgaXRlbSBhbGxvd2luZyBpdCB0
byBiZSBjaGFuZ2VkIGJhY2suCi0gICAgICAgICAgICAgICAgU3RyaW5nIHJlcGxhY2VkU3RyaW5n
ID0gbV9oaXRUZXN0UmVzdWx0LnJlcGxhY2VkU3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFyZXBsYWNlZFN0cmluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgQ29udGV4
dE1lbnVJdGVtIGl0ZW0oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFjaywg
Y29udGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFjayhyZXBsYWNlZFN0cmluZykpOwotICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRJdGVtKGl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWhhdmVDb250ZXh0TWVudUl0ZW1zRm9yTWlzc3Bl
bGxpbmdPckdyYW1tZXIpIHsKKyAgICAgICAgICAgICAgICAvLyBTcGVsbGluZyBhbmQgZ3JhbW1h
ciBjaGVja2luZyBpcyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCBkaWN0YXRpb24gYWx0ZXJuYXRp
dmVzLgorICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZl
cyA9IG1faGl0VGVzdFJlc3VsdC5kaWN0YXRpb25BbHRlcm5hdGl2ZXMoKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWRpY3RhdGlvbkFsdGVybmF0aXZlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBpdGVt
KEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0RpY3RhdGlvbkFsdGVybmF0aXZlLCBkaWN0
YXRpb25BbHRlcm5hdGl2ZXNbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRl
bShpdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1l
bnUuZ2V0KCkpOwogICAgICAgICAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKQEAgLTEzNTIsNiArMTM3MCw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVy
OjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAg
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbUN1c3RvbVRhZ05vQWN0aW9uOgogICAgICAgICBjYXNl
IENvbnRleHRNZW51SXRlbUxhc3RDdXN0b21UYWc6CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtQmFzZUFwcGxpY2F0aW9uVGFnOgorICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0Rp
Y3RhdGlvbkFsdGVybmF0aXZlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5UGF1c2U6CiAgICAgICAgICAgICBpZiAobV9oaXRUZXN0
UmVzdWx0Lm1lZGlhUGxheWluZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ29udGV4dE1lbnVJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVu
dUl0ZW0uaAppbmRleCBmOGExYTI5YWExNTZhNmJhMjc5ZjRlNzM1MWU1ZmE0MmMyZTUxNzdhLi42
OTczNzk4NzUzYWYwMDQwNzYxMzYzNWM0MTBmMmI4ZGY5NGUzNTgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaApAQCAtMTM0LDYgKzEzNCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgQ29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQsCiAgICAg
ICAgIENvbnRleHRNZW51SXRlbVRhZ1BERlNpbmdsZVBhZ2VTY3JvbGxpbmcsCiAgICAgICAgIENv
bnRleHRNZW51SXRlbVRhZ1BERkZhY2luZ1BhZ2VzU2Nyb2xsaW5nLAorICAgICAgICBDb250ZXh0
TWVudUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5hdGl2ZSwKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
ICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCwKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDRlM2Y2YmRjYjI5NTAx
OWI1ZTcyMGI0YzIwZTVhYzNlYjIyYTc0NzAuLjVmZmI2NTk2OWFlNmYzMmUyZDg4Y2JjMTQyMjU0
NWY2ZTEwZGRkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0
UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAKQEAgLTcxMCw0ICs3MTAsMjEgQEAgSGl0VGVzdFJlc3VsdDo6Tm9kZVNldCYgSGl0VGVzdFJl
c3VsdDo6bXV0YWJsZVJlY3RCYXNlZFRlc3RSZXN1bHQoKQogICAgIHJldHVybiAqbV9yZWN0QmFz
ZWRUZXN0UmVzdWx0OwogfQogCitWZWN0b3I8U3RyaW5nPiBIaXRUZXN0UmVzdWx0OjpkaWN0YXRp
b25BbHRlcm5hdGl2ZXMoKSBjb25zdAoreworICAgIC8vIFJldHVybiB0aGUgZGljdGF0aW9uIGNv
bnRleHQgaGFuZGxlIGlmIHRoZSB0ZXh0IGF0IHRoaXMgcG9pbnQgaGFzIERpY3RhdGlvbkFsdGVy
bmF0aXZlIG1hcmtlciwgd2hpY2ggbWVhbnMgdGhpcyB0ZXh0IGlzCisgICAgaWYgKCFtX2lubmVy
Tm9uU2hhcmVkTm9kZSkKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CisKKyAgICBE
b2N1bWVudE1hcmtlciogbWFya2VyID0gbV9pbm5lck5vblNoYXJlZE5vZGUtPmRvY3VtZW50KCkt
Pm1hcmtlcnMoKS0+bWFya2VyQ29udGFpbmluZ1BvaW50KGhpdFRlc3RQb2ludCgpLnBvaW50KCks
IERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgIGlmICghbWFya2Vy
KQorICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKworICAgIEZyYW1lKiBmcmFtZSA9
IGlubmVyTm9uU2hhcmVkTm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIGlmICghZnJh
bWUpCisgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworCisgICAgcmV0dXJuIGZyYW1l
LT5lZGl0b3IoKS0+ZGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKG1hcmtlcik7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJl
c3VsdC5oCmluZGV4IGExOGZkYjVhMjU1OGU5ZWI4YzVmNTVkOTNkMTZmZGFiZWJhMTQ0OGUuLjE5
ZGRiZDFhYzJjN2ZlOGI3MDEyNGUyMGMwY2Q5MWY0OGE2YWIyMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtMTU3LDYgKzE1Nyw4IEBAIHB1YmxpYzoKICAg
ICAvLyB0aGUgc2FtZSB0aGluZyBhcyBtdXRhYmxlUmVjdEJhc2VkVGVzdFJlc3VsdCgpLCBidXQg
aGVyZSB0aGUgcmV0dXJuIHZhbHVlIGlzIGNvbnN0LgogICAgIGNvbnN0IE5vZGVTZXQmIHJlY3RC
YXNlZFRlc3RSZXN1bHQoKSBjb25zdDsKIAorICAgIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFs
dGVybmF0aXZlcygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIE5vZGVTZXQmIG11dGFibGVSZWN0
QmFzZWRUZXN0UmVzdWx0KCk7IC8vIFNlZSBhYm92ZS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDExYjcwNTU5ZGE2MzQzNDc0ZDc1MGMyZWE0N2E2
MDU5ZWY1YTZkNjYuLjllNzMxZDYzODZkYzdhM2IzOTFjZjI4OTQ0MzNiMDhiZDNjY2FiMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTEwMzAsNyAr
MTAzMCw4IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1hcmtlcihHcmFwaGlj
c0NvbnRleHQqIHB0LCBjb25zdCBGbG9hdFBvaW50JiBiCiAgICAgaWYgKG1fdHJ1bmNhdGlvbiAh
PSBjTm9UcnVuY2F0aW9uKQogICAgICAgICBtYXJrZXJTcGFuc1dob2xlQm94ID0gZmFsc2U7CiAK
LSAgICBpZiAoIW1hcmtlclNwYW5zV2hvbGVCb3ggfHwgZ3JhbW1hcikgeworICAgIGJvb2wgaXNE
aWN0YXRpb25NYXJrZXIgPSBtYXJrZXItPnR5cGUoKSA9PSBEb2N1bWVudE1hcmtlcjo6RGljdGF0
aW9uQWx0ZXJuYXRpdmVzOworICAgIGlmICghbWFya2VyU3BhbnNXaG9sZUJveCB8fCBncmFtbWFy
IHx8IGlzRGljdGF0aW9uTWFya2VyKSB7CiAgICAgICAgIGludCBzdGFydFBvc2l0aW9uID0gbWF4
PGludD4obWFya2VyLT5zdGFydE9mZnNldCgpIC0gbV9zdGFydCwgMCk7CiAgICAgICAgIGludCBl
bmRQb3NpdGlvbiA9IG1pbjxpbnQ+KG1hcmtlci0+ZW5kT2Zmc2V0KCkgLSBtX3N0YXJ0LCBtX2xl
bik7CiAgICAgICAgIApAQCAtMTA1MCw3ICsxMDUxLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94Ojpw
YWludERvY3VtZW50TWFya2VyKEdyYXBoaWNzQ29udGV4dCogcHQsIGNvbnN0IEZsb2F0UG9pbnQm
IGIKICAgICAgICAgCiAgICAgICAgIC8vIFN0b3JlIHJlbmRlcmVkIHJlY3RzIGZvciBiYWQgZ3Jh
bW1hciBtYXJrZXJzLCBzbyB3ZSBjYW4gaGl0LXRlc3QgYWdhaW5zdCBpdCBlbHNld2hlcmUgaW4g
b3JkZXIgdG8KICAgICAgICAgLy8gZGlzcGxheSBhIHRvb2xUaXAuIFdlIGRvbid0IGRvIHRoaXMg
Zm9yIG1pc3NwZWxsaW5nIG1hcmtlcnMuCi0gICAgICAgIGlmIChncmFtbWFyKSB7CisgICAgICAg
IGlmIChncmFtbWFyIHx8IGlzRGljdGF0aW9uTWFya2VyKSB7CiAgICAgICAgICAgICBtYXJrZXJS
ZWN0Lm1vdmUoLWJveE9yaWdpbi54KCksIC1ib3hPcmlnaW4ueSgpKTsKICAgICAgICAgICAgIG1h
cmtlclJlY3QgPSByZW5kZXJlcigpLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChtYXJr
ZXJSZWN0KSkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKICAgICAgICAgICAgIHRvUmVuZGVyZWRE
b2N1bWVudE1hcmtlcihtYXJrZXIpLT5zZXRSZW5kZXJlZFJlY3QobWFya2VyUmVjdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0K
aW5kZXggNjU4M2NlZTY2MjExMTA3NmMxZTAyNDcyNmVlY2JiMGE4ZjU0MDc5MC4uNzcxOTEwYjRi
YzUwMWU0ODM4MGNkYjgzZTAzYmY2ZTIzZjUxYWNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbQpAQCAtMjUsNyArMjUsNiBA
QAogI2ltcG9ydCAiQ29ycmVjdGlvblBhbmVsLmgiCiAKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5h
bC5oIgotI2ltcG9ydCAiV2ViVmlld1ByaXZhdGUuaCIKIAogI2lmIFVTRShBVVRPQ09SUkVDVElP
Tl9QQU5FTCkKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMzksNiArMzgsOSBAQCBzdGF0
aWMgaW5saW5lIE5TQ29ycmVjdGlvbkluZGljYXRvclR5cGUgY29ycmVjdGlvbkluZGljYXRvclR5
cGUoQWx0ZXJuYXRpdmVUZXh0VAogICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uSW5kaWNhdG9y
VHlwZVJldmVyc2lvbjsKICAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5cGVTcGVsbGluZ1N1Z2dl
c3Rpb25zOgogICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uSW5kaWNhdG9yVHlwZUd1ZXNzZXM7
CisgICAgY2FzZSBBbHRlcm5hdGl2ZVRleHRUeXBlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBl
RGVmYXVsdDsKQEAgLTEzMSw3ICsxMzMsNyBAQCB2b2lkIENvcnJlY3Rpb25QYW5lbDo6aGFuZGxl
QWNjZXB0ZWRSZXBsYWNlbWVudChOU1N0cmluZyogYWNjZXB0ZWRSZXBsYWNlbWVudCwgTgogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAgW21fdmlldy5nZXQoKSBoYW5kbGVDb3JyZWN0
aW9uUGFuZWxSZXN1bHQ6YWNjZXB0ZWRSZXBsYWNlbWVudF07CisgICAgW21fdmlldy5nZXQoKSBo
YW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDphY2NlcHRlZFJlcGxhY2VtZW50XTsKICAgICBt
X3ZpZXcuY2xlYXIoKTsKICAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVudCkKICAgICAgICAgbV9y
ZXN1bHRGb3JEaXNtaXNzYWwuYWRvcHROUyhbYWNjZXB0ZWRSZXBsYWNlbWVudCBjb3B5XSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5oCmluZGV4IDVlNjZhY2FmN2I3MWFlNzRlY2ZkZDJiNGU3MjFkOTNm
ZDhjY2ZjN2QuLmJjNGVjNDcyMzg1ZDU2NjNhMGUwNmI2YThkZjU0YTg1Yzk2ZmNkNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4
dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5oCkBAIC0zNywxMCArMzcsMTggQEAgcHVibGljOgogICAgIFdlYkFs
dGVybmF0aXZlVGV4dENsaWVudChXZWJWaWV3ICopOwogICAgIHZpcnR1YWwgfldlYkFsdGVybmF0
aXZlVGV4dENsaWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgT1ZFUlJJ
REU7CisjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogICAgIHZpcnR1YWwgdm9pZCBzaG93
Q29ycmVjdGlvbkFsdGVybmF0aXZlKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmUoV2ViQ29yZTo6UmVhc29u
Rm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJp
bmcgZGlzbWlzc0FsdGVybmF0aXZlU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0
ZXJuYXRpdmVUZXh0KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJl
Y3Rpb25SZXNwb25zZShXZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3Qg
U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykg
T1ZFUlJJREU7CisjZW5kaWYKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICB2
aXJ0dWFsIHZvaWQgc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250
ZXh0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0
aXZlVUkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJu
YXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
VmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNv
bnRleHQpIE9WRVJSSURFOworI2VuZGlmCiBwcml2YXRlOgogICAgIFdlYlZpZXcqIG1fd2ViVmll
dzsKICNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0K
aW5kZXggZjFhNzBmYzU0M2M2YzVjN2E4MjExZTU3YzUwOWE5OGJiMDBmZmRjZi4uNGQ3ODlkM2Mw
ZDg4OWIwY2E2OGRmYTFhMjllNTU1ZjAzNDBmYWI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5t
bQpAQCAtMjUsNiArMjUsOCBAQAogCiAjaW5jbHVkZSAiV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
LmgiCiAKKyNpbmNsdWRlICJXZWJWaWV3SW50ZXJuYWwuaCIKKwogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50KFdlYlZpZXcqIHdlYlZpZXcpCkBAIC00NCwzMyArNDYsNDcgQEAgdm9pZCBXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQ6OnBhZ2VEZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0aGlzOwogfQogCisj
aWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogdm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQ6OnNob3dDb3JyZWN0aW9uQWx0ZXJuYXRpdmUoQWx0ZXJuYXRpdmVUZXh0VHlwZSB0eXBlLCBj
b25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5n
JiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQogewotI2lmIFVT
RShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICBtX2NvcnJlY3Rpb25QYW5lbC5zaG93KG1fd2Vi
VmlldywgdHlwZSwgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCByZXBsYWNlZFN0cmluZywg
cmVwbGFjZW1lbnRTdHJpbmcsIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKLSNlbmRp
ZgogfQogCiB2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0aXZl
KFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQgcmVhc29uKQogewotI2lmIFVTRShB
VVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICBtX2NvcnJlY3Rpb25QYW5lbC5kaXNtaXNzKHJlYXNv
bik7Ci0jZW5kaWYKIH0KIAogU3RyaW5nIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlz
c0FsdGVybmF0aXZlU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0IHJlYXNv
bikKIHsKLSNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgcmV0dXJuIG1fY29ycmVj
dGlvblBhbmVsLmRpc21pc3MocmVhc29uKTsKLSNlbHNlCi1yZXR1cm4gU3RyaW5nKCk7Ci0jZW5k
aWYKIH0KIAogdm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJlY29yZEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5n
KQogewotI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICBOU0NvcnJlY3Rpb25SZXNw
b25zZSByZXNwb25zZSA9IHJlc3BvbnNlVHlwZSA9PSBBdXRvY29ycmVjdGlvblJldmVydGVkID8g
TlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZCA6IE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVk
OwotQ29ycmVjdGlvblBhbmVsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKG1fd2ViVmll
dywgcmVzcG9uc2UsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7CisgICAgQ29y
cmVjdGlvblBhbmVsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKG1fd2ViVmlldywgcmVz
cG9uc2UsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7Cit9CiAjZW5kaWYKKwor
I2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQordm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQ6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250
ZXh0KQoreworICAgIFttX3dlYlZpZXcgX3JlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlczpkaWN0
YXRpb25Db250ZXh0XTsKK30KKwordm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnNob3dE
aWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdC
b3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBbbV93
ZWJWaWV3IF9zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSTpib3VuZGluZ0JveE9mRGljdGF0ZWRU
ZXh0IGZvckRpY3RhdGlvbkNvbnRleHQ6ZGljdGF0aW9uQ29udGV4dF07CiB9CisKK3ZvaWQgV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSSgpCit7
CisgICAgW21fd2ViVmlldyBfZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUldOworfQorCitW
ZWN0b3I8U3RyaW5nPiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpY3RhdGlvbkFsdGVybmF0
aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIHJldHVybiBbbV93ZWJWaWV3
IF9kaWN0YXRpb25BbHRlcm5hdGl2ZXM6ZGljdGF0aW9uQ29udGV4dF07Cit9CisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDE3ZDMwOTNjZDBiZWNl
ZDNhNzJmNzk1YTRlY2VkZDlhYTZmMDdlYTguLmM0MzFmOWIwMjNmZTg1NTZhMDY4NDZlN2ZiNDcw
MjcyOTNhMDVlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpA
QCAtMTEzLDYgKzExMyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NpbXBsZUZvbnREYXRhLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydHlTZXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4
dC5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViRm9u
dENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5o
PgpAQCAtNTYwMyw3ICs1NjA0LDExIEBAIHN0YXRpYyBDR1BvaW50IGNvcmVHcmFwaGljc1NjcmVl
blBvaW50Rm9yQXBwS2l0U2NyZWVuUG9pbnQoTlNQb2ludCBwb2ludCkKICAgICBpZiAoIXZhbGlk
QXR0cmlidXRlcykgewogICAgICAgICB2YWxpZEF0dHJpYnV0ZXMgPSBbW05TQXJyYXkgYWxsb2Nd
IGluaXRXaXRoT2JqZWN0czoKICAgICAgICAgICAgIE5TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVO
YW1lLCBOU1VuZGVybGluZUNvbG9yQXR0cmlidXRlTmFtZSwKLSAgICAgICAgICAgIE5TTWFya2Vk
Q2xhdXNlU2VnbWVudEF0dHJpYnV0ZU5hbWUsIE5TVGV4dElucHV0UmVwbGFjZW1lbnRSYW5nZUF0
dHJpYnV0ZU5hbWUsIG5pbF07CisgICAgICAgICAgICBOU01hcmtlZENsYXVzZVNlZ21lbnRBdHRy
aWJ1dGVOYW1lLCBOU1RleHRJbnB1dFJlcGxhY2VtZW50UmFuZ2VBdHRyaWJ1dGVOYW1lLAorI2lm
IFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
TlNUZXh0QWx0ZXJuYXRpdmVzQXR0cmlidXRlTmFtZSwKKyNlbmRpZgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmlsXTsKICAgICAgICAgLy8gTlNUZXh0IGFsc28gc3VwcG9ydHMgdGhlIGZv
bGxvd2luZyBhdHRyaWJ1dGVzLCBidXQgaXQncwogICAgICAgICAvLyBoYXJkIHRvIHRlbGwgd2hp
Y2ggYXJlIHJlYWxseSByZXF1aXJlZCBmb3IgdGV4dCBpbnB1dCB0bwogICAgICAgICAvLyB3b3Jr
IHdlbGw7IEkgaGF2ZSBub3Qgc2VlbiBhbnkgaW5wdXQgbWV0aG9kIG1ha2UgdXNlIG9mIHRoZW0g
eWV0LgpAQCAtNTkyMyw3ICs1OTI4LDE0IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVz
KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAgICAg
TlNSYW5nZSByZXBsYWNlbWVudFJhbmdlID0geyBOU05vdEZvdW5kLCAwIH07CiAgICAgYm9vbCBp
c0Zyb21JbnB1dE1ldGhvZCA9IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLT5oYXND
b21wb3NpdGlvbigpOwogCisgICAgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiBkaWN0YXRp
b25BbHRlcm5hdGl2ZUxvY2F0aW9uczsKICAgICBpZiAoaXNBdHRyaWJ1dGVkU3RyaW5nKSB7Cisj
aWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+IHRleHRBbHRlcm5hdGl2ZXM7CisgICAgICAgIGNvbGxl
Y3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzKHN0cmluZywgdGV4dEFsdGVybmF0aXZlcyk7Cisg
ICAgICAgIGlmICghdGV4dEFsdGVybmF0aXZlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICBbW3Nl
bGYgX3dlYlZpZXddIF9nZXRXZWJDb3JlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOmRpY3RhdGlvbkFs
dGVybmF0aXZlTG9jYXRpb25zIGZyb21UZXh0QWx0ZXJuYXRpdmVzOnRleHRBbHRlcm5hdGl2ZXNd
OworI2VuZGlmCiAgICAgICAgIC8vIEZJWE1FOiBXZSBpZ25vcmUgbW9zdCBhdHRyaWJ1dGVzIGZy
b20gdGhlIHN0cmluZywgc28gZm9yIGV4YW1wbGUgaW5zZXJ0aW5nIGZyb20gQ2hhcmFjdGVyIFBh
bGV0dGUgbG9zZXMgZm9udCBhbmQgZ2x5cGggdmFyaWF0aW9uIGRhdGEuCiAgICAgICAgIC8vIEl0
IGRvZXMgbm90IGxvb2sgbGlrZSBhbnkgaW5wdXQgbWV0aG9kcyBldmVyIHVzZSBpbnNlcnRUZXh0
OiB3aXRoIGF0dHJpYnV0ZXMgb3RoZXIgdGhhbiBOU1RleHRJbnB1dFJlcGxhY2VtZW50UmFuZ2VB
dHRyaWJ1dGVOYW1lLgogICAgICAgICB0ZXh0ID0gW3N0cmluZyBzdHJpbmddOwpAQCAtNTk2Miw3
ICs1OTc0LDExIEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0
cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAgICAgaWYgKCFjb3JlRnJhbWUt
PmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKSB7CiAgICAgICAgIC8vIEFuIGluc2VydFRleHQ6
IG1pZ2h0IGJlIGhhbmRsZWQgYnkgb3RoZXIgcmVzcG9uZGVycyBpbiB0aGUgY2hhaW4gaWYgd2Ug
ZG9uJ3QgaGFuZGxlIGl0LgogICAgICAgICAvLyBPbmUgZXhhbXBsZSBpcyBzcGFjZSBiYXIgdGhh
dCByZXN1bHRzIGluIHNjcm9sbGluZyBkb3duIHRoZSBwYWdlLgotICAgICAgICBldmVudEhhbmRs
ZWQgPSBjb3JlRnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGV2ZW50VGV4dCwgZXZlbnQpOwor
CisgICAgICAgIGlmICghZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgZXZlbnRIYW5kbGVkID0gY29yZUZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0RGlj
dGF0ZWRUZXh0KGV2ZW50VGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGV2ZW50
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXZlbnRIYW5kbGVkID0gY29yZUZyYW1lLT5l
ZGl0b3IoKS0+aW5zZXJ0VGV4dChldmVudFRleHQsIGV2ZW50KTsKICAgICB9IGVsc2UgewogICAg
ICAgICBldmVudEhhbmRsZWQgPSB0cnVlOwogICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5j
b25maXJtQ29tcG9zaXRpb24oZXZlbnRUZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQppbmRleCBjOTM4MjNhMzk0MGNhODY2ZmRhYzY2ZTlkMDU4MWFkZmU2NzBmZTQzLi4xNTEx
MDk0NWUyNDU5OGM1YmEzYTEyZGU3ZjM2ZWUzZjY3Mzk3OWE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCkBAIC0xMTEsNiArMTExLDcgQEAKICNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL0FQSUNhc3QuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWVSZWYuaD4KICNp
bXBvcnQgPFdlYkNvcmUvQWJzdHJhY3REYXRhYmFzZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9BbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQmFja0ZvcndhcmRMaXN0SW1wbC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9NZW1vcnlDYWNoZS5oPgpAQCAtNTUzNiwxNiArNTUzNyw2IEBAIHN0
YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm9tSlNWYWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUganNWYWx1CiAKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoQlVJTERJTkdf
T05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotLSAodm9p
ZCloYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQ6KE5TU3RyaW5nKilyZXN1bHQKLXsKLSAgICBX
ZWJGcmFtZSAqd2ViRnJhbWUgPSBbc2VsZiBfc2VsZWN0ZWRPck1haW5GcmFtZV07Ci0gICAgRnJh
bWUqIGNvcmVGcmFtZSA9IGNvcmUod2ViRnJhbWUpOwotICAgIGlmIChjb3JlRnJhbWUpCi0gICAg
ICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHJl
c3VsdCk7Ci19Ci0jZW5kaWYKLQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2Vi
Vmlld1VuZG9hYmxlRWRpdGluZykKQEAgLTY0MTAsNiArNjQwMSw1MCBAQCBzdGF0aWMgdm9pZCBn
bGliQ29udGV4dEl0ZXJhdGlvbkNhbGxiYWNrKENGUnVuTG9vcE9ic2VydmVyUmVmLCBDRlJ1bkxv
b3BBY3Rpdml0eQogfQogI2VuZGlmCiAKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCist
ICh2b2lkKWhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0OihOU1N0cmluZyopdGV4dAorewor
ICAgIFdlYkZyYW1lICp3ZWJGcmFtZSA9IFtzZWxmIF9zZWxlY3RlZE9yTWFpbkZyYW1lXTsKKyAg
ICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh3ZWJGcmFtZSk7CisgICAgaWYgKGNvcmVGcmFtZSkK
KyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1
bHQodGV4dCk7Cit9CisjZW5kaWYKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQor
LSAodm9pZClfZ2V0V2ViQ29yZURpY3RhdGlvbkFsdGVybmF0aXZlczooVmVjdG9yPERpY3RhdGlv
bkFsdGVybmF0aXZlPiYpYWx0ZXJuYXRpdmVzIGZyb21UZXh0QWx0ZXJuYXRpdmVzOihjb25zdCBW
ZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYpYWx0ZXJuYXRpdmVzV2l0aFJhbmdlCit7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbHRlcm5hdGl2ZXNXaXRoUmFuZ2Uuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgY29uc3QgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlJiBhbHRlcm5h
dGl2ZVdpdGhSYW5nZSA9IGFsdGVybmF0aXZlc1dpdGhSYW5nZVtpXTsKKyAgICAgICAgdWludDY0
X3QgZGljdGF0aW9uQ29udGV4dCA9IF9wcml2YXRlLT5tX2FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci0+YWRkQWx0ZXJuYXRpdmVzKGFsdGVybmF0aXZlV2l0aFJhbmdlLmFsdGVybmF0aXZlcyk7
CisgICAgICAgIGlmIChkaWN0YXRpb25Db250ZXh0KQorICAgICAgICAgICAgYWx0ZXJuYXRpdmVz
LmFwcGVuZChEaWN0YXRpb25BbHRlcm5hdGl2ZShhbHRlcm5hdGl2ZVdpdGhSYW5nZS5yYW5nZS5s
b2NhdGlvbiwgYWx0ZXJuYXRpdmVXaXRoUmFuZ2UucmFuZ2UubGVuZ3RoLCBkaWN0YXRpb25Db250
ZXh0KSk7CisgICAgfQorfQorCistICh2b2lkKV9zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSToo
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jilib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0IGZvckRp
Y3RhdGlvbkNvbnRleHQ6KHVpbnQ2NF90KWRpY3RhdGlvbkNvbnRleHQKK3sKKyAgICBfcHJpdmF0
ZS0+bV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPnNob3dBbHRlcm5hdGl2ZXMoc2VsZiwg
W3NlbGYgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3OmJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHRd
LCBkaWN0YXRpb25Db250ZXh0LCBeKE5TU3RyaW5nKiBhY2NlcHRlZEFsdGVybmF0aXZlKSB7Cisg
ICAgICAgIFtzZWxmIGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0OmFjY2VwdGVkQWx0ZXJu
YXRpdmVdOworICAgIH0pOworfQorCistICh2b2lkKV9kaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRp
dmVVSQoreworICAgIF9wcml2YXRlLT5tX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+ZGlz
bWlzc0FsdGVybmF0aXZlcygpOworfQorCistICh2b2lkKV9yZW1vdmVEaWN0YXRpb25BbHRlcm5h
dGl2ZXM6KHVpbnQ2NF90KWRpY3RhdGlvbkNvbnRleHQKK3sKKyAgICBfcHJpdmF0ZS0+bV9hbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPnJlbW92ZUFsdGVybmF0aXZlcyhkaWN0YXRpb25Db250
ZXh0KTsKK30KKworLSAoVmVjdG9yPFN0cmluZz4pX2RpY3RhdGlvbkFsdGVybmF0aXZlczoodWlu
dDY0X3QpZGljdGF0aW9uQ29udGV4dAoreworICAgIHJldHVybiBfcHJpdmF0ZS0+bV9hbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXItPmFsdGVybmF0aXZlc0ZvckNvbnRleHQoZGljdGF0aW9uQ29u
dGV4dCk7Cit9CisjZW5kaWYKKwogLSAoTlNQb2ludClfY29udmVydFBvaW50RnJvbVJvb3RWaWV3
OihOU1BvaW50KXBvaW50CiB7CiAgICAgcmV0dXJuIE5TTWFrZVBvaW50KHBvaW50LngsIFtzZWxm
IGJvdW5kc10uc2l6ZS5oZWlnaHQgLSBwb2ludC55KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld0RhdGEuaAppbmRleCBlYTJiZmNmNjA3NGU5YTUxMWMzYzNlYWUyZGI0ZmY1ZTVlYzNj
NGY2Li4yYWQ0MjAwZDc0NDVhOGY4ZmU0ZDkwZTIwMjFhYThhMTY3OGQwMjM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbXBv
cnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkRlbGVnYXRlSW1wbGVtZW50YXRp
b25DYWNoaW5nLmgiCisjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9MYXllckZsdXNoU2NoZWR1bGVyLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0xheWVyRmx1c2hTY2hlZHVsZXJDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1T
dHJpbmcuaD4KQEAgLTM4LDggKzM5LDkgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEhpc3RvcnlJdGVtOwotICAgIGNsYXNzIFBh
Z2U7CitjbGFzcyBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI7CitjbGFzcyBIaXN0b3J5SXRl
bTsKK2NsYXNzIFBhZ2U7CiB9CiAKIEBjbGFzcyBXZWJJbnNwZWN0b3I7CkBAIC0yMDAsNSArMjAy
LDkgQEAgcHJpdmF0ZToKICAgICBpbnQgdmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRp
b247CiAKICAgICBmbG9hdCBjdXN0b21EZXZpY2VTY2FsZUZhY3RvcjsKKworI2lmIFVTRShESUNU
QVRJT05fQUxURVJOQVRJVkVTKQorICAgIE93blB0cjxXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXI+IG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOworI2VuZGlmCiB9CiBA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQppbmRleCAwYjgxMTdh
MDk3MDZkNWI2ZWM0ZTY0NTdjMzM5OGU0NzYyNmM1OGJhLi5lMjc2NmYwMWEzNWJjMDdlZWFhNDg2
YzI2NTViNGMwMWJhZWQ5N2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXdEYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0Rh
dGEubW0KQEAgLTMxLDYgKzMxLDcgQEAKIAogI2ltcG9ydCAiV2ViS2l0TG9nZ2luZy5oIgogI2lt
cG9ydCAiV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgiCisjaW1wb3J0IDxXZWJDb3JlL0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4
dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9SdW5Mb29wLmg+CkBAIC0xMDAsNiArMTAxLDEwIEBAIExheWVyRmx1c2hDb250cm9sbGVyOjpM
YXllckZsdXNoQ29udHJvbGxlcihXZWJWaWV3KiB3ZWJWaWV3KQogCiAgICAgcGx1Z2luRGF0YWJh
c2VDbGllbnRDb3VudCsrOwogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAg
bV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHNlbGY7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFs
LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDAy
Y2M1NTAxMDZiMDQ0ZmJjMTc3YzlmNTlhMWY4M2Y1OTBkZTUwYjAuLmMwNTI1NzQyZWMzYmJiY2Zh
YzkzYmM4YzA5ODBhNmViOTA3OWY2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3SW50ZXJuYWwuaApAQCAtMzQsMjAgKzM0LDI2IEBACiAjaW1wb3J0ICJXZWJUeXBlc0lu
dGVybmFsLmgiCiAKICNpZmRlZiBfX2NwbHVzcGx1cworI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5h
dGl2ZVRleHRDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmluZE9wdGlvbnMuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1RleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaD4K
IAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgRWxlbWVudDsKLSAgICBjbGFzcyBGcmFt
ZTsKLSAgICBjbGFzcyBIaXN0b3J5SXRlbTsKLSAgICBjbGFzcyBLVVJMOwotICAgIGNsYXNzIEtl
eWJvYXJkRXZlbnQ7Ci0gICAgY2xhc3MgUGFnZTsKLSAgICBjbGFzcyBSZW5kZXJCb3g7Ci0gICAg
Y2xhc3MgTm9kZTsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBFdmVudDsKK2NsYXNzIEZyYW1lOwor
Y2xhc3MgSGlzdG9yeUl0ZW07CitjbGFzcyBLVVJMOworY2xhc3MgS2V5Ym9hcmRFdmVudDsKK2Ns
YXNzIFBhZ2U7CitjbGFzcyBSZW5kZXJCb3g7CitjbGFzcyBOb2RlOworc3RydWN0IERpY3RhdGlv
bkFsdGVybmF0aXZlOwogfQogI2VuZGlmCiAKQEAgLTU5LDYgKzY1LDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlv
bnMgb3B0aW9ucyk7CiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKK09CSkNfQ0xB
U1MgTlNUZXh0QWx0ZXJuYXRpdmVzOworI2VuZGlmCisKIEBpbnRlcmZhY2UgV2ViVmlldyAoV2Vi
Vmlld0VkaXRpbmdFeHRyYXMpCiAtIChCT09MKV9zaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdl
OihET01SYW5nZSAqKWN1cnJlbnRSYW5nZSB0b0RPTVJhbmdlOihET01SYW5nZSAqKXByb3Bvc2Vk
UmFuZ2UgYWZmaW5pdHk6KE5TU2VsZWN0aW9uQWZmaW5pdHkpc2VsZWN0aW9uQWZmaW5pdHkgc3Rp
bGxTZWxlY3Rpbmc6KEJPT0wpZmxhZzsKIEBlbmQKQEAgLTk1LDYgKzEwNSwxOCBAQCBXZWJDb3Jl
OjpGaW5kT3B0aW9ucyBjb3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyBvcHRpb25zKTsKIC0gKHZv
aWQpX3NjaGVkdWxlR2xpYkNvbnRleHRJdGVyYXRpb25zOwogI2VuZGlmCiAKKyNpZiBVU0UoQVVU
T0NPUlJFQ1RJT05fUEFORUwpCistICh2b2lkKWhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0
OihOU1N0cmluZyopdGV4dDsKKyNlbmRpZgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElW
RVMpCistICh2b2lkKV9nZXRXZWJDb3JlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOihWZWN0b3I8V2Vi
Q29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JilhbHRlcm5hdGl2ZXMgZnJvbVRleHRBbHRlcm5h
dGl2ZXM6KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+Jilh
bHRlcm5hdGl2ZXNXaXRoUmFuZ2U7CistICh2b2lkKV9zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVV
STooY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jilib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0IGZv
ckRpY3RhdGlvbkNvbnRleHQ6KHVpbnQ2NF90KWRpY3RhdGlvbkNvbnRleHQ7CistICh2b2lkKV9k
aXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSTsKKy0gKHZvaWQpX3JlbW92ZURpY3RhdGlvbkFs
dGVybmF0aXZlczoodWludDY0X3QpZGljdGF0aW9uQ29udGV4dDsKKy0gKFZlY3RvcjxTdHJpbmc+
KV9kaWN0YXRpb25BbHRlcm5hdGl2ZXM6KHVpbnQ2NF90KWRpY3RhdGlvbkNvbnRleHQ7CisjZW5k
aWYKKwogQGVuZAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1By
aXZhdGUuaAppbmRleCAwMmY3YmNjNDU2N2Q3NjVjN2JkM2E0MzRmMjU3MjZhNjEwM2UzMTMwLi44
Mjg5YjEyYzE4OGJlZGFmMDUxMDQ2ZmE2ODIyMjc1MmVlOThkZDVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCkBAIC02ODcsOSArNjg3LDYgQEAgQ291bGQg
YmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAtICh2b2lkKXNldEF1dG9tYXRpY1NwZWxsaW5n
Q29ycmVjdGlvbkVuYWJsZWQ6KEJPT0wpZmxhZzsKIC0gKHZvaWQpdG9nZ2xlQXV0b21hdGljU3Bl
bGxpbmdDb3JyZWN0aW9uOihpZClzZW5kZXI7CiAjZW5kaWYKLSNpZiAhZGVmaW5lZChCVUlMRElO
R19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0tICh2
b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDooTlNTdHJpbmcqKXJlc3VsdDsKLSNlbmRp
ZgogQGVuZAogCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdFZGl0aW5nSW5NYWlsKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtVHlw
ZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbVR5cGVz
LmgKaW5kZXggYTM1MzZkOTZkN2YzZjkyY2MzZjk0ODBjMmY5ZTMwNzIxOTUxZDAzOS4uYjMyNjc5
NGRlODcwOWM0N2UyOGRkODgxN2UzNDk1MzExZThmODJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtVHlwZXMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oCkBAIC04OCw2ICs4
OCw3IEBAIGVudW0gewogICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0LAogICAg
IGtXS0NvbnRleHRNZW51SXRlbVRhZ1BERlNpbmdsZVBhZ2VTY3JvbGxpbmcsCiAgICAga1dLQ29u
dGV4dE1lbnVJdGVtVGFnUERGRmFjaW5nUGFnZXNTY3JvbGxpbmcsCisgICAga1dLQ29udGV4dE1l
bnVJdGVtVGFnRGljdGF0aW9uQWx0ZXJuYXRpdmUsCiAgICAga1dLQ29udGV4dE1lbnVJdGVtVGFn
SW5zcGVjdEVsZW1lbnQsCiAgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1l
bnUsCiAgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkRlZmF1bHQsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmggYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKaW5kZXggNWU0YmY2
OWZmYjY3MmRlOWNlNmRlNGRhMDYyZTg4MzdkZjFlYzIxYi4uZmQxYTg5Njc1YTZkMDNiMTlkNDhl
YWRjNWY5NzVkOTExMjk2YzM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLU2hhcmVkQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S1NoYXJlZEFQSUNhc3QuaApAQCAtNDE0LDYgKzQxNCw4IEBAIGlubGluZSBXS0NvbnRleHRNZW51
SXRlbVRhZyB0b0FQSShXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24pCiAgICAgICAg
IHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdQREZTaW5nbGVQYWdlU2Nyb2xsaW5nOwogICAg
IGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnUERGRmFjaW5nUGFnZXNTY3JvbGxpbmc6
CiAgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdQREZGYWNpbmdQYWdlc1Njcm9s
bGluZzsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0RpY3RhdGlvbkFsdGVy
bmF0aXZlOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnRGljdGF0aW9uQWx0
ZXJuYXRpdmU7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBjYXNlIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50OgogICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1l
bnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQ7CkBAIC01OTIsNiArNTk0LDggQEAgaW5saW5lIFdlYkNv
cmU6OkNvbnRleHRNZW51QWN0aW9uIHRvSW1wbChXS0NvbnRleHRNZW51SXRlbVRhZyB0YWcpCiAg
ICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdQREZTaW5nbGVQYWdlU2Ny
b2xsaW5nOwogICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnUERGRmFjaW5nUGFnZXNTY3Jv
bGxpbmc6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdQREZGYWNp
bmdQYWdlc1Njcm9sbGluZzsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ0RpY3RhdGlv
bkFsdGVybmF0aXZlOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
RGljdGF0aW9uQWx0ZXJuYXRpdmU7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBjYXNlIGtX
S0NvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50OgogICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDNjYjU3YjAxMzMyZGZkOWQx
Y2EzNDQxZmQ2ZWQ1M2I4ODJlNmM3NWUuLjU0MmZkM2ZmOGM3MjQ5MDBmMWZmNjc3M2Y4YjVlYzY0
ZTUzZmQ5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFs
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFi
YXNlRGV0YWlscy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0
b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+CkBAIC01MjUsNiArNTI2LDI0
IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxEYXRhYmFzZURldGFpbHM+OjpkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyKiBkZWNvZGVyLCBEYXRhYmFzZURlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQg
QXJndW1lbnRDb2RlcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT46OmVuY29kZShBcmd1bWVudEVuY29k
ZXIqIGVuY29kZXIsIGNvbnN0IERpY3RhdGlvbkFsdGVybmF0aXZlJiBkaWN0YXRpb25BbHRlcm5h
dGl2ZSkKK3sKKyAgICBlbmNvZGVyLT5lbmNvZGUoZGljdGF0aW9uQWx0ZXJuYXRpdmUucmFuZ2VT
dGFydCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGRpY3RhdGlvbkFsdGVybmF0aXZlLnJhbmdlTGVu
Z3RoKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoZGljdGF0aW9uQWx0ZXJuYXRpdmUuZGljdGF0aW9u
Q29udGV4dCk7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT46
OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIERpY3RhdGlvbkFsdGVybmF0aXZlJiBk
aWN0YXRpb25BbHRlcm5hdGl2ZSkKK3sKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShkaWN0YXRp
b25BbHRlcm5hdGl2ZS5yYW5nZVN0YXJ0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKGRpY3RhdGlvbkFsdGVybmF0aXZlLnJhbmdlTGVuZ3RoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRpY3RhdGlvbkFs
dGVybmF0aXZlLmRpY3RhdGlvbkNvbnRleHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIAogdm9pZCBBcmd1bWVudENvZGVyPEZpbGVDaG9vc2VyU2V0dGlu
Z3M+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBGaWxlQ2hvb3NlclNl
dHRpbmdzJiBzZXR0aW5ncykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAppbmRleCAyNjk3NDA4ZWQ1NmVkNmQxMzYzZjg0M2E2MjA0ZmI5NzQwYzY5
Mjg1Li5kYjJiOGY3NDFlYzJhMzFhY2JkYzEyN2M0MTcxZjljYjM3ZDQ1OWFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC01MCw2ICs1MCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAgICAg
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKICAgICBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmU7
CisgICAgc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOwogICAgIHN0cnVjdCBEcmFnU2Vzc2lv
bjsKICAgICBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5nczsKICAgICBzdHJ1Y3QgR3JhbW1hckRl
dGFpbDsKQEAgLTIwOSw2ICsyMTAsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpEYXRhYmFzZURldGFpbHM+IHsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJn
dW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzJik7CiB9OwogCit0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiB7
CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6
OkRpY3RhdGlvbkFsdGVybmF0aXZlJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50
RGVjb2RlciosIFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlJik7Cit9OworCiB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3M+IHsK
ICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6
RmlsZUNob29zZXJTZXR0aW5ncyYpOwogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERl
Y29kZXIqLCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAppbmRleCA1MmRkMDUwYjg2
MGY2ZTZkZGU5MmI5MGU4YmY4YWY0ODQxNDJmN2M0Li5hYzA3NGU4Y2M1NTcyODQ0MTgyYWE1OTM1
YzEwNDllZWY3YzdkNTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTMzLDggKzMzLDExIEBACiBAY2xhc3MgV0tFZGl0b3JV
bmRvVGFyZ2V0T2JqQzsKIEBjbGFzcyBXS1ZpZXc7CiAKLW5hbWVzcGFjZSBXZWJLaXQgeworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOworfQog
CituYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEZpbmRJbmRpY2F0b3JXaW5kb3c7CiAKIGNsYXNz
IFBhZ2VDbGllbnRJbXBsIDogcHVibGljIFBhZ2VDbGllbnQgewpAQCAtMTMwLDExICsxMzMsMjIg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgV0tWaWV3KiB3a1ZpZXcoKSBjb25zdCB7IHJldHVy
biBtX3drVmlldzsgfQogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgdmly
dHVhbCB1aW50NjRfdCBhZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5T
VGV4dEFsdGVybmF0aXZlcz4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0
ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOworICAgIHZpcnR1YWwgdm9pZCBz
aG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5k
aW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOworICAgIHZp
cnR1YWwgdm9pZCBkaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSSgpOworICAgIHZpcnR1YWwg
VmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNv
bnRleHQpOworI2VuZGlmCisKICAgICBXS1ZpZXcqIG1fd2tWaWV3OwogICAgIFJldGFpblB0cjxX
S0VkaXRvclVuZG9UYXJnZXRPYmpDPiBtX3VuZG9UYXJnZXQ7CiAjaWYgVVNFKEFVVE9DT1JSRUNU
SU9OX1BBTkVMKQogICAgIENvcnJlY3Rpb25QYW5lbCBtX2NvcnJlY3Rpb25QYW5lbDsKICNlbmRp
ZgorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIE93blB0cjxXZWJDb3JlOjpB
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+IG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KaW5kZXggNzgzYzMyODAw
OTBlOTZkY2I1NDQ5ZDVkMzMxNGE4ZDY3MmIwZjFlOS4uOGQwOTEzZTUyYzgzZmMxNTZhNTc4OGE1
MWU4NDcyZmJhNzdlZDM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvUGFnZUNsaWVudEltcGwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAgLTI2LDYgKzI2LDkgQEAKICNpbXBvcnQgImNvbmZp
Zy5oIgogI2ltcG9ydCAiUGFnZUNsaWVudEltcGwuaCIKIAorI2lmIFVTRShESUNUQVRJT05fQUxU
RVJOQVRJVkVTKQorI2ltcG9ydCA8QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgorI2VuZGlm
CiAjaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgog
I2ltcG9ydCAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgpAQCAtMzgsNiArNDEsNyBAQAogI2ltcG9y
dCAiV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oIgogI2ltcG9ydCAiV2ViRWRpdENvbW1hbmRQcm94
eS5oIgogI2ltcG9ydCAiV2ViUG9wdXBNZW51UHJveHlNYWMuaCIKKyNpbXBvcnQgPFdlYkNvcmUv
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0JpdG1hcElt
YWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0N1cnNvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9h
dFJlY3QuaD4KQEAgLTEyMyw2ICsxMjcsOSBAQCBQYXNzT3duUHRyPFBhZ2VDbGllbnRJbXBsPiBQ
YWdlQ2xpZW50SW1wbDo6Y3JlYXRlKFdLVmlldyogd2tWaWV3KQogUGFnZUNsaWVudEltcGw6OlBh
Z2VDbGllbnRJbXBsKFdLVmlldyogd2tWaWV3KQogICAgIDogbV93a1ZpZXcod2tWaWV3KQogICAg
ICwgbV91bmRvVGFyZ2V0KEFkb3B0TlMsIFtbV0tFZGl0b3JVbmRvVGFyZ2V0T2JqQyBhbGxvY10g
aW5pdF0pCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgLCBtX2FsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlcihhZG9wdFB0cihuZXcgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyKSkKKyNlbmRpZgogewogfQogCkBAIC0yMTUsMTAgKzIyMiwxMyBAQCB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpwcm9jZXNzRGlkQ3Jhc2goKQogewogICAgIFttX3drVmlldyBfcHJvY2Vzc0RpZENy
YXNoXTsKIH0KLSAgICAKKwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZUNsb3NlZCgpCiB7CiAg
ICAgW21fd2tWaWV3IF9wYWdlQ2xvc2VkXTsKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZF
UykKKyAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+Y2xlYXIoKTsKKyNlbmRpZgog
fQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRSZWxhdW5jaFByb2Nlc3MoKQpAQCAtNTM1LDQg
KzU0NSwzNSBAQCBib29sIFBhZ2VDbGllbnRJbXBsOjpleGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxl
Y3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yU3RyaW5nKQogICAgIHJldHVybiBbbV93a1ZpZXcg
X2V4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yOk5TU2VsZWN0b3JGcm9tU3RyaW5nKHNlbGVj
dG9yU3RyaW5nKV07CiB9CiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKK3VpbnQ2
NF90IFBhZ2VDbGllbnRJbXBsOjphZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWlu
UHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mIGFsdGVybmF0aXZlcykKK3sKKyAgICByZXR1cm4gbV9h
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmFkZEFsdGVybmF0aXZlcyhhbHRlcm5hdGl2ZXMp
OworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMo
dWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlci0+cmVtb3ZlQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpOworfQorCit2b2lk
IFBhZ2VDbGllbnRJbXBsOjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlv
bkNvbnRleHQpCit7CisgICAgaWYgKCFpc1ZpZXdWaXNpYmxlKCkgfHwgIWlzVmlld0luV2luZG93
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+
c2hvd0FsdGVybmF0aXZlcyhtX3drVmlldywgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgZGlj
dGF0aW9uQ29udGV4dCwgXihOU1N0cmluZyogYWNjZXB0ZWRBbHRlcm5hdGl2ZSl7CisgICAgICAg
IFttX3drVmlldyBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDphY2NlcHRlZEFsdGVybmF0
aXZlXTsKKyAgICB9KTsKK30KKworVmVjdG9yPFN0cmluZz4gUGFnZUNsaWVudEltcGw6OmRpY3Rh
dGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIHJldHVy
biBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+YWx0ZXJuYXRpdmVzRm9yQ29udGV4dChk
aWN0YXRpb25Db250ZXh0KTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlzbWlzc0RpY3Rh
dGlvbkFsdGVybmF0aXZlVUkoKQoreworICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
LT5kaXNtaXNzQWx0ZXJuYXRpdmVzKCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KaW5kZXggMjky
NDU1M2UyMDU3NzdlNzVhMTBmM2RjMjM5MTMxZTMzMzU2NmNhYi4uYTFiNTU3NmMwZWE5N2U5OGQ0
NmY1NzU4ZThhMWEzODBiZDg0ZTJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlldy5tbQpAQCAtMjYsNiArMjYsMTEgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiV0tWaWV3LmgiCiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyNpbXBv
cnQgPEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4KKyNpbXBvcnQgPEFwcEtpdC9OU0F0dHJp
YnV0ZWRTdHJpbmcuaD4KKyNlbmRpZgorCiAjaW1wb3J0ICJBdHRyaWJ1dGVkU3RyaW5nLmgiCiAj
aW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgpAQCAt
NzQsNiArNzksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZWdpb24uaD4KICNpbXBvcnQgPFdlYkNv
cmUvUnVuTG9vcC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YkNvcmVOU1N0cmluZ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KQEAgLTExNzcsNyArMTE4MywxMiBAQCBz
dGF0aWMgY29uc3Qgc2hvcnQga0lPSElERXZlbnRUeXBlU2Nyb2xsID0gNjsKICAgICBOU1N0cmlu
ZyAqdGV4dDsKICAgICBib29sIGlzRnJvbUlucHV0TWV0aG9kID0gX2RhdGEtPl9wYWdlLT5lZGl0
b3JTdGF0ZSgpLmhhc0NvbXBvc2l0aW9uOwogCisgICAgVmVjdG9yPFRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZT4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzOworCiAgICAgaWYgKGlzQXR0cmlidXRlZFN0
cmluZykgeworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgICAgICBjb2xsZWN0
RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlcyhzdHJpbmcsIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7
CisjZW5kaWYKICAgICAgICAgLy8gRklYTUU6IFdlIGlnbm9yZSBtb3N0IGF0dHJpYnV0ZXMgZnJv
bSB0aGUgc3RyaW5nLCBzbyBmb3IgZXhhbXBsZSBpbnNlcnRpbmcgZnJvbSBDaGFyYWN0ZXIgUGFs
ZXR0ZSBsb3NlcyBmb250IGFuZCBnbHlwaCB2YXJpYXRpb24gZGF0YS4KICAgICAgICAgdGV4dCA9
IFtzdHJpbmcgc3RyaW5nXTsKICAgICB9IGVsc2UKQEAgLTExOTksNyArMTIxMCwxMSBAQCBzdGF0
aWMgY29uc3Qgc2hvcnQga0lPSElERXZlbnRUeXBlU2Nyb2xsID0gNjsKIAogICAgIFN0cmluZyBl
dmVudFRleHQgPSB0ZXh0OwogICAgIGV2ZW50VGV4dC5yZXBsYWNlKE5TQmFja1RhYkNoYXJhY3Rl
ciwgTlNUYWJDaGFyYWN0ZXIpOyAvLyBzYW1lIHRoaW5nIGlzIGRvbmUgaW4gS2V5RXZlbnRNYWMu
bW0gaW4gV2ViQ29yZQotICAgIGJvb2wgZXZlbnRIYW5kbGVkID0gX2RhdGEtPl9wYWdlLT5pbnNl
cnRUZXh0KGV2ZW50VGV4dCwgcmVwbGFjZW1lbnRSYW5nZS5sb2NhdGlvbiwgTlNNYXhSYW5nZShy
ZXBsYWNlbWVudFJhbmdlKSk7CisgICAgYm9vbCBldmVudEhhbmRsZWQ7CisgICAgaWYgKCFkaWN0
YXRpb25BbHRlcm5hdGl2ZXMuaXNFbXB0eSgpKQorICAgICAgICBldmVudEhhbmRsZWQgPSBfZGF0
YS0+X3BhZ2UtPmluc2VydERpY3RhdGVkVGV4dChldmVudFRleHQsIHJlcGxhY2VtZW50UmFuZ2Uu
bG9jYXRpb24sIE5TTWF4UmFuZ2UocmVwbGFjZW1lbnRSYW5nZSksIGRpY3RhdGlvbkFsdGVybmF0
aXZlcyk7CisgICAgZWxzZQorICAgICAgICBldmVudEhhbmRsZWQgPSBfZGF0YS0+X3BhZ2UtPmlu
c2VydFRleHQoZXZlbnRUZXh0LCByZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uLCBOU01heFJhbmdl
KHJlcGxhY2VtZW50UmFuZ2UpKTsKIAogICAgIGlmIChwYXJhbWV0ZXJzKQogICAgICAgICBwYXJh
bWV0ZXJzLT5ldmVudEludGVycHJldGF0aW9uSGFkU2lkZUVmZmVjdHMgfD0gZXZlbnRIYW5kbGVk
OwpAQCAtMTQ1MSw3ICsxNDY2LDExIEBAIHN0YXRpYyBjb25zdCBzaG9ydCBrSU9ISURFdmVudFR5
cGVTY3JvbGwgPSA2OwogICAgIGlmICghdmFsaWRBdHRyaWJ1dGVzKSB7CiAgICAgICAgIHZhbGlk
QXR0cmlidXRlcyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWUsIE5TVW5kZXJs
aW5lQ29sb3JBdHRyaWJ1dGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNNYXJr
ZWRDbGF1c2VTZWdtZW50QXR0cmlidXRlTmFtZSwgbmlsXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5TTWFya2VkQ2xhdXNlU2VnbWVudEF0dHJpYnV0ZU5hbWUsCisjaWYgVVNFKERJQ1RB
VElPTl9BTFRFUk5BVElWRVMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBOU1RleHRBbHRl
cm5hdGl2ZXNBdHRyaWJ1dGVOYW1lLAorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuaWxdOwogICAgICAgICAvLyBOU1RleHQgYWxzbyBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGF0
dHJpYnV0ZXMsIGJ1dCBpdCdzCiAgICAgICAgIC8vIGhhcmQgdG8gdGVsbCB3aGljaCBhcmUgcmVh
bGx5IHJlcXVpcmVkIGZvciB0ZXh0IGlucHV0IHRvCiAgICAgICAgIC8vIHdvcmsgd2VsbDsgSSBo
YXZlIG5vdCBzZWVuIGFueSBpbnB1dCBtZXRob2QgbWFrZSB1c2Ugb2YgdGhlbSB5ZXQuCkBAIC0y
OTA2LDkgKzI5MjUsOSBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhXaXRoVW5pcXVlRmlsZW5hbWVG
b3JQYXRoKE5TU3RyaW5nICpwYXRoKQogICAgIHJldHVybiBfZGF0YS0+X3NwZWxsQ2hlY2tlckRv
Y3VtZW50VGFnOwogfQogCi0tICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDooTlNT
dHJpbmcqKXJlc3VsdAorLSAodm9pZCloYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDooTlNT
dHJpbmcqKXRleHQKIHsKLSAgICBfZGF0YS0+X3BhZ2UtPmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJ
UmVzdWx0KHJlc3VsdCk7CisgICAgX2RhdGEtPl9wYWdlLT5oYW5kbGVBbHRlcm5hdGl2ZVRleHRV
SVJlc3VsdCh0ZXh0KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKaW5kZXggMDhjZmYxNDBjZmZhODAxYTBmMzMyYmM4
ZDI3NzQ0NThmYjk0MDkyZC4uMDliOWM4Y2YxZDE2YTdiOTcwYjJjY2UyYmRlMzIyN2IzODJmNzk0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50
ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRl
cm5hbC5oCkBAIC05OSw1ICs5OSw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogLSAodm9pZClfY2Fj
aGVXaW5kb3dCb3R0b21Db3JuZXJSZWN0OwogCiAtIChOU0ludGVnZXIpc3BlbGxDaGVja2VyRG9j
dW1lbnRUYWc7Ci0tICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDooTlNTdHJpbmcq
KXJlc3VsdDsKKy0gKHZvaWQpaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6KE5TU3RyaW5n
Kil0ZXh0OworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA2
MjA1OGZkNDhiOTNmZmE2YWQ1ZDBmYzJkMjMyYWZiNTUxMzBjN2NlLi43NDAxZmQ3OTlkNGFkMGVj
YjUzYzNiYmY0YzM2MTA3NzM4MGQwY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAKIAogI2lmIFVTRShBUFBLSVQpCiBPQkpDX0NMQVNTIFdL
VmlldzsKK09CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogI2VuZGlmCiAjZW5kaWYKIApA
QCAtMjAxLDggKzIwMiwxNSBAQCBwdWJsaWM6CiAKICNpZiBVU0UoQVBQS0lUKQogICAgIHZpcnR1
YWwgV0tWaWV3KiB3a1ZpZXcoKSBjb25zdCA9IDA7Ci0jZW5kaWYKLSNlbmRpZgorI2lmIFVTRShE
SUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIHZpcnR1YWwgdWludDY0X3QgYWRkRGljdGF0aW9u
QWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGlj
dGF0aW9uQ29udGV4dCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJu
YXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRl
eHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlz
bWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoKSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8U3Ry
aW5nPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAw
OworI2VuZGlmIC8vIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorI2VuZGlmIC8vIFVTRShB
UFBLSVQpCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAgICAgdmlydHVhbCB2b2lkIGRpZENo
YW5nZVNjcm9sbGJhcnNGb3JNYWluRnJhbWUoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYTg0YzQ2NzkzMWU1YTI3N2ZjMTg3ZDdm
MjFjNjY5YTY3OWFjNmZkOC4uY2M5ODBkMzE4ZWEzOTMzZmFhOTZiNDY3YmNhZGRiMGY0Njk3MGYy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM4MTEs
NiArMzgxMSwyOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlS
ZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCiAgICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6SGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0KSwgbV9w
YWdlSUQsIDApOwogI2VuZGlmCiB9CisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykK
K3ZvaWQgV2ViUGFnZVByb3h5OjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3Rh
dGlvbkNvbnRleHQpCit7CisgICAgbV9wYWdlQ2xpZW50LT5zaG93RGljdGF0aW9uQWx0ZXJuYXRp
dmVVSShib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCBkaWN0YXRpb25Db250ZXh0KTsKK30KKwor
dm9pZCBXZWJQYWdlUHJveHk6OmRpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKCkKK3sKKyAg
ICBtX3BhZ2VDbGllbnQtPmRpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKCk7Cit9CisKK3Zv
aWQgV2ViUGFnZVByb3h5OjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGlj
dGF0aW9uQ29udGV4dCkKK3sKKyAgICBtX3BhZ2VDbGllbnQtPnJlbW92ZURpY3RhdGlvbkFsdGVy
bmF0aXZlcyhkaWN0YXRpb25Db250ZXh0KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpY3Rh
dGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0LCBWZWN0b3I8U3RyaW5n
PiYgcmVzdWx0KQoreworICAgIHJlc3VsdCA9IG1fcGFnZUNsaWVudC0+ZGljdGF0aW9uQWx0ZXJu
YXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpOworfQorI2VuZGlmCisKICNlbmRpZiAvLyBQTEFURk9S
TShNQUMpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IDZkOTg1OThmZmVjNDhkY2NmYTdiNWQ3YmE5ZWExM2IzMTUzNmNh
YjguLjY5Zjk4ODE5MTBkMDRiZTJlNTA5Y2ZjYzRiMDBlNjAyNTNjOWNiNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTU4LDYgKzU4LDkgQEAKICNpbmNsdWRl
ICJXZWJQb3B1cE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZENsaWVudC5o
IgogI2luY2x1ZGUgIldlYlVJQ2xpZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BbHRlcm5hdGl2
ZVRleHRDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9EcmFnU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3Vs
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZv
cm1TY3JlZW4uaD4KQEAgLTk1LDYgKzk4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIEludFNpemU7CiAgICAgY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogICAgIHN0cnVjdCBGaWxl
Q2hvb3NlclNldHRpbmdzOworICAgIHN0cnVjdCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U7CiAg
ICAgc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKICAgICBzdHJ1Y3QgVmlld3BvcnRBdHRyaWJ1
dGVzOwogICAgIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKQEAgLTM1Myw2ICszNTcsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjb25maXJtQ29tcG9zaXRpb24oKTsKICAgICB2b2lkIGNhbmNlbENvbXBv
c2l0aW9uKCk7CiAgICAgYm9vbCBpbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0
X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kKTsK
KyAgICBib29sIGluc2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90
IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGRpY3RhdGlvbkFs
dGVybmF0aXZlcyk7CiAgICAgdm9pZCBnZXRNYXJrZWRSYW5nZSh1aW50NjRfdCYgbG9jYXRpb24s
IHVpbnQ2NF90JiBsZW5ndGgpOwogICAgIHZvaWQgZ2V0U2VsZWN0ZWRSYW5nZSh1aW50NjRfdCYg
bG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpOwogICAgIHZvaWQgZ2V0QXR0cmlidXRlZFN1YnN0
cmluZ0Zyb21SYW5nZSh1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBBdHRyaWJ1
dGVkU3RyaW5nJik7CkBAIC05MDIsNiArOTA3LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNt
aXNzQ29ycmVjdGlvblBhbmVsU29vbihpbnQzMl90IHJlYXNvbiwgU3RyaW5nJiByZXN1bHQpOwog
ICAgIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShpbnQzMl90IHJlc3BvbnNlVHlw
ZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVu
dFN0cmluZyk7CiAjZW5kaWYgLy8gIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQor
CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgdm9pZCBzaG93RGljdGF0aW9u
QWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0
YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOworICAgIHZvaWQgZGlzbWlzc0Rp
Y3RhdGlvbkFsdGVybmF0aXZlVUkoKTsKKyAgICB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0
aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKKyAgICB2b2lkIGRpY3RhdGlvbkFsdGVy
bmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0
KTsKKyNlbmRpZgogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogICAgIHZvaWQgY2xlYXJMb2Fk
RGVwZW5kZW50Q2FsbGJhY2tzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkZTYwYTcxNjZmNTRhODE4OTEzNTBlMDc1NDI1
YTNhOTgzZTNlMGUzLi45Mzg1OGE4MzJiYTk3MGI5ODNkYTVhYTEwNTY1MjM5MDk1MmY2NzMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KQEAgLTI4MSw2ICsyODEsMTMgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBS
ZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9uc2VUeXBlLCBTdHJpbmcg
cmVwbGFjZWRTdHJpbmcsIFN0cmluZyByZXBsYWNlbWVudFN0cmluZyk7CiAjZW5kaWYKIAorI2lm
IFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIFNob3dEaWN0YXRpb25BbHRlcm5hdGl2
ZVVJKFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRf
dCBkaWN0YXRpb25Db250ZXh0KQorICAgIERpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKCkK
KyAgICBSZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4
dCkKKyAgICBEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkg
LT4gKFZlY3RvcjxTdHJpbmc+IGFsdGVybmF0aXZlcykKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0o
V0lOKQogICAgICMgV2luZG93cyA3IEdlc3R1cmUgTWVzc2FnZXMKICAgICBTZXRHZXN0dXJlUmVh
Y2hlZFNjcm9sbGluZ0xpbWl0KGJvb2wgbGltaXRSZWFjaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbQppbmRleCAyOTY4MWM3NGRhNmUwYjhk
YjY3Nzk3NjlhNTYxZDdhMzNiZWMyMmU3Li4zM2YzZmU5ODJjZmJlODQ0YjdhMDVkY2E4M2UwNjY2
OGMwZjI0NjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJl
Y3Rpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rp
b25QYW5lbC5tbQpAQCAtNDMsNiArNDMsOSBAQCBzdGF0aWMgaW5saW5lIE5TQ29ycmVjdGlvbklu
ZGljYXRvclR5cGUgY29ycmVjdGlvbkluZGljYXRvclR5cGUoQWx0ZXJuYXRpdmVUZXh0VAogICAg
ICAgICByZXR1cm4gTlNDb3JyZWN0aW9uSW5kaWNhdG9yVHlwZVJldmVyc2lvbjsKICAgICBjYXNl
IEFsdGVybmF0aXZlVGV4dFR5cGVTcGVsbGluZ1N1Z2dlc3Rpb25zOgogICAgICAgICByZXR1cm4g
TlNDb3JyZWN0aW9uSW5kaWNhdG9yVHlwZUd1ZXNzZXM7CisgICAgY2FzZSBBbHRlcm5hdGl2ZVRl
eHRUeXBlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlRGVmYXVsdDsKQEAgLTEzOCw3ICsxNDEs
NyBAQCB2b2lkIENvcnJlY3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0ZWRSZXBsYWNlbWVudChOU1N0
cmluZyogYWNjZXB0ZWRSZXBsYWNlbWVudCwgTgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAg
ICBbbV92aWV3LmdldCgpIGhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDphY2NlcHRlZFJlcGxh
Y2VtZW50XTsKKyAgICBbbV92aWV3LmdldCgpIGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0
OmFjY2VwdGVkUmVwbGFjZW1lbnRdOwogICAgIG1fdmlldy5jbGVhcigpOwogICAgIGlmIChhY2Nl
cHRlZFJlcGxhY2VtZW50KQogICAgICAgICBtX3Jlc3VsdEZvckRpc21pc3NhbC5hZG9wdE5TKFth
Y2NlcHRlZFJlcGxhY2VtZW50IGNvcHldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggZWE3ZTVlZjYzYTY3MTgyNmI4ODBkZTg0MDhm
ZjY0ZGMxNjdiYmI4Mi4uOTY3MTJiZjBjNTI3MzYyMjE3M2NlNTVjZTRlMDQ0ZWMzZmE2ZTkxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0K
QEAgLTM5LDcgKzM5LDkgQEAKICNpbXBvcnQgIlRleHRDaGVja2VyLmgiCiAjaW1wb3J0ICJXZWJQ
YWdlTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgorI2ltcG9ydCA8V2Vi
Q29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+CiAjaW1w
b3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlLmg+CiAKQEAgLTE5OSw2ICsyMDEsMzUgQEAgYm9vbCBXZWJQYWdlUHJveHk6Omlu
c2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3Rh
cnQKICAgICByZXR1cm4gaGFuZGxlZDsKIH0KIAorYm9vbCBXZWJQYWdlUHJveHk6Omluc2VydERp
Y3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VT
dGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCwgY29uc3QgVmVjdG9yPFRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZSkKK3sKKyNp
ZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBpZiAoZGljdGF0aW9uQWx0ZXJuYXRp
dmVzV2l0aFJhbmdlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGluc2VydFRleHQodGV4dCwg
cmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdlRW5kKTsKKworICAgIGlmICgh
aXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFZlY3RvcjxEaWN0YXRpb25B
bHRlcm5hdGl2ZT4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzOworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBkaWN0YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFuZ2Uuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgY29uc3QgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlJiBhbHRlcm5hdGl2ZVdpdGhSYW5n
ZSA9IGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZVtpXTsKKyAgICAgICAgdWludDY0X3Qg
ZGljdGF0aW9uQ29udGV4dCA9IG1fcGFnZUNsaWVudC0+YWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVz
KGFsdGVybmF0aXZlV2l0aFJhbmdlLmFsdGVybmF0aXZlcyk7CisgICAgICAgIGlmIChkaWN0YXRp
b25Db250ZXh0KQorICAgICAgICAgICAgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLmFwcGVuZChEaWN0
YXRpb25BbHRlcm5hdGl2ZShhbHRlcm5hdGl2ZVdpdGhSYW5nZS5yYW5nZS5sb2NhdGlvbiwgYWx0
ZXJuYXRpdmVXaXRoUmFuZ2UucmFuZ2UubGVuZ3RoLCBkaWN0YXRpb25Db250ZXh0KSk7CisgICAg
fQorCisgICAgaWYgKGRpY3RhdGlvbkFsdGVybmF0aXZlcy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBpbnNlcnRUZXh0KHRleHQsIHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRS
YW5nZUVuZCk7CisKKyAgICBib29sIGhhbmRsZWQgPSB0cnVlOworICAgIHByb2Nlc3MoKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERpY3RhdGVkVGV4dCh0ZXh0LCByZXBsYWNl
bWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQsIGRpY3RhdGlvbkFsdGVybmF0aXZl
cyksIE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnREaWN0YXRlZFRleHQ6OlJlcGx5KGhhbmRsZWQs
IG1fZWRpdG9yU3RhdGUpLCBtX3BhZ2VJRCk7CisgICAgcmV0dXJuIGhhbmRsZWQ7CisjZWxzZQor
ICAgIHJldHVybiBpbnNlcnRUZXh0KHRleHQsIHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgcmVwbGFj
ZW1lbnRSYW5nZUVuZCk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtl
ZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCkKIHsKICAgICBsb2Nh
dGlvbiA9IE5TTm90Rm91bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaApp
bmRleCAyMDA3NjU4MzY4MDUzZmYyYjJlZmJiMGEzNGJmZmZjZmI5ZDI5NzFhLi44MGFhOWE0ZTU4
YTkzMGY4ZTA1Mjk0NjQxZDMzMjVjMzdlMWI3ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50LmgKQEAgLTM4LDEwICszOCwxOCBAQCBwdWJsaWM6CiAgICAgV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50KFdlYlBhZ2UgKik7CiAgICAgdmlydHVhbCB+V2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSBPVkVSUklERTsK
KyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgdmlydHVhbCB2b2lkIHNob3dDb3Jy
ZWN0aW9uQWx0ZXJuYXRpdmUoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NBbHRlcm5hdGl2ZShXZWJDb3JlOjpSZWFzb25Gb3JE
aXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBk
aXNtaXNzQWx0ZXJuYXRpdmVTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5h
dGl2ZVRleHQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlv
blJlc3BvbnNlKFdlYkNvcmU6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSBPVkVS
UklERTsKKyNlbmRpZgorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIHZpcnR1
YWwgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVV
SSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2
ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBWZWN0
b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4
dCkgT1ZFUlJJREU7CisjZW5kaWYKIHByaXZhdGU6CiAgICAgV2ViUGFnZSAqbV9wYWdlOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwCmluZGV4IGFj
MWRmYzU4M2E2NGFhMTIxMzY2NjlmMjk0YjJlNGZlZWZjOTBjMGEuLjFmY2VjOTExMzg1MmRhYTQx
ZjdhZDQ5MjM5ZmI1ODAwYjQ1YWQ5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50LmNwcApAQCAtNTEsMzQgKzUxLDUxIEBAIHZvaWQgV2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50OjpwYWdlRGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAorI2lm
IFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKIHZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
OjpzaG93Q29ycmVjdGlvbkFsdGVybmF0aXZlKEFsdGVybmF0aXZlVGV4dFR5cGUgdHlwZSwgY29u
c3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykKIHsKLSNpZiBVU0Uo
QVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlNob3dDb3JyZWN0aW9uUGFuZWwodHlwZSwgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3Ry
aW5nLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcsIGFsdGVybmF0aXZlUmVwbGFj
ZW1lbnRTdHJpbmdzKSk7Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQ6OmRpc21pc3NBbHRlcm5hdGl2ZShSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0
IHJlYXNvbikKIHsKLSNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3NDb3JyZWN0aW9uUGFuZWwocmVhc29u
KSk7Ci0jZW5kaWYKIH0KIAogU3RyaW5nIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlz
c0FsdGVybmF0aXZlU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0IHJlYXNv
bikKIHsKICAgICBTdHJpbmcgcmVzdWx0OwotI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkK
ICAgICBtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWxTb29uKHJlYXNvbiksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3ND
b3JyZWN0aW9uUGFuZWxTb29uOjpSZXBseShyZXN1bHQpKTsKLSNlbmRpZgogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIHZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZWNvcmRBdXRvY29y
cmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwg
Y29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0
cmluZykKIHsKLSNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UocmVz
cG9uc2VUeXBlLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpKTsKK30KICNlbmRp
ZgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCit2b2lkIFdlYkFsdGVybmF0aXZl
VGV4dENsaWVudDo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlv
bkNvbnRleHQpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJl
bW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyhkaWN0YXRpb25Db250ZXh0KSk7CiB9CiAKK3ZvaWQg
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90
IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRl
eHQsIGRpY3RhdGlvbkNvbnRleHQpKTsKK30KKwordm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQ6OmRpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoKSk7
Cit9CisKK1ZlY3RvcjxTdHJpbmc+IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGljdGF0aW9u
QWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgVmVjdG9yPFN0
cmluZz4gcmVzdWx0OworICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWN0YXRpb25BbHRlcm5hdGl2ZXM6OlJlcGx5KHJlc3VsdCkpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IDE1ZGE3ZjVmMTViYTYyZmJkYzA3Yjg3NmY3ODNkZDRhMmRk
MDE0NDguLmNiODdmMGUyYjg1MzZkY2UxYjI0ZGQ5Mjk3ZGZjZTcxNGUyNGExOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDgsNiArNDgsNyBA
QAogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRt
YXAuaCIKICNpbmNsdWRlICJXZWJVbmRvU3RlcC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRGljdGF0
aW9uQWx0ZXJuYXRpdmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMu
aD4KQEAgLTQxOSw3ICs0MjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG91bGREZWxheVdpbmRv
d09yZGVyaW5nRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW50JiwgYm9vbCYgcmVzdWx0
KTsKICAgICB2b2lkIGFjY2VwdHNGaXJzdE1vdXNlKGludCBldmVudE51bWJlciwgY29uc3QgV2Vi
S2l0OjpXZWJNb3VzZUV2ZW50JiwgYm9vbCYgcmVzdWx0KTsKICAgICBib29sIHBlcmZvcm1Ob25F
ZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcihjb25zdCBTdHJpbmcmKTsKLQorICAgIHZvaWQgaW5z
ZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRS
YW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kLCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9u
cywgYm9vbCYgaGFuZGxlZCwgRWRpdG9yU3RhdGUmIG5ld1N0YXRlKTsKICNlbGlmIFBMQVRGT1JN
KFdJTikKICAgICB2b2lkIGNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0
aW9uU3RyaW5nKTsKICAgICB2b2lkIHNldENvbXBvc2l0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBj
b21wb3NpdGlvblN0cmluZywgY29uc3QgV1RGOjpWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25V
bmRlcmxpbmU+JiB1bmRlcmxpbmVzLCB1aW50NjRfdCBjdXJzb3JQb3NpdGlvbik7CkBAIC01MDQs
NyArNTA1LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCB1bm1hcmtBbGxNaXNzcGVsbGluZ3MoKTsK
ICAgICB2b2lkIHVubWFya0FsbEJhZEdyYW1tYXIoKTsKLQogI2lmIFBMQVRGT1JNKE1BQykgJiYg
IWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQogICAgIHZvaWQgaGFuZGxlQWx0ZXJu
YXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXgg
M2IwY2VkYzRhYzg4MTA1MjYyMDBjM2E0YzNlZjRmYzBiNWM1ODhiYS4uMDk0ZTM3OTRiZDRhZWUy
OTQxZWNjMjBiMDRiZjU3MDNlZWNkMTRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTI1MCw2ICsyNTAsNyBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICAgICBFeGVjdXRlS2V5cHJlc3NDb21tYW5kcyhWZWN0
b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiBzYXZlZENvbW1hbmRzKSAtPiAoYm9vbCBoYW5k
bGVkLCBXZWJLaXQ6OkVkaXRvclN0YXRlIG5ld1N0YXRlKQogICAgIFNob3VsZERlbGF5V2luZG93
T3JkZXJpbmdFdmVudChXZWJLaXQ6OldlYk1vdXNlRXZlbnQgZXZlbnQpIC0+IChib29sIHJlc3Vs
dCkKICAgICBBY2NlcHRzRmlyc3RNb3VzZShpbnQgZXZlbnROdW1iZXIsIFdlYktpdDo6V2ViTW91
c2VFdmVudCBldmVudCkgLT4gKGJvb2wgcmVzdWx0KQorICAgIEluc2VydERpY3RhdGVkVGV4dChX
VEY6OlN0cmluZyB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90
IHJlcGxhY2VtZW50UmFuZ2VFbmQsIFdURjo6VmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVy
bmF0aXZlPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpIC0+IChib29sIGhhbmRsZWQsIFdlYktpdDo6
RWRpdG9yU3RhdGUgbmV3U3RhdGUpCiAjZW5kaWYKICNpZiBQTEFURk9STShXSU4pCiAgICAgLy8g
RklYTUU6IFVuaWZ5IHdpdGggTWFjIGNvdW50ZXJwYXJ0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA5ZTBjMTM3NzVk
MjZmMDBjZjJkODk3OGI2YzdmZmE5MjFhZmFkY2U0Li4yMmVlZGU4NDM1MGVlODlmMzU5NzQzYjg2
ZGZmY2Q3MDUyNmU3NTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0yOTAsNiArMjkwLDIxIEBAIHZvaWQgV2ViUGFn
ZTo6aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFu
Z2VTdGFydCwgdWluCiAgICAgbmV3U3RhdGUgPSBlZGl0b3JTdGF0ZSgpOwogfQogCit2b2lkIFdl
YlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJl
cGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRp
dmVMb2NhdGlvbnMsIGJvb2wmIGhhbmRsZWQsIEVkaXRvclN0YXRlJiBuZXdTdGF0ZSkKK3sKKyAg
ICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKKworICAgIGlmIChyZXBsYWNlbWVudFJhbmdlU3RhcnQgIT0gTlNOb3RGb3VuZCkg
eworICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UgPSBjb252ZXJ0VG9SYW5n
ZShmcmFtZSwgTlNNYWtlUmFuZ2UocmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJh
bmdlRW5kIC0gcmVwbGFjZW1lbnRSYW5nZVN0YXJ0KSk7CisgICAgICAgIGlmIChyZXBsYWNlbWVu
dFJhbmdlKQorICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oVmlz
aWJsZVNlbGVjdGlvbihyZXBsYWNlbWVudFJhbmdlLmdldCgpLCBTRUxfREVGQVVMVF9BRkZJTklU
WSkpOworICAgIH0KKworICAgIEFTU0VSVCghZnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlv
bigpKTsKKyAgICBoYW5kbGVkID0gZnJhbWUtPmVkaXRvcigpLT5pbnNlcnREaWN0YXRlZFRleHQo
dGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIG1fa2V5Ym9hcmRFdmVudEJlaW5n
SW50ZXJwcmV0ZWQpOworICAgIG5ld1N0YXRlID0gZWRpdG9yU3RhdGUoKTsKK30KKwogdm9pZCBX
ZWJQYWdlOjpnZXRNYXJrZWRSYW5nZSh1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5n
dGgpCiB7CiAgICAgbG9jYXRpb24gPSBOU05vdEZvdW5kOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGI1N2RhOTQ4OThkYjU2NGUxOGY1ODUxNDhk
ZDg0NDQyZjVjYWVmZmEuLjVlOWE2MThmZWVlMTExYTk5NzU1MDJmODdmZDllOThhOTZlMDY1MGMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxMi0wNi0xMSAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KKworICAgICAg
ICBNYXJrIHRleHQgd2l0aCB0ZXh0IGFsdGVybmF0aXZlIHdpdGggYmx1ZSB1bmRlcmxpbmUuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzA0NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXIubToKKyAgICAgICAgKCtbVGV4dElucHV0Q29u
dHJvbGxlciBpc1NlbGVjdG9yRXhjbHVkZWRGcm9tV2ViU2NyaXB0Ol0pOgorICAgICAgICAoK1tU
ZXh0SW5wdXRDb250cm9sbGVyIHdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjpdKToKKyAgICAgICAg
KC1bVGV4dElucHV0Q29udHJvbGxlciBkaWN0YXRlZFN0cmluZ1dpdGhQcmltYXJ5U3RyaW5nOmFs
dGVybmF0aXZlOmFsdGVybmF0aXZlT2Zmc2V0OmFsdGVybmF0aXZlTGVuZ3RoOl0pOgorCiAyMDEy
LTA2LTExICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRG9uJ3Qg
Y29uc2lkZXIgc2hvdyB3YXJuaW5ncyBpbiB0aGUgZ2FyZGVuLW8tbWF0aWMgVUkgZm9yIG5vbi1s
YXlvdXQgdGVzdCBmYWlsdXJlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1RleHRJbnB1dENvbnRyb2xsZXIubSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5w
dXRDb250cm9sbGVyLm0KaW5kZXggZjc4MDc5NDQ2MzY5ZTc4YzlmNDhjZTA4MTVlZjFjY2M4ZGYw
Yjk5ZC4uYWZlYjE2ZTRkMjQyYjJiNjAyMGMwMmU0NDFhZTgzZDc0MGU5MzJmMyAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXIubQorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlci5tCkBAIC0zMSw2ICsz
MSwxMCBAQAogCiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZU1hYy5oIgogI2ltcG9ydCA8QXBwS2l0
L05TSW5wdXRNYW5hZ2VyLmg+CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYg
IWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9MSU9OKQorI2RlZmluZSBTVVBQT1JUX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMKKyNpbXBvcnQg
PEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4KKyNlbmRpZgogI2ltcG9ydCA8V2ViS2l0L1dl
YkRvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWUuaD4KICNpbXBvcnQgPFdlYktp
dC9XZWJGcmFtZVByaXZhdGUuaD4KQEAgLTE3MCw3ICsxNzQsOCBAQCArIChCT09MKWlzU2VsZWN0
b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6KFNFTClhU2VsZWN0b3IKICAgICAgICAgICAgIHx8IGFT
ZWxlY3RvciA9PSBAc2VsZWN0b3IoY2hhcmFjdGVySW5kZXhGb3JQb2ludFg6WTopCiAgICAgICAg
ICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRl
eHQpCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGF0dHJpYnV0ZWRTdHJp
bmdXaXRoU3RyaW5nOikKLSAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc2V0
SW5wdXRNZXRob2RIYW5kbGVyOikpCisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVj
dG9yKHNldElucHV0TWV0aG9kSGFuZGxlcjopCisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0g
QHNlbGVjdG9yKGRpY3RhdGVkU3RyaW5nV2l0aFByaW1hcnlTdHJpbmc6YWx0ZXJuYXRpdmU6YWx0
ZXJuYXRpdmVPZmZzZXQ6YWx0ZXJuYXRpdmVMZW5ndGg6KSkKICAgICAgICAgcmV0dXJuIE5POwog
ICAgIHJldHVybiBZRVM7CiB9CkBAIC0xOTQsNyArMTk5LDkgQEAgKyAoTlNTdHJpbmcgKil3ZWJT
Y3JpcHROYW1lRm9yU2VsZWN0b3I6KFNFTClhU2VsZWN0b3IKICAgICBlbHNlIGlmIChhU2VsZWN0
b3IgPT0gQHNlbGVjdG9yKGF0dHJpYnV0ZWRTdHJpbmdXaXRoU3RyaW5nOikpCiAgICAgICAgIHJl
dHVybiBAIm1ha2VBdHRyaWJ1dGVkU3RyaW5nIjsgLy8ganVzdCBhIGZhY3RvcnkgbWV0aG9kLCBk
b2Vzbid0IGNhbGwgaW50byBOU1RleHRJbnB1dAogICAgIGVsc2UgaWYgKGFTZWxlY3RvciA9PSBA
c2VsZWN0b3Ioc2V0SW5wdXRNZXRob2RIYW5kbGVyOikpCi0gICAgICAgIHJldHVybiBAInNldElu
cHV0TWV0aG9kSGFuZGxlciI7IAorICAgICAgICByZXR1cm4gQCJzZXRJbnB1dE1ldGhvZEhhbmRs
ZXIiOworICAgIGVsc2UgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoZGljdGF0ZWRTdHJpbmdX
aXRoUHJpbWFyeVN0cmluZzphbHRlcm5hdGl2ZTphbHRlcm5hdGl2ZU9mZnNldDphbHRlcm5hdGl2
ZUxlbmd0aDopKQorICAgICAgICByZXR1cm4gQCJtYWtlRGljdGF0ZWRTdHJpbmciOwogCiAgICAg
cmV0dXJuIG5pbDsKIH0KQEAgLTM3NSw2ICszODIsMjcgQEAgLSAoTlNNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZyAqKWF0dHJpYnV0ZWRTdHJpbmdXaXRoU3RyaW5nOihOU1N0cmluZyAqKWFTdHJpbmcK
ICAgICByZXR1cm4gW1tbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhT
dHJpbmc6YVN0cmluZ10gYXV0b3JlbGVhc2VdOwogfQogCistIChOU011dGFibGVBdHRyaWJ1dGVk
U3RyaW5nKilkaWN0YXRlZFN0cmluZ1dpdGhQcmltYXJ5U3RyaW5nOihOU1N0cmluZyopYVN0cmlu
ZyBhbHRlcm5hdGl2ZTooTlNTdHJpbmcqKWFsdGVybmF0aXZlIGFsdGVybmF0aXZlT2Zmc2V0Oihp
bnQpb2Zmc2V0IGFsdGVybmF0aXZlTGVuZ3RoOihpbnQpbGVuZ3RoCit7CisjaWYgZGVmaW5lZChT
VVBQT1JUX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0
cmluZyogZGljdGF0ZWRTdHJpbmcgPSBbc2VsZiBhdHRyaWJ1dGVkU3RyaW5nV2l0aFN0cmluZzph
U3RyaW5nXTsKKyAgICBOU1JhbmdlIHJhbmdlV2l0aEFsdGVybmF0aXZlID0gTlNNYWtlUmFuZ2Uo
KE5TVUludGVnZXIpb2Zmc2V0LCAoTlNVSW50ZWdlcilsZW5ndGgpOworICAgIE5TU3RyaW5nKiBz
dWJTdHJpbmdXaXRoQWx0ZXJuYXRpdmUgPSBbYVN0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6cmFu
Z2VXaXRoQWx0ZXJuYXRpdmVdOworICAgIGlmICghc3ViU3RyaW5nV2l0aEFsdGVybmF0aXZlKQor
ICAgICAgICByZXR1cm4gbmlsOworCisgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2
ZU9iamVjdCA9IFtbW05TVGV4dEFsdGVybmF0aXZlcyBhbGxvY10gaW5pdFdpdGhQcmltYXJ5U3Ry
aW5nOnN1YlN0cmluZ1dpdGhBbHRlcm5hdGl2ZSBhbHRlcm5hdGl2ZVN0cmluZ3M6W05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0OmFsdGVybmF0aXZlXV0gYXV0b3JlbGVhc2VdOworICAgIGlmICghYWx0
ZXJuYXRpdmVPYmplY3QpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBbZGljdGF0ZWRTdHJp
bmcgYWRkQXR0cmlidXRlOk5TVGV4dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5hbWUgdmFsdWU6YWx0
ZXJuYXRpdmVPYmplY3QgcmFuZ2U6cmFuZ2VXaXRoQWx0ZXJuYXRpdmVdOworCisgICAgcmV0dXJu
IGRpY3RhdGVkU3RyaW5nOworI2Vsc2UKKyAgICByZXR1cm4gbmlsOworI2VuZGlmCit9CisKIC0g
KHZvaWQpc2V0SW5wdXRNZXRob2RIYW5kbGVyOihXZWJTY3JpcHRPYmplY3QgKiloYW5kbGVyCiB7
CiAgICAgaWYgKGlucHV0TWV0aG9kSGFuZGxlciA9PSBoYW5kbGVyKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJjNGJmNWY5
NjBlYThjZmEzMmI1ZDJkODRiMzJlY2ZlODI2ZDlmNGYuLjllNWMzYWE2ZGQyMTkwYTNhZDhhNTc0
NjE2ZTMwOGMyZmMwMDkzZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNi0xMSAgSmlh
IFB1ICA8anB1QGFwcGxlLmNvbT4KKworICAgICAgICBNYXJrIHRleHQgd2l0aCB0ZXh0IGFsdGVy
bmF0aXZlIHdpdGggYmx1ZSB1bmRlcmxpbmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MzA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQ6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdp
dGgtYWx0ZXJuYXRpdmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvZWRpdGluZy9pbnB1dC9lZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQtZGlj
dGF0ZWQtdGV4dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9l
ZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTA2
LTExICBNYXggRmVpbCAgPG1mZWlsQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIFVu
ZXhwZWN0ZWQgcmVwZWF0cyBvZiBzaG9ydCBtZWRpYQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLWxpb24vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1saW9u
L1NraXBwZWQKaW5kZXggOTdlNGI1ZGExZTMyYmQ4YTUxOGQyNjk5YzJjZDU1MjkzNGQzNDVmZi4u
ZmI4ODM0ZjE3Yjk2Mzc0ZjI3Njk3MWEwMTVlMzE5MDZhOWNmMWQ1YyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxpb24vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtbGlvbi9Ta2lwcGVkCkBAIC0zNSw2ICszNSwxMCBAQCBlZGl0aW5nL3RleHQtaXRl
cmF0b3IvZmluZFN0cmluZy1zZWxlY3Rpb24tZGlzYWJsZWQuaHRtbAogIyBQYXN0aW5nIHJlcGxh
Y2VzIHRoZSB0aHJlZSBwZXJpb2RzIHdpdGggYW4gZWxsaXBzaXMgb24gTGlvbgogZWRpdGluZy9w
YXN0ZWJvYXJkLzU0NzgyNTAuaHRtbAogCisjIE1vdW50YWluIExpb24gZnVuY3Rpb25hbGl0aWVz
CitwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9lZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRl
cm5hdGl2ZS5odG1sCitwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQt
dGV4dC5odG1sCisKICMgLS0tIE1lZGlhIC0tLQogCiAjIFRoZXNlIG5lZWQgaW52ZXN0aWdhdGlv
bgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBw
ZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtc25vd2xlb3BhcmQvU2tpcHBlZAppbmRleCA1
MmE3MzZlOTU4NDJhNjU4ZDAzYjY4MGE1YTc3YTFmYjU3OGU2YTYyLi5iMjcxNDVlOGY0NDdlMDIy
NmEzZGJkMDVmNjkxYmJjMjVhODBmNmUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtc25vd2xlb3BhcmQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
c25vd2xlb3BhcmQvU2tpcHBlZApAQCAtMjExLDMgKzIxMSw3IEBAIGZhc3Qvc3ViLXBpeGVsL2Zp
bGUtdXBsb2FkLWNvbnRyb2wtYXQtZnJhY3Rpb25hbC1vZmZzZXQuaHRtbAogIyBGcmFtZTo6Zmlu
ZFN0cmluZyBkb2VzIG5vdGhpbmcgb24gcGFnZXMgdGhhdCBwcmV2ZW50IHNlbGVjdGlvbgogIyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNjEKIGVkaXRpbmcvdGV4
dC1pdGVyYXRvci9maW5kU3RyaW5nLXNlbGVjdGlvbi1kaXNhYmxlZC5odG1sCisKKyMgRGljdGF0
ZWQgdGV4dCBpbnB1dCBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0KK3BsYXRmb3Jt
L21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLmh0
bWwKK3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0Lmh0bWwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQt
ZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVy
bmF0aXZlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTdjNzhjYTYzOGI1N2Y4OTQ1YjllMDE4
ZDVjMDljOTZkZmZhNDYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorRWRpdGluZyB0ZXh0IHRoYXQgaGFzIERpY3RhdGlv
bkFsdGVybmF0aXZlcyBtYXJrZXIgd2hvdWxkIGNhdXNlIHRoZSBtYXJrZXIgdG8gYmUgcmVtb3Zl
ZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCit0aGlzIGlzIGEgdGV4CitQQVNTIG1h
cmtlZFRleHQgaXMgIiIKKworVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJu
YXRpdmUuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQt
ZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdmMDA3OTAz
NjYyNjVmMGQwZWJiMGNiZDZhYmE2MTYwMmRlOWQzZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRo
LWFsdGVybmF0aXZlLmh0bWwKQEAgLTAsMCArMSw1OSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c3R5bGU+Citib2R5IHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwIH0KKzwvc3R5bGU+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwcmUgaWQ9ImRlc2NyaXB0aW9uIj48L3ByZT4KKzxkaXYgaWQ9
InRlc3QiIGNvbnRlbnRlZGl0YWJsZT48L2Rpdj4KKzxwIGlkPSJjb25zb2xlIj48L3A+Cis8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZGVzY3JpcHRpb24oIkVkaXRpbmcgdGV4
dCB0aGF0IGhhcyBEaWN0YXRpb25BbHRlcm5hdGl2ZXMgbWFya2VyIHdob3VsZCBjYXVzZSB0aGUg
bWFya2VyIHRvIGJlIHJlbW92ZWQuIik7CisKKyAgICB2YXIgY29uc29sZV9tZXNzYWdlcyA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7CisgICAgCisgICAgZnVuY3Rpb24gbG9nKG1lc3Nh
Z2UpCisgICAgeworICAgICAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxp
Iik7CisgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVz
c2FnZSkpOworICAgICAgICBjb25zb2xlX21lc3NhZ2VzLmFwcGVuZENoaWxkKGl0ZW0pOworICAg
IH0KKyAgICAKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAg
IAorICAgICAgICB0cnkgeworCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgICAgICAgICB2YXIgdGVzdEFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGVzdCIpOworICAgICAgICAgICAgdGVzdEFyZWEuZm9jdXMoKTsKKworICAgICAgICAg
ICAgdmFyIGRpY3RhdGVkU3RyaW5nID0gdGV4dElucHV0Q29udHJvbGxlci5tYWtlRGljdGF0ZWRT
dHJpbmcoInRoaXMgaXMgYSB0ZXh0IiwgInRlc3QiLCAxMCwgNCk7CisgICAgICAgICAgICBkb2N1
bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxsIik7CisgICAgICAgICAgICB0ZXh0SW5wdXRDb250
cm9sbGVyLmluc2VydFRleHQoZGljdGF0ZWRTdHJpbmcpOworICAgICAgICAgICAgdGV4dElucHV0
Q29udHJvbGxlci5kb0NvbW1hbmQoImRlbGV0ZUJhY2t3YXJkOiIpOworCisgICAgICAgICAgICB2
YXIgbWFya2VkVGV4dCA9ICIiOworICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsK
KyAgICAgICAgICAgICAgICB2YXIgdGVzdFRleHQgPSB0ZXN0QXJlYS5maXJzdENoaWxkOworICAg
ICAgICAgICAgICAgIHZhciBtYXJrZWQgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRl
c3RUZXh0LCAiRGljdGF0aW9uQWx0ZXJuYXRpdmVzIiwgMCk7CisgICAgICAgICAgICAgICAgaWYg
KG1hcmtlZCkKKyAgICAgICAgICAgICAgICAgICAgbWFya2VkVGV4dCA9IG1hcmtlZC50b1N0cmlu
ZygpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
Im1hcmtlZFRleHQiLCAiIik7CisgICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiVEVTVCBDT01Q
TEVURSIpOworCisgICAgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgICAgICBkb2N1bWVudC53
cml0ZSgiRXhjZXB0aW9uOiAiICsgZXguZGVzY3JpcHRpb24pOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxk
KGNvbnNvbGVfbWVzc2FnZXMpOworICAgICAgICAKKyAgICB9IGVsc2UgeworICAgICAgICBkb2N1
bWVudC53cml0ZSgiKGNhbm5vdCBydW4gaW50ZXJhY3RpdmVseSkiKTsKKyAgICB9Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDQ2MTczMmVlZWYzM2YyMGYwODA3MGY1MTFkOWRjZmMw
MjBiYTAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBA
QAorV2hlbiBpbnNlcnRpbmcgZGljdGF0ZWQgdGV4dCwgcmFuZ2Ugb2YgdGV4dCB0aGF0IGhhcyBh
bHRlcm5hdGl2ZSB0ZXh0IGlzIGF0dGFjaGVkIGFzIERpY3RhdGlvbkFsdGVybmF0aXZlcyBtYXJr
ZXIuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwordGhpcyBpcyBhIHRleHQKK1BBU1Mg
bWFya2VkVGV4dCBpcyAidGV4dCIKKworVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQuaHRt
bCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRl
ZC10ZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJhMWU0M2JkOTllM2QyNWUwMjA4MzAzMGJlN2YzMmY4
YzVkNDQxNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0Lmh0bWwKQEAgLTAsMCArMSw1OCBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Citib2R5IHsgbWFyZ2luOiAwOyBwYWRk
aW5nOiAwIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwcmUgaWQ9ImRlc2NyaXB0aW9u
Ij48L3ByZT4KKzxkaXYgaWQ9InRlc3QiIGNvbnRlbnRlZGl0YWJsZT48L2Rpdj4KKzxwIGlkPSJj
b25zb2xlIj48L3A+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZGVzY3Jp
cHRpb24oIldoZW4gaW5zZXJ0aW5nIGRpY3RhdGVkIHRleHQsIHJhbmdlIG9mIHRleHQgdGhhdCBo
YXMgYWx0ZXJuYXRpdmUgdGV4dCBpcyBhdHRhY2hlZCBhcyBEaWN0YXRpb25BbHRlcm5hdGl2ZXMg
bWFya2VyLiIpOworCisgICAgdmFyIGNvbnNvbGVfbWVzc2FnZXMgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJvbCIpOworICAgIAorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQorICAgIHsKKyAg
ICAgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICBp
dGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICAg
ICAgY29uc29sZV9tZXNzYWdlcy5hcHBlbmRDaGlsZChpdGVtKTsKKyAgICB9CisgICAgCisgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAKKyAgICAgICAgdHJ5
IHsKKworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICAgICAgdmFyIHRlc3RBcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsK
KyAgICAgICAgICAgIHRlc3RBcmVhLmZvY3VzKCk7CisKKyAgICAgICAgICAgIHZhciBkaWN0YXRl
ZFN0cmluZyA9IHRleHRJbnB1dENvbnRyb2xsZXIubWFrZURpY3RhdGVkU3RyaW5nKCJ0aGlzIGlz
IGEgdGV4dCIsICJ0ZXN0IiwgMTAsIDQpOworICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1h
bmQoIlNlbGVjdEFsbCIpOworICAgICAgICAgICAgdGV4dElucHV0Q29udHJvbGxlci5pbnNlcnRU
ZXh0KGRpY3RhdGVkU3RyaW5nKTsKKworICAgICAgICAgICAgdmFyIG1hcmtlZFRleHQgPSAiIjsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgdmFy
IHRlc3RUZXh0ID0gdGVzdEFyZWEuZmlyc3RDaGlsZDsKKyAgICAgICAgICAgICAgICB2YXIgbWFy
a2VkID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXN0VGV4dCwgIkRpY3RhdGlvbkFs
dGVybmF0aXZlcyIsIDApOworICAgICAgICAgICAgICAgIGlmIChtYXJrZWQpCisgICAgICAgICAg
ICAgICAgICAgIG1hcmtlZFRleHQgPSBtYXJrZWQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJtYXJrZWRUZXh0IiwgInRleHQi
KTsKKyAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCJURVNUIENPTVBMRVRFIik7CisKKyAgICAg
ICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCJFeGNlcHRpb246
ICIgKyBleC5kZXNjcmlwdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoY29uc29sZV9tZXNzYWdl
cyk7CisgICAgICAgIAorICAgIH0gZWxzZSB7CisgICAgICAgIGRvY3VtZW50LndyaXRlKCIoY2Fu
bm90IHJ1biBpbnRlcmFjdGl2ZWx5KSIpOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147463</attachid>
            <date>2012-06-13 18:44:25 -0700</date>
            <delta_ts>2012-06-13 21:00:15 -0700</delta_ts>
            <desc>Remove block code to make gcc happy.</desc>
            <filename>bug-83047-20120613184424.patch</filename>
            <type>text/plain</type>
            <size>132083</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTAyYTA2ZDRmMDA2Nzkz
YWU1YTQxYWI1YTYzODk5OTZhNjAxZGVhMC4uMDY1MWRjNTRiMzlkZTczNDI2YTRkY2UxZTNmNTdi
M2Q1YTZkYzBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTA2LTExICBKaWEg
UHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgdGV4dCB3aXRoIHRleHQgYWx0ZXJu
YXRpdmUgd2l0aCBibHVlIHVuZGVybGluZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgzMDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQt
ZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRm
b3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0Lmh0bWwKKworICAgICAg
ICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdmlzdWFsIGluZGljYXRpb24gb24gZGljdGF0ZWQgdGV4
dCB3aXRoIGFsdGVybmF0aXZlcywgYW5kIHByb3ZpZGluZyBVSQorICAgICAgICB0byBzaG93IGFs
dGVybmF0aXZlIHRleHQgb24gT1MgWC4gTWFqb3JpdHkgb2YgdGhlIGNoYW5nZXMgaXMgZm9yIGdl
bmVyYWxpemluZyBleGlzdGluZyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyCisgICAgICAgIGNs
YXNzIHRvIGhhbmRsZSBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzLiBUaGUgdHdvIG5ldyBjbGFzc2Vz
LCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgYW5kCisgICAgICAgIFRleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZSwgYXJlIHVzZWQgYnkgYm90aCBXZWJLaXQgYW5kIFdLMi4gU28gV2ViQ29yZSBz
ZWVtcyB0byBiZSB0aGUgbmF0dXJhbCBwbGFjZQorICAgICAgICBmb3IgdGhlbS4KKworICAgICAg
ICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3Bw
OiBFeHBhbmRlZCBleGlzaW5nIGNsYXNzIGludGVyZmFjZSB0byBzdXBwb3J0IGRpY3RhdGlvbiBh
bHRlcm5hdGl2ZXMuCisgICAgICAgIChEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFpbHMpOiBNYXJr
ZXIgZGV0YWlsIGNsYXNzIGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmUgbWFyay4KKyAgICAgICAg
KFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlRGV0YWlsczo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlRGV0YWlsczo6ZGljdGF0aW9uQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFpbHM6OkRpY3RhdGlv
bkFsdGVybmF0aXZlRGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlOjptYXJrZXJUeXBlc0ZvckFw
cGxpZWREaWN0YXRpb25BbHRlcm5hdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UpOiBHZW5lcmFsaXpl
ZCBleGlzdGluZyBhcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UoKSB0byBoYW5kbGUgZGljdGF0
aW9uIGFsdGVybmF0aXZlcy4KKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXI6OnRpbWVyRmlyZWQpOiBFeHBhbmRlZCBleGlzdGluZyBjb2RlIHRvIGhhbmRsZSBkaWN0
YXRpb24gYWx0ZXJuYXRpdmVzLgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQpOiBFeHBhbmRlZCBleGlzdGlu
ZyBjb2RlIHRvIGhhbmRsZSBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzLgorICAgICAgICAoV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6
IE1vdmVkIHBhcnQgb2YgdGhlIGZ1bmN0aW9uIGludG8gcmVzcG9uZFRvTWFya2VyQXRFbmRPZldv
cmQoKSB0byBpbXByb3ZlIHJlYWRhYmlsaXR5LgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjo6c2hvdWxkU3RhcnRUaW1lckZvcik6CisgICAgICAgIChXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjptYXJrZXJEZXNj
cmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFy
a2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmRpY3Rh
dGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKToKKyAgICAgICAgKiBl
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5vdGlmeUNvbXBvbmVudHNPbkNo
YW5nZWRTZWxlY3Rpb24pOiBSZW5hbWVkIGV4aXN0aW5nIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rp
b24oKSBmdW5jdGlvbiB0byBhdm9pZCBuYW1pbmcgY29sbGlzaW9uLgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjphcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVu
YXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFwcGxpZWRFZGl0
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZm
ZWN0ZWRCeUVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjaGFuZ2VTZWxlY3Rp
b25BZnRlckNvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXNwb25kVG9DaGFu
Z2VkU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGljdGF0aW9uQWx0ZXJu
YXRpdmVzRm9yTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlEaWN0YXRp
b25BbHRlcm5hdGl2ZWx0ZXJuYXRpdmUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6Cisg
ICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvbWFj
L0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oOiBBZGRlZC4gV0sxIGFuZCBXSzIgdXNlIHRo
aXMgY2xhc3MgdG8ga2VlcCB0cmFjayBvZiB0ZXh0IGFsdGVybmF0aXZlcyBvYmplY3RzLgorICAg
ICAgICAoQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKToK
KyAgICAgICAgKEFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRD
b250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyKToKKyAgICAgICAgKiBl
ZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW06IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENv
bnRleHRDb250cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVy
OjphbHRlcm5hdGl2ZXNGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6cmVtb3Zl
QWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmNsZWFyKToK
KyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWRkQWx0ZXJu
YXRpdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlcjo6c2hvd0FsdGVybmF0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpkaXNtaXNzQWx0ZXJu
YXRpdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
cmVtb3ZlQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2UuaDogQWRkZWQuICBBIHNpbXBsZSBzdHJ1Y3QgdG8gbWFrZSBpdCBlYXNpZXIg
dG8gcGFzcyBhcm91bmQgYSBwYWlyIG9mIHRleHQgYWx0ZXJuYXRpdmVzIG9iamVjdCBhbmQgcmFu
Z2UuCisgICAgICAgICogZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZTo6VGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3REaWN0YXRpb25U
ZXh0QWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKiBwYWdlL0FsdGVybmF0aXZlVGV4dENsaWVudC5o
OgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDogQWRkZWQgY29kZSB0
byBzaG93IGFsdGVybmF0aXZlIGRpY3RhdGVkIHRleHQgaW4gY29udGV4dCBtZW51LgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3Rl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlm
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0OjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1hcmtlcik6CisKIDIw
MTItMDYtMTEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIFBvcnQgRHJhd2luZ0J1ZmZlckNocm9taXVtIGZyb20gVGV4dHVyZUxheWVy
Q2hyb21pdW0gb3ZlciB0byBXZWJFeHRlcm5hbFRleHR1cmVMYXllcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IDYyMzY5MjE1ZTcwNmY3MDI5OWVhYTgwMWFiYzRhZTY3YjE2OTRhMDYuLjgxMjk4MDI5Mjlh
MDFlMjVmYmMzODBjMGY4ODA1MzhmYTJiOGFjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0NCBAQAorMjAxMi0wNi0xMSAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KKworICAgICAgICBN
YXJrIHRleHQgd2l0aCB0ZXh0IGFsdGVybmF0aXZlIHdpdGggYmx1ZSB1bmRlcmxpbmUuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzA0NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZXMgaW4gV2Vi
S2l0IGluY2x1ZGUgaW1wbGVtZW50YXRpb24gb2YgbmV3IGZ1bmN0aW9ucyBkZWNsYXJlZCBpbiBB
bHRlcm5hdGl2ZVRleHRDbGllbnQsCisgICAgICAgIGFuZCBsb2dpYyBmb3IgY2FsbGluZyBFZGl0
b3I6Omluc2VydERpY3RhdGVkVGV4dCgpIGluc3RlYWQgb2YgRWRpdG9yOjppbnNlcnRUZXh0KCkg
d2hlbiB0aGVyZSdzCisgICAgICAgIGFsdGVybmF0aXZlcyBhdHRhY2hlZCB0byB0aGUgaW5wdXQg
c3RyaW5nLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tOgor
ICAgICAgICAoY29ycmVjdGlvbkluZGljYXRvclR5cGUpOgorICAgICAgICAoQ29ycmVjdGlvblBh
bmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDoKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4
dENsaWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50Lm1tOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpzaG93Q29ycmVjdGlv
bkFsdGVybmF0aXZlKToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlz
c0FsdGVybmF0aXZlKToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlz
c0FsdGVybmF0aXZlU29vbik6CisgICAgICAgIChXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50OjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50OjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSSk6CisgICAgICAgIChX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKToK
KyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVz
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1M
VmlldyB2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0XSk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IGluc2VydFRleHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAg
ICAoLVtXZWJWaWV3IGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0Ol0pOgorICAgICAgICAo
LVtXZWJWaWV3IF9nZXRXZWJDb3JlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOmZyb21UZXh0QWx0ZXJu
YXRpdmVzOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVV
STpXZWJDb3JlOjpmb3JEaWN0YXRpb25Db250ZXh0Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IF9k
aXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSV0pOgorICAgICAgICAoLVtXZWJWaWV3IF9yZW1v
dmVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2RpY3RhdGlv
bkFsdGVybmF0aXZlczpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5tbToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUg
aW5pdF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDEyLTA2LTExICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIGRpc2Nvbm5lY3RlZC9l
eGNsdWRlZCBmcm9tIHNlYXJjaCBmcmFtZXMsIHRoZXkgYXJlIG5vdCB1c2VkIGJ5IFNhZmFyaSBh
bnltb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2ExOWNjYTUxM2UxZDA5MmUwZmJhNGQ1Yzk1NWExMmI1MzMw
ZjRjYi4uNDYxMDk1NWZhMDA0Y2YxYzc1ZjIwOTQ4YWNhYTE3YTkxZDRmZGJiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTA2LTExICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgor
CisgICAgICAgIE1hcmsgdGV4dCB3aXRoIHRleHQgYWx0ZXJuYXRpdmUgd2l0aCBibHVlIHVuZGVy
bGluZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgz
MDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hh
bmdlcyBpbiBXZWJLaXQyIGluY2x1ZGUgaW1wbGVtZW50YXRpb24gb2YgbmV3IGZ1bmN0aW9ucyBk
ZWNsYXJlZCBpbiBBbHRlcm5hdGl2ZVRleHRDbGllbnQsCisgICAgICAgIGFuZCBsb2dpYyBmb3Ig
Y2FsbGluZyBFZGl0b3I6Omluc2VydERpY3RhdGVkVGV4dCgpIGluc3RlYWQgb2YgRWRpdG9yOjpp
bnNlcnRUZXh0KCkgd2hlbiB0aGVyZSdzCisgICAgICAgIGFsdGVybmF0aXZlcyBhdHRhY2hlZCB0
byB0aGUgaW5wdXQgc3RyaW5nLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1l
bnVJdGVtVHlwZXMuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
bWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNs
aWVudEltcGwubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50
SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwYWdlQ2xvc2VkKToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpyZW1vdmVEaWN0YXRpb25BbHRlcm5h
dGl2ZXMpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2hvd0RpY3RhdGlvbkFs
dGVybmF0aXZlVUkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGljdGF0aW9u
QWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpc21pc3NE
aWN0YXRpb25BbHRlcm5hdGl2ZVVJKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW06CisgICAgICAgICgtW1dLVmlldyBpbnNlcnRUZXh0OnJlcGxhY2VtZW50UmFuZ2U6XSk6
CisgICAgICAgICgtW1dLVmlldyB2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0XSk6CisgICAg
ICAgICgtW1dLVmlldyBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc21pc3NEaWN0YXRpb25BbHRlcm5h
dGl2ZVVJKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZW1vdmVEaWN0YXRpb25B
bHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpY3RhdGlvbkFs
dGVybmF0aXZlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW06CisgICAgICAgIChjb3JyZWN0aW9uSW5kaWNhdG9y
VHlwZSk6CisgICAgICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0ZWRS
ZXBsYWNlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVu
dC5oOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnNob3dDb3JyZWN0aW9u
QWx0ZXJuYXRpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6
OmRpc21pc3NBbHRlcm5hdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0aXZlVGV4
dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0aXZlU29vbik6CisgICAgICAgIChXZWJLaXQ6OldlYkFs
dGVybmF0aXZlVGV4dENsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVtb3ZlRGljdGF0aW9uQWx0
ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Ojpz
aG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0
aXZlVGV4dENsaWVudDo6ZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omlu
c2VydERpY3RhdGVkVGV4dCk6CisKIDIwMTItMDYtMTEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBQYXNzIHRoZSByaWdodCBjb2xvciBzcGFjZSBvdmVy
IHRvIHRoZSB3ZWIgcHJvY2VzcyBzbyB3ZSBjYW4gc2V0IGl0IG9uIG91ciBDQSBjb250ZXh0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCmluZGV4IGFlZDA0ZTFiZjBkMzkzMDZiOTY1YjM1ZjI1YTA5MTkzNmM4
MTkwN2EuLmIwMjdjZjYzMmNlZjhiZDY2Njc4MzM4NzA5M2FkYjBiY2Q3MWIwMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCkBAIC0yMjAzLDMgKzIyMDMsMTQgQEAgX19aTks3V2ViQ29yZTRLVVJMN2lz
RW1wdHlFdgogX19aTks3V2ViQ29yZTRLVVJMN2lzVmFsaWRFdgogX19aTks3V2ViQ29yZTRLVVJM
MjJwcm90b2NvbElzSW5IVFRQRmFtaWx5RXYKICNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9T
Tk9XX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xJT04pCitfX1pON1dlYkNvcmUy
N0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjE1YWRkQWx0ZXJuYXRpdmVzRVJLTjNXVEY5UmV0
YWluUHRySTE4TlNUZXh0QWx0ZXJuYXRpdmVzRUUKK19fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyMjJhbHRlcm5hdGl2ZXNGb3JDb250ZXh0RXkKK19fWk43V2ViQ29yZTI3
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyNWNsZWFyRXYKK19fWk43V2ViQ29yZTI3QWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyMTlkaXNtaXNzQWx0ZXJuYXRpdmVzRXYKK19fWk43V2ViQ29y
ZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMThyZW1vdmVBbHRlcm5hdGl2ZXNFeQorX19a
TjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIxNnNob3dBbHRlcm5hdGl2ZXNF
UDZOU1ZpZXdSS05TXzlGbG9hdFJlY3RFeVUxM2Jsb2NrX3BvaW50ZXJGdlA4TlNTdHJpbmdFCitf
X1pON1dlYkNvcmUyNFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZUMxRVAxOE5TVGV4dEFsdGVybmF0
aXZlczhfTlNSYW5nZQorX19aTjdXZWJDb3JlMzJjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0
aXZlc0VQMThOU0F0dHJpYnV0ZWRTdHJpbmdSTjNXVEY2VmVjdG9ySU5TXzI0VGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlRUxtMEVFRQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGM3MDM3MzQ2ZjhlYzYzNGM1YzlmN2Zh
MGUyNTkxYzNlMDJlN2JmMS4uMDliYjhkY2U3NzY2ZWM4Y2EyYjdkM2VhZDVmMjZjNWUzNTczMDYw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNTc4Nyw2ICs1Nzg3LDEwIEBACiAJCUNFMDhDM0QxMTUyQjU5OUEwMDIxQjhDMiAv
KiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0NGMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMy
IC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsg
fTsKIAkJQ0U1NEZEMzgxMDE2RDlBNjAwOEI0NEM4IC8qIFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTU0RkQzNzEw
MTZEOUE2MDA4QjQ0QzggLyogU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRTdCMkRCMzE1ODZBQkFEMDA5OEIz
RkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTdCMkRBRjE1ODZBQkFEMDA5OEIzRkEgLyogQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0U3QjJEQjQxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFN0IyREIwMTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXIubW0gKi87IH07CisJCUNFN0IyREI1MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFN0IyREIxMTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVX
aXRoUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlDRTdCMkRCNjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3QjJE
QjIxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSAqLzsgfTsK
IAkJQ0VBMzk0OUMxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUEzOTQ5QTEx
RDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCAqLzsgfTsKIAkJQ0VB
Mzk0OUQxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VBMzk0OUIxMUQ0NUNEQTAw
MzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oICovOyB9OwogCQlDRUNBREZDNjE1Mzc3
OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDQURGQzIxNTM3NzhGRjAwRTM3MDY4IC8q
IERpY3RhdGlvbkFsdGVybmF0aXZlLmNwcCAqLzsgfTsKQEAgLTEyOTc5LDYgKzEyOTgzLDEwIEBA
CiAJCUNFMDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1NEZEMzcxMDE2RDlBNjAw
OEI0NEM4IC8qIFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcmlwdFNvdXJjZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNFNUNCMUIzMTRFREFCNkYwMEJCMjc5NSAvKiBFdmVudFNlbmRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFNlbmRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDRTdCMkRBRjE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlci5oOyBwYXRoID0gbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTdCMkRCMDE1ODZBQkFEMDA5
OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tOyBw
YXRoID0gbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0U3QjJEQjExNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UuaDsgcGF0aCA9IG1hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U3QjJEQjIxNTg2QUJBRDAwOThCM0ZBIC8q
IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbTsgcGF0aCA9IG1hYy9UZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNF
QTM5NDlBMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljSGFzaFNldE5vZGVMaXN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VBMzk0OUIxMUQ0NUNEQTAwMzA5NENG
IC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0VDQURGQzIxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlvbkFsdGVybmF0aXZl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNjg0LDggKzIwNjkyLDEyIEBA
CiAJCUVENTAxREM5MEIyNDlGMzkwMEFFMThEOSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNFN0IyREIwMTU4NkFCQUQwMDk4QjNGQSAvKiBB
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKi8sCisJCQkJQ0U3QjJEQUYxNTg2QUJBRDAw
OThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oICovLAogCQkJCUVENTAxREM1
MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gKi8sCiAJCQkJNEE4Qzk2RUEwQkU2OTAz
MjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tICovLAorCQkJCUNFN0IyREIyMTU4NkFC
QUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gKi8sCisJCQkJQ0U3QjJE
QjExNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oICovLAogCQkJ
KTsKIAkJCW5hbWUgPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjUwNDYs
NiArMjUwNTgsOCBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29k
ZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBY
U1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0Ug
LyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFN0IyREIzMTU4NkFCQUQwMDk4QjNG
QSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNF
N0IyREI1MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMjgwODYsNiArMjgxMDAsOCBAQAogCQkJCUUxQkU1MTJEMENGNkM1MTIw
MDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJF
MEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUNFN0IyREI0MTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQlDRTdCMkRCNjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCA4ZDA5
ZmYxYjk5ODQ3MWVhNjFmMzg5MjY4ZTQ5MjRmNzA0Y2YxM2IxLi5iMTk5YWYxNTY1Y2FkY2Y1YjEx
NjY2NGU0N2UxYmM1ZmE3MmZkNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTY4LDYgKzY4LDIzIEBAIHByaXZh
dGU6CiAgICAgU3RyaW5nIG1fcmVwbGFjZW1lbnRTdHJpbmc7CiB9OwogCitjbGFzcyBEaWN0YXRp
b25BbHRlcm5hdGl2ZURldGFpbHMgOiBwdWJsaWMgQWx0ZXJuYXRpdmVUZXh0RGV0YWlscyB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGljdGF0aW9uQWx0ZXJuYXRpdmVEZXRhaWxz
PiBjcmVhdGUodWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRGljdGF0aW9uQWx0ZXJuYXRpdmVEZXRhaWxzKGRpY3RhdGlvbkNvbnRl
eHQpKTsKKyAgICB9CisKKyAgICB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9kaWN0YXRpb25Db250ZXh0OyB9CisKK3ByaXZhdGU6CisgICAgRGljdGF0aW9uQWx0
ZXJuYXRpdmVEZXRhaWxzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCisgICAgOiBtX2RpY3Rh
dGlvbkNvbnRleHQoZGljdGF0aW9uQ29udGV4dCkKKyAgICB7IH0KKworICAgIHVpbnQ2NF90IG1f
ZGljdGF0aW9uQ29udGV4dDsKK307CisKICNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAK
IHN0YXRpYyBjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBtYXJrZXJU
eXBlc0ZvckF1dG9jb3JyZWN0aW9uKCkKQEAgLTkyLDYgKzEwOSwxNCBAQCBzdGF0aWMgY29uc3Qg
VmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiYgbWFya2VyVHlwZXNGb3JSZXBsYWNl
bWVudCgpCiAgICAgcmV0dXJuIG1hcmtlclR5cGVzRm9yUmVwbGFjZW1lbnQ7CiB9CiAKK3N0YXRp
YyBjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBtYXJrZXJUeXBlc0Zv
ckFwcGxpZWREaWN0YXRpb25BbHRlcm5hdGl2ZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+LCBtYXJrZXJUeXBlc0ZvckFwcGxp
ZWREaWN0YXRpb25BbHRlcm5hdGl2ZSwgKCkpOworICAgIGlmIChtYXJrZXJUeXBlc0ZvckFwcGxp
ZWREaWN0YXRpb25BbHRlcm5hdGl2ZS5pc0VtcHR5KCkpCisgICAgICAgIG1hcmtlclR5cGVzRm9y
QXBwbGllZERpY3RhdGlvbkFsdGVybmF0aXZlLmFwcGVuZChEb2N1bWVudE1hcmtlcjo6U3BlbGxD
aGVja2luZ0V4ZW1wdGlvbik7CisgICAgcmV0dXJuIG1hcmtlclR5cGVzRm9yQXBwbGllZERpY3Rh
dGlvbkFsdGVybmF0aXZlOworfQorCiBzdGF0aWMgYm9vbCBtYXJrZXJzSGF2ZUlkZW50aWNhbERl
c2NyaXB0aW9uKGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcio+JiBtYXJrZXJzKQogewogICAg
IGlmIChtYXJrZXJzLmlzRW1wdHkoKSkKQEAgLTIxNSwxOCArMjQwLDE4IEBAIFN0cmluZyBBbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyOjpkaXNtaXNzU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0
ZXJuYXRpdmVUZXh0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12b2lkIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0KGNvbnN0IFN0cmluZyYgYWx0ZXJu
YXRpdmUsIGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4mIG1hcmtlclR5
cGVzVG9BZGQpCit2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRp
dmVUZXh0VG9SYW5nZShjb25zdCBSYW5nZSogcmFuZ2UsIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRp
dmUsIEFsdGVybmF0aXZlVGV4dFR5cGUgYWx0ZXJuYXRpdmVUeXBlLCBjb25zdCBWZWN0b3I8RG9j
dW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBtYXJrZXJUeXBlc1RvQWRkKQogewotICAgIGlmICgh
bV9hbHRlcm5hdGl2ZVRleHRJbmZvLnJhbmdlV2l0aEFsdGVybmF0aXZlKQorICAgIGlmICghcmFu
Z2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJl
ZlB0cjxSYW5nZT4gcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiA9IG1fYWx0ZXJu
YXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZS0+Y2xvbmVSYW5nZShlYyk7CisgICAg
UmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uID0gcmFuZ2Ut
PmNsb25lUmFuZ2UoZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2V0
U3RhcnQocGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi5nZXQoKSwgc3RhcnRPZlBh
cmFncmFwaChtX2FsdGVybmF0aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUtPnN0YXJ0
UG9zaXRpb24oKSkpOwotICAgIHNldEVuZChwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0
aW9uLmdldCgpLCBlbmRPZlBhcmFncmFwaChtX2FsdGVybmF0aXZlVGV4dEluZm8ucmFuZ2VXaXRo
QWx0ZXJuYXRpdmUtPmVuZFBvc2l0aW9uKCkpKTsKKyAgICBzZXRTdGFydChwYXJhZ3JhcGhSYW5n
ZUNvbnRhaW5pbmdDb3JyZWN0aW9uLmdldCgpLCBzdGFydE9mUGFyYWdyYXBoKHJhbmdlLT5zdGFy
dFBvc2l0aW9uKCkpKTsKKyAgICBzZXRFbmQocGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVj
dGlvbi5nZXQoKSwgZW5kT2ZQYXJhZ3JhcGgocmFuZ2UtPmVuZFBvc2l0aW9uKCkpKTsKIAogICAg
IC8vIEFmdGVyIHdlIHJlcGxhY2UgdGhlIHdvcmQgYXQgcmFuZ2UgcmFuZ2VXaXRoQWx0ZXJuYXRp
dmUsIHdlIG5lZWQgdG8gYWRkIG1hcmtlcnMgdG8gdGhhdCByYW5nZS4KICAgICAvLyBIb3dldmVy
LCBvbmNlIHRoZSByZXBsYWNlbWVudCB0b29rIHBsYWNlLCB0aGUgdmFsdWUgb2YgcmFuZ2VXaXRo
QWx0ZXJuYXRpdmUgaXMgbm90IHZhbGlkIGFueW1vcmUuCkBAIC0yMzgsNyArMjYzLDcgQEAgdm9p
ZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dChjb25zdCBT
dHJpbmcmIGFsdGVybmF0aXZlLAogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
UG9zaXRpb24gc3RhcnRQb3NpdGlvbk9mcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBtX2FsdGVybmF0
aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUtPnN0YXJ0UG9zaXRpb24oKTsKKyAgICBQ
b3NpdGlvbiBzdGFydFBvc2l0aW9uT2ZyYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHJhbmdlLT5zdGFy
dFBvc2l0aW9uKCk7CiAgICAgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1Jhbmdl
LT5zZXRFbmQoc3RhcnRQb3NpdGlvbk9mcmFuZ2VXaXRoQWx0ZXJuYXRpdmUuY29udGFpbmVyTm9k
ZSgpLCBzdGFydFBvc2l0aW9uT2ZyYW5nZVdpdGhBbHRlcm5hdGl2ZS5jb21wdXRlT2Zmc2V0SW5D
b250YWluZXJOb2RlKCksIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybjsKQEAgLTI0
Nyw3ICsyNzIsNyBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJu
YXRpdmVUZXh0KGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmUsCiAgICAgaW50IGNvcnJlY3Rpb25T
dGFydE9mZnNldEluUGFyYWdyYXBoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChjb3JyZWN0
aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UuZ2V0KCkpOwogCiAgICAgLy8gQ2xvbmUg
dGhlIHJhbmdlLCBzaW5jZSB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kIG1heSB3YW50IHRvIGtl
ZXAgdGhlIG9yaWdpbmFsIHJhbmdlIGFyb3VuZC4KLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlV2l0
aEFsdGVybmF0aXZlID0gbV9hbHRlcm5hdGl2ZVRleHRJbmZvLnJhbmdlV2l0aEFsdGVybmF0aXZl
LT5jbG9uZVJhbmdlKGVjKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlV2l0aEFsdGVybmF0aXZl
ID0gcmFuZ2UtPmNsb25lUmFuZ2UoZWMpOwogICAgIGFwcGx5Q29tbWFuZChTcGVsbGluZ0NvcnJl
Y3Rpb25Db21tYW5kOjpjcmVhdGUocmFuZ2VXaXRoQWx0ZXJuYXRpdmUsIGFsdGVybmF0aXZlKSk7
CiAgICAgc2V0RW5kKHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24uZ2V0KCksIG1f
ZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5zdGFydCgpKTsKICAgICBSZWZQdHI8UmFu
Z2U+IHJlcGxhY2VtZW50UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHBhcmFncmFwaFJh
bmdlQ29udGFpbmluZ0NvcnJlY3Rpb24uZ2V0KCksIGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFy
YWdyYXBoLCBhbHRlcm5hdGl2ZS5sZW5ndGgoKSk7CkBAIC0yNTksMTMgKzI4NCw4IEBAIHZvaWQg
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHQoY29uc3QgU3Ry
aW5nJiBhbHRlcm5hdGl2ZSwKIAogICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciogbWFya2Vy
cyA9IHJlcGxhY2VtZW50UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtl
cnMoKTsKICAgICBzaXplX3Qgc2l6ZSA9IG1hcmtlclR5cGVzVG9BZGQuc2l6ZSgpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIERvY3VtZW50TWFya2Vy
OjpNYXJrZXJUeXBlIG1hcmtlclR5cGUgPSBtYXJrZXJUeXBlc1RvQWRkW2ldOwotICAgICAgICBT
dHJpbmcgZGVzY3JpcHRpb247Ci0gICAgICAgIGlmIChtX2FsdGVybmF0aXZlVGV4dEluZm8udHlw
ZSAhPSBBbHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9uICYmIChtYXJrZXJUeXBlID09IERvY3Vt
ZW50TWFya2VyOjpSZXBsYWNlbWVudCB8fCBtYXJrZXJUeXBlID09IERvY3VtZW50TWFya2VyOjpB
dXRvY29ycmVjdGVkKSkKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gbV9hbHRlcm5hdGl2ZVRl
eHRJbmZvLm9yaWdpbmFsVGV4dDsKLSAgICAgICAgbWFya2Vycy0+YWRkTWFya2VyKHJlcGxhY2Vt
ZW50UmFuZ2UuZ2V0KCksIG1hcmtlclR5cGUsIGRlc2NyaXB0aW9uKTsKLSAgICB9CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIG1hcmtlcnMtPmFkZE1hcmtl
cihyZXBsYWNlbWVudFJhbmdlLmdldCgpLCBtYXJrZXJUeXBlc1RvQWRkW2ldLCBtYXJrZXJEZXNj
cmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQoYWx0ZXJuYXRpdmVUeXBlLCBtYXJrZXJU
eXBlc1RvQWRkW2ldKSk7CiB9CiAKIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBw
bHlBdXRvY29ycmVjdGlvbkJlZm9yZVR5cGluZ0lmQXBwcm9wcmlhdGUoKQpAQCAtMzQ4LDE2ICsz
NjgsMzIgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjp0aW1lckZpcmVkKFRpbWVy
PEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI+KikKICAgICAgICAgfQogICAgIH0KICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBbHRlcm5hdGl2ZVRleHRUeXBlRGljdGF0aW9uQWx0ZXJuYXRpdmVz
OgorICAgIHsKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICAgICAgY29uc3Qg
UmFuZ2UqIHJhbmdlV2l0aEFsdGVybmF0aXZlID0gbV9hbHRlcm5hdGl2ZVRleHRJbmZvLnJhbmdl
V2l0aEFsdGVybmF0aXZlLmdldCgpOworICAgICAgICBjb25zdCBEaWN0YXRpb25BbHRlcm5hdGl2
ZURldGFpbHMqIGRldGFpbHMgPSBzdGF0aWNfY2FzdDxjb25zdCBEaWN0YXRpb25BbHRlcm5hdGl2
ZURldGFpbHMqPihtX2FsdGVybmF0aXZlVGV4dEluZm8uZGV0YWlscy5nZXQoKSk7CisgICAgICAg
IGlmICghcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgfHwgIWRldGFpbHMgfHwgIWRldGFpbHMtPmRpY3Rh
dGlvbkNvbnRleHQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgRmxvYXRSZWN0IGJv
dW5kaW5nQm94ID0gcm9vdFZpZXdSZWN0Rm9yUmFuZ2UocmFuZ2VXaXRoQWx0ZXJuYXRpdmUpOwor
ICAgICAgICBtX2FsdGVybmF0aXZlVGV4dEluZm8uaXNBY3RpdmUgPSB0cnVlOworICAgICAgICBp
ZiAoIWJvdW5kaW5nQm94LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKEFsdGVybmF0aXZl
VGV4dENsaWVudCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkpCisgICAgICAgICAg
ICAgICAgY2xpZW50LT5zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShib3VuZGluZ0JveCwgZGV0
YWlscy0+ZGljdGF0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorICAg
ICAgICBicmVhazsKICAgICB9CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCiB7Ci0g
ICAgUmFuZ2UqIHJlcGxhY2VkUmFuZ2UgPSBtX2FsdGVybmF0aXZlVGV4dEluZm8ucmFuZ2VXaXRo
QWx0ZXJuYXRpdmUuZ2V0KCk7Ci0gICAgaWYgKCFyZXBsYWNlZFJhbmdlIHx8IG1fZnJhbWUtPmRv
Y3VtZW50KCkgIT0gcmVwbGFjZWRSYW5nZS0+b3duZXJEb2N1bWVudCgpKQorICAgIFJhbmdlKiBy
YW5nZVdpdGhBbHRlcm5hdGl2ZSA9IG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRl
cm5hdGl2ZS5nZXQoKTsKKyAgICBpZiAoIXJhbmdlV2l0aEFsdGVybmF0aXZlIHx8IG1fZnJhbWUt
PmRvY3VtZW50KCkgIT0gcmFuZ2VXaXRoQWx0ZXJuYXRpdmUtPm93bmVyRG9jdW1lbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGN1cnJlbnRXb3JkID0gcGxhaW5UZXh0KG1fYWx0
ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZS5nZXQoKSk7CisgICAgU3RyaW5n
IGN1cnJlbnRXb3JkID0gcGxhaW5UZXh0KHJhbmdlV2l0aEFsdGVybmF0aXZlKTsKICAgICAvLyBD
aGVjayB0byBzZWUgaWYgdGhlIHdvcmQgd2UgYXJlIGFib3V0IHRvIGNvcnJlY3QgaGFzIGJlZW4g
Y2hhbmdlZCBiZXR3ZWVuIHRpbWVyIGZpcmluZyBhbmQgY2FsbGJhY2sgYmVpbmcgdHJpZ2dlcmVk
LgogICAgIGlmIChjdXJyZW50V29yZCAhPSBtX2FsdGVybmF0aXZlVGV4dEluZm8ub3JpZ2luYWxU
ZXh0KQogICAgICAgICByZXR1cm47CkBAIC0zNjcsMTQgKzQwMywxOCBAQCB2b2lkIEFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI6OmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KGNvbnN0IFN0
cmluZyYgcmVzdQogICAgIHN3aXRjaCAobV9hbHRlcm5hdGl2ZVRleHRJbmZvLnR5cGUpIHsKICAg
ICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5cGVDb3JyZWN0aW9uOgogICAgICAgICBpZiAocmVzdWx0
Lmxlbmd0aCgpKQotICAgICAgICAgICAgYXBwbHlBbHRlcm5hdGl2ZVRleHQocmVzdWx0LCBtYXJr
ZXJUeXBlc0ZvckF1dG9jb3JyZWN0aW9uKCkpOworICAgICAgICAgICAgYXBwbHlBbHRlcm5hdGl2
ZVRleHRUb1JhbmdlKHJhbmdlV2l0aEFsdGVybmF0aXZlLCByZXN1bHQsIG1fYWx0ZXJuYXRpdmVU
ZXh0SW5mby50eXBlLCBtYXJrZXJUeXBlc0ZvckF1dG9jb3JyZWN0aW9uKCkpOwogICAgICAgICBl
bHNlIGlmICghbV9pc0Rpc21pc3NlZEJ5RWRpdGluZykKLSAgICAgICAgICAgIHJlcGxhY2VkUmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKHJl
cGxhY2VkUmFuZ2UsIERvY3VtZW50TWFya2VyOjpSZWplY3RlZENvcnJlY3Rpb24sIG1fYWx0ZXJu
YXRpdmVUZXh0SW5mby5vcmlnaW5hbFRleHQpOworICAgICAgICAgICAgcmFuZ2VXaXRoQWx0ZXJu
YXRpdmUtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2Vy
KHJhbmdlV2l0aEFsdGVybmF0aXZlLCBEb2N1bWVudE1hcmtlcjo6UmVqZWN0ZWRDb3JyZWN0aW9u
LCBtX2FsdGVybmF0aXZlVGV4dEluZm8ub3JpZ2luYWxUZXh0KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBbHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9uOgogICAgIGNhc2UgQWx0ZXJuYXRp
dmVUZXh0VHlwZVNwZWxsaW5nU3VnZ2VzdGlvbnM6CiAgICAgICAgIGlmIChyZXN1bHQubGVuZ3Ro
KCkpCi0gICAgICAgICAgICBhcHBseUFsdGVybmF0aXZlVGV4dChyZXN1bHQsIG1hcmtlclR5cGVz
Rm9yUmVwbGFjZW1lbnQoKSk7CisgICAgICAgICAgICBhcHBseUFsdGVybmF0aXZlVGV4dFRvUmFu
Z2UocmFuZ2VXaXRoQWx0ZXJuYXRpdmUsIHJlc3VsdCwgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLnR5
cGUsIG1hcmtlclR5cGVzRm9yUmVwbGFjZW1lbnQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQWx0ZXJuYXRpdmVUZXh0VHlwZURpY3RhdGlvbkFsdGVybmF0aXZlczoKKyAgICAgICAgaWYg
KHJlc3VsdC5sZW5ndGgoKSkKKyAgICAgICAgICAgIGFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5n
ZShyYW5nZVdpdGhBbHRlcm5hdGl2ZSwgcmVzdWx0LCBtX2FsdGVybmF0aXZlVGV4dEluZm8udHlw
ZSwgbWFya2VyVHlwZXNGb3JBcHBsaWVkRGljdGF0aW9uQWx0ZXJuYXRpdmUoKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIApAQCAtNDAwLDcgKzQ0MCw3IEBAIEZsb2F0UmVjdCBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjpyb290Vmlld1JlY3RGb3JSYW5nZShjb25zdCBSYW5nZSogcmFuZ2Up
IGNvCiAgICAgcmV0dXJuIHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhJbnRSZWN0KGJvdW5kaW5n
UmVjdCkpOwogfSAgICAgICAgCiAKLXZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVz
cG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rp
b24pCit2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb0NoYW5nZWRTZWxl
Y3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlv
bjo6U2V0U2VsZWN0aW9uT3B0aW9ucyBvcHRpb25zKQogewogICAgIFZpc2libGVTZWxlY3Rpb24g
Y3VycmVudFNlbGVjdGlvbihtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOwogICAg
IC8vIFdoZW4gdXNlciBtb3ZlcyBjYXJldCB0byB0aGUgZW5kIG9mIGF1dG9jb3JyZWN0ZWQgd29y
ZCBhbmQgcGF1c2VzLCB3ZSBzaG93IHRoZSBwYW5lbApAQCAtNDI2LDI4ICs0NjYsMTUgQEAgdm9p
ZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNv
bnN0IFZpc2libGVTZWxlY3Rpb24KICAgICAgICAgcmV0dXJuOwogCiAgICAgTm9kZSogbm9kZSA9
IHBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKTsKLSAgICBpbnQgZW5kT2Zmc2V0ID0gcG9zaXRpb24u
b2Zmc2V0SW5Db250YWluZXJOb2RlKCk7CiAgICAgVmVjdG9yPERvY3VtZW50TWFya2VyKj4gbWFy
a2VycyA9IG5vZGUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+bWFya2Vyc0Zvcihub2RlKTsKICAg
ICBzaXplX3QgbWFya2VyQ291bnQgPSBtYXJrZXJzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1hcmtlckNvdW50OyArK2kpIHsKICAgICAgICAgY29uc3QgRG9jdW1lbnRNYXJr
ZXIqIG1hcmtlciA9IG1hcmtlcnNbaV07Ci0gICAgICAgIGlmICghc2hvdWxkU3RhcnRUaW1lckZv
cihtYXJrZXIsIGVuZE9mZnNldCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgUmVm
UHRyPFJhbmdlPiB3b3JkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCks
IG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7
Ci0gICAgICAgIFN0cmluZyBjdXJyZW50V29yZCA9IHBsYWluVGV4dCh3b3JkUmFuZ2UuZ2V0KCkp
OwotICAgICAgICBpZiAoIWN1cnJlbnRXb3JkLmxlbmd0aCgpKQorICAgICAgICBpZiAoIW1hcmtl
cikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5m
by5yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHdvcmRSYW5nZTsKLSAgICAgICAgbV9hbHRlcm5hdGl2
ZVRleHRJbmZvLm9yaWdpbmFsVGV4dCA9IGN1cnJlbnRXb3JkOwotICAgICAgICBpZiAobWFya2Vy
LT50eXBlKCkgPT0gRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nKQotICAgICAgICAgICAgc3RhcnRB
bHRlcm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVTcGVsbGluZ1N1Z2dlc3Rp
b25zKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtX2FsdGVybmF0aXZlVGV4dEluZm8u
ZGV0YWlscyA9IEF1dG9jb3JyZWN0aW9uQWx0ZXJuYXRpdmVEZXRhaWxzOjpjcmVhdGUobWFya2Vy
LT5kZXNjcmlwdGlvbigpKTsKLSAgICAgICAgICAgIHN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1l
cihBbHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9uKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJy
ZWFrOworICAgICAgICBpZiAocmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQoKm1hcmtlciwgcG9z
aXRpb24sIG9wdGlvbnMpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC01OTgs
NyArNjI1LDYzIEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cHJvY2Vzc01hcmtl
cnNPblRleHRUb0JlUmVwbGFjZWRCeVJlc3VsdChjb25zdCBUCiAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KLSAgICAKKworYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpzaG91bGRTdGFydFRp
bWVyRm9yKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50TWFya2VyICZtYXJrZXIsIGludCBlbmRPZmZz
ZXQpIGNvbnN0Cit7CisgICAgcmV0dXJuICgoKG1hcmtlci50eXBlKCkgPT0gRG9jdW1lbnRNYXJr
ZXI6OlJlcGxhY2VtZW50ICYmICFtYXJrZXIuZGVzY3JpcHRpb24oKS5pc051bGwoKSkgfHwgbWFy
a2VyLnR5cGUoKSA9PSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcgfHwgbWFya2VyLnR5cGUoKSA9
PSBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzKSAmJiBzdGF0aWNfY2FzdDxp
bnQ+KG1hcmtlci5lbmRPZmZzZXQoKSkgPT0gZW5kT2Zmc2V0KTsKK30KKworYm9vbCBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZChjb25zdCBEb2N1
bWVudE1hcmtlciYgbWFya2VyLCBjb25zdCBQb3NpdGlvbiYgZW5kT2ZXb3JkUG9zaXRpb24sIEZy
YW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMpCit7CisgICAgaWYgKG9w
dGlvbnMgJiBGcmFtZVNlbGVjdGlvbjo6RGljdGF0aW9uVHJpZ2dlcmVkKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKCFzaG91bGRTdGFydFRpbWVyRm9yKG1hcmtlciwgZW5kT2ZXb3Jk
UG9zaXRpb24ub2Zmc2V0SW5Db250YWluZXJOb2RlKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgTm9kZSogbm9kZSA9IGVuZE9mV29yZFBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKTsKKyAg
ICBSZWZQdHI8UmFuZ2U+IHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9mcmFtZS0+ZG9jdW1l
bnQoKSwgbm9kZSwgbWFya2VyLnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci5lbmRPZmZzZXQo
KSk7CisgICAgaWYgKCF3b3JkUmFuZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTdHJp
bmcgY3VycmVudFdvcmQgPSBwbGFpblRleHQod29yZFJhbmdlLmdldCgpKTsKKyAgICBpZiAoIWN1
cnJlbnRXb3JkLmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9hbHRlcm5h
dGl2ZVRleHRJbmZvLm9yaWdpbmFsVGV4dCA9IGN1cnJlbnRXb3JkOworICAgIHN3aXRjaCAobWFy
a2VyLnR5cGUoKSkgeworICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nOgorICAgICAg
ICBtX2FsdGVybmF0aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7
CisgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5kZXRhaWxzID0gQXV0b2NvcnJlY3Rpb25B
bHRlcm5hdGl2ZURldGFpbHM6OmNyZWF0ZSgiIik7CisgICAgICAgIHN0YXJ0QWx0ZXJuYXRpdmVU
ZXh0VUlUaW1lcihBbHRlcm5hdGl2ZVRleHRUeXBlU3BlbGxpbmdTdWdnZXN0aW9ucyk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50OgorICAgICAg
ICBtX2FsdGVybmF0aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7
CisgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5kZXRhaWxzID0gQXV0b2NvcnJlY3Rpb25B
bHRlcm5hdGl2ZURldGFpbHM6OmNyZWF0ZShtYXJrZXIuZGVzY3JpcHRpb24oKSk7CisgICAgICAg
IHN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcihBbHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9u
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0
ZXJuYXRpdmVzOiB7CisgICAgICAgIGNvbnN0IERpY3RhdGlvbk1hcmtlckRldGFpbHMqIG1hcmtl
ckRldGFpbHMgPSBzdGF0aWNfY2FzdDxjb25zdCBEaWN0YXRpb25NYXJrZXJEZXRhaWxzKj4obWFy
a2VyLmRldGFpbHMoKSk7CisgICAgICAgIGlmICghbWFya2VyRGV0YWlscykKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGN1cnJlbnRXb3JkICE9IG1hcmtlckRldGFpbHMt
Pm9yaWdpbmFsVGV4dCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtX2Fs
dGVybmF0aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7CisgICAg
ICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5kZXRhaWxzID0gRGljdGF0aW9uQWx0ZXJuYXRpdmVE
ZXRhaWxzOjpjcmVhdGUobWFya2VyRGV0YWlscy0+ZGljdGF0aW9uQ29udGV4dCgpKTsKKyAgICAg
ICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0YXRp
b25BbHRlcm5hdGl2ZXMpOworICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworU3RyaW5nIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Om1hcmtl
ckRlc2NyaXB0aW9uRm9yQXBwbGllZEFsdGVybmF0aXZlVGV4dChBbHRlcm5hdGl2ZVRleHRUeXBl
IGFsdGVybmF0aXZlVGV4dFR5cGUsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIG1hcmtlclR5
cGUpCit7CisKKyAgICBpZiAoYWx0ZXJuYXRpdmVUZXh0VHlwZSAhPSBBbHRlcm5hdGl2ZVRleHRU
eXBlUmV2ZXJzaW9uICYmIGFsdGVybmF0aXZlVGV4dFR5cGUgIT0gQWx0ZXJuYXRpdmVUZXh0VHlw
ZURpY3RhdGlvbkFsdGVybmF0aXZlcyAmJiAobWFya2VyVHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6
UmVwbGFjZW1lbnQgfHwgbWFya2VyVHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3Rl
ZCkpCisgICAgICAgIHJldHVybiBtX2FsdGVybmF0aXZlVGV4dEluZm8ub3JpZ2luYWxUZXh0Owor
ICAgIHJldHVybiAiIjsKK30KKwogI2VuZGlmCiAKIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6aW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9y
PERpY3RhdGlvbkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBFdmVudCogdHJp
Z2dlcmluZ0V2ZW50KQpAQCAtNjI0LDQgKzcwNyw0OCBAQCBib29sIEFsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXI6Omluc2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZl
YwogICAgIHJldHVybiBldmVudC0+ZGVmYXVsdEhhbmRsZWQoKTsKIH0KIAordm9pZCBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyOjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIo
Y29uc3QgRG9jdW1lbnRNYXJrZXIqIG1hcmtlcikKK3sKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVS
TkFUSVZFUykKKyAgICBEaWN0YXRpb25NYXJrZXJEZXRhaWxzKiBkZXRhaWxzID0gc3RhdGljX2Nh
c3Q8RGljdGF0aW9uTWFya2VyRGV0YWlscyo+KG1hcmtlci0+ZGV0YWlscygpKTsKKyAgICBpZiAo
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBjbGllbnQgPSBhbHRlcm5hdGl2ZVRleHRDbGllbnQoKSkK
KyAgICAgICAgY2xpZW50LT5yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGV0YWlscy0+ZGlj
dGF0aW9uQ29udGV4dCgpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG1hcmtlcik7CisjZW5k
aWYKK30KKworVmVjdG9yPFN0cmluZz4gQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6ZGljdGF0
aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKGNvbnN0IERvY3VtZW50TWFya2VyKiBtYXJrZXIpCit7
CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgQVNTRVJUKG1hcmtlci0+dHlw
ZSgpID09IERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgIGlmIChB
bHRlcm5hdGl2ZVRleHRDbGllbnQqIGNsaWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgpKSB7
CisgICAgICAgIERpY3RhdGlvbk1hcmtlckRldGFpbHMqIGRldGFpbHMgPSBzdGF0aWNfY2FzdDxE
aWN0YXRpb25NYXJrZXJEZXRhaWxzKj4obWFya2VyLT5kZXRhaWxzKCkpOworICAgICAgICByZXR1
cm4gY2xpZW50LT5kaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGV0YWlscy0+ZGljdGF0aW9uQ29udGV4
dCgpKTsKKyAgICB9CisgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShtYXJrZXIpOworICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworI2VuZGlm
Cit9CisKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlEaWN0YXRpb25BbHRl
cm5hdGl2ZShjb25zdCBTdHJpbmcmIGFsdGVybmF0aXZlU3RyaW5nKQoreworI2lmIFVTRShESUNU
QVRJT05fQUxURVJOQVRJVkVTKQorICAgIEVkaXRvciogZWRpdG9yID0gbV9mcmFtZS0+ZWRpdG9y
KCk7CisgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb24gPSBlZGl0b3ItPnNlbGVjdGVkUmFuZ2Uo
KTsKKyAgICBpZiAoIXNlbGVjdGlvbiB8fCAhZWRpdG9yLT5zaG91bGRJbnNlcnRUZXh0KGFsdGVy
bmF0aXZlU3RyaW5nLCBzZWxlY3Rpb24uZ2V0KCksIEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkp
CisgICAgICAgIHJldHVybjsKKyAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIqIG1hcmtlcnMg
PSBzZWxlY3Rpb24tPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKTsKKyAg
ICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXJzID0g
bWFya2Vycy0+bWFya2Vyc0luUmFuZ2Uoc2VsZWN0aW9uLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6
RGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRpY3Rh
dGlvbkFsdGVybmF0aXZlc01hcmtlcnMuc2l6ZSgpOyArK2kpCisgICAgICAgIHJlbW92ZURpY3Rh
dGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcihkaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXJzW2ld
KTsKKworICAgIGFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZShzZWxlY3Rpb24uZ2V0KCksIGFs
dGVybmF0aXZlU3RyaW5nLCBBbHRlcm5hdGl2ZVRleHRUeXBlRGljdGF0aW9uQWx0ZXJuYXRpdmVz
LCBtYXJrZXJUeXBlc0ZvckFwcGxpZWREaWN0YXRpb25BbHRlcm5hdGl2ZSgpKTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKGFsdGVybmF0aXZlU3RyaW5nKTsKKyNlbmRpZgorfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci5oCmluZGV4IDI4NDQ5ZWZkOTNlNTc0MGEwOWUzNWI2NTRiODliNTBj
Nzk4MDhkOWIuLmY2ZTY0ODRkNDI0ODkyMDBmN2U5NzZiNGIyNzJlZmM0MWJjOTdhZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5o
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIK
ICNpbmNsdWRlICJEb2N1bWVudE1hcmtlci5oIgorI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgi
CiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tpbmcuaCIKICNpbmNsdWRl
ICJUaW1lci5oIgpAQCAtMTA4LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbmRU
b1VuYXBwbGllZFNwZWxsQ29ycmVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgY29uc3Qg
U3RyaW5nJiBjb3JyZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbikgVU5MRVNTX0VOQUJM
RUQoeyBVTlVTRURfUEFSQU0oY29ycmVjdGVkKTsgVU5VU0VEX1BBUkFNKGNvcnJlY3Rpb24pOyB9
KQogICAgIHZvaWQgcmVzcG9uZFRvQXBwbGllZEVkaXRpbmcoQ29tcG9zaXRlRWRpdENvbW1hbmQq
KSBVTkxFU1NfRU5BQkxFRCh7IH0pCiAgICAgdm9pZCByZXNwb25kVG9VbmFwcGxpZWRFZGl0aW5n
KEVkaXRDb21tYW5kQ29tcG9zaXRpb24qKSBVTkxFU1NfRU5BQkxFRCh7IH0pCi0gICAgdm9pZCBy
ZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVj
dGlvbikgVU5MRVNTX0VOQUJMRUQoeyBVTlVTRURfUEFSQU0ob2xkU2VsZWN0aW9uKTsgfSkKKyAg
ICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
b2xkU2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucykgVU5MRVNT
X0VOQUJMRUQoeyBVTlVTRURfUEFSQU0ob2xkU2VsZWN0aW9uKTsgfSkKIAogICAgIHZvaWQgc3Rv
cFBlbmRpbmdDb3JyZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbikg
VU5MRVNTX0VOQUJMRUQoeyBVTlVTRURfUEFSQU0ob2xkU2VsZWN0aW9uKTsgfSkKICAgICB2b2lk
IGFwcGx5UGVuZGluZ0NvcnJlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9u
QWZ0ZXJUeXBpbmcpIFVOTEVTU19FTkFCTEVEKHsgVU5VU0VEX1BBUkFNKHNlbGVjdGlvbkFmdGVy
VHlwaW5nKTsgfSkKQEAgLTEzMCwyMCArMTMxLDIxIEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0
ZWRBdXRvY29ycmVjdGlvbkF0UG9zaXRpb24oY29uc3QgUG9zaXRpb24mLCBjb25zdCBTdHJpbmcm
IG9yaWdpbmFsU3RyaW5nKSBVTkxFU1NfRU5BQkxFRCh7IFVOVVNFRF9QQVJBTShvcmlnaW5hbFN0
cmluZyk7IH0pCiAKICAgICBib29sIGluc2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmLCBj
b25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiwgRXZlbnQqKTsKKyAgICB2b2lkIHJl
bW92ZURpY3RhdGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcihjb25zdCBEb2N1bWVudE1hcmtlciop
OworICAgIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcihjb25z
dCBEb2N1bWVudE1hcmtlciopOworICAgIHZvaWQgYXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZShj
b25zdCBTdHJpbmcmIGFsdGVybmF0aXZlU3RyaW5nKTsKIAogcHJpdmF0ZToKICNpZiBVU0UoQVVU
T0NPUlJFQ1RJT05fUEFORUwpCiAgICAgU3RyaW5nIGRpc21pc3NTb29uKFJlYXNvbkZvckRpc21p
c3NpbmdBbHRlcm5hdGl2ZVRleHQpOwotICAgIHZvaWQgYXBwbHlBbHRlcm5hdGl2ZVRleHQoY29u
c3QgU3RyaW5nJiBhbHRlcm5hdGl2ZSwgY29uc3QgVmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJr
ZXJUeXBlPiYpOworICAgIHZvaWQgYXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJh
bmdlKiwgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGl2ZSwgQWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29u
c3QgVmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiYpOwogICAgIHZvaWQgdGltZXJG
aXJlZChUaW1lcjxBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyPiopOwogICAgIHZvaWQgcmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2VkKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogICAgIHZvaWQgcmVjb3JkU3Bl
bGxjaGVja2VyUmVzcG9uc2VGb3JNb2RpZmllZENvcnJlY3Rpb24oUmFuZ2UqIHJhbmdlT2ZDb3Jy
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIGNvcnJlY3RlZCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9u
KTsKKyAgICBTdHJpbmcgbWFya2VyRGVzY3JpcHRpb25Gb3JBcHBsaWVkQWx0ZXJuYXRpdmVUZXh0
KEFsdGVybmF0aXZlVGV4dFR5cGUsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKIAotICAg
IGJvb2wgc2hvdWxkU3RhcnRUaW1lckZvcihjb25zdCBEb2N1bWVudE1hcmtlciogbWFya2VyLCBp
bnQgZW5kT2Zmc2V0KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICgoKG1hcmtlci0+dHlw
ZSgpID09IERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCAmJiAhbWFya2VyLT5kZXNjcmlwdGlv
bigpLmlzTnVsbCgpKSAKLSAgICAgICAgICAgICAgICAgfHwgbWFya2VyLT50eXBlKCkgPT0gRG9j
dW1lbnRNYXJrZXI6OlNwZWxsaW5nKSAmJiBzdGF0aWNfY2FzdDxpbnQ+KG1hcmtlci0+ZW5kT2Zm
c2V0KCkpID09IGVuZE9mZnNldCk7Ci0gICAgfQorICAgIGJvb2wgc2hvdWxkU3RhcnRUaW1lckZv
cihjb25zdCBEb2N1bWVudE1hcmtlciYsIGludCBlbmRPZmZzZXQpIGNvbnN0OworICAgIGJvb2wg
cmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQoY29uc3QgRG9jdW1lbnRNYXJrZXImLCBjb25zdCBQ
b3NpdGlvbiYgZW5kT2ZXb3JkUG9zaXRpb24sIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25P
cHRpb25zKTsKIAogICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCogYWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50KCk7CiAgICAgRWRpdG9yQ2xpZW50KiBlZGl0b3JDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAppbmRleCBiNDYwZWQxOTJhYTIzYTFmNTNhMTM4ZDM1NTlhZjgyNzQ2NmMxZDFk
Li4xNDg5Mjg0NTZjNGFmZTEzMDUyMGExZGQ0Y2Q3MjgzNTQzYzBkOTBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCkBAIC00ODEsMTMgKzQ4MSwxMyBAQCBib29sIEVkaXRvcjo6c2hvdWxk
U2hvd0RlbGV0ZUludGVyZmFjZShIVE1MRWxlbWVudCogZWxlbWVudCkgY29uc3QKICAgICByZXR1
cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPnNob3VsZFNob3dEZWxldGVJbnRlcmZhY2UoZWxlbWVu
dCk7CiB9CiAKLXZvaWQgRWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbikKK3ZvaWQgRWRpdG9yOjpub3RpZnlDb21wb25l
bnRzT25DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlv
biwgRnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBp
ZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5yZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9u
KG1fZnJhbWUpOwogICAgIHNldFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZSh0cnVlKTsKICAgICBt
X2RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXItPnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24ob2xkU2Vs
ZWN0aW9uKTsKLSAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPnJlc3BvbmRUb0NoYW5n
ZWRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uKTsKKyAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xs
ZXItPnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uLCBvcHRpb25zKTsKIH0K
IAogdm9pZCBFZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiBlbmRpbmdTZWxlY3Rpb24pCkBAIC03OTAsNyArNzkwLDggQEAgdm9pZCBFZGl0b3I6
OmFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQdHI8Q29tcG9zaXRlRWRpdENvbW1hbmQ+IGNtZCkKICAg
ICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPnJlc3BvbmRUb0FwcGxpZWRFZGl0aW5nKGNt
ZC5nZXQoKSk7CiAKICAgICAvLyBEb24ndCBjbGVhciB0aGUgdHlwaW5nIHN0eWxlIHdpdGggdGhp
cyBzZWxlY3Rpb24gY2hhbmdlLiAgV2UgZG8gdGhvc2UgdGhpbmdzIGVsc2V3aGVyZSBpZiBuZWNl
c3NhcnkuCi0gICAgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgZmFs
c2UsIGZhbHNlKTsKKyAgICBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyBvcHRp
b25zID0gY21kLT5pc0RpY3RhdGlvbkNvbW1hbmQoKSA/IEZyYW1lU2VsZWN0aW9uOjpEaWN0YXRp
b25UcmlnZ2VyZWQgOiAwOworICAgIGNoYW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChuZXdTZWxl
Y3Rpb24sIG9wdGlvbnMpOwogCiAgICAgaWYgKCFjbWQtPnByZXNlcnZlc1R5cGluZ1N0eWxlKCkp
CiAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5jbGVhclR5cGluZ1N0eWxlKCk7CkBAIC04
MTYsNyArODE3LDcgQEAgdm9pZCBFZGl0b3I6OnVuYXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cjxF
ZGl0Q29tbWFuZENvbXBvc2l0aW9uPiBjbWQpCiAgICAgZGlzcGF0Y2hFZGl0YWJsZUNvbnRlbnRD
aGFuZ2VkRXZlbnRzKGNtZC0+c3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCksIGNtZC0+ZW5k
aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpKTsKICAgICAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5l
d1NlbGVjdGlvbihjbWQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkpOwotICAgIGNoYW5nZVNlbGVjdGlv
bkFmdGVyQ29tbWFuZChuZXdTZWxlY3Rpb24sIHRydWUsIHRydWUpOworICAgIGNoYW5nZVNlbGVj
dGlvbkFmdGVyQ29tbWFuZChuZXdTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpDbG9zZVR5cGlu
ZyB8IEZyYW1lU2VsZWN0aW9uOjpDbGVhclR5cGluZ1N0eWxlKTsKICAgICBtX2FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXItPnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcoY21kLmdldCgpKTsKICAg
ICAKICAgICBtX2xhc3RFZGl0Q29tbWFuZCA9IDA7CkBAIC04MzIsNyArODMzLDcgQEAgdm9pZCBF
ZGl0b3I6OnJlYXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cjxFZGl0Q29tbWFuZENvbXBvc2l0aW9u
PiBjbWQpCiAgICAgZGlzcGF0Y2hFZGl0YWJsZUNvbnRlbnRDaGFuZ2VkRXZlbnRzKGNtZC0+c3Rh
cnRpbmdSb290RWRpdGFibGVFbGVtZW50KCksIGNtZC0+ZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVu
dCgpKTsKICAgICAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbihjbWQtPmVuZGlu
Z1NlbGVjdGlvbigpKTsKLSAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3U2VsZWN0
aW9uLCB0cnVlLCB0cnVlKTsKKyAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3U2Vs
ZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6Q2xvc2VUeXBpbmcgfCBGcmFtZVNlbGVjdGlvbjo6Q2xl
YXJUeXBpbmdTdHlsZSk7CiAgICAgCiAgICAgbV9sYXN0RWRpdENvbW1hbmQgPSAwOwogICAgIGlm
IChjbGllbnQoKSkKQEAgLTIyNjcsNiArMjI2OCwxMCBAQCB2b2lkIEVkaXRvcjo6dXBkYXRlTWFy
a2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoYm9vbCBkb05vdFJlbW92ZUlmU2VsZWN0aW9u
QQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgUmVm
UHRyPFJhbmdlPiB3b3JkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBzdGFydE9mRmly
c3RXb3JkLmRlZXBFcXVpdmFsZW50KCksIGVuZE9mTGFzdFdvcmQuZGVlcEVxdWl2YWxlbnQoKSk7
CiAKKyAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBtYXJrZXJzID0gZG9jdW1lbnQtPm1hcmtl
cnMoKS0+bWFya2Vyc0luUmFuZ2Uod29yZFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6RGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hcmtlcnMu
c2l6ZSgpOyArK2kpCisgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+cmVtb3Zl
RGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKG1hcmtlcnNbaV0pOworCiAgICAgZG9jdW1l
bnQtPm1hcmtlcnMoKS0+cmVtb3ZlTWFya2Vycyh3b3JkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFy
a2VyOjpTcGVsbGluZyB8IERvY3VtZW50TWFya2VyOjpDb3JyZWN0aW9uSW5kaWNhdG9yIHwgRG9j
dW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24gfCBEb2N1bWVudE1hcmtlcjo6RGlj
dGF0aW9uQWx0ZXJuYXRpdmVzLCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRp
YWxseU92ZXJsYXBwaW5nTWFya2VyKTsKICAgICBkb2N1bWVudC0+bWFya2VycygpLT5jbGVhckRl
c2NyaXB0aW9uT25NYXJrZXJzSW50ZXJzZWN0aW5nUmFuZ2Uod29yZFJhbmdlLmdldCgpLCBEb2N1
bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpOwogfQpAQCAtMjQxNCw3ICsyNDE5LDcgQEAgdm9pZCBF
ZGl0b3I6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxBc0lnbm9yZWQoKQogICAgIG1fYWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci0+ZGlzbWlzcyhSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVU
ZXh0SWdub3JlZCk7CiB9CiAKLXZvaWQgRWRpdG9yOjpjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1h
bmQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9uLCBib29sIGNsb3NlVHlwaW5n
LCBib29sIGNsZWFyVHlwaW5nU3R5bGUpCit2b2lkIEVkaXRvcjo6Y2hhbmdlU2VsZWN0aW9uQWZ0
ZXJDb21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgIEZyYW1lU2Vs
ZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgLy8gSWYgdGhlIG5l
dyBzZWxlY3Rpb24gaXMgb3JwaGFuZWQsIHRoZW4gZG9uJ3QgdXBkYXRlIHRoZSBzZWxlY3Rpb24u
CiAgICAgaWYgKG5ld1NlbGVjdGlvbi5zdGFydCgpLmlzT3JwaGFuKCkgfHwgbmV3U2VsZWN0aW9u
LmVuZCgpLmlzT3JwaGFuKCkpCkBAIC0yNDI1LDE0ICsyNDMwLDggQEAgdm9pZCBFZGl0b3I6OmNo
YW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxl
Y3Rpb24sIGIKICAgICAvLyBUaGUgb2xkIHNlbGVjdGlvbiBjYW4gYmUgaW52YWxpZCBoZXJlIGFu
ZCBjYWxsaW5nIHNob3VsZENoYW5nZVNlbGVjdGlvbiBjYW4gcHJvZHVjZSBzb21lIHN0cmFuZ2Ug
Y2FsbHMuCiAgICAgLy8gU2VlIDxyZGFyOi8vcHJvYmxlbS81NzI5MzE1PiBTb21lIHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2UgY29udGFpbiBSYW5nZXMgZm9yIHNlbGVjdGlvbnMgdGhhdCBh
cmUgbm8gbG9uZ2VyIHZhbGlkCiAgICAgYm9vbCBzZWxlY3Rpb25EaWROb3RDaGFuZ2VET01Qb3Np
dGlvbiA9IG5ld1NlbGVjdGlvbiA9PSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCk7
Ci0gICAgaWYgKHNlbGVjdGlvbkRpZE5vdENoYW5nZURPTVBvc2l0aW9uIHx8IG1fZnJhbWUtPnNl
bGVjdGlvbigpLT5zaG91bGRDaGFuZ2VTZWxlY3Rpb24obmV3U2VsZWN0aW9uKSkgewotICAgICAg
ICBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyBvcHRpb25zID0gMDsKLSAgICAg
ICAgaWYgKGNsb3NlVHlwaW5nKQotICAgICAgICAgICAgb3B0aW9ucyB8PSBGcmFtZVNlbGVjdGlv
bjo6Q2xvc2VUeXBpbmc7Ci0gICAgICAgIGlmIChjbGVhclR5cGluZ1N0eWxlKQotICAgICAgICAg
ICAgb3B0aW9ucyB8PSBGcmFtZVNlbGVjdGlvbjo6Q2xlYXJUeXBpbmdTdHlsZTsKKyAgICBpZiAo
c2VsZWN0aW9uRGlkTm90Q2hhbmdlRE9NUG9zaXRpb24gfHwgbV9mcmFtZS0+c2VsZWN0aW9uKCkt
PnNob3VsZENoYW5nZVNlbGVjdGlvbihuZXdTZWxlY3Rpb24pKQogICAgICAgICBtX2ZyYW1lLT5z
ZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgb3B0aW9ucyk7Ci0gICAgfQog
CiAgICAgLy8gU29tZSBlZGl0aW5nIG9wZXJhdGlvbnMgY2hhbmdlIHRoZSBzZWxlY3Rpb24gdmlz
dWFsbHkgd2l0aG91dCBhZmZlY3RpbmcgaXRzIHBvc2l0aW9uIHdpdGhpbiB0aGUgRE9NLgogICAg
IC8vIEZvciBleGFtcGxlIHdoZW4geW91IHByZXNzIHJldHVybiBpbiB0aGUgZm9sbG93aW5nICh0
aGUgY2FyZXQgaXMgbWFya2VkIGJ5IF4pOgpAQCAtMjgyNyw3ICsyODI2LDcgQEAgdm9pZCBFZGl0
b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xk
U2VsZWN0aW9uLCBGcmEKICAgICBpZiAoIWlzQ29udGludW91c0dyYW1tYXJDaGVja2luZ0VuYWJs
ZWQpCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+cmVtb3ZlTWFya2Vy
cyhEb2N1bWVudE1hcmtlcjo6R3JhbW1hcik7CiAKLSAgICByZXNwb25kVG9DaGFuZ2VkU2VsZWN0
aW9uKG9sZFNlbGVjdGlvbik7CisgICAgbm90aWZ5Q29tcG9uZW50c09uQ2hhbmdlZFNlbGVjdGlv
bihvbGRTZWxlY3Rpb24sIG9wdGlvbnMpOwogfQogCiBzdGF0aWMgTm9kZSogZmluZEZpcnN0TWFy
a2FibGUoTm9kZSogbm9kZSkKQEAgLTI5MTgsNCArMjkxNywxNCBAQCB2b2lkIEVkaXRvcjo6d2ls
bERldGFjaFBhZ2UoKQogICAgICAgICBlZGl0b3JDbGllbnQtPmZyYW1lV2lsbERldGFjaFBhZ2Uo
ZnJhbWUoKSk7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IEVkaXRvcjo6ZGljdGF0aW9uQWx0ZXJuYXRp
dmVzRm9yTWFya2VyKGNvbnN0IERvY3VtZW50TWFya2VyKiBtYXJrZXIpCit7CisgICAgcmV0dXJu
IG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+ZGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFy
a2VyKG1hcmtlcik7Cit9CisKK3ZvaWQgRWRpdG9yOjphcHBseURpY3RhdGlvbkFsdGVybmF0aXZl
bHRlcm5hdGl2ZShjb25zdCBTdHJpbmcmIGFsdGVybmF0aXZlU3RyaW5nKQoreworICAgIG1fYWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+YXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZShhbHRlcm5h
dGl2ZVN0cmluZyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oCmluZGV4IGYwZTVjMjRlNjViOTFmNjM1NzAxYzUzNTllMDlkYzFkYzdhYjdlZGMuLmNi
MTBiYzVhZjZhMGI2Yjg1MjhjZmFkYzMyZGYyODJiNDg1NjM4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaApAQCAtMTM0LDggKzEzNCw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZFNob3dE
ZWxldGVJbnRlcmZhY2UoSFRNTEVsZW1lbnQqKSBjb25zdDsKICAgICBib29sIHNob3VsZERlbGV0
ZVJhbmdlKFJhbmdlKikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKFN0eWxlUHJv
cGVydHlTZXQqLCBSYW5nZSopOwotICAgIAotICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVj
dGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24pOworCiAgICAgdm9pZCBy
ZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZW5kaW5nU2Vs
ZWN0aW9uKTsKIAogICAgIGJvb2wgc2VsZWN0aW9uU3RhcnRIYXNTdHlsZShDU1NQcm9wZXJ0eUlE
LCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdDsKQEAgLTM5NSw3ICszOTQsOCBAQCBwdWJsaWM6
CiAKICAgICBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3IgZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRv
cigpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcjsgfQogICAgIHZv
aWQgc2V0RGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3Ig
c2VwYXJhdG9yKSB7IG1fZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvciA9IHNlcGFyYXRvcjsgfQot
CisgICAgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKGNvbnN0
IERvY3VtZW50TWFya2VyKik7CisgICAgdm9pZCBhcHBseURpY3RhdGlvbkFsdGVybmF0aXZlbHRl
cm5hdGl2ZShjb25zdCBTdHJpbmcmIGFsdGVybmF0aXZlU3RyaW5nKTsKIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxEZXRhY2hQYWdlKCkgT1ZFUlJJREU7CiAKQEAgLTQyOSw3ICs0Mjks
OCBAQCBwcml2YXRlOgogICAgIGVudW0gU2V0Q29tcG9zaXRpb25Nb2RlIHsgQ29uZmlybUNvbXBv
c2l0aW9uLCBDYW5jZWxDb21wb3NpdGlvbiB9OwogICAgIHZvaWQgc2V0Q29tcG9zaXRpb24oY29u
c3QgU3RyaW5nJiwgU2V0Q29tcG9zaXRpb25Nb2RlKTsKIAotICAgIHZvaWQgY2hhbmdlU2VsZWN0
aW9uQWZ0ZXJDb21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgYm9v
bCBjbG9zZVR5cGluZywgYm9vbCBjbGVhclR5cGluZ1N0eWxlKTsKKyAgICB2b2lkIGNoYW5nZVNl
bGVjdGlvbkFmdGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24s
IEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zKTsKKyAgICB2b2lkIG5vdGlmeUNv
bXBvbmVudHNPbkNoYW5nZWRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2Vs
ZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyk7CiAKICAgICBOb2Rl
KiBmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCA4ZmM0MmVjY2UwMzYyMDJhN2YwMjg0MGEwZTVk
MTM0ZGM2NWRmYjA4Li40ZDdmOTg3NzU5NWMyNjQzMzJiZWQ4OGYzYTQ1OGFkODFiNzZkNDMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCkBAIC0xMTgsNiArMTE4LDcg
QEAgcHVibGljOgogICAgICAgICBDbGVhclR5cGluZ1N0eWxlID0gMSA8PCAyLAogICAgICAgICBT
cGVsbENvcnJlY3Rpb25UcmlnZ2VyZWQgPSAxIDw8IDMsCiAgICAgICAgIERvTm90U2V0Rm9jdXMg
PSAxIDw8IDQsCisgICAgICAgIERpY3RhdGlvblRyaWdnZXJlZCA9IDEgPDwgNQogICAgIH07CiAg
ICAgdHlwZWRlZiB1bnNpZ25lZCBTZXRTZWxlY3Rpb25PcHRpb25zOyAvLyBVbmlvbiBvZiB2YWx1
ZXMgaW4gU2V0U2VsZWN0aW9uT3B0aW9uIGFuZCBFVXNlclRyaWdnZXJlZAogICAgIHN0YXRpYyBp
bmxpbmUgRVVzZXJUcmlnZ2VyZWQgc2VsZWN0aW9uT3B0aW9uc1RvVXNlclRyaWdnZXJlZChTZXRT
ZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzYjNl
ODhhODBjYjljZDljZGVjNjRiYzU2OTVlZjFiZmQxZDViY2QKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaApA
QCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXJfaAorI2RlZmluZSBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXJfaAorCisjaW5j
bHVkZSAiQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNp
ZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKK09CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRp
dmVzOworT0JKQ19DTEFTUyBOU1ZpZXc7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyIHsKK3B1YmxpYzoKKyAgICBBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXIoKSB7IH0KKyAgICAvLyBSZXR1cm5zIGEgY29udGV4dCBJRC4KKyAgICB1
aW50NjRfdCBhZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZl
cz4mKTsKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCBzaG93QWx0ZXJuYXRpdmVzKE5TVmll
dyosIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlByaW1hcnlTdHJpbmcsIHVpbnQ2NF90
IGNvbnRleHQsIHZvaWQoXmFjY2VwdGFuY2VIYW5kbGVyKShOU1N0cmluZyopKTsKKyAgICB2b2lk
IGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKKyAgICB2b2lkIHJlbW92ZUFsdGVybmF0aXZlcyh1aW50
NjRfdCBjb250ZXh0KTsKKyAgICBWZWN0b3I8U3RyaW5nPiBhbHRlcm5hdGl2ZXNGb3JDb250ZXh0
KHVpbnQ2NF90IGNvbnRleHQpOworCitwcml2YXRlOgorICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRB
bHRlcm5hdGl2ZShOU1N0cmluZyogYWNjZXB0ZWRBbHRlcm5hdGl2ZSwgdWludDY0X3QgY29udGV4
dCwgTlNUZXh0QWx0ZXJuYXRpdmVzKik7CisKKyAgICBjbGFzcyBBbGVybmF0aXZlVGV4dENvbnRl
eHRDb250cm9sbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEFsZXJuYXRpdmVUZXh0Q29udGV4
dENvbnRyb2xsZXIoKSB7IH0KKyAgICAgICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNvbnN0
IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7CisgICAgICAgIHZvaWQgY2xlYXIoKTsK
KyAgICAgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2
NF90IGNvbnRleHQpOworICAgICAgICB2b2lkIHJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQo
dWludDY0X3QgY29udGV4dCk7CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBpbnZhbGlk
Q29udGV4dCA9IDA7CisgICAgcHJpdmF0ZToKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2
NF90LCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiA+IEhhc2hNYXBUeXBlOworICAgICAg
ICBIYXNoTWFwVHlwZSBtX2FsdGVybmF0aXZlc09iamVjdE1hcDsKKyAgICB9OworCisgICAgQWxl
cm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlciBtX2NvbnRleHRDb250cm9sbGVyOworICAgIFJl
dGFpblB0cjxOU1ZpZXc+IG1fdmlldzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCisjZW5kaWYgLy8gQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYjk2M2VmYzczMjdhNWI3NTQ4YzJhMjE5MWIwZTFhMDVmNzA2
ZGFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIu
aCIKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorI2ltcG9ydCA8QXBwS2l0L05T
U3BlbGxDaGVja2VyLmg+CisjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+Cisj
aW1wb3J0IDxBcHBLaXQvTlNWaWV3Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordWludDY0
X3QgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250
cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZl
cz4mIGFsdGVybmF0aXZlcykKK3sKKyAgICB1aW50NjRfdCBjb250ZXh0ID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50NjRfdD4oYWx0ZXJuYXRpdmVzLmdldCgpKTsKKyAgICBpZiAoIWNvbnRleHQpCisg
ICAgICAgIHJldHVybiBpbnZhbGlkQ29udGV4dDsKKyAgICBpZiAoYWx0ZXJuYXRpdmVzRm9yQ29u
dGV4dChjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQ7CisKKyAgICBIYXNoTWFwVHlw
ZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmFkZChjb250ZXh0
LCBhbHRlcm5hdGl2ZXMpOworICAgIHJldHVybiByZXN1bHQuaXNOZXdFbnRyeSA/IGNvbnRleHQg
OiBpbnZhbGlkQ29udGV4dDsKK30KKworTlNUZXh0QWx0ZXJuYXRpdmVzKiBBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmFsdGVybmF0
aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4dCkKK3sKKyAgICBIYXNoTWFwVHlwZTo6Y29u
c3RfaXRlcmF0b3IgaXRyID0gbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuZmluZChjb250ZXh0KTsK
KyAgICBpZiAoaXRyID09IG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmVuZCgpKQorICAgICAgICBy
ZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gaXRyLT5zZWNvbmQuZ2V0KCk7Cit9CisKK3ZvaWQgQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVy
OjpyZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpCit7CisgICAg
bV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAucmVtb3ZlKGNvbnRleHQpOworfQorCit2b2lkIEFsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6
Y2xlYXIoKQoreworICAgIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwLmNsZWFyKCk7Cit9CisKK3Vp
bnQ2NF90IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWRkQWx0ZXJuYXRpdmVzKGNvbnN0
IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+JiBhbHRlcm5hdGl2ZXMpCit7CisgICAgcmV0
dXJuIG1fY29udGV4dENvbnRyb2xsZXIuYWRkQWx0ZXJuYXRpdmVzKGFsdGVybmF0aXZlcyk7Cit9
CisKK1ZlY3RvcjxTdHJpbmc+IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWx0ZXJuYXRp
dmVzRm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0KQoreworICAgIE5TVGV4dEFsdGVybmF0aXZl
cyogdGV4dEFsdGVybmF0aXZlcyA9IG1fY29udGV4dENvbnRyb2xsZXIuYWx0ZXJuYXRpdmVzRm9y
Q29udGV4dChjb250ZXh0KTsKKyAgICBWZWN0b3I8U3RyaW5nPiBhbHRlcm5hdGl2ZVN0cmluZ3M7
CisgICAgZm9yIChOU1N0cmluZyogc3RyaW5nIGluIHRleHRBbHRlcm5hdGl2ZXMuYWx0ZXJuYXRp
dmVTdHJpbmdzKQorICAgICAgICBhbHRlcm5hdGl2ZVN0cmluZ3MuYXBwZW5kKHN0cmluZyk7Cisg
ICAgcmV0dXJuIGFsdGVybmF0aXZlU3RyaW5nczsKK30KKwordm9pZCBBbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXI6OmNsZWFyKCkKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0Q29udHJvbGxlci5j
bGVhcigpOworfQorCit2b2lkIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6c2hvd0FsdGVy
bmF0aXZlcyhOU1ZpZXcqIHZpZXcsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlByaW1h
cnlTdHJpbmcsIHVpbnQ2NF90IGNvbnRleHQsIHZvaWQoXmFjY2VwdGFuY2VIYW5kbGVyKShOU1N0
cmluZyopKQoreworICAgIGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKKyAgICBpZiAoIXZpZXcpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fdmlldyA9IHZpZXc7CisgICAgTlNUZXh0QWx0ZXJuYXRp
dmVzKiBhbHRlcm5hdGl2ZXMgPSBtX2NvbnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0ZvckNv
bnRleHQoY29udGV4dCk7CisgICAgaWYgKCFhbHRlcm5hdGl2ZXMpCisgICAgICAgIHJldHVybjsK
KyAgICBOU1NwZWxsQ2hlY2tlciogc3BlbGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJl
ZFNwZWxsQ2hlY2tlcl07CisgICAgW3NwZWxsQ2hlY2tlciBzaG93Q29ycmVjdGlvbkluZGljYXRv
ck9mVHlwZTpOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlR3Vlc3NlcyBwcmltYXJ5U3RyaW5nOmFs
dGVybmF0aXZlcy5wcmltYXJ5U3RyaW5nIGFsdGVybmF0aXZlU3RyaW5nczphbHRlcm5hdGl2ZXMu
YWx0ZXJuYXRpdmVTdHJpbmdzIGZvclN0cmluZ0luUmVjdDpib3VuZGluZ0JveE9mUHJpbWFyeVN0
cmluZyB2aWV3Om1fdmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nKiBhY2Nl
cHRlZFN0cmluZykgeworICAgICAgICBpZiAoYWNjZXB0ZWRTdHJpbmcpIHsKKyAgICAgICAgICAg
IGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUoYWNjZXB0ZWRTdHJpbmcsIGNvbnRleHQsIGFsdGVy
bmF0aXZlcyk7CisgICAgICAgICAgICBhY2NlcHRhbmNlSGFuZGxlcihhY2NlcHRlZFN0cmluZyk7
CisgICAgICAgIH0KKyAgICB9XTsKK30KKwordm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXI6OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUoTlNTdHJpbmcqIGFjY2VwdGVkQWx0ZXJuYXRp
dmUsIHVpbnQ2NF90IGNvbnRleHQsIE5TVGV4dEFsdGVybmF0aXZlcyogYWx0ZXJuYXRpdmVzKQor
eworICAgIFthbHRlcm5hdGl2ZXMgbm90ZVNlbGVjdGVkQWx0ZXJuYXRpdmVTdHJpbmc6YWNjZXB0
ZWRBbHRlcm5hdGl2ZV07CisgICAgbV9jb250ZXh0Q29udHJvbGxlci5yZW1vdmVBbHRlcm5hdGl2
ZXNGb3JDb250ZXh0KGNvbnRleHQpOworICAgIG1fdmlldy5jbGVhcigpOworfQorCit2b2lkIEFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6ZGlzbWlzc0FsdGVybmF0aXZlcygpCit7CisgICAg
aWYgKCFtX3ZpZXcpCisgICAgICAgIHJldHVybjsKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJl
ZFNwZWxsQ2hlY2tlcl0gZGlzbWlzc0NvcnJlY3Rpb25JbmRpY2F0b3JGb3JWaWV3Om1fdmlldy5n
ZXQoKV07Cit9CisKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpyZW1vdmVBbHRl
cm5hdGl2ZXModWludDY0X3QgY29udGV4dCkKK3sKKyAgICBtX2NvbnRleHRDb250cm9sbGVyLnJl
bW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCk7Cit9Cit9CisjZW5kaWYgLy8gVVNF
KERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwOWUxZTlkMWI4
MTZhZmQxNTI1OTc2ZmY5ZTUyY2VhYWQ4Zjg0NTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaApAQCAtMCwwICsx
LDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VfaAor
I2RlZmluZSBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VfaAorCisjaW5jbHVkZSAiQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCitPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFU
SVZFUykKK3N0cnVjdCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UgeworICAgIFRleHRBbHRlcm5h
dGl2ZVdpdGhSYW5nZShOU1RleHRBbHRlcm5hdGl2ZXMqIGFuQWx0ZXJuYXRpdmVzLCBOU1Jhbmdl
IGFSYW5nZSk7CisgICAgTlNSYW5nZSByYW5nZTsKKyAgICBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJu
YXRpdmVzPiBhbHRlcm5hdGl2ZXM7Cit9OworCit2b2lkIGNvbGxlY3REaWN0YXRpb25UZXh0QWx0
ZXJuYXRpdmVzKE5TQXR0cmlidXRlZFN0cmluZyosIFZlY3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRo
UmFuZ2U+JiBhbHRlcm5hdGl2ZXMpOworCisjZWxzZQorc3RydWN0IFRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZSB7IH07CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWE1
OGY4OTRmOGVlZjVlNjM1YTg3OWEwYjc4MTBkZmQ0YzJmZTFjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tCkBA
IC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCIKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQorI2ltcG9ydCA8QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZTo6VGV4dEFsdGVybmF0aXZlV2l0
aFJhbmdlKE5TVGV4dEFsdGVybmF0aXZlcyogYW5BbHRlcm5hdGl2ZXMsIE5TUmFuZ2UgYVJhbmdl
KQorOiByYW5nZShhUmFuZ2UpCissIGFsdGVybmF0aXZlcyhhbkFsdGVybmF0aXZlcykKK3sKK30K
Kwordm9pZCBjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlcyhOU0F0dHJpYnV0ZWRTdHJp
bmcgKnN0cmluZywgVmVjdG9yPFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGFsdGVybmF0aXZl
cykgeworICAgIE5TUmFuZ2UgZWZmZWN0aXZlUmFuZ2UgPSBOU01ha2VSYW5nZSgwLCAwKTsKKyAg
ICBOU1VJbnRlZ2VyIGxlbmd0aCA9IFtzdHJpbmcgbGVuZ3RoXTsKKyAgICBkbyB7CisgICAgICAg
IE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFtzdHJpbmcgYXR0cmlidXRlc0F0SW5kZXg6ZWZm
ZWN0aXZlUmFuZ2UubG9jYXRpb24gZWZmZWN0aXZlUmFuZ2U6JmVmZmVjdGl2ZVJhbmdlXTsKKyAg
ICAgICAgaWYgKCFhdHRyaWJ1dGVzKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIE5TVGV4
dEFsdGVybmF0aXZlcyAqdGV4dEFsdGVybmF0aXZlcyA9IFthdHRyaWJ1dGVzIG9iamVjdEZvcktl
eTpOU1RleHRBbHRlcm5hdGl2ZXNBdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgaWYgKHRleHRBbHRl
cm5hdGl2ZXMpCisgICAgICAgICAgICBhbHRlcm5hdGl2ZXMuYXBwZW5kKFRleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZSh0ZXh0QWx0ZXJuYXRpdmVzLCBlZmZlY3RpdmVSYW5nZSkpOworICAgICAgICBl
ZmZlY3RpdmVSYW5nZS5sb2NhdGlvbiA9IE5TTWF4UmFuZ2UoZWZmZWN0aXZlUmFuZ2UpOworICAg
IH0gd2hpbGUgKGVmZmVjdGl2ZVJhbmdlLmxvY2F0aW9uIDwgbGVuZ3RoKTsKK30KK30KKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggMDk0
N2M4N2JhMDI0MTQ0MzFlNjZkMzYzYzY4YTkzNjY2ZmRlOTZmZC4uNjcyNDVlNjRkNzYzMDg1OWVm
OWY3N2ZjY2VmZGJiMGU0MGNkNTFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9B
bHRlcm5hdGl2ZVRleHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0
aXZlVGV4dENsaWVudC5oCkBAIC0zMSw2ICszMSwxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JNKE1BQykg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
U05PV19MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MSU9OKQorLy8gU29tZSBwbGF0
Zm9ybXMgcHJvdmlkZSBVSSBmb3Igc3VnZ2VzdGluZyBhbHRlcm5hdGl2ZSBkaWN0YXRpb24gdGV4
dC4KKyNkZWZpbmUgV1RGX1VTRV9ESUNUQVRJT05fQUxURVJOQVRJVkVTIDEKKyNlbmRpZiAvLyBQ
TEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTElPTikK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5h
dGl2ZVRleHQgewpAQCAtNDMsNiArNDgsNyBAQCBlbnVtIEFsdGVybmF0aXZlVGV4dFR5cGUgewog
ICAgIEFsdGVybmF0aXZlVGV4dFR5cGVDb3JyZWN0aW9uID0gMCwKICAgICBBbHRlcm5hdGl2ZVRl
eHRUeXBlUmV2ZXJzaW9uLAogICAgIEFsdGVybmF0aXZlVGV4dFR5cGVTcGVsbGluZ1N1Z2dlc3Rp
b25zLAorICAgIEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0YXRpb25BbHRlcm5hdGl2ZXMKIH07CiAK
IGVudW0gQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgewpAQCAtNTQsMTEgKzYwLDE4IEBAIGNs
YXNzIEFsdGVybmF0aXZlVGV4dENsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWx0ZXJu
YXRpdmVUZXh0Q2xpZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSA9
IDA7Ci0KKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgdmlydHVhbCB2b2lkIHNo
b3dDb3JyZWN0aW9uQWx0ZXJuYXRpdmUoQWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgRmxvYXRS
ZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpc21pc3NBbHRlcm5hdGl2ZShSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSA9
IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0FsdGVybmF0aXZlU29vbihSZWFzb25Gb3JE
aXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0g
MDsKKyNlbmRpZgorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIHZpcnR1YWwg
dm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
IGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBk
aWN0YXRpb25Db250ZXh0KSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkaWN0YXRp
b25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOworI2VuZGlmCiB9
OwogICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIu
Y3BwCmluZGV4IDliOTEwNzI0YjVlN2VkZmIxMDc2OGMzZjFkNTI1Yjk1ZDgzZmQ4ZDcuLjdjZjJk
YmU1YmUyMDQ4MGEyNDVjMzEyNTliMTIwNWYyZTgyMzY4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTQ4MSw2ICs0ODEsOSBAQCB2b2lk
IENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1l
bnVJdGVtKiBpdGVtKQogICAgICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5p
bnNwZWN0KG1faGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSk7CiAgICAgICAgIGJy
ZWFrOwogI2VuZGlmCisgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5h
dGl2ZToKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseURpY3RhdGlvbkFsdGVybmF0aXZl
bHRlcm5hdGl2ZShpdGVtLT50aXRsZSgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtODk2LDUwICs4OTksNjUgQEAgdm9pZCBDb250ZXh0
TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICB9IGVsc2UgeyAvLyBNYWtlIGFuIGVkaXRp
bmcgY29udGV4dCBtZW51CiAgICAgICAgIEZyYW1lU2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBmcmFt
ZS0+c2VsZWN0aW9uKCk7CiAgICAgICAgIGJvb2wgaW5QYXNzd29yZEZpZWxkID0gc2VsZWN0aW9u
LT5pc0luUGFzc3dvcmRGaWVsZCgpOwotICAgICAgICBib29sIHNwZWxsQ2hlY2tpbmdFbmFibGVk
ID0gZnJhbWUtPmVkaXRvcigpLT5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkRm9yKG5vZGUpOwotCi0g
ICAgICAgIGlmICghaW5QYXNzd29yZEZpZWxkICYmIHNwZWxsQ2hlY2tpbmdFbmFibGVkKSB7Ci0g
ICAgICAgICAgICAvLyBDb25zaWRlciBhZGRpbmcgc3BlbGxpbmctcmVsYXRlZCBvciBncmFtbWFy
LXJlbGF0ZWQgY29udGV4dCBtZW51IGl0ZW1zIChuZXZlciBib3RoLCBzaW5jZSBhIHNpbmdsZSBz
ZWxlY3RlZCByYW5nZQotICAgICAgICAgICAgLy8gaXMgbmV2ZXIgY29uc2lkZXJlZCBhIG1pc3Nw
ZWxsaW5nIGFuZCBiYWQgZ3JhbW1hciBhdCB0aGUgc2FtZSB0aW1lKQotICAgICAgICAgICAgYm9v
bCBtaXNzcGVsbGluZzsKLSAgICAgICAgICAgIGJvb2wgYmFkR3JhbW1hcjsKLSAgICAgICAgICAg
IFZlY3RvcjxTdHJpbmc+IGd1ZXNzZXMgPSBmcmFtZS0+ZWRpdG9yKCktPmd1ZXNzZXNGb3JNaXNz
cGVsbGVkT3JVbmdyYW1tYXRpY2FsU2VsZWN0aW9uKG1pc3NwZWxsaW5nLCBiYWRHcmFtbWFyKTsK
LSAgICAgICAgICAgIGlmIChtaXNzcGVsbGluZyB8fCBiYWRHcmFtbWFyKSB7Ci0gICAgICAgICAg
ICAgICAgc2l6ZV90IHNpemUgPSBndWVzc2VzLnNpemUoKTsKLSAgICAgICAgICAgICAgICBpZiAo
c2l6ZSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYmFkIGdyYW1t
YXIgYnV0IG5vIHN1Z2dlc3Rpb25zIChlLmcuLCByZXBlYXRlZCB3b3JkKSwganVzdCBsZWF2ZSBv
ZmYgdGhlIHN1Z2dlc3Rpb25zCi0gICAgICAgICAgICAgICAgICAgIC8vIGxpc3QgYW5kIHRyYWls
aW5nIHNlcGFyYXRvciByYXRoZXIgdGhhbiBhZGRpbmcgYSAiTm8gR3Vlc3NlcyBGb3VuZCIgaXRl
bSAobWF0Y2hlcyBBcHBLaXQpCi0gICAgICAgICAgICAgICAgICAgIGlmIChtaXNzcGVsbGluZykg
ewotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShOb0d1ZXNzZXNJdGVtLCBtX2Nv
bnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgaWYgKCFpblBhc3N3b3JkRmllbGQpIHsKKyAgICAg
ICAgICAgIGJvb2wgaGF2ZUNvbnRleHRNZW51SXRlbXNGb3JNaXNzcGVsbGluZ09yR3JhbW1lciA9
IGZhbHNlOworICAgICAgICAgICAgYm9vbCBzcGVsbENoZWNraW5nRW5hYmxlZCA9IGZyYW1lLT5l
ZGl0b3IoKS0+aXNTcGVsbENoZWNraW5nRW5hYmxlZEZvcihub2RlKTsKKyAgICAgICAgICAgIGlm
IChzcGVsbENoZWNraW5nRW5hYmxlZCkgeworICAgICAgICAgICAgICAgIC8vIENvbnNpZGVyIGFk
ZGluZyBzcGVsbGluZy1yZWxhdGVkIG9yIGdyYW1tYXItcmVsYXRlZCBjb250ZXh0IG1lbnUgaXRl
bXMgKG5ldmVyIGJvdGgsIHNpbmNlIGEgc2luZ2xlIHNlbGVjdGVkIHJhbmdlCisgICAgICAgICAg
ICAgICAgLy8gaXMgbmV2ZXIgY29uc2lkZXJlZCBhIG1pc3NwZWxsaW5nIGFuZCBiYWQgZ3JhbW1h
ciBhdCB0aGUgc2FtZSB0aW1lKQorICAgICAgICAgICAgICAgIGJvb2wgbWlzc3BlbGxpbmc7Cisg
ICAgICAgICAgICAgICAgYm9vbCBiYWRHcmFtbWFyOworICAgICAgICAgICAgICAgIFZlY3RvcjxT
dHJpbmc+IGd1ZXNzZXMgPSBmcmFtZS0+ZWRpdG9yKCktPmd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JV
bmdyYW1tYXRpY2FsU2VsZWN0aW9uKG1pc3NwZWxsaW5nLCBiYWRHcmFtbWFyKTsKKyAgICAgICAg
ICAgICAgICBpZiAobWlzc3BlbGxpbmcgfHwgYmFkR3JhbW1hcikgeworICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgc2l6ZSA9IGd1ZXNzZXMuc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIXNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYmFkIGdy
YW1tYXIgYnV0IG5vIHN1Z2dlc3Rpb25zIChlLmcuLCByZXBlYXRlZCB3b3JkKSwganVzdCBsZWF2
ZSBvZmYgdGhlIHN1Z2dlc3Rpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBsaXN0IGFu
ZCB0cmFpbGluZyBzZXBhcmF0b3IgcmF0aGVyIHRoYW4gYWRkaW5nIGEgIk5vIEd1ZXNzZXMgRm91
bmQiIGl0ZW0gKG1hdGNoZXMgQXBwS2l0KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1p
c3NwZWxsaW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShOb0d1
ZXNzZXNJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkr
KykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyAmZ3Vlc3MgPSBn
dWVzc2VzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZ3Vlc3MuaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBp
dGVtKEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nR3Vlc3MsIGd1ZXNzKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShpdGVtLCBtX2NvbnRl
eHRNZW51LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBh
cmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGlmIChtaXNzcGVsbGluZykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgYXBwZW5kSXRlbShJZ25vcmVTcGVsbGluZ0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShMZWFyblNwZWxsaW5nSXRl
bSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShJZ25vcmVHcmFtbWFySXRlbSwgbV9jb250
ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRv
ckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGhhdmVD
b250ZXh0TWVudUl0ZW1zRm9yTWlzc3BlbGxpbmdPckdyYW1tZXIgPSB0cnVlOworI2lmIFBMQVRG
T1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKICAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcgJmd1ZXNz
ID0gZ3Vlc3Nlc1tpXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZ3Vlc3MuaXNFbXB0
eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0o
QWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdHdWVzcywgZ3Vlc3MpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oaXRlbSwgbV9jb250ZXh0TWVudS5n
ZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8v
IElmIHRoZSBzdHJpbmcgd2FzIGF1dG9jb3JyZWN0ZWQsIGdlbmVyYXRlIGEgY29udGV4dHVhbCBt
ZW51IGl0ZW0gYWxsb3dpbmcgaXQgdG8gYmUgY2hhbmdlZCBiYWNrLgorICAgICAgICAgICAgICAg
ICAgICBTdHJpbmcgcmVwbGFjZWRTdHJpbmcgPSBtX2hpdFRlc3RSZXN1bHQucmVwbGFjZWRTdHJp
bmcoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXBsYWNlZFN0cmluZy5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBpdGVtKEFjdGlvblR5
cGUsIENvbnRleHRNZW51SXRlbVRhZ0NoYW5nZUJhY2ssIGNvbnRleHRNZW51SXRlbVRhZ0NoYW5n
ZUJhY2socmVwbGFjZWRTdHJpbmcpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0
ZW0oaXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBh
cHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgaGF2ZUNvbnRleHRNZW51SXRlbXNGb3JNaXNzcGVsbGluZ09yR3Jh
bW1lciA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
YXBwZW5kSXRlbSgqc2VwYXJhdG9ySXRlbSgpLCBtX2NvbnRleHRNZW51LmdldCgpKTsgICAgICAg
ICAgICAgICAgICAgIAorI2VuZGlmCiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIGlmIChtaXNzcGVsbGluZykgewotICAgICAgICAgICAgICAgICAg
ICBhcHBlbmRJdGVtKElnbm9yZVNwZWxsaW5nSXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oTGVhcm5TcGVsbGluZ0l0ZW0sIG1fY29udGV4
dE1lbnUuZ2V0KCkpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAg
ICBhcHBlbmRJdGVtKElnbm9yZUdyYW1tYXJJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKLSAg
ICAgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUu
Z2V0KCkpOwotI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFS
RCkKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgdGhlIHN0cmlu
ZyB3YXMgYXV0b2NvcnJlY3RlZCwgZ2VuZXJhdGUgYSBjb250ZXh0dWFsIG1lbnUgaXRlbSBhbGxv
d2luZyBpdCB0byBiZSBjaGFuZ2VkIGJhY2suCi0gICAgICAgICAgICAgICAgU3RyaW5nIHJlcGxh
Y2VkU3RyaW5nID0gbV9oaXRUZXN0UmVzdWx0LnJlcGxhY2VkU3RyaW5nKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFyZXBsYWNlZFN0cmluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnQ2hh
bmdlQmFjaywgY29udGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFjayhyZXBsYWNlZFN0cmluZykpOwot
ICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKGl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWhhdmVDb250ZXh0TWVudUl0ZW1z
Rm9yTWlzc3BlbGxpbmdPckdyYW1tZXIpIHsKKyAgICAgICAgICAgICAgICAvLyBTcGVsbGluZyBh
bmQgZ3JhbW1hciBjaGVja2luZyBpcyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCBkaWN0YXRpb24g
YWx0ZXJuYXRpdmVzLgorICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFs
dGVybmF0aXZlcyA9IG1faGl0VGVzdFJlc3VsdC5kaWN0YXRpb25BbHRlcm5hdGl2ZXMoKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIWRpY3RhdGlvbkFsdGVybmF0aXZlcy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51
SXRlbSBpdGVtKEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0RpY3RhdGlvbkFsdGVybmF0
aXZlLCBkaWN0YXRpb25BbHRlcm5hdGl2ZXNbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kSXRlbShpdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1f
Y29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKQEAgLTEzNTIsNiArMTM3MCw3IEBAIHZvaWQgQ29udGV4dE1lbnVD
b250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBj
b25zdAogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbUN1c3RvbVRhZ05vQWN0aW9uOgogICAg
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbUxhc3RDdXN0b21UYWc6CiAgICAgICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnOgorICAgICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ0RpY3RhdGlvbkFsdGVybmF0aXZlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5UGF1c2U6CiAgICAgICAgICAgICBpZiAo
bV9oaXRUZXN0UmVzdWx0Lm1lZGlhUGxheWluZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
b250ZXh0TWVudUl0ZW0uaAppbmRleCBmOGExYTI5YWExNTZhNmJhMjc5ZjRlNzM1MWU1ZmE0MmMy
ZTUxNzdhLi42OTczNzk4NzUzYWYwMDQwNzYxMzYzNWM0MTBmMmI4ZGY5NGUzNTgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaApAQCAtMTM0LDYgKzEzNCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xl
ZnQsCiAgICAgICAgIENvbnRleHRNZW51SXRlbVRhZ1BERlNpbmdsZVBhZ2VTY3JvbGxpbmcsCiAg
ICAgICAgIENvbnRleHRNZW51SXRlbVRhZ1BERkZhY2luZ1BhZ2VzU2Nyb2xsaW5nLAorICAgICAg
ICBDb250ZXh0TWVudUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5hdGl2ZSwKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCwKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDRlM2Y2
YmRjYjI5NTAxOWI1ZTcyMGI0YzIwZTVhYzNlYjIyYTc0NzAuLjVmZmI2NTk2OWFlNmYzMmUyZDg4
Y2JjMTQyMjU0NWY2ZTEwZGRkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5jcHAKQEAgLTcxMCw0ICs3MTAsMjEgQEAgSGl0VGVzdFJlc3VsdDo6Tm9kZVNldCYg
SGl0VGVzdFJlc3VsdDo6bXV0YWJsZVJlY3RCYXNlZFRlc3RSZXN1bHQoKQogICAgIHJldHVybiAq
bV9yZWN0QmFzZWRUZXN0UmVzdWx0OwogfQogCitWZWN0b3I8U3RyaW5nPiBIaXRUZXN0UmVzdWx0
OjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMoKSBjb25zdAoreworICAgIC8vIFJldHVybiB0aGUgZGlj
dGF0aW9uIGNvbnRleHQgaGFuZGxlIGlmIHRoZSB0ZXh0IGF0IHRoaXMgcG9pbnQgaGFzIERpY3Rh
dGlvbkFsdGVybmF0aXZlIG1hcmtlciwgd2hpY2ggbWVhbnMgdGhpcyB0ZXh0IGlzCisgICAgaWYg
KCFtX2lubmVyTm9uU2hhcmVkTm9kZSkKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7
CisKKyAgICBEb2N1bWVudE1hcmtlciogbWFya2VyID0gbV9pbm5lck5vblNoYXJlZE5vZGUtPmRv
Y3VtZW50KCktPm1hcmtlcnMoKS0+bWFya2VyQ29udGFpbmluZ1BvaW50KGhpdFRlc3RQb2ludCgp
LnBvaW50KCksIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgIGlm
ICghbWFya2VyKQorICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKworICAgIEZyYW1l
KiBmcmFtZSA9IGlubmVyTm9uU2hhcmVkTm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAg
IGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworCisgICAgcmV0
dXJuIGZyYW1lLT5lZGl0b3IoKS0+ZGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKG1hcmtl
cik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5oCmluZGV4IGExOGZkYjVhMjU1OGU5ZWI4YzVmNTVkOTNkMTZmZGFiZWJh
MTQ0OGUuLjE5ZGRiZDFhYzJjN2ZlOGI3MDEyNGUyMGMwY2Q5MWY0OGE2YWIyMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtMTU3LDYgKzE1Nyw4IEBAIHB1
YmxpYzoKICAgICAvLyB0aGUgc2FtZSB0aGluZyBhcyBtdXRhYmxlUmVjdEJhc2VkVGVzdFJlc3Vs
dCgpLCBidXQgaGVyZSB0aGUgcmV0dXJuIHZhbHVlIGlzIGNvbnN0LgogICAgIGNvbnN0IE5vZGVT
ZXQmIHJlY3RCYXNlZFRlc3RSZXN1bHQoKSBjb25zdDsKIAorICAgIFZlY3RvcjxTdHJpbmc+IGRp
Y3RhdGlvbkFsdGVybmF0aXZlcygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIE5vZGVTZXQmIG11
dGFibGVSZWN0QmFzZWRUZXN0UmVzdWx0KCk7IC8vIFNlZSBhYm92ZS4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDExYjcwNTU5ZGE2MzQzNDc0ZDc1
MGMyZWE0N2E2MDU5ZWY1YTZkNjYuLjllNzMxZDYzODZkYzdhM2IzOTFjZjI4OTQ0MzNiMDhiZDNj
Y2FiMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAg
LTEwMzAsNyArMTAzMCw4IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1hcmtl
cihHcmFwaGljc0NvbnRleHQqIHB0LCBjb25zdCBGbG9hdFBvaW50JiBiCiAgICAgaWYgKG1fdHJ1
bmNhdGlvbiAhPSBjTm9UcnVuY2F0aW9uKQogICAgICAgICBtYXJrZXJTcGFuc1dob2xlQm94ID0g
ZmFsc2U7CiAKLSAgICBpZiAoIW1hcmtlclNwYW5zV2hvbGVCb3ggfHwgZ3JhbW1hcikgeworICAg
IGJvb2wgaXNEaWN0YXRpb25NYXJrZXIgPSBtYXJrZXItPnR5cGUoKSA9PSBEb2N1bWVudE1hcmtl
cjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzOworICAgIGlmICghbWFya2VyU3BhbnNXaG9sZUJveCB8
fCBncmFtbWFyIHx8IGlzRGljdGF0aW9uTWFya2VyKSB7CiAgICAgICAgIGludCBzdGFydFBvc2l0
aW9uID0gbWF4PGludD4obWFya2VyLT5zdGFydE9mZnNldCgpIC0gbV9zdGFydCwgMCk7CiAgICAg
ICAgIGludCBlbmRQb3NpdGlvbiA9IG1pbjxpbnQ+KG1hcmtlci0+ZW5kT2Zmc2V0KCkgLSBtX3N0
YXJ0LCBtX2xlbik7CiAgICAgICAgIApAQCAtMTA1MCw3ICsxMDUxLDcgQEAgdm9pZCBJbmxpbmVU
ZXh0Qm94OjpwYWludERvY3VtZW50TWFya2VyKEdyYXBoaWNzQ29udGV4dCogcHQsIGNvbnN0IEZs
b2F0UG9pbnQmIGIKICAgICAgICAgCiAgICAgICAgIC8vIFN0b3JlIHJlbmRlcmVkIHJlY3RzIGZv
ciBiYWQgZ3JhbW1hciBtYXJrZXJzLCBzbyB3ZSBjYW4gaGl0LXRlc3QgYWdhaW5zdCBpdCBlbHNl
d2hlcmUgaW4gb3JkZXIgdG8KICAgICAgICAgLy8gZGlzcGxheSBhIHRvb2xUaXAuIFdlIGRvbid0
IGRvIHRoaXMgZm9yIG1pc3NwZWxsaW5nIG1hcmtlcnMuCi0gICAgICAgIGlmIChncmFtbWFyKSB7
CisgICAgICAgIGlmIChncmFtbWFyIHx8IGlzRGljdGF0aW9uTWFya2VyKSB7CiAgICAgICAgICAg
ICBtYXJrZXJSZWN0Lm1vdmUoLWJveE9yaWdpbi54KCksIC1ib3hPcmlnaW4ueSgpKTsKICAgICAg
ICAgICAgIG1hcmtlclJlY3QgPSByZW5kZXJlcigpLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0
UmVjdChtYXJrZXJSZWN0KSkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKICAgICAgICAgICAgIHRv
UmVuZGVyZWREb2N1bWVudE1hcmtlcihtYXJrZXIpLT5zZXRSZW5kZXJlZFJlY3QobWFya2VyUmVj
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0
aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9u
UGFuZWwubW0KaW5kZXggNjU4M2NlZTY2MjExMTA3NmMxZTAyNDcyNmVlY2JiMGE4ZjU0MDc5MC4u
NzcxOTEwYjRiYzUwMWU0ODM4MGNkYjgzZTAzYmY2ZTIzZjUxYWNjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbQpAQCAtMjUs
NyArMjUsNiBAQAogI2ltcG9ydCAiQ29ycmVjdGlvblBhbmVsLmgiCiAKICNpbXBvcnQgIldlYlZp
ZXdJbnRlcm5hbC5oIgotI2ltcG9ydCAiV2ViVmlld1ByaXZhdGUuaCIKIAogI2lmIFVTRShBVVRP
Q09SUkVDVElPTl9QQU5FTCkKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMzksNiArMzgs
OSBAQCBzdGF0aWMgaW5saW5lIE5TQ29ycmVjdGlvbkluZGljYXRvclR5cGUgY29ycmVjdGlvbklu
ZGljYXRvclR5cGUoQWx0ZXJuYXRpdmVUZXh0VAogICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9u
SW5kaWNhdG9yVHlwZVJldmVyc2lvbjsKICAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5cGVTcGVs
bGluZ1N1Z2dlc3Rpb25zOgogICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uSW5kaWNhdG9yVHlw
ZUd1ZXNzZXM7CisgICAgY2FzZSBBbHRlcm5hdGl2ZVRleHRUeXBlRGljdGF0aW9uQWx0ZXJuYXRp
dmVzOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBOU0NvcnJlY3Rpb25JbmRp
Y2F0b3JUeXBlRGVmYXVsdDsKQEAgLTEzMSw3ICsxMzMsNyBAQCB2b2lkIENvcnJlY3Rpb25QYW5l
bDo6aGFuZGxlQWNjZXB0ZWRSZXBsYWNlbWVudChOU1N0cmluZyogYWNjZXB0ZWRSZXBsYWNlbWVu
dCwgTgogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAgW21fdmlldy5nZXQoKSBoYW5k
bGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQ6YWNjZXB0ZWRSZXBsYWNlbWVudF07CisgICAgW21fdmll
dy5nZXQoKSBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDphY2NlcHRlZFJlcGxhY2VtZW50
XTsKICAgICBtX3ZpZXcuY2xlYXIoKTsKICAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVudCkKICAg
ICAgICAgbV9yZXN1bHRGb3JEaXNtaXNzYWwuYWRvcHROUyhbYWNjZXB0ZWRSZXBsYWNlbWVudCBj
b3B5XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCmluZGV4IDVlNjZhY2FmN2I3MWFlNzRlY2ZkZDJi
NGU3MjFkOTNmZDhjY2ZjN2QuLmJjNGVjNDcyMzg1ZDU2NjNhMGUwNmI2YThkZjU0YTg1Yzk2ZmNk
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCkBAIC0zNywxMCArMzcsMTggQEAgcHVibGljOgog
ICAgIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudChXZWJWaWV3ICopOwogICAgIHZpcnR1YWwgfldl
YkFsdGVybmF0aXZlVGV4dENsaWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVk
KCkgT1ZFUlJJREU7CisjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogICAgIHZpcnR1YWwg
dm9pZCBzaG93Q29ycmVjdGlvbkFsdGVybmF0aXZlKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFR5
cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmlu
Z3MpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmUoV2ViQ29y
ZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBTdHJpbmcgZGlzbWlzc0FsdGVybmF0aXZlU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNt
aXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZShXZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlw
ZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVu
dFN0cmluZykgT1ZFUlJJREU7CisjZW5kaWYKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZF
UykKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0
YXRpb25Db250ZXh0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0RpY3RhdGlv
bkFsdGVybmF0aXZlVUkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGljdGF0
aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRp
Y3RhdGlvbkNvbnRleHQpIE9WRVJSSURFOworI2VuZGlmCiBwcml2YXRlOgogICAgIFdlYlZpZXcq
IG1fd2ViVmlldzsKICNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQubW0KaW5kZXggZjFhNzBmYzU0M2M2YzVjN2E4MjExZTU3YzUwOWE5OGJiMDBmZmRjZi4u
NGQ3ODlkM2MwZDg4OWIwY2E2OGRmYTFhMjllNTU1ZjAzNDBmYWI3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4
dENsaWVudC5tbQpAQCAtMjUsNiArMjUsOCBAQAogCiAjaW5jbHVkZSAiV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50LmgiCiAKKyNpbmNsdWRlICJXZWJWaWV3SW50ZXJuYWwuaCIKKwogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6V2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCkBAIC00NCwzMyArNDYsNDcgQEAgdm9pZCBX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnBhZ2VEZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0aGlz
OwogfQogCisjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogdm9pZCBXZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQ6OnNob3dDb3JyZWN0aW9uQWx0ZXJuYXRpdmUoQWx0ZXJuYXRpdmVUZXh0VHlw
ZSB0eXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmlu
ZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQog
ewotI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICBtX2NvcnJlY3Rpb25QYW5lbC5z
aG93KG1fd2ViVmlldywgdHlwZSwgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCByZXBsYWNl
ZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcsIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdz
KTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlzc0Fs
dGVybmF0aXZlKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQgcmVhc29uKQogewot
I2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICBtX2NvcnJlY3Rpb25QYW5lbC5kaXNt
aXNzKHJlYXNvbik7Ci0jZW5kaWYKIH0KIAogU3RyaW5nIFdlYkFsdGVybmF0aXZlVGV4dENsaWVu
dDo6ZGlzbWlzc0FsdGVybmF0aXZlU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVU
ZXh0IHJlYXNvbikKIHsKLSNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgcmV0dXJu
IG1fY29ycmVjdGlvblBhbmVsLmRpc21pc3MocmVhc29uKTsKLSNlbHNlCi1yZXR1cm4gU3RyaW5n
KCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVzcG9uc2VU
eXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vt
ZW50U3RyaW5nKQogewotI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICBOU0NvcnJl
Y3Rpb25SZXNwb25zZSByZXNwb25zZSA9IHJlc3BvbnNlVHlwZSA9PSBBdXRvY29ycmVjdGlvblJl
dmVydGVkID8gTlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZCA6IE5TQ29ycmVjdGlvblJlc3Bv
bnNlRWRpdGVkOwotQ29ycmVjdGlvblBhbmVsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNl
KG1fd2ViVmlldywgcmVzcG9uc2UsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7
CisgICAgQ29ycmVjdGlvblBhbmVsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKG1fd2Vi
VmlldywgcmVzcG9uc2UsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7Cit9CiAj
ZW5kaWYKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQordm9pZCBXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQ6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0
YXRpb25Db250ZXh0KQoreworICAgIFttX3dlYlZpZXcgX3JlbW92ZURpY3RhdGlvbkFsdGVybmF0
aXZlczpkaWN0YXRpb25Db250ZXh0XTsKK30KKwordm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQ6OnNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
Ym91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sK
KyAgICBbbV93ZWJWaWV3IF9zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSTpib3VuZGluZ0JveE9m
RGljdGF0ZWRUZXh0IGZvckRpY3RhdGlvbkNvbnRleHQ6ZGljdGF0aW9uQ29udGV4dF07CiB9CisK
K3ZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRp
dmVVSSgpCit7CisgICAgW21fd2ViVmlldyBfZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUld
OworfQorCitWZWN0b3I8U3RyaW5nPiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpY3RhdGlv
bkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIHJldHVybiBb
bV93ZWJWaWV3IF9kaWN0YXRpb25BbHRlcm5hdGl2ZXM6ZGljdGF0aW9uQ29udGV4dF07Cit9Cisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDE3ZDMw
OTNjZDBiZWNlZDNhNzJmNzk1YTRlY2VkZDlhYTZmMDdlYTguLmM0MzFmOWIwMjNmZTg1NTZhMDY4
NDZlN2ZiNDcwMjcyOTNhMDVlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQpAQCAtMTEzLDYgKzExMyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NpbXBsZUZvbnRE
YXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydHlTZXQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGV4dC5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2Uu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViRm9udENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYk5TQXR0cmlidXRlZFN0cmlu
Z0V4dHJhcy5oPgpAQCAtNTYwMyw3ICs1NjA0LDExIEBAIHN0YXRpYyBDR1BvaW50IGNvcmVHcmFw
aGljc1NjcmVlblBvaW50Rm9yQXBwS2l0U2NyZWVuUG9pbnQoTlNQb2ludCBwb2ludCkKICAgICBp
ZiAoIXZhbGlkQXR0cmlidXRlcykgewogICAgICAgICB2YWxpZEF0dHJpYnV0ZXMgPSBbW05TQXJy
YXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czoKICAgICAgICAgICAgIE5TVW5kZXJsaW5lU3R5bGVB
dHRyaWJ1dGVOYW1lLCBOU1VuZGVybGluZUNvbG9yQXR0cmlidXRlTmFtZSwKLSAgICAgICAgICAg
IE5TTWFya2VkQ2xhdXNlU2VnbWVudEF0dHJpYnV0ZU5hbWUsIE5TVGV4dElucHV0UmVwbGFjZW1l
bnRSYW5nZUF0dHJpYnV0ZU5hbWUsIG5pbF07CisgICAgICAgICAgICBOU01hcmtlZENsYXVzZVNl
Z21lbnRBdHRyaWJ1dGVOYW1lLCBOU1RleHRJbnB1dFJlcGxhY2VtZW50UmFuZ2VBdHRyaWJ1dGVO
YW1lLAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTlNUZXh0QWx0ZXJuYXRpdmVzQXR0cmlidXRlTmFtZSwKKyNlbmRpZgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmlsXTsKICAgICAgICAgLy8gTlNUZXh0IGFsc28gc3VwcG9y
dHMgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzLCBidXQgaXQncwogICAgICAgICAvLyBoYXJkIHRv
IHRlbGwgd2hpY2ggYXJlIHJlYWxseSByZXF1aXJlZCBmb3IgdGV4dCBpbnB1dCB0bwogICAgICAg
ICAvLyB3b3JrIHdlbGw7IEkgaGF2ZSBub3Qgc2VlbiBhbnkgaW5wdXQgbWV0aG9kIG1ha2UgdXNl
IG9mIHRoZW0geWV0LgpAQCAtNTkyMyw3ICs1OTI4LDE0IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RV
bmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25V
bmRlCiAgICAgTlNSYW5nZSByZXBsYWNlbWVudFJhbmdlID0geyBOU05vdEZvdW5kLCAwIH07CiAg
ICAgYm9vbCBpc0Zyb21JbnB1dE1ldGhvZCA9IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRv
cigpLT5oYXNDb21wb3NpdGlvbigpOwogCisgICAgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZl
PiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9uczsKICAgICBpZiAoaXNBdHRyaWJ1dGVkU3Ry
aW5nKSB7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgICAgIFZlY3RvcjxX
ZWJDb3JlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+IHRleHRBbHRlcm5hdGl2ZXM7CisgICAg
ICAgIGNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzKHN0cmluZywgdGV4dEFsdGVybmF0
aXZlcyk7CisgICAgICAgIGlmICghdGV4dEFsdGVybmF0aXZlcy5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBbW3NlbGYgX3dlYlZpZXddIF9nZXRXZWJDb3JlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOmRp
Y3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zIGZyb21UZXh0QWx0ZXJuYXRpdmVzOnRleHRBbHRl
cm5hdGl2ZXNdOworI2VuZGlmCiAgICAgICAgIC8vIEZJWE1FOiBXZSBpZ25vcmUgbW9zdCBhdHRy
aWJ1dGVzIGZyb20gdGhlIHN0cmluZywgc28gZm9yIGV4YW1wbGUgaW5zZXJ0aW5nIGZyb20gQ2hh
cmFjdGVyIFBhbGV0dGUgbG9zZXMgZm9udCBhbmQgZ2x5cGggdmFyaWF0aW9uIGRhdGEuCiAgICAg
ICAgIC8vIEl0IGRvZXMgbm90IGxvb2sgbGlrZSBhbnkgaW5wdXQgbWV0aG9kcyBldmVyIHVzZSBp
bnNlcnRUZXh0OiB3aXRoIGF0dHJpYnV0ZXMgb3RoZXIgdGhhbiBOU1RleHRJbnB1dFJlcGxhY2Vt
ZW50UmFuZ2VBdHRyaWJ1dGVOYW1lLgogICAgICAgICB0ZXh0ID0gW3N0cmluZyBzdHJpbmddOwpA
QCAtNTk2Miw3ICs1OTc0LDExIEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0
cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAgICAgaWYgKCFj
b3JlRnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKSB7CiAgICAgICAgIC8vIEFuIGlu
c2VydFRleHQ6IG1pZ2h0IGJlIGhhbmRsZWQgYnkgb3RoZXIgcmVzcG9uZGVycyBpbiB0aGUgY2hh
aW4gaWYgd2UgZG9uJ3QgaGFuZGxlIGl0LgogICAgICAgICAvLyBPbmUgZXhhbXBsZSBpcyBzcGFj
ZSBiYXIgdGhhdCByZXN1bHRzIGluIHNjcm9sbGluZyBkb3duIHRoZSBwYWdlLgotICAgICAgICBl
dmVudEhhbmRsZWQgPSBjb3JlRnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGV2ZW50VGV4dCwg
ZXZlbnQpOworCisgICAgICAgIGlmICghZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMuaXNF
bXB0eSgpKQorICAgICAgICAgICAgZXZlbnRIYW5kbGVkID0gY29yZUZyYW1lLT5lZGl0b3IoKS0+
aW5zZXJ0RGljdGF0ZWRUZXh0KGV2ZW50VGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlv
bnMsIGV2ZW50KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXZlbnRIYW5kbGVkID0gY29y
ZUZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChldmVudFRleHQsIGV2ZW50KTsKICAgICB9IGVs
c2UgewogICAgICAgICBldmVudEhhbmRsZWQgPSB0cnVlOwogICAgICAgICBjb3JlRnJhbWUtPmVk
aXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oZXZlbnRUZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQppbmRleCBjOTM4MjNhMzk0MGNhODY2ZmRhYzY2ZTlkMDU4MWFkZmU2NzBm
ZTQzLi4xNTExMDk0NWUyNDU5OGM1YmEzYTEyZGU3ZjM2ZWUzZjY3Mzk3OWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xMTEsNiArMTExLDcgQEAKICNpbXBvcnQgPEph
dmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWVS
ZWYuaD4KICNpbXBvcnQgPFdlYkNvcmUvQWJzdHJhY3REYXRhYmFzZS5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQmFja0ZvcndhcmRMaXN0
SW1wbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZW1vcnlDYWNoZS5oPgpAQCAtNTUzNiwxNiArNTUz
Nyw2IEBAIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm9tSlNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUganNWYWx1CiAKICNlbmRpZgogCi0jaWYgIWRlZmluZWQo
QlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJE
KQotLSAodm9pZCloYW5kbGVDb3JyZWN0aW9uUGFuZWxSZXN1bHQ6KE5TU3RyaW5nKilyZXN1bHQK
LXsKLSAgICBXZWJGcmFtZSAqd2ViRnJhbWUgPSBbc2VsZiBfc2VsZWN0ZWRPck1haW5GcmFtZV07
Ci0gICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUod2ViRnJhbWUpOwotICAgIGlmIChjb3JlRnJh
bWUpCi0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJ
UmVzdWx0KHJlc3VsdCk7Ci19Ci0jZW5kaWYKLQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2Vi
VmlldyAoV2ViVmlld1VuZG9hYmxlRWRpdGluZykKQEAgLTY0MTAsNiArNjQwMSw1MCBAQCBzdGF0
aWMgdm9pZCBnbGliQ29udGV4dEl0ZXJhdGlvbkNhbGxiYWNrKENGUnVuTG9vcE9ic2VydmVyUmVm
LCBDRlJ1bkxvb3BBY3Rpdml0eQogfQogI2VuZGlmCiAKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05f
UEFORUwpCistICh2b2lkKWhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0OihOU1N0cmluZyop
dGV4dAoreworICAgIFdlYkZyYW1lICp3ZWJGcmFtZSA9IFtzZWxmIF9zZWxlY3RlZE9yTWFpbkZy
YW1lXTsKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh3ZWJGcmFtZSk7CisgICAgaWYgKGNv
cmVGcmFtZSkKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+aGFuZGxlQWx0ZXJuYXRpdmVU
ZXh0VUlSZXN1bHQodGV4dCk7Cit9CisjZW5kaWYKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJO
QVRJVkVTKQorLSAodm9pZClfZ2V0V2ViQ29yZURpY3RhdGlvbkFsdGVybmF0aXZlczooVmVjdG9y
PERpY3RhdGlvbkFsdGVybmF0aXZlPiYpYWx0ZXJuYXRpdmVzIGZyb21UZXh0QWx0ZXJuYXRpdmVz
Oihjb25zdCBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYpYWx0ZXJuYXRpdmVzV2l0
aFJhbmdlCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbHRlcm5hdGl2ZXNXaXRoUmFu
Z2Uuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdl
JiBhbHRlcm5hdGl2ZVdpdGhSYW5nZSA9IGFsdGVybmF0aXZlc1dpdGhSYW5nZVtpXTsKKyAgICAg
ICAgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCA9IF9wcml2YXRlLT5tX2FsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlci0+YWRkQWx0ZXJuYXRpdmVzKGFsdGVybmF0aXZlV2l0aFJhbmdlLmFsdGVy
bmF0aXZlcyk7CisgICAgICAgIGlmIChkaWN0YXRpb25Db250ZXh0KQorICAgICAgICAgICAgYWx0
ZXJuYXRpdmVzLmFwcGVuZChEaWN0YXRpb25BbHRlcm5hdGl2ZShhbHRlcm5hdGl2ZVdpdGhSYW5n
ZS5yYW5nZS5sb2NhdGlvbiwgYWx0ZXJuYXRpdmVXaXRoUmFuZ2UucmFuZ2UubGVuZ3RoLCBkaWN0
YXRpb25Db250ZXh0KSk7CisgICAgfQorfQorCistICh2b2lkKV9zaG93RGljdGF0aW9uQWx0ZXJu
YXRpdmVVSTooY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jilib3VuZGluZ0JveE9mRGljdGF0ZWRU
ZXh0IGZvckRpY3RhdGlvbkNvbnRleHQ6KHVpbnQ2NF90KWRpY3RhdGlvbkNvbnRleHQKK3sKKyAg
ICBfcHJpdmF0ZS0+bV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPnNob3dBbHRlcm5hdGl2
ZXMoc2VsZiwgW3NlbGYgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3OmJvdW5kaW5nQm94T2ZEaWN0
YXRlZFRleHRdLCBkaWN0YXRpb25Db250ZXh0LCBeKE5TU3RyaW5nKiBhY2NlcHRlZEFsdGVybmF0
aXZlKSB7CisgICAgICAgIFtzZWxmIGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0OmFjY2Vw
dGVkQWx0ZXJuYXRpdmVdOworICAgIH0pOworfQorCistICh2b2lkKV9kaXNtaXNzRGljdGF0aW9u
QWx0ZXJuYXRpdmVVSQoreworICAgIF9wcml2YXRlLT5tX2FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci0+ZGlzbWlzc0FsdGVybmF0aXZlcygpOworfQorCistICh2b2lkKV9yZW1vdmVEaWN0YXRp
b25BbHRlcm5hdGl2ZXM6KHVpbnQ2NF90KWRpY3RhdGlvbkNvbnRleHQKK3sKKyAgICBfcHJpdmF0
ZS0+bV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPnJlbW92ZUFsdGVybmF0aXZlcyhkaWN0
YXRpb25Db250ZXh0KTsKK30KKworLSAoVmVjdG9yPFN0cmluZz4pX2RpY3RhdGlvbkFsdGVybmF0
aXZlczoodWludDY0X3QpZGljdGF0aW9uQ29udGV4dAoreworICAgIHJldHVybiBfcHJpdmF0ZS0+
bV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmFsdGVybmF0aXZlc0ZvckNvbnRleHQoZGlj
dGF0aW9uQ29udGV4dCk7Cit9CisjZW5kaWYKKwogLSAoTlNQb2ludClfY29udmVydFBvaW50RnJv
bVJvb3RWaWV3OihOU1BvaW50KXBvaW50CiB7CiAgICAgcmV0dXJuIE5TTWFrZVBvaW50KHBvaW50
LngsIFtzZWxmIGJvdW5kc10uc2l6ZS5oZWlnaHQgLSBwb2ludC55KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaCBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlld0RhdGEuaAppbmRleCBlYTJiZmNmNjA3NGU5YTUxMWMzYzNlYWUyZGI0
ZmY1ZTVlYzNjNGY2Li4yYWQ0MjAwZDc0NDVhOGY4ZmU0ZDkwZTIwMjFhYThhMTY3OGQwMjM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkRlbGVnYXRlSW1w
bGVtZW50YXRpb25DYWNoaW5nLmgiCisjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENs
aWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9MYXllckZsdXNoU2NoZWR1bGVyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0xheWVyRmx1c2hTY2hlZHVsZXJDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UGxhdGZvcm1TdHJpbmcuaD4KQEAgLTM4LDggKzM5LDkgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEhpc3RvcnlJdGVtOwotICAg
IGNsYXNzIFBhZ2U7CitjbGFzcyBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI7CitjbGFzcyBI
aXN0b3J5SXRlbTsKK2NsYXNzIFBhZ2U7CiB9CiAKIEBjbGFzcyBXZWJJbnNwZWN0b3I7CkBAIC0y
MDAsNSArMjAyLDkgQEAgcHJpdmF0ZToKICAgICBpbnQgdmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1h
Z25pZmljYXRpb247CiAKICAgICBmbG9hdCBjdXN0b21EZXZpY2VTY2FsZUZhY3RvcjsKKworI2lm
IFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIE93blB0cjxXZWJDb3JlOjpBbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXI+IG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOworI2Vu
ZGlmCiB9CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdEYXRhLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQppbmRl
eCAwYjgxMTdhMDk3MDZkNWI2ZWM0ZTY0NTdjMzM5OGU0NzYyNmM1OGJhLi5lMjc2NmYwMWEzNWJj
MDdlZWFhNDg2YzI2NTViNGMwMWJhZWQ5N2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld0RhdGEubW0KQEAgLTMxLDYgKzMxLDcgQEAKIAogI2ltcG9ydCAiV2ViS2l0TG9nZ2lu
Zy5oIgogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgiCisjaW1wb3J0IDxXZWJD
b3JlL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJD
b3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9SdW5Mb29wLmg+CkBAIC0xMDAsNiArMTAxLDEwIEBAIExheWVyRmx1c2hDb250
cm9sbGVyOjpMYXllckZsdXNoQ29udHJvbGxlcihXZWJWaWV3KiB3ZWJWaWV3KQogCiAgICAgcGx1
Z2luRGF0YWJhc2VDbGllbnRDb3VudCsrOwogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElW
RVMpCisgICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgV2Vi
Q29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKTsKKyNlbmRpZgorCiAgICAgcmV0dXJu
IHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5o
CmluZGV4IDAyY2M1NTAxMDZiMDQ0ZmJjMTc3YzlmNTlhMWY4M2Y1OTBkZTUwYjAuLmMwNTI1NzQy
ZWMzYmJiY2ZhYzkzYmM4YzA5ODBhNmViOTA3OWY2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtMzQsMjAgKzM0LDI2IEBACiAjaW1wb3J0ICJX
ZWJUeXBlc0ludGVybmFsLmgiCiAKICNpZmRlZiBfX2NwbHVzcGx1cworI2ltcG9ydCA8V2ViQ29y
ZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmluZE9wdGlvbnMu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1RleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlS2V5Ym9hcmRV
SU1vZGUuaD4KIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgRWxlbWVudDsKLSAgICBj
bGFzcyBGcmFtZTsKLSAgICBjbGFzcyBIaXN0b3J5SXRlbTsKLSAgICBjbGFzcyBLVVJMOwotICAg
IGNsYXNzIEtleWJvYXJkRXZlbnQ7Ci0gICAgY2xhc3MgUGFnZTsKLSAgICBjbGFzcyBSZW5kZXJC
b3g7Ci0gICAgY2xhc3MgTm9kZTsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBFdmVudDsKK2NsYXNz
IEZyYW1lOworY2xhc3MgSGlzdG9yeUl0ZW07CitjbGFzcyBLVVJMOworY2xhc3MgS2V5Ym9hcmRF
dmVudDsKK2NsYXNzIFBhZ2U7CitjbGFzcyBSZW5kZXJCb3g7CitjbGFzcyBOb2RlOworc3RydWN0
IERpY3RhdGlvbkFsdGVybmF0aXZlOwogfQogI2VuZGlmCiAKQEAgLTU5LDYgKzY1LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2Vi
RmluZE9wdGlvbnMgb3B0aW9ucyk7CiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykK
K09CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOworI2VuZGlmCisKIEBpbnRlcmZhY2UgV2Vi
VmlldyAoV2ViVmlld0VkaXRpbmdFeHRyYXMpCiAtIChCT09MKV9zaG91bGRDaGFuZ2VTZWxlY3Rl
ZERPTVJhbmdlOihET01SYW5nZSAqKWN1cnJlbnRSYW5nZSB0b0RPTVJhbmdlOihET01SYW5nZSAq
KXByb3Bvc2VkUmFuZ2UgYWZmaW5pdHk6KE5TU2VsZWN0aW9uQWZmaW5pdHkpc2VsZWN0aW9uQWZm
aW5pdHkgc3RpbGxTZWxlY3Rpbmc6KEJPT0wpZmxhZzsKIEBlbmQKQEAgLTk1LDYgKzEwNSwxOCBA
QCBXZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyBvcHRpb25z
KTsKIC0gKHZvaWQpX3NjaGVkdWxlR2xpYkNvbnRleHRJdGVyYXRpb25zOwogI2VuZGlmCiAKKyNp
ZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCistICh2b2lkKWhhbmRsZUFjY2VwdGVkQWx0ZXJu
YXRpdmVUZXh0OihOU1N0cmluZyopdGV4dDsKKyNlbmRpZgorCisjaWYgVVNFKERJQ1RBVElPTl9B
TFRFUk5BVElWRVMpCistICh2b2lkKV9nZXRXZWJDb3JlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOihW
ZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JilhbHRlcm5hdGl2ZXMgZnJvbVRl
eHRBbHRlcm5hdGl2ZXM6KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0QWx0ZXJuYXRpdmVXaXRo
UmFuZ2U+JilhbHRlcm5hdGl2ZXNXaXRoUmFuZ2U7CistICh2b2lkKV9zaG93RGljdGF0aW9uQWx0
ZXJuYXRpdmVVSTooY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jilib3VuZGluZ0JveE9mRGljdGF0
ZWRUZXh0IGZvckRpY3RhdGlvbkNvbnRleHQ6KHVpbnQ2NF90KWRpY3RhdGlvbkNvbnRleHQ7Cist
ICh2b2lkKV9kaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSTsKKy0gKHZvaWQpX3JlbW92ZURp
Y3RhdGlvbkFsdGVybmF0aXZlczoodWludDY0X3QpZGljdGF0aW9uQ29udGV4dDsKKy0gKFZlY3Rv
cjxTdHJpbmc+KV9kaWN0YXRpb25BbHRlcm5hdGl2ZXM6KHVpbnQ2NF90KWRpY3RhdGlvbkNvbnRl
eHQ7CisjZW5kaWYKKwogQGVuZAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld1ByaXZhdGUuaAppbmRleCAwMmY3YmNjNDU2N2Q3NjVjN2JkM2E0MzRmMjU3MjZhNjEw
M2UzMTMwLi44Mjg5YjEyYzE4OGJlZGFmMDUxMDQ2ZmE2ODIyMjc1MmVlOThkZDVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCkBAIC02ODcsOSArNjg3LDYg
QEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAtICh2b2lkKXNldEF1dG9tYXRp
Y1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ6KEJPT0wpZmxhZzsKIC0gKHZvaWQpdG9nZ2xlQXV0
b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uOihpZClzZW5kZXI7CiAjZW5kaWYKLSNpZiAhZGVmaW5l
ZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BB
UkQpCi0tICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDooTlNTdHJpbmcqKXJlc3Vs
dDsKLSNlbmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdFZGl0aW5nSW5N
YWlsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1l
bnVJdGVtVHlwZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51
SXRlbVR5cGVzLmgKaW5kZXggYTM1MzZkOTZkN2YzZjkyY2MzZjk0ODBjMmY5ZTMwNzIxOTUxZDAz
OS4uYjMyNjc5NGRlODcwOWM0N2UyOGRkODgxN2UzNDk1MzExZThmODJkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtVHlwZXMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oCkBA
IC04OCw2ICs4OCw3IEBAIGVudW0gewogICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9M
ZWZ0LAogICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ1BERlNpbmdsZVBhZ2VTY3JvbGxpbmcsCiAg
ICAga1dLQ29udGV4dE1lbnVJdGVtVGFnUERGRmFjaW5nUGFnZXNTY3JvbGxpbmcsCisgICAga1dL
Q29udGV4dE1lbnVJdGVtVGFnRGljdGF0aW9uQWx0ZXJuYXRpdmUsCiAgICAga1dLQ29udGV4dE1l
bnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQsCiAgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnVGV4dERp
cmVjdGlvbk1lbnUsCiAgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkRlZmF1
bHQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElD
YXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKaW5k
ZXggNWU0YmY2OWZmYjY3MmRlOWNlNmRlNGRhMDYyZTg4MzdkZjFlYzIxYi4uZmQxYTg5Njc1YTZk
MDNiMTlkNDhlYWRjNWY5NzVkOTExMjk2YzM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaApAQCAtNDE0LDYgKzQxNCw4IEBAIGlubGluZSBXS0Nv
bnRleHRNZW51SXRlbVRhZyB0b0FQSShXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24p
CiAgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdQREZTaW5nbGVQYWdlU2Nyb2xs
aW5nOwogICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnUERGRmFjaW5nUGFnZXNT
Y3JvbGxpbmc6CiAgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdQREZGYWNpbmdQ
YWdlc1Njcm9sbGluZzsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0RpY3Rh
dGlvbkFsdGVybmF0aXZlOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnRGlj
dGF0aW9uQWx0ZXJuYXRpdmU7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBjYXNlIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50OgogICAgICAgICByZXR1cm4ga1dL
Q29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQ7CkBAIC01OTIsNiArNTk0LDggQEAgaW5s
aW5lIFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIHRvSW1wbChXS0NvbnRleHRNZW51SXRlbVRh
ZyB0YWcpCiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdQREZTaW5n
bGVQYWdlU2Nyb2xsaW5nOwogICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnUERGRmFjaW5n
UGFnZXNTY3JvbGxpbmc6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
YWdQREZGYWNpbmdQYWdlc1Njcm9sbGluZzsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRh
Z0RpY3RhdGlvbkFsdGVybmF0aXZlOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnRGljdGF0aW9uQWx0ZXJuYXRpdmU7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAg
ICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50OgogICAgICAgICByZXR1
cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDNjYjU3YjAx
MzMyZGZkOWQxY2EzNDQxZmQ2ZWQ1M2I4ODJlNmM3NWUuLjU0MmZkM2ZmOGM3MjQ5MDBmMWZmNjc3
M2Y4YjVlYzY0ZTUzZmQ5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9D
cmVkZW50aWFsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0RhdGFiYXNlRGV0YWlscy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJu
YXRpdmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+CkBAIC01MjUs
NiArNTI2LDI0IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxEYXRhYmFzZURldGFpbHM+OjpkZWNvZGUo
QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBEYXRhYmFzZURlCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT46OmVuY29kZShBcmd1
bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IERpY3RhdGlvbkFsdGVybmF0aXZlJiBkaWN0YXRp
b25BbHRlcm5hdGl2ZSkKK3sKKyAgICBlbmNvZGVyLT5lbmNvZGUoZGljdGF0aW9uQWx0ZXJuYXRp
dmUucmFuZ2VTdGFydCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGRpY3RhdGlvbkFsdGVybmF0aXZl
LnJhbmdlTGVuZ3RoKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoZGljdGF0aW9uQWx0ZXJuYXRpdmUu
ZGljdGF0aW9uQ29udGV4dCk7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxEaWN0YXRpb25BbHRl
cm5hdGl2ZT46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIERpY3RhdGlvbkFsdGVy
bmF0aXZlJiBkaWN0YXRpb25BbHRlcm5hdGl2ZSkKK3sKKyAgICBpZiAoIWRlY29kZXItPmRlY29k
ZShkaWN0YXRpb25BbHRlcm5hdGl2ZS5yYW5nZVN0YXJ0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRpY3RhdGlvbkFsdGVybmF0aXZlLnJhbmdlTGVu
Z3RoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRp
Y3RhdGlvbkFsdGVybmF0aXZlLmRpY3RhdGlvbkNvbnRleHQpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIAogdm9pZCBBcmd1bWVudENvZGVyPEZpbGVDaG9v
c2VyU2V0dGluZ3M+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBGaWxl
Q2hvb3NlclNldHRpbmdzJiBzZXR0aW5ncykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAyNjk3NDA4ZWQ1NmVkNmQxMzYzZjg0M2E2MjA0
ZmI5NzQwYzY5Mjg1Li5kYjJiOGY3NDFlYzJhMzFhY2JkYzEyN2M0MTcxZjljYjM3ZDQ1OWFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC01
MCw2ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKICAgICBzdHJ1Y3QgQ29tcG9zaXRpb25V
bmRlcmxpbmU7CisgICAgc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOwogICAgIHN0cnVjdCBE
cmFnU2Vzc2lvbjsKICAgICBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5nczsKICAgICBzdHJ1Y3Qg
R3JhbW1hckRldGFpbDsKQEAgLTIwOSw2ICsyMTAsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpEYXRhYmFzZURldGFpbHM+IHsKICAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzJik7CiB9Owog
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVy
bmF0aXZlPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0
IFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlJik7Cit9Owor
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0
dGluZ3M+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3Qg
V2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOwogICAgIHN0YXRpYyBib29sIGRlY29kZShB
cmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAppbmRleCA1
MmRkMDUwYjg2MGY2ZTZkZGU5MmI5MGU4YmY4YWY0ODQxNDJmN2M0Li5hYzA3NGU4Y2M1NTcyODQ0
MTgyYWE1OTM1YzEwNDllZWY3YzdkNTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTMzLDggKzMzLDExIEBACiBAY2xhc3Mg
V0tFZGl0b3JVbmRvVGFyZ2V0T2JqQzsKIEBjbGFzcyBXS1ZpZXc7CiAKLW5hbWVzcGFjZSBXZWJL
aXQgeworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyOworfQogCituYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEZpbmRJbmRpY2F0b3JXaW5kb3c7
CiAKIGNsYXNzIFBhZ2VDbGllbnRJbXBsIDogcHVibGljIFBhZ2VDbGllbnQgewpAQCAtMTMwLDEx
ICsxMzMsMjIgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgV0tWaWV3KiB3a1ZpZXcoKSBjb25z
dCB7IHJldHVybiBtX3drVmlldzsgfQogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMp
CisgICAgdmlydHVhbCB1aW50NjRfdCBhZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoY29uc3QgUmV0
YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOworICAgIHZpcnR1
YWwgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQp
OworICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSSgpOworICAg
IHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRp
Y3RhdGlvbkNvbnRleHQpOworI2VuZGlmCisKICAgICBXS1ZpZXcqIG1fd2tWaWV3OwogICAgIFJl
dGFpblB0cjxXS0VkaXRvclVuZG9UYXJnZXRPYmpDPiBtX3VuZG9UYXJnZXQ7CiAjaWYgVVNFKEFV
VE9DT1JSRUNUSU9OX1BBTkVMKQogICAgIENvcnJlY3Rpb25QYW5lbCBtX2NvcnJlY3Rpb25QYW5l
bDsKICNlbmRpZgorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIE93blB0cjxX
ZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+IG1fYWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KaW5kZXgg
NzgzYzMyODAwOTBlOTZkY2I1NDQ5ZDVkMzMxNGE4ZDY3MmIwZjFlOS4uOGQwOTEzZTUyYzgzZmMx
NTZhNTc4OGE1MWU4NDcyZmJhNzdlZDM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAgLTI2LDYgKzI2LDkgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUGFnZUNsaWVudEltcGwuaCIKIAorI2lmIFVTRShESUNU
QVRJT05fQUxURVJOQVRJVkVTKQorI2ltcG9ydCA8QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5o
PgorI2VuZGlmCiAjaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiRGF0YVJlZmVy
ZW5jZS5oIgogI2ltcG9ydCAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgpAQCAtMzgsNiArNDEsNyBA
QAogI2ltcG9ydCAiV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oIgogI2ltcG9ydCAiV2ViRWRpdENv
bW1hbmRQcm94eS5oIgogI2ltcG9ydCAiV2ViUG9wdXBNZW51UHJveHlNYWMuaCIKKyNpbXBvcnQg
PFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0JpdG1hcEltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0N1cnNvci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9GbG9hdFJlY3QuaD4KQEAgLTEyMyw2ICsxMjcsOSBAQCBQYXNzT3duUHRyPFBhZ2VDbGll
bnRJbXBsPiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlKFdLVmlldyogd2tWaWV3KQogUGFnZUNsaWVu
dEltcGw6OlBhZ2VDbGllbnRJbXBsKFdLVmlldyogd2tWaWV3KQogICAgIDogbV93a1ZpZXcod2tW
aWV3KQogICAgICwgbV91bmRvVGFyZ2V0KEFkb3B0TlMsIFtbV0tFZGl0b3JVbmRvVGFyZ2V0T2Jq
QyBhbGxvY10gaW5pdF0pCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgLCBt
X2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcihhZG9wdFB0cihuZXcgQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyKSkKKyNlbmRpZgogewogfQogCkBAIC0yMTUsMTAgKzIyMiwxMyBAQCB2b2lk
IFBhZ2VDbGllbnRJbXBsOjpwcm9jZXNzRGlkQ3Jhc2goKQogewogICAgIFttX3drVmlldyBfcHJv
Y2Vzc0RpZENyYXNoXTsKIH0KLSAgICAKKwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZUNsb3Nl
ZCgpCiB7CiAgICAgW21fd2tWaWV3IF9wYWdlQ2xvc2VkXTsKKyNpZiBVU0UoRElDVEFUSU9OX0FM
VEVSTkFUSVZFUykKKyAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+Y2xlYXIoKTsK
KyNlbmRpZgogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRSZWxhdW5jaFByb2Nlc3MoKQpA
QCAtNTM1LDQgKzU0NSwzNSBAQCBib29sIFBhZ2VDbGllbnRJbXBsOjpleGVjdXRlU2F2ZWRDb21t
YW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yU3RyaW5nKQogICAgIHJldHVybiBb
bV93a1ZpZXcgX2V4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yOk5TU2VsZWN0b3JGcm9tU3Ry
aW5nKHNlbGVjdG9yU3RyaW5nKV07CiB9CiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZF
UykKK3VpbnQ2NF90IFBhZ2VDbGllbnRJbXBsOjphZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoY29u
c3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mIGFsdGVybmF0aXZlcykKK3sKKyAgICBy
ZXR1cm4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmFkZEFsdGVybmF0aXZlcyhhbHRl
cm5hdGl2ZXMpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpyZW1vdmVEaWN0YXRpb25BbHRl
cm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBtX2FsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlci0+cmVtb3ZlQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpOwor
fQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90
IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgaWYgKCFpc1ZpZXdWaXNpYmxlKCkgfHwgIWlzVmll
d0luV2luZG93KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlci0+c2hvd0FsdGVybmF0aXZlcyhtX3drVmlldywgYm91bmRpbmdCb3hPZkRpY3RhdGVk
VGV4dCwgZGljdGF0aW9uQ29udGV4dCwgXihOU1N0cmluZyogYWNjZXB0ZWRBbHRlcm5hdGl2ZSl7
CisgICAgICAgIFttX3drVmlldyBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDphY2NlcHRl
ZEFsdGVybmF0aXZlXTsKKyAgICB9KTsKK30KKworVmVjdG9yPFN0cmluZz4gUGFnZUNsaWVudElt
cGw6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQorewor
ICAgIHJldHVybiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+YWx0ZXJuYXRpdmVzRm9y
Q29udGV4dChkaWN0YXRpb25Db250ZXh0KTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlz
bWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoKQoreworICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyLT5kaXNtaXNzQWx0ZXJuYXRpdmVzKCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0K
aW5kZXggMjkyNDU1M2UyMDU3NzdlNzVhMTBmM2RjMjM5MTMxZTMzMzU2NmNhYi4uYTFiNTU3NmMw
ZWE5N2U5OGQ0NmY1NzU4ZThhMWEzODBiZDg0ZTJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtMjYsNiArMjYsMTEgQEAKICNpbXBvcnQgImNvbmZp
Zy5oIgogI2ltcG9ydCAiV0tWaWV3LmgiCiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZF
UykKKyNpbXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4KKyNpbXBvcnQgPEFwcEtp
dC9OU0F0dHJpYnV0ZWRTdHJpbmcuaD4KKyNlbmRpZgorCiAjaW1wb3J0ICJBdHRyaWJ1dGVkU3Ry
aW5nLmgiCiAjaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5j
ZS5oIgpAQCAtNzQsNiArNzksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZWdpb24uaD4KICNpbXBv
cnQgPFdlYkNvcmUvUnVuTG9vcC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYkNvcmVOU1N0cmluZ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KQEAgLTExNzcsNyArMTE4
MywxMiBAQCBzdGF0aWMgY29uc3Qgc2hvcnQga0lPSElERXZlbnRUeXBlU2Nyb2xsID0gNjsKICAg
ICBOU1N0cmluZyAqdGV4dDsKICAgICBib29sIGlzRnJvbUlucHV0TWV0aG9kID0gX2RhdGEtPl9w
YWdlLT5lZGl0b3JTdGF0ZSgpLmhhc0NvbXBvc2l0aW9uOwogCisgICAgVmVjdG9yPFRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZT4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzOworCiAgICAgaWYgKGlzQXR0
cmlidXRlZFN0cmluZykgeworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgICAg
ICBjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlcyhzdHJpbmcsIGRpY3RhdGlvbkFsdGVy
bmF0aXZlcyk7CisjZW5kaWYKICAgICAgICAgLy8gRklYTUU6IFdlIGlnbm9yZSBtb3N0IGF0dHJp
YnV0ZXMgZnJvbSB0aGUgc3RyaW5nLCBzbyBmb3IgZXhhbXBsZSBpbnNlcnRpbmcgZnJvbSBDaGFy
YWN0ZXIgUGFsZXR0ZSBsb3NlcyBmb250IGFuZCBnbHlwaCB2YXJpYXRpb24gZGF0YS4KICAgICAg
ICAgdGV4dCA9IFtzdHJpbmcgc3RyaW5nXTsKICAgICB9IGVsc2UKQEAgLTExOTksNyArMTIxMCwx
MSBAQCBzdGF0aWMgY29uc3Qgc2hvcnQga0lPSElERXZlbnRUeXBlU2Nyb2xsID0gNjsKIAogICAg
IFN0cmluZyBldmVudFRleHQgPSB0ZXh0OwogICAgIGV2ZW50VGV4dC5yZXBsYWNlKE5TQmFja1Rh
YkNoYXJhY3RlciwgTlNUYWJDaGFyYWN0ZXIpOyAvLyBzYW1lIHRoaW5nIGlzIGRvbmUgaW4gS2V5
RXZlbnRNYWMubW0gaW4gV2ViQ29yZQotICAgIGJvb2wgZXZlbnRIYW5kbGVkID0gX2RhdGEtPl9w
YWdlLT5pbnNlcnRUZXh0KGV2ZW50VGV4dCwgcmVwbGFjZW1lbnRSYW5nZS5sb2NhdGlvbiwgTlNN
YXhSYW5nZShyZXBsYWNlbWVudFJhbmdlKSk7CisgICAgYm9vbCBldmVudEhhbmRsZWQ7CisgICAg
aWYgKCFkaWN0YXRpb25BbHRlcm5hdGl2ZXMuaXNFbXB0eSgpKQorICAgICAgICBldmVudEhhbmRs
ZWQgPSBfZGF0YS0+X3BhZ2UtPmluc2VydERpY3RhdGVkVGV4dChldmVudFRleHQsIHJlcGxhY2Vt
ZW50UmFuZ2UubG9jYXRpb24sIE5TTWF4UmFuZ2UocmVwbGFjZW1lbnRSYW5nZSksIGRpY3RhdGlv
bkFsdGVybmF0aXZlcyk7CisgICAgZWxzZQorICAgICAgICBldmVudEhhbmRsZWQgPSBfZGF0YS0+
X3BhZ2UtPmluc2VydFRleHQoZXZlbnRUZXh0LCByZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uLCBO
U01heFJhbmdlKHJlcGxhY2VtZW50UmFuZ2UpKTsKIAogICAgIGlmIChwYXJhbWV0ZXJzKQogICAg
ICAgICBwYXJhbWV0ZXJzLT5ldmVudEludGVycHJldGF0aW9uSGFkU2lkZUVmZmVjdHMgfD0gZXZl
bnRIYW5kbGVkOwpAQCAtMTQ1MSw3ICsxNDY2LDExIEBAIHN0YXRpYyBjb25zdCBzaG9ydCBrSU9I
SURFdmVudFR5cGVTY3JvbGwgPSA2OwogICAgIGlmICghdmFsaWRBdHRyaWJ1dGVzKSB7CiAgICAg
ICAgIHZhbGlkQXR0cmlidXRlcyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWUs
IE5TVW5kZXJsaW5lQ29sb3JBdHRyaWJ1dGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTlNNYXJrZWRDbGF1c2VTZWdtZW50QXR0cmlidXRlTmFtZSwgbmlsXTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5TTWFya2VkQ2xhdXNlU2VnbWVudEF0dHJpYnV0ZU5hbWUsCisjaWYg
VVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBO
U1RleHRBbHRlcm5hdGl2ZXNBdHRyaWJ1dGVOYW1lLAorI2VuZGlmCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuaWxdOwogICAgICAgICAvLyBOU1RleHQgYWxzbyBzdXBwb3J0cyB0aGUgZm9s
bG93aW5nIGF0dHJpYnV0ZXMsIGJ1dCBpdCdzCiAgICAgICAgIC8vIGhhcmQgdG8gdGVsbCB3aGlj
aCBhcmUgcmVhbGx5IHJlcXVpcmVkIGZvciB0ZXh0IGlucHV0IHRvCiAgICAgICAgIC8vIHdvcmsg
d2VsbDsgSSBoYXZlIG5vdCBzZWVuIGFueSBpbnB1dCBtZXRob2QgbWFrZSB1c2Ugb2YgdGhlbSB5
ZXQuCkBAIC0yOTA2LDkgKzI5MjUsOSBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhXaXRoVW5pcXVl
RmlsZW5hbWVGb3JQYXRoKE5TU3RyaW5nICpwYXRoKQogICAgIHJldHVybiBfZGF0YS0+X3NwZWxs
Q2hlY2tlckRvY3VtZW50VGFnOwogfQogCi0tICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJl
c3VsdDooTlNTdHJpbmcqKXJlc3VsdAorLSAodm9pZCloYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZl
VGV4dDooTlNTdHJpbmcqKXRleHQKIHsKLSAgICBfZGF0YS0+X3BhZ2UtPmhhbmRsZUFsdGVybmF0
aXZlVGV4dFVJUmVzdWx0KHJlc3VsdCk7CisgICAgX2RhdGEtPl9wYWdlLT5oYW5kbGVBbHRlcm5h
dGl2ZVRleHRVSVJlc3VsdCh0ZXh0KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKaW5kZXggMDhjZmYxNDBjZmZhODAx
YTBmMzMyYmM4ZDI3NzQ0NThmYjk0MDkyZC4uMDliOWM4Y2YxZDE2YTdiOTcwYjJjY2UyYmRlMzIy
N2IzODJmNzk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXdJbnRlcm5hbC5oCkBAIC05OSw1ICs5OSw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogLSAo
dm9pZClfY2FjaGVXaW5kb3dCb3R0b21Db3JuZXJSZWN0OwogCiAtIChOU0ludGVnZXIpc3BlbGxD
aGVja2VyRG9jdW1lbnRUYWc7Ci0tICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDoo
TlNTdHJpbmcqKXJlc3VsdDsKKy0gKHZvaWQpaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6
KE5TU3RyaW5nKil0ZXh0OworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aAppbmRleCA2MjA1OGZkNDhiOTNmZmE2YWQ1ZDBmYzJkMjMyYWZiNTUxMzBjN2NlLi43NDAxZmQ3
OTlkNGFkMGVjYjUzYzNiYmY0YzM2MTA3NzM4MGQwY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAKIAogI2lmIFVTRShBUFBLSVQpCiBPQkpD
X0NMQVNTIFdLVmlldzsKK09CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogI2VuZGlmCiAj
ZW5kaWYKIApAQCAtMjAxLDggKzIwMiwxNSBAQCBwdWJsaWM6CiAKICNpZiBVU0UoQVBQS0lUKQog
ICAgIHZpcnR1YWwgV0tWaWV3KiB3a1ZpZXcoKSBjb25zdCA9IDA7Ci0jZW5kaWYKLSNlbmRpZgor
I2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIHZpcnR1YWwgdWludDY0X3QgYWRk
RGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWlu
dDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzaG93RGljdGF0
aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZE
aWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoKSA9IDA7CisgICAgdmlydHVhbCBW
ZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29u
dGV4dCkgPSAwOworI2VuZGlmIC8vIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorI2VuZGlm
IC8vIFVTRShBUFBLSVQpCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAgICAgdmlydHVhbCB2
b2lkIGRpZENoYW5nZVNjcm9sbGJhcnNGb3JNYWluRnJhbWUoKSBjb25zdCA9IDA7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYTg0YzQ2NzkzMWU1YTI3
N2ZjMTg3ZDdmMjFjNjY5YTY3OWFjNmZkOC4uY2M5ODBkMzE4ZWEzOTMzZmFhOTZiNDY3YmNhZGRi
MGY0Njk3MGYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTM4MTEsNiArMzgxMSwyOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQWx0ZXJuYXRp
dmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCiAgICAgICAgIHByb2Nlc3MoKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVz
dWx0KSwgbV9wYWdlSUQsIDApOwogI2VuZGlmCiB9CisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVS
TkFUSVZFUykKK3ZvaWQgV2ViUGFnZVByb3h5OjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2
NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgbV9wYWdlQ2xpZW50LT5zaG93RGljdGF0aW9u
QWx0ZXJuYXRpdmVVSShib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCBkaWN0YXRpb25Db250ZXh0
KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJ
KCkKK3sKKyAgICBtX3BhZ2VDbGllbnQtPmRpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKCk7
Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWlu
dDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBtX3BhZ2VDbGllbnQtPnJlbW92ZURpY3Rh
dGlvbkFsdGVybmF0aXZlcyhkaWN0YXRpb25Db250ZXh0KTsKK30KKwordm9pZCBXZWJQYWdlUHJv
eHk6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0LCBWZWN0
b3I8U3RyaW5nPiYgcmVzdWx0KQoreworICAgIHJlc3VsdCA9IG1fcGFnZUNsaWVudC0+ZGljdGF0
aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpOworfQorI2VuZGlmCisKICNlbmRpZiAv
LyBQTEFURk9STShNQUMpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDZkOTg1OThmZmVjNDhkY2NmYTdiNWQ3YmE5ZWEx
M2IzMTUzNmNhYjguLjY5Zjk4ODE5MTBkMDRiZTJlNTA5Y2ZjYzRiMDBlNjAyNTNjOWNiNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTU4LDYgKzU4LDkgQEAK
ICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9h
ZENsaWVudC5oIgogI2luY2x1ZGUgIldlYlVJQ2xpZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9B
bHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9EcmFnU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGl0
VGVzdFJlc3VsdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1TY3JlZW4uaD4KQEAgLTk1LDYgKzk4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIEludFNpemU7CiAgICAgY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogICAgIHN0
cnVjdCBGaWxlQ2hvb3NlclNldHRpbmdzOworICAgIHN0cnVjdCBUZXh0QWx0ZXJuYXRpdmVXaXRo
UmFuZ2U7CiAgICAgc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKICAgICBzdHJ1Y3QgVmlld3Bv
cnRBdHRyaWJ1dGVzOwogICAgIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKQEAgLTM1Myw2ICszNTcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25maXJtQ29tcG9zaXRpb24oKTsKICAgICB2b2lkIGNh
bmNlbENvbXBvc2l0aW9uKCk7CiAgICAgYm9vbCBpbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4
dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJh
bmdlRW5kKTsKKyAgICBib29sIGluc2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIHRleHQs
IHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5n
ZUVuZCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGRp
Y3RhdGlvbkFsdGVybmF0aXZlcyk7CiAgICAgdm9pZCBnZXRNYXJrZWRSYW5nZSh1aW50NjRfdCYg
bG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpOwogICAgIHZvaWQgZ2V0U2VsZWN0ZWRSYW5nZSh1
aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpOwogICAgIHZvaWQgZ2V0QXR0cmli
dXRlZFN1YnN0cmluZ0Zyb21SYW5nZSh1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3Ro
LCBBdHRyaWJ1dGVkU3RyaW5nJik7CkBAIC05MDIsNiArOTA3LDEzIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihpbnQzMl90IHJlYXNvbiwgU3RyaW5nJiBy
ZXN1bHQpOwogICAgIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShpbnQzMl90IHJl
c3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlbWVudFN0cmluZyk7CiAjZW5kaWYgLy8gIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19M
RU9QQVJEKQorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgdm9pZCBzaG93
RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOworICAgIHZvaWQg
ZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoKTsKKyAgICB2b2lkIHJlbW92ZURpY3RhdGlv
bkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKKyAgICB2b2lkIGRpY3Rh
dGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0LCBWZWN0b3I8U3RyaW5n
PiYgcmVzdWx0KTsKKyNlbmRpZgogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogICAgIHZvaWQg
Y2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkZTYwYTcxNjZmNTRhODE4OTEz
NTBlMDc1NDI1YTNhOTgzZTNlMGUzLi45Mzg1OGE4MzJiYTk3MGI5ODNkYTVhYTEwNTY1MjM5MDk1
MmY2NzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KQEAgLTI4MSw2ICsyODEsMTMgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5
IHsKICAgICBSZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9uc2VUeXBl
LCBTdHJpbmcgcmVwbGFjZWRTdHJpbmcsIFN0cmluZyByZXBsYWNlbWVudFN0cmluZyk7CiAjZW5k
aWYKIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIFNob3dEaWN0YXRpb25B
bHRlcm5hdGl2ZVVJKFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0
LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQorICAgIERpc21pc3NEaWN0YXRpb25BbHRlcm5h
dGl2ZVVJKCkKKyAgICBSZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0
aW9uQ29udGV4dCkKKyAgICBEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9u
Q29udGV4dCkgLT4gKFZlY3RvcjxTdHJpbmc+IGFsdGVybmF0aXZlcykKKyNlbmRpZgorCiAjaWYg
UExBVEZPUk0oV0lOKQogICAgICMgV2luZG93cyA3IEdlc3R1cmUgTWVzc2FnZXMKICAgICBTZXRH
ZXN0dXJlUmVhY2hlZFNjcm9sbGluZ0xpbWl0KGJvb2wgbGltaXRSZWFjaGVkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbQppbmRleCAyOTY4MWM3
NGRhNmUwYjhkYjY3Nzk3NjlhNTYxZDdhMzNiZWMyMmU3Li4zM2YzZmU5ODJjZmJlODQ0YjdhMDVk
Y2E4M2UwNjY2OGMwZjI0NjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL0NvcnJlY3Rpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L0NvcnJlY3Rpb25QYW5lbC5tbQpAQCAtNDMsNiArNDMsOSBAQCBzdGF0aWMgaW5saW5lIE5TQ29y
cmVjdGlvbkluZGljYXRvclR5cGUgY29ycmVjdGlvbkluZGljYXRvclR5cGUoQWx0ZXJuYXRpdmVU
ZXh0VAogICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uSW5kaWNhdG9yVHlwZVJldmVyc2lvbjsK
ICAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5cGVTcGVsbGluZ1N1Z2dlc3Rpb25zOgogICAgICAg
ICByZXR1cm4gTlNDb3JyZWN0aW9uSW5kaWNhdG9yVHlwZUd1ZXNzZXM7CisgICAgY2FzZSBBbHRl
cm5hdGl2ZVRleHRUeXBlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlRGVmYXVsdDsKQEAgLTEz
OCw3ICsxNDEsNyBAQCB2b2lkIENvcnJlY3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0ZWRSZXBsYWNl
bWVudChOU1N0cmluZyogYWNjZXB0ZWRSZXBsYWNlbWVudCwgTgogICAgICAgICBicmVhazsKICAg
ICB9CiAKLSAgICBbbV92aWV3LmdldCgpIGhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDphY2Nl
cHRlZFJlcGxhY2VtZW50XTsKKyAgICBbbV92aWV3LmdldCgpIGhhbmRsZUFjY2VwdGVkQWx0ZXJu
YXRpdmVUZXh0OmFjY2VwdGVkUmVwbGFjZW1lbnRdOwogICAgIG1fdmlldy5jbGVhcigpOwogICAg
IGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQogICAgICAgICBtX3Jlc3VsdEZvckRpc21pc3NhbC5h
ZG9wdE5TKFthY2NlcHRlZFJlcGxhY2VtZW50IGNvcHldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggZWE3ZTVlZjYzYTY3MTgyNmI4
ODBkZTg0MDhmZjY0ZGMxNjdiYmI4Mi4uOTY3MTJiZjBjNTI3MzYyMjE3M2NlNTVjZTRlMDQ0ZWMz
ZmE2ZTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KQEAgLTM5LDcgKzM5LDkgQEAKICNpbXBvcnQgIlRleHRDaGVja2VyLmgiCiAjaW1w
b3J0ICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgorI2lt
cG9ydCA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdl
Lmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKQEAgLTE5OSw2ICsyMDEsMzUgQEAgYm9vbCBXZWJQYWdl
UHJveHk6Omluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVu
dFJhbmdlU3RhcnQKICAgICByZXR1cm4gaGFuZGxlZDsKIH0KIAorYm9vbCBXZWJQYWdlUHJveHk6
Omluc2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2Vt
ZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCwgY29uc3QgVmVjdG9y
PFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5n
ZSkKK3sKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBpZiAoZGljdGF0aW9u
QWx0ZXJuYXRpdmVzV2l0aFJhbmdlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGluc2VydFRl
eHQodGV4dCwgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdlRW5kKTsKKwor
ICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFZlY3RvcjxE
aWN0YXRpb25BbHRlcm5hdGl2ZT4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzOworCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBkaWN0YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFuZ2Uuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgY29uc3QgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlJiBhbHRlcm5hdGl2
ZVdpdGhSYW5nZSA9IGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZVtpXTsKKyAgICAgICAg
dWludDY0X3QgZGljdGF0aW9uQ29udGV4dCA9IG1fcGFnZUNsaWVudC0+YWRkRGljdGF0aW9uQWx0
ZXJuYXRpdmVzKGFsdGVybmF0aXZlV2l0aFJhbmdlLmFsdGVybmF0aXZlcyk7CisgICAgICAgIGlm
IChkaWN0YXRpb25Db250ZXh0KQorICAgICAgICAgICAgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLmFw
cGVuZChEaWN0YXRpb25BbHRlcm5hdGl2ZShhbHRlcm5hdGl2ZVdpdGhSYW5nZS5yYW5nZS5sb2Nh
dGlvbiwgYWx0ZXJuYXRpdmVXaXRoUmFuZ2UucmFuZ2UubGVuZ3RoLCBkaWN0YXRpb25Db250ZXh0
KSk7CisgICAgfQorCisgICAgaWYgKGRpY3RhdGlvbkFsdGVybmF0aXZlcy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBpbnNlcnRUZXh0KHRleHQsIHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgcmVw
bGFjZW1lbnRSYW5nZUVuZCk7CisKKyAgICBib29sIGhhbmRsZWQgPSB0cnVlOworICAgIHByb2Nl
c3MoKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERpY3RhdGVkVGV4dCh0ZXh0
LCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQsIGRpY3RhdGlvbkFs
dGVybmF0aXZlcyksIE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnREaWN0YXRlZFRleHQ6OlJlcGx5
KGhhbmRsZWQsIG1fZWRpdG9yU3RhdGUpLCBtX3BhZ2VJRCk7CisgICAgcmV0dXJuIGhhbmRsZWQ7
CisjZWxzZQorICAgIHJldHVybiBpbnNlcnRUZXh0KHRleHQsIHJlcGxhY2VtZW50UmFuZ2VTdGFy
dCwgcmVwbGFjZW1lbnRSYW5nZUVuZCk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6
OmdldE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCkKIHsK
ICAgICBsb2NhdGlvbiA9IE5TTm90Rm91bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQuaAppbmRleCAyMDA3NjU4MzY4MDUzZmYyYjJlZmJiMGEzNGJmZmZjZmI5ZDI5NzFhLi44
MGFhOWE0ZTU4YTkzMGY4ZTA1Mjk0NjQxZDMzMjVjMzdlMWI3ZDljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAgLTM4LDEwICszOCwxOCBAQCBwdWJsaWM6CiAgICAg
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KFdlYlBhZ2UgKik7CiAgICAgdmlydHVhbCB+V2ViQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSBP
VkVSUklERTsKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgdmlydHVhbCB2b2lk
IHNob3dDb3JyZWN0aW9uQWx0ZXJuYXRpdmUoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VHlwZSwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJp
bmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NBbHRlcm5hdGl2ZShXZWJDb3JlOjpS
ZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFN0cmluZyBkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRv
Y29ycmVjdGlvblJlc3BvbnNlKFdlYkNvcmU6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3Ry
aW5nKSBPVkVSUklERTsKKyNlbmRpZgorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQor
ICAgIHZpcnR1YWwgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlv
bkNvbnRleHQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzRGljdGF0aW9uQWx0
ZXJuYXRpdmVVSSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0YXRpb25B
bHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0
aW9uQ29udGV4dCkgT1ZFUlJJREU7CisjZW5kaWYKIHByaXZhdGU6CiAgICAgV2ViUGFnZSAqbV9w
YWdlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3Bw
CmluZGV4IGFjMWRmYzU4M2E2NGFhMTIxMzY2NjlmMjk0YjJlNGZlZWZjOTBjMGEuLjFmY2VjOTEx
Mzg1MmRhYTQxZjdhZDQ5MjM5ZmI1ODAwYjQ1YWQ5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcApAQCAtNTEsMzQgKzUxLDUxIEBAIHZvaWQgV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpwYWdlRGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhpczsK
IH0KIAorI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKIHZvaWQgV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50OjpzaG93Q29ycmVjdGlvbkFsdGVybmF0aXZlKEFsdGVybmF0aXZlVGV4dFR5cGUg
dHlwZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykKIHsK
LSNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlNob3dDb3JyZWN0aW9uUGFuZWwodHlwZSwgYm91bmRpbmdCb3hPZlJl
cGxhY2VkU3RyaW5nLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcsIGFsdGVybmF0
aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSk7Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQ6OmRpc21pc3NBbHRlcm5hdGl2ZShSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJu
YXRpdmVUZXh0IHJlYXNvbikKIHsKLSNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3NDb3JyZWN0aW9uUGFu
ZWwocmVhc29uKSk7Ci0jZW5kaWYKIH0KIAogU3RyaW5nIFdlYkFsdGVybmF0aXZlVGV4dENsaWVu
dDo6ZGlzbWlzc0FsdGVybmF0aXZlU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVU
ZXh0IHJlYXNvbikKIHsKICAgICBTdHJpbmcgcmVzdWx0OwotI2lmIFVTRShBVVRPQ09SUkVDVElP
Tl9QQU5FTCkKICAgICBtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
c21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKHJlYXNvbiksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uOjpSZXBseShyZXN1bHQpKTsKLSNlbmRpZgogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZWNv
cmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJlc3Bv
bnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudFN0cmluZykKIHsKLSNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlY29yZEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2UocmVzcG9uc2VUeXBlLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpKTsK
K30KICNlbmRpZgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCit2b2lkIFdlYkFs
dGVybmF0aXZlVGV4dENsaWVudDo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90
IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyhkaWN0YXRpb25Db250ZXh0KSk7CiB9
CiAKK3ZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpzaG93RGljdGF0aW9uQWx0ZXJuYXRp
dmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQs
IHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGJvdW5kaW5nQm94T2ZE
aWN0YXRlZFRleHQsIGRpY3RhdGlvbkNvbnRleHQpKTsKK30KKwordm9pZCBXZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQ6OmRpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKCkKK3sKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0
aXZlVUkoKSk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAg
VmVjdG9yPFN0cmluZz4gcmVzdWx0OworICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWN0YXRpb25BbHRlcm5hdGl2ZXM6OlJlcGx5KHJlc3VsdCkp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDE1ZGE3ZjVmMTViYTYyZmJkYzA3Yjg3NmY3
ODNkZDRhMmRkMDE0NDguLmNiODdmMGUyYjg1MzZkY2UxYjI0ZGQ5Mjk3ZGZjZTcxNGUyNGExOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDgs
NiArNDgsNyBAQAogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTaGFy
ZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXZWJVbmRvU3RlcC5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9h
ZGVyVHlwZXMuaD4KQEAgLTQxOSw3ICs0MjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG91bGRE
ZWxheVdpbmRvd09yZGVyaW5nRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW50JiwgYm9v
bCYgcmVzdWx0KTsKICAgICB2b2lkIGFjY2VwdHNGaXJzdE1vdXNlKGludCBldmVudE51bWJlciwg
Y29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW50JiwgYm9vbCYgcmVzdWx0KTsKICAgICBib29sIHBl
cmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcihjb25zdCBTdHJpbmcmKTsKLQorICAg
IHZvaWQgaW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVw
bGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kLCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2
ZUxvY2F0aW9ucywgYm9vbCYgaGFuZGxlZCwgRWRpdG9yU3RhdGUmIG5ld1N0YXRlKTsKICNlbGlm
IFBMQVRGT1JNKFdJTikKICAgICB2b2lkIGNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcm
IGNvbXBvc2l0aW9uU3RyaW5nKTsKICAgICB2b2lkIHNldENvbXBvc2l0aW9uKGNvbnN0IFdURjo6
U3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgY29uc3QgV1RGOjpWZWN0b3I8V2ViQ29yZTo6Q29t
cG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzLCB1aW50NjRfdCBjdXJzb3JQb3NpdGlvbik7
CkBAIC01MDQsNyArNTA1LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCB1bm1hcmtBbGxNaXNzcGVs
bGluZ3MoKTsKICAgICB2b2lkIHVubWFya0FsbEJhZEdyYW1tYXIoKTsKLQogI2lmIFBMQVRGT1JN
KE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQogICAgIHZvaWQgaGFu
ZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KaW5kZXggM2IwY2VkYzRhYzg4MTA1MjYyMDBjM2E0YzNlZjRmYzBiNWM1ODhiYS4uMDk0ZTM3
OTRiZDRhZWUyOTQxZWNjMjBiMDRiZjU3MDNlZWNkMTRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTI1MCw2
ICsyNTAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICAgICBFeGVjdXRlS2V5cHJlc3NDb21t
YW5kcyhWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiBzYXZlZENvbW1hbmRzKSAtPiAo
Ym9vbCBoYW5kbGVkLCBXZWJLaXQ6OkVkaXRvclN0YXRlIG5ld1N0YXRlKQogICAgIFNob3VsZERl
bGF5V2luZG93T3JkZXJpbmdFdmVudChXZWJLaXQ6OldlYk1vdXNlRXZlbnQgZXZlbnQpIC0+IChi
b29sIHJlc3VsdCkKICAgICBBY2NlcHRzRmlyc3RNb3VzZShpbnQgZXZlbnROdW1iZXIsIFdlYktp
dDo6V2ViTW91c2VFdmVudCBldmVudCkgLT4gKGJvb2wgcmVzdWx0KQorICAgIEluc2VydERpY3Rh
dGVkVGV4dChXVEY6OlN0cmluZyB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQs
IHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQsIFdURjo6VmVjdG9yPFdlYkNvcmU6OkRpY3Rh
dGlvbkFsdGVybmF0aXZlPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpIC0+IChib29sIGhhbmRsZWQs
IFdlYktpdDo6RWRpdG9yU3RhdGUgbmV3U3RhdGUpCiAjZW5kaWYKICNpZiBQTEFURk9STShXSU4p
CiAgICAgLy8gRklYTUU6IFVuaWZ5IHdpdGggTWFjIGNvdW50ZXJwYXJ0cy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA5
ZTBjMTM3NzVkMjZmMDBjZjJkODk3OGI2YzdmZmE5MjFhZmFkY2U0Li4yMmVlZGU4NDM1MGVlODlm
MzU5NzQzYjg2ZGZmY2Q3MDUyNmU3NTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0yOTAsNiArMjkwLDIxIEBAIHZv
aWQgV2ViUGFnZTo6aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxh
Y2VtZW50UmFuZ2VTdGFydCwgdWluCiAgICAgbmV3U3RhdGUgPSBlZGl0b3JTdGF0ZSgpOwogfQog
Cit2b2lkIFdlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVp
bnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVu
ZCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiYgZGljdGF0aW9u
QWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGJvb2wmIGhhbmRsZWQsIEVkaXRvclN0YXRlJiBuZXdTdGF0
ZSkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKTsKKworICAgIGlmIChyZXBsYWNlbWVudFJhbmdlU3RhcnQgIT0gTlNO
b3RGb3VuZCkgeworICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UgPSBjb252
ZXJ0VG9SYW5nZShmcmFtZSwgTlNNYWtlUmFuZ2UocmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBs
YWNlbWVudFJhbmdlRW5kIC0gcmVwbGFjZW1lbnRSYW5nZVN0YXJ0KSk7CisgICAgICAgIGlmIChy
ZXBsYWNlbWVudFJhbmdlKQorICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRTZWxl
Y3Rpb24oVmlzaWJsZVNlbGVjdGlvbihyZXBsYWNlbWVudFJhbmdlLmdldCgpLCBTRUxfREVGQVVM
VF9BRkZJTklUWSkpOworICAgIH0KKworICAgIEFTU0VSVCghZnJhbWUtPmVkaXRvcigpLT5oYXND
b21wb3NpdGlvbigpKTsKKyAgICBoYW5kbGVkID0gZnJhbWUtPmVkaXRvcigpLT5pbnNlcnREaWN0
YXRlZFRleHQodGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIG1fa2V5Ym9hcmRF
dmVudEJlaW5nSW50ZXJwcmV0ZWQpOworICAgIG5ld1N0YXRlID0gZWRpdG9yU3RhdGUoKTsKK30K
Kwogdm9pZCBXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZSh1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2
NF90JiBsZW5ndGgpCiB7CiAgICAgbG9jYXRpb24gPSBOU05vdEZvdW5kOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGI1N2RhOTQ4OThkYjU2NGUx
OGY1ODUxNDhkZDg0NDQyZjVjYWVmZmEuLjVlOWE2MThmZWVlMTExYTk5NzU1MDJmODdmZDllOThh
OTZlMDY1MGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0xMSAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4K
KworICAgICAgICBNYXJrIHRleHQgd2l0aCB0ZXh0IGFsdGVybmF0aXZlIHdpdGggYmx1ZSB1bmRl
cmxpbmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MzA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXIubToKKyAgICAgICAgKCtbVGV4
dElucHV0Q29udHJvbGxlciBpc1NlbGVjdG9yRXhjbHVkZWRGcm9tV2ViU2NyaXB0Ol0pOgorICAg
ICAgICAoK1tUZXh0SW5wdXRDb250cm9sbGVyIHdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjpdKToK
KyAgICAgICAgKC1bVGV4dElucHV0Q29udHJvbGxlciBkaWN0YXRlZFN0cmluZ1dpdGhQcmltYXJ5
U3RyaW5nOmFsdGVybmF0aXZlOmFsdGVybmF0aXZlT2Zmc2V0OmFsdGVybmF0aXZlTGVuZ3RoOl0p
OgorCiAyMDEyLTA2LTExICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgRG9uJ3QgY29uc2lkZXIgc2hvdyB3YXJuaW5ncyBpbiB0aGUgZ2FyZGVuLW8tbWF0aWMgVUkg
Zm9yIG5vbi1sYXlvdXQgdGVzdCBmYWlsdXJlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXIubSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9UZXh0SW5wdXRDb250cm9sbGVyLm0KaW5kZXggZjc4MDc5NDQ2MzY5ZTc4YzlmNDhjZTA4MTVl
ZjFjY2M4ZGYwYjk5ZC4uYWZlYjE2ZTRkMjQyYjJiNjAyMGMwMmU0NDFhZTgzZDc0MGU5MzJmMyAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXIu
bQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlci5tCkBA
IC0zMSw2ICszMSwxMCBAQAogCiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZU1hYy5oIgogI2ltcG9y
dCA8QXBwS2l0L05TSW5wdXRNYW5hZ2VyLmg+CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVP
UEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9MSU9OKQorI2RlZmluZSBTVVBQT1JUX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMK
KyNpbXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4KKyNlbmRpZgogI2ltcG9ydCA8
V2ViS2l0L1dlYkRvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWUuaD4KICNpbXBv
cnQgPFdlYktpdC9XZWJGcmFtZVByaXZhdGUuaD4KQEAgLTE3MCw3ICsxNzQsOCBAQCArIChCT09M
KWlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6KFNFTClhU2VsZWN0b3IKICAgICAgICAg
ICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoY2hhcmFjdGVySW5kZXhGb3JQb2ludFg6WTop
CiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHZhbGlkQXR0cmlidXRlc0Zv
ck1hcmtlZFRleHQpCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGF0dHJp
YnV0ZWRTdHJpbmdXaXRoU3RyaW5nOikKLSAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2Vs
ZWN0b3Ioc2V0SW5wdXRNZXRob2RIYW5kbGVyOikpCisgICAgICAgICAgICB8fCBhU2VsZWN0b3Ig
PT0gQHNlbGVjdG9yKHNldElucHV0TWV0aG9kSGFuZGxlcjopCisgICAgICAgICAgICB8fCBhU2Vs
ZWN0b3IgPT0gQHNlbGVjdG9yKGRpY3RhdGVkU3RyaW5nV2l0aFByaW1hcnlTdHJpbmc6YWx0ZXJu
YXRpdmU6YWx0ZXJuYXRpdmVPZmZzZXQ6YWx0ZXJuYXRpdmVMZW5ndGg6KSkKICAgICAgICAgcmV0
dXJuIE5POwogICAgIHJldHVybiBZRVM7CiB9CkBAIC0xOTQsNyArMTk5LDkgQEAgKyAoTlNTdHJp
bmcgKil3ZWJTY3JpcHROYW1lRm9yU2VsZWN0b3I6KFNFTClhU2VsZWN0b3IKICAgICBlbHNlIGlm
IChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGF0dHJpYnV0ZWRTdHJpbmdXaXRoU3RyaW5nOikpCiAg
ICAgICAgIHJldHVybiBAIm1ha2VBdHRyaWJ1dGVkU3RyaW5nIjsgLy8ganVzdCBhIGZhY3Rvcnkg
bWV0aG9kLCBkb2Vzbid0IGNhbGwgaW50byBOU1RleHRJbnB1dAogICAgIGVsc2UgaWYgKGFTZWxl
Y3RvciA9PSBAc2VsZWN0b3Ioc2V0SW5wdXRNZXRob2RIYW5kbGVyOikpCi0gICAgICAgIHJldHVy
biBAInNldElucHV0TWV0aG9kSGFuZGxlciI7IAorICAgICAgICByZXR1cm4gQCJzZXRJbnB1dE1l
dGhvZEhhbmRsZXIiOworICAgIGVsc2UgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoZGljdGF0
ZWRTdHJpbmdXaXRoUHJpbWFyeVN0cmluZzphbHRlcm5hdGl2ZTphbHRlcm5hdGl2ZU9mZnNldDph
bHRlcm5hdGl2ZUxlbmd0aDopKQorICAgICAgICByZXR1cm4gQCJtYWtlRGljdGF0ZWRTdHJpbmci
OwogCiAgICAgcmV0dXJuIG5pbDsKIH0KQEAgLTM3NSw2ICszODIsMjcgQEAgLSAoTlNNdXRhYmxl
QXR0cmlidXRlZFN0cmluZyAqKWF0dHJpYnV0ZWRTdHJpbmdXaXRoU3RyaW5nOihOU1N0cmluZyAq
KWFTdHJpbmcKICAgICByZXR1cm4gW1tbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10g
aW5pdFdpdGhTdHJpbmc6YVN0cmluZ10gYXV0b3JlbGVhc2VdOwogfQogCistIChOU011dGFibGVB
dHRyaWJ1dGVkU3RyaW5nKilkaWN0YXRlZFN0cmluZ1dpdGhQcmltYXJ5U3RyaW5nOihOU1N0cmlu
ZyopYVN0cmluZyBhbHRlcm5hdGl2ZTooTlNTdHJpbmcqKWFsdGVybmF0aXZlIGFsdGVybmF0aXZl
T2Zmc2V0OihpbnQpb2Zmc2V0IGFsdGVybmF0aXZlTGVuZ3RoOihpbnQpbGVuZ3RoCit7CisjaWYg
ZGVmaW5lZChTVVBQT1JUX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgTlNNdXRhYmxlQXR0
cmlidXRlZFN0cmluZyogZGljdGF0ZWRTdHJpbmcgPSBbc2VsZiBhdHRyaWJ1dGVkU3RyaW5nV2l0
aFN0cmluZzphU3RyaW5nXTsKKyAgICBOU1JhbmdlIHJhbmdlV2l0aEFsdGVybmF0aXZlID0gTlNN
YWtlUmFuZ2UoKE5TVUludGVnZXIpb2Zmc2V0LCAoTlNVSW50ZWdlcilsZW5ndGgpOworICAgIE5T
U3RyaW5nKiBzdWJTdHJpbmdXaXRoQWx0ZXJuYXRpdmUgPSBbYVN0cmluZyBzdWJzdHJpbmdXaXRo
UmFuZ2U6cmFuZ2VXaXRoQWx0ZXJuYXRpdmVdOworICAgIGlmICghc3ViU3RyaW5nV2l0aEFsdGVy
bmF0aXZlKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgTlNUZXh0QWx0ZXJuYXRpdmVzKiBh
bHRlcm5hdGl2ZU9iamVjdCA9IFtbW05TVGV4dEFsdGVybmF0aXZlcyBhbGxvY10gaW5pdFdpdGhQ
cmltYXJ5U3RyaW5nOnN1YlN0cmluZ1dpdGhBbHRlcm5hdGl2ZSBhbHRlcm5hdGl2ZVN0cmluZ3M6
W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OmFsdGVybmF0aXZlXV0gYXV0b3JlbGVhc2VdOworICAg
IGlmICghYWx0ZXJuYXRpdmVPYmplY3QpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBbZGlj
dGF0ZWRTdHJpbmcgYWRkQXR0cmlidXRlOk5TVGV4dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5hbWUg
dmFsdWU6YWx0ZXJuYXRpdmVPYmplY3QgcmFuZ2U6cmFuZ2VXaXRoQWx0ZXJuYXRpdmVdOworCisg
ICAgcmV0dXJuIGRpY3RhdGVkU3RyaW5nOworI2Vsc2UKKyAgICByZXR1cm4gbmlsOworI2VuZGlm
Cit9CisKIC0gKHZvaWQpc2V0SW5wdXRNZXRob2RIYW5kbGVyOihXZWJTY3JpcHRPYmplY3QgKilo
YW5kbGVyCiB7CiAgICAgaWYgKGlucHV0TWV0aG9kSGFuZGxlciA9PSBoYW5kbGVyKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGJjNGJmNWY5NjBlYThjZmEzMmI1ZDJkODRiMzJlY2ZlODI2ZDlmNGYuLjllNWMzYWE2ZGQyMTkw
YTNhZDhhNTc0NjE2ZTMwOGMyZmMwMDkzZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0w
Ni0xMSAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KKworICAgICAgICBNYXJrIHRleHQgd2l0aCB0
ZXh0IGFsdGVybmF0aXZlIHdpdGggYmx1ZSB1bmRlcmxpbmUuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzA0NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1Nr
aXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRl
ZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9lZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5h
dGl2ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9p
bnNlcnQtZGljdGF0ZWQtdGV4dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0Lmh0bWw6IEFkZGVkLgor
CiAyMDEyLTA2LTExICBNYXggRmVpbCAgPG1mZWlsQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNr
QmVycnldIFVuZXhwZWN0ZWQgcmVwZWF0cyBvZiBzaG9ydCBtZWRpYQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxpb24vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy1saW9uL1NraXBwZWQKaW5kZXggOTdlNGI1ZGExZTMyYmQ4YTUxOGQyNjk5YzJjZDU1Mjkz
NGQzNDVmZi4uZmI4ODM0ZjE3Yjk2Mzc0ZjI3Njk3MWEwMTVlMzE5MDZhOWNmMWQ1YyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxpb24vU2tpcHBlZAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtbGlvbi9Ta2lwcGVkCkBAIC0zNSw2ICszNSwxMCBAQCBlZGl0aW5n
L3RleHQtaXRlcmF0b3IvZmluZFN0cmluZy1zZWxlY3Rpb24tZGlzYWJsZWQuaHRtbAogIyBQYXN0
aW5nIHJlcGxhY2VzIHRoZSB0aHJlZSBwZXJpb2RzIHdpdGggYW4gZWxsaXBzaXMgb24gTGlvbgog
ZWRpdGluZy9wYXN0ZWJvYXJkLzU0NzgyNTAuaHRtbAogCisjIE1vdW50YWluIExpb24gZnVuY3Rp
b25hbGl0aWVzCitwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9lZGl0LWRpY3RhdGVkLXRleHQt
d2l0aC1hbHRlcm5hdGl2ZS5odG1sCitwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQt
ZGljdGF0ZWQtdGV4dC5odG1sCisKICMgLS0tIE1lZGlhIC0tLQogCiAjIFRoZXNlIG5lZWQgaW52
ZXN0aWdhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9w
YXJkL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtc25vd2xlb3BhcmQvU2tpcHBl
ZAppbmRleCA1MmE3MzZlOTU4NDJhNjU4ZDAzYjY4MGE1YTc3YTFmYjU3OGU2YTYyLi5iMjcxNDVl
OGY0NDdlMDIyNmEzZGJkMDVmNjkxYmJjMjVhODBmNmUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtc25vd2xlb3BhcmQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtc25vd2xlb3BhcmQvU2tpcHBlZApAQCAtMjExLDMgKzIxMSw3IEBAIGZhc3Qvc3Vi
LXBpeGVsL2ZpbGUtdXBsb2FkLWNvbnRyb2wtYXQtZnJhY3Rpb25hbC1vZmZzZXQuaHRtbAogIyBG
cmFtZTo6ZmluZFN0cmluZyBkb2VzIG5vdGhpbmcgb24gcGFnZXMgdGhhdCBwcmV2ZW50IHNlbGVj
dGlvbgogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNjEKIGVk
aXRpbmcvdGV4dC1pdGVyYXRvci9maW5kU3RyaW5nLXNlbGVjdGlvbi1kaXNhYmxlZC5odG1sCisK
KyMgRGljdGF0ZWQgdGV4dCBpbnB1dCBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0K
K3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVy
bmF0aXZlLmh0bWwKK3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10
ZXh0Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lu
cHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13
aXRoLWFsdGVybmF0aXZlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTdjNzhjYTYzOGI1N2Y4
OTQ1YjllMDE4ZDVjMDljOTZkZmZhNDYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJu
YXRpdmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorRWRpdGluZyB0ZXh0IHRoYXQgaGFz
IERpY3RhdGlvbkFsdGVybmF0aXZlcyBtYXJrZXIgd2hvdWxkIGNhdXNlIHRoZSBtYXJrZXIgdG8g
YmUgcmVtb3ZlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCit0aGlzIGlzIGEgdGV4
CitQQVNTIG1hcmtlZFRleHQgaXMgIiIKKworVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0YXRlZC10ZXh0LXdp
dGgtYWx0ZXJuYXRpdmUuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lu
cHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzdmMDA3OTAzNjYyNjVmMGQwZWJiMGNiZDZhYmE2MTYwMmRlOWQzZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQt
dGV4dC13aXRoLWFsdGVybmF0aXZlLmh0bWwKQEAgLTAsMCArMSw1OSBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Citib2R5IHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwIH0K
Kzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwcmUgaWQ9ImRlc2NyaXB0aW9uIj48L3ByZT4K
KzxkaXYgaWQ9InRlc3QiIGNvbnRlbnRlZGl0YWJsZT48L2Rpdj4KKzxwIGlkPSJjb25zb2xlIj48
L3A+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZGVzY3JpcHRpb24oIkVk
aXRpbmcgdGV4dCB0aGF0IGhhcyBEaWN0YXRpb25BbHRlcm5hdGl2ZXMgbWFya2VyIHdob3VsZCBj
YXVzZSB0aGUgbWFya2VyIHRvIGJlIHJlbW92ZWQuIik7CisKKyAgICB2YXIgY29uc29sZV9tZXNz
YWdlcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7CisgICAgCisgICAgZnVuY3Rpb24g
bG9nKG1lc3NhZ2UpCisgICAgeworICAgICAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImxpIik7CisgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUobWVzc2FnZSkpOworICAgICAgICBjb25zb2xlX21lc3NhZ2VzLmFwcGVuZENoaWxkKGl0
ZW0pOworICAgIH0KKyAgICAKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgICAgIAorICAgICAgICB0cnkgeworCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB2YXIgdGVzdEFyZWEgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGVzdCIpOworICAgICAgICAgICAgdGVzdEFyZWEuZm9jdXMoKTsKKwor
ICAgICAgICAgICAgdmFyIGRpY3RhdGVkU3RyaW5nID0gdGV4dElucHV0Q29udHJvbGxlci5tYWtl
RGljdGF0ZWRTdHJpbmcoInRoaXMgaXMgYSB0ZXh0IiwgInRlc3QiLCAxMCwgNCk7CisgICAgICAg
ICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxsIik7CisgICAgICAgICAgICB0ZXh0
SW5wdXRDb250cm9sbGVyLmluc2VydFRleHQoZGljdGF0ZWRTdHJpbmcpOworICAgICAgICAgICAg
dGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoImRlbGV0ZUJhY2t3YXJkOiIpOworCisgICAg
ICAgICAgICB2YXIgbWFya2VkVGV4dCA9ICIiOworICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpIHsKKyAgICAgICAgICAgICAgICB2YXIgdGVzdFRleHQgPSB0ZXN0QXJlYS5maXJzdENo
aWxkOworICAgICAgICAgICAgICAgIHZhciBtYXJrZWQgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VG
b3JOb2RlKHRlc3RUZXh0LCAiRGljdGF0aW9uQWx0ZXJuYXRpdmVzIiwgMCk7CisgICAgICAgICAg
ICAgICAgaWYgKG1hcmtlZCkKKyAgICAgICAgICAgICAgICAgICAgbWFya2VkVGV4dCA9IG1hcmtl
ZC50b1N0cmluZygpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoIm1hcmtlZFRleHQiLCAiIik7CisgICAgICAgICAgICBkb2N1bWVudC53cml0ZSgi
VEVTVCBDT01QTEVURSIpOworCisgICAgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgICAgICBk
b2N1bWVudC53cml0ZSgiRXhjZXB0aW9uOiAiICsgZXguZGVzY3JpcHRpb24pOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFw
cGVuZENoaWxkKGNvbnNvbGVfbWVzc2FnZXMpOworICAgICAgICAKKyAgICB9IGVsc2UgeworICAg
ICAgICBkb2N1bWVudC53cml0ZSgiKGNhbm5vdCBydW4gaW50ZXJhY3RpdmVseSkiKTsKKyAgICB9
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRl
ZC10ZXh0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDQ2MTczMmVlZWYzM2YyMGYwODA3MGY1
MTFkOWRjZmMwMjBiYTAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsOCBAQAorV2hlbiBpbnNlcnRpbmcgZGljdGF0ZWQgdGV4dCwgcmFuZ2Ugb2YgdGV4dCB0
aGF0IGhhcyBhbHRlcm5hdGl2ZSB0ZXh0IGlzIGF0dGFjaGVkIGFzIERpY3RhdGlvbkFsdGVybmF0
aXZlcyBtYXJrZXIuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwordGhpcyBpcyBhIHRl
eHQKK1BBU1MgbWFya2VkVGV4dCBpcyAidGV4dCIKKworVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVk
LXRleHQuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2Vy
dC1kaWN0YXRlZC10ZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJhMWU0M2JkOTllM2QyNWUwMjA4MzAz
MGJlN2YzMmY4YzVkNDQxNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0Lmh0bWwKQEAgLTAsMCArMSw1
OCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Citib2R5IHsgbWFyZ2lu
OiAwOyBwYWRkaW5nOiAwIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwcmUgaWQ9ImRl
c2NyaXB0aW9uIj48L3ByZT4KKzxkaXYgaWQ9InRlc3QiIGNvbnRlbnRlZGl0YWJsZT48L2Rpdj4K
KzxwIGlkPSJjb25zb2xlIj48L3A+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cisg
ICAgZGVzY3JpcHRpb24oIldoZW4gaW5zZXJ0aW5nIGRpY3RhdGVkIHRleHQsIHJhbmdlIG9mIHRl
eHQgdGhhdCBoYXMgYWx0ZXJuYXRpdmUgdGV4dCBpcyBhdHRhY2hlZCBhcyBEaWN0YXRpb25BbHRl
cm5hdGl2ZXMgbWFya2VyLiIpOworCisgICAgdmFyIGNvbnNvbGVfbWVzc2FnZXMgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJvbCIpOworICAgIAorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQor
ICAgIHsKKyAgICAgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOwor
ICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2Up
KTsKKyAgICAgICAgY29uc29sZV9tZXNzYWdlcy5hcHBlbmRDaGlsZChpdGVtKTsKKyAgICB9Cisg
ICAgCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAKKyAg
ICAgICAgdHJ5IHsKKworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgdmFyIHRlc3RBcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRlc3QiKTsKKyAgICAgICAgICAgIHRlc3RBcmVhLmZvY3VzKCk7CisKKyAgICAgICAgICAgIHZh
ciBkaWN0YXRlZFN0cmluZyA9IHRleHRJbnB1dENvbnRyb2xsZXIubWFrZURpY3RhdGVkU3RyaW5n
KCJ0aGlzIGlzIGEgdGV4dCIsICJ0ZXN0IiwgMTAsIDQpOworICAgICAgICAgICAgZG9jdW1lbnQu
ZXhlY0NvbW1hbmQoIlNlbGVjdEFsbCIpOworICAgICAgICAgICAgdGV4dElucHV0Q29udHJvbGxl
ci5pbnNlcnRUZXh0KGRpY3RhdGVkU3RyaW5nKTsKKworICAgICAgICAgICAgdmFyIG1hcmtlZFRl
eHQgPSAiIjsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAg
ICAgICAgdmFyIHRlc3RUZXh0ID0gdGVzdEFyZWEuZmlyc3RDaGlsZDsKKyAgICAgICAgICAgICAg
ICB2YXIgbWFya2VkID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXN0VGV4dCwgIkRp
Y3RhdGlvbkFsdGVybmF0aXZlcyIsIDApOworICAgICAgICAgICAgICAgIGlmIChtYXJrZWQpCisg
ICAgICAgICAgICAgICAgICAgIG1hcmtlZFRleHQgPSBtYXJrZWQudG9TdHJpbmcoKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJtYXJrZWRUZXh0
IiwgInRleHQiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCJURVNUIENPTVBMRVRFIik7
CisKKyAgICAgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCJF
eGNlcHRpb246ICIgKyBleC5kZXNjcmlwdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoY29uc29s
ZV9tZXNzYWdlcyk7CisgICAgICAgIAorICAgIH0gZWxzZSB7CisgICAgICAgIGRvY3VtZW50Lndy
aXRlKCIoY2Fubm90IHJ1biBpbnRlcmFjdGl2ZWx5KSIpOworICAgIH0KKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147479</attachid>
            <date>2012-06-13 21:00:27 -0700</date>
            <delta_ts>2012-06-15 12:13:25 -0700</delta_ts>
            <desc>Update to TOT.</desc>
            <filename>bug-83047-20120613210024.patch</filename>
            <type>text/plain</type>
            <size>132042</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMjY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWE1OGU5YjQxZGJhODE5
MmZhMDAxNDJmN2I2MDBmZTk1ZWZjZDA2OS4uMGMzYjBlZGY2ODVlODZkYzA4MWY4ZDlhMGEyZTgw
ZGY1MDAyY2NhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTA2LTEzICBKaWEg
UHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgdGV4dCB3aXRoIHRleHQgYWx0ZXJu
YXRpdmUgd2l0aCBibHVlIHVuZGVybGluZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgzMDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQt
ZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRm
b3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0Lmh0bWwKKworICAgICAg
ICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdmlzdWFsIGluZGljYXRpb24gb24gZGljdGF0ZWQgdGV4
dCB3aXRoIGFsdGVybmF0aXZlcywgYW5kIHByb3ZpZGluZyBVSQorICAgICAgICB0byBzaG93IGFs
dGVybmF0aXZlIHRleHQgb24gT1MgWC4gTWFqb3JpdHkgb2YgdGhlIGNoYW5nZXMgaXMgZm9yIGdl
bmVyYWxpemluZyBleGlzdGluZyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyCisgICAgICAgIGNs
YXNzIHRvIGhhbmRsZSBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzLiBUaGUgdHdvIG5ldyBjbGFzc2Vz
LCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgYW5kCisgICAgICAgIFRleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZSwgYXJlIHVzZWQgYnkgYm90aCBXZWJLaXQgYW5kIFdLMi4gU28gV2ViQ29yZSBz
ZWVtcyB0byBiZSB0aGUgbmF0dXJhbCBwbGFjZQorICAgICAgICBmb3IgdGhlbS4KKworICAgICAg
ICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3Bw
OiBFeHBhbmRlZCBleGlzaW5nIGNsYXNzIGludGVyZmFjZSB0byBzdXBwb3J0IGRpY3RhdGlvbiBh
bHRlcm5hdGl2ZXMuCisgICAgICAgIChEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFpbHMpOiBNYXJr
ZXIgZGV0YWlsIGNsYXNzIGZvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmUgbWFyay4KKyAgICAgICAg
KFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlRGV0YWlsczo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlRGV0YWlsczo6ZGljdGF0aW9uQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFpbHM6OkRpY3RhdGlv
bkFsdGVybmF0aXZlRGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlOjptYXJrZXJUeXBlc0ZvckFw
cGxpZWREaWN0YXRpb25BbHRlcm5hdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UpOiBHZW5lcmFsaXpl
ZCBleGlzdGluZyBhcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UoKSB0byBoYW5kbGUgZGljdGF0
aW9uIGFsdGVybmF0aXZlcy4KKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXI6OnRpbWVyRmlyZWQpOiBFeHBhbmRlZCBleGlzdGluZyBjb2RlIHRvIGhhbmRsZSBkaWN0
YXRpb24gYWx0ZXJuYXRpdmVzLgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQpOiBFeHBhbmRlZCBleGlzdGlu
ZyBjb2RlIHRvIGhhbmRsZSBkaWN0YXRpb24gYWx0ZXJuYXRpdmVzLgorICAgICAgICAoV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6
IE1vdmVkIHBhcnQgb2YgdGhlIGZ1bmN0aW9uIGludG8gcmVzcG9uZFRvTWFya2VyQXRFbmRPZldv
cmQoKSB0byBpbXByb3ZlIHJlYWRhYmlsaXR5LgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjo6c2hvdWxkU3RhcnRUaW1lckZvcik6CisgICAgICAgIChXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjptYXJrZXJEZXNj
cmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFy
a2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmRpY3Rh
dGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKToKKyAgICAgICAgKiBl
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5vdGlmeUNvbXBvbmVudHNPbkNo
YW5nZWRTZWxlY3Rpb24pOiBSZW5hbWVkIGV4aXN0aW5nIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rp
b24oKSBmdW5jdGlvbiB0byBhdm9pZCBuYW1pbmcgY29sbGlzaW9uLgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjphcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVu
YXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFwcGxpZWRFZGl0
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZm
ZWN0ZWRCeUVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjaGFuZ2VTZWxlY3Rp
b25BZnRlckNvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXNwb25kVG9DaGFu
Z2VkU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGljdGF0aW9uQWx0ZXJu
YXRpdmVzRm9yTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlEaWN0YXRp
b25BbHRlcm5hdGl2ZWx0ZXJuYXRpdmUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6Cisg
ICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvbWFj
L0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oOiBBZGRlZC4gV0sxIGFuZCBXSzIgdXNlIHRo
aXMgY2xhc3MgdG8ga2VlcCB0cmFjayBvZiB0ZXh0IGFsdGVybmF0aXZlcyBvYmplY3RzLgorICAg
ICAgICAoQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKToK
KyAgICAgICAgKEFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRD
b250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyKToKKyAgICAgICAgKiBl
ZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW06IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENv
bnRleHRDb250cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVy
OjphbHRlcm5hdGl2ZXNGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6cmVtb3Zl
QWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OmNsZWFyKToK
KyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWRkQWx0ZXJu
YXRpdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlcjo6c2hvd0FsdGVybmF0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpkaXNtaXNzQWx0ZXJu
YXRpdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6
cmVtb3ZlQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2UuaDogQWRkZWQuICBBIHNpbXBsZSBzdHJ1Y3QgdG8gbWFrZSBpdCBlYXNpZXIg
dG8gcGFzcyBhcm91bmQgYSBwYWlyIG9mIHRleHQgYWx0ZXJuYXRpdmVzIG9iamVjdCBhbmQgcmFu
Z2UuCisgICAgICAgICogZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZTo6VGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3REaWN0YXRpb25U
ZXh0QWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKiBwYWdlL0FsdGVybmF0aXZlVGV4dENsaWVudC5o
OgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDogQWRkZWQgY29kZSB0
byBzaG93IGFsdGVybmF0aXZlIGRpY3RhdGVkIHRleHQgaW4gY29udGV4dCBtZW51LgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3Rl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlm
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0OjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1hcmtlcik6CisKIDIw
MTItMDYtMTMgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgogCiAgICAgICAg
IFJlbW92ZSByZWR1bmRhbnQgY29kZSBmcm9tIFJlbmRlclZpZXcgYW5kIFJlbmRlckJsb2NrCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKaW5kZXggNmNlNTlkMjlmMGZiNzcxODliZGI4Zjc4ZTc0ZDdjZTc0ODRiNTI3
OS4uZWZmODRiZWJiOWZhMGE0ZjRjMjY5ZjMyYTk2ZDMzOWI3OWYxMDRlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTA2LTEzICBKaWEgUHUgIDxqcHVAYXBwbGUuY29t
PgorCisgICAgICAgIE1hcmsgdGV4dCB3aXRoIHRleHQgYWx0ZXJuYXRpdmUgd2l0aCBibHVlIHVu
ZGVybGluZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgzMDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q2hhbmdlcyBpbiBXZWJLaXQgaW5jbHVkZSBpbXBsZW1lbnRhdGlvbiBvZiBuZXcgZnVuY3Rpb25z
IGRlY2xhcmVkIGluIEFsdGVybmF0aXZlVGV4dENsaWVudCwKKyAgICAgICAgYW5kIGxvZ2ljIGZv
ciBjYWxsaW5nIEVkaXRvcjo6aW5zZXJ0RGljdGF0ZWRUZXh0KCkgaW5zdGVhZCBvZiBFZGl0b3I6
Omluc2VydFRleHQoKSB3aGVuIHRoZXJlJ3MKKyAgICAgICAgYWx0ZXJuYXRpdmVzIGF0dGFjaGVk
IHRvIHRoZSBpbnB1dCBzdHJpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db3JyZWN0
aW9uUGFuZWwubW06CisgICAgICAgIChjb3JyZWN0aW9uSW5kaWNhdG9yVHlwZSk6CisgICAgICAg
IChDb3JyZWN0aW9uUGFuZWw6OmhhbmRsZUFjY2VwdGVkUmVwbGFjZW1lbnQpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAoV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQubW06CisgICAgICAgIChXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6
OnNob3dDb3JyZWN0aW9uQWx0ZXJuYXRpdmUpOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50OjpkaXNtaXNzQWx0ZXJuYXRpdmUpOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50OjpkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZl
VGV4dENsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAgICAgIChXZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyk6CisgICAg
ICAgIChXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJ
KToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlzc0RpY3RhdGlvbkFs
dGVybmF0aXZlVUkpOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaWN0YXRp
b25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IHZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHRdKToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgaW5zZXJ0VGV4dDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6
XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2dldFdlYkNvcmVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6
ZnJvbVRleHRBbHRlcm5hdGl2ZXM6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3Nob3dEaWN0YXRp
b25BbHRlcm5hdGl2ZVVJOldlYkNvcmU6OmZvckRpY3RhdGlvbkNvbnRleHQ6XSk6CisgICAgICAg
ICgtW1dlYlZpZXcgX2Rpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJXSk6CisgICAgICAgICgt
W1dlYlZpZXcgX3JlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlczpdKToKKyAgICAgICAgKC1bV2Vi
VmlldyBfZGljdGF0aW9uQWx0ZXJuYXRpdmVzOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmll
d0RhdGEuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLm1tOgorICAgICAgICAoLVtX
ZWJWaWV3UHJpdmF0ZSBpbml0XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwu
aDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisKIDIwMTItMDYtMTEgIEFs
ZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW0NT
UzMgQmFja2dyb3VuZHMgYW5kIEJvcmRlcnNdIFByb3RlY3QgYm94LWRlY29yYXRpb24tYnJlYWsg
YmVoaW5kIGEgZmVhdHVyZSBmbGFnLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDIxNDFiNTQ0MjViN2NkYjEyMmVk
MjAwOGIyMTQ4MDk3N2E1MzU3MWMuLmY0YWE0Mjc1NDU3YzA2MGViNWVhMjMxNTNiYzk4ZDZlOGZh
MDI0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxMi0wNi0xMyAgSmlhIFB1ICA8
anB1QGFwcGxlLmNvbT4KKworICAgICAgICBNYXJrIHRleHQgd2l0aCB0ZXh0IGFsdGVybmF0aXZl
IHdpdGggYmx1ZSB1bmRlcmxpbmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MzA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIENoYW5nZXMgaW4gV2ViS2l0MiBpbmNsdWRlIGltcGxlbWVudGF0aW9uIG9m
IG5ldyBmdW5jdGlvbnMgZGVjbGFyZWQgaW4gQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LAorICAgICAg
ICBhbmQgbG9naWMgZm9yIGNhbGxpbmcgRWRpdG9yOjppbnNlcnREaWN0YXRlZFRleHQoKSBpbnN0
ZWFkIG9mIEVkaXRvcjo6aW5zZXJ0VGV4dCgpIHdoZW4gdGhlcmUncworICAgICAgICBhbHRlcm5h
dGl2ZXMgYXR0YWNoZWQgdG8gdGhlIGlucHV0IHN0cmluZy4KKworICAgICAgICAqIFNoYXJlZC9B
UEkvYy9XS0NvbnRleHRNZW51SXRlbVR5cGVzLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dL
U2hhcmVkQVBJQ2FzdC5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50
SW1wbDo6UGFnZUNsaWVudEltcGwpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
cGFnZUNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphZGREaWN0YXRp
b25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cmVtb3Zl
RGljdGF0aW9uQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OnNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnRJbXBsOjpkaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgaW5zZXJ0VGV4dDpyZXBs
YWNlbWVudFJhbmdlOl0pOgorICAgICAgICAoLVtXS1ZpZXcgdmFsaWRBdHRyaWJ1dGVzRm9yTWFy
a2VkVGV4dF0pOgorICAgICAgICAoLVtXS1ZpZXcgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZVRl
eHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dEaWN0YXRp
b25BbHRlcm5hdGl2ZVVJKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNtaXNz
RGljdGF0aW9uQWx0ZXJuYXRpdmVVSSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tOgorICAgICAgICAoY29y
cmVjdGlvbkluZGljYXRvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpDb3JyZWN0aW9uUGFuZWw6
OmhhbmRsZUFjY2VwdGVkUmVwbGFjZW1lbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omluc2VydERp
Y3RhdGVkVGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQuaDoKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
OjpzaG93Q29ycmVjdGlvbkFsdGVybmF0aXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50OjpkaXNtaXNzQWx0ZXJuYXRpdmUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NBbHRlcm5hdGl2ZVNvb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJlY29yZEF1dG9jb3JyZWN0aW9u
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJl
bW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0
aXZlVGV4dENsaWVudDo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2
ZVVJKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaWN0YXRp
b25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHQpOgorCiAyMDEyLTA2LTEzICBNYXJ0aW4g
Um9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgYW4g
YWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgaW1wbGVtZW50YXRpb24gZm9yIFdlYktpdDIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KaW5kZXggNzFmNjE5NmU0MjJjZDc4OTY4OTZlNjZlYjYxOTVlYzJiODBhMGEw
YS4uMmYxNjhkNjkwMzdiMzNkZGRmOGY5YjI2ZGQ5ZjNmMDhhNjQ3ZDNjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KQEAgLTI1MjYsMyArMjUyNiwxNCBAQCBfX1pOSzdXZWJDb3JlNEtVUkw3aXNFbXB0
eUV2CiBfX1pOSzdXZWJDb3JlNEtVUkw3aXNWYWxpZEV2CiBfX1pOSzdXZWJDb3JlNEtVUkwyMnBy
b3RvY29sSXNJbkhUVFBGYW1pbHlFdgogI2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMpICYmICFk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1df
TEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTElPTikKK19fWk43V2ViQ29yZTI3QWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMTVhZGRBbHRlcm5hdGl2ZXNFUktOM1dURjlSZXRhaW5Q
dHJJMThOU1RleHRBbHRlcm5hdGl2ZXNFRQorX19aTjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXIyMmFsdGVybmF0aXZlc0ZvckNvbnRleHRFeQorX19aTjdXZWJDb3JlMjdBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI1Y2xlYXJFdgorX19aTjdXZWJDb3JlMjdBbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXIxOWRpc21pc3NBbHRlcm5hdGl2ZXNFdgorX19aTjdXZWJDb3JlMjdB
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIxOHJlbW92ZUFsdGVybmF0aXZlc0V5CitfX1pON1dl
YkNvcmUyN0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjE2c2hvd0FsdGVybmF0aXZlc0VQNk5T
Vmlld1JLTlNfOUZsb2F0UmVjdEV5VTEzYmxvY2tfcG9pbnRlckZ2UDhOU1N0cmluZ0UKK19fWk43
V2ViQ29yZTI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlQzFFUDE4TlNUZXh0QWx0ZXJuYXRpdmVz
OF9OU1JhbmdlCitfX1pON1dlYkNvcmUzMmNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVz
RVAxOE5TQXR0cmlidXRlZFN0cmluZ1JOM1dURjZWZWN0b3JJTlNfMjRUZXh0QWx0ZXJuYXRpdmVX
aXRoUmFuZ2VFTG0wRUVFCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MWE3ODVhNWY0YzJhZjBjOGE0YjEzMTk4ODg0
ZjQwN2YxN2Q2YTMxLi4yNmE5M2I4MzJkY2I1MDA5YWVkMmViZDkzNTBlZTAzNDE4NTZkODQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC01NzkxLDYgKzU3OTEsMTAgQEAKIAkJQ0UwOEMzRDExNTJCNTk5QTAwMjFCOEMyIC8qIEFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0UwOEMzQ0YxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwICovOyB9OwogCQlDRTA4QzNEMjE1MkI1OTlBMDAyMUI4QzIgLyog
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0UwOEMzRDAxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9Owog
CQlDRTU0RkQzODEwMTZEOUE2MDA4QjQ0QzggLyogU2NyaXB0U291cmNlUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNTRGRDM3MTAxNkQ5
QTYwMDhCNDRDOCAvKiBTY3JpcHRTb3VyY2VQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNFN0IyREIzMTU4NkFCQUQwMDk4QjNGQSAv
KiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0IyREFGMTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlDRTdCMkRCNDE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0U3QjJEQjAxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlci5tbSAqLzsgfTsKKwkJQ0U3QjJEQjUxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0U3QjJEQjExNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUNFN0IyREI2MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTdCMkRCMjE1
ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tICovOyB9OwogCQlD
RUEzOTQ5QzExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQTM5NDlBMTFENDVD
REEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwICovOyB9OwogCQlDRUEzOTQ5
RDExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUEzOTQ5QjExRDQ1Q0RBMDAzMDk0
Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmggKi87IH07CiAJCUNFQ0FERkM2MTUzNzc4RkYw
MEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUNBREZDMjE1Mzc3OEZGMDBFMzcwNjggLyogRGlj
dGF0aW9uQWx0ZXJuYXRpdmUuY3BwICovOyB9OwpAQCAtMTI5ODcsNiArMTI5OTEsMTAgQEAKIAkJ
Q0UwOEMzRDAxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTU0RkQzNzEwMTZEOUE2MDA4QjQ0
QzggLyogU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2NyaXB0U291cmNlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0U1Q0IxQjMxNEVEQUI2RjAwQkIyNzk1IC8qIEV2ZW50U2VuZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50U2VuZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNFN0IyREFGMTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLmg7IHBhdGggPSBtYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFN0IyREIwMTU4NkFCQUQwMDk4QjNG
QSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW07IHBhdGgg
PSBtYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDRTdCMkRCMTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0
aFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZS5oOyBwYXRoID0gbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTdCMkRCMjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tOyBwYXRoID0gbWFjL1RleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VBMzk0
OUExMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUEzOTQ5QjExRDQ1Q0RBMDAzMDk0Q0YgLyog
U3RhdGljSGFzaFNldE5vZGVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RUNBREZDMjE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA2OTMsOCArMjA3MDEsMTIgQEAKIAkJ
RUQ1MDFEQzkwQjI0OUYzOTAwQUUxOEQ5IC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0U3QjJEQjAxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSAqLywKKwkJCQlDRTdCMkRBRjE1ODZBQkFEMDA5OEIz
RkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggKi8sCiAJCQkJRUQ1MDFEQzUwQjI0
OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAqLywKIAkJCQk0QThDOTZFQTBCRTY5MDMyMDA0
RUVGRjAgLyogRnJhbWVTZWxlY3Rpb25NYWMubW0gKi8sCisJCQkJQ0U3QjJEQjIxNTg2QUJBRDAw
OThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSAqLywKKwkJCQlDRTdCMkRCMTE1
ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggKi8sCiAJCQkpOwog
CQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNTA2MSw2ICsy
NTA3Myw4IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29y
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1
ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENTM3MzUzMTM3QjY1MTgwMDAwOERDRSAvKiBa
ZXJvUG9sZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0U3QjJEQjMxNTg2QUJBRDAwOThCM0ZBIC8q
IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0U3QjJE
QjUxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0yODEwMiw2ICsyODExNiw4IEBACiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEz
Mzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIxMzdCNjUx
ODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlBMUI2Rjk3MTU4
ODY5QzgwMDExQThDNCAvKiBKU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQ0U3QjJEQjQxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNFN0IyREI2MTU4NkFCQUQwMDk4QjNGQSAvKiBU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDhk
MDlmZjFiOTk4NDcxZWE2MWYzODkyNjhlNDkyNGY3MDRjZjEzYjEuLmIxOTlhZjE1NjVjYWRjZjVi
MTE2NjY0ZTQ3ZTFiYzVmYTcyZmQ1YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAtNjgsNiArNjgsMjMgQEAgcHJp
dmF0ZToKICAgICBTdHJpbmcgbV9yZXBsYWNlbWVudFN0cmluZzsKIH07CiAKK2NsYXNzIERpY3Rh
dGlvbkFsdGVybmF0aXZlRGV0YWlscyA6IHB1YmxpYyBBbHRlcm5hdGl2ZVRleHREZXRhaWxzIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFp
bHM+IGNyZWF0ZSh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBEaWN0YXRpb25BbHRlcm5hdGl2ZURldGFpbHMoZGljdGF0aW9uQ29u
dGV4dCkpOworICAgIH0KKworICAgIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBtX2RpY3RhdGlvbkNvbnRleHQ7IH0KKworcHJpdmF0ZToKKyAgICBEaWN0YXRpb25B
bHRlcm5hdGl2ZURldGFpbHModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKKyAgICA6IG1fZGlj
dGF0aW9uQ29udGV4dChkaWN0YXRpb25Db250ZXh0KQorICAgIHsgfQorCisgICAgdWludDY0X3Qg
bV9kaWN0YXRpb25Db250ZXh0OworfTsKKwogI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkK
IAogc3RhdGljIGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4mIG1hcmtl
clR5cGVzRm9yQXV0b2NvcnJlY3Rpb24oKQpAQCAtOTIsNiArMTA5LDE0IEBAIHN0YXRpYyBjb25z
dCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBtYXJrZXJUeXBlc0ZvclJlcGxh
Y2VtZW50KCkKICAgICByZXR1cm4gbWFya2VyVHlwZXNGb3JSZXBsYWNlbWVudDsKIH0KIAorc3Rh
dGljIGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4mIG1hcmtlclR5cGVz
Rm9yQXBwbGllZERpY3RhdGlvbkFsdGVybmF0aXZlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4sIG1hcmtlclR5cGVzRm9yQXBw
bGllZERpY3RhdGlvbkFsdGVybmF0aXZlLCAoKSk7CisgICAgaWYgKG1hcmtlclR5cGVzRm9yQXBw
bGllZERpY3RhdGlvbkFsdGVybmF0aXZlLmlzRW1wdHkoKSkKKyAgICAgICAgbWFya2VyVHlwZXNG
b3JBcHBsaWVkRGljdGF0aW9uQWx0ZXJuYXRpdmUuYXBwZW5kKERvY3VtZW50TWFya2VyOjpTcGVs
bENoZWNraW5nRXhlbXB0aW9uKTsKKyAgICByZXR1cm4gbWFya2VyVHlwZXNGb3JBcHBsaWVkRGlj
dGF0aW9uQWx0ZXJuYXRpdmU7Cit9CisKIHN0YXRpYyBib29sIG1hcmtlcnNIYXZlSWRlbnRpY2Fs
RGVzY3JpcHRpb24oY29uc3QgVmVjdG9yPERvY3VtZW50TWFya2VyKj4mIG1hcmtlcnMpCiB7CiAg
ICAgaWYgKG1hcmtlcnMuaXNFbXB0eSgpKQpAQCAtMjE1LDE4ICsyNDAsMTggQEAgU3RyaW5nIEFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmRpc21pc3NTb29uKFJlYXNvbkZvckRpc21pc3NpbmdB
bHRlcm5hdGl2ZVRleHQKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHQoY29uc3QgU3RyaW5nJiBhbHRl
cm5hdGl2ZSwgY29uc3QgVmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiYgbWFya2Vy
VHlwZXNUb0FkZCkKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5h
dGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlKiByYW5nZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5h
dGl2ZSwgQWx0ZXJuYXRpdmVUZXh0VHlwZSBhbHRlcm5hdGl2ZVR5cGUsIGNvbnN0IFZlY3RvcjxE
b2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4mIG1hcmtlclR5cGVzVG9BZGQpCiB7Ci0gICAgaWYg
KCFtX2FsdGVybmF0aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUpCisgICAgaWYgKCFy
YW5nZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
UmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uID0gbV9hbHRl
cm5hdGl2ZVRleHRJbmZvLnJhbmdlV2l0aEFsdGVybmF0aXZlLT5jbG9uZVJhbmdlKGVjKTsKKyAg
ICBSZWZQdHI8UmFuZ2U+IHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24gPSByYW5n
ZS0+Y2xvbmVSYW5nZShlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAKLSAgICBz
ZXRTdGFydChwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLmdldCgpLCBzdGFydE9m
UGFyYWdyYXBoKG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZS0+c3Rh
cnRQb3NpdGlvbigpKSk7Ci0gICAgc2V0RW5kKHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJl
Y3Rpb24uZ2V0KCksIGVuZE9mUGFyYWdyYXBoKG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdp
dGhBbHRlcm5hdGl2ZS0+ZW5kUG9zaXRpb24oKSkpOworICAgIHNldFN0YXJ0KHBhcmFncmFwaFJh
bmdlQ29udGFpbmluZ0NvcnJlY3Rpb24uZ2V0KCksIHN0YXJ0T2ZQYXJhZ3JhcGgocmFuZ2UtPnN0
YXJ0UG9zaXRpb24oKSkpOworICAgIHNldEVuZChwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3Jy
ZWN0aW9uLmdldCgpLCBlbmRPZlBhcmFncmFwaChyYW5nZS0+ZW5kUG9zaXRpb24oKSkpOwogCiAg
ICAgLy8gQWZ0ZXIgd2UgcmVwbGFjZSB0aGUgd29yZCBhdCByYW5nZSByYW5nZVdpdGhBbHRlcm5h
dGl2ZSwgd2UgbmVlZCB0byBhZGQgbWFya2VycyB0byB0aGF0IHJhbmdlLgogICAgIC8vIEhvd2V2
ZXIsIG9uY2UgdGhlIHJlcGxhY2VtZW50IHRvb2sgcGxhY2UsIHRoZSB2YWx1ZSBvZiByYW5nZVdp
dGhBbHRlcm5hdGl2ZSBpcyBub3QgdmFsaWQgYW55bW9yZS4KQEAgLTIzOCw3ICsyNjMsNyBAQCB2
b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0KGNvbnN0
IFN0cmluZyYgYWx0ZXJuYXRpdmUsCiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBQb3NpdGlvbiBzdGFydFBvc2l0aW9uT2ZyYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IG1fYWx0ZXJu
YXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZS0+c3RhcnRQb3NpdGlvbigpOworICAg
IFBvc2l0aW9uIHN0YXJ0UG9zaXRpb25PZnJhbmdlV2l0aEFsdGVybmF0aXZlID0gcmFuZ2UtPnN0
YXJ0UG9zaXRpb24oKTsKICAgICBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFu
Z2UtPnNldEVuZChzdGFydFBvc2l0aW9uT2ZyYW5nZVdpdGhBbHRlcm5hdGl2ZS5jb250YWluZXJO
b2RlKCksIHN0YXJ0UG9zaXRpb25PZnJhbmdlV2l0aEFsdGVybmF0aXZlLmNvbXB1dGVPZmZzZXRJ
bkNvbnRhaW5lck5vZGUoKSwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuOwpAQCAt
MjQ3LDcgKzI3Miw3IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRl
cm5hdGl2ZVRleHQoY29uc3QgU3RyaW5nJiBhbHRlcm5hdGl2ZSwKICAgICBpbnQgY29ycmVjdGlv
blN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGNvcnJl
Y3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZS5nZXQoKSk7CiAKICAgICAvLyBDbG9u
ZSB0aGUgcmFuZ2UsIHNpbmNlIHRoZSBjYWxsZXIgb2YgdGhpcyBtZXRob2QgbWF5IHdhbnQgdG8g
a2VlcCB0aGUgb3JpZ2luYWwgcmFuZ2UgYXJvdW5kLgotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VX
aXRoQWx0ZXJuYXRpdmUgPSBtX2FsdGVybmF0aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRp
dmUtPmNsb25lUmFuZ2UoZWMpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VXaXRoQWx0ZXJuYXRp
dmUgPSByYW5nZS0+Y2xvbmVSYW5nZShlYyk7CiAgICAgYXBwbHlDb21tYW5kKFNwZWxsaW5nQ29y
cmVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShyYW5nZVdpdGhBbHRlcm5hdGl2ZSwgYWx0ZXJuYXRpdmUp
KTsKICAgICBzZXRFbmQocGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi5nZXQoKSwg
bV9mcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLnN0YXJ0KCkpOwogICAgIFJlZlB0cjxS
YW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UocGFyYWdyYXBo
UmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi5nZXQoKSwgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5Q
YXJhZ3JhcGgsIGFsdGVybmF0aXZlLmxlbmd0aCgpKTsKQEAgLTI1OSwxMyArMjg0LDggQEAgdm9p
ZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dChjb25zdCBT
dHJpbmcmIGFsdGVybmF0aXZlLAogCiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKiBtYXJr
ZXJzID0gcmVwbGFjZW1lbnRSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+bWFy
a2VycygpOwogICAgIHNpemVfdCBzaXplID0gbWFya2VyVHlwZXNUb0FkZC5zaXplKCk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgRG9jdW1lbnRNYXJr
ZXI6Ok1hcmtlclR5cGUgbWFya2VyVHlwZSA9IG1hcmtlclR5cGVzVG9BZGRbaV07Ci0gICAgICAg
IFN0cmluZyBkZXNjcmlwdGlvbjsKLSAgICAgICAgaWYgKG1fYWx0ZXJuYXRpdmVUZXh0SW5mby50
eXBlICE9IEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb24gJiYgKG1hcmtlclR5cGUgPT0gRG9j
dW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50IHx8IG1hcmtlclR5cGUgPT0gRG9jdW1lbnRNYXJrZXI6
OkF1dG9jb3JyZWN0ZWQpKQotICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBtX2FsdGVybmF0aXZl
VGV4dEluZm8ub3JpZ2luYWxUZXh0OwotICAgICAgICBtYXJrZXJzLT5hZGRNYXJrZXIocmVwbGFj
ZW1lbnRSYW5nZS5nZXQoKSwgbWFya2VyVHlwZSwgZGVzY3JpcHRpb24pOwotICAgIH0KKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgbWFya2Vycy0+YWRkTWFy
a2VyKHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCksIG1hcmtlclR5cGVzVG9BZGRbaV0sIG1hcmtlckRl
c2NyaXB0aW9uRm9yQXBwbGllZEFsdGVybmF0aXZlVGV4dChhbHRlcm5hdGl2ZVR5cGUsIG1hcmtl
clR5cGVzVG9BZGRbaV0pKTsKIH0KIAogYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjph
cHBseUF1dG9jb3JyZWN0aW9uQmVmb3JlVHlwaW5nSWZBcHByb3ByaWF0ZSgpCkBAIC0zNDgsMTYg
KzM2OCwzMiBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyZWQoVGlt
ZXI8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcj4qKQogICAgICAgICB9CiAgICAgfQogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0YXRpb25BbHRlcm5hdGl2
ZXM6CisgICAgeworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgICAgICBjb25z
dCBSYW5nZSogcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBtX2FsdGVybmF0aXZlVGV4dEluZm8ucmFu
Z2VXaXRoQWx0ZXJuYXRpdmUuZ2V0KCk7CisgICAgICAgIGNvbnN0IERpY3RhdGlvbkFsdGVybmF0
aXZlRGV0YWlscyogZGV0YWlscyA9IHN0YXRpY19jYXN0PGNvbnN0IERpY3RhdGlvbkFsdGVybmF0
aXZlRGV0YWlscyo+KG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5kZXRhaWxzLmdldCgpKTsKKyAgICAg
ICAgaWYgKCFyYW5nZVdpdGhBbHRlcm5hdGl2ZSB8fCAhZGV0YWlscyB8fCAhZGV0YWlscy0+ZGlj
dGF0aW9uQ29udGV4dCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBGbG9hdFJlY3Qg
Ym91bmRpbmdCb3ggPSByb290Vmlld1JlY3RGb3JSYW5nZShyYW5nZVdpdGhBbHRlcm5hdGl2ZSk7
CisgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5pc0FjdGl2ZSA9IHRydWU7CisgICAgICAg
IGlmICghYm91bmRpbmdCb3guaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAoQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50KiBjbGllbnQgPSBhbHRlcm5hdGl2ZVRleHRDbGllbnQoKSkKKyAgICAgICAg
ICAgICAgICBjbGllbnQtPnNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGJvdW5kaW5nQm94LCBk
ZXRhaWxzLT5kaWN0YXRpb25Db250ZXh0KCkpOworICAgICAgICB9CisjZW5kaWYKKyAgICB9Cisg
ICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
OjpoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCkKIHsK
LSAgICBSYW5nZSogcmVwbGFjZWRSYW5nZSA9IG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdp
dGhBbHRlcm5hdGl2ZS5nZXQoKTsKLSAgICBpZiAoIXJlcGxhY2VkUmFuZ2UgfHwgbV9mcmFtZS0+
ZG9jdW1lbnQoKSAhPSByZXBsYWNlZFJhbmdlLT5vd25lckRvY3VtZW50KCkpCisgICAgUmFuZ2Uq
IHJhbmdlV2l0aEFsdGVybmF0aXZlID0gbV9hbHRlcm5hdGl2ZVRleHRJbmZvLnJhbmdlV2l0aEFs
dGVybmF0aXZlLmdldCgpOworICAgIGlmICghcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgfHwgbV9mcmFt
ZS0+ZG9jdW1lbnQoKSAhPSByYW5nZVdpdGhBbHRlcm5hdGl2ZS0+b3duZXJEb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgY3VycmVudFdvcmQgPSBwbGFpblRleHQobV9h
bHRlcm5hdGl2ZVRleHRJbmZvLnJhbmdlV2l0aEFsdGVybmF0aXZlLmdldCgpKTsKKyAgICBTdHJp
bmcgY3VycmVudFdvcmQgPSBwbGFpblRleHQocmFuZ2VXaXRoQWx0ZXJuYXRpdmUpOwogICAgIC8v
IENoZWNrIHRvIHNlZSBpZiB0aGUgd29yZCB3ZSBhcmUgYWJvdXQgdG8gY29ycmVjdCBoYXMgYmVl
biBjaGFuZ2VkIGJldHdlZW4gdGltZXIgZmlyaW5nIGFuZCBjYWxsYmFjayBiZWluZyB0cmlnZ2Vy
ZWQuCiAgICAgaWYgKGN1cnJlbnRXb3JkICE9IG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5vcmlnaW5h
bFRleHQpCiAgICAgICAgIHJldHVybjsKQEAgLTM2NywxNCArNDAzLDE4IEBAIHZvaWQgQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlcjo6aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3Qg
U3RyaW5nJiByZXN1CiAgICAgc3dpdGNoIChtX2FsdGVybmF0aXZlVGV4dEluZm8udHlwZSkgewog
ICAgIGNhc2UgQWx0ZXJuYXRpdmVUZXh0VHlwZUNvcnJlY3Rpb246CiAgICAgICAgIGlmIChyZXN1
bHQubGVuZ3RoKCkpCi0gICAgICAgICAgICBhcHBseUFsdGVybmF0aXZlVGV4dChyZXN1bHQsIG1h
cmtlclR5cGVzRm9yQXV0b2NvcnJlY3Rpb24oKSk7CisgICAgICAgICAgICBhcHBseUFsdGVybmF0
aXZlVGV4dFRvUmFuZ2UocmFuZ2VXaXRoQWx0ZXJuYXRpdmUsIHJlc3VsdCwgbV9hbHRlcm5hdGl2
ZVRleHRJbmZvLnR5cGUsIG1hcmtlclR5cGVzRm9yQXV0b2NvcnJlY3Rpb24oKSk7CiAgICAgICAg
IGVsc2UgaWYgKCFtX2lzRGlzbWlzc2VkQnlFZGl0aW5nKQotICAgICAgICAgICAgcmVwbGFjZWRS
YW5nZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5hZGRNYXJrZXIo
cmVwbGFjZWRSYW5nZSwgRG9jdW1lbnRNYXJrZXI6OlJlamVjdGVkQ29ycmVjdGlvbiwgbV9hbHRl
cm5hdGl2ZVRleHRJbmZvLm9yaWdpbmFsVGV4dCk7CisgICAgICAgICAgICByYW5nZVdpdGhBbHRl
cm5hdGl2ZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5hZGRNYXJr
ZXIocmFuZ2VXaXRoQWx0ZXJuYXRpdmUsIERvY3VtZW50TWFya2VyOjpSZWplY3RlZENvcnJlY3Rp
b24sIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5vcmlnaW5hbFRleHQpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb246CiAgICAgY2FzZSBBbHRlcm5h
dGl2ZVRleHRUeXBlU3BlbGxpbmdTdWdnZXN0aW9uczoKICAgICAgICAgaWYgKHJlc3VsdC5sZW5n
dGgoKSkKLSAgICAgICAgICAgIGFwcGx5QWx0ZXJuYXRpdmVUZXh0KHJlc3VsdCwgbWFya2VyVHlw
ZXNGb3JSZXBsYWNlbWVudCgpKTsKKyAgICAgICAgICAgIGFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9S
YW5nZShyYW5nZVdpdGhBbHRlcm5hdGl2ZSwgcmVzdWx0LCBtX2FsdGVybmF0aXZlVGV4dEluZm8u
dHlwZSwgbWFya2VyVHlwZXNGb3JSZXBsYWNlbWVudCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBbHRlcm5hdGl2ZVRleHRUeXBlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOgorICAgICAgICBp
ZiAocmVzdWx0Lmxlbmd0aCgpKQorICAgICAgICAgICAgYXBwbHlBbHRlcm5hdGl2ZVRleHRUb1Jh
bmdlKHJhbmdlV2l0aEFsdGVybmF0aXZlLCByZXN1bHQsIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby50
eXBlLCBtYXJrZXJUeXBlc0ZvckFwcGxpZWREaWN0YXRpb25BbHRlcm5hdGl2ZSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCkBAIC00MDAsNyArNDQwLDcgQEAgRmxvYXRSZWN0IEFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI6OnJvb3RWaWV3UmVjdEZvclJhbmdlKGNvbnN0IFJhbmdlKiByYW5n
ZSkgY28KICAgICByZXR1cm4gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KEludFJlY3QoYm91bmRp
bmdSZWN0KSk7CiB9ICAgICAgICAKIAotdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpy
ZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVj
dGlvbikKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvQ2hhbmdlZFNl
bGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24sIEZyYW1lU2VsZWN0
aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgVmlzaWJsZVNlbGVjdGlv
biBjdXJyZW50U2VsZWN0aW9uKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKSk7CiAg
ICAgLy8gV2hlbiB1c2VyIG1vdmVzIGNhcmV0IHRvIHRoZSBlbmQgb2YgYXV0b2NvcnJlY3RlZCB3
b3JkIGFuZCBwYXVzZXMsIHdlIHNob3cgdGhlIHBhbmVsCkBAIC00MjYsMjggKzQ2NiwxNSBAQCB2
b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24o
Y29uc3QgVmlzaWJsZVNlbGVjdGlvbgogICAgICAgICByZXR1cm47CiAKICAgICBOb2RlKiBub2Rl
ID0gcG9zaXRpb24uY29udGFpbmVyTm9kZSgpOwotICAgIGludCBlbmRPZmZzZXQgPSBwb3NpdGlv
bi5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBt
YXJrZXJzID0gbm9kZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5tYXJrZXJzRm9yKG5vZGUpOwog
ICAgIHNpemVfdCBtYXJrZXJDb3VudCA9IG1hcmtlcnMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbWFya2VyQ291bnQ7ICsraSkgewogICAgICAgICBjb25zdCBEb2N1bWVudE1h
cmtlciogbWFya2VyID0gbWFya2Vyc1tpXTsKLSAgICAgICAgaWYgKCFzaG91bGRTdGFydFRpbWVy
Rm9yKG1hcmtlciwgZW5kT2Zmc2V0KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBS
ZWZQdHI8UmFuZ2U+IHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9mcmFtZS0+ZG9jdW1lbnQo
KSwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgp
KTsKLSAgICAgICAgU3RyaW5nIGN1cnJlbnRXb3JkID0gcGxhaW5UZXh0KHdvcmRSYW5nZS5nZXQo
KSk7Ci0gICAgICAgIGlmICghY3VycmVudFdvcmQubGVuZ3RoKCkpCisgICAgICAgIGlmICghbWFy
a2VyKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRJ
bmZvLnJhbmdlV2l0aEFsdGVybmF0aXZlID0gd29yZFJhbmdlOwotICAgICAgICBtX2FsdGVybmF0
aXZlVGV4dEluZm8ub3JpZ2luYWxUZXh0ID0gY3VycmVudFdvcmQ7Ci0gICAgICAgIGlmIChtYXJr
ZXItPnR5cGUoKSA9PSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpCi0gICAgICAgICAgICBzdGFy
dEFsdGVybmF0aXZlVGV4dFVJVGltZXIoQWx0ZXJuYXRpdmVUZXh0VHlwZVNwZWxsaW5nU3VnZ2Vz
dGlvbnMpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5m
by5kZXRhaWxzID0gQXV0b2NvcnJlY3Rpb25BbHRlcm5hdGl2ZURldGFpbHM6OmNyZWF0ZShtYXJr
ZXItPmRlc2NyaXB0aW9uKCkpOwotICAgICAgICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRp
bWVyKEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb24pOwotICAgICAgICB9Ci0KLSAgICAgICAg
YnJlYWs7CisgICAgICAgIGlmIChyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZCgqbWFya2VyLCBw
b3NpdGlvbiwgb3B0aW9ucykpCisgICAgICAgICAgICBicmVhazsKICAgICB9CiB9CiAKQEAgLTU5
OCw3ICs2MjUsNjMgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpwcm9jZXNzTWFy
a2Vyc09uVGV4dFRvQmVSZXBsYWNlZEJ5UmVzdWx0KGNvbnN0IFQKIAogICAgIHJldHVybiB0cnVl
OwogfQotICAgIAorCitib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnNob3VsZFN0YXJ0
VGltZXJGb3IoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXIgJm1hcmtlciwgaW50IGVuZE9m
ZnNldCkgY29uc3QKK3sKKyAgICByZXR1cm4gKCgobWFya2VyLnR5cGUoKSA9PSBEb2N1bWVudE1h
cmtlcjo6UmVwbGFjZW1lbnQgJiYgIW1hcmtlci5kZXNjcmlwdGlvbigpLmlzTnVsbCgpKSB8fCBt
YXJrZXIudHlwZSgpID09IERvY3VtZW50TWFya2VyOjpTcGVsbGluZyB8fCBtYXJrZXIudHlwZSgp
ID09IERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpICYmIHN0YXRpY19jYXN0
PGludD4obWFya2VyLmVuZE9mZnNldCgpKSA9PSBlbmRPZmZzZXQpOworfQorCitib29sIEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb01hcmtlckF0RW5kT2ZXb3JkKGNvbnN0IERv
Y3VtZW50TWFya2VyJiBtYXJrZXIsIGNvbnN0IFBvc2l0aW9uJiBlbmRPZldvcmRQb3NpdGlvbiwg
RnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBpZiAo
b3B0aW9ucyAmIEZyYW1lU2VsZWN0aW9uOjpEaWN0YXRpb25UcmlnZ2VyZWQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIXNob3VsZFN0YXJ0VGltZXJGb3IobWFya2VyLCBlbmRPZldv
cmRQb3NpdGlvbi5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBOb2RlKiBub2RlID0gZW5kT2ZXb3JkUG9zaXRpb24uY29udGFpbmVyTm9kZSgpOwor
ICAgIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShtX2ZyYW1lLT5kb2N1
bWVudCgpLCBub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLmVuZE9mZnNl
dCgpKTsKKyAgICBpZiAoIXdvcmRSYW5nZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFN0
cmluZyBjdXJyZW50V29yZCA9IHBsYWluVGV4dCh3b3JkUmFuZ2UuZ2V0KCkpOworICAgIGlmICgh
Y3VycmVudFdvcmQubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX2FsdGVy
bmF0aXZlVGV4dEluZm8ub3JpZ2luYWxUZXh0ID0gY3VycmVudFdvcmQ7CisgICAgc3dpdGNoICht
YXJrZXIudHlwZSgpKSB7CisgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmc6CisgICAg
ICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHdvcmRSYW5n
ZTsKKyAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLmRldGFpbHMgPSBBdXRvY29ycmVjdGlv
bkFsdGVybmF0aXZlRGV0YWlsczo6Y3JlYXRlKCIiKTsKKyAgICAgICAgc3RhcnRBbHRlcm5hdGl2
ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVTcGVsbGluZ1N1Z2dlc3Rpb25zKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQ6CisgICAg
ICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHdvcmRSYW5n
ZTsKKyAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLmRldGFpbHMgPSBBdXRvY29ycmVjdGlv
bkFsdGVybmF0aXZlRGV0YWlsczo6Y3JlYXRlKG1hcmtlci5kZXNjcmlwdGlvbigpKTsKKyAgICAg
ICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNp
b24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25B
bHRlcm5hdGl2ZXM6IHsKKyAgICAgICAgY29uc3QgRGljdGF0aW9uTWFya2VyRGV0YWlscyogbWFy
a2VyRGV0YWlscyA9IHN0YXRpY19jYXN0PGNvbnN0IERpY3RhdGlvbk1hcmtlckRldGFpbHMqPiht
YXJrZXIuZGV0YWlscygpKTsKKyAgICAgICAgaWYgKCFtYXJrZXJEZXRhaWxzKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoY3VycmVudFdvcmQgIT0gbWFya2VyRGV0YWls
cy0+b3JpZ2luYWxUZXh0KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG1f
YWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHdvcmRSYW5nZTsKKyAg
ICAgICAgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLmRldGFpbHMgPSBEaWN0YXRpb25BbHRlcm5hdGl2
ZURldGFpbHM6OmNyZWF0ZShtYXJrZXJEZXRhaWxzLT5kaWN0YXRpb25Db250ZXh0KCkpOworICAg
ICAgICBzdGFydEFsdGVybmF0aXZlVGV4dFVJVGltZXIoQWx0ZXJuYXRpdmVUZXh0VHlwZURpY3Rh
dGlvbkFsdGVybmF0aXZlcyk7CisgICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCitTdHJpbmcgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFy
a2VyRGVzY3JpcHRpb25Gb3JBcHBsaWVkQWx0ZXJuYXRpdmVUZXh0KEFsdGVybmF0aXZlVGV4dFR5
cGUgYWx0ZXJuYXRpdmVUZXh0VHlwZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgbWFya2Vy
VHlwZSkKK3sKKworICAgIGlmIChhbHRlcm5hdGl2ZVRleHRUeXBlICE9IEFsdGVybmF0aXZlVGV4
dFR5cGVSZXZlcnNpb24gJiYgYWx0ZXJuYXRpdmVUZXh0VHlwZSAhPSBBbHRlcm5hdGl2ZVRleHRU
eXBlRGljdGF0aW9uQWx0ZXJuYXRpdmVzICYmIChtYXJrZXJUeXBlID09IERvY3VtZW50TWFya2Vy
OjpSZXBsYWNlbWVudCB8fCBtYXJrZXJUeXBlID09IERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVj
dGVkKSkKKyAgICAgICAgcmV0dXJuIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5vcmlnaW5hbFRleHQ7
CisgICAgcmV0dXJuICIiOworfQorCiAjZW5kaWYKIAogYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjppbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0
b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIEV2ZW50KiB0
cmlnZ2VyaW5nRXZlbnQpCkBAIC02MjQsNCArNzA3LDQ4IEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlcjo6aW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3Qg
VmVjCiAgICAgcmV0dXJuIGV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpOwogfQogCit2b2lkIEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlc0Zvck1hcmtl
cihjb25zdCBEb2N1bWVudE1hcmtlciogbWFya2VyKQoreworI2lmIFVTRShESUNUQVRJT05fQUxU
RVJOQVRJVkVTKQorICAgIERpY3RhdGlvbk1hcmtlckRldGFpbHMqIGRldGFpbHMgPSBzdGF0aWNf
Y2FzdDxEaWN0YXRpb25NYXJrZXJEZXRhaWxzKj4obWFya2VyLT5kZXRhaWxzKCkpOworICAgIGlm
IChBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGNsaWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgp
KQorICAgICAgICBjbGllbnQtPnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyhkZXRhaWxzLT5k
aWN0YXRpb25Db250ZXh0KCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obWFya2VyKTsKKyNl
bmRpZgorfQorCitWZWN0b3I8U3RyaW5nPiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpkaWN0
YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIoY29uc3QgRG9jdW1lbnRNYXJrZXIqIG1hcmtlcikK
K3sKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBBU1NFUlQobWFya2VyLT50
eXBlKCkgPT0gRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAgaWYg
KEFsdGVybmF0aXZlVGV4dENsaWVudCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkp
IHsKKyAgICAgICAgRGljdGF0aW9uTWFya2VyRGV0YWlscyogZGV0YWlscyA9IHN0YXRpY19jYXN0
PERpY3RhdGlvbk1hcmtlckRldGFpbHMqPihtYXJrZXItPmRldGFpbHMoKSk7CisgICAgICAgIHJl
dHVybiBjbGllbnQtPmRpY3RhdGlvbkFsdGVybmF0aXZlcyhkZXRhaWxzLT5kaWN0YXRpb25Db250
ZXh0KCkpOworICAgIH0KKyAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKG1hcmtlcik7CisgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CisjZW5k
aWYKK30KKwordm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFs
dGVybmF0aXZlKGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmVTdHJpbmcpCit7CisjaWYgVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgRWRpdG9yKiBlZGl0b3IgPSBtX2ZyYW1lLT5lZGl0
b3IoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvbiA9IGVkaXRvci0+c2VsZWN0ZWRSYW5n
ZSgpOworICAgIGlmICghc2VsZWN0aW9uIHx8ICFlZGl0b3ItPnNob3VsZEluc2VydFRleHQoYWx0
ZXJuYXRpdmVTdHJpbmcsIHNlbGVjdGlvbi5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVk
KSkKKyAgICAgICAgcmV0dXJuOworICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciogbWFya2Vy
cyA9IHNlbGVjdGlvbi0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpOwor
ICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcio+IGRpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcnMg
PSBtYXJrZXJzLT5tYXJrZXJzSW5SYW5nZShzZWxlY3Rpb24uZ2V0KCksIERvY3VtZW50TWFya2Vy
OjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGlj
dGF0aW9uQWx0ZXJuYXRpdmVzTWFya2Vycy5zaXplKCk7ICsraSkKKyAgICAgICAgcmVtb3ZlRGlj
dGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKGRpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcnNb
aV0pOworCisgICAgYXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKHNlbGVjdGlvbi5nZXQoKSwg
YWx0ZXJuYXRpdmVTdHJpbmcsIEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0YXRpb25BbHRlcm5hdGl2
ZXMsIG1hcmtlclR5cGVzRm9yQXBwbGllZERpY3RhdGlvbkFsdGVybmF0aXZlKCkpOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oYWx0ZXJuYXRpdmVTdHJpbmcpOworI2VuZGlmCit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLmgKaW5kZXggMjg0NDllZmQ5M2U1NzQwYTA5ZTM1YjY1NGI4OWI1
MGM3OTgwOGQ5Yi4uZjZlNjQ4NGQ0MjQ4OTIwMGY3ZTk3NmI0YjI3MmVmYzQxYmM5N2FmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFsdGVybmF0aXZlVGV4dENsaWVudC5o
IgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyLmgiCisjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24u
aCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2luZy5oIgogI2luY2x1
ZGUgIlRpbWVyLmgiCkBAIC0xMDgsNyArMTA5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9u
ZFRvVW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBjb25z
dCBTdHJpbmcmIGNvcnJlY3RlZCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKSBVTkxFU1NfRU5B
QkxFRCh7IFVOVVNFRF9QQVJBTShjb3JyZWN0ZWQpOyBVTlVTRURfUEFSQU0oY29ycmVjdGlvbik7
IH0pCiAgICAgdm9pZCByZXNwb25kVG9BcHBsaWVkRWRpdGluZyhDb21wb3NpdGVFZGl0Q29tbWFu
ZCopIFVOTEVTU19FTkFCTEVEKHsgfSkKICAgICB2b2lkIHJlc3BvbmRUb1VuYXBwbGllZEVkaXRp
bmcoRWRpdENvbW1hbmRDb21wb3NpdGlvbiopIFVOTEVTU19FTkFCTEVEKHsgfSkKLSAgICB2b2lk
IHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2Vs
ZWN0aW9uKSBVTkxFU1NfRU5BQkxFRCh7IFVOVVNFRF9QQVJBTShvbGRTZWxlY3Rpb24pOyB9KQor
ICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBvbGRTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zKSBVTkxF
U1NfRU5BQkxFRCh7IFVOVVNFRF9QQVJBTShvbGRTZWxlY3Rpb24pOyB9KQogCiAgICAgdm9pZCBz
dG9wUGVuZGluZ0NvcnJlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9u
KSBVTkxFU1NfRU5BQkxFRCh7IFVOVVNFRF9QQVJBTShvbGRTZWxlY3Rpb24pOyB9KQogICAgIHZv
aWQgYXBwbHlQZW5kaW5nQ29ycmVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rp
b25BZnRlclR5cGluZykgVU5MRVNTX0VOQUJMRUQoeyBVTlVTRURfUEFSQU0oc2VsZWN0aW9uQWZ0
ZXJUeXBpbmcpOyB9KQpAQCAtMTMwLDIwICsxMzEsMjEgQEAgcHVibGljOgogICAgIHZvaWQgZGVs
ZXRlZEF1dG9jb3JyZWN0aW9uQXRQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luYWxTdHJpbmcpIFVOTEVTU19FTkFCTEVEKHsgVU5VU0VEX1BBUkFNKG9yaWdpbmFs
U3RyaW5nKTsgfSkKIAogICAgIGJvb2wgaW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYs
IGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mLCBFdmVudCopOworICAgIHZvaWQg
cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKGNvbnN0IERvY3VtZW50TWFya2Vy
Kik7CisgICAgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKGNv
bnN0IERvY3VtZW50TWFya2VyKik7CisgICAgdm9pZCBhcHBseURpY3RhdGlvbkFsdGVybmF0aXZl
KGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmVTdHJpbmcpOwogCiBwcml2YXRlOgogI2lmIFVTRShB
VVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICBTdHJpbmcgZGlzbWlzc1Nvb24oUmVhc29uRm9yRGlz
bWlzc2luZ0FsdGVybmF0aXZlVGV4dCk7Ci0gICAgdm9pZCBhcHBseUFsdGVybmF0aXZlVGV4dChj
b25zdCBTdHJpbmcmIGFsdGVybmF0aXZlLCBjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1h
cmtlclR5cGU+Jik7CisgICAgdm9pZCBhcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UoY29uc3Qg
UmFuZ2UqLCBjb25zdCBTdHJpbmcmIGFsdGVybmF0aXZlLCBBbHRlcm5hdGl2ZVRleHRUeXBlLCBj
b25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+Jik7CiAgICAgdm9pZCB0aW1l
ckZpcmVkKFRpbWVyPEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI+Kik7CiAgICAgdm9pZCByZWNv
cmRBdXRvY29ycmVjdGlvblJlc3BvbnNlUmV2ZXJzZWQoY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0
cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CiAgICAgdm9pZCByZWNvcmRT
cGVsbGNoZWNrZXJSZXNwb25zZUZvck1vZGlmaWVkQ29ycmVjdGlvbihSYW5nZSogcmFuZ2VPZkNv
cnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgY29ycmVjdGVkLCBjb25zdCBTdHJpbmcmIGNvcnJlY3Rp
b24pOworICAgIFN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRl
eHQoQWx0ZXJuYXRpdmVUZXh0VHlwZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUpOwogCi0g
ICAgYm9vbCBzaG91bGRTdGFydFRpbWVyRm9yKGNvbnN0IERvY3VtZW50TWFya2VyKiBtYXJrZXIs
IGludCBlbmRPZmZzZXQpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKCgobWFya2VyLT50
eXBlKCkgPT0gRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50ICYmICFtYXJrZXItPmRlc2NyaXB0
aW9uKCkuaXNOdWxsKCkpIAotICAgICAgICAgICAgICAgICB8fCBtYXJrZXItPnR5cGUoKSA9PSBE
b2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpICYmIHN0YXRpY19jYXN0PGludD4obWFya2VyLT5lbmRP
ZmZzZXQoKSkgPT0gZW5kT2Zmc2V0KTsKLSAgICB9CisgICAgYm9vbCBzaG91bGRTdGFydFRpbWVy
Rm9yKGNvbnN0IERvY3VtZW50TWFya2VyJiwgaW50IGVuZE9mZnNldCkgY29uc3Q7CisgICAgYm9v
bCByZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZChjb25zdCBEb2N1bWVudE1hcmtlciYsIGNvbnN0
IFBvc2l0aW9uJiBlbmRPZldvcmRQb3NpdGlvbiwgRnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlv
bk9wdGlvbnMpOwogCiAgICAgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBhbHRlcm5hdGl2ZVRleHRD
bGllbnQoKTsKICAgICBFZGl0b3JDbGllbnQqIGVkaXRvckNsaWVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCmluZGV4IGI0NjBlZDE5MmFhMjNhMWY1M2ExMzhkMzU1OWFmODI3NDY2YzFk
MWQuLjE0ODkyODQ1NmM0YWZlMTMwNTIwYTFkZDRjZDcyODM1NDNjMGQ5MGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQ4MSwxMyArNDgxLDEzIEBAIGJvb2wgRWRpdG9yOjpzaG91
bGRTaG93RGVsZXRlSW50ZXJmYWNlKEhUTUxFbGVtZW50KiBlbGVtZW50KSBjb25zdAogICAgIHJl
dHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+c2hvdWxkU2hvd0RlbGV0ZUludGVyZmFjZShlbGVt
ZW50KTsKIH0KIAotdm9pZCBFZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uKQordm9pZCBFZGl0b3I6Om5vdGlmeUNvbXBv
bmVudHNPbkNoYW5nZWRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0
aW9uLCBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyBvcHRpb25zKQogewogICAg
IGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rp
b24obV9mcmFtZSk7CiAgICAgc2V0U3RhcnROZXdLaWxsUmluZ1NlcXVlbmNlKHRydWUpOwogICAg
IG1fZGVsZXRlQnV0dG9uQ29udHJvbGxlci0+cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihvbGRT
ZWxlY3Rpb24pOwotICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+cmVzcG9uZFRvQ2hh
bmdlZFNlbGVjdGlvbihvbGRTZWxlY3Rpb24pOworICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlci0+cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihvbGRTZWxlY3Rpb24sIG9wdGlvbnMpOwog
fQogCiB2b2lkIEVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIGVuZGluZ1NlbGVjdGlvbikKQEAgLTc5MCw3ICs3OTAsOCBAQCB2b2lkIEVkaXRv
cjo6YXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cjxDb21wb3NpdGVFZGl0Q29tbWFuZD4gY21kKQog
ICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+cmVzcG9uZFRvQXBwbGllZEVkaXRpbmco
Y21kLmdldCgpKTsKIAogICAgIC8vIERvbid0IGNsZWFyIHRoZSB0eXBpbmcgc3R5bGUgd2l0aCB0
aGlzIHNlbGVjdGlvbiBjaGFuZ2UuICBXZSBkbyB0aG9zZSB0aGluZ3MgZWxzZXdoZXJlIGlmIG5l
Y2Vzc2FyeS4KLSAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3U2VsZWN0aW9uLCBm
YWxzZSwgZmFsc2UpOworICAgIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zIG9w
dGlvbnMgPSBjbWQtPmlzRGljdGF0aW9uQ29tbWFuZCgpID8gRnJhbWVTZWxlY3Rpb246OkRpY3Rh
dGlvblRyaWdnZXJlZCA6IDA7CisgICAgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1Nl
bGVjdGlvbiwgb3B0aW9ucyk7CiAKICAgICBpZiAoIWNtZC0+cHJlc2VydmVzVHlwaW5nU3R5bGUo
KSkKICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPmNsZWFyVHlwaW5nU3R5bGUoKTsKQEAg
LTgxNiw3ICs4MTcsNyBAQCB2b2lkIEVkaXRvcjo6dW5hcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRy
PEVkaXRDb21tYW5kQ29tcG9zaXRpb24+IGNtZCkKICAgICBkaXNwYXRjaEVkaXRhYmxlQ29udGVu
dENoYW5nZWRFdmVudHMoY21kLT5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY21kLT5l
bmRpbmdSb290RWRpdGFibGVFbGVtZW50KCkpOwogICAgIAogICAgIFZpc2libGVTZWxlY3Rpb24g
bmV3U2VsZWN0aW9uKGNtZC0+c3RhcnRpbmdTZWxlY3Rpb24oKSk7Ci0gICAgY2hhbmdlU2VsZWN0
aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgdHJ1ZSwgdHJ1ZSk7CisgICAgY2hhbmdlU2Vs
ZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OkNsb3NlVHlw
aW5nIHwgRnJhbWVTZWxlY3Rpb246OkNsZWFyVHlwaW5nU3R5bGUpOwogICAgIG1fYWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci0+cmVzcG9uZFRvVW5hcHBsaWVkRWRpdGluZyhjbWQuZ2V0KCkpOwog
ICAgIAogICAgIG1fbGFzdEVkaXRDb21tYW5kID0gMDsKQEAgLTgzMiw3ICs4MzMsNyBAQCB2b2lk
IEVkaXRvcjo6cmVhcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyPEVkaXRDb21tYW5kQ29tcG9zaXRp
b24+IGNtZCkKICAgICBkaXNwYXRjaEVkaXRhYmxlQ29udGVudENoYW5nZWRFdmVudHMoY21kLT5z
dGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY21kLT5lbmRpbmdSb290RWRpdGFibGVFbGVt
ZW50KCkpOwogICAgIAogICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uKGNtZC0+ZW5k
aW5nU2VsZWN0aW9uKCkpOwotICAgIGNoYW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChuZXdTZWxl
Y3Rpb24sIHRydWUsIHRydWUpOworICAgIGNoYW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChuZXdT
ZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpDbG9zZVR5cGluZyB8IEZyYW1lU2VsZWN0aW9uOjpD
bGVhclR5cGluZ1N0eWxlKTsKICAgICAKICAgICBtX2xhc3RFZGl0Q29tbWFuZCA9IDA7CiAgICAg
aWYgKGNsaWVudCgpKQpAQCAtMjI2Nyw2ICsyMjY4LDEwIEBAIHZvaWQgRWRpdG9yOjp1cGRhdGVN
YXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhib29sIGRvTm90UmVtb3ZlSWZTZWxlY3Rp
b25BCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBS
ZWZQdHI8UmFuZ2U+IHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIHN0YXJ0T2ZG
aXJzdFdvcmQuZGVlcEVxdWl2YWxlbnQoKSwgZW5kT2ZMYXN0V29yZC5kZWVwRXF1aXZhbGVudCgp
KTsKIAorICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcio+IG1hcmtlcnMgPSBkb2N1bWVudC0+bWFy
a2VycygpLT5tYXJrZXJzSW5SYW5nZSh3b3JkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpE
aWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWFya2Vy
cy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZW1v
dmVEaWN0YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIobWFya2Vyc1tpXSk7CisKICAgICBkb2N1
bWVudC0+bWFya2VycygpLT5yZW1vdmVNYXJrZXJzKHdvcmRSYW5nZS5nZXQoKSwgRG9jdW1lbnRN
YXJrZXI6OlNwZWxsaW5nIHwgRG9jdW1lbnRNYXJrZXI6OkNvcnJlY3Rpb25JbmRpY2F0b3IgfCBE
b2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbiB8IERvY3VtZW50TWFya2VyOjpE
aWN0YXRpb25BbHRlcm5hdGl2ZXMsIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6UmVtb3ZlUGFy
dGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXIpOwogICAgIGRvY3VtZW50LT5tYXJrZXJzKCktPmNsZWFy
RGVzY3JpcHRpb25Pbk1hcmtlcnNJbnRlcnNlY3RpbmdSYW5nZSh3b3JkUmFuZ2UuZ2V0KCksIERv
Y3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7CiB9CkBAIC0yNDE0LDcgKzI0MTksNyBAQCB2b2lk
IEVkaXRvcjo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbEFzSWdub3JlZCgpCiAgICAgbV9hbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLT5kaXNtaXNzKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2
ZVRleHRJZ25vcmVkKTsKIH0KIAotdm9pZCBFZGl0b3I6OmNoYW5nZVNlbGVjdGlvbkFmdGVyQ29t
bWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIGJvb2wgY2xvc2VUeXBp
bmcsIGJvb2wgY2xlYXJUeXBpbmdTdHlsZSkKK3ZvaWQgRWRpdG9yOjpjaGFuZ2VTZWxlY3Rpb25B
ZnRlckNvbW1hbmQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9uLCAgRnJhbWVT
ZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucykKIHsKICAgICAvLyBJZiB0aGUg
bmV3IHNlbGVjdGlvbiBpcyBvcnBoYW5lZCwgdGhlbiBkb24ndCB1cGRhdGUgdGhlIHNlbGVjdGlv
bi4KICAgICBpZiAobmV3U2VsZWN0aW9uLnN0YXJ0KCkuaXNPcnBoYW4oKSB8fCBuZXdTZWxlY3Rp
b24uZW5kKCkuaXNPcnBoYW4oKSkKQEAgLTI0MjUsMTQgKzI0MzAsOCBAQCB2b2lkIEVkaXRvcjo6
Y2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1Nl
bGVjdGlvbiwgYgogICAgIC8vIFRoZSBvbGQgc2VsZWN0aW9uIGNhbiBiZSBpbnZhbGlkIGhlcmUg
YW5kIGNhbGxpbmcgc2hvdWxkQ2hhbmdlU2VsZWN0aW9uIGNhbiBwcm9kdWNlIHNvbWUgc3RyYW5n
ZSBjYWxscy4KICAgICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzU3MjkzMTU+IFNvbWUgc2hvdWxk
Q2hhbmdlU2VsZWN0ZWRET01SYW5nZSBjb250YWluIFJhbmdlcyBmb3Igc2VsZWN0aW9ucyB0aGF0
IGFyZSBubyBsb25nZXIgdmFsaWQKICAgICBib29sIHNlbGVjdGlvbkRpZE5vdENoYW5nZURPTVBv
c2l0aW9uID0gbmV3U2VsZWN0aW9uID09IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24o
KTsKLSAgICBpZiAoc2VsZWN0aW9uRGlkTm90Q2hhbmdlRE9NUG9zaXRpb24gfHwgbV9mcmFtZS0+
c2VsZWN0aW9uKCktPnNob3VsZENoYW5nZVNlbGVjdGlvbihuZXdTZWxlY3Rpb24pKSB7Ci0gICAg
ICAgIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMgPSAwOwotICAg
ICAgICBpZiAoY2xvc2VUeXBpbmcpCi0gICAgICAgICAgICBvcHRpb25zIHw9IEZyYW1lU2VsZWN0
aW9uOjpDbG9zZVR5cGluZzsKLSAgICAgICAgaWYgKGNsZWFyVHlwaW5nU3R5bGUpCi0gICAgICAg
ICAgICBvcHRpb25zIHw9IEZyYW1lU2VsZWN0aW9uOjpDbGVhclR5cGluZ1N0eWxlOworICAgIGlm
IChzZWxlY3Rpb25EaWROb3RDaGFuZ2VET01Qb3NpdGlvbiB8fCBtX2ZyYW1lLT5zZWxlY3Rpb24o
KS0+c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKG5ld1NlbGVjdGlvbikpCiAgICAgICAgIG1fZnJhbWUt
PnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBvcHRpb25zKTsKLSAgICB9
CiAKICAgICAvLyBTb21lIGVkaXRpbmcgb3BlcmF0aW9ucyBjaGFuZ2UgdGhlIHNlbGVjdGlvbiB2
aXN1YWxseSB3aXRob3V0IGFmZmVjdGluZyBpdHMgcG9zaXRpb24gd2l0aGluIHRoZSBET00uCiAg
ICAgLy8gRm9yIGV4YW1wbGUgd2hlbiB5b3UgcHJlc3MgcmV0dXJuIGluIHRoZSBmb2xsb3dpbmcg
KHRoZSBjYXJldCBpcyBtYXJrZWQgYnkgXik6CkBAIC0yODI3LDcgKzI4MjYsNyBAQCB2b2lkIEVk
aXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBv
bGRTZWxlY3Rpb24sIEZyYQogICAgIGlmICghaXNDb250aW51b3VzR3JhbW1hckNoZWNraW5nRW5h
YmxlZCkKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5yZW1vdmVNYXJr
ZXJzKERvY3VtZW50TWFya2VyOjpHcmFtbWFyKTsKIAotICAgIHJlc3BvbmRUb0NoYW5nZWRTZWxl
Y3Rpb24ob2xkU2VsZWN0aW9uKTsKKyAgICBub3RpZnlDb21wb25lbnRzT25DaGFuZ2VkU2VsZWN0
aW9uKG9sZFNlbGVjdGlvbiwgb3B0aW9ucyk7CiB9CiAKIHN0YXRpYyBOb2RlKiBmaW5kRmlyc3RN
YXJrYWJsZShOb2RlKiBub2RlKQpAQCAtMjkxOCw0ICsyOTE3LDE0IEBAIHZvaWQgRWRpdG9yOjp3
aWxsRGV0YWNoUGFnZSgpCiAgICAgICAgIGVkaXRvckNsaWVudC0+ZnJhbWVXaWxsRGV0YWNoUGFn
ZShmcmFtZSgpKTsKIH0KIAorVmVjdG9yPFN0cmluZz4gRWRpdG9yOjpkaWN0YXRpb25BbHRlcm5h
dGl2ZXNGb3JNYXJrZXIoY29uc3QgRG9jdW1lbnRNYXJrZXIqIG1hcmtlcikKK3sKKyAgICByZXR1
cm4gbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5kaWN0YXRpb25BbHRlcm5hdGl2ZXNGb3JN
YXJrZXIobWFya2VyKTsKK30KKwordm9pZCBFZGl0b3I6OmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRp
dmVsdGVybmF0aXZlKGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmVTdHJpbmcpCit7CisgICAgbV9h
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5hcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKGFsdGVy
bmF0aXZlU3RyaW5nKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmgKaW5kZXggZjBlNWMyNGU2NWI5MWY2MzU3MDFjNTM1OWUwOWRjMWRjN2FiN2VkYy4u
Y2IxMGJjNWFmNmEwYjZiODUyOGNmYWRjMzJkZjI4MmI0ODU2MzgzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCkBAIC0xMzQsOCArMTM0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkU2hv
d0RlbGV0ZUludGVyZmFjZShIVE1MRWxlbWVudCopIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkRGVs
ZXRlUmFuZ2UoUmFuZ2UqKSBjb25zdDsKICAgICBib29sIHNob3VsZEFwcGx5U3R5bGUoU3R5bGVQ
cm9wZXJ0eVNldCosIFJhbmdlKik7Ci0gICAgCi0gICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2Vs
ZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbik7CisKICAgICB2b2lk
IHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBlbmRpbmdT
ZWxlY3Rpb24pOwogCiAgICAgYm9vbCBzZWxlY3Rpb25TdGFydEhhc1N0eWxlKENTU1Byb3BlcnR5
SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0OwpAQCAtMzk1LDcgKzM5NCw4IEBAIHB1Ymxp
YzoKIAogICAgIEVkaXRvclBhcmFncmFwaFNlcGFyYXRvciBkZWZhdWx0UGFyYWdyYXBoU2VwYXJh
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yOyB9CiAgICAg
dm9pZCBzZXREZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKEVkaXRvclBhcmFncmFwaFNlcGFyYXRv
ciBzZXBhcmF0b3IpIHsgbV9kZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yID0gc2VwYXJhdG9yOyB9
Ci0KKyAgICBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIoY29u
c3QgRG9jdW1lbnRNYXJrZXIqKTsKKyAgICB2b2lkIGFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmVs
dGVybmF0aXZlKGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmVTdHJpbmcpOwogcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERldGFjaFBhZ2UoKSBPVkVSUklERTsKIApAQCAtNDI5LDcgKzQy
OSw4IEBAIHByaXZhdGU6CiAgICAgZW51bSBTZXRDb21wb3NpdGlvbk1vZGUgeyBDb25maXJtQ29t
cG9zaXRpb24sIENhbmNlbENvbXBvc2l0aW9uIH07CiAgICAgdm9pZCBzZXRDb21wb3NpdGlvbihj
b25zdCBTdHJpbmcmLCBTZXRDb21wb3NpdGlvbk1vZGUpOwogCi0gICAgdm9pZCBjaGFuZ2VTZWxl
Y3Rpb25BZnRlckNvbW1hbmQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9uLCBi
b29sIGNsb3NlVHlwaW5nLCBib29sIGNsZWFyVHlwaW5nU3R5bGUpOworICAgIHZvaWQgY2hhbmdl
U2VsZWN0aW9uQWZ0ZXJDb21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlv
biwgRnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMpOworICAgIHZvaWQgbm90aWZ5
Q29tcG9uZW50c09uQ2hhbmdlZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRT
ZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zKTsKIAogICAgIE5v
ZGUqIGZpbmRFdmVudFRhcmdldEZyb21TZWxlY3Rpb24oKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCmluZGV4IDhmYzQyZWNjZTAzNjIwMmE3ZjAyODQwYTBl
NWQxMzRkYzY1ZGZiMDguLjRkN2Y5ODc3NTk1YzI2NDMzMmJlZDg4ZjNhNDU4YWQ4MWI3NmQ0MzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKQEAgLTExOCw2ICsxMTgs
NyBAQCBwdWJsaWM6CiAgICAgICAgIENsZWFyVHlwaW5nU3R5bGUgPSAxIDw8IDIsCiAgICAgICAg
IFNwZWxsQ29ycmVjdGlvblRyaWdnZXJlZCA9IDEgPDwgMywKICAgICAgICAgRG9Ob3RTZXRGb2N1
cyA9IDEgPDwgNCwKKyAgICAgICAgRGljdGF0aW9uVHJpZ2dlcmVkID0gMSA8PCA1CiAgICAgfTsK
ICAgICB0eXBlZGVmIHVuc2lnbmVkIFNldFNlbGVjdGlvbk9wdGlvbnM7IC8vIFVuaW9uIG9mIHZh
bHVlcyBpbiBTZXRTZWxlY3Rpb25PcHRpb24gYW5kIEVVc2VyVHJpZ2dlcmVkCiAgICAgc3RhdGlj
IGlubGluZSBFVXNlclRyaWdnZXJlZCBzZWxlY3Rpb25PcHRpb25zVG9Vc2VyVHJpZ2dlcmVkKFNl
dFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNi
M2U4OGE4MGNiOWNkOWNkZWM2NGJjNTY5NWVmMWJmZDFkNWJjZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5o
CkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlcl9oCisjZGVmaW5lIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcl9oCisKKyNp
bmNsdWRlICJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKwor
I2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5h
dGl2ZXM7CitPQkpDX0NMQVNTIE5TVmlldzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgeworcHVibGljOgorICAgIEFsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlcigpIHsgfQorICAgIC8vIFJldHVybnMgYSBjb250ZXh0IElELgorICAg
IHVpbnQ2NF90IGFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRp
dmVzPiYpOworICAgIHZvaWQgY2xlYXIoKTsKKyAgICB2b2lkIHNob3dBbHRlcm5hdGl2ZXMoTlNW
aWV3KiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUHJpbWFyeVN0cmluZywgdWludDY0
X3QgY29udGV4dCwgdm9pZCheYWNjZXB0YW5jZUhhbmRsZXIpKE5TU3RyaW5nKikpOworICAgIHZv
aWQgZGlzbWlzc0FsdGVybmF0aXZlcygpOworICAgIHZvaWQgcmVtb3ZlQWx0ZXJuYXRpdmVzKHVp
bnQ2NF90IGNvbnRleHQpOworICAgIFZlY3RvcjxTdHJpbmc+IGFsdGVybmF0aXZlc0ZvckNvbnRl
eHQodWludDY0X3QgY29udGV4dCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBoYW5kbGVBY2NlcHRl
ZEFsdGVybmF0aXZlKE5TU3RyaW5nKiBhY2NlcHRlZEFsdGVybmF0aXZlLCB1aW50NjRfdCBjb250
ZXh0LCBOU1RleHRBbHRlcm5hdGl2ZXMqKTsKKworICAgIGNsYXNzIEFsZXJuYXRpdmVUZXh0Q29u
dGV4dENvbnRyb2xsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgQWxlcm5hdGl2ZVRleHRDb250
ZXh0Q29udHJvbGxlcigpIHsgfQorICAgICAgICB1aW50NjRfdCBhZGRBbHRlcm5hdGl2ZXMoY29u
c3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKKyAgICAgICAgdm9pZCBjbGVhcigp
OworICAgICAgICBOU1RleHRBbHRlcm5hdGl2ZXMqIGFsdGVybmF0aXZlc0ZvckNvbnRleHQodWlu
dDY0X3QgY29udGV4dCk7CisgICAgICAgIHZvaWQgcmVtb3ZlQWx0ZXJuYXRpdmVzRm9yQ29udGV4
dCh1aW50NjRfdCBjb250ZXh0KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGludmFs
aWRDb250ZXh0ID0gMDsKKyAgICBwcml2YXRlOgorICAgICAgICB0eXBlZGVmIEhhc2hNYXA8dWlu
dDY0X3QsIFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+ID4gSGFzaE1hcFR5cGU7CisgICAg
ICAgIEhhc2hNYXBUeXBlIG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFwOworICAgIH07CisKKyAgICBB
bGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyIG1fY29udGV4dENvbnRyb2xsZXI7CisgICAg
UmV0YWluUHRyPE5TVmlldz4gbV92aWV3OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKKyNlbmRpZiAvLyBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXJfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiOTYzZWZjNzMyN2E1Yjc1NDhjMmEyMTkxYjBlMWEwNWY3
MDZkYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0KQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ci5oIgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisjaW1wb3J0IDxBcHBLaXQv
TlNTcGVsbENoZWNrZXIuaD4KKyNpbXBvcnQgPEFwcEtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4K
KyNpbXBvcnQgPEFwcEtpdC9OU1ZpZXcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1aW50
NjRfdCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29udGV4dENv
bnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRp
dmVzPiYgYWx0ZXJuYXRpdmVzKQoreworICAgIHVpbnQ2NF90IGNvbnRleHQgPSByZWludGVycHJl
dF9jYXN0PHVpbnQ2NF90PihhbHRlcm5hdGl2ZXMuZ2V0KCkpOworICAgIGlmICghY29udGV4dCkK
KyAgICAgICAgcmV0dXJuIGludmFsaWRDb250ZXh0OworICAgIGlmIChhbHRlcm5hdGl2ZXNGb3JD
b250ZXh0KGNvbnRleHQpKQorICAgICAgICByZXR1cm4gY29udGV4dDsKKworICAgIEhhc2hNYXBU
eXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuYWRkKGNvbnRl
eHQsIGFsdGVybmF0aXZlcyk7CisgICAgcmV0dXJuIHJlc3VsdC5pc05ld0VudHJ5ID8gY29udGV4
dCA6IGludmFsaWRDb250ZXh0OworfQorCitOU1RleHRBbHRlcm5hdGl2ZXMqIEFsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6YWx0ZXJu
YXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0KQoreworICAgIEhhc2hNYXBUeXBlOjpj
b25zdF9pdGVyYXRvciBpdHIgPSBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5maW5kKGNvbnRleHQp
OworICAgIGlmIChpdHIgPT0gbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuZW5kKCkpCisgICAgICAg
IHJldHVybiBOVUxMOworICAgIHJldHVybiBpdHItPnNlY29uZC5nZXQoKTsKK30KKwordm9pZCBB
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xs
ZXI6OnJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4dCkKK3sKKyAg
ICBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5yZW1vdmUoY29udGV4dCk7Cit9CisKK3ZvaWQgQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVy
OjpjbGVhcigpCit7CisgICAgbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuY2xlYXIoKTsKK30KKwor
dWludDY0X3QgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMoY29u
c3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mIGFsdGVybmF0aXZlcykKK3sKKyAgICBy
ZXR1cm4gbV9jb250ZXh0Q29udHJvbGxlci5hZGRBbHRlcm5hdGl2ZXMoYWx0ZXJuYXRpdmVzKTsK
K30KKworVmVjdG9yPFN0cmluZz4gQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjphbHRlcm5h
dGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpCit7CisgICAgTlNUZXh0QWx0ZXJuYXRp
dmVzKiB0ZXh0QWx0ZXJuYXRpdmVzID0gbV9jb250ZXh0Q29udHJvbGxlci5hbHRlcm5hdGl2ZXNG
b3JDb250ZXh0KGNvbnRleHQpOworICAgIFZlY3RvcjxTdHJpbmc+IGFsdGVybmF0aXZlU3RyaW5n
czsKKyAgICBmb3IgKE5TU3RyaW5nKiBzdHJpbmcgaW4gdGV4dEFsdGVybmF0aXZlcy5hbHRlcm5h
dGl2ZVN0cmluZ3MpCisgICAgICAgIGFsdGVybmF0aXZlU3RyaW5ncy5hcHBlbmQoc3RyaW5nKTsK
KyAgICByZXR1cm4gYWx0ZXJuYXRpdmVTdHJpbmdzOworfQorCit2b2lkIEFsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlcjo6Y2xlYXIoKQoreworICAgIHJldHVybiBtX2NvbnRleHRDb250cm9sbGVy
LmNsZWFyKCk7Cit9CisKK3ZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpzaG93QWx0
ZXJuYXRpdmVzKE5TVmlldyogdmlldywgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUHJp
bWFyeVN0cmluZywgdWludDY0X3QgY29udGV4dCwgdm9pZCheYWNjZXB0YW5jZUhhbmRsZXIpKE5T
U3RyaW5nKikpCit7CisgICAgZGlzbWlzc0FsdGVybmF0aXZlcygpOworICAgIGlmICghdmlldykK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV92aWV3ID0gdmlldzsKKyAgICBOU1RleHRBbHRlcm5h
dGl2ZXMqIGFsdGVybmF0aXZlcyA9IG1fY29udGV4dENvbnRyb2xsZXIuYWx0ZXJuYXRpdmVzRm9y
Q29udGV4dChjb250ZXh0KTsKKyAgICBpZiAoIWFsdGVybmF0aXZlcykKKyAgICAgICAgcmV0dXJu
OworICAgIE5TU3BlbGxDaGVja2VyKiBzcGVsbENoZWNrZXIgPSBbTlNTcGVsbENoZWNrZXIgc2hh
cmVkU3BlbGxDaGVja2VyXTsKKyAgICBbc3BlbGxDaGVja2VyIHNob3dDb3JyZWN0aW9uSW5kaWNh
dG9yT2ZUeXBlOk5TQ29ycmVjdGlvbkluZGljYXRvclR5cGVHdWVzc2VzIHByaW1hcnlTdHJpbmc6
YWx0ZXJuYXRpdmVzLnByaW1hcnlTdHJpbmcgYWx0ZXJuYXRpdmVTdHJpbmdzOmFsdGVybmF0aXZl
cy5hbHRlcm5hdGl2ZVN0cmluZ3MgZm9yU3RyaW5nSW5SZWN0OmJvdW5kaW5nQm94T2ZQcmltYXJ5
U3RyaW5nIHZpZXc6bV92aWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcqIGFj
Y2VwdGVkU3RyaW5nKSB7CisgICAgICAgIGlmIChhY2NlcHRlZFN0cmluZykgeworICAgICAgICAg
ICAgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShhY2NlcHRlZFN0cmluZywgY29udGV4dCwgYWx0
ZXJuYXRpdmVzKTsKKyAgICAgICAgICAgIGFjY2VwdGFuY2VIYW5kbGVyKGFjY2VwdGVkU3RyaW5n
KTsKKyAgICAgICAgfQorICAgIH1dOworfQorCit2b2lkIEFsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlcjo6aGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZShOU1N0cmluZyogYWNjZXB0ZWRBbHRlcm5h
dGl2ZSwgdWludDY0X3QgY29udGV4dCwgTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbHRlcm5hdGl2ZXMp
Cit7CisgICAgW2FsdGVybmF0aXZlcyBub3RlU2VsZWN0ZWRBbHRlcm5hdGl2ZVN0cmluZzphY2Nl
cHRlZEFsdGVybmF0aXZlXTsKKyAgICBtX2NvbnRleHRDb250cm9sbGVyLnJlbW92ZUFsdGVybmF0
aXZlc0ZvckNvbnRleHQoY29udGV4dCk7CisgICAgbV92aWV3LmNsZWFyKCk7Cit9CisKK3ZvaWQg
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpkaXNtaXNzQWx0ZXJuYXRpdmVzKCkKK3sKKyAg
ICBpZiAoIW1fdmlldykKKyAgICAgICAgcmV0dXJuOworICAgIFtbTlNTcGVsbENoZWNrZXIgc2hh
cmVkU3BlbGxDaGVja2VyXSBkaXNtaXNzQ29ycmVjdGlvbkluZGljYXRvckZvclZpZXc6bV92aWV3
LmdldCgpXTsKK30KKwordm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OnJlbW92ZUFs
dGVybmF0aXZlcyh1aW50NjRfdCBjb250ZXh0KQoreworICAgIG1fY29udGV4dENvbnRyb2xsZXIu
cmVtb3ZlQWx0ZXJuYXRpdmVzRm9yQ29udGV4dChjb250ZXh0KTsKK30KK30KKyNlbmRpZiAvLyBV
U0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA5ZTFlOWQx
YjgxNmFmZDE1MjU5NzZmZjllNTJjZWFhZDhmODQ1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oCkBAIC0wLDAg
KzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZV9o
CisjZGVmaW5lIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZV9oCisKKyNpbmNsdWRlICJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBVU0Uo
RElDVEFUSU9OX0FMVEVSTkFUSVZFUykKK09CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwor
I2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVTRShESUNUQVRJT05fQUxURVJO
QVRJVkVTKQorc3RydWN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZSB7CisgICAgVGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlKE5TVGV4dEFsdGVybmF0aXZlcyogYW5BbHRlcm5hdGl2ZXMsIE5TUmFu
Z2UgYVJhbmdlKTsKKyAgICBOU1JhbmdlIHJhbmdlOworICAgIFJldGFpblB0cjxOU1RleHRBbHRl
cm5hdGl2ZXM+IGFsdGVybmF0aXZlczsKK307CisKK3ZvaWQgY29sbGVjdERpY3RhdGlvblRleHRB
bHRlcm5hdGl2ZXMoTlNBdHRyaWJ1dGVkU3RyaW5nKiwgVmVjdG9yPFRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZT4mIGFsdGVybmF0aXZlcyk7CisKKyNlbHNlCitzdHJ1Y3QgVGV4dEFsdGVybmF0aXZl
V2l0aFJhbmdlIHsgfTsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFl
YTU4Zjg5NGY4ZWVmNWU2MzVhODc5YTBiNzgxMGRmZDRjMmZlMWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0K
QEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
IlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5B
VElWRVMpCisjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlOjpUZXh0QWx0ZXJuYXRpdmVX
aXRoUmFuZ2UoTlNUZXh0QWx0ZXJuYXRpdmVzKiBhbkFsdGVybmF0aXZlcywgTlNSYW5nZSBhUmFu
Z2UpCis6IHJhbmdlKGFSYW5nZSkKKywgYWx0ZXJuYXRpdmVzKGFuQWx0ZXJuYXRpdmVzKQorewor
fQorCit2b2lkIGNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzKE5TQXR0cmlidXRlZFN0
cmluZyAqc3RyaW5nLCBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgYWx0ZXJuYXRp
dmVzKSB7CisgICAgTlNSYW5nZSBlZmZlY3RpdmVSYW5nZSA9IE5TTWFrZVJhbmdlKDAsIDApOwor
ICAgIE5TVUludGVnZXIgbGVuZ3RoID0gW3N0cmluZyBsZW5ndGhdOworICAgIGRvIHsKKyAgICAg
ICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW3N0cmluZyBhdHRyaWJ1dGVzQXRJbmRleDpl
ZmZlY3RpdmVSYW5nZS5sb2NhdGlvbiBlZmZlY3RpdmVSYW5nZTomZWZmZWN0aXZlUmFuZ2VdOwor
ICAgICAgICBpZiAoIWF0dHJpYnV0ZXMpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgTlNU
ZXh0QWx0ZXJuYXRpdmVzICp0ZXh0QWx0ZXJuYXRpdmVzID0gW2F0dHJpYnV0ZXMgb2JqZWN0Rm9y
S2V5Ok5TVGV4dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5hbWVdOworICAgICAgICBpZiAodGV4dEFs
dGVybmF0aXZlcykKKyAgICAgICAgICAgIGFsdGVybmF0aXZlcy5hcHBlbmQoVGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlKHRleHRBbHRlcm5hdGl2ZXMsIGVmZmVjdGl2ZVJhbmdlKSk7CisgICAgICAg
IGVmZmVjdGl2ZVJhbmdlLmxvY2F0aW9uID0gTlNNYXhSYW5nZShlZmZlY3RpdmVSYW5nZSk7Cisg
ICAgfSB3aGlsZSAoZWZmZWN0aXZlUmFuZ2UubG9jYXRpb24gPCBsZW5ndGgpOworfQorfQorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0aXZlVGV4dENsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaAppbmRleCAw
OTQ3Yzg3YmEwMjQxNDQzMWU2NmQzNjNjNjhhOTM2NjZmZGU5NmZkLi42NzI0NWU2NGQ3NjMwODU5
ZWY5Zjc3ZmNjZWZkYmIwZTQwY2Q1MWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0FsdGVybmF0aXZlVGV4dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50LmgKQEAgLTMxLDYgKzMxLDExIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oTUFD
KSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9TTk9XX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xJT04pCisvLyBTb21lIHBs
YXRmb3JtcyBwcm92aWRlIFVJIGZvciBzdWdnZXN0aW5nIGFsdGVybmF0aXZlIGRpY3RhdGlvbiB0
ZXh0LgorI2RlZmluZSBXVEZfVVNFX0RJQ1RBVElPTl9BTFRFUk5BVElWRVMgMQorI2VuZGlmIC8v
IFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmlu
ZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MSU9O
KQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVy
bmF0aXZlVGV4dCB7CkBAIC00Myw2ICs0OCw3IEBAIGVudW0gQWx0ZXJuYXRpdmVUZXh0VHlwZSB7
CiAgICAgQWx0ZXJuYXRpdmVUZXh0VHlwZUNvcnJlY3Rpb24gPSAwLAogICAgIEFsdGVybmF0aXZl
VGV4dFR5cGVSZXZlcnNpb24sCiAgICAgQWx0ZXJuYXRpdmVUZXh0VHlwZVNwZWxsaW5nU3VnZ2Vz
dGlvbnMsCisgICAgQWx0ZXJuYXRpdmVUZXh0VHlwZURpY3RhdGlvbkFsdGVybmF0aXZlcwogfTsK
IAogZW51bSBBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSB7CkBAIC01NCwxMSArNjAsMTggQEAg
Y2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5BbHRl
cm5hdGl2ZVRleHRDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgp
ID0gMDsKLQorI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICB2aXJ0dWFsIHZvaWQg
c2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBGbG9h
dFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzbWlzc0FsdGVybmF0aXZlKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQp
ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFJlYXNvbkZv
ckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3Qg
U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykg
PSAwOworI2VuZGlmCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgdmlydHVh
bCB2b2lkIHNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSSgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90
IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGRpY3Rh
dGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSA9IDA7CisjZW5kaWYK
IH07CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHAKaW5kZXggOWI5MTA3MjRiNWU3ZWRmYjEwNzY4YzNmMWQ1MjViOTVkODNmZDhkNy4uN2Nm
MmRiZTViZTIwNDgwYTI0NWMzMTI1OWIxMjA1ZjJlODIzNjgxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtNDgxLDYgKzQ4MSw5IEBAIHZv
aWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0
TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkt
Pmluc3BlY3QobV9oaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKTsKICAgICAgICAg
YnJlYWs7CiAjZW5kaWYKKyAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RpY3RhdGlvbkFsdGVy
bmF0aXZlOgorICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRp
dmVsdGVybmF0aXZlKGl0ZW0tPnRpdGxlKCkpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0
OgogICAgICAgICBicmVhazsKICAgICB9CkBAIC04OTYsNTAgKzg5OSw2NSBAQCB2b2lkIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAgIH0gZWxzZSB7IC8vIE1ha2UgYW4gZWRp
dGluZyBjb250ZXh0IG1lbnUKICAgICAgICAgRnJhbWVTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IGZy
YW1lLT5zZWxlY3Rpb24oKTsKICAgICAgICAgYm9vbCBpblBhc3N3b3JkRmllbGQgPSBzZWxlY3Rp
b24tPmlzSW5QYXNzd29yZEZpZWxkKCk7Ci0gICAgICAgIGJvb2wgc3BlbGxDaGVja2luZ0VuYWJs
ZWQgPSBmcmFtZS0+ZWRpdG9yKCktPmlzU3BlbGxDaGVja2luZ0VuYWJsZWRGb3Iobm9kZSk7Ci0K
LSAgICAgICAgaWYgKCFpblBhc3N3b3JkRmllbGQgJiYgc3BlbGxDaGVja2luZ0VuYWJsZWQpIHsK
LSAgICAgICAgICAgIC8vIENvbnNpZGVyIGFkZGluZyBzcGVsbGluZy1yZWxhdGVkIG9yIGdyYW1t
YXItcmVsYXRlZCBjb250ZXh0IG1lbnUgaXRlbXMgKG5ldmVyIGJvdGgsIHNpbmNlIGEgc2luZ2xl
IHNlbGVjdGVkIHJhbmdlCi0gICAgICAgICAgICAvLyBpcyBuZXZlciBjb25zaWRlcmVkIGEgbWlz
c3BlbGxpbmcgYW5kIGJhZCBncmFtbWFyIGF0IHRoZSBzYW1lIHRpbWUpCi0gICAgICAgICAgICBi
b29sIG1pc3NwZWxsaW5nOwotICAgICAgICAgICAgYm9vbCBiYWRHcmFtbWFyOwotICAgICAgICAg
ICAgVmVjdG9yPFN0cmluZz4gZ3Vlc3NlcyA9IGZyYW1lLT5lZGl0b3IoKS0+Z3Vlc3Nlc0Zvck1p
c3NwZWxsZWRPclVuZ3JhbW1hdGljYWxTZWxlY3Rpb24obWlzc3BlbGxpbmcsIGJhZEdyYW1tYXIp
OwotICAgICAgICAgICAgaWYgKG1pc3NwZWxsaW5nIHx8IGJhZEdyYW1tYXIpIHsKLSAgICAgICAg
ICAgICAgICBzaXplX3Qgc2l6ZSA9IGd1ZXNzZXMuc2l6ZSgpOwotICAgICAgICAgICAgICAgIGlm
IChzaXplID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBiYWQgZ3Jh
bW1hciBidXQgbm8gc3VnZ2VzdGlvbnMgKGUuZy4sIHJlcGVhdGVkIHdvcmQpLCBqdXN0IGxlYXZl
IG9mZiB0aGUgc3VnZ2VzdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgLy8gbGlzdCBhbmQgdHJh
aWxpbmcgc2VwYXJhdG9yIHJhdGhlciB0aGFuIGFkZGluZyBhICJObyBHdWVzc2VzIEZvdW5kIiBp
dGVtIChtYXRjaGVzIEFwcEtpdCkKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1pc3NwZWxsaW5n
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKE5vR3Vlc3Nlc0l0ZW0sIG1f
Y29udGV4dE1lbnUuZ2V0KCkpOworICAgICAgICBpZiAoIWluUGFzc3dvcmRGaWVsZCkgeworICAg
ICAgICAgICAgYm9vbCBoYXZlQ29udGV4dE1lbnVJdGVtc0Zvck1pc3NwZWxsaW5nT3JHcmFtbWVy
ID0gZmFsc2U7CisgICAgICAgICAgICBib29sIHNwZWxsQ2hlY2tpbmdFbmFibGVkID0gZnJhbWUt
PmVkaXRvcigpLT5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkRm9yKG5vZGUpOworICAgICAgICAgICAg
aWYgKHNwZWxsQ2hlY2tpbmdFbmFibGVkKSB7CisgICAgICAgICAgICAgICAgLy8gQ29uc2lkZXIg
YWRkaW5nIHNwZWxsaW5nLXJlbGF0ZWQgb3IgZ3JhbW1hci1yZWxhdGVkIGNvbnRleHQgbWVudSBp
dGVtcyAobmV2ZXIgYm90aCwgc2luY2UgYSBzaW5nbGUgc2VsZWN0ZWQgcmFuZ2UKKyAgICAgICAg
ICAgICAgICAvLyBpcyBuZXZlciBjb25zaWRlcmVkIGEgbWlzc3BlbGxpbmcgYW5kIGJhZCBncmFt
bWFyIGF0IHRoZSBzYW1lIHRpbWUpCisgICAgICAgICAgICAgICAgYm9vbCBtaXNzcGVsbGluZzsK
KyAgICAgICAgICAgICAgICBib29sIGJhZEdyYW1tYXI7CisgICAgICAgICAgICAgICAgVmVjdG9y
PFN0cmluZz4gZ3Vlc3NlcyA9IGZyYW1lLT5lZGl0b3IoKS0+Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRP
clVuZ3JhbW1hdGljYWxTZWxlY3Rpb24obWlzc3BlbGxpbmcsIGJhZEdyYW1tYXIpOworICAgICAg
ICAgICAgICAgIGlmIChtaXNzcGVsbGluZyB8fCBiYWRHcmFtbWFyKSB7CisgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBzaXplID0gZ3Vlc3Nlcy5zaXplKCk7CisgICAgICAgICAgICAgICAgICAg
IGlmICghc2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBiYWQg
Z3JhbW1hciBidXQgbm8gc3VnZ2VzdGlvbnMgKGUuZy4sIHJlcGVhdGVkIHdvcmQpLCBqdXN0IGxl
YXZlIG9mZiB0aGUgc3VnZ2VzdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpc3Qg
YW5kIHRyYWlsaW5nIHNlcGFyYXRvciByYXRoZXIgdGhhbiBhZGRpbmcgYSAiTm8gR3Vlc3NlcyBG
b3VuZCIgaXRlbSAobWF0Y2hlcyBBcHBLaXQpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bWlzc3BlbGxpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKE5v
R3Vlc3Nlc0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsg
aSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nICZndWVzcyA9
IGd1ZXNzZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFndWVzcy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVt
IGl0ZW0oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdHdWVzcywgZ3Vlc3Mp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKGl0ZW0sIG1fY29u
dGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNl
cGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1pc3NwZWxsaW5nKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRJdGVtKElnbm9yZVNwZWxsaW5nSXRlbSwgbV9jb250ZXh0TWVudS5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKExlYXJuU3BlbGxpbmdJ
dGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKElnbm9yZUdyYW1tYXJJdGVtLCBtX2Nv
bnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbSgqc2VwYXJh
dG9ySXRlbSgpLCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaGF2
ZUNvbnRleHRNZW51SXRlbXNGb3JNaXNzcGVsbGluZ09yR3JhbW1lciA9IHRydWU7CisjaWYgUExB
VEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQogICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyAmZ3Vl
c3MgPSBndWVzc2VzW2ldOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFndWVzcy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gaXRl
bShBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ0d1ZXNzLCBndWVzcyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShpdGVtLCBtX2NvbnRleHRNZW51
LmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
Ly8gSWYgdGhlIHN0cmluZyB3YXMgYXV0b2NvcnJlY3RlZCwgZ2VuZXJhdGUgYSBjb250ZXh0dWFs
IG1lbnUgaXRlbSBhbGxvd2luZyBpdCB0byBiZSBjaGFuZ2VkIGJhY2suCisgICAgICAgICAgICAg
ICAgICAgIFN0cmluZyByZXBsYWNlZFN0cmluZyA9IG1faGl0VGVzdFJlc3VsdC5yZXBsYWNlZFN0
cmluZygpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXJlcGxhY2VkU3RyaW5nLmlzRW1wdHko
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oQWN0aW9u
VHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFjaywgY29udGV4dE1lbnVJdGVtVGFnQ2hh
bmdlQmFjayhyZXBsYWNlZFN0cmluZykpOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5k
SXRlbShpdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBoYXZlQ29udGV4dE1lbnVJdGVtc0Zvck1pc3NwZWxsaW5nT3JH
cmFtbWVyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOyAgICAg
ICAgICAgICAgICAgICAgCisjZW5kaWYKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgaWYgKG1pc3NwZWxsaW5nKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGFwcGVuZEl0ZW0oSWdub3JlU3BlbGxpbmdJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsK
LSAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShMZWFyblNwZWxsaW5nSXRlbSwgbV9jb250
ZXh0TWVudS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgIGFwcGVuZEl0ZW0oSWdub3JlR3JhbW1hckl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwot
ICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVu
dS5nZXQoKSk7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9Q
QVJEKQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBJZiB0aGUgc3Ry
aW5nIHdhcyBhdXRvY29ycmVjdGVkLCBnZW5lcmF0ZSBhIGNvbnRleHR1YWwgbWVudSBpdGVtIGFs
bG93aW5nIGl0IHRvIGJlIGNoYW5nZWQgYmFjay4KLSAgICAgICAgICAgICAgICBTdHJpbmcgcmVw
bGFjZWRTdHJpbmcgPSBtX2hpdFRlc3RSZXN1bHQucmVwbGFjZWRTdHJpbmcoKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIXJlcGxhY2VkU3RyaW5nLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAg
ICAgICBDb250ZXh0TWVudUl0ZW0gaXRlbShBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdD
aGFuZ2VCYWNrLCBjb250ZXh0TWVudUl0ZW1UYWdDaGFuZ2VCYWNrKHJlcGxhY2VkU3RyaW5nKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oaXRlbSwgbV9jb250ZXh0TWVudS5nZXQo
KSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghaGF2ZUNvbnRleHRNZW51SXRl
bXNGb3JNaXNzcGVsbGluZ09yR3JhbW1lcikgeworICAgICAgICAgICAgICAgIC8vIFNwZWxsaW5n
IGFuZCBncmFtbWFyIGNoZWNraW5nIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIGRpY3RhdGlv
biBhbHRlcm5hdGl2ZXMuCisgICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9u
QWx0ZXJuYXRpdmVzID0gbV9oaXRUZXN0UmVzdWx0LmRpY3RhdGlvbkFsdGVybmF0aXZlcygpOwor
ICAgICAgICAgICAgICAgIGlmICghZGljdGF0aW9uQWx0ZXJuYXRpdmVzLmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRpY3RhdGlvbkFsdGVy
bmF0aXZlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dE1l
bnVJdGVtIGl0ZW0oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnRGljdGF0aW9uQWx0ZXJu
YXRpdmUsIGRpY3RhdGlvbkFsdGVybmF0aXZlc1tpXSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBhcHBlbmRJdGVtKGl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwg
bV9jb250ZXh0TWVudS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgfQotI2VuZGlmCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIApAQCAtMTM1Miw2ICsxMzcwLDcgQEAgdm9pZCBDb250ZXh0TWVu
dUNvbnRyb2xsZXI6OmNoZWNrT3JFbmFibGVJZk5lZWRlZChDb250ZXh0TWVudUl0ZW0mIGl0ZW0p
IGNvbnN0CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtQ3VzdG9tVGFnTm9BY3Rpb246CiAg
ICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtTGFzdEN1c3RvbVRhZzoKICAgICAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWc6CisgICAgICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnRGljdGF0aW9uQWx0ZXJuYXRpdmU6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBsYXlQYXVzZToKICAgICAgICAgICAgIGlm
IChtX2hpdFRlc3RSZXN1bHQubWVkaWFQbGF5aW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRleHRNZW51SXRlbS5oCmluZGV4IGY4YTFhMjlhYTE1NmE2YmEyNzlmNGU3MzUxZTVmYTQy
YzJlNTE3N2EuLjY5NzM3OTg3NTNhZjAwNDA3NjEzNjM1YzQxMGYyYjhkZjk0ZTM1ODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCkBAIC0xMzQsNiArMTM0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdSaWdodFRv
TGVmdCwKICAgICAgICAgQ29udGV4dE1lbnVJdGVtVGFnUERGU2luZ2xlUGFnZVNjcm9sbGluZywK
ICAgICAgICAgQ29udGV4dE1lbnVJdGVtVGFnUERGRmFjaW5nUGFnZXNTY3JvbGxpbmcsCisgICAg
ICAgIENvbnRleHRNZW51SXRlbVRhZ0RpY3RhdGlvbkFsdGVybmF0aXZlLAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAgICAgICAgIENvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50LAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggNGUz
ZjZiZGNiMjk1MDE5YjVlNzIwYjRjMjBlNWFjM2ViMjJhNzQ3MC4uNWZmYjY1OTY5YWU2ZjMyZTJk
ODhjYmMxNDIyNTQ1ZjZlMTBkZGQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0LmNwcApAQCAtNzEwLDQgKzcxMCwyMSBAQCBIaXRUZXN0UmVzdWx0OjpOb2RlU2V0
JiBIaXRUZXN0UmVzdWx0OjptdXRhYmxlUmVjdEJhc2VkVGVzdFJlc3VsdCgpCiAgICAgcmV0dXJu
ICptX3JlY3RCYXNlZFRlc3RSZXN1bHQ7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IEhpdFRlc3RSZXN1
bHQ6OmRpY3RhdGlvbkFsdGVybmF0aXZlcygpIGNvbnN0Cit7CisgICAgLy8gUmV0dXJuIHRoZSBk
aWN0YXRpb24gY29udGV4dCBoYW5kbGUgaWYgdGhlIHRleHQgYXQgdGhpcyBwb2ludCBoYXMgRGlj
dGF0aW9uQWx0ZXJuYXRpdmUgbWFya2VyLCB3aGljaCBtZWFucyB0aGlzIHRleHQgaXMKKyAgICBp
ZiAoIW1faW5uZXJOb25TaGFyZWROb2RlKQorICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4o
KTsKKworICAgIERvY3VtZW50TWFya2VyKiBtYXJrZXIgPSBtX2lubmVyTm9uU2hhcmVkTm9kZS0+
ZG9jdW1lbnQoKS0+bWFya2VycygpLT5tYXJrZXJDb250YWluaW5nUG9pbnQoaGl0VGVzdFBvaW50
KCkucG9pbnQoKSwgRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAg
aWYgKCFtYXJrZXIpCisgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworCisgICAgRnJh
bWUqIGZyYW1lID0gaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCk7Cisg
ICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CisKKyAgICBy
ZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5kaWN0YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIobWFy
a2VyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmgKaW5kZXggYTE4ZmRiNWEyNTU4ZTllYjhjNWY1NWQ5M2QxNmZkYWJl
YmExNDQ4ZS4uMTlkZGJkMWFjMmM3ZmU4YjcwMTI0ZTIwYzBjZDkxZjQ4YTZhYjIxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC0xNTcsNiArMTU3LDggQEAg
cHVibGljOgogICAgIC8vIHRoZSBzYW1lIHRoaW5nIGFzIG11dGFibGVSZWN0QmFzZWRUZXN0UmVz
dWx0KCksIGJ1dCBoZXJlIHRoZSByZXR1cm4gdmFsdWUgaXMgY29uc3QuCiAgICAgY29uc3QgTm9k
ZVNldCYgcmVjdEJhc2VkVGVzdFJlc3VsdCgpIGNvbnN0OwogCisgICAgVmVjdG9yPFN0cmluZz4g
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgTm9kZVNldCYg
bXV0YWJsZVJlY3RCYXNlZFRlc3RSZXN1bHQoKTsgLy8gU2VlIGFib3ZlLgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggMTFiNzA1NTlkYTYzNDM0NzRk
NzUwYzJlYTQ3YTYwNTllZjVhNmQ2Ni4uOWU3MzFkNjM4NmRjN2EzYjM5MWNmMjg5NDQzM2IwOGJk
M2NjYWIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApA
QCAtMTAzMCw3ICsxMDMwLDggQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERvY3VtZW50TWFy
a2VyKEdyYXBoaWNzQ29udGV4dCogcHQsIGNvbnN0IEZsb2F0UG9pbnQmIGIKICAgICBpZiAobV90
cnVuY2F0aW9uICE9IGNOb1RydW5jYXRpb24pCiAgICAgICAgIG1hcmtlclNwYW5zV2hvbGVCb3gg
PSBmYWxzZTsKIAotICAgIGlmICghbWFya2VyU3BhbnNXaG9sZUJveCB8fCBncmFtbWFyKSB7Cisg
ICAgYm9vbCBpc0RpY3RhdGlvbk1hcmtlciA9IG1hcmtlci0+dHlwZSgpID09IERvY3VtZW50TWFy
a2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXM7CisgICAgaWYgKCFtYXJrZXJTcGFuc1dob2xlQm94
IHx8IGdyYW1tYXIgfHwgaXNEaWN0YXRpb25NYXJrZXIpIHsKICAgICAgICAgaW50IHN0YXJ0UG9z
aXRpb24gPSBtYXg8aW50PihtYXJrZXItPnN0YXJ0T2Zmc2V0KCkgLSBtX3N0YXJ0LCAwKTsKICAg
ICAgICAgaW50IGVuZFBvc2l0aW9uID0gbWluPGludD4obWFya2VyLT5lbmRPZmZzZXQoKSAtIG1f
c3RhcnQsIG1fbGVuKTsKICAgICAgICAgCkBAIC0xMDUwLDcgKzEwNTEsNyBAQCB2b2lkIElubGlu
ZVRleHRCb3g6OnBhaW50RG9jdW1lbnRNYXJrZXIoR3JhcGhpY3NDb250ZXh0KiBwdCwgY29uc3Qg
RmxvYXRQb2ludCYgYgogICAgICAgICAKICAgICAgICAgLy8gU3RvcmUgcmVuZGVyZWQgcmVjdHMg
Zm9yIGJhZCBncmFtbWFyIG1hcmtlcnMsIHNvIHdlIGNhbiBoaXQtdGVzdCBhZ2FpbnN0IGl0IGVs
c2V3aGVyZSBpbiBvcmRlciB0bwogICAgICAgICAvLyBkaXNwbGF5IGEgdG9vbFRpcC4gV2UgZG9u
J3QgZG8gdGhpcyBmb3IgbWlzc3BlbGxpbmcgbWFya2Vycy4KLSAgICAgICAgaWYgKGdyYW1tYXIp
IHsKKyAgICAgICAgaWYgKGdyYW1tYXIgfHwgaXNEaWN0YXRpb25NYXJrZXIpIHsKICAgICAgICAg
ICAgIG1hcmtlclJlY3QubW92ZSgtYm94T3JpZ2luLngoKSwgLWJveE9yaWdpbi55KCkpOwogICAg
ICAgICAgICAgbWFya2VyUmVjdCA9IHJlbmRlcmVyKCktPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxv
YXRSZWN0KG1hcmtlclJlY3QpKS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwogICAgICAgICAgICAg
dG9SZW5kZXJlZERvY3VtZW50TWFya2VyKG1hcmtlciktPnNldFJlbmRlcmVkUmVjdChtYXJrZXJS
ZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJl
Y3Rpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rp
b25QYW5lbC5tbQppbmRleCA2NTgzY2VlNjYyMTExMDc2YzFlMDI0NzI2ZWVjYmIwYThmNTQwNzkw
Li43NzE5MTBiNGJjNTAxZTQ4MzgwY2RiODNlMDNiZjZlMjNmNTFhY2MwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tCkBAIC0y
NSw3ICsyNSw2IEBACiAjaW1wb3J0ICJDb3JyZWN0aW9uUGFuZWwuaCIKIAogI2ltcG9ydCAiV2Vi
Vmlld0ludGVybmFsLmgiCi0jaW1wb3J0ICJXZWJWaWV3UHJpdmF0ZS5oIgogCiAjaWYgVVNFKEFV
VE9DT1JSRUNUSU9OX1BBTkVMKQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0zOSw2ICsz
OCw5IEBAIHN0YXRpYyBpbmxpbmUgTlNDb3JyZWN0aW9uSW5kaWNhdG9yVHlwZSBjb3JyZWN0aW9u
SW5kaWNhdG9yVHlwZShBbHRlcm5hdGl2ZVRleHRUCiAgICAgICAgIHJldHVybiBOU0NvcnJlY3Rp
b25JbmRpY2F0b3JUeXBlUmV2ZXJzaW9uOwogICAgIGNhc2UgQWx0ZXJuYXRpdmVUZXh0VHlwZVNw
ZWxsaW5nU3VnZ2VzdGlvbnM6CiAgICAgICAgIHJldHVybiBOU0NvcnJlY3Rpb25JbmRpY2F0b3JU
eXBlR3Vlc3NlczsKKyAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0YXRpb25BbHRlcm5h
dGl2ZXM6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIE5TQ29ycmVjdGlvbklu
ZGljYXRvclR5cGVEZWZhdWx0OwpAQCAtMTMxLDcgKzEzMyw3IEBAIHZvaWQgQ29ycmVjdGlvblBh
bmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJlcGxhY2Vt
ZW50LCBOCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBbbV92aWV3LmdldCgpIGhh
bmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDphY2NlcHRlZFJlcGxhY2VtZW50XTsKKyAgICBbbV92
aWV3LmdldCgpIGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0OmFjY2VwdGVkUmVwbGFjZW1l
bnRdOwogICAgIG1fdmlldy5jbGVhcigpOwogICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQog
ICAgICAgICBtX3Jlc3VsdEZvckRpc21pc3NhbC5hZG9wdE5TKFthY2NlcHRlZFJlcGxhY2VtZW50
IGNvcHldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggNWU2NmFjYWY3YjcxYWU3NGVjZmRk
MmI0ZTcyMWQ5M2ZkOGNjZmM3ZC4uYmM0ZWM0NzIzODVkNTY2M2EwZTA2YjZhOGRmNTRhODVjOTZm
Y2Q3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAgLTM3LDEwICszNywxOCBAQCBwdWJsaWM6
CiAgICAgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KFdlYlZpZXcgKik7CiAgICAgdmlydHVhbCB+
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95
ZWQoKSBPVkVSUklERTsKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgdmlydHVh
bCB2b2lkIHNob3dDb3JyZWN0aW9uQWx0ZXJuYXRpdmUoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0
VHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1l
bnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3Ry
aW5ncykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NBbHRlcm5hdGl2ZShXZWJD
b3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIFN0cmluZyBkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRp
c21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZWNv
cmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYkNvcmU6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VU
eXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vt
ZW50U3RyaW5nKSBPVkVSUklERTsKKyNlbmRpZgorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRp
Y3RhdGlvbkNvbnRleHQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzRGljdGF0
aW9uQWx0ZXJuYXRpdmVVSSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0
YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3Qg
ZGljdGF0aW9uQ29udGV4dCkgT1ZFUlJJREU7CisjZW5kaWYKIHByaXZhdGU6CiAgICAgV2ViVmll
dyogbV93ZWJWaWV3OwogI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4
dENsaWVudC5tbQppbmRleCBmMWE3MGZjNTQzYzZjNWM3YTgyMTFlNTdjNTA5YTk4YmIwMGZmZGNm
Li40ZDc4OWQzYzBkODg5YjBjYTY4ZGZhMWEyOWU1NTVmMDM0MGZhYjcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50Lm1tCkBAIC0yNSw2ICsyNSw4IEBACiAKICNpbmNsdWRlICJXZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQuaCIKIAorI2luY2x1ZGUgIldlYlZpZXdJbnRlcm5hbC5oIgorCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQoV2ViVmlldyogd2ViVmlldykKQEAgLTQ0LDMzICs0Niw0NyBAQCB2b2lk
IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cGFnZURlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRo
aXM7CiB9CiAKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiB2b2lkIFdlYkFsdGVybmF0
aXZlVGV4dENsaWVudDo6c2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShBbHRlcm5hdGl2ZVRleHRU
eXBlIHR5cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3Ry
aW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3Mp
CiB7Ci0jaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogICAgIG1fY29ycmVjdGlvblBhbmVs
LnNob3cobV93ZWJWaWV3LCB0eXBlLCBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIHJlcGxh
Y2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZywgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmlu
Z3MpOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaXNtaXNz
QWx0ZXJuYXRpdmUoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCByZWFzb24pCiB7
Ci0jaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogICAgIG1fY29ycmVjdGlvblBhbmVsLmRp
c21pc3MocmVhc29uKTsKLSNlbmRpZgogfQogCiBTdHJpbmcgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50OjpkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2
ZVRleHQgcmVhc29uKQogewotI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICByZXR1
cm4gbV9jb3JyZWN0aW9uUGFuZWwuZGlzbWlzcyhyZWFzb24pOwotI2Vsc2UKLXJldHVybiBTdHJp
bmcoKTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSByZXNwb25z
ZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZW1lbnRTdHJpbmcpCiB7Ci0jaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogICAgIE5TQ29y
cmVjdGlvblJlc3BvbnNlIHJlc3BvbnNlID0gcmVzcG9uc2VUeXBlID09IEF1dG9jb3JyZWN0aW9u
UmV2ZXJ0ZWQgPyBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkIDogTlNDb3JyZWN0aW9uUmVz
cG9uc2VFZGl0ZWQ7Ci1Db3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9u
c2UobV93ZWJWaWV3LCByZXNwb25zZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5n
KTsKKyAgICBDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UobV93
ZWJWaWV3LCByZXNwb25zZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKTsKK30K
ICNlbmRpZgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCit2b2lkIFdlYkFsdGVy
bmF0aXZlVGV4dENsaWVudDo6cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRp
Y3RhdGlvbkNvbnRleHQpCit7CisgICAgW21fd2ViVmlldyBfcmVtb3ZlRGljdGF0aW9uQWx0ZXJu
YXRpdmVzOmRpY3RhdGlvbkNvbnRleHRdOworfQorCit2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENs
aWVudDo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQor
eworICAgIFttX3dlYlZpZXcgX3Nob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJOmJvdW5kaW5nQm94
T2ZEaWN0YXRlZFRleHQgZm9yRGljdGF0aW9uQ29udGV4dDpkaWN0YXRpb25Db250ZXh0XTsKIH0K
Kwordm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NEaWN0YXRpb25BbHRlcm5h
dGl2ZVVJKCkKK3sKKyAgICBbbV93ZWJWaWV3IF9kaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVV
SV07Cit9CisKK1ZlY3RvcjxTdHJpbmc+IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGljdGF0
aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgcmV0dXJu
IFttX3dlYlZpZXcgX2RpY3RhdGlvbkFsdGVybmF0aXZlczpkaWN0YXRpb25Db250ZXh0XTsKK30K
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggMTdk
MzA5M2NkMGJlY2VkM2E3MmY3OTVhNGVjZWRkOWFhNmYwN2VhOC4uYzQzMWY5YjAyM2ZlODU1NmEw
Njg0NmU3ZmI0NzAyNzI5M2EwNWU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCkBAIC0xMTMsNiArMTEzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2ltcGxlRm9u
dERhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVQcm9wZXJ0eVNldC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UZXh0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJGb250Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViTlNBdHRyaWJ1dGVkU3Ry
aW5nRXh0cmFzLmg+CkBAIC01NjAzLDcgKzU2MDQsMTEgQEAgc3RhdGljIENHUG9pbnQgY29yZUdy
YXBoaWNzU2NyZWVuUG9pbnRGb3JBcHBLaXRTY3JlZW5Qb2ludChOU1BvaW50IHBvaW50KQogICAg
IGlmICghdmFsaWRBdHRyaWJ1dGVzKSB7CiAgICAgICAgIHZhbGlkQXR0cmlidXRlcyA9IFtbTlNB
cnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOgogICAgICAgICAgICAgTlNVbmRlcmxpbmVTdHls
ZUF0dHJpYnV0ZU5hbWUsIE5TVW5kZXJsaW5lQ29sb3JBdHRyaWJ1dGVOYW1lLAotICAgICAgICAg
ICAgTlNNYXJrZWRDbGF1c2VTZWdtZW50QXR0cmlidXRlTmFtZSwgTlNUZXh0SW5wdXRSZXBsYWNl
bWVudFJhbmdlQXR0cmlidXRlTmFtZSwgbmlsXTsKKyAgICAgICAgICAgIE5TTWFya2VkQ2xhdXNl
U2VnbWVudEF0dHJpYnV0ZU5hbWUsIE5TVGV4dElucHV0UmVwbGFjZW1lbnRSYW5nZUF0dHJpYnV0
ZU5hbWUsCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOU1RleHRBbHRlcm5hdGl2ZXNBdHRyaWJ1dGVOYW1lLAorI2VuZGlmCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuaWxdOwogICAgICAgICAvLyBOU1RleHQgYWxzbyBzdXBw
b3J0cyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMsIGJ1dCBpdCdzCiAgICAgICAgIC8vIGhhcmQg
dG8gdGVsbCB3aGljaCBhcmUgcmVhbGx5IHJlcXVpcmVkIGZvciB0ZXh0IGlucHV0IHRvCiAgICAg
ICAgIC8vIHdvcmsgd2VsbDsgSSBoYXZlIG5vdCBzZWVuIGFueSBpbnB1dCBtZXRob2QgbWFrZSB1
c2Ugb2YgdGhlbSB5ZXQuCkBAIC01OTIzLDcgKzU5MjgsMTQgQEAgc3RhdGljIHZvaWQgZXh0cmFj
dFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlv
blVuZGUKICAgICBOU1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UgPSB7IE5TTm90Rm91bmQsIDAgfTsK
ICAgICBib29sIGlzRnJvbUlucHV0TWV0aG9kID0gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRp
dG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7CiAKKyAgICBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRp
dmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zOwogICAgIGlmIChpc0F0dHJpYnV0ZWRT
dHJpbmcpIHsKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICAgICAgVmVjdG9y
PFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4gdGV4dEFsdGVybmF0aXZlczsKKyAg
ICAgICAgY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXMoc3RyaW5nLCB0ZXh0QWx0ZXJu
YXRpdmVzKTsKKyAgICAgICAgaWYgKCF0ZXh0QWx0ZXJuYXRpdmVzLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIFtbc2VsZiBfd2ViVmlld10gX2dldFdlYkNvcmVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6
ZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMgZnJvbVRleHRBbHRlcm5hdGl2ZXM6dGV4dEFs
dGVybmF0aXZlc107CisjZW5kaWYKICAgICAgICAgLy8gRklYTUU6IFdlIGlnbm9yZSBtb3N0IGF0
dHJpYnV0ZXMgZnJvbSB0aGUgc3RyaW5nLCBzbyBmb3IgZXhhbXBsZSBpbnNlcnRpbmcgZnJvbSBD
aGFyYWN0ZXIgUGFsZXR0ZSBsb3NlcyBmb250IGFuZCBnbHlwaCB2YXJpYXRpb24gZGF0YS4KICAg
ICAgICAgLy8gSXQgZG9lcyBub3QgbG9vayBsaWtlIGFueSBpbnB1dCBtZXRob2RzIGV2ZXIgdXNl
IGluc2VydFRleHQ6IHdpdGggYXR0cmlidXRlcyBvdGhlciB0aGFuIE5TVGV4dElucHV0UmVwbGFj
ZW1lbnRSYW5nZUF0dHJpYnV0ZU5hbWUuCiAgICAgICAgIHRleHQgPSBbc3RyaW5nIHN0cmluZ107
CkBAIC01OTYyLDcgKzU5NzQsMTEgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNB
dHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUKICAgICBpZiAo
IWNvcmVGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkpIHsKICAgICAgICAgLy8gQW4g
aW5zZXJ0VGV4dDogbWlnaHQgYmUgaGFuZGxlZCBieSBvdGhlciByZXNwb25kZXJzIGluIHRoZSBj
aGFpbiBpZiB3ZSBkb24ndCBoYW5kbGUgaXQuCiAgICAgICAgIC8vIE9uZSBleGFtcGxlIGlzIHNw
YWNlIGJhciB0aGF0IHJlc3VsdHMgaW4gc2Nyb2xsaW5nIGRvd24gdGhlIHBhZ2UuCi0gICAgICAg
IGV2ZW50SGFuZGxlZCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoZXZlbnRUZXh0
LCBldmVudCk7CisKKyAgICAgICAgaWYgKCFkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucy5p
c0VtcHR5KCkpCisgICAgICAgICAgICBldmVudEhhbmRsZWQgPSBjb3JlRnJhbWUtPmVkaXRvcigp
LT5pbnNlcnREaWN0YXRlZFRleHQoZXZlbnRUZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0
aW9ucywgZXZlbnQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBldmVudEhhbmRsZWQgPSBj
b3JlRnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGV2ZW50VGV4dCwgZXZlbnQpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIGV2ZW50SGFuZGxlZCA9IHRydWU7CiAgICAgICAgIGNvcmVGcmFtZS0+
ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbihldmVudFRleHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCmluZGV4IGM5MzgyM2EzOTQwY2E4NjZmZGFjNjZlOWQwNTgxYWRmZTY3
MGZlNDMuLjE1MTEwOTQ1ZTI0NTk4YzViYTNhMTJkZTdmMzZlZTNmNjczOTc5YTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTExMSw2ICsxMTEsNyBAQAogI2ltcG9ydCA8
SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNWYWx1
ZVJlZi5oPgogI2ltcG9ydCA8V2ViQ29yZS9BYnN0cmFjdERhdGFiYXNlLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9CYWNrRm9yd2FyZExp
c3RJbXBsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CkBAIC01NTM2LDE2ICs1
NTM3LDYgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVl
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBqc1ZhbHUKIAogI2VuZGlmCiAKLSNpZiAhZGVmaW5l
ZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BB
UkQpCi0tICh2b2lkKWhhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdDooTlNTdHJpbmcqKXJlc3Vs
dAotewotICAgIFdlYkZyYW1lICp3ZWJGcmFtZSA9IFtzZWxmIF9zZWxlY3RlZE9yTWFpbkZyYW1l
XTsKLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh3ZWJGcmFtZSk7Ci0gICAgaWYgKGNvcmVG
cmFtZSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+aGFuZGxlQWx0ZXJuYXRpdmVUZXh0
VUlSZXN1bHQocmVzdWx0KTsKLX0KLSNlbmRpZgotCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBX
ZWJWaWV3IChXZWJWaWV3VW5kb2FibGVFZGl0aW5nKQpAQCAtNjQxMCw2ICs2NDAxLDUwIEBAIHN0
YXRpYyB2b2lkIGdsaWJDb250ZXh0SXRlcmF0aW9uQ2FsbGJhY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJS
ZWYsIENGUnVuTG9vcEFjdGl2aXR5CiB9CiAjZW5kaWYKIAorI2lmIFVTRShBVVRPQ09SUkVDVElP
Tl9QQU5FTCkKKy0gKHZvaWQpaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6KE5TU3RyaW5n
Kil0ZXh0Cit7CisgICAgV2ViRnJhbWUgKndlYkZyYW1lID0gW3NlbGYgX3NlbGVjdGVkT3JNYWlu
RnJhbWVdOworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHdlYkZyYW1lKTsKKyAgICBpZiAo
Y29yZUZyYW1lKQorICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5oYW5kbGVBbHRlcm5hdGl2
ZVRleHRVSVJlc3VsdCh0ZXh0KTsKK30KKyNlbmRpZgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRF
Uk5BVElWRVMpCistICh2b2lkKV9nZXRXZWJDb3JlRGljdGF0aW9uQWx0ZXJuYXRpdmVzOihWZWN0
b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JilhbHRlcm5hdGl2ZXMgZnJvbVRleHRBbHRlcm5hdGl2
ZXM6KGNvbnN0IFZlY3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JilhbHRlcm5hdGl2ZXNX
aXRoUmFuZ2UKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFsdGVybmF0aXZlc1dpdGhS
YW5nZS5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFu
Z2UmIGFsdGVybmF0aXZlV2l0aFJhbmdlID0gYWx0ZXJuYXRpdmVzV2l0aFJhbmdlW2ldOworICAg
ICAgICB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0ID0gX3ByaXZhdGUtPm1fYWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLT5hZGRBbHRlcm5hdGl2ZXMoYWx0ZXJuYXRpdmVXaXRoUmFuZ2UuYWx0
ZXJuYXRpdmVzKTsKKyAgICAgICAgaWYgKGRpY3RhdGlvbkNvbnRleHQpCisgICAgICAgICAgICBh
bHRlcm5hdGl2ZXMuYXBwZW5kKERpY3RhdGlvbkFsdGVybmF0aXZlKGFsdGVybmF0aXZlV2l0aFJh
bmdlLnJhbmdlLmxvY2F0aW9uLCBhbHRlcm5hdGl2ZVdpdGhSYW5nZS5yYW5nZS5sZW5ndGgsIGRp
Y3RhdGlvbkNvbnRleHQpKTsKKyAgICB9Cit9CisKKy0gKHZvaWQpX3Nob3dEaWN0YXRpb25BbHRl
cm5hdGl2ZVVJOihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKWJvdW5kaW5nQm94T2ZEaWN0YXRl
ZFRleHQgZm9yRGljdGF0aW9uQ29udGV4dDoodWludDY0X3QpZGljdGF0aW9uQ29udGV4dAorewor
ICAgIF9wcml2YXRlLT5tX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+c2hvd0FsdGVybmF0
aXZlcyhzZWxmLCBbc2VsZiBfY29udmVydFJlY3RGcm9tUm9vdFZpZXc6Ym91bmRpbmdCb3hPZkRp
Y3RhdGVkVGV4dF0sIGRpY3RhdGlvbkNvbnRleHQsIF4oTlNTdHJpbmcqIGFjY2VwdGVkQWx0ZXJu
YXRpdmUpIHsKKyAgICAgICAgW3NlbGYgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6YWNj
ZXB0ZWRBbHRlcm5hdGl2ZV07CisgICAgfSk7Cit9CisKKy0gKHZvaWQpX2Rpc21pc3NEaWN0YXRp
b25BbHRlcm5hdGl2ZVVJCit7CisgICAgX3ByaXZhdGUtPm1fYWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyLT5kaXNtaXNzQWx0ZXJuYXRpdmVzKCk7Cit9CisKKy0gKHZvaWQpX3JlbW92ZURpY3Rh
dGlvbkFsdGVybmF0aXZlczoodWludDY0X3QpZGljdGF0aW9uQ29udGV4dAoreworICAgIF9wcml2
YXRlLT5tX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+cmVtb3ZlQWx0ZXJuYXRpdmVzKGRp
Y3RhdGlvbkNvbnRleHQpOworfQorCistIChWZWN0b3I8U3RyaW5nPilfZGljdGF0aW9uQWx0ZXJu
YXRpdmVzOih1aW50NjRfdClkaWN0YXRpb25Db250ZXh0Cit7CisgICAgcmV0dXJuIF9wcml2YXRl
LT5tX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+YWx0ZXJuYXRpdmVzRm9yQ29udGV4dChk
aWN0YXRpb25Db250ZXh0KTsKK30KKyNlbmRpZgorCiAtIChOU1BvaW50KV9jb252ZXJ0UG9pbnRG
cm9tUm9vdFZpZXc6KE5TUG9pbnQpcG9pbnQKIHsKICAgICByZXR1cm4gTlNNYWtlUG9pbnQocG9p
bnQueCwgW3NlbGYgYm91bmRzXS5zaXplLmhlaWdodCAtIHBvaW50LnkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCmluZGV4IGVhMmJmY2Y2MDc0ZTlhNTExYzNjM2VhZTJk
YjRmZjVlNWVjM2M0ZjYuLjJhZDQyMDBkNzQ0NWE4ZjhmZTRkOTBlMjAyMWFhOGExNjc4ZDAyMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKQEAgLTI5LDYgKzI5LDcg
QEAKIAogI2ltcG9ydCAiV2ViVHlwZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViRGVsZWdhdGVJ
bXBsZW1lbnRhdGlvbkNhY2hpbmcuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xheWVyRmx1c2hTY2hlZHVsZXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvTGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9QbGF0Zm9ybVN0cmluZy5oPgpAQCAtMzgsOCArMzksOSBAQAogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgSGlzdG9yeUl0ZW07Ci0g
ICAgY2xhc3MgUGFnZTsKK2NsYXNzIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKK2NsYXNz
IEhpc3RvcnlJdGVtOworY2xhc3MgUGFnZTsKIH0KIAogQGNsYXNzIFdlYkluc3BlY3RvcjsKQEAg
LTIwMCw1ICsyMDIsOSBAQCBwcml2YXRlOgogICAgIGludCB2YWxpZGF0aW9uTWVzc2FnZVRpbWVy
TWFnbmlmaWNhdGlvbjsKIAogICAgIGZsb2F0IGN1c3RvbURldmljZVNjYWxlRmFjdG9yOworCisj
aWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgT3duUHRyPFdlYkNvcmU6OkFsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlcj4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI7Cisj
ZW5kaWYKIH0KIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld0RhdGEubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCmlu
ZGV4IDBiODExN2EwOTcwNmQ1YjZlYzRlNjQ1N2MzMzk4ZTQ3NjI2YzU4YmEuLmUyNzY2ZjAxYTM1
YmMwN2VlYWE0ODZjMjY1NWI0YzAxYmFlZDk3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3RGF0YS5tbQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW1wb3J0ICJXZWJLaXRMb2dn
aW5nLmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaCIKKyNpbXBvcnQgPFdl
YkNvcmUvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hpc3RvcnlJdGVtLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1J1bkxvb3AuaD4KQEAgLTEwMCw2ICsxMDEsMTAgQEAgTGF5ZXJGbHVzaENv
bnRyb2xsZXI6OkxheWVyRmx1c2hDb250cm9sbGVyKFdlYlZpZXcqIHdlYlZpZXcpCiAKICAgICBw
bHVnaW5EYXRhYmFzZUNsaWVudENvdW50Kys7CiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFU
SVZFUykKKyAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBX
ZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIpOworI2VuZGlmCisKICAgICByZXR1
cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFs
LmgKaW5kZXggMDJjYzU1MDEwNmIwNDRmYmMxNzdjOWY1OWExZjgzZjU5MGRlNTBiMC4uYzA1MjU3
NDJlYzNiYmJjZmFjOTNiYzhjMDk4MGE2ZWI5MDc5ZjYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC0zNCwyMCArMzQsMjYgQEAKICNpbXBvcnQg
IldlYlR5cGVzSW50ZXJuYWwuaCIKIAogI2lmZGVmIF9fY3BsdXNwbHVzCisjaW1wb3J0IDxXZWJD
b3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9GaW5kT3B0aW9u
cy5oPgorI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVLZXlib2Fy
ZFVJTW9kZS5oPgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBFbGVtZW50OwotICAg
IGNsYXNzIEZyYW1lOwotICAgIGNsYXNzIEhpc3RvcnlJdGVtOwotICAgIGNsYXNzIEtVUkw7Ci0g
ICAgY2xhc3MgS2V5Ym9hcmRFdmVudDsKLSAgICBjbGFzcyBQYWdlOwotICAgIGNsYXNzIFJlbmRl
ckJveDsKLSAgICBjbGFzcyBOb2RlOworY2xhc3MgRWxlbWVudDsKK2NsYXNzIEV2ZW50OworY2xh
c3MgRnJhbWU7CitjbGFzcyBIaXN0b3J5SXRlbTsKK2NsYXNzIEtVUkw7CitjbGFzcyBLZXlib2Fy
ZEV2ZW50OworY2xhc3MgUGFnZTsKK2NsYXNzIFJlbmRlckJveDsKK2NsYXNzIE5vZGU7CitzdHJ1
Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmU7CiB9CiAjZW5kaWYKIApAQCAtNTksNiArNjUsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBXZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlT3B0aW9ucyhX
ZWJGaW5kT3B0aW9ucyBvcHRpb25zKTsKIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVT
KQorT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CisjZW5kaWYKKwogQGludGVyZmFjZSBX
ZWJWaWV3IChXZWJWaWV3RWRpdGluZ0V4dHJhcykKIC0gKEJPT0wpX3Nob3VsZENoYW5nZVNlbGVj
dGVkRE9NUmFuZ2U6KERPTVJhbmdlICopY3VycmVudFJhbmdlIHRvRE9NUmFuZ2U6KERPTVJhbmdl
ICopcHJvcG9zZWRSYW5nZSBhZmZpbml0eTooTlNTZWxlY3Rpb25BZmZpbml0eSlzZWxlY3Rpb25B
ZmZpbml0eSBzdGlsbFNlbGVjdGluZzooQk9PTClmbGFnOwogQGVuZApAQCAtOTUsNiArMTA1LDE4
IEBAIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlv
bnMpOwogLSAodm9pZClfc2NoZWR1bGVHbGliQ29udGV4dEl0ZXJhdGlvbnM7CiAjZW5kaWYKIAor
I2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKy0gKHZvaWQpaGFuZGxlQWNjZXB0ZWRBbHRl
cm5hdGl2ZVRleHQ6KE5TU3RyaW5nKil0ZXh0OworI2VuZGlmCisKKyNpZiBVU0UoRElDVEFUSU9O
X0FMVEVSTkFUSVZFUykKKy0gKHZvaWQpX2dldFdlYkNvcmVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6
KFZlY3RvcjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4mKWFsdGVybmF0aXZlcyBmcm9t
VGV4dEFsdGVybmF0aXZlczooY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZT4mKWFsdGVybmF0aXZlc1dpdGhSYW5nZTsKKy0gKHZvaWQpX3Nob3dEaWN0YXRpb25B
bHRlcm5hdGl2ZVVJOihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKWJvdW5kaW5nQm94T2ZEaWN0
YXRlZFRleHQgZm9yRGljdGF0aW9uQ29udGV4dDoodWludDY0X3QpZGljdGF0aW9uQ29udGV4dDsK
Ky0gKHZvaWQpX2Rpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJOworLSAodm9pZClfcmVtb3Zl
RGljdGF0aW9uQWx0ZXJuYXRpdmVzOih1aW50NjRfdClkaWN0YXRpb25Db250ZXh0OworLSAoVmVj
dG9yPFN0cmluZz4pX2RpY3RhdGlvbkFsdGVybmF0aXZlczoodWludDY0X3QpZGljdGF0aW9uQ29u
dGV4dDsKKyNlbmRpZgorCiBAZW5kCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDAyZjdiY2M0NTY3ZDc2NWM3YmQzYTQzNGYyNTcyNmE2
MTAzZTMxMzAuLjgyODliMTJjMTg4YmVkYWYwNTEwNDZmYTY4MjIyNzUyZWU5OGRkNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKQEAgLTY4Nyw5ICs2ODcs
NiBAQCBDb3VsZCBiZSB3b3J0aCBhZGRpbmcgdG8gdGhlIEFQSS4KIC0gKHZvaWQpc2V0QXV0b21h
dGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZDooQk9PTClmbGFnOwogLSAodm9pZCl0b2dnbGVB
dXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb246KGlkKXNlbmRlcjsKICNlbmRpZgotI2lmICFkZWZp
bmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVP
UEFSRCkKLS0gKHZvaWQpaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OihOU1N0cmluZyopcmVz
dWx0OwotI2VuZGlmCiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld0VkaXRpbmdJ
bk1haWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tDb250ZXh0
TWVudUl0ZW1UeXBlcy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1l
bnVJdGVtVHlwZXMuaAppbmRleCBhMzUzNmQ5NmQ3ZjNmOTJjYzNmOTQ4MGMyZjllMzA3MjE5NTFk
MDM5Li5iMzI2Nzk0ZGU4NzA5YzQ3ZTI4ZGQ4ODE3ZTM0OTUzMTFlOGY4MmQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbVR5cGVzLmgK
QEAgLTg4LDYgKzg4LDcgQEAgZW51bSB7CiAgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnUmlnaHRU
b0xlZnQsCiAgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnUERGU2luZ2xlUGFnZVNjcm9sbGluZywK
ICAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdQREZGYWNpbmdQYWdlc1Njcm9sbGluZywKKyAgICBr
V0tDb250ZXh0TWVudUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5hdGl2ZSwKICAgICBrV0tDb250ZXh0
TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCwKICAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdUZXh0
RGlyZWN0aW9uTWVudSwKICAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uRGVm
YXVsdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQ
SUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaApp
bmRleCA1ZTRiZjY5ZmZiNjcyZGU5Y2U2ZGU0ZGEwNjJlODgzN2RmMWVjMjFiLi5mZDFhODk2NzVh
NmQwM2IxOWQ0OGVhZGM1Zjk3NWQ5MTEyOTZjMzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCkBAIC00MTQsNiArNDE0LDggQEAgaW5saW5lIFdL
Q29udGV4dE1lbnVJdGVtVGFnIHRvQVBJKFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlv
bikKICAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ1BERlNpbmdsZVBhZ2VTY3Jv
bGxpbmc7CiAgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdQREZGYWNpbmdQYWdl
c1Njcm9sbGluZzoKICAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ1BERkZhY2lu
Z1BhZ2VzU2Nyb2xsaW5nOworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnRGlj
dGF0aW9uQWx0ZXJuYXRpdmU6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdE
aWN0YXRpb25BbHRlcm5hdGl2ZTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGNhc2UgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQ6CiAgICAgICAgIHJldHVybiBr
V0tDb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudDsKQEAgLTU5Miw2ICs1OTQsOCBAQCBp
bmxpbmUgV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24gdG9JbXBsKFdLQ29udGV4dE1lbnVJdGVt
VGFnIHRhZykKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1BERlNp
bmdsZVBhZ2VTY3JvbGxpbmc7CiAgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdQREZGYWNp
bmdQYWdlc1Njcm9sbGluZzoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ1BERkZhY2luZ1BhZ2VzU2Nyb2xsaW5nOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVt
VGFnRGljdGF0aW9uQWx0ZXJuYXRpdmU6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5hdGl2ZTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
ICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQ6CiAgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggM2NiNTdi
MDEzMzJkZmQ5ZDFjYTM0NDFmZDZlZDUzYjg4MmU2Yzc1ZS4uNTQyZmQzZmY4YzcyNDkwMGYxZmY2
NzczZjhiNWVjNjRlNTNmZDllYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0NyZWRlbnRpYWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRGF0YWJhc2VEZXRhaWxzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EaWN0YXRpb25BbHRl
cm5hdGl2ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ1Nlc3Npb24uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZUNob29zZXIuaD4KQEAgLTUy
NSw2ICs1MjYsMjQgQEAgYm9vbCBBcmd1bWVudENvZGVyPERhdGFiYXNlRGV0YWlscz46OmRlY29k
ZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIERhdGFiYXNlRGUKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAordm9pZCBBcmd1bWVudENvZGVyPERpY3RhdGlvbkFsdGVybmF0aXZlPjo6ZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgRGljdGF0aW9uQWx0ZXJuYXRpdmUmIGRpY3Rh
dGlvbkFsdGVybmF0aXZlKQoreworICAgIGVuY29kZXItPmVuY29kZShkaWN0YXRpb25BbHRlcm5h
dGl2ZS5yYW5nZVN0YXJ0KTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoZGljdGF0aW9uQWx0ZXJuYXRp
dmUucmFuZ2VMZW5ndGgpOworICAgIGVuY29kZXItPmVuY29kZShkaWN0YXRpb25BbHRlcm5hdGl2
ZS5kaWN0YXRpb25Db250ZXh0KTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPERpY3RhdGlvbkFs
dGVybmF0aXZlPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgRGljdGF0aW9uQWx0
ZXJuYXRpdmUmIGRpY3RhdGlvbkFsdGVybmF0aXZlKQoreworICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKGRpY3RhdGlvbkFsdGVybmF0aXZlLnJhbmdlU3RhcnQpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZGljdGF0aW9uQWx0ZXJuYXRpdmUucmFuZ2VM
ZW5ndGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
ZGljdGF0aW9uQWx0ZXJuYXRpdmUuZGljdGF0aW9uQ29udGV4dCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogCiB2b2lkIEFyZ3VtZW50Q29kZXI8RmlsZUNo
b29zZXJTZXR0aW5ncz46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IEZp
bGVDaG9vc2VyU2V0dGluZ3MmIHNldHRpbmdzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDI2OTc0MDhlZDU2ZWQ2ZDEzNjNmODQzYTYy
MDRmYjk3NDBjNjkyODUuLmRiMmI4Zjc0MWVjMmEzMWFjYmRjMTI3YzQxNzFmOWNiMzdkNDU5YWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAg
LTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogICAgIHN0cnVjdCBDb21wb3NpdGlv
blVuZGVybGluZTsKKyAgICBzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmU7CiAgICAgc3RydWN0
IERyYWdTZXNzaW9uOwogICAgIHN0cnVjdCBGaWxlQ2hvb3NlclNldHRpbmdzOwogICAgIHN0cnVj
dCBHcmFtbWFyRGV0YWlsOwpAQCAtMjA5LDYgKzIxMCwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscz4gewogICAgIHN0YXRpYyBib29s
IGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMmKTsKIH07
CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RGljdGF0aW9uQWx0
ZXJuYXRpdmU+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29u
c3QgV2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmUmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNv
ZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmUmKTsKK307
CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsZUNob29zZXJT
ZXR0aW5ncz4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBjb25z
dCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJik7CiAgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCmluZGV4
IDUyZGQwNTBiODYwZjZlNmRkZTkyYjkwZThiZjhhZjQ4NDE0MmY3YzQuLmFjMDc0ZThjYzU1NzI4
NDQxODJhYTU5MzVjMTA0OWVlZjdjN2Q1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaApAQCAtMzMsOCArMzMsMTEgQEAKIEBjbGFz
cyBXS0VkaXRvclVuZG9UYXJnZXRPYmpDOwogQGNsYXNzIFdLVmlldzsKIAotbmFtZXNwYWNlIFdl
YktpdCB7CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXI7Cit9CiAKK25hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgRmluZEluZGljYXRvcldpbmRv
dzsKIAogY2xhc3MgUGFnZUNsaWVudEltcGwgOiBwdWJsaWMgUGFnZUNsaWVudCB7CkBAIC0xMzAs
MTEgKzEzMywyMiBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBXS1ZpZXcqIHdrVmlldygpIGNv
bnN0IHsgcmV0dXJuIG1fd2tWaWV3OyB9CiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZF
UykKKyAgICB2aXJ0dWFsIHVpbnQ2NF90IGFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyhjb25zdCBS
ZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVE
aWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCk7CisgICAgdmly
dHVhbCB2b2lkIHNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4
dCk7CisgICAgdmlydHVhbCB2b2lkIGRpc21pc3NEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKCk7Cisg
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3Qg
ZGljdGF0aW9uQ29udGV4dCk7CisjZW5kaWYKKwogICAgIFdLVmlldyogbV93a1ZpZXc7CiAgICAg
UmV0YWluUHRyPFdLRWRpdG9yVW5kb1RhcmdldE9iakM+IG1fdW5kb1RhcmdldDsKICNpZiBVU0Uo
QVVUT0NPUlJFQ1RJT05fUEFORUwpCiAgICAgQ29ycmVjdGlvblBhbmVsIG1fY29ycmVjdGlvblBh
bmVsOwogI2VuZGlmCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgT3duUHRy
PFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4gbV9hbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQppbmRl
eCA3ODNjMzI4MDA5MGU5NmRjYjU0NDlkNWQzMzE0YThkNjcyYjBmMWU5Li44ZDA5MTNlNTJjODNm
YzE1NmE1Nzg4YTUxZTg0NzJmYmE3N2VkMzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQpAQCAtMjYsNiArMjYsOSBAQAogI2lt
cG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJQYWdlQ2xpZW50SW1wbC5oIgogCisjaWYgVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCisjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVz
Lmg+CisjZW5kaWYKICNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW1wb3J0ICJEaWN0aW9uYXJ5UG9wdXBJbmZvLmgiCkBAIC0zOCw2ICs0MSw3
IEBACiAjaW1wb3J0ICJXZWJDb250ZXh0TWVudVByb3h5TWFjLmgiCiAjaW1wb3J0ICJXZWJFZGl0
Q29tbWFuZFByb3h5LmgiCiAjaW1wb3J0ICJXZWJQb3B1cE1lbnVQcm94eU1hYy5oIgorI2ltcG9y
dCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvQml0bWFwSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ3Vyc29yLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0Zsb2F0UmVjdC5oPgpAQCAtMTIzLDYgKzEyNyw5IEBAIFBhc3NPd25QdHI8UGFnZUNs
aWVudEltcGw+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGUoV0tWaWV3KiB3a1ZpZXcpCiBQYWdlQ2xp
ZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV0tWaWV3KiB3a1ZpZXcpCiAgICAgOiBtX3drVmlldyh3
a1ZpZXcpCiAgICAgLCBtX3VuZG9UYXJnZXQoQWRvcHROUywgW1tXS0VkaXRvclVuZG9UYXJnZXRP
YmpDIGFsbG9jXSBpbml0XSkKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICAs
IG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKGFkb3B0UHRyKG5ldyBBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXIpKQorI2VuZGlmCiB7CiB9CiAKQEAgLTIxNSwxMCArMjIyLDEzIEBAIHZv
aWQgUGFnZUNsaWVudEltcGw6OnByb2Nlc3NEaWRDcmFzaCgpCiB7CiAgICAgW21fd2tWaWV3IF9w
cm9jZXNzRGlkQ3Jhc2hdOwogfQotICAgIAorCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwYWdlQ2xv
c2VkKCkKIHsKICAgICBbbV93a1ZpZXcgX3BhZ2VDbG9zZWRdOworI2lmIFVTRShESUNUQVRJT05f
QUxURVJOQVRJVkVTKQorICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5jbGVhcigp
OworI2VuZGlmCiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFJlbGF1bmNoUHJvY2Vzcygp
CkBAIC01MzUsNCArNTQ1LDM1IEBAIGJvb2wgUGFnZUNsaWVudEltcGw6OmV4ZWN1dGVTYXZlZENv
bW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JTdHJpbmcpCiAgICAgcmV0dXJu
IFttX3drVmlldyBfZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3I6TlNTZWxlY3RvckZyb21T
dHJpbmcoc2VsZWN0b3JTdHJpbmcpXTsKIH0KIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQordWludDY0X3QgUGFnZUNsaWVudEltcGw6OmFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyhj
b25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYgYWx0ZXJuYXRpdmVzKQoreworICAg
IHJldHVybiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci0+YWRkQWx0ZXJuYXRpdmVzKGFs
dGVybmF0aXZlcyk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnJlbW92ZURpY3RhdGlvbkFs
dGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIG1fYWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyLT5yZW1vdmVBbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCk7
Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0
X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBpZiAoIWlzVmlld1Zpc2libGUoKSB8fCAhaXNW
aWV3SW5XaW5kb3coKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyLT5zaG93QWx0ZXJuYXRpdmVzKG1fd2tWaWV3LCBib3VuZGluZ0JveE9mRGljdGF0
ZWRUZXh0LCBkaWN0YXRpb25Db250ZXh0LCBeKE5TU3RyaW5nKiBhY2NlcHRlZEFsdGVybmF0aXZl
KXsKKyAgICAgICAgW21fd2tWaWV3IGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0OmFjY2Vw
dGVkQWx0ZXJuYXRpdmVdOworICAgIH0pOworfQorCitWZWN0b3I8U3RyaW5nPiBQYWdlQ2xpZW50
SW1wbDo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCit7
CisgICAgcmV0dXJuIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5hbHRlcm5hdGl2ZXNG
b3JDb250ZXh0KGRpY3RhdGlvbkNvbnRleHQpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpk
aXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSSgpCit7CisgICAgbV9hbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXItPmRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5t
bQppbmRleCAyOTI0NTUzZTIwNTc3N2U3NWExMGYzZGMyMzkxMzFlMzMzNTY2Y2FiLi5hMWI1NTc2
YzBlYTk3ZTk4ZDQ2ZjU3NThlOGExYTM4MGJkODRlMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0yNiw2ICsyNiwxMSBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJXS1ZpZXcuaCIKIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQorI2ltcG9ydCA8QXBwS2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgorI2ltcG9ydCA8QXBw
S2l0L05TQXR0cmlidXRlZFN0cmluZy5oPgorI2VuZGlmCisKICNpbXBvcnQgIkF0dHJpYnV0ZWRT
dHJpbmcuaCIKICNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJl
bmNlLmgiCkBAIC03NCw2ICs3OSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1JlZ2lvbi5oPgogI2lt
cG9ydCA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5o
PgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViQ29yZU5TU3RyaW5nRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgpAQCAtMTE3Nyw3ICsx
MTgzLDEyIEBAIHN0YXRpYyBjb25zdCBzaG9ydCBrSU9ISURFdmVudFR5cGVTY3JvbGwgPSA2Owog
ICAgIE5TU3RyaW5nICp0ZXh0OwogICAgIGJvb2wgaXNGcm9tSW5wdXRNZXRob2QgPSBfZGF0YS0+
X3BhZ2UtPmVkaXRvclN0YXRlKCkuaGFzQ29tcG9zaXRpb247CiAKKyAgICBWZWN0b3I8VGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXM7CisKICAgICBpZiAoaXNB
dHRyaWJ1dGVkU3RyaW5nKSB7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAg
ICAgIGNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzKHN0cmluZywgZGljdGF0aW9uQWx0
ZXJuYXRpdmVzKTsKKyNlbmRpZgogICAgICAgICAvLyBGSVhNRTogV2UgaWdub3JlIG1vc3QgYXR0
cmlidXRlcyBmcm9tIHRoZSBzdHJpbmcsIHNvIGZvciBleGFtcGxlIGluc2VydGluZyBmcm9tIENo
YXJhY3RlciBQYWxldHRlIGxvc2VzIGZvbnQgYW5kIGdseXBoIHZhcmlhdGlvbiBkYXRhLgogICAg
ICAgICB0ZXh0ID0gW3N0cmluZyBzdHJpbmddOwogICAgIH0gZWxzZQpAQCAtMTE5OSw3ICsxMjEw
LDExIEBAIHN0YXRpYyBjb25zdCBzaG9ydCBrSU9ISURFdmVudFR5cGVTY3JvbGwgPSA2OwogCiAg
ICAgU3RyaW5nIGV2ZW50VGV4dCA9IHRleHQ7CiAgICAgZXZlbnRUZXh0LnJlcGxhY2UoTlNCYWNr
VGFiQ2hhcmFjdGVyLCBOU1RhYkNoYXJhY3Rlcik7IC8vIHNhbWUgdGhpbmcgaXMgZG9uZSBpbiBL
ZXlFdmVudE1hYy5tbSBpbiBXZWJDb3JlCi0gICAgYm9vbCBldmVudEhhbmRsZWQgPSBfZGF0YS0+
X3BhZ2UtPmluc2VydFRleHQoZXZlbnRUZXh0LCByZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uLCBO
U01heFJhbmdlKHJlcGxhY2VtZW50UmFuZ2UpKTsKKyAgICBib29sIGV2ZW50SGFuZGxlZDsKKyAg
ICBpZiAoIWRpY3RhdGlvbkFsdGVybmF0aXZlcy5pc0VtcHR5KCkpCisgICAgICAgIGV2ZW50SGFu
ZGxlZCA9IF9kYXRhLT5fcGFnZS0+aW5zZXJ0RGljdGF0ZWRUZXh0KGV2ZW50VGV4dCwgcmVwbGFj
ZW1lbnRSYW5nZS5sb2NhdGlvbiwgTlNNYXhSYW5nZShyZXBsYWNlbWVudFJhbmdlKSwgZGljdGF0
aW9uQWx0ZXJuYXRpdmVzKTsKKyAgICBlbHNlCisgICAgICAgIGV2ZW50SGFuZGxlZCA9IF9kYXRh
LT5fcGFnZS0+aW5zZXJ0VGV4dChldmVudFRleHQsIHJlcGxhY2VtZW50UmFuZ2UubG9jYXRpb24s
IE5TTWF4UmFuZ2UocmVwbGFjZW1lbnRSYW5nZSkpOwogCiAgICAgaWYgKHBhcmFtZXRlcnMpCiAg
ICAgICAgIHBhcmFtZXRlcnMtPmV2ZW50SW50ZXJwcmV0YXRpb25IYWRTaWRlRWZmZWN0cyB8PSBl
dmVudEhhbmRsZWQ7CkBAIC0xNDUxLDcgKzE0NjYsMTEgQEAgc3RhdGljIGNvbnN0IHNob3J0IGtJ
T0hJREV2ZW50VHlwZVNjcm9sbCA9IDY7CiAgICAgaWYgKCF2YWxpZEF0dHJpYnV0ZXMpIHsKICAg
ICAgICAgdmFsaWRBdHRyaWJ1dGVzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFt
ZSwgTlNVbmRlcmxpbmVDb2xvckF0dHJpYnV0ZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBOU01hcmtlZENsYXVzZVNlZ21lbnRBdHRyaWJ1dGVOYW1lLCBuaWxdOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTlNNYXJrZWRDbGF1c2VTZWdtZW50QXR0cmlidXRlTmFtZSwKKyNp
ZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5TVGV4dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5hbWUsCisjZW5kaWYKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5pbF07CiAgICAgICAgIC8vIE5TVGV4dCBhbHNvIHN1cHBvcnRzIHRoZSBm
b2xsb3dpbmcgYXR0cmlidXRlcywgYnV0IGl0J3MKICAgICAgICAgLy8gaGFyZCB0byB0ZWxsIHdo
aWNoIGFyZSByZWFsbHkgcmVxdWlyZWQgZm9yIHRleHQgaW5wdXQgdG8KICAgICAgICAgLy8gd29y
ayB3ZWxsOyBJIGhhdmUgbm90IHNlZW4gYW55IGlucHV0IG1ldGhvZCBtYWtlIHVzZSBvZiB0aGVt
IHlldC4KQEAgLTI5MDYsOSArMjkyNSw5IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhVbmlx
dWVGaWxlbmFtZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAgICAgcmV0dXJuIF9kYXRhLT5fc3Bl
bGxDaGVja2VyRG9jdW1lbnRUYWc7CiB9CiAKLS0gKHZvaWQpaGFuZGxlQ29ycmVjdGlvblBhbmVs
UmVzdWx0OihOU1N0cmluZyopcmVzdWx0CistICh2b2lkKWhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRp
dmVUZXh0OihOU1N0cmluZyopdGV4dAogewotICAgIF9kYXRhLT5fcGFnZS0+aGFuZGxlQWx0ZXJu
YXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0KTsKKyAgICBfZGF0YS0+X3BhZ2UtPmhhbmRsZUFsdGVy
bmF0aXZlVGV4dFVJUmVzdWx0KHRleHQpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAppbmRleCAwOGNmZjE0MGNmZmE4
MDFhMGYzMzJiYzhkMjc3NDQ1OGZiOTQwOTJkLi4wOWI5YzhjZjFkMTZhN2I5NzBiMmNjZTJiZGUz
MjI3YjM4MmY3OTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlld0ludGVybmFsLmgKQEAgLTk5LDUgKzk5LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAt
ICh2b2lkKV9jYWNoZVdpbmRvd0JvdHRvbUNvcm5lclJlY3Q7CiAKIC0gKE5TSW50ZWdlcilzcGVs
bENoZWNrZXJEb2N1bWVudFRhZzsKLS0gKHZvaWQpaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0
OihOU1N0cmluZyopcmVzdWx0OworLSAodm9pZCloYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4
dDooTlNTdHJpbmcqKXRleHQ7CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCmluZGV4IDYyMDU4ZmQ0OGI5M2ZmYTZhZDVkMGZjMmQyMzJhZmI1NTEzMGM3Y2UuLjc0MDFm
ZDc5OWQ0YWQwZWNiNTNjM2JiZjRjMzYxMDc3MzgwZDBjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQAogCiAjaWYgVVNFKEFQUEtJVCkKIE9C
SkNfQ0xBU1MgV0tWaWV3OworT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiAjZW5kaWYK
ICNlbmRpZgogCkBAIC0yMDEsOCArMjAyLDE1IEBAIHB1YmxpYzoKIAogI2lmIFVTRShBUFBLSVQp
CiAgICAgdmlydHVhbCBXS1ZpZXcqIHdrVmlldygpIGNvbnN0ID0gMDsKLSNlbmRpZgotI2VuZGlm
CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgdmlydHVhbCB1aW50NjRfdCBh
ZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZl
cz4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1
aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dEaWN0
YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hP
ZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSSgpID0gMDsKKyAgICB2aXJ0dWFs
IFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25D
b250ZXh0KSA9IDA7CisjZW5kaWYgLy8gVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisjZW5k
aWYgLy8gVVNFKEFQUEtJVCkKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hhbmdlU2Nyb2xsYmFyc0Zvck1haW5GcmFtZSgpIGNvbnN0ID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBhODRjNDY3OTMxZTVh
Mjc3ZmMxODdkN2YyMWM2NjlhNjc5YWM2ZmQ4Li5jYzk4MGQzMThlYTM5MzNmYWE5NmI0NjdiY2Fk
ZGIwZjQ2OTcwZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtMzgxMSw2ICszODExLDI5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVBbHRlcm5h
dGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCkKICAgICAgICAgcHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChy
ZXN1bHQpLCBtX3BhZ2VJRCwgMCk7CiAjZW5kaWYKIH0KKworI2lmIFVTRShESUNUQVRJT05fQUxU
RVJOQVRJVkVTKQordm9pZCBXZWJQYWdlUHJveHk6OnNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJ
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWlu
dDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBtX3BhZ2VDbGllbnQtPnNob3dEaWN0YXRp
b25BbHRlcm5hdGl2ZVVJKGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIGRpY3RhdGlvbkNvbnRl
eHQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZl
VUkoKQoreworICAgIG1fcGFnZUNsaWVudC0+ZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUko
KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1
aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIG1fcGFnZUNsaWVudC0+cmVtb3ZlRGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpOworfQorCit2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQsIFZl
Y3RvcjxTdHJpbmc+JiByZXN1bHQpCit7CisgICAgcmVzdWx0ID0gbV9wYWdlQ2xpZW50LT5kaWN0
YXRpb25BbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCk7Cit9CisjZW5kaWYKKwogI2VuZGlm
IC8vIFBMQVRGT1JNKE1BQykKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggY2M0MGNlZDM2OThlNGVjMWNkOTEzNGVjYTM0
ZmMwZGMyYTJhZTBiNC4uNGMwYzgyMTU4ZmNlMTgyMmJlYzE1NjBhZTVmOGY2MDliMTFiY2Q2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNTgsNiArNTgsOSBA
QAogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VM
b2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViVUlDbGllbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RyYWdTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9I
aXRUZXN0UmVzdWx0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybVNjcmVlbi5oPgpAQCAtOTUsNiArOTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgY2xhc3MgSW50U2l6ZTsKICAgICBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiAgICAg
c3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3M7CisgICAgc3RydWN0IFRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZTsKICAgICBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0OwogICAgIHN0cnVjdCBWaWV3
cG9ydEF0dHJpYnV0ZXM7CiAgICAgc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwpAQCAtMzUzLDYgKzM1
Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbmZpcm1Db21wb3NpdGlvbigpOwogICAgIHZvaWQg
Y2FuY2VsQ29tcG9zaXRpb24oKTsKICAgICBib29sIGluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50
UmFuZ2VFbmQpOworICAgIGJvb2wgaW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4
dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJh
bmdlRW5kLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYg
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICB2b2lkIGdldE1hcmtlZFJhbmdlKHVpbnQ2NF90
JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCk7CiAgICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdl
KHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCk7CiAgICAgdm9pZCBnZXRBdHRy
aWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5n
dGgsIEF0dHJpYnV0ZWRTdHJpbmcmKTsKQEAgLTkwNiw2ICs5MTEsMTMgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKGludDMyX3QgcmVhc29uLCBTdHJpbmcm
IHJlc3VsdCk7CiAgICAgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3Qg
cmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50U3RyaW5nKTsKICNlbmRpZiAvLyAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9X
X0xFT1BBUkQpCisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICB2b2lkIHNo
b3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRp
bmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCk7CisgICAgdm9p
ZCBkaXNtaXNzRGljdGF0aW9uQWx0ZXJuYXRpdmVVSSgpOworICAgIHZvaWQgcmVtb3ZlRGljdGF0
aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOworICAgIHZvaWQgZGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQsIFZlY3RvcjxTdHJp
bmc+JiByZXN1bHQpOworI2VuZGlmCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAgICAgdm9p
ZCBjbGVhckxvYWREZXBlbmRlbnRDYWxsYmFja3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGRlNjBhNzE2NmY1NGE4MTg5
MTM1MGUwNzU0MjVhM2E5ODNlM2UwZTMuLjkzODU4YTgzMmJhOTcwYjk4M2RhNWFhMTA1NjUyMzkw
OTUyZjY3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMjgxLDYgKzI4MSwxMyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJv
eHkgewogICAgIFJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoaW50MzJfdCByZXNwb25zZVR5
cGUsIFN0cmluZyByZXBsYWNlZFN0cmluZywgU3RyaW5nIHJlcGxhY2VtZW50U3RyaW5nKTsKICNl
bmRpZgogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgU2hvd0RpY3RhdGlv
bkFsdGVybmF0aXZlVUkoV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRl
eHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpCisgICAgRGlzbWlzc0RpY3RhdGlvbkFsdGVy
bmF0aXZlVUkoKQorICAgIFJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0
YXRpb25Db250ZXh0KQorICAgIERpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRp
b25Db250ZXh0KSAtPiAoVmVjdG9yPFN0cmluZz4gYWx0ZXJuYXRpdmVzKQorI2VuZGlmCisKICNp
ZiBQTEFURk9STShXSU4pCiAgICAgIyBXaW5kb3dzIDcgR2VzdHVyZSBNZXNzYWdlcwogICAgIFNl
dEdlc3R1cmVSZWFjaGVkU2Nyb2xsaW5nTGltaXQoYm9vbCBsaW1pdFJlYWNoZWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tCmluZGV4IDI5Njgx
Yzc0ZGE2ZTBiOGRiNjc3OTc2OWE1NjFkN2EzM2JlYzIyZTcuLjMzZjNmZTk4MmNmYmU4NDRiN2Ew
NWRjYTgzZTA2NjY4YzBmMjQ2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvQ29ycmVjdGlvblBhbmVsLm1tCkBAIC00Myw2ICs0Myw5IEBAIHN0YXRpYyBpbmxpbmUgTlND
b3JyZWN0aW9uSW5kaWNhdG9yVHlwZSBjb3JyZWN0aW9uSW5kaWNhdG9yVHlwZShBbHRlcm5hdGl2
ZVRleHRUCiAgICAgICAgIHJldHVybiBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlUmV2ZXJzaW9u
OwogICAgIGNhc2UgQWx0ZXJuYXRpdmVUZXh0VHlwZVNwZWxsaW5nU3VnZ2VzdGlvbnM6CiAgICAg
ICAgIHJldHVybiBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlR3Vlc3NlczsKKyAgICBjYXNlIEFs
dGVybmF0aXZlVGV4dFR5cGVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIE5TQ29ycmVjdGlvbkluZGljYXRvclR5cGVEZWZhdWx0OwpAQCAt
MTM4LDcgKzE0MSw3IEBAIHZvaWQgQ29ycmVjdGlvblBhbmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxh
Y2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJlcGxhY2VtZW50LCBOCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAotICAgIFttX3ZpZXcuZ2V0KCkgaGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0OmFj
Y2VwdGVkUmVwbGFjZW1lbnRdOworICAgIFttX3ZpZXcuZ2V0KCkgaGFuZGxlQWNjZXB0ZWRBbHRl
cm5hdGl2ZVRleHQ6YWNjZXB0ZWRSZXBsYWNlbWVudF07CiAgICAgbV92aWV3LmNsZWFyKCk7CiAg
ICAgaWYgKGFjY2VwdGVkUmVwbGFjZW1lbnQpCiAgICAgICAgIG1fcmVzdWx0Rm9yRGlzbWlzc2Fs
LmFkb3B0TlMoW2FjY2VwdGVkUmVwbGFjZW1lbnQgY29weV0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBlYTdlNWVmNjNhNjcxODI2
Yjg4MGRlODQwOGZmNjRkYzE2N2JiYjgyLi45NjcxMmJmMGM1MjczNjIyMTczY2U1NWNlNGUwNDRl
YzNmYTZlOTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbQpAQCAtMzksNyArMzksOSBAQAogI2ltcG9ydCAiVGV4dENoZWNrZXIuaCIKICNp
bXBvcnQgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCisj
aW1wb3J0IDxXZWJDb3JlL0RpY3RhdGlvbkFsdGVybmF0aXZlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFu
Z2UuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIApAQCAtMTk5LDYgKzIwMSwzNSBAQCBib29sIFdlYlBh
Z2VQcm94eTo6aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2Vt
ZW50UmFuZ2VTdGFydAogICAgIHJldHVybiBoYW5kbGVkOwogfQogCitib29sIFdlYlBhZ2VQcm94
eTo6aW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFj
ZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kLCBjb25zdCBWZWN0
b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzV2l0aFJh
bmdlKQoreworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIGlmIChkaWN0YXRp
b25BbHRlcm5hdGl2ZXNXaXRoUmFuZ2UuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gaW5zZXJ0
VGV4dCh0ZXh0LCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQpOwor
CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgVmVjdG9y
PERpY3RhdGlvbkFsdGVybmF0aXZlPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXM7CisKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZS5zaXplKCk7
ICsraSkgeworICAgICAgICBjb25zdCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UmIGFsdGVybmF0
aXZlV2l0aFJhbmdlID0gZGljdGF0aW9uQWx0ZXJuYXRpdmVzV2l0aFJhbmdlW2ldOworICAgICAg
ICB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0ID0gbV9wYWdlQ2xpZW50LT5hZGREaWN0YXRpb25B
bHRlcm5hdGl2ZXMoYWx0ZXJuYXRpdmVXaXRoUmFuZ2UuYWx0ZXJuYXRpdmVzKTsKKyAgICAgICAg
aWYgKGRpY3RhdGlvbkNvbnRleHQpCisgICAgICAgICAgICBkaWN0YXRpb25BbHRlcm5hdGl2ZXMu
YXBwZW5kKERpY3RhdGlvbkFsdGVybmF0aXZlKGFsdGVybmF0aXZlV2l0aFJhbmdlLnJhbmdlLmxv
Y2F0aW9uLCBhbHRlcm5hdGl2ZVdpdGhSYW5nZS5yYW5nZS5sZW5ndGgsIGRpY3RhdGlvbkNvbnRl
eHQpKTsKKyAgICB9CisKKyAgICBpZiAoZGljdGF0aW9uQWx0ZXJuYXRpdmVzLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIGluc2VydFRleHQodGV4dCwgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCBy
ZXBsYWNlbWVudFJhbmdlRW5kKTsKKworICAgIGJvb2wgaGFuZGxlZCA9IHRydWU7CisgICAgcHJv
Y2VzcygpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RGljdGF0ZWRUZXh0KHRl
eHQsIHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCwgZGljdGF0aW9u
QWx0ZXJuYXRpdmVzKSwgTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERpY3RhdGVkVGV4dDo6UmVw
bHkoaGFuZGxlZCwgbV9lZGl0b3JTdGF0ZSksIG1fcGFnZUlEKTsKKyAgICByZXR1cm4gaGFuZGxl
ZDsKKyNlbHNlCisgICAgcmV0dXJuIGluc2VydFRleHQodGV4dCwgcmVwbGFjZW1lbnRSYW5nZVN0
YXJ0LCByZXBsYWNlbWVudFJhbmdlRW5kKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0TWFya2VkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKQog
ewogICAgIGxvY2F0aW9uID0gTlNOb3RGb3VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4
dENsaWVudC5oCmluZGV4IDIwMDc2NTgzNjgwNTNmZjJiMmVmYmIwYTM0YmZmZmNmYjlkMjk3MWEu
LjgwYWE5YTRlNThhOTMwZjhlMDUyOTQ2NDFkMzMyNWMzN2UxYjdkOWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaApAQCAtMzgsMTAgKzM4LDE4IEBAIHB1YmxpYzoKICAg
ICBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoV2ViUGFnZSAqKTsKICAgICB2aXJ0dWFsIH5XZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgp
IE9WRVJSSURFOworI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICB2aXJ0dWFsIHZv
aWQgc2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBl
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywg
Y29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0
cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdz
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0FsdGVybmF0aXZlKFdlYkNvcmU6
OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgU3RyaW5nIGRpc21pc3NBbHRlcm5hdGl2ZVNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlz
c2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRT
dHJpbmcpIE9WRVJSSURFOworI2VuZGlmCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMp
CisgICAgdmlydHVhbCB2b2lkIHNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3QgZGljdGF0
aW9uQ29udGV4dCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc21pc3NEaWN0YXRpb25B
bHRlcm5hdGl2ZVVJKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURpY3RhdGlv
bkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0
YXRpb25Db250ZXh0KSBPVkVSUklERTsKKyNlbmRpZgogcHJpdmF0ZToKICAgICBXZWJQYWdlICpt
X3BhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5j
cHAKaW5kZXggYWMxZGZjNTgzYTY0YWExMjEzNjY2OWYyOTRiMmU0ZmVlZmM5MGMwYS4uMWZjZWM5
MTEzODUyZGFhNDFmN2FkNDkyMzlmYjU4MDBiNDVhZDk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwCkBAIC01MSwzNCArNTEsNTEgQEAgdm9pZCBX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnBhZ2VEZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0aGlz
OwogfQogCisjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogdm9pZCBXZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQ6OnNob3dDb3JyZWN0aW9uQWx0ZXJuYXRpdmUoQWx0ZXJuYXRpdmVUZXh0VHlw
ZSB0eXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmlu
ZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQog
ewotI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvcnJlY3Rpb25QYW5lbCh0eXBlLCBib3VuZGluZ0JveE9m
UmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZywgYWx0ZXJu
YXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpKTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYkFsdGVybmF0
aXZlVGV4dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0aXZlKFJlYXNvbkZvckRpc21pc3NpbmdBbHRl
cm5hdGl2ZVRleHQgcmVhc29uKQogewotI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlzbWlzc0NvcnJlY3Rpb25Q
YW5lbChyZWFzb24pKTsKLSNlbmRpZgogfQogCiBTdHJpbmcgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50OjpkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2
ZVRleHQgcmVhc29uKQogewogICAgIFN0cmluZyByZXN1bHQ7Ci0jaWYgVVNFKEFVVE9DT1JSRUNU
SU9OX1BBTkVMKQogICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24ocmVhc29uKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb246OlJlcGx5KHJlc3VsdCkpOwotI2VuZGlmCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVz
cG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50U3RyaW5nKQogewotI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVjb3JkQXV0b2NvcnJlY3Rpb25S
ZXNwb25zZShyZXNwb25zZVR5cGUsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZykp
OworfQogI2VuZGlmCisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKK3ZvaWQgV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0
X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6UmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpKTsK
IH0KIAordm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnNob3dEaWN0YXRpb25BbHRlcm5h
dGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4
dCwgdWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoYm91bmRpbmdCb3hP
ZkRpY3RhdGVkVGV4dCwgZGljdGF0aW9uQ29udGV4dCkpOworfQorCit2b2lkIFdlYkFsdGVybmF0
aXZlVGV4dENsaWVudDo6ZGlzbWlzc0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoKQoreworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaXNtaXNzRGljdGF0aW9uQWx0ZXJu
YXRpdmVVSSgpKTsKK30KKworVmVjdG9yPFN0cmluZz4gV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
OjpkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAg
ICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7CisgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCksIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpY3RhdGlvbkFsdGVybmF0aXZlczo6UmVwbHkocmVzdWx0
KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMzNlMmNlY2I2ZjczMTQxZTgwOThlNGZk
MDY3NTAwOTk1NzQ1M2EwNC4uMzJkNDMzMjEyOWNjYmVjYmNlMzg5NzBhMjFhMzAxNDA1MDQ2Zjlh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00
OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNo
YXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIldlYlVuZG9TdGVwLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVM
b2FkZXJUeXBlcy5oPgpAQCAtNDE5LDcgKzQyMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3Vs
ZERlbGF5V2luZG93T3JkZXJpbmdFdmVudChjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQmLCBi
b29sJiByZXN1bHQpOwogICAgIHZvaWQgYWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVy
LCBjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQmLCBib29sJiByZXN1bHQpOwogICAgIGJvb2wg
cGVyZm9ybU5vbkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbnN0IFN0cmluZyYpOwotCisg
ICAgdm9pZCBpbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCBy
ZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQsIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0
aXZlTG9jYXRpb25zLCBib29sJiBoYW5kbGVkLCBFZGl0b3JTdGF0ZSYgbmV3U3RhdGUpOwogI2Vs
aWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmlu
ZyYgY29tcG9zaXRpb25TdHJpbmcpOwogICAgIHZvaWQgc2V0Q29tcG9zaXRpb24oY29uc3QgV1RG
OjpTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCBjb25zdCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpD
b21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVybGluZXMsIHVpbnQ2NF90IGN1cnNvclBvc2l0aW9u
KTsKQEAgLTUwNyw3ICs1MDgsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVubWFya0FsbE1pc3Nw
ZWxsaW5ncygpOwogICAgIHZvaWQgdW5tYXJrQWxsQmFkR3JhbW1hcigpOwotCiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAgICAgdm9pZCBo
YW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgppbmRleCA5Yjk1MzRlYWU4YjdmMWQ4N2RmMjUwYWEwNGJiN2IyMjRjOWExM2UwLi43YTdm
NGViZjU4OWIxZTQyNjAwNjA3NDM4ODM5OGQ3MDFiYzc5ODJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjUw
LDYgKzI1MCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogICAgIEV4ZWN1dGVLZXlwcmVzc0Nv
bW1hbmRzKFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+IHNhdmVkQ29tbWFuZHMpIC0+
IChib29sIGhhbmRsZWQsIFdlYktpdDo6RWRpdG9yU3RhdGUgbmV3U3RhdGUpCiAgICAgU2hvdWxk
RGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50KFdlYktpdDo6V2ViTW91c2VFdmVudCBldmVudCkgLT4g
KGJvb2wgcmVzdWx0KQogICAgIEFjY2VwdHNGaXJzdE1vdXNlKGludCBldmVudE51bWJlciwgV2Vi
S2l0OjpXZWJNb3VzZUV2ZW50IGV2ZW50KSAtPiAoYm9vbCByZXN1bHQpCisgICAgSW5zZXJ0RGlj
dGF0ZWRUZXh0KFdURjo6U3RyaW5nIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFy
dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCwgV1RGOjpWZWN0b3I8V2ViQ29yZTo6RGlj
dGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlcykgLT4gKGJvb2wgaGFuZGxl
ZCwgV2ViS2l0OjpFZGl0b3JTdGF0ZSBuZXdTdGF0ZSkKICNlbmRpZgogI2lmIFBMQVRGT1JNKFdJ
TikKICAgICAvLyBGSVhNRTogVW5pZnkgd2l0aCBNYWMgY291bnRlcnBhcnRzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4
IDllMGMxMzc3NWQyNmYwMGNmMmQ4OTc4YjZjN2ZmYTkyMWFmYWRjZTQuLjIyZWVkZTg0MzUwZWU4
OWYzNTk3NDNiODZkZmZjZDcwNTI2ZTc1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTI5MCw2ICsyOTAsMjEgQEAg
dm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVw
bGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW4KICAgICBuZXdTdGF0ZSA9IGVkaXRvclN0YXRlKCk7CiB9
CiAKK3ZvaWQgV2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwg
dWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdl
RW5kLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRp
b25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9vbCYgaGFuZGxlZCwgRWRpdG9yU3RhdGUmIG5ld1N0
YXRlKQoreworICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpOworCisgICAgaWYgKHJlcGxhY2VtZW50UmFuZ2VTdGFydCAhPSBO
U05vdEZvdW5kKSB7CisgICAgICAgIFJlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9IGNv
bnZlcnRUb1JhbmdlKGZyYW1lLCBOU01ha2VSYW5nZShyZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJl
cGxhY2VtZW50UmFuZ2VFbmQgLSByZXBsYWNlbWVudFJhbmdlU3RhcnQpKTsKKyAgICAgICAgaWYg
KHJlcGxhY2VtZW50UmFuZ2UpCisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNldFNl
bGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCksIFNFTF9ERUZB
VUxUX0FGRklOSVRZKSk7CisgICAgfQorCisgICAgQVNTRVJUKCFmcmFtZS0+ZWRpdG9yKCktPmhh
c0NvbXBvc2l0aW9uKCkpOworICAgIGhhbmRsZWQgPSBmcmFtZS0+ZWRpdG9yKCktPmluc2VydERp
Y3RhdGVkVGV4dCh0ZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgbV9rZXlib2Fy
ZEV2ZW50QmVpbmdJbnRlcnByZXRlZCk7CisgICAgbmV3U3RhdGUgPSBlZGl0b3JTdGF0ZSgpOwor
fQorCiB2b2lkIFdlYlBhZ2U6OmdldE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWlu
dDY0X3QmIGxlbmd0aCkKIHsKICAgICBsb2NhdGlvbiA9IE5TTm90Rm91bmQ7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzcxM2Q2ZGViYmM0NTky
NmUwODU1ZTdkZDMyY2UyMTMyMTkyN2RmMC4uODQ1NmM0Y2MxZDJlYTJkOTFkYzBlOGI5MDAwYjA2
NjJlM2QyOWRmYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA2LTEzICBKaWEgUHUgIDxqcHVAYXBwbGUuY29t
PgorCisgICAgICAgIE1hcmsgdGV4dCB3aXRoIHRleHQgYWx0ZXJuYXRpdmUgd2l0aCBibHVlIHVu
ZGVybGluZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgzMDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlci5tOgorICAgICAgICAoK1tU
ZXh0SW5wdXRDb250cm9sbGVyIGlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6XSk6Cisg
ICAgICAgICgrW1RleHRJbnB1dENvbnRyb2xsZXIgd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOl0p
OgorICAgICAgICAoLVtUZXh0SW5wdXRDb250cm9sbGVyIGRpY3RhdGVkU3RyaW5nV2l0aFByaW1h
cnlTdHJpbmc6YWx0ZXJuYXRpdmU6YWx0ZXJuYXRpdmVPZmZzZXQ6YWx0ZXJuYXRpdmVMZW5ndGg6
XSk6CisKIDIwMTItMDYtMTMgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHMgZG9lcyBub3Qgc3VwcG9ydCAtLTMyLWJpdCBs
aWtlIE9SV1QgZGlkCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElu
cHV0Q29udHJvbGxlci5tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRy
b2xsZXIubQppbmRleCBmNzgwNzk0NDYzNjllNzhjOWY0OGNlMDgxNWVmMWNjYzhkZjBiOTlkLi5h
ZmViMTZlNGQyNDJiMmI2MDIwYzAyZTQ0MWFlODNkNzQwZTkzMmYzIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyLm0KQEAgLTMxLDYgKzMxLDEwIEBA
CiAKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlTWFjLmgiCiAjaW1wb3J0IDxBcHBLaXQvTlNJbnB1
dE1hbmFnZXIuaD4KKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xJT04p
CisjZGVmaW5lIFNVUFBPUlRfRElDVEFUSU9OX0FMVEVSTkFUSVZFUworI2ltcG9ydCA8QXBwS2l0
L05TVGV4dEFsdGVybmF0aXZlcy5oPgorI2VuZGlmCiAjaW1wb3J0IDxXZWJLaXQvV2ViRG9jdW1l
bnQuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZy
YW1lUHJpdmF0ZS5oPgpAQCAtMTcwLDcgKzE3NCw4IEBAICsgKEJPT0wpaXNTZWxlY3RvckV4Y2x1
ZGVkRnJvbVdlYlNjcmlwdDooU0VMKWFTZWxlY3RvcgogICAgICAgICAgICAgfHwgYVNlbGVjdG9y
ID09IEBzZWxlY3RvcihjaGFyYWN0ZXJJbmRleEZvclBvaW50WDpZOikKICAgICAgICAgICAgIHx8
IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IodmFsaWRBdHRyaWJ1dGVzRm9yTWFya2VkVGV4dCkKICAg
ICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoYXR0cmlidXRlZFN0cmluZ1dpdGhT
dHJpbmc6KQotICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihzZXRJbnB1dE1l
dGhvZEhhbmRsZXI6KSkKKyAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc2V0
SW5wdXRNZXRob2RIYW5kbGVyOikKKyAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0
b3IoZGljdGF0ZWRTdHJpbmdXaXRoUHJpbWFyeVN0cmluZzphbHRlcm5hdGl2ZTphbHRlcm5hdGl2
ZU9mZnNldDphbHRlcm5hdGl2ZUxlbmd0aDopKQogICAgICAgICByZXR1cm4gTk87CiAgICAgcmV0
dXJuIFlFUzsKIH0KQEAgLTE5NCw3ICsxOTksOSBAQCArIChOU1N0cmluZyAqKXdlYlNjcmlwdE5h
bWVGb3JTZWxlY3RvcjooU0VMKWFTZWxlY3RvcgogICAgIGVsc2UgaWYgKGFTZWxlY3RvciA9PSBA
c2VsZWN0b3IoYXR0cmlidXRlZFN0cmluZ1dpdGhTdHJpbmc6KSkKICAgICAgICAgcmV0dXJuIEAi
bWFrZUF0dHJpYnV0ZWRTdHJpbmciOyAvLyBqdXN0IGEgZmFjdG9yeSBtZXRob2QsIGRvZXNuJ3Qg
Y2FsbCBpbnRvIE5TVGV4dElucHV0CiAgICAgZWxzZSBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3Rv
cihzZXRJbnB1dE1ldGhvZEhhbmRsZXI6KSkKLSAgICAgICAgcmV0dXJuIEAic2V0SW5wdXRNZXRo
b2RIYW5kbGVyIjsgCisgICAgICAgIHJldHVybiBAInNldElucHV0TWV0aG9kSGFuZGxlciI7Cisg
ICAgZWxzZSBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihkaWN0YXRlZFN0cmluZ1dpdGhQcmlt
YXJ5U3RyaW5nOmFsdGVybmF0aXZlOmFsdGVybmF0aXZlT2Zmc2V0OmFsdGVybmF0aXZlTGVuZ3Ro
OikpCisgICAgICAgIHJldHVybiBAIm1ha2VEaWN0YXRlZFN0cmluZyI7CiAKICAgICByZXR1cm4g
bmlsOwogfQpAQCAtMzc1LDYgKzM4MiwyNyBAQCAtIChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5n
ICopYXR0cmlidXRlZFN0cmluZ1dpdGhTdHJpbmc6KE5TU3RyaW5nICopYVN0cmluZwogICAgIHJl
dHVybiBbW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzph
U3RyaW5nXSBhdXRvcmVsZWFzZV07CiB9CiAKKy0gKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcq
KWRpY3RhdGVkU3RyaW5nV2l0aFByaW1hcnlTdHJpbmc6KE5TU3RyaW5nKilhU3RyaW5nIGFsdGVy
bmF0aXZlOihOU1N0cmluZyopYWx0ZXJuYXRpdmUgYWx0ZXJuYXRpdmVPZmZzZXQ6KGludClvZmZz
ZXQgYWx0ZXJuYXRpdmVMZW5ndGg6KGludClsZW5ndGgKK3sKKyNpZiBkZWZpbmVkKFNVUFBPUlRf
RElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBk
aWN0YXRlZFN0cmluZyA9IFtzZWxmIGF0dHJpYnV0ZWRTdHJpbmdXaXRoU3RyaW5nOmFTdHJpbmdd
OworICAgIE5TUmFuZ2UgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBOU01ha2VSYW5nZSgoTlNVSW50
ZWdlcilvZmZzZXQsIChOU1VJbnRlZ2VyKWxlbmd0aCk7CisgICAgTlNTdHJpbmcqIHN1YlN0cmlu
Z1dpdGhBbHRlcm5hdGl2ZSA9IFthU3RyaW5nIHN1YnN0cmluZ1dpdGhSYW5nZTpyYW5nZVdpdGhB
bHRlcm5hdGl2ZV07CisgICAgaWYgKCFzdWJTdHJpbmdXaXRoQWx0ZXJuYXRpdmUpCisgICAgICAg
IHJldHVybiBuaWw7CisKKyAgICBOU1RleHRBbHRlcm5hdGl2ZXMqIGFsdGVybmF0aXZlT2JqZWN0
ID0gW1tbTlNUZXh0QWx0ZXJuYXRpdmVzIGFsbG9jXSBpbml0V2l0aFByaW1hcnlTdHJpbmc6c3Vi
U3RyaW5nV2l0aEFsdGVybmF0aXZlIGFsdGVybmF0aXZlU3RyaW5nczpbTlNBcnJheSBhcnJheVdp
dGhPYmplY3Q6YWx0ZXJuYXRpdmVdXSBhdXRvcmVsZWFzZV07CisgICAgaWYgKCFhbHRlcm5hdGl2
ZU9iamVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIFtkaWN0YXRlZFN0cmluZyBhZGRB
dHRyaWJ1dGU6TlNUZXh0QWx0ZXJuYXRpdmVzQXR0cmlidXRlTmFtZSB2YWx1ZTphbHRlcm5hdGl2
ZU9iamVjdCByYW5nZTpyYW5nZVdpdGhBbHRlcm5hdGl2ZV07CisKKyAgICByZXR1cm4gZGljdGF0
ZWRTdHJpbmc7CisjZWxzZQorICAgIHJldHVybiBuaWw7CisjZW5kaWYKK30KKwogLSAodm9pZClz
ZXRJbnB1dE1ldGhvZEhhbmRsZXI6KFdlYlNjcmlwdE9iamVjdCAqKWhhbmRsZXIKIHsKICAgICBp
ZiAoaW5wdXRNZXRob2RIYW5kbGVyID09IGhhbmRsZXIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzI1ZDY3MTQ1NWQ5MDRk
MzEwNjRiZmE2YTNjNGFlMWFkYjBiNzNkMy4uN2MyODY2ZmFjNTk4ZThmM2MyZWE5YzlmYzhjZWYx
NWU2OWU1NmNlOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA2LTEzICBKaWEgUHUgIDxq
cHVAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgdGV4dCB3aXRoIHRleHQgYWx0ZXJuYXRpdmUg
d2l0aCBibHVlIHVuZGVybGluZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgzMDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtbGlvbi9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy1zbm93bGVvcGFyZC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0
aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRpdC1kaWN0
YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWFjL2VkaXRpbmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQtZGljdGF0
ZWQtdGV4dC5odG1sOiBBZGRlZC4KKwogMjAxMi0wNi0xMyAgTWluIFFpbiAgPHFpbm1pbkBnb29n
bGUuY29tPgogCiAgICAgICAgIEFkZHJlc3Mgc29tZSBmZWVkYmFja3MgaW4gbGF5b3V0IHRlc3QK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1saW9uL1NraXBwZWQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGlvbi9Ta2lwcGVkCmluZGV4IDk3ZTRiNWRhMWUzMmJkOGE1
MThkMjY5OWMyY2Q1NTI5MzRkMzQ1ZmYuLmZiODgzNGYxN2I5NjM3NGYyNzY5NzFhMDE1ZTMxOTA2
YTljZjFkNWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1saW9uL1NraXBw
ZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxpb24vU2tpcHBlZApAQCAtMzUsNiAr
MzUsMTAgQEAgZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2ZpbmRTdHJpbmctc2VsZWN0aW9uLWRpc2Fi
bGVkLmh0bWwKICMgUGFzdGluZyByZXBsYWNlcyB0aGUgdGhyZWUgcGVyaW9kcyB3aXRoIGFuIGVs
bGlwc2lzIG9uIExpb24KIGVkaXRpbmcvcGFzdGVib2FyZC81NDc4MjUwLmh0bWwKIAorIyBNb3Vu
dGFpbiBMaW9uIGZ1bmN0aW9uYWxpdGllcworcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZWRp
dC1kaWN0YXRlZC10ZXh0LXdpdGgtYWx0ZXJuYXRpdmUuaHRtbAorcGxhdGZvcm0vbWFjL2VkaXRp
bmcvaW5wdXQvaW5zZXJ0LWRpY3RhdGVkLXRleHQuaHRtbAorCiAjIC0tLSBNZWRpYSAtLS0KIAog
IyBUaGVzZSBuZWVkIGludmVzdGlnYXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy1zbm93bGVvcGFyZC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXNu
b3dsZW9wYXJkL1NraXBwZWQKaW5kZXggNTJhNzM2ZTk1ODQyYTY1OGQwM2I2ODBhNWE3N2ExZmI1
NzhlNmE2Mi4uYjI3MTQ1ZThmNDQ3ZTAyMjZhM2RiZDA1ZjY5MWJiYzI1YTgwZjZlMSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQKQEAgLTIxMSwzICsy
MTEsNyBAQCBmYXN0L3N1Yi1waXhlbC9maWxlLXVwbG9hZC1jb250cm9sLWF0LWZyYWN0aW9uYWwt
b2Zmc2V0Lmh0bWwKICMgRnJhbWU6OmZpbmRTdHJpbmcgZG9lcyBub3RoaW5nIG9uIHBhZ2VzIHRo
YXQgcHJldmVudCBzZWxlY3Rpb24KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQwMzYxCiBlZGl0aW5nL3RleHQtaXRlcmF0b3IvZmluZFN0cmluZy1zZWxlY3Rpb24t
ZGlzYWJsZWQuaHRtbAorCisjIERpY3RhdGVkIHRleHQgaW5wdXQgaXMgbm90IHN1cHBvcnRlZCBv
biB0aGlzIHBsYXRmb3JtCitwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9lZGl0LWRpY3RhdGVk
LXRleHQtd2l0aC1hbHRlcm5hdGl2ZS5odG1sCitwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9p
bnNlcnQtZGljdGF0ZWQtdGV4dC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9pbnB1dC9lZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9lZGl0
LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjU3Yzc4Y2E2MzhiNTdmODk0NWI5ZTAxOGQ1YzA5Yzk2ZGZmYTQ2MwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQtZGljdGF0ZWQt
dGV4dC13aXRoLWFsdGVybmF0aXZlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0VkaXRp
bmcgdGV4dCB0aGF0IGhhcyBEaWN0YXRpb25BbHRlcm5hdGl2ZXMgbWFya2VyIHdob3VsZCBjYXVz
ZSB0aGUgbWFya2VyIHRvIGJlIHJlbW92ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KwordGhpcyBpcyBhIHRleAorUEFTUyBtYXJrZWRUZXh0IGlzICIiCisKK1RFU1QgQ09NUExFVEUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2VkaXQt
ZGljdGF0ZWQtdGV4dC13aXRoLWFsdGVybmF0aXZlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9pbnB1dC9lZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM3ZjAwNzkwMzY2MjY1ZjBkMGViYjBjYmQ2YWJhNjE2MDJkZTlkM2QK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1
dC9lZGl0LWRpY3RhdGVkLXRleHQtd2l0aC1hbHRlcm5hdGl2ZS5odG1sCkBAIC0wLDAgKzEsNTkg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorYm9keSB7IG1hcmdpbjog
MDsgcGFkZGluZzogMCB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cHJlIGlkPSJkZXNj
cmlwdGlvbiI+PC9wcmU+Cis8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRpdGFibGU+PC9kaXY+Cis8
cCBpZD0iY29uc29sZSI+PC9wPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAg
IGRlc2NyaXB0aW9uKCJFZGl0aW5nIHRleHQgdGhhdCBoYXMgRGljdGF0aW9uQWx0ZXJuYXRpdmVz
IG1hcmtlciB3aG91bGQgY2F1c2UgdGhlIG1hcmtlciB0byBiZSByZW1vdmVkLiIpOworCisgICAg
dmFyIGNvbnNvbGVfbWVzc2FnZXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOworICAg
IAorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQorICAgIHsKKyAgICAgICAgdmFyIGl0ZW0gPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICAgICAgY29uc29sZV9tZXNzYWdl
cy5hcHBlbmRDaGlsZChpdGVtKTsKKyAgICB9CisgICAgCisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKworICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdmFyIHRlc3RB
cmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKKyAgICAgICAgICAgIHRlc3RB
cmVhLmZvY3VzKCk7CisKKyAgICAgICAgICAgIHZhciBkaWN0YXRlZFN0cmluZyA9IHRleHRJbnB1
dENvbnRyb2xsZXIubWFrZURpY3RhdGVkU3RyaW5nKCJ0aGlzIGlzIGEgdGV4dCIsICJ0ZXN0Iiwg
MTAsIDQpOworICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFsbCIpOwor
ICAgICAgICAgICAgdGV4dElucHV0Q29udHJvbGxlci5pbnNlcnRUZXh0KGRpY3RhdGVkU3RyaW5n
KTsKKyAgICAgICAgICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJkZWxldGVCYWNr
d2FyZDoiKTsKKworICAgICAgICAgICAgdmFyIG1hcmtlZFRleHQgPSAiIjsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgdmFyIHRlc3RUZXh0ID0g
dGVzdEFyZWEuZmlyc3RDaGlsZDsKKyAgICAgICAgICAgICAgICB2YXIgbWFya2VkID0gaW50ZXJu
YWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXN0VGV4dCwgIkRpY3RhdGlvbkFsdGVybmF0aXZlcyIs
IDApOworICAgICAgICAgICAgICAgIGlmIChtYXJrZWQpCisgICAgICAgICAgICAgICAgICAgIG1h
cmtlZFRleHQgPSBtYXJrZWQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJtYXJrZWRUZXh0IiwgIiIpOworICAgICAgICAgICAg
ZG9jdW1lbnQud3JpdGUoIlRFU1QgQ09NUExFVEUiKTsKKworICAgICAgICB9IGNhdGNoIChleCkg
eworICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIkV4Y2VwdGlvbjogIiArIGV4LmRlc2NyaXB0
aW9uKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChjb25zb2xlX21lc3NhZ2VzKTsKKyAgICAgICAgCisg
ICAgfSBlbHNlIHsKKyAgICAgICAgZG9jdW1lbnQud3JpdGUoIihjYW5ub3QgcnVuIGludGVyYWN0
aXZlbHkpIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQt
dGV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1
dC9pbnNlcnQtZGljdGF0ZWQtdGV4dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ0NjE3MzJl
ZWVmMzNmMjBmMDgwNzBmNTExZDlkY2ZjMDIwYmEwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2luc2VydC1kaWN0YXRlZC10ZXh0LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1doZW4gaW5zZXJ0aW5nIGRpY3RhdGVkIHRleHQs
IHJhbmdlIG9mIHRleHQgdGhhdCBoYXMgYWx0ZXJuYXRpdmUgdGV4dCBpcyBhdHRhY2hlZCBhcyBE
aWN0YXRpb25BbHRlcm5hdGl2ZXMgbWFya2VyLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKK3RoaXMgaXMgYSB0ZXh0CitQQVNTIG1hcmtlZFRleHQgaXMgInRleHQiCisKK1RFU1QgQ09N
UExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0
L2luc2VydC1kaWN0YXRlZC10ZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRp
dGluZy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQtdGV4dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyYTFlNDNi
ZDk5ZTNkMjVlMDIwODMwMzBiZTdmMzJmOGM1ZDQ0MTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9pbnNlcnQtZGljdGF0ZWQtdGV4dC5o
dG1sCkBAIC0wLDAgKzEsNTggQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxl
PgorYm9keSB7IG1hcmdpbjogMDsgcGFkZGluZzogMCB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+Cis8cHJlIGlkPSJkZXNjcmlwdGlvbiI+PC9wcmU+Cis8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50
ZWRpdGFibGU+PC9kaXY+Cis8cCBpZD0iY29uc29sZSI+PC9wPgorPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgorICAgIGRlc2NyaXB0aW9uKCJXaGVuIGluc2VydGluZyBkaWN0YXRlZCB0
ZXh0LCByYW5nZSBvZiB0ZXh0IHRoYXQgaGFzIGFsdGVybmF0aXZlIHRleHQgaXMgYXR0YWNoZWQg
YXMgRGljdGF0aW9uQWx0ZXJuYXRpdmVzIG1hcmtlci4iKTsKKworICAgIHZhciBjb25zb2xlX21l
c3NhZ2VzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKKyAgICAKKyAgICBmdW5jdGlv
biBsb2cobWVzc2FnZSkKKyAgICB7CisgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgibGkiKTsKKyAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgICAgIGNvbnNvbGVfbWVzc2FnZXMuYXBwZW5kQ2hpbGQo
aXRlbSk7CisgICAgfQorICAgIAorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICAgICAgCisgICAgICAgIHRyeSB7CisKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHZhciB0ZXN0QXJlYSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisgICAgICAgICAgICB0ZXN0QXJlYS5mb2N1cygpOwor
CisgICAgICAgICAgICB2YXIgZGljdGF0ZWRTdHJpbmcgPSB0ZXh0SW5wdXRDb250cm9sbGVyLm1h
a2VEaWN0YXRlZFN0cmluZygidGhpcyBpcyBhIHRleHQiLCAidGVzdCIsIDEwLCA0KTsKKyAgICAg
ICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJTZWxlY3RBbGwiKTsKKyAgICAgICAgICAgIHRl
eHRJbnB1dENvbnRyb2xsZXIuaW5zZXJ0VGV4dChkaWN0YXRlZFN0cmluZyk7CisKKyAgICAgICAg
ICAgIHZhciBtYXJrZWRUZXh0ID0gIiI7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykgeworICAgICAgICAgICAgICAgIHZhciB0ZXN0VGV4dCA9IHRlc3RBcmVhLmZpcnN0Q2hpbGQ7
CisgICAgICAgICAgICAgICAgdmFyIG1hcmtlZCA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5v
ZGUodGVzdFRleHQsICJEaWN0YXRpb25BbHRlcm5hdGl2ZXMiLCAwKTsKKyAgICAgICAgICAgICAg
ICBpZiAobWFya2VkKQorICAgICAgICAgICAgICAgICAgICBtYXJrZWRUZXh0ID0gbWFya2VkLnRv
U3RyaW5nKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygibWFya2VkVGV4dCIsICJ0ZXh0Iik7CisgICAgICAgICAgICBkb2N1bWVudC53cml0ZSgi
VEVTVCBDT01QTEVURSIpOworCisgICAgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgICAgICBk
b2N1bWVudC53cml0ZSgiRXhjZXB0aW9uOiAiICsgZXguZGVzY3JpcHRpb24pOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFw
cGVuZENoaWxkKGNvbnNvbGVfbWVzc2FnZXMpOworICAgICAgICAKKyAgICB9IGVsc2UgeworICAg
ICAgICBkb2N1bWVudC53cml0ZSgiKGNhbm5vdCBydW4gaW50ZXJhY3RpdmVseSkiKTsKKyAgICB9
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="154987"
          type_id="1"
          status="+"
          setter="enrica"
    />
          </attachment>
      

    </bug>

</bugzilla>