<?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>236584</bug_id>
          
          <creation_ts>2022-02-14 03:47:21 -0800</creation_ts>
          <short_desc>focus({preventScroll: true}) does not prevent scrolling on iOS</short_desc>
          <delta_ts>2022-05-16 15:37:07 -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>Scrolling</component>
          <version>Safari 15</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 15</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=178583</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Moore">matthew.garrath.thomas</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>cory</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>rbuis</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1841191</commentid>
    <comment_count>0</comment_count>
      <attachid>451882</attachid>
    <who name="Alex Moore">matthew.garrath.thomas</who>
    <bug_when>2022-02-14 03:47:21 -0800</bug_when>
    <thetext>Created attachment 451882
test case

REPORT:
iOS (15.3)

Although focus({preventScroll: true}) is supposed to be supported on iOS, it doesn&apos;t seem to have any effect. As you can see in the test case, when scrolling the input out of view and clicking the button to focus it, it scrolls into view, where-as scroll should not be affected.

This works as expected on MacOS.

Feature implemented last year in ticket https://bugs.webkit.org/show_bug.cgi?id=178583</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841302</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-14 09:56:55 -0800</bug_when>
    <thetext>&lt;rdar://problem/88911184&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844722</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2022-02-22 08:23:33 -0800</bug_when>
    <thetext>Because it&apos;s defined in the IDL, this means trying to feature detect it (like https://github.com/shoelace-style/shoelace/blob/e60b5f670a208704bbeb9ebd6e4393bb596a244d/src/internal/support.ts) claims it is supported, but then it appears to not work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846750</commentid>
    <comment_count>3</comment_count>
      <attachid>453420</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-28 13:44:11 -0800</bug_when>
    <thetext>Created attachment 453420
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846819</commentid>
    <comment_count>4</comment_count>
      <attachid>453420</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-28 15:43:32 -0800</bug_when>
    <thetext>Comment on attachment 453420
For EWS

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

&gt; Source/WebKit/UIProcess/WebPageProxy.h:1651
&gt; +    enum class PreventScroll : bool { No, Yes };
&gt; +    void startWaitingForEditorStateAfterFocusingElement(PreventScroll preventScroll) { m_preventScrollAfterWaitingForEditorStateAfterFocusingElement = preventScroll; }
&gt; +    void stopWaitingForEditorStateAfterFocusingElement() { m_preventScrollAfterWaitingForEditorStateAfterFocusingElement = std::nullopt; }
&gt; +    bool waitingForEditorStateAfterFocusingElement() const { return m_preventScrollAfterWaitingForEditorStateAfterFocusingElement.has_value(); }
&gt; +    bool preventScrollAfterWaitingForEditorStateAfterFocusingElement() const { return m_preventScrollAfterWaitingForEditorStateAfterFocusingElement == PreventScroll::Yes; }

I wish this wasn&apos;t so convoluted. Ideally the UI-side &quot;scroll into view&quot; logic would be closer to the web content &quot;scroll into view&quot; logic.

Would it be any cleaner to put the &quot;preventScroll&quot; bit into FocusedElementInformation? That was my original plan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846824</commentid>
    <comment_count>5</comment_count>
      <attachid>453420</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-28 15:49:13 -0800</bug_when>
    <thetext>Comment on attachment 453420
For EWS

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

Thanks for the review!

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.h:1651
&gt;&gt; +    bool preventScrollAfterWaitingForEditorStateAfterFocusingElement() const { return m_preventScrollAfterWaitingForEditorStateAfterFocusingElement == PreventScroll::Yes; }
&gt; 
&gt; I wish this wasn&apos;t so convoluted. Ideally the UI-side &quot;scroll into view&quot; logic would be closer to the web content &quot;scroll into view&quot; logic.
&gt; 
&gt; Would it be any cleaner to put the &quot;preventScroll&quot; bit into FocusedElementInformation? That was my original plan.

Yes — that should work! I had thought of doing this but hesitated a bit, because FocusedElementInformation is mostly a state snapshot describing the focused element itself (rather than being about the call to `focus()`).

That said, it does make this code a lot more understandable (and elegant), so I think it&apos;s probably in the end to go with that approach (adding the flag to FEI). I&apos;ll go with that approach, and upload a new version soon!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846854</commentid>
    <comment_count>6</comment_count>
      <attachid>453452</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-28 17:36:25 -0800</bug_when>
    <thetext>Created attachment 453452
v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846855</commentid>
    <comment_count>7</comment_count>
      <attachid>453453</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-28 17:43:41 -0800</bug_when>
    <thetext>Created attachment 453453
Add missing tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846860</commentid>
    <comment_count>8</comment_count>
      <attachid>453453</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-28 18:12:22 -0800</bug_when>
    <thetext>Comment on attachment 453453
Add missing tests

That seems much nicer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846861</commentid>
    <comment_count>9</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-28 18:12:58 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #8)
&gt; Comment on attachment 453453 [details]
&gt; Add missing tests
&gt; 
&gt; That seems much nicer.

Indeed — thank you for the suggestion!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847019</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-01 07:17:19 -0800</bug_when>
    <thetext>Committed r290646 (247919@main): &lt;https://commits.webkit.org/247919@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453453.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869461</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2022-05-16 15:37:07 -0700</bug_when>
    <thetext>Just to let everyone know, the fix for this has shipped in Safari 15.5.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>451882</attachid>
            <date>2022-02-14 03:47:21 -0800</date>
            <delta_ts>2022-02-14 03:47:21 -0800</delta_ts>
            <desc>test case</desc>
            <filename>preventscroll.html</filename>
            <type>text/html</type>
            <size>1775</size>
            <attacher name="Alex Moore">matthew.garrath.thomas</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICAgIDxoZWFkPgogICAgICAgIDxtZXRh
IGNoYXJzZXQ9IlVURi04IiAvPgogICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0
aWJsZSIgY29udGVudD0iSUU9ZWRnZSIgLz4KICAgICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIg
Y29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCIgLz4KICAgICAg
ICA8dGl0bGU+Rm9jdXMgcHJldmVudFNjcm9sbDwvdGl0bGU+CiAgICAgICAgPHN0eWxlPgogICAg
ICAgICAgICBib2R5IHsKICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgfQog
ICAgICAgICAgICBwIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICB9
CiAgICAgICAgICAgIGJ1dHRvbiB7CiAgICAgICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAg
ICAgICAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgICAgICAgYm90dG9tOiAzMHB4OwogICAg
ICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4Owog
ICAgICAgICAgICB9CiAgICAgICAgICAgIGlucHV0IHsKICAgICAgICAgICAgICAgIG1hcmdpbjog
MTIwdmggMDsKICAgICAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIGJsYWNrOwogICAgICAg
ICAgICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgICAgICAgICB9CiAgICAgICAgPC9zdHlsZT4K
ICAgIDwvaGVhZD4KCiAgICA8Ym9keT4KICAgICAgICA8cD4KICAgICAgICAgICAgSXMgaW5wdXQu
Zm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pIHN1cHBvc2VkIHRvIGJlIHN1cHBvcnRlZD8K
ICAgICAgICAgICAgPHNwYW4+Tk88L3NwYW4+CiAgICAgICAgPC9wPgogICAgICAgIDxwPgogICAg
ICAgICAgICBDbGljayB0aGUgYnV0dG9uIHdoaWxlIHRoZSBpbnB1dCBpcyBvZmZzY3JlZW4gdG8g
c2VlIGlmIGZvY3VzaW5nIGl0CiAgICAgICAgICAgIHdpdGggaW5wdXQuZm9jdXMoeyBwcmV2ZW50
U2Nyb2xsOiB0cnVlIH0pIGNhdXNlcyBpdCB0byBiZSBzY3JvbGxlZAogICAgICAgICAgICBpbnRv
IHZpZXcuCiAgICAgICAgPC9wPgogICAgICAgIDxwPkl0IGRvZXMgb24gaU9TPC9wPgogICAgICAg
IDxidXR0b24+Q2xpY2sgdG8gZm9jdXMgdGV4dCBpbnB1dCB3aXRoIHByZXZlbnRTY3JvbGw6IHRy
dWU8L2J1dHRvbj4KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgLz4KICAgIDwvYm9keT4KCiAg
ICA8c2NyaXB0PgogICAgICAgIGNvbnN0IHByZXZlbnRGb2N1c1N1cHBvcnRlZCA9IGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoInNwYW4iKTsKICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKS5mb2N1cyh7CiAgICAgICAgICAgIGdldCBwcmV2ZW50U2Nyb2xsKCkgewogICAgICAgICAg
ICAgICAgcHJldmVudEZvY3VzU3VwcG9ydGVkLmlubmVySFRNTCA9ICJZRVMiOwogICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9LAogICAgICAgIH0pOwoKICAgICAgICBj
b25zdCBidXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJidXR0b24iKTsKICAgICAgICBj
b25zdCBpbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImlucHV0Iik7CiAgICAgICAgYnV0
dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgKCkgPT4gewogICAgICAgICAgICBpbnB1dC5m
b2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7CiAgICAgICAgfSk7CiAgICA8L3NjcmlwdD4K
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453420</attachid>
            <date>2022-02-28 13:44:11 -0800</date>
            <delta_ts>2022-02-28 17:36:21 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-236584-20220228134410.patch</filename>
            <type>text/plain</type>
            <size>55670</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWViNzQxNWIxYjhhYTZl
MjNmMmJhYTQwOWNiZDE4ZDM4OTY4NWIyOC4uM2U3MWEwY2QyYThlY2ZmYmI2ODE0ODM4ZjEzZDJk
N2U1ZjJlNzdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIyLTAyLTI4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIGZvY3VzKHtwcmV2
ZW50U2Nyb2xsOiB0cnVlfSkgZG9lcyBub3QgcHJldmVudCBzY3JvbGxpbmcgb24gaU9TCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1ODQKKyAgICAg
ICAgcmRhcjovLzg4OTExMTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUGx1bWIgYEZvY3VzT3B0aW9uc2AgdGhyb3VnaCBgRWxlbWVudDo6ZGlzcGF0
Y2hGb2N1c0V2ZW50KClgIGFzIHdlbGwgYXMgdGhlIGNocm9tZSBjbGllbnQgaG9va3MgZm9yCisg
ICAgICAgIGBlbGVtZW50RGlkUmVmb2N1c2AgYW5kIGBlbGVtZW50RGlkRm9jdXNgLCBpbnN0ZWFk
IG9mIGp1c3QgYSBgRm9jdXNEaXJlY3Rpb25gIGZsYWcuCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEZvY3VzZWRFbGVtZW50KToK
KyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpm
b2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQpOgor
ICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6ZGlzcGF0Y2hGb2N1
c0V2ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KToKKyAgICAgICAg
KiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgICogbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmVsZW1lbnREaWRGb2N1cyk6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnQ6OmVsZW1lbnREaWRSZWZvY3VzKToKKyAgICAgICAgKiBwYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaEV2ZW50c09uV2luZG93
QW5kRm9jdXNlZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpz
ZXRGb2N1c2VkRWxlbWVudCk6CisKIDIwMjItMDItMjcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBTZXQgaGFzSW50cmluc2ljV2lk
dGggJiBoYXNJbnRyaW5zaWNIZWlnaHQgcHJvcGVydGllcyBmb3IgU1ZHIGVsZW1lbnQncyBpbnRy
aW5zaWMgc2l6ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAxMTU3NjM1ZmI1Mjc4ODk5ODY3MTMwNTg4MzE5NGNlM2Y4
MDAwZDllLi5iMjdkMGFjOGM2M2JkNmZmYzVmNmUzOGNhYTc0YTQ3MGIyZDA2ZDMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDkzIEBACisyMDIyLTAyLTI4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgorCisgICAgICAgIGZvY3VzKHtwcmV2ZW50U2Nyb2xsOiB0cnVlfSkgZG9l
cyBub3QgcHJldmVudCBzY3JvbGxpbmcgb24gaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1ODQKKyAgICAgICAgcmRhcjovLzg4OTExMTg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIGBwcmV2ZW50U2Nyb2xsYCBvbiBpT1MgYnkgYXZvaWRpbmcgVUktc2lkZSB6b29taW5n
L3Njcm9sbGluZyB0byByZXZlYWwgdGhlIGZvY3VzZWQgZWxlbWVudCBpZiBpdAorICAgICAgICB3
YXMgZm9jdXNlZCB3aXRoIGBwcmV2ZW50U2Nyb2xsOiB0cnVlYC4gU2VlIGJlbG93IGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZm9ybXMvc2VsZWN0LWZvY3VzLXByZXZl
bnQtc2Nyb2xsLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvdGV4dC1maWVsZC1mb2N1
cy1wcmV2ZW50LXNjcm9sbC5odG1sCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eTo6Y29tbWl0TGF5ZXJUcmVlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjplZGl0b3JTdGF0ZUNo
YW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoRGlkVXBkYXRl
RWRpdG9yU3RhdGVBZnRlckZvY3VzaW5nRWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hEaWRVcGRhdGVFZGl0b3JTdGF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCisgICAgICAgIFJlbmFtZSBgbV93
YWl0aW5nRm9yUG9zdExheW91dEVkaXRvclN0YXRlVXBkYXRlQWZ0ZXJGb2N1c2luZ0VsZW1lbnRg
IHRvCisgICAgICAgIGBtX3ByZXZlbnRTY3JvbGxBZnRlcldhaXRpbmdGb3JFZGl0b3JTdGF0ZUFm
dGVyRm9jdXNpbmdFbGVtZW50YCwgYW5kIG1ha2UgaXQgYW4gYHN0ZDo6b3B0aW9uYWw8UHJldmVu
dFNjcm9sbD5gCisgICAgICAgIGluc3RlYWQuIFRoaXMgZWZmZWN0aXZlbHkgYWN0cyBhcyBhIHRy
aS1zdGF0ZSwgd2hlcmU6CisKKyAgICAgICAgMS4gIGBzdGQ6Om51bGxvcHRgIGluZGljYXRlcyB0
aGF0IHdlIGFyZW4ndCB3YWl0aW5nIGZvciB0aGUgbmV4dCBlZGl0b3Igc3RhdGUgYWZ0ZXIgZWxl
bWVudCBmb2N1cy4KKyAgICAgICAgMi4gIGBQcmV2ZW50U2Nyb2xsOjpOb2AgaW5kaWNhdGVzIHRo
YXQgd2UgYXJlIHdhaXRpbmcgZm9yIHRoZSBuZXh0IGVkaXRvciBzdGF0ZSBhZnRlciBlbGVtZW50
IGZvY3VzLCBhbmQgZG9uJ3QKKyAgICAgICAgICAgIG5lZWQgdG8gcHJldmVudCBzY3JvbGxpbmcu
CisgICAgICAgIDMuICBgUHJldmVudFNjcm9sbDo6WWVzYCBpbmRpY2F0ZXMgdGhhdCB3ZSBhcmUg
d2FpdGluZyBmb3IgdGhlIG5leHQgZWRpdG9yIHN0YXRlIGFmdGVyIGVsZW1lbnQgZm9jdXMsIGFu
ZCBuZWVkCisgICAgICAgICAgICB0byBhdm9pZCBzY3JvbGxpbmcuCisKKyAgICAgICAgQWRkaXRp
b25hbGx5IHJlcGxhY2UgYHNldFdhaXRpbmdGb3JQb3N0TGF5b3V0RWRpdG9yU3RhdGVVcGRhdGVB
ZnRlckZvY3VzaW5nRWxlbWVudGAgd2l0aCB0d28gbWV0aG9kcywKKyAgICAgICAgYHN0YXJ0V2Fp
dGluZ0ZvckVkaXRvclN0YXRlQWZ0ZXJGb2N1c2luZ0VsZW1lbnRgICh3aGljaCB0YWtlcyBhIGBQ
cmV2ZW50U2Nyb2xsYCBlbnVtIGZsYWcgYW5kIGlzIG90aGVyd2lzZQorICAgICAgICBlcXVpdmFs
ZW50IHRvIGBzZXRXYWl0aW5nRm9yUG9zdExheW91dEVkaXRvclN0YXRlVXBkYXRlQWZ0ZXJGb2N1
c2luZ0VsZW1lbnQodHJ1ZSlgLCBhbmQKKyAgICAgICAgYHN0b3BXYWl0aW5nRm9yRWRpdG9yU3Rh
dGVBZnRlckZvY3VzaW5nRWxlbWVudGAsIHdoaWNoIGRvZXMgbm90IHRha2UgYW55IGFyZ3VtZW50
cyBhbmQgc2ltcGx5IHJlc2V0cyB0aGUgZmxhZworICAgICAgICBiYWNrIHRvIGBzdGQ6Om51bGxv
cHRgLCB3aGljaCBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZgorICAgICAgICBgc2V0V2FpdGluZ0Zv
clBvc3RMYXlvdXRFZGl0b3JTdGF0ZVVwZGF0ZUFmdGVyRm9jdXNpbmdFbGVtZW50KGZhbHNlKWAu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50
SW1wbDo6ZWxlbWVudERpZEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OmRpZFVwZGF0ZUVkaXRvclN0YXRlQWZ0ZXJGb2N1c2luZ0VsZW1lbnQpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkVXBkYXRlRWRpdG9yU3RhdGUpOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgX3NlbGVjdGlvbkNsaXBSZWN0XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2RpZEZpbmlzaFRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDpdKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBfZWxlbWVudERpZEZvY3VzOnVzZXJJc0ludGVyYWN0aW5n
OmJsdXJQcmV2aW91c05vZGU6cHJldmVudFNjcm9sbDphY3Rpdml0eVN0YXRlQ2hhbmdlczp1c2Vy
T2JqZWN0Ol0pOgorCisgICAgICAgIEluIHRoZSBjYXNlIHdoZXJlIHdlIGltbWVkaWF0ZWx5IHpv
b20gdG8gcmV2ZWFsIHRoZSBmb2N1c2VkIGVsZW1lbnQsIG9ubHkgZG8gc28gaWYgYHByZXZlbnRT
Y3JvbGxgIGlzIGBOT2AuIElmCisgICAgICAgIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIG5leHQg
ZWRpdG9yIHN0YXRlIHVwZGF0ZSwgdGhlbiByZW1lbWJlciB3aGV0aGVyIHdlIGZvY3VzZWQgd2l0
aCBgcHJldmVudFNjcm9sbGAgc2V0IGJ5CisgICAgICAgIGNhbGxpbmcgYHN0YXJ0V2FpdGluZ0Zv
ckVkaXRvclN0YXRlQWZ0ZXJGb2N1c2luZ0VsZW1lbnRgLgorCisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2VsZW1lbnREaWRCbHVyXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZG9BZnRl
ckVkaXRvclN0YXRlVXBkYXRlQWZ0ZXJGb2N1c2luZ0VsZW1lbnQ6XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgX2RpZFVwZGF0ZUVkaXRvclN0YXRlQWZ0ZXJGb2N1c2luZ0VsZW1lbnRdKToK
KworICAgICAgICBUaGlzIGlzIHRoZSBvdGhlciBoYWxmIG9mIHRoZSBmaXggLS0gaW4gdGhlIGNh
c2Ugd2hlcmUgd2UndmUgZGVmZXJyZWQgem9vbWluZyB1bnRpbCB0aGUgbmV4dCBlZGl0b3Igc3Rh
dGUKKyAgICAgICAgdXBkYXRlLCBhdm9pZCBjYWxsaW5nIGludG8gYC1fem9vbVRvUmV2ZWFsRm9j
dXNlZEVsZW1lbnRgLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2VsZW1lbnREaWRGb2N1
czp1c2VySXNJbnRlcmFjdGluZzpibHVyUHJldmlvdXNOb2RlOmFjdGl2aXR5U3RhdGVDaGFuZ2Vz
OnVzZXJPYmplY3Q6XSk6IERlbGV0ZWQuCisKKyAgICAgICAgQWRkIGEgYHByZXZlbnRTY3JvbGw6
YCBhcmd1bWVudCBoZXJlIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB3ZSBzaG91bGQgdHJ5
IHRvIHpvb20gdG8gcmV2ZWFsIHRoZSBmb2N1c2VkCisgICAgICAgIGVsZW1lbnQuCisKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfZGlkVXBkYXRlRWRpdG9yU3RhdGVdKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjplbGVtZW50RGlkRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRpc3BhdGNoRGlkVXBkYXRlRWRpdG9yU3RhdGVBZnRlckZvY3VzaW5nRWxlbWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hEaWRVcGRhdGVFZGl0
b3JTdGF0ZSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVuYW1lIGBkaXNwYXRjaERpZFVwZGF0ZUVk
aXRvclN0YXRlYCB0byBgZGlzcGF0Y2hEaWRVcGRhdGVFZGl0b3JTdGF0ZUFmdGVyRm9jdXNpbmdF
bGVtZW50YCwgdG8gY2xhcmlmeSB0aGF0CisgICAgICAgIHRoaXMgbWV0aG9kJ3MgcHVycG9zZSBp
cyB0byBub3RpZnkgdGhlIHBhZ2UgY2xpZW50IGFib3V0IHRoZSBmaXJzdCBlZGl0b3Igc3RhdGUg
dXBkYXRlIGFmdGVyIGVsZW1lbnQgZm9jdXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9t
ZUNsaWVudDo6ZWxlbWVudERpZEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50OjplbGVtZW50RGlkUmVmb2N1cyk6CisKKyAgICAgICAgVXNlIGBGb2N1c09wdGlvbnNgIHRv
IHNlbmQgdGhlIGBwcmV2ZW50U2Nyb2xsYCBib29sZWFuIGZsYWcgYXMgYW4gYXJndW1lbnQgdGhy
b3VnaCBJUEMsIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmVsZW1lbnREaWRSZWZv
Y3VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZWxlbWVudERpZEZvY3VzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorCiAyMDIyLTAyLTI2ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEludm9raW5nICJNYXJr
dXAgSW1hZ2UiIHNob3VsZCBwcmVzZXJ2ZSB0aGUgZXhpc3Rpbmcgc2VsZWN0aW9uIHJhbmdlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggZjc3MTMwZmY3OWVlN2YyY2Y0NGFiMjJlYTBm
YzEyNzQ3NDA5ZWExMi4uMzZlNWJmZWM4YzM5YTIxYTA1NjEwYTNjZWViMmU3YTU5MmVkOWQ2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTAyLTI4
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIGZvY3Vz
KHtwcmV2ZW50U2Nyb2xsOiB0cnVlfSkgZG9lcyBub3QgcHJldmVudCBzY3JvbGxpbmcgb24gaU9T
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1ODQK
KyAgICAgICAgcmRhcjovLzg4OTExMTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRqdXN0IHRoZSBtZXRob2Qgc2lnbmF0dXJlIG9mIGVsZW1lbnRE
aWRGb2N1cy4gU2VlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tOgorICAgICAgICAoV2ViQ2hyb21l
Q2xpZW50SU9TOjplbGVtZW50RGlkRm9jdXMpOgorCiAyMDIxLTEwLTIyICBJYW4gQW5kZXJzb24g
IDxpYW5hQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBtb2R1bGUgbWFwIGZpbGUgZm9yIFBy
aXZhdGVGcmFtZXdvcmtzL1dlYktpdExlZ2FjeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IDE3ZTE0ODkxNzE5ZTA1OTg3YTRmMDQ0NDY4NGE5YTk2ODg1MWU0ZDQuLjY3ZDU1Mjg3MDA0
MzkwNWI4Njc3YTk4NGU5MjIyZTUxNjkzMmZlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMi0yOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KKworICAgICAgICBmb2N1cyh7cHJldmVudFNjcm9sbDogdHJ1ZX0pIGRv
ZXMgbm90IHByZXZlbnQgc2Nyb2xsaW5nIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTg0CisgICAgICAgIHJkYXI6Ly84ODkxMTE4NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkanVzdCB0
aGUgbWV0aG9kIHNpZ25hdHVyZSBvZiBlbGVtZW50RGlkRm9jdXMuIFNlZSBXZWJDb3JlIENoYW5n
ZUxvZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6ZWxlbWVudERpZEZvY3VzKToKKwogMjAy
Mi0wMi0yNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBJbnZva2luZyAiTWFya3VwIEltYWdlIiBzaG91bGQgcHJlc2VydmUgdGhlIGV4aXN0aW5nIHNl
bGVjdGlvbiByYW5nZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOTU1Zjc0NjZjM2FlNzU0
NzYzNGI0OTcwZjllOTZiNDYzOGFkNzRiNS4uOGQ5YjBjZGQzYzk1NjQ0Y2QyNjA5ZDlkMTI3ZmMz
YmEwODUxNDVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00NzEwLDcgKzQ3MTAsNyBA
QCBib29sIERvY3VtZW50OjpzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBjb25z
dCBGb2N1c09wdGlvbnMmIG9wdGlvbnMpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBEaXNwYXRj
aCB0aGUgZm9jdXMgZXZlbnQgYW5kIGxldCB0aGUgbm9kZSBkbyBhbnkgb3RoZXIgZm9jdXMgcmVs
YXRlZCBhY3Rpdml0aWVzIChpbXBvcnRhbnQgZm9yIHRleHQgZmllbGRzKQotICAgICAgICBtX2Zv
Y3VzZWRFbGVtZW50LT5kaXNwYXRjaEZvY3VzRXZlbnQob2xkRm9jdXNlZEVsZW1lbnQuY29weVJl
ZigpLCBvcHRpb25zLmRpcmVjdGlvbik7CisgICAgICAgIG1fZm9jdXNlZEVsZW1lbnQtPmRpc3Bh
dGNoRm9jdXNFdmVudChvbGRGb2N1c2VkRWxlbWVudC5jb3B5UmVmKCksIG9wdGlvbnMpOwogCiAg
ICAgICAgIGlmIChtX2ZvY3VzZWRFbGVtZW50ICE9IG5ld0ZvY3VzZWRFbGVtZW50KSB7CiAgICAg
ICAgICAgICAvLyBoYW5kbGVyIHNoaWZ0ZWQgZm9jdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRl
eCBmZWU5OGMzZjFmZTliODExNjI3NDhhMzdjMzBmMTJlMzMwYWEyNDJhLi42YmQ1NTYyYjU5ZDY0
NWMzZGI4ZjQwYTIxYjE5NzgzMzJjMmEzZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0z
MDczLDcgKzMwNzMsNyBAQCB2b2lkIEVsZW1lbnQ6OmZvY3VzKGNvbnN0IEZvY3VzT3B0aW9ucyYg
b3B0aW9ucykKICAgICBSZWYgZG9jdW1lbnQgeyB0aGlzLT5kb2N1bWVudCgpIH07CiAgICAgaWYg
KGRvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpID09IHRoaXMpIHsKICAgICAgICAgaWYgKGRvY3Vt
ZW50LT5wYWdlKCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5jbGll
bnQoKS5lbGVtZW50RGlkUmVmb2N1cygqdGhpcyk7CisgICAgICAgICAgICBkb2N1bWVudC0+cGFn
ZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5lbGVtZW50RGlkUmVmb2N1cygqdGhpcywgb3B0aW9ucyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMwOTEsNyArMzA5MSw3IEBAIHZvaWQgRWxl
bWVudDo6Zm9jdXMoY29uc3QgRm9jdXNPcHRpb25zJiBvcHRpb25zKQogICAgICAgICBSZWZQdHIg
Y3VycmVudGx5Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKTsKICAg
ICAgICAgaWYgKHJvb3QtPmNvbnRhaW5zSW5jbHVkaW5nU2hhZG93RE9NKGN1cnJlbnRseUZvY3Vz
ZWRFbGVtZW50LmdldCgpKSkgewogICAgICAgICAgICAgaWYgKGRvY3VtZW50LT5wYWdlKCkpCi0g
ICAgICAgICAgICAgICAgZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZWxlbWVu
dERpZFJlZm9jdXMoKmN1cnJlbnRseUZvY3VzZWRFbGVtZW50KTsKKyAgICAgICAgICAgICAgICBk
b2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5lbGVtZW50RGlkUmVmb2N1cygqY3Vy
cmVudGx5Rm9jdXNlZEVsZW1lbnQsIG9wdGlvbnMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKQEAgLTMyMDgsMTAgKzMyMDgsMTAgQEAgdm9pZCBFbGVtZW50OjpkaXNwYXRjaEZv
Y3VzT3V0RXZlbnRJZk5lZWRlZChSZWZQdHI8RWxlbWVudD4mJiBuZXdGb2N1c2VkRWxlbWVudCkK
ICAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KEZvY3VzRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Zm9jdXNvdXRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxl
OjpObywgZG9jdW1lbnQoKS53aW5kb3dQcm94eSgpLCAwLCBXVEZNb3ZlKG5ld0ZvY3VzZWRFbGVt
ZW50KSkpOwogfQogCi12b2lkIEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudChSZWZQdHI8RWxl
bWVudD4mJiBvbGRGb2N1c2VkRWxlbWVudCwgRm9jdXNEaXJlY3Rpb24pCit2b2lkIEVsZW1lbnQ6
OmRpc3BhdGNoRm9jdXNFdmVudChSZWZQdHI8RWxlbWVudD4mJiBvbGRGb2N1c2VkRWxlbWVudCwg
Y29uc3QgRm9jdXNPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChhdXRvKiBwYWdlID0gZG9j
dW1lbnQoKS5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmVsZW1lbnRE
aWRGb2N1cygqdGhpcyk7CisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmVsZW1lbnRE
aWRGb2N1cygqdGhpcywgb3B0aW9ucyk7CiAgICAgZGlzcGF0Y2hFdmVudChGb2N1c0V2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmZvY3VzRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVu
dDo6SXNDYW5jZWxhYmxlOjpObywgZG9jdW1lbnQoKS53aW5kb3dQcm94eSgpLCAwLCBXVEZNb3Zl
KG9sZEZvY3VzZWRFbGVtZW50KSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA2MjA5YmU2
MmE3MDQ2NGZlYzczMzM0NWU2NTUzNjNkY2NmZTlmNTg4Li5lY2E3N2NlY2NhYTZjYmRkNjUzZTMy
OTEwNjk1MjgxY2Q3ODAxMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTU3NCw3ICs1NzQsNyBA
QCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IENvbnNpZGVyIGNoYW5naW5nIHNpZ25hdHVyZSB0byBh
Y2NlcHQgRWxlbWVudCogYmVjYXVzZSBhbGwgY2FsbGVycyBwZXJmb3JtIGNvcHlSZWYoKS4KICAg
ICB2b2lkIGRpc3BhdGNoRm9jdXNJbkV2ZW50SWZOZWVkZWQoUmVmUHRyPEVsZW1lbnQ+JiYgb2xk
Rm9jdXNlZEVsZW1lbnQpOwogICAgIHZvaWQgZGlzcGF0Y2hGb2N1c091dEV2ZW50SWZOZWVkZWQo
UmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9jdXNlZEVsZW1lbnQpOwotICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaEZvY3VzRXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgb2xkRm9jdXNlZEVsZW1lbnQsIEZv
Y3VzRGlyZWN0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hGb2N1c0V2ZW50KFJlZlB0
cjxFbGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50LCBjb25zdCBGb2N1c09wdGlvbnMmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9j
dXNlZEVsZW1lbnQpOwogICAgIHZvaWQgZGlzcGF0Y2hXZWJLaXRJbWFnZVJlYWR5RXZlbnRGb3JU
ZXN0aW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5k
ZXggNzJhZmUwNGUwN2Y4OWM4YzI0YWYzZjhiOGNhZDM4Y2UyOTZhOGQwMy4uNmUwYWI1MWMwMzE5
OTZjNWE3ZjMwZWU0MWRjYzVjZjVlMmVmOTRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5jcHAKQEAgLTk0OSwxMyArOTQ5LDEzIEBAIGludCBIVE1MU2VsZWN0RWxl
bWVudDo6bGlzdFRvT3B0aW9uSW5kZXgoaW50IGxpc3RJbmRleCkgY29uc3QKICAgICByZXR1cm4g
b3B0aW9uSW5kZXg7CiB9CiAKLXZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNF
dmVudChSZWZQdHI8RWxlbWVudD4mJiBvbGRGb2N1c2VkRWxlbWVudCwgRm9jdXNEaXJlY3Rpb24g
ZGlyZWN0aW9uKQordm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KFJl
ZlB0cjxFbGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50LCBjb25zdCBGb2N1c09wdGlvbnMmIG9w
dGlvbnMpCiB7CiAgICAgLy8gU2F2ZSB0aGUgc2VsZWN0aW9uIHNvIGl0IGNhbiBiZSBjb21wYXJl
ZCB0byB0aGUgbmV3IHNlbGVjdGlvbiB3aGVuCiAgICAgLy8gZGlzcGF0Y2hpbmcgY2hhbmdlIGV2
ZW50cyBkdXJpbmcgYmx1ciBldmVudCBkaXNwYXRjaC4KICAgICBpZiAodXNlc01lbnVMaXN0KCkp
CiAgICAgICAgIHNhdmVMYXN0U2VsZWN0aW9uKCk7Ci0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVu
dFdpdGhTdGF0ZTo6ZGlzcGF0Y2hGb2N1c0V2ZW50KFdURk1vdmUob2xkRm9jdXNlZEVsZW1lbnQp
LCBkaXJlY3Rpb24pOworICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpc3Bh
dGNoRm9jdXNFdmVudChXVEZNb3ZlKG9sZEZvY3VzZWRFbGVtZW50KSwgb3B0aW9ucyk7CiB9CiAK
IHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KFJlZlB0cjxFbGVtZW50
PiYmIG5ld0ZvY3VzZWRFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2VsZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5oCmluZGV4IDlhNTcwNTY0OGQ3MGU1YmY0MGU0NjgwYjBmMzUxNDAxMzQyNzM5ZGUuLmIxNDcz
MjA3ZTNlYjRhNzA3NDNmY2UzYjU5Njk2Yzc1ZmNmNGE5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmgKQEAgLTExOSw3ICsxMTksNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3QgZmluYWw7CiAgICAg
Ym9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGRpc3BhdGNo
Rm9jdXNFdmVudChSZWZQdHI8RWxlbWVudD4mJiBvbGRGb2N1c2VkRWxlbWVudCwgRm9jdXNEaXJl
Y3Rpb24pIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hGb2N1c0V2ZW50KFJlZlB0cjxFbGVtZW50
PiYmIG9sZEZvY3VzZWRFbGVtZW50LCBjb25zdCBGb2N1c09wdGlvbnMmKSBmaW5hbDsKICAgICB2
b2lkIGRpc3BhdGNoQmx1ckV2ZW50KFJlZlB0cjxFbGVtZW50PiYmIG5ld0ZvY3VzZWRFbGVtZW50
KSBmaW5hbDsKICAgICAKICAgICBib29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggOTY0Y2MxYTIxZDAzNTFlMDU5NWQ3YjdmZWJjODlm
NjIxZmMwZjE5Yi4uMWQxZDZkMzhhMmExYzQzYWRkYzljYzEzM2ExYzBkZGVmZTY2MzkwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAKQEAgLTEyNSwxMiArMTI1LDEyIEBAIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OnNldEhvdmVyZWQoYm9vbCBvdmVyLCBTdHlsZTo6SW52YWxpZGF0aW9uU2NvcGUKICAgICB1cGRh
dGVQbGFjZWhvbGRlclZpc2liaWxpdHkoKTsKIH0KIAotdm9pZCBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KFJlZlB0cjxFbGVtZW50PiYmIG9sZEZvY3VzZWRF
bGVtZW50LCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCit2b2lkIEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgb2xkRm9jdXNl
ZEVsZW1lbnQsIGNvbnN0IEZvY3VzT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoc3VwcG9y
dHNQbGFjZWhvbGRlcigpKQogICAgICAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoKTsK
LSAgICBoYW5kbGVGb2N1c0V2ZW50KG9sZEZvY3VzZWRFbGVtZW50LmdldCgpLCBkaXJlY3Rpb24p
OwotICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoRm9jdXNFdmVu
dChXVEZNb3ZlKG9sZEZvY3VzZWRFbGVtZW50KSwgZGlyZWN0aW9uKTsKKyAgICBoYW5kbGVGb2N1
c0V2ZW50KG9sZEZvY3VzZWRFbGVtZW50LmdldCgpLCBvcHRpb25zLmRpcmVjdGlvbik7CisgICAg
SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlzcGF0Y2hGb2N1c0V2ZW50KFdURk1v
dmUob2xkRm9jdXNlZEVsZW1lbnQpLCBvcHRpb25zKTsKIH0KIAogdm9pZCBIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9j
dXNlZEVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmgKaW5kZXggOTk4NmFjNTU0MDhlYmE3MDNhNTc2MjI1MTgwZmYxZGZhNDZjOWVj
Yi4uZTBmNjU0YmU5MjM2MjQ5N2MwN2M2ZWZiNWQzMzhkYmVmMWMyNWM1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMTQ0LDcg
KzE0NCw3IEBAIHByaXZhdGU6CiAgICAgaW50IGNvbXB1dGVTZWxlY3Rpb25FbmQoKSBjb25zdDsK
ICAgICBUZXh0RmllbGRTZWxlY3Rpb25EaXJlY3Rpb24gY29tcHV0ZVNlbGVjdGlvbkRpcmVjdGlv
bigpIGNvbnN0OwogCi0gICAgdm9pZCBkaXNwYXRjaEZvY3VzRXZlbnQoUmVmUHRyPEVsZW1lbnQ+
JiYgb2xkRm9jdXNlZEVsZW1lbnQsIEZvY3VzRGlyZWN0aW9uKSBmaW5hbDsKKyAgICB2b2lkIGRp
c3BhdGNoRm9jdXNFdmVudChSZWZQdHI8RWxlbWVudD4mJiBvbGRGb2N1c2VkRWxlbWVudCwgY29u
c3QgRm9jdXNPcHRpb25zJikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaEJsdXJFdmVudChSZWZQ
dHI8RWxlbWVudD4mJiBuZXdGb2N1c2VkRWxlbWVudCkgZmluYWw7CiAgICAgYm9vbCBjaGlsZFNo
b3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBjZDVmMjhmMTQ2MWU4YTJlNmFkYmMw
ZDAwZTU4ZGVlNTZkNGQwNzM4Li45ZGYyMDNlNTU5NDM0N2IzMjY2MTk2MDhlNmM4MjMyMTEyODE3
MWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0xNTcsNyArMTU3LDcg
QEAgY2xhc3MgRW1wdHlDaHJvbWVDbGllbnQgOiBwdWJsaWMgQ2hyb21lQ2xpZW50IHsKICAgICB2
b2lkIHNob3dTaGFyZVNoZWV0KFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlSWNvbkxvYWRlciYpIGZpbmFsIHsgfQogCi0gICAgdm9p
ZCBlbGVtZW50RGlkRm9jdXMoRWxlbWVudCYpIGZpbmFsIHsgfQorICAgIHZvaWQgZWxlbWVudERp
ZEZvY3VzKEVsZW1lbnQmLCBjb25zdCBGb2N1c09wdGlvbnMmKSBmaW5hbCB7IH0KICAgICB2b2lk
IGVsZW1lbnREaWRCbHVyKEVsZW1lbnQmKSBmaW5hbCB7IH0KIAogICAgIHZvaWQgc2V0Q3Vyc29y
KGNvbnN0IEN1cnNvciYpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5k
ZXggNDQxOWVkNTU1MzA1MTkzOGI3NTgwMGJkZWViZDRmNmI0NDczMDc4Yy4uOTVlYjZmNmM1MDQ4
ODVjODY2N2FhNjAzMDJjZGUyNGExYTQ3NTIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCkBAIC0xMzQsNiArMTM0LDcgQEAgc3RydWN0IENvbnRhY3RzUmVxdWVzdERhdGE7CiBzdHJ1
Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0czsKIHN0cnVjdCBEYXRhRGV0ZWN0b3JFbGVtZW50SW5m
bzsKIHN0cnVjdCBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzOworc3RydWN0IEZvY3VzT3B0aW9u
czsKIHN0cnVjdCBHcmFwaGljc0RldmljZUFkYXB0ZXI7CiBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbjsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CkBAIC0zNDUs
OSArMzQ2LDkgQEAgcHVibGljOgogICAgIC8vIEFzeW5jaHJvbm91cyByZXF1ZXN0IHRvIGxvYWQg
YW4gaWNvbiBmb3Igc3BlY2lmaWVkIGZpbGVuYW1lcy4KICAgICB2aXJ0dWFsIHZvaWQgbG9hZElj
b25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyJikgPSAwOwog
ICAgICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZWxlbWVudERpZEZvY3VzKEVsZW1lbnQmKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZWxlbWVudERpZEZvY3VzKEVsZW1lbnQmLCBjb25zdCBGb2N1c09w
dGlvbnMmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZWxlbWVudERpZEJsdXIoRWxlbWVudCYpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBlbGVtZW50RGlkUmVmb2N1cyhFbGVtZW50JikgeyB9CisgICAg
dmlydHVhbCB2b2lkIGVsZW1lbnREaWRSZWZvY3VzKEVsZW1lbnQmLCBjb25zdCBGb2N1c09wdGlv
bnMmKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBmb2N1c2VkRWxlbWVudERpZENoYW5nZUlucHV0
TW9kZShFbGVtZW50JiwgSW5wdXRNb2RlKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwCmluZGV4IDkzM2JkYTY2MDVlYzljM2Y4NmI1ZDU4YmMzNTg4YWMyMTI4YjRm
YWEuLmQ1YWM5MTEzZmU2YmQ0YWY1YzQzNTJiZTdiZWYxMjRkOWZmMmEwNWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTMxMCw3ICszMTAsNyBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgZGlzcGF0Y2hFdmVudHNPbldpbmRvd0FuZEZvY3VzZWRFbGVtZW50KERvY3Vt
ZW50KiBkb2N1bWVudCwgYgogICAgICAgICBkb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKS0+ZGlz
cGF0Y2hCbHVyRXZlbnQobnVsbHB0cik7CiAgICAgZG9jdW1lbnQtPmRpc3BhdGNoV2luZG93RXZl
bnQoRXZlbnQ6OmNyZWF0ZShmb2N1c2VkID8gZXZlbnROYW1lcygpLmZvY3VzRXZlbnQgOiBldmVu
dE5hbWVzKCkuYmx1ckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pKTsKICAgICBpZiAoZm9jdXNlZCAmJiBkb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQo
KSkKLSAgICAgICAgZG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCktPmRpc3BhdGNoRm9jdXNFdmVu
dChudWxscHRyLCBGb2N1c0RpcmVjdGlvbjo6Tm9uZSk7CisgICAgICAgIGRvY3VtZW50LT5mb2N1
c2VkRWxlbWVudCgpLT5kaXNwYXRjaEZvY3VzRXZlbnQobnVsbHB0ciwgeyB9KTsKIH0KIAogc3Rh
dGljIGlubGluZSBib29sIGlzRm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcihFbGVtZW50JiBl
bGVtZW50LCBLZXlib2FyZEV2ZW50KiBldmVudCkKQEAgLTgzNyw3ICs4MzcsNyBAQCBib29sIEZv
Y3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZEVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgRnJhbWUm
IG5ld0ZvY3VzZWRGcmFtZQogICAgIEVsZW1lbnQqIG9sZEZvY3VzZWRFbGVtZW50ID0gb2xkRG9j
dW1lbnQgPyBvbGREb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKSA6IG51bGxwdHI7CiAgICAgaWYg
KG9sZEZvY3VzZWRFbGVtZW50ID09IGVsZW1lbnQpIHsKICAgICAgICAgaWYgKGVsZW1lbnQpCi0g
ICAgICAgICAgICBtX3BhZ2UuY2hyb21lKCkuY2xpZW50KCkuZWxlbWVudERpZFJlZm9jdXMoKmVs
ZW1lbnQpOworICAgICAgICAgICAgbV9wYWdlLmNocm9tZSgpLmNsaWVudCgpLmVsZW1lbnREaWRS
ZWZvY3VzKCplbGVtZW50LCBvcHRpb25zKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYjJjYmM1ZWI3NWEzOGUxMDE5
ZmFmNmNiMmI0NzczZGUwMDU0MGNmMi4uMjUyZjliNzViNzUzMTlhYmUyYjM3N2I4MDhjYWFiMzQ5
ODY4YWYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDYzLDExICs0
NjMsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlUGFnZVN0YXRlKHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRpb24sIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmIHNjcm9sbE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRl
bnQmIG9ic2N1cmVkSW5zZXRzT25TYXZlLCBkb3VibGUgc2NhbGUpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcmVzdG9yZVBhZ2VDZW50ZXJBbmRTY2FsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZs
b2F0UG9pbnQ+IGNlbnRlciwgZG91YmxlIHNjYWxlKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZWxlbWVudERpZEZvY3VzKGNvbnN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mLCBib29sIHVz
ZXJJc0ludGVyYWN0aW5nLCBib29sIGJsdXJQcmV2aW91c05vZGUsIE9wdGlvblNldDxXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlQ2hhbmdlcywgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVsZW1lbnREaWRGb2N1cyhjb25zdCBG
b2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJiwgYm9vbCB1c2VySXNJbnRlcmFjdGluZywgYm9vbCBi
bHVyUHJldmlvdXNOb2RlLCBib29sIHByZXZlbnRTY3JvbGwsIE9wdGlvblNldDxXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlQ2hhbmdlcywgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUlucHV0Q29udGV4dEFmdGVyQmx1
cnJpbmdBbmRSZWZvY3VzaW5nRWxlbWVudCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZWxlbWVu
dERpZEJsdXIoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZvY3VzZWRFbGVtZW50RGlkQ2hhbmdl
SW5wdXRNb2RlKFdlYkNvcmU6OklucHV0TW9kZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRV
cGRhdGVFZGl0b3JTdGF0ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlRWRpdG9y
U3RhdGVBZnRlckZvY3VzaW5nRWxlbWVudCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1
c2luZ0VsZW1lbnQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGludGVycHJldEtleUV2ZW50KGNv
bnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4IGVhODg5ZjEzMDUxNzYyZTZiMjVmOWMxMDQ2
ZjM2NDc3ZWEzNjA1ZmUuLmUxZDZjMTA3ZjE3NTc1MmQxODFmNTIyZjQzMTJmNzAwZmZhN2U2ODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBA
IC0yNzcsNyArMjc3LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojpj
b21taXRMYXllclRyZWUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnMKICNlbmRpZgogCiAgICAg
aWYgKGRpZFVwZGF0ZUVkaXRvclN0YXRlKQotICAgICAgICBtX3dlYlBhZ2VQcm94eS5kaXNwYXRj
aERpZFVwZGF0ZUVkaXRvclN0YXRlKCk7CisgICAgICAgIG1fd2ViUGFnZVByb3h5LmRpc3BhdGNo
RGlkVXBkYXRlRWRpdG9yU3RhdGVBZnRlckZvY3VzaW5nRWxlbWVudCgpOwogCiAgICAgaWYgKGF1
dG8gbWlsZXN0b25lcyA9IGxheWVyVHJlZVRyYW5zYWN0aW9uLm5ld2x5UmVhY2hlZFBhaW50aW5n
TWlsZXN0b25lcygpKQogICAgICAgICBtX3dlYlBhZ2VQcm94eS5kaWRSZWFjaExheW91dE1pbGVz
dG9uZShtaWxlc3RvbmVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IDg1NTI4NDU3MGVlYmYyYThlNDk0ODdiZDhlNTNkNDUzNDhhNDYxMDQuLjNhOTRkMGI0
OTY4MGJlMzc4ODYwZTdkMGJhZjYwMjkyZjIwOTY4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzU2OSw3ICs3NTY5LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBib29sIGhhbmRsZWQpCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZWRpdG9yU3RhdGVDaGFuZ2VkKGNvbnN0IEVkaXRvclN0YXRlJiBl
ZGl0b3JTdGF0ZSkKIHsKICAgICBpZiAodXBkYXRlRWRpdG9yU3RhdGUoZWRpdG9yU3RhdGUpKQot
ICAgICAgICBkaXNwYXRjaERpZFVwZGF0ZUVkaXRvclN0YXRlKCk7CisgICAgICAgIGRpc3BhdGNo
RGlkVXBkYXRlRWRpdG9yU3RhdGVBZnRlckZvY3VzaW5nRWxlbWVudCgpOwogfQogCiBib29sIFdl
YlBhZ2VQcm94eTo6dXBkYXRlRWRpdG9yU3RhdGUoY29uc3QgRWRpdG9yU3RhdGUmIG5ld0VkaXRv
clN0YXRlKQpAQCAtNzU4NCw3ICs3NTg0LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnVwZGF0ZUVk
aXRvclN0YXRlKGNvbnN0IEVkaXRvclN0YXRlJiBuZXdFZGl0b3JTdGF0ZSkKIAogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hEaWRVcGRhdGVF
ZGl0b3JTdGF0ZSgpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hEaWRVcGRhdGVFZGl0b3JT
dGF0ZUFmdGVyRm9jdXNpbmdFbGVtZW50KCkKIHsKIH0KIApAQCAtODA3Nyw3ICs4MDc3LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uIHRlcm1pbmEKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICBtX3dhaXRpbmdGb3JQb3N0TGF5b3V0RWRpdG9yU3RhdGVVcGRhdGVBZnRlckZvY3Vz
aW5nRWxlbWVudCA9IGZhbHNlOworICAgIG1fcHJldmVudFNjcm9sbEFmdGVyV2FpdGluZ0ZvckVk
aXRvclN0YXRlQWZ0ZXJGb2N1c2luZ0VsZW1lbnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9pc1Zp
c2libGVBY3Rpdml0eSA9IG51bGxwdHI7CiAgICAgbV9pc0F1ZGlibGVBY3Rpdml0eSA9IG51bGxw
dHI7CiAgICAgbV9pc0NhcHR1cmluZ0FjdGl2aXR5ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZDMwODQyYTFiZGY3MjQ4Y2ZhZjUwYzk0Y2Q3NTg4
N2M0ODc3NzY5ZC4uMjRkODJiNGYyOTU5MmRiNmE5ZTU1Y2EyY2M4ZTE2MjZhNjNhNDM2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE2NDQsOCArMTY0NCwxMSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0tleWJvYXJkQW5pbWF0aW5nSW4oYm9vbCBpc0tleWJv
YXJkQW5pbWF0aW5nSW4pIHsgbV9pc0tleWJvYXJkQW5pbWF0aW5nSW4gPSBpc0tleWJvYXJkQW5p
bWF0aW5nSW47IH0KICAgICBib29sIGlzS2V5Ym9hcmRBbmltYXRpbmdJbigpIGNvbnN0IHsgcmV0
dXJuIG1faXNLZXlib2FyZEFuaW1hdGluZ0luOyB9CiAKLSAgICB2b2lkIHNldFdhaXRpbmdGb3JQ
b3N0TGF5b3V0RWRpdG9yU3RhdGVVcGRhdGVBZnRlckZvY3VzaW5nRWxlbWVudChib29sIHdhaXRp
bmdGb3JQb3N0TGF5b3V0RWRpdG9yU3RhdGVVcGRhdGVBZnRlckZvY3VzaW5nRWxlbWVudCkgeyBt
X3dhaXRpbmdGb3JQb3N0TGF5b3V0RWRpdG9yU3RhdGVVcGRhdGVBZnRlckZvY3VzaW5nRWxlbWVu
dCA9IHdhaXRpbmdGb3JQb3N0TGF5b3V0RWRpdG9yU3RhdGVVcGRhdGVBZnRlckZvY3VzaW5nRWxl
bWVudDsgfQotICAgIGJvb2wgd2FpdGluZ0ZvclBvc3RMYXlvdXRFZGl0b3JTdGF0ZVVwZGF0ZUFm
dGVyRm9jdXNpbmdFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV93YWl0aW5nRm9yUG9zdExheW91
dEVkaXRvclN0YXRlVXBkYXRlQWZ0ZXJGb2N1c2luZ0VsZW1lbnQ7IH0KKyAgICBlbnVtIGNsYXNz
IFByZXZlbnRTY3JvbGwgOiBib29sIHsgTm8sIFllcyB9OworICAgIHZvaWQgc3RhcnRXYWl0aW5n
Rm9yRWRpdG9yU3RhdGVBZnRlckZvY3VzaW5nRWxlbWVudChQcmV2ZW50U2Nyb2xsIHByZXZlbnRT
Y3JvbGwpIHsgbV9wcmV2ZW50U2Nyb2xsQWZ0ZXJXYWl0aW5nRm9yRWRpdG9yU3RhdGVBZnRlckZv
Y3VzaW5nRWxlbWVudCA9IHByZXZlbnRTY3JvbGw7IH0KKyAgICB2b2lkIHN0b3BXYWl0aW5nRm9y
RWRpdG9yU3RhdGVBZnRlckZvY3VzaW5nRWxlbWVudCgpIHsgbV9wcmV2ZW50U2Nyb2xsQWZ0ZXJX
YWl0aW5nRm9yRWRpdG9yU3RhdGVBZnRlckZvY3VzaW5nRWxlbWVudCA9IHN0ZDo6bnVsbG9wdDsg
fQorICAgIGJvb2wgd2FpdGluZ0ZvckVkaXRvclN0YXRlQWZ0ZXJGb2N1c2luZ0VsZW1lbnQoKSBj
b25zdCB7IHJldHVybiBtX3ByZXZlbnRTY3JvbGxBZnRlcldhaXRpbmdGb3JFZGl0b3JTdGF0ZUFm
dGVyRm9jdXNpbmdFbGVtZW50Lmhhc192YWx1ZSgpOyB9CisgICAgYm9vbCBwcmV2ZW50U2Nyb2xs
QWZ0ZXJXYWl0aW5nRm9yRWRpdG9yU3RhdGVBZnRlckZvY3VzaW5nRWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJldmVudFNjcm9sbEFmdGVyV2FpdGluZ0ZvckVkaXRvclN0YXRlQWZ0ZXJGb2N1
c2luZ0VsZW1lbnQgPT0gUHJldmVudFNjcm9sbDo6WWVzOyB9CiAKICAgICBjb25zdCBGdW5jdGlv
bjxib29sKCk+JiBkZXZpY2VPcmllbnRhdGlvblVzZXJQZXJtaXNzaW9uSGFuZGxlckZvclRlc3Rp
bmcoKSBjb25zdCB7IHJldHVybiBtX2RldmljZU9yaWVudGF0aW9uVXNlclBlcm1pc3Npb25IYW5k
bGVyRm9yVGVzdGluZzsgfTsKICAgICB2b2lkIHNldERldmljZU9yaWVudGF0aW9uVXNlclBlcm1p
c3Npb25IYW5kbGVyRm9yVGVzdGluZyhGdW5jdGlvbjxib29sKCk+JiYgaGFuZGxlcikgeyBtX2Rl
dmljZU9yaWVudGF0aW9uVXNlclBlcm1pc3Npb25IYW5kbGVyRm9yVGVzdGluZyA9IFdURk1vdmUo
aGFuZGxlcik7IH0KQEAgLTE3MTksNyArMTcyMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVkaXRv
clN0YXRlQ2hhbmdlZChjb25zdCBFZGl0b3JTdGF0ZSYpOwogICAgIGJvb2wgdXBkYXRlRWRpdG9y
U3RhdGUoY29uc3QgRWRpdG9yU3RhdGUmIG5ld0VkaXRvclN0YXRlKTsKICAgICB2b2lkIHNjaGVk
dWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCk7Ci0gICAgdm9pZCBkaXNwYXRjaERpZFVwZGF0ZUVk
aXRvclN0YXRlKCk7CisgICAgdm9pZCBkaXNwYXRjaERpZFVwZGF0ZUVkaXRvclN0YXRlQWZ0ZXJG
b2N1c2luZ0VsZW1lbnQoKTsKIAogI2lmIEhBVkUoVE9VQ0hfQkFSKQogICAgIHZvaWQgdG91Y2hC
YXJNZW51RGF0YVJlbW92ZWQoKTsKQEAgLTI0MzcsNyArMjQ0MCw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGRpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXMoV2ViS2l0OjpUYXBJZGVudGlmaWVy
IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
RmxvYXRRdWFkPiYgZ2VvbWV0cmllcywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wTGVmdFJh
ZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJv
dHRvbVJpZ2h0UmFkaXVzLCBib29sIG5vZGVIYXNCdWlsdEluQ2xpY2tIYW5kbGluZyk7CiAKLSAg
ICB2b2lkIGVsZW1lbnREaWRGb2N1cyhjb25zdCBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJiwg
Ym9vbCB1c2VySXNJbnRlcmFjdGluZywgYm9vbCBibHVyUHJldmlvdXNOb2RlLCBPcHRpb25TZXQ8
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZUNoYW5nZXMsIGNvbnN0
IFVzZXJEYXRhJik7CisgICAgdm9pZCBlbGVtZW50RGlkRm9jdXMoY29uc3QgRm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbiYsIGJvb2wgdXNlcklzSW50ZXJhY3RpbmcsIGJvb2wgYmx1clByZXZpb3Vz
Tm9kZSwgYm9vbCBwcmV2ZW50U2Nyb2xsLCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZUNoYW5nZXMsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9p
ZCBlbGVtZW50RGlkQmx1cigpOwogICAgIHZvaWQgdXBkYXRlSW5wdXRDb250ZXh0QWZ0ZXJCbHVy
cmluZ0FuZFJlZm9jdXNpbmdFbGVtZW50KCk7CiAgICAgdm9pZCBmb2N1c2VkRWxlbWVudERpZENo
YW5nZUlucHV0TW9kZShXZWJDb3JlOjpJbnB1dE1vZGUpOwpAQCAtMzA2Myw3ICszMDY2LDcgQEAg
cHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRnVuY3Rpb248Ym9vbCgp
PiBtX2RldmljZU9yaWVudGF0aW9uVXNlclBlcm1pc3Npb25IYW5kbGVyRm9yVGVzdGluZzsKLSAg
ICBib29sIG1fd2FpdGluZ0ZvclBvc3RMYXlvdXRFZGl0b3JTdGF0ZVVwZGF0ZUFmdGVyRm9jdXNp
bmdFbGVtZW50IHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFByZXZlbnRTY3JvbGw+IG1f
cHJldmVudFNjcm9sbEFmdGVyV2FpdGluZ0ZvckVkaXRvclN0YXRlQWZ0ZXJGb2N1c2luZ0VsZW1l
bnQ7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fbWluaW11bVVub2JzY3VyZWRTaXplOwogICAg
IFdlYkNvcmU6OkZsb2F0U2l6ZSBtX21heGltdW1Vbm9ic2N1cmVkU2l6ZTsKICAgICBib29sIG1f
bGFzdE9ic2VydmVkU3RhdGVXYXNCYWNrZ3JvdW5kIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA0N2E0ZmQwOTA0
NGIwZjBmNjM2ODZjNGMwMWZhNGExOTUyYWJlOTNjLi5mY2ExNTFiNjllMDliOWIxNTk1ZjcyOGE3
N2MwZmQ2NjkyYWQzMWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zODMsNyArMzgzLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICBSZXN0b3JlUGFnZUNlbnRlckFuZFNjYWxlKHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6RmxvYXRQb2ludD4gdW5vYnNjdXJlZENlbnRlciwgZG91YmxlIHNjYWxlKQogICAgIERp
ZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXMoV2ViS2l0OjpUYXBJZGVudGlmaWVyIHJlcXVlc3RJ
RCwgV2ViQ29yZTo6Q29sb3IgY29sb3IsIFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+IGdlb21l
dHJpZXMsIFdlYkNvcmU6OkludFNpemUgdG9wTGVmdFJhZGl1cywgV2ViQ29yZTo6SW50U2l6ZSB0
b3BSaWdodFJhZGl1cywgV2ViQ29yZTo6SW50U2l6ZSBib3R0b21MZWZ0UmFkaXVzLCBXZWJDb3Jl
OjpJbnRTaXplIGJvdHRvbVJpZ2h0UmFkaXVzLCBib29sIG5vZGVIYXNCdWlsdEluQ2xpY2tIYW5k
bGluZykKIAotICAgIEVsZW1lbnREaWRGb2N1cyhzdHJ1Y3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVu
dEluZm9ybWF0aW9uIGluZm9ybWF0aW9uLCBib29sIHVzZXJJc0ludGVyYWN0aW5nLCBib29sIGJs
dXJQcmV2aW91c05vZGUsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBh
Y3Rpdml0eVN0YXRlQ2hhbmdlcywgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBFbGVt
ZW50RGlkRm9jdXMoc3RydWN0IFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiBpbmZv
cm1hdGlvbiwgYm9vbCB1c2VySXNJbnRlcmFjdGluZywgYm9vbCBibHVyUHJldmlvdXNOb2RlLCBi
b29sIHByZXZlbnRTY3JvbGwsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFn
PiBhY3Rpdml0eVN0YXRlQ2hhbmdlcywgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBF
bGVtZW50RGlkQmx1cigpCiAgICAgVXBkYXRlSW5wdXRDb250ZXh0QWZ0ZXJCbHVycmluZ0FuZFJl
Zm9jdXNpbmdFbGVtZW50KCkKICAgICBGb2N1c2VkRWxlbWVudERpZENoYW5nZUlucHV0TW9kZShl
bnVtOnVpbnQ4X3QgV2ViQ29yZTo6SW5wdXRNb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IGRmYjE5Mzk5MzYxNmU4MDBh
MWE1MDg4MTg4MzJlNGRmMjU3NmRjZDkuLjIxYWYxODNkODRmOWQ4MzA0N2EwOWMxNjhlNWUyNDc5
OTczNWNkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oCkBAIC0xNzksMTEgKzE3OSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzdG9y
ZVBhZ2VTdGF0ZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+LCBjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmLCBkb3VibGUp
IG92ZXJyaWRlOwogICAgIHZvaWQgcmVzdG9yZVBhZ2VDZW50ZXJBbmRTY2FsZShzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+LCBkb3VibGUpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBl
bGVtZW50RGlkRm9jdXMoY29uc3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYsIGJvb2wgdXNl
cklzSW50ZXJhY3RpbmcsIGJvb2wgYmx1clByZXZpb3VzTm9kZSwgT3B0aW9uU2V0PFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGVDaGFuZ2VzLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEpIG92ZXJyaWRlOworICAgIHZvaWQgZWxlbWVudERpZEZvY3VzKGNvbnN0IEZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24mLCBib29sIHVzZXJJc0ludGVyYWN0aW5nLCBib29sIGJsdXJQ
cmV2aW91c05vZGUsIGJvb2wgcHJldmVudFNjcm9sbCwgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGVDaGFuZ2VzLCBBUEk6Ok9iamVjdCogdXNlckRh
dGEpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlSW5wdXRDb250ZXh0QWZ0ZXJCbHVycmluZ0Fu
ZFJlZm9jdXNpbmdFbGVtZW50KCkgZmluYWw7CiAgICAgdm9pZCBlbGVtZW50RGlkQmx1cigpIG92
ZXJyaWRlOwogICAgIHZvaWQgZm9jdXNlZEVsZW1lbnREaWRDaGFuZ2VJbnB1dE1vZGUoV2ViQ29y
ZTo6SW5wdXRNb2RlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFVwZGF0ZUVkaXRvclN0YXRlKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRVcGRhdGVFZGl0b3JTdGF0ZUFmdGVyRm9jdXNpbmdFbGVt
ZW50KCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0ZvY3VzaW5nRWxlbWVudCgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpbnRlcnBy
ZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVu
dCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0KaW5kZXggMmI1ZjUxYzJkODA3Y2RmN2U2ZWU1OTU3ZDY2ZjNhNzFmZDgyYzJk
YS4uMjY3NTc5ZmY5N2FkYjg4NjVmYmM4NmE1MDc2N2E1YmZmOTc2YTgyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtNjEwLDcg
KzYxMCw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnJlc3RvcmVQYWdlQ2VudGVyQW5kU2NhbGUo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50CiAgICAgW21fd2ViVmlldyBfcmVzdG9y
ZVBhZ2VTdGF0ZVRvVW5vYnNjdXJlZENlbnRlcjpjZW50ZXIgc2NhbGU6c2NhbGVdOwogfQogCi12
b2lkIFBhZ2VDbGllbnRJbXBsOjplbGVtZW50RGlkRm9jdXMoY29uc3QgRm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbiYgbm9kZUluZm9ybWF0aW9uLCBib29sIHVzZXJJc0ludGVyYWN0aW5nLCBib29s
IGJsdXJQcmV2aW91c05vZGUsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFn
PiBhY3Rpdml0eVN0YXRlQ2hhbmdlcywgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQordm9pZCBQYWdl
Q2xpZW50SW1wbDo6ZWxlbWVudERpZEZvY3VzKGNvbnN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRp
b24mIG5vZGVJbmZvcm1hdGlvbiwgYm9vbCB1c2VySXNJbnRlcmFjdGluZywgYm9vbCBibHVyUHJl
dmlvdXNOb2RlLCBib29sIHByZXZlbnRTY3JvbGwsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlQ2hhbmdlcywgQVBJOjpPYmplY3QqIHVzZXJEYXRh
KQogewogICAgIE1FU1NBR0VfQ0hFQ0soIXVzZXJEYXRhIHx8IHVzZXJEYXRhLT50eXBlKCkgPT0g
QVBJOjpPYmplY3Q6OlR5cGU6OkRhdGEpOwogCkBAIC02MjcsNyArNjI3LDcgQEAgdm9pZCBQYWdl
Q2xpZW50SW1wbDo6ZWxlbWVudERpZEZvY3VzKGNvbnN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRp
b24mIG5vZGVJbmZvcm0KICAgICAgICAgfQogICAgIH0KIAotICAgIFttX2NvbnRlbnRWaWV3IF9l
bGVtZW50RGlkRm9jdXM6bm9kZUluZm9ybWF0aW9uIHVzZXJJc0ludGVyYWN0aW5nOnVzZXJJc0lu
dGVyYWN0aW5nIGJsdXJQcmV2aW91c05vZGU6Ymx1clByZXZpb3VzTm9kZSBhY3Rpdml0eVN0YXRl
Q2hhbmdlczphY3Rpdml0eVN0YXRlQ2hhbmdlcyB1c2VyT2JqZWN0OnVzZXJPYmplY3RdOworICAg
IFttX2NvbnRlbnRWaWV3IF9lbGVtZW50RGlkRm9jdXM6bm9kZUluZm9ybWF0aW9uIHVzZXJJc0lu
dGVyYWN0aW5nOnVzZXJJc0ludGVyYWN0aW5nIGJsdXJQcmV2aW91c05vZGU6Ymx1clByZXZpb3Vz
Tm9kZSBwcmV2ZW50U2Nyb2xsOnByZXZlbnRTY3JvbGwgYWN0aXZpdHlTdGF0ZUNoYW5nZXM6YWN0
aXZpdHlTdGF0ZUNoYW5nZXMgdXNlck9iamVjdDp1c2VyT2JqZWN0XTsKIH0KIAogdm9pZCBQYWdl
Q2xpZW50SW1wbDo6dXBkYXRlSW5wdXRDb250ZXh0QWZ0ZXJCbHVycmluZ0FuZFJlZm9jdXNpbmdF
bGVtZW50KCkKQEAgLTY1MCw5ICs2NTAsOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpmb2N1c2Vk
RWxlbWVudERpZENoYW5nZUlucHV0TW9kZShXZWJDb3JlOjpJbnB1dE1vZGUgbW9kZSkKICAgICBb
bV9jb250ZW50VmlldyBfZGlkVXBkYXRlSW5wdXRNb2RlOm1vZGVdOwogfQogCi12b2lkIFBhZ2VD
bGllbnRJbXBsOjpkaWRVcGRhdGVFZGl0b3JTdGF0ZSgpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpk
aWRVcGRhdGVFZGl0b3JTdGF0ZUFmdGVyRm9jdXNpbmdFbGVtZW50KCkKIHsKLSAgICBbbV9jb250
ZW50VmlldyBfZGlkVXBkYXRlRWRpdG9yU3RhdGVdOworICAgIFttX2NvbnRlbnRWaWV3IF9kaWRV
cGRhdGVFZGl0b3JTdGF0ZUFmdGVyRm9jdXNpbmdFbGVtZW50XTsKIH0KIAogdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IElu
dFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3kgcG9saWN5LCBj
b25zdCBTdHJpbmcmIGNvbnRleHRVSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggMjY4NjYwZmIwMDNhZDhk
OTJkOTE1YjZmZjdhZGQ4OTY2MDk5MTBiNC4uNzYyMTdkOTNiOGQxM2I4ODdhMzU0NWRkMzdlZjRj
OWIyYThmNmVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtNjQxLDExICs2NDEsMTEgQEAgRk9SX0VBQ0hf
UFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9O
X0ZPUl9XRUJfVklFVykKIC0gKEJPT0wpX21heURpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmlu
Z1NpbmdsZVRhcDsKIC0gKHZvaWQpX2Rpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElm
TmVjZXNzYXJ5OihXZWJLaXQ6OlRhcElkZW50aWZpZXIpcmVxdWVzdElEOwogLSAodm9pZClfaGFu
ZGxlU21hcnRNYWduaWZpY2F0aW9uSW5mb3JtYXRpb25Gb3JQb3RlbnRpYWxUYXA6KFdlYktpdDo6
VGFwSWRlbnRpZmllcilyZXF1ZXN0SUQgcmVuZGVyUmVjdDooY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JilyZW5kZXJSZWN0IGZpdEVudGlyZVJlY3Q6KEJPT0wpZml0RW50aXJlUmVjdCB2aWV3cG9y
dE1pbmltdW1TY2FsZTooZG91YmxlKXZpZXdwb3J0TWluaW11bVNjYWxlIHZpZXdwb3J0TWF4aW11
bVNjYWxlOihkb3VibGUpdmlld3BvcnRNYXhpbXVtU2NhbGUgbm9kZUlzUm9vdExldmVsOihCT09M
KW5vZGVJc1Jvb3RMZXZlbDsKLS0gKHZvaWQpX2VsZW1lbnREaWRGb2N1czooY29uc3QgV2ViS2l0
OjpGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJilpbmZvcm1hdGlvbiB1c2VySXNJbnRlcmFjdGlu
ZzooQk9PTCl1c2VySXNJbnRlcmFjdGluZyBibHVyUHJldmlvdXNOb2RlOihCT09MKWJsdXJQcmV2
aW91c05vZGUgYWN0aXZpdHlTdGF0ZUNoYW5nZXM6KE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpGbGFnPilhY3Rpdml0eVN0YXRlQ2hhbmdlcyB1c2VyT2JqZWN0OihOU09iamVjdCA8
TlNTZWN1cmVDb2Rpbmc+ICopdXNlck9iamVjdDsKKy0gKHZvaWQpX2VsZW1lbnREaWRGb2N1czoo
Y29uc3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJilpbmZvcm1hdGlvbiB1c2Vy
SXNJbnRlcmFjdGluZzooQk9PTCl1c2VySXNJbnRlcmFjdGluZyBibHVyUHJldmlvdXNOb2RlOihC
T09MKWJsdXJQcmV2aW91c05vZGUgcHJldmVudFNjcm9sbDooQk9PTClwcmV2ZW50U2Nyb2xsIGFj
dGl2aXR5U3RhdGVDaGFuZ2VzOihPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6Rmxh
Zz4pYWN0aXZpdHlTdGF0ZUNoYW5nZXMgdXNlck9iamVjdDooTlNPYmplY3QgPE5TU2VjdXJlQ29k
aW5nPiAqKXVzZXJPYmplY3Q7CiAtICh2b2lkKV91cGRhdGVJbnB1dENvbnRleHRBZnRlckJsdXJy
aW5nQW5kUmVmb2N1c2luZ0VsZW1lbnQ7CiAtICh2b2lkKV9lbGVtZW50RGlkQmx1cjsKIC0gKHZv
aWQpX2RpZFVwZGF0ZUlucHV0TW9kZTooV2ViQ29yZTo6SW5wdXRNb2RlKW1vZGU7Ci0tICh2b2lk
KV9kaWRVcGRhdGVFZGl0b3JTdGF0ZTsKKy0gKHZvaWQpX2RpZFVwZGF0ZUVkaXRvclN0YXRlQWZ0
ZXJGb2N1c2luZ0VsZW1lbnQ7CiAtICh2b2lkKV9oYXJkd2FyZUtleWJvYXJkQXZhaWxhYmlsaXR5
Q2hhbmdlZDsKIC0gKHZvaWQpX3NlbGVjdGlvbkNoYW5nZWQ7CiAtICh2b2lkKV91cGRhdGVDaGFu
Z2VkU2VsZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYWQ2NTMyNzdiNDQyN2NhZTcxNmViMmI1
M2Q2ODU2ZWViYTA3MmY3YS4uMWI2MjRlZGQ2NjJkNWE2M2RkZDg5NDI5NGJjMzljOTczMGQ4YWUw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0yNDUxLDcgKzI0NTEsNyBAQCBzdGF0aWMgTlNWYWx1ZSAq
bnNTaXplRm9yVGFwSGlnaGxpZ2h0Qm9yZGVyUmFkaXVzKFdlYkNvcmU6OkludFNpemUgYm9yZGVy
UmFkaXVzLAogCiAtIChDR1JlY3QpX3NlbGVjdGlvbkNsaXBSZWN0CiB7Ci0gICAgaWYgKF9wYWdl
LT53YWl0aW5nRm9yUG9zdExheW91dEVkaXRvclN0YXRlVXBkYXRlQWZ0ZXJGb2N1c2luZ0VsZW1l
bnQoKSkKKyAgICBpZiAoX3BhZ2UtPndhaXRpbmdGb3JFZGl0b3JTdGF0ZUFmdGVyRm9jdXNpbmdF
bGVtZW50KCkpCiAgICAgICAgIHJldHVybiBfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5pbnRl
cmFjdGlvblJlY3Q7CiAKICAgICBpZiAoIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXRE
YXRhKCkuc2VsZWN0aW9uQ2xpcFJlY3QuaXNFbXB0eSgpKQpAQCAtNjA1OSw3ICs2MDU5LDcgQEAg
c3RhdGljIE5TU3RyaW5nICpjb250ZW50VHlwZUZyb21GaWVsZE5hbWUoV2ViQ29yZTo6QXV0b2Zp
bGxGaWVsZE5hbWUgZmllbGROYW1lKQogICAgICAgICAvLyBNYXJrIHRvIHpvb20gdG8gcmV2ZWFs
IHRoZSBuZXdseSBmb2N1c2VkIGVsZW1lbnQgb24gdGhlIG5leHQgZWRpdG9yIHN0YXRlIHVwZGF0
ZS4KICAgICAgICAgLy8gVGhlbiB0ZWxsIHRoZSB3ZWIgcHJvY2VzcyB0byByZXZlYWwgdGhlIGN1
cnJlbnQgc2VsZWN0aW9uLCB3aGljaCB3aWxsIHNlbmQgdXMgKHRoZQogICAgICAgICAvLyBVSSBw
cm9jZXNzKSBhbiBlZGl0b3Igc3RhdGUgdXBkYXRlLgotICAgICAgICBfcGFnZS0+c2V0V2FpdGlu
Z0ZvclBvc3RMYXlvdXRFZGl0b3JTdGF0ZVVwZGF0ZUFmdGVyRm9jdXNpbmdFbGVtZW50KHRydWUp
OworICAgICAgICBfcGFnZS0+c3RhcnRXYWl0aW5nRm9yRWRpdG9yU3RhdGVBZnRlckZvY3VzaW5n
RWxlbWVudChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6UHJldmVudFNjcm9sbDo6Tm8pOwogICAgICAg
ICBfdGV4dEludGVyYWN0aW9uRGlkQ2hhbmdlRm9jdXNlZEVsZW1lbnQgPSBOTzsKICAgICB9CiAK
QEAgLTY2MjUsNyArNjYyNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNPYmplY3QgPFdLRm9ybVBl
cmlwaGVyYWw+PiBjcmVhdGVJbnB1dFBlcmlwaGVyYWxXaXRoVmlldyhXZWJLCiAjZW5kaWYKIH0K
IAotLSAodm9pZClfZWxlbWVudERpZEZvY3VzOihjb25zdCBXZWJLaXQ6OkZvY3VzZWRFbGVtZW50
SW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIHVzZXJJc0ludGVyYWN0aW5nOihCT09MKXVzZXJJc0lu
dGVyYWN0aW5nIGJsdXJQcmV2aW91c05vZGU6KEJPT0wpYmx1clByZXZpb3VzTm9kZSBhY3Rpdml0
eVN0YXRlQ2hhbmdlczooT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+KWFj
dGl2aXR5U3RhdGVDaGFuZ2VzIHVzZXJPYmplY3Q6KE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4g
Kil1c2VyT2JqZWN0CistICh2b2lkKV9lbGVtZW50RGlkRm9jdXM6KGNvbnN0IFdlYktpdDo6Rm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gdXNlcklzSW50ZXJhY3Rpbmc6KEJP
T0wpdXNlcklzSW50ZXJhY3RpbmcgYmx1clByZXZpb3VzTm9kZTooQk9PTClibHVyUHJldmlvdXNO
b2RlIHByZXZlbnRTY3JvbGw6KEJPT0wpcHJldmVudFNjcm9sbCBhY3Rpdml0eVN0YXRlQ2hhbmdl
czooT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+KWFjdGl2aXR5U3RhdGVD
aGFuZ2VzIHVzZXJPYmplY3Q6KE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4gKil1c2VyT2JqZWN0
CiB7CiAgICAgU2V0Rm9yU2NvcGU8Qk9PTD4gaXNDaGFuZ2luZ0ZvY3VzRm9yU2NvcGUgeyBfaXND
aGFuZ2luZ0ZvY3VzLCBzZWxmLl9oYXNGb2N1c2VkRWxlbWVudCB9OwogICAgIFNldEZvclNjb3Bl
PEJPT0w+IGlzRm9jdXNpbmdFbGVtZW50V2l0aEtleWJvYXJkRm9yU2NvcGUgeyBfaXNGb2N1c2lu
Z0VsZW1lbnRXaXRoS2V5Ym9hcmQsIFtzZWxmIF9zaG91bGRTaG93S2V5Ym9hcmRGb3JFbGVtZW50
OmluZm9ybWF0aW9uXSB9OwpAQCAtNjc4NSw4ICs2Nzg1LDggQEAgc3RhdGljIFJldGFpblB0cjxO
U09iamVjdCA8V0tGb3JtUGVyaXBoZXJhbD4+IGNyZWF0ZUlucHV0UGVyaXBoZXJhbFdpdGhWaWV3
KFdlYksKICAgICAvLyBpbW1lZGlhdGVseSBiZWNhdXNlIHRoZXkgaGF2ZSBubyBzZWxlY3Rpb24g
dG8gcmV2ZWFsLgogICAgIEJPT0wgbmVlZHNFZGl0b3JTdGF0ZVVwZGF0ZSA9IG1heUNvbnRhaW5T
ZWxlY3RhYmxlVGV4dChfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSk7CiAg
ICAgaWYgKG5lZWRzRWRpdG9yU3RhdGVVcGRhdGUpCi0gICAgICAgIF9wYWdlLT5zZXRXYWl0aW5n
Rm9yUG9zdExheW91dEVkaXRvclN0YXRlVXBkYXRlQWZ0ZXJGb2N1c2luZ0VsZW1lbnQodHJ1ZSk7
Ci0gICAgZWxzZQorICAgICAgICBfcGFnZS0+c3RhcnRXYWl0aW5nRm9yRWRpdG9yU3RhdGVBZnRl
ckZvY3VzaW5nRWxlbWVudChwcmV2ZW50U2Nyb2xsID8gV2ViS2l0OjpXZWJQYWdlUHJveHk6OlBy
ZXZlbnRTY3JvbGw6OlllcyA6IFdlYktpdDo6V2ViUGFnZVByb3h5OjpQcmV2ZW50U2Nyb2xsOjpO
byk7CisgICAgZWxzZSBpZiAoIXByZXZlbnRTY3JvbGwpCiAgICAgICAgIFtzZWxmIF96b29tVG9S
ZXZlYWxGb2N1c2VkRWxlbWVudF07CiAKICAgICBbc2VsZiBfdXBkYXRlQWNjZXNzb3J5XTsKQEAg
LTY4NTUsNyArNjg1NSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNPYmplY3QgPFdLRm9ybVBlcmlw
aGVyYWw+PiBjcmVhdGVJbnB1dFBlcmlwaGVyYWxXaXRoVmlldyhXZWJLCiAgICAgICAgIF9wYWdl
LT5zZXRJc1Nob3dpbmdJbnB1dFZpZXdGb3JGb2N1c2VkRWxlbWVudChmYWxzZSk7CiAgICAgfQog
Ci0gICAgX3BhZ2UtPnNldFdhaXRpbmdGb3JQb3N0TGF5b3V0RWRpdG9yU3RhdGVVcGRhdGVBZnRl
ckZvY3VzaW5nRWxlbWVudChmYWxzZSk7CisgICAgX3BhZ2UtPnN0b3BXYWl0aW5nRm9yRWRpdG9y
U3RhdGVBZnRlckZvY3VzaW5nRWxlbWVudCgpOwogCiAgICAgaWYgKCFfaXNDaGFuZ2luZ0ZvY3Vz
KQogICAgICAgICBfZGlkQWNjZXNzb3J5VGFiSW5pdGlhdGVGb2N1cyA9IE5POwpAQCAtNjk1Niw3
ICs2OTU2LDcgQEAgc3RhdGljIEJPT0wgYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmln
aW4oVUlQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBjb25zdAogCiAtICh2b2lkKWRvQWZ0ZXJFZGl0
b3JTdGF0ZVVwZGF0ZUFmdGVyRm9jdXNpbmdFbGVtZW50OihkaXNwYXRjaF9ibG9ja190KWJsb2Nr
CiB7Ci0gICAgaWYgKCFfcGFnZS0+d2FpdGluZ0ZvclBvc3RMYXlvdXRFZGl0b3JTdGF0ZVVwZGF0
ZUFmdGVyRm9jdXNpbmdFbGVtZW50KCkpIHsKKyAgICBpZiAoIV9wYWdlLT53YWl0aW5nRm9yRWRp
dG9yU3RhdGVBZnRlckZvY3VzaW5nRWxlbWVudCgpKSB7CiAgICAgICAgIGJsb2NrKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC02OTY0LDEzICs2OTY0LDEzIEBAIHN0YXRpYyBCT09MIGFs
bFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVib2FyZCAqcGFzdGVib2Fy
ZCwgY29uc3QKICAgICBfYWN0aW9uc1RvUGVyZm9ybUFmdGVyRWRpdG9yU3RhdGVVcGRhdGUuYXBw
ZW5kKG1ha2VCbG9ja1B0cihibG9jaykpOwogfQogCi0tICh2b2lkKV9kaWRVcGRhdGVFZGl0b3JT
dGF0ZQorLSAodm9pZClfZGlkVXBkYXRlRWRpdG9yU3RhdGVBZnRlckZvY3VzaW5nRWxlbWVudAog
ewogICAgIFtzZWxmIF91cGRhdGVJbml0aWFsV3JpdGluZ0RpcmVjdGlvbklmTmVjZXNzYXJ5XTsK
IAogICAgIC8vIEZJWE1FOiBJZiB0aGUgaW5pdGlhbCB3cml0aW5nIGRpcmVjdGlvbiBqdXN0IGNo
YW5nZWQsIHdlIHNob3VsZCB3YWl0IHVudGlsIHdlIGdldCB0aGUgbmV4dCBwb3N0LWxheW91dCBl
ZGl0b3Igc3RhdGUKICAgICAvLyBiZWZvcmUgem9vbWluZyB0byByZXZlYWwgdGhlIHNlbGVjdGlv
biByZWN0LgotICAgIGlmIChtYXlDb250YWluU2VsZWN0YWJsZVRleHQoX2ZvY3VzZWRFbGVtZW50
SW5mb3JtYXRpb24uZWxlbWVudFR5cGUpKQorICAgIGlmICghX3BhZ2UtPnByZXZlbnRTY3JvbGxB
ZnRlcldhaXRpbmdGb3JFZGl0b3JTdGF0ZUFmdGVyRm9jdXNpbmdFbGVtZW50KCkpCiAgICAgICAg
IFtzZWxmIF96b29tVG9SZXZlYWxGb2N1c2VkRWxlbWVudF07CiAKICAgICBfdHJlYXRBc0NvbnRl
bnRFZGl0YWJsZVVudGlsTmV4dEVkaXRvclN0YXRlVXBkYXRlID0gTk87CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBkOGE1ZDI5NmIwNDU0
ODQ5MjVmMzc4NDYyZGYzNDYxN2RiYTA1NDA3Li5hMWU2NmQ5NWY1NWJjNzAwZjVhN2MxOThhMTlm
MGVhNDQ0YzYxZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0KQEAgLTg5NCwxMiArODk0LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRh
dGVJbnB1dENvbnRleHRBZnRlckJsdXJyaW5nQW5kUmVmb2N1c2luZ0VsZW1lbnQoKQogICAgIHBh
Z2VDbGllbnQoKS51cGRhdGVJbnB1dENvbnRleHRBZnRlckJsdXJyaW5nQW5kUmVmb2N1c2luZ0Vs
ZW1lbnQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmVsZW1lbnREaWRGb2N1cyhjb25zdCBG
b2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJiBpbmZvcm1hdGlvbiwgYm9vbCB1c2VySXNJbnRlcmFj
dGluZywgYm9vbCBibHVyUHJldmlvdXNOb2RlLCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZUNoYW5nZXMsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjplbGVtZW50RGlkRm9jdXMoY29uc3QgRm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbiYgaW5mb3JtYXRpb24sIGJvb2wgdXNlcklzSW50ZXJhY3RpbmcsIGJvb2wg
Ymx1clByZXZpb3VzTm9kZSwgYm9vbCBwcmV2ZW50U2Nyb2xsLCBPcHRpb25TZXQ8V2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZUNoYW5nZXMsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKIHsKICAgICBtX3BlbmRpbmdJbnB1dE1vZGVDaGFuZ2UgPSBzdGQ6Om51bGxv
cHQ7CiAKICAgICBBUEk6Ok9iamVjdCogdXNlckRhdGFPYmplY3QgPSBwcm9jZXNzKCkudHJhbnNm
b3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCk7Ci0gICAgcGFnZUNs
aWVudCgpLmVsZW1lbnREaWRGb2N1cyhpbmZvcm1hdGlvbiwgdXNlcklzSW50ZXJhY3RpbmcsIGJs
dXJQcmV2aW91c05vZGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VzLCB1c2VyRGF0YU9iamVjdCk7Cisg
ICAgcGFnZUNsaWVudCgpLmVsZW1lbnREaWRGb2N1cyhpbmZvcm1hdGlvbiwgdXNlcklzSW50ZXJh
Y3RpbmcsIGJsdXJQcmV2aW91c05vZGUsIHByZXZlbnRTY3JvbGwsIGFjdGl2aXR5U3RhdGVDaGFu
Z2VzLCB1c2VyRGF0YU9iamVjdCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjplbGVtZW50RGlk
Qmx1cigpCkBAIC0xMDg0LDEzICsxMDg0LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRVcGRh
dGVFZGl0b3JTdGF0ZShjb25zdCBFZGl0b3JTdGF0ZSYgb2xkRWRpdG9yU3RhdGUsIGNvbnN0CiAg
ICAgcGFnZUNsaWVudCgpLnNlbGVjdGlvbkRpZENoYW5nZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlzcGF0Y2hEaWRVcGRhdGVFZGl0b3JTdGF0ZSgpCit2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlzcGF0Y2hEaWRVcGRhdGVFZGl0b3JTdGF0ZUFmdGVyRm9jdXNpbmdFbGVtZW50KCkKIHsKLSAg
ICBpZiAoIW1fd2FpdGluZ0ZvclBvc3RMYXlvdXRFZGl0b3JTdGF0ZVVwZGF0ZUFmdGVyRm9jdXNp
bmdFbGVtZW50IHx8IG1fZWRpdG9yU3RhdGUuaXNNaXNzaW5nUG9zdExheW91dERhdGEpCisgICAg
aWYgKCF3YWl0aW5nRm9yRWRpdG9yU3RhdGVBZnRlckZvY3VzaW5nRWxlbWVudCgpIHx8IG1fZWRp
dG9yU3RhdGUuaXNNaXNzaW5nUG9zdExheW91dERhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHBhZ2VDbGllbnQoKS5kaWRVcGRhdGVFZGl0b3JTdGF0ZSgpOwotICAgIG1fd2FpdGluZ0ZvclBv
c3RMYXlvdXRFZGl0b3JTdGF0ZVVwZGF0ZUFmdGVyRm9jdXNpbmdFbGVtZW50ID0gZmFsc2U7Cisg
ICAgcGFnZUNsaWVudCgpLmRpZFVwZGF0ZUVkaXRvclN0YXRlQWZ0ZXJGb2N1c2luZ0VsZW1lbnQo
KTsKKyAgICBtX3ByZXZlbnRTY3JvbGxBZnRlcldhaXRpbmdGb3JFZGl0b3JTdGF0ZUFmdGVyRm9j
dXNpbmdFbGVtZW50ID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2hv
d1ZhbGlkYXRpb25NZXNzYWdlKGNvbnN0IEludFJlY3QmIGFuY2hvckNsaWVudFJlY3QsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggYzVmNDAzYTZkNDRk
NTU0YjZiZTc5NGQxNjkwM2RkYzg3YzYyMmE3Ny4uMDVlM2YzZjFiOGQ0Y2NkYTI1ZmQ3YjQ1NzUy
NWUyM2M1YzI4MWYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTIxNCwxNCArMjE0LDE0
IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp1bmZvY3VzKCkKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6ZWxlbWVudERpZEZvY3VzKEVsZW1lbnQmIGVsZW1l
bnQpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6ZWxlbWVudERpZEZvY3VzKEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IEZvY3VzT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBtX3BhZ2UuZWxlbWVudERp
ZEZvY3VzKGVsZW1lbnQpOworICAgIG1fcGFnZS5lbGVtZW50RGlkRm9jdXMoZWxlbWVudCwgb3B0
aW9ucyk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbGVtZW50RGlkUmVmb2N1cyhFbGVt
ZW50JiBlbGVtZW50KQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OmVsZW1lbnREaWRSZWZvY3VzKEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEZvY3VzT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBtX3Bh
Z2UuZWxlbWVudERpZFJlZm9jdXMoZWxlbWVudCk7CisgICAgbV9wYWdlLmVsZW1lbnREaWRSZWZv
Y3VzKGVsZW1lbnQsIG9wdGlvbnMpOwogfQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZWxlbWVu
dERpZEJsdXIoRWxlbWVudCYgZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA3NzlkYTVh
YzRmYmFkNWUwMGUyZGQ3YWYwY2RiMGJiY2NjNGNjMDZhLi4xNzRhYmRiNmNkZjY4YTE2OGJmOTY0
ZGYwNTNkODBiZWU1MmQ4MDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zMDYsOSArMzA2LDkg
QEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBlbGVt
ZW50RGlkRm9jdXMoV2ViQ29yZTo6RWxlbWVudCYpIGZpbmFsOworICAgIHZvaWQgZWxlbWVudERp
ZEZvY3VzKFdlYkNvcmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpGb2N1c09wdGlvbnMmKSBm
aW5hbDsKICAgICB2b2lkIGVsZW1lbnREaWRCbHVyKFdlYkNvcmU6OkVsZW1lbnQmKSBmaW5hbDsK
LSAgICB2b2lkIGVsZW1lbnREaWRSZWZvY3VzKFdlYkNvcmU6OkVsZW1lbnQmKSBmaW5hbDsKKyAg
ICB2b2lkIGVsZW1lbnREaWRSZWZvY3VzKFdlYkNvcmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3Jl
OjpGb2N1c09wdGlvbnMmKSBmaW5hbDsKICAgICB2b2lkIGZvY3VzZWRFbGVtZW50RGlkQ2hhbmdl
SW5wdXRNb2RlKFdlYkNvcmU6OkVsZW1lbnQmLCBXZWJDb3JlOjpJbnB1dE1vZGUpIGZpbmFsOwog
CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZjM2MzZjYWJkNjVkNjc2YmY3Njhk
YTRjOWZiZGM5NjU2MDkxMjgzYy4uMmQzMzQxMDViNWQwOTQxOTU1ZWEyMGMzZDczZWVkNDUxM2U4
MzJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTYxNDUsOSArNjE0NSw5IEBAIHZvaWQgV2ViUGFnZTo6cmVzZXRGb2N1c2VkRWxlbWVudEZv
ckZyYW1lKFdlYkZyYW1lKiBmcmFtZSkKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZWxlbWVu
dERpZFJlZm9jdXMoV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkKK3ZvaWQgV2ViUGFnZTo6ZWxl
bWVudERpZFJlZm9jdXMoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgRm9jdXNPcHRpb25zJiBvcHRp
b25zKQogewotICAgIGVsZW1lbnREaWRGb2N1cyhlbGVtZW50KTsKKyAgICBlbGVtZW50RGlkRm9j
dXMoZWxlbWVudCwgb3B0aW9ucyk7CiAKICAgICBpZiAobV91c2VySXNJbnRlcmFjdGluZykKICAg
ICAgICAgc2NoZWR1bGVGdWxsRWRpdG9yU3RhdGVVcGRhdGUoKTsKQEAgLTYxNzAsNyArNjE3MCw3
IEBAIHN0YXRpYyBib29sIGlzVGV4dEZvcm1Db250cm9sT3JFZGl0YWJsZUNvbnRlbnQoY29uc3Qg
V2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gaXM8SFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ+KGVsZW1lbnQpIHx8IGVsZW1lbnQuaGFzRWRpdGFibGVTdHlsZSgpOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmVsZW1lbnREaWRGb2N1cyhXZWJDb3JlOjpFbGVtZW50JiBlbGVtZW50
KQordm9pZCBXZWJQYWdlOjplbGVtZW50RGlkRm9jdXMoRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
Rm9jdXNPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICghc2hvdWxkRGlzcGF0Y2hVcGRhdGVB
ZnRlckZvY3VzaW5nRWxlbWVudChlbGVtZW50KSkgewogICAgICAgICB1cGRhdGVJbnB1dENvbnRl
eHRBZnRlckJsdXJyaW5nQW5kUmVmb2N1c2luZ0VsZW1lbnRJZk5lZWRlZChlbGVtZW50KTsKQEAg
LTYxOTgsNyArNjE5OCw3IEBAIHZvaWQgV2ViUGFnZTo6ZWxlbWVudERpZEZvY3VzKFdlYkNvcmU6
OkVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICAgICAgbV9mb3JtQ2xpZW50LT53aWxsQmVnaW5JbnB1
dFNlc3Npb24odGhpcywgJmVsZW1lbnQsIFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCplbGVtZW50
LmRvY3VtZW50KCkuZnJhbWUoKSksIG1fdXNlcklzSW50ZXJhY3RpbmcsIHVzZXJEYXRhKTsKIAot
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVsZW1lbnREaWRGb2N1cyhpbmZv
cm1hdGlvbi52YWx1ZSgpLCBtX3VzZXJJc0ludGVyYWN0aW5nLCBtX3JlY2VudGx5Qmx1cnJlZEVs
ZW1lbnQsIG1fbGFzdEFjdGl2aXR5U3RhdGVDaGFuZ2VzLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQo
KSkpKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFbGVtZW50RGlkRm9j
dXMoaW5mb3JtYXRpb24udmFsdWUoKSwgbV91c2VySXNJbnRlcmFjdGluZywgbV9yZWNlbnRseUJs
dXJyZWRFbGVtZW50LCBvcHRpb25zLnByZXZlbnRTY3JvbGwsIG1fbGFzdEFjdGl2aXR5U3RhdGVD
aGFuZ2VzLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3Rz
VG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKICNlbGlmIFBMQVRGT1JNKE1BQykK
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2FuIGJlIHVuaWZpZWQgd2l0aCB0aGUgaU9TIGNvZGUg
YWJvdmUgYnkgYnJpbmdpbmcgRWxlbWVudERpZEZvY3VzIHRvIG1hY09TLgogICAgICAgICAvLyBU
aGlzIGFsc28gZG9lc24ndCB0YWtlIG90aGVyIG5vbmVkaXRhYmxlIGNvbnRyb2xzIGludG8gYWNj
b3VudCwgc3VjaCBhcyBpbnB1dCB0eXBlIGNvbG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDUxMTdhYzc4YWEwZWQ3YzNlYjI3MTczZDFjZmExOTlk
OGMxYjUyMDYuLjlhYWIwZTM4MzU5MDhiMWIwNDZlZDRhZjM3Njc2ZjA0ZDU5N2VhMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTczMyw4ICs3MzMs
OCBAQCBwdWJsaWM6CiAgICAgTWVkaWFLZXlTeXN0ZW1QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIm
IG1lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkgeyByZXR1cm4gbV9tZWRp
YUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsgfQogI2VuZGlmCiAKLSAgICB2b2lk
IGVsZW1lbnREaWRGb2N1cyhXZWJDb3JlOjpFbGVtZW50Jik7Ci0gICAgdm9pZCBlbGVtZW50RGlk
UmVmb2N1cyhXZWJDb3JlOjpFbGVtZW50Jik7CisgICAgdm9pZCBlbGVtZW50RGlkRm9jdXMoV2Vi
Q29yZTo6RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OkZvY3VzT3B0aW9ucyYpOworICAgIHZvaWQg
ZWxlbWVudERpZFJlZm9jdXMoV2ViQ29yZTo6RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OkZvY3Vz
T3B0aW9ucyYpOwogICAgIHZvaWQgZWxlbWVudERpZEJsdXIoV2ViQ29yZTo6RWxlbWVudCYpOwog
ICAgIHZvaWQgZm9jdXNlZEVsZW1lbnREaWRDaGFuZ2VJbnB1dE1vZGUoV2ViQ29yZTo6RWxlbWVu
dCYsIFdlYkNvcmU6OklucHV0TW9kZSk7CiAgICAgdm9pZCByZXNldEZvY3VzZWRFbGVtZW50Rm9y
RnJhbWUoV2ViRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmgKaW5kZXggMDI4ZjlkNmNiMWI3
ZDgyMWI1ZjFiNzVlMzNkM2NkNmU2M2IyODhmZS4uNTFhNTUwY2NhMjFhMGU2ODY1ODhkNTA5MGZj
NzQ5NTkzYzUyYmJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmgKQEAgLTc5LDcgKzc5LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHN1cHByZXNzRm9ybU5vdGlmaWNhdGlvbnMoKSBmaW5hbDsKICAg
ICB2b2lkIHJlc3RvcmVGb3JtTm90aWZpY2F0aW9ucygpIGZpbmFsOwogCi0gICAgdm9pZCBlbGVt
ZW50RGlkRm9jdXMoV2ViQ29yZTo6RWxlbWVudCYpIGZpbmFsOworICAgIHZvaWQgZWxlbWVudERp
ZEZvY3VzKFdlYkNvcmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpGb2N1c09wdGlvbnMmKSBm
aW5hbDsKICAgICB2b2lkIGVsZW1lbnREaWRCbHVyKFdlYkNvcmU6OkVsZW1lbnQmKSBmaW5hbDsK
IAogICAgIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUmLCBXZWJD
b3JlOjpHcmFwaGljc0xheWVyKikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0KaW5kZXgg
MDY4NzAzMjY2ZmRiNzU2NzNiMTQwYTAxNWJhYTQ5NTQ1ZWFiYjczYy4uNWVmODg4YTNiMTdjNDMx
NWMxM2YyNWI0OThhYzY1ODkyNDk0MGUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQpAQCAt
MjczLDcgKzI3Myw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50SU9TOjpyZXN0b3JlRm9ybU5vdGlm
aWNhdGlvbnMoKQogICAgICAgICBtX2Zvcm1Ob3RpZmljYXRpb25TdXBwcmVzc2lvbnMgPSAwOwog
fQogCi12b2lkIFdlYkNocm9tZUNsaWVudElPUzo6ZWxlbWVudERpZEZvY3VzKFdlYkNvcmU6OkVs
ZW1lbnQmIGVsZW1lbnQpCit2b2lkIFdlYkNocm9tZUNsaWVudElPUzo6ZWxlbWVudERpZEZvY3Vz
KFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OkZvY3VzT3B0aW9ucyYp
CiB7CiAgICAgaWYgKG1fZm9ybU5vdGlmaWNhdGlvblN1cHByZXNzaW9ucyA8PSAwKQogICAgICAg
ICBbW3dlYlZpZXcoKSBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3KCkg
ZWxlbWVudERpZEZvY3VzTm9kZTpraXQoJmVsZW1lbnQpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXgg
ODIyMzc4ZjQwNjNmMGJhZjMwNDhjZDMwMGNhNjQyMjI4M2RlODBiOS4uY2YzY2VmNWI3YTYyZTE5
OTk0MGMxMmRhNzQwN2QzMzBmMGYyZmUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE3Niw3ICsx
NzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCkgZmlu
YWw7CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIGVsZW1lbnREaWRGb2N1
cyhXZWJDb3JlOjpFbGVtZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBlbGVtZW50RGlkRm9jdXMo
V2ViQ29yZTo6RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OkZvY3VzT3B0aW9ucyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZWxlbWVudERpZEJsdXIoV2ViQ29yZTo6RWxlbWVudCYpIG92ZXJyaWRlOwog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCAzNjM0ZjdhNjAyMTQ2MTllY2ZlYWYwYWVk
OWViZmNlNzIxMGYxYTFhLi5hYzMzY2UxNzVkMGQ0N2NjZmEzYTIyMzE0MDYwMzdmNzMyNTY3Yjc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC04NDksNyArODQ5LDcgQEAgdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OmRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpCiB9CiAKICNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbGVtZW50RGlkRm9jdXMoV2ViQ29yZTo6
RWxlbWVudCYgZWxlbWVudCkKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbGVtZW50RGlkRm9jdXMo
V2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6Rm9jdXNPcHRpb25zJikK
IHsKICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmZvcm1E
aWRGb2N1c05vZGU6KSwga2l0KCZlbGVtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTAxNDA1YzlmODJmN2Qw
OWU1ZWYwMDQxNTg4YjEwYjkwMGYxN2RkZi4uNzk5NmZjYzNiNDc5M2E1M2QwMDZlZmRjM2E1OGM2
M2RmYTM3MzQxZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIyLTAyLTI4ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIGZvY3VzKHtwcmV2ZW50U2Ny
b2xsOiB0cnVlfSkgZG9lcyBub3QgcHJldmVudCBzY3JvbGxpbmcgb24gaU9TCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1ODQKKyAgICAgICAgcmRh
cjovLzg4OTExMTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGEgY291cGxlIG9mIG5ldyBsYXlvdXQgdGVzdHMgdG8gdmVyaWZ5IHRoYXQgcGFz
c2luZyBpbiBgeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH1gIGZvciBmb2N1cyBvcHRpb25zIGNhdXNl
cworICAgICAgICB1cyB0byBhdm9pZCBzY3JvbGxpbmcgdG8gcmV2ZWFsIGZvY3VzZWQgc2VsZWN0
IGVsZW1lbnRzIGFuZCB0ZXh0IGZpZWxkcy4KKworICAgICAgICAqIGZhc3QvZm9ybXMvc2VsZWN0
LWZvY3VzLXByZXZlbnQtc2Nyb2xsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9mb3Jtcy9zZWxlY3QtZm9jdXMtcHJldmVudC1zY3JvbGwuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mb3Jtcy90ZXh0LWZpZWxkLWZvY3VzLXByZXZlbnQtc2Nyb2xsLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy90ZXh0LWZpZWxkLWZvY3VzLXByZXZlbnQt
c2Nyb2xsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHJlc291cmNlcy91aS1oZWxwZXIuanM6CisK
KyAgICAgICAgQWxzbyBtYWtlIGl0IHNhZmUgdG8gY2FsbCBgd2FpdEZvcklucHV0U2Vzc2lvblRv
RGlzbWlzcygpYCBpbiBhIHBsYXRmb3JtLWFnbm9zdGljIHRlc3QsIGJ5IGJhaWxpbmcgZWFybHkg
aWYKKyAgICAgICAgd2UncmUgbm90IG9uIGlPUywgdXNpbmcgV2ViS2l0Mi4KKwogMjAyMi0wMi0y
NyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbY3Nz
LWdyaWRdIFNldCBoYXNJbnRyaW5zaWNXaWR0aCAmIGhhc0ludHJpbnNpY0hlaWdodCBwcm9wZXJ0
aWVzIGZvciBTVkcgZWxlbWVudCdzIGludHJpbnNpYyBzaXplCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1mb2N1cy1wcmV2ZW50LXNjcm9sbC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1mb2N1cy1wcmV2ZW50LXNjcm9sbC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uM2QzYWY5Mjg1ZWU4ZjcyN2EwMTQ4Y2U0MGM5OTA5YTVhY2Uw
ZTc2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LWZv
Y3VzLXByZXZlbnQtc2Nyb2xsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitWZXJpZmll
cyB0aGF0IHByb2dyYW1tYXRpY2FsbHkgZm9jdXNpbmcgYSBzZWxlY3QgZWxlbWVudCB3aXRoIHBy
ZXZlbnRTY3JvbGw6IHRydWUgZG9lcyBub3QgY2F1c2UgdGhlIHBhZ2UgdG8gc2Nyb2xsLiBUbyBy
dW4gdGhlIHRlc3QgbWFudWFsbHksIHRhcCBvciBjbGljayB0aGUgYnV0dG9uIGFuZCBjaGVjayB0
aGF0IHRoZSBwYWdlIGRvZXMgbm90IHNjcm9sbCB0byB0aGUgYm90dG9tLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGlzIHNlbGVj
dAorUEFTUyBwYWdlWU9mZnNldCBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKK0ZvY3VzIHNlbGVjdAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3NlbGVjdC1mb2N1cy1wcmV2ZW50LXNjcm9sbC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9zZWxlY3QtZm9jdXMtcHJldmVudC1zY3JvbGwuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mZDhkYWJmMTYxOGIzODEyYTMxZjM2NGE2MjA1ODFkMWY4MGY3MzA1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtZm9jdXMtcHJldmVudC1zY3JvbGwu
aHRtbApAQCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1
bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwt
c2NhbGU9MSI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0
PgorPHN0eWxlPgorYnV0dG9uIHsKKyAgICBtYXJnaW4tYm90dG9tOiA4MDAwcHg7Cit9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdj48YnV0dG9uIGlkPSJmb2N1cyI+Rm9jdXMg
PGNvZGU+c2VsZWN0PC9jb2RlPjwvYnV0dG9uPjwvZGl2PgorICAgIDxzZWxlY3QgbmFtZT0ic2Vs
ZWN0Ij4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMSI+Rmlyc3Q8L29wdGlvbj4KKyAgICAgICAg
PG9wdGlvbiB2YWx1ZT0iMiI+U2Vjb25kPC9vcHRpb24+CisgICAgPC9zZWxlY3Q+Cis8L2JvZHk+
Cis8c2NyaXB0PgoranNUZXN0SXNBc3luYyA9IHRydWU7CitkZXNjcmlwdGlvbigiVmVyaWZpZXMg
dGhhdCBwcm9ncmFtbWF0aWNhbGx5IGZvY3VzaW5nIGEgc2VsZWN0IGVsZW1lbnQgd2l0aCA8Y29k
ZT5wcmV2ZW50U2Nyb2xsOiB0cnVlPC9jb2RlPiBkb2VzIG5vdCBjYXVzZSB0aGUgcGFnZSB0byBz
Y3JvbGwuIFRvIHJ1biB0aGUgdGVzdCBtYW51YWxseSwgdGFwIG9yIGNsaWNrIHRoZSBidXR0b24g
YW5kIGNoZWNrIHRoYXQgdGhlIHBhZ2UgZG9lcyBub3Qgc2Nyb2xsIHRvIHRoZSBib3R0b20uIik7
CisKK2xldCBmb2N1c0J1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmb2N1cyIpOwor
c2VsZWN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2VsZWN0Iik7CisKK2ZvY3VzQnV0dG9u
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZXZlbnQgPT4geworICAgIGV2ZW50LnByZXZlbnRE
ZWZhdWx0KCk7CisgICAgc2VsZWN0LmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTsKKyAg
ICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIGNoZWNrU2Nyb2xsT2Zmc2V0QW5k
Rm9jdXNlZEVsZW1lbnQoKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorfSk7CisK
K2Z1bmN0aW9uIGNoZWNrU2Nyb2xsT2Zmc2V0QW5kRm9jdXNlZEVsZW1lbnQoKSB7CisgICAgc2hv
dWxkQmUoImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQiLCAic2VsZWN0Iik7CisgICAgc2hvdWxkQmUo
InBhZ2VZT2Zmc2V0IiwgIjAiKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGFzeW5j
ICgpID0+IHsKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9u
KGZvY3VzQnV0dG9uKTsKKyAgICBzaG91bGRCZSgiZG9jdW1lbnQuYWN0aXZlRWxlbWVudCIsICJz
ZWxlY3QiKTsKKyAgICBzaG91bGRCZSgicGFnZVlPZmZzZXQiLCAiMCIpOworICAgIGRvY3VtZW50
LmFjdGl2ZUVsZW1lbnQuYmx1cigpOworICAgIGF3YWl0IFVJSGVscGVyLndhaXRGb3JJbnB1dFNl
c3Npb25Ub0Rpc21pc3MoKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOworPC9zY3JpcHQ+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHQtZmllbGQtZm9j
dXMtcHJldmVudC1zY3JvbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90
ZXh0LWZpZWxkLWZvY3VzLXByZXZlbnQtc2Nyb2xsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
M2QyNGI3ODc4NDA5NTdiZjM4M2RmMTI1NzIxNWQ0YmNhOTVmODU5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0LWZpZWxkLWZvY3VzLXByZXZlbnQtc2Nyb2xs
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitWZXJpZmllcyB0aGF0IHByb2dyYW1tYXRp
Y2FsbHkgZm9jdXNpbmcgYW4gaW5wdXQgZWxlbWVudCB3aXRoIHByZXZlbnRTY3JvbGw6IHRydWUg
ZG9lcyBub3QgY2F1c2UgdGhlIHBhZ2UgdG8gc2Nyb2xsLiBUbyBydW4gdGhlIHRlc3QgbWFudWFs
bHksIHRhcCBvciBjbGljayB0aGUgYnV0dG9uIGFuZCBjaGVjayB0aGF0IHRoZSBwYWdlIGRvZXMg
bm90IHNjcm9sbCB0byB0aGUgYm90dG9tLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGlzIGlucHV0CitQQVNTIHBhZ2VZT2Zmc2V0
IGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
Rm9jdXMgaW5wdXQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0LWZp
ZWxkLWZvY3VzLXByZXZlbnQtc2Nyb2xsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Rl
eHQtZmllbGQtZm9jdXMtcHJldmVudC1zY3JvbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzZjMmRhZDNl
NDhhNzc5Y2YyN2RjMjFlZmYzZjQ3YTUyMDExNDEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy90ZXh0LWZpZWxkLWZvY3VzLXByZXZlbnQtc2Nyb2xsLmh0bWwKQEAg
LTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1
c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1l
PSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEi
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHls
ZT4KK2J1dHRvbiB7CisgICAgbWFyZ2luLWJvdHRvbTogODAwMHB4OworfQorPC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorICAgIDxkaXY+PGJ1dHRvbiBpZD0iZm9jdXMiPkZvY3VzIDxjb2RlPmlu
cHV0PC9jb2RlPjwvYnV0dG9uPjwvZGl2PgorICAgIDxpbnB1dCBwbGFjZWhvbGRlcj0iVGV4dCBm
aWVsZCI+Cis8L2JvZHk+Cis8c2NyaXB0PgoranNUZXN0SXNBc3luYyA9IHRydWU7CitkZXNjcmlw
dGlvbigiVmVyaWZpZXMgdGhhdCBwcm9ncmFtbWF0aWNhbGx5IGZvY3VzaW5nIGFuIGlucHV0IGVs
ZW1lbnQgd2l0aCA8Y29kZT5wcmV2ZW50U2Nyb2xsOiB0cnVlPC9jb2RlPiBkb2VzIG5vdCBjYXVz
ZSB0aGUgcGFnZSB0byBzY3JvbGwuIFRvIHJ1biB0aGUgdGVzdCBtYW51YWxseSwgdGFwIG9yIGNs
aWNrIHRoZSBidXR0b24gYW5kIGNoZWNrIHRoYXQgdGhlIHBhZ2UgZG9lcyBub3Qgc2Nyb2xsIHRv
IHRoZSBib3R0b20uIik7CisKK2xldCBmb2N1c0J1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJmb2N1cyIpOworaW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbnB1dCIpOwor
Citmb2N1c0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGV2ZW50ID0+IHsKKyAgICBl
dmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgIGlucHV0LmZvY3VzKHsgcHJldmVudFNjcm9sbDog
dHJ1ZSB9KTsKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIGNoZWNrU2Ny
b2xsT2Zmc2V0QW5kRm9jdXNlZEVsZW1lbnQoKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgfQorfSk7CisKK2Z1bmN0aW9uIGNoZWNrU2Nyb2xsT2Zmc2V0QW5kRm9jdXNlZEVsZW1lbnQo
KSB7CisgICAgc2hvdWxkQmUoImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQiLCAiaW5wdXQiKTsKKyAg
ICBzaG91bGRCZSgicGFnZVlPZmZzZXQiLCAiMCIpOworfQorCithZGRFdmVudExpc3RlbmVyKCJs
b2FkIiwgYXN5bmMgKCkgPT4geworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJ
bnB1dFNlc3Npb24oZm9jdXNCdXR0b24pOworICAgIGNoZWNrU2Nyb2xsT2Zmc2V0QW5kRm9jdXNl
ZEVsZW1lbnQoKTsKKyAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTsKKyAgICBhd2Fp
dCBVSUhlbHBlci53YWl0Rm9ySW5wdXRTZXNzaW9uVG9EaXNtaXNzKCk7CisgICAgZmluaXNoSlNU
ZXN0KCk7Cit9KTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cmVzb3VyY2VzL3VpLWhlbHBlci5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIu
anMKaW5kZXggYWM2M2NhZTU4ZDk1ZGM5YmExNjZlNzcxNjY1N2NkNGE4NTU3NDVmOC4uNDU3YjQ3
ZTY3NTA5YTQ4ZTEwOTY4ZjVmYmVjYmZkMGJhYTNlNWUxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcworKysgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWkt
aGVscGVyLmpzCkBAIC01OTEsNiArNTkxLDkgQEAgd2luZG93LlVJSGVscGVyID0gY2xhc3MgVUlI
ZWxwZXIgewogCiAgICAgc3RhdGljIHdhaXRGb3JJbnB1dFNlc3Npb25Ub0Rpc21pc3MoKQogICAg
IHsKKyAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8ICF0aGlzLmlzSU9TRmFtaWx5KCkp
CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisKICAgICAgICAgcmV0dXJu
IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewogICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNj
cmlwdChgCiAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uKCkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453452</attachid>
            <date>2022-02-28 17:36:25 -0800</date>
            <delta_ts>2022-02-28 17:43:37 -0800</delta_ts>
            <desc>v2</desc>
            <filename>bug-236584-20220228173625.patch</filename>
            <type>text/plain</type>
            <size>28305</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM4NjY2NzM5OGE2YWU3
NDE3M2MzNGVjZWM4MWI4OGNmYTYyNjlhNC4uZGY2OGY5YTQ4YTllNWQxMGI3NzE3NDYyN2FjNDU5
ZDNkYWI1OWYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIyLTAyLTI4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIGZvY3VzKHtwcmV2
ZW50U2Nyb2xsOiB0cnVlfSkgZG9lcyBub3QgcHJldmVudCBzY3JvbGxpbmcgb24gaU9TCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1ODQKKyAgICAg
ICAgcmRhcjovLzg4OTExMTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgor
CisgICAgICAgIFBsdW1iIGBGb2N1c09wdGlvbnNgIHRocm91Z2ggYEVsZW1lbnQ6OmRpc3BhdGNo
Rm9jdXNFdmVudCgpYCBhcyB3ZWxsIGFzIHRoZSBjaHJvbWUgY2xpZW50IGhvb2tzIGZvcgorICAg
ICAgICBgZWxlbWVudERpZFJlZm9jdXNgIGFuZCBgZWxlbWVudERpZEZvY3VzYCwgaW5zdGVhZCBv
ZiBqdXN0IGEgYEZvY3VzRGlyZWN0aW9uYCBmbGFnLgorCisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRGb2N1c2VkRWxlbWVudCk6Cisg
ICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Zm9j
dXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KToKKyAg
ICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNF
dmVudCk6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCk6CisgICAgICAgICog
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAqIGxvYWRlci9FbXB0
eUNsaWVudHMuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50OjplbGVtZW50RGlkRm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50OjplbGVtZW50RGlkUmVmb2N1cyk6CisgICAgICAgICogcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hFdmVudHNPbldpbmRvd0Fu
ZEZvY3VzZWRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6c2V0
Rm9jdXNlZEVsZW1lbnQpOgorCiAyMDIyLTAyLTI4ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbRmxleGJveF0gQWRkIG9wdGlvbnMg
dG8gc2hvdyBlYWNoIGFyZWEncyBDU1MgYG9yZGVyYCBhbmQvb3IgRE9NIGluZGV4IGluIHRoZSBw
YXJlbnQgZmxleCBjb250YWluZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMWZmYTUwZWIyOGY5NjIwZDBiZGM2MTBj
YjBlYTBlZDU1Y2RmOWUzNC4uNmNhNmRhZjc4ODc3ZjhkOTNkYTNmNGRlZWVjNzQ3NGEyNDgyZDZj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAyMi0wMi0yOCAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBmb2N1cyh7cHJldmVudFNjcm9sbDog
dHJ1ZX0pIGRvZXMgbm90IHByZXZlbnQgc2Nyb2xsaW5nIG9uIGlPUworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTg0CisgICAgICAgIHJkYXI6Ly84
ODkxMTE4NAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBB
ZGQgc3VwcG9ydCBmb3IgYHByZXZlbnRTY3JvbGxgIG9uIGlPUyBieSBhdm9pZGluZyBVSS1zaWRl
IHpvb21pbmcvc2Nyb2xsaW5nIHRvIHJldmVhbCB0aGUgZm9jdXNlZCBlbGVtZW50IGlmIGl0Cisg
ICAgICAgIHdhcyBmb2N1c2VkIHdpdGggYHByZXZlbnRTY3JvbGw6IHRydWVgLiBTZWUgYmVsb3cg
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICBUZXN0czogZmFzdC9mb3Jtcy9zZWxlY3QtZm9j
dXMtcHJldmVudC1zY3JvbGwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy90ZXh0LWZp
ZWxkLWZvY3VzLXByZXZlbnQtc2Nyb2xsLmh0bWwKKworICAgICAgICAqIFNoYXJlZC9Gb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Rm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvRm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbi5oOgorCisgICAgICAgIEFkZCBhIGJvb2xlYW4gZmxhZyB0byBgRm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbmAgdG8gaW5kaWNhdGUgd2hldGhlciBvciBub3Qgc2Nyb2xsaW5nIHRv
IHJldmVhbCB0aGUgZm9jdXNlZAorICAgICAgICBlbGVtZW50IHNob3VsZCBiZSBwcmV2ZW50ZWQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfem9vbVRvUmV2ZWFsRm9jdXNlZEVsZW1lbnRdKToK
KworICAgICAgICBPbmx5IHpvb20gdG8gcmV2ZWFsIHRoZSBmb2N1c2VkIGVsZW1lbnQgaWYgdGhl
IGZvY3VzZWQgZWxlbWVudCBpbmZvcm1hdGlvbidzIGBwcmV2ZW50U2Nyb2xsYCBmbGFnIGlzIGBO
T2AuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZWxlbWVudERpZEJsdXJdKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZWxlbWVudERpZEZvY3VzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjplbGVtZW50RGlkUmVmb2N1cyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmVsZW1lbnREaWRSZWZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZWxlbWVudERp
ZEZvY3VzKToKKworICAgICAgICBVc2UgYEZvY3VzT3B0aW9uc2AgdG8gc2V0IHRoZSBgcHJldmVu
dFNjcm9sbGAgZmxhZyB3aGVuIHByb3BhZ2F0aW5nIGBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
YC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMjItMDIt
MjggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZG9wdCB0aGUg
bW9kZXJuIEhhc2hlciBtb3JlIHdpZGVseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4
IGY3NzEzMGZmNzllZTdmMmNmNDRhYjIyZWEwZmMxMjc0NzQwOWVhMTIuLjVkZWY3ZDc4ZTllMThm
MDUwMTEyMmVmOTQ0YWY3M2U5MjBkYjQwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMi0yOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KKworICAgICAgICBmb2N1cyh7cHJldmVudFNjcm9sbDogdHJ1ZX0pIGRvZXMg
bm90IHByZXZlbnQgc2Nyb2xsaW5nIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTg0CisgICAgICAgIHJkYXI6Ly84ODkxMTE4NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBBZGp1c3QgdGhlIG1l
dGhvZCBzaWduYXR1cmUgb2YgZWxlbWVudERpZEZvY3VzLiBTZWUgV2ViQ29yZSBDaGFuZ2VMb2cg
Zm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnRJT1MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJ
T1MubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnRJT1M6OmVsZW1lbnREaWRGb2N1cyk6CisK
IDIwMjEtMTAtMjIgIElhbiBBbmRlcnNvbiAgPGlhbmFAYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBhIG1vZHVsZSBtYXAgZmlsZSBmb3IgUHJpdmF0ZUZyYW1ld29ya3MvV2ViS2l0TGVnYWN5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjBiMmU3NTg1N2I1MGRmNGYwNmJmMTY1NjQx
MDcxYjkxNzI3NGI0YS4uNzUwMzRiMDBmODZhMWJjNzlkNTI1N2UwYzIwZGRhZDIzMjUzYjAyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTAyLTI4
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIGZvY3Vz
KHtwcmV2ZW50U2Nyb2xsOiB0cnVlfSkgZG9lcyBub3QgcHJldmVudCBzY3JvbGxpbmcgb24gaU9T
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1ODQK
KyAgICAgICAgcmRhcjovLzg4OTExMTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJh
c2VyLgorCisgICAgICAgIEFkanVzdCB0aGUgbWV0aG9kIHNpZ25hdHVyZSBvZiBlbGVtZW50RGlk
Rm9jdXMuIFNlZSBXZWJDb3JlIENoYW5nZUxvZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6
ZWxlbWVudERpZEZvY3VzKToKKwogMjAyMi0wMi0yNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnZva2luZyAiTWFya3VwIEltYWdlIiBzaG91bGQg
cHJlc2VydmUgdGhlIGV4aXN0aW5nIHNlbGVjdGlvbiByYW5nZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggMjI0NjMyM2YzNWI5ZTg2YWI3MjAxNDBiMTc3Njk3Y2Y4MGIwMGFmZS4uYzM5YzFl
Y2E2MmY1YzQ5YzY3MTBlODU2YTg2ZGE0NWE4NTc0MTE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC00NzEzLDcgKzQ3MTMsNyBAQCBib29sIERvY3VtZW50OjpzZXRGb2N1c2VkRWxlbWVu
dChFbGVtZW50KiBlbGVtZW50LCBjb25zdCBGb2N1c09wdGlvbnMmIG9wdGlvbnMpCiAgICAgICAg
IH0KIAogICAgICAgICAvLyBEaXNwYXRjaCB0aGUgZm9jdXMgZXZlbnQgYW5kIGxldCB0aGUgbm9k
ZSBkbyBhbnkgb3RoZXIgZm9jdXMgcmVsYXRlZCBhY3Rpdml0aWVzIChpbXBvcnRhbnQgZm9yIHRl
eHQgZmllbGRzKQotICAgICAgICBtX2ZvY3VzZWRFbGVtZW50LT5kaXNwYXRjaEZvY3VzRXZlbnQo
b2xkRm9jdXNlZEVsZW1lbnQuY29weVJlZigpLCBvcHRpb25zLmRpcmVjdGlvbik7CisgICAgICAg
IG1fZm9jdXNlZEVsZW1lbnQtPmRpc3BhdGNoRm9jdXNFdmVudChvbGRGb2N1c2VkRWxlbWVudC5j
b3B5UmVmKCksIG9wdGlvbnMpOwogCiAgICAgICAgIGlmIChtX2ZvY3VzZWRFbGVtZW50ICE9IG5l
d0ZvY3VzZWRFbGVtZW50KSB7CiAgICAgICAgICAgICAvLyBoYW5kbGVyIHNoaWZ0ZWQgZm9jdXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBjMDUwMjEyZTFjNWU5YWRmNzlhZDgwYzc5NDE2ZjIy
OTVkZDgxZDBhLi41ZWVmZTc5NWE0ZTYwNzJhNzdhMTMzOGJjZDU5NTU2MTNhZmY5MTgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zMDczLDcgKzMwNzMsNyBAQCB2b2lkIEVsZW1lbnQ6OmZv
Y3VzKGNvbnN0IEZvY3VzT3B0aW9ucyYgb3B0aW9ucykKICAgICBSZWYgZG9jdW1lbnQgeyB0aGlz
LT5kb2N1bWVudCgpIH07CiAgICAgaWYgKGRvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpID09IHRo
aXMpIHsKICAgICAgICAgaWYgKGRvY3VtZW50LT5wYWdlKCkpCi0gICAgICAgICAgICBkb2N1bWVu
dC0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5lbGVtZW50RGlkUmVmb2N1cygqdGhpcyk7Cisg
ICAgICAgICAgICBkb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5lbGVtZW50RGlk
UmVmb2N1cygqdGhpcywgb3B0aW9ucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMw
OTEsNyArMzA5MSw3IEBAIHZvaWQgRWxlbWVudDo6Zm9jdXMoY29uc3QgRm9jdXNPcHRpb25zJiBv
cHRpb25zKQogICAgICAgICBSZWZQdHIgY3VycmVudGx5Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVu
dC0+Zm9jdXNlZEVsZW1lbnQoKTsKICAgICAgICAgaWYgKHJvb3QtPmNvbnRhaW5zSW5jbHVkaW5n
U2hhZG93RE9NKGN1cnJlbnRseUZvY3VzZWRFbGVtZW50LmdldCgpKSkgewogICAgICAgICAgICAg
aWYgKGRvY3VtZW50LT5wYWdlKCkpCi0gICAgICAgICAgICAgICAgZG9jdW1lbnQtPnBhZ2UoKS0+
Y2hyb21lKCkuY2xpZW50KCkuZWxlbWVudERpZFJlZm9jdXMoKmN1cnJlbnRseUZvY3VzZWRFbGVt
ZW50KTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQo
KS5lbGVtZW50RGlkUmVmb2N1cygqY3VycmVudGx5Rm9jdXNlZEVsZW1lbnQsIG9wdGlvbnMpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTMyMDgsMTAgKzMyMDgsMTAgQEAg
dm9pZCBFbGVtZW50OjpkaXNwYXRjaEZvY3VzT3V0RXZlbnRJZk5lZWRlZChSZWZQdHI8RWxlbWVu
dD4mJiBuZXdGb2N1c2VkRWxlbWVudCkKICAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KEZvY3VzRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZm9jdXNvdXRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6
WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObywgZG9jdW1lbnQoKS53aW5kb3dQcm94eSgpLCAw
LCBXVEZNb3ZlKG5ld0ZvY3VzZWRFbGVtZW50KSkpOwogfQogCi12b2lkIEVsZW1lbnQ6OmRpc3Bh
dGNoRm9jdXNFdmVudChSZWZQdHI8RWxlbWVudD4mJiBvbGRGb2N1c2VkRWxlbWVudCwgRm9jdXNE
aXJlY3Rpb24pCit2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudChSZWZQdHI8RWxlbWVu
dD4mJiBvbGRGb2N1c2VkRWxlbWVudCwgY29uc3QgRm9jdXNPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmNo
cm9tZSgpLmNsaWVudCgpLmVsZW1lbnREaWRGb2N1cygqdGhpcyk7CisgICAgICAgIHBhZ2UtPmNo
cm9tZSgpLmNsaWVudCgpLmVsZW1lbnREaWRGb2N1cygqdGhpcywgb3B0aW9ucyk7CiAgICAgZGlz
cGF0Y2hFdmVudChGb2N1c0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmZvY3VzRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObywgZG9jdW1lbnQoKS53
aW5kb3dQcm94eSgpLCAwLCBXVEZNb3ZlKG9sZEZvY3VzZWRFbGVtZW50KSkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaAppbmRleCBmM2RiNjA0NDYwMDYyYWJiYzllMDVkM2IyMjk0NjJmMTM1YjcwODUw
Li5hNTI4ZDE3MDVlZGExYTIzZjVkOWYxMzNmN2YyNmZmNWUzZWE1ZjkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKQEAgLTU3NCw3ICs1NzQsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IENvbnNpZGVy
IGNoYW5naW5nIHNpZ25hdHVyZSB0byBhY2NlcHQgRWxlbWVudCogYmVjYXVzZSBhbGwgY2FsbGVy
cyBwZXJmb3JtIGNvcHlSZWYoKS4KICAgICB2b2lkIGRpc3BhdGNoRm9jdXNJbkV2ZW50SWZOZWVk
ZWQoUmVmUHRyPEVsZW1lbnQ+JiYgb2xkRm9jdXNlZEVsZW1lbnQpOwogICAgIHZvaWQgZGlzcGF0
Y2hGb2N1c091dEV2ZW50SWZOZWVkZWQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9jdXNlZEVsZW1l
bnQpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvY3VzRXZlbnQoUmVmUHRyPEVsZW1lbnQ+
JiYgb2xkRm9jdXNlZEVsZW1lbnQsIEZvY3VzRGlyZWN0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hGb2N1c0V2ZW50KFJlZlB0cjxFbGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50LCBj
b25zdCBGb2N1c09wdGlvbnMmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQo
UmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9jdXNlZEVsZW1lbnQpOwogICAgIHZvaWQgZGlzcGF0Y2hX
ZWJLaXRJbWFnZVJlYWR5RXZlbnRGb3JUZXN0aW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggNzJhZmUwNGUwN2Y4OWM4YzI0YWYzZjhiOGNhZDM4
Y2UyOTZhOGQwMy4uNmUwYWI1MWMwMzE5OTZjNWE3ZjMwZWU0MWRjYzVjZjVlMmVmOTRlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTk0OSwxMyArOTQ5
LDEzIEBAIGludCBIVE1MU2VsZWN0RWxlbWVudDo6bGlzdFRvT3B0aW9uSW5kZXgoaW50IGxpc3RJ
bmRleCkgY29uc3QKICAgICByZXR1cm4gb3B0aW9uSW5kZXg7CiB9CiAKLXZvaWQgSFRNTFNlbGVj
dEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudChSZWZQdHI8RWxlbWVudD4mJiBvbGRGb2N1c2Vk
RWxlbWVudCwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQordm9pZCBIVE1MU2VsZWN0RWxlbWVu
dDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KFJlZlB0cjxFbGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50
LCBjb25zdCBGb2N1c09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gU2F2ZSB0aGUgc2VsZWN0
aW9uIHNvIGl0IGNhbiBiZSBjb21wYXJlZCB0byB0aGUgbmV3IHNlbGVjdGlvbiB3aGVuCiAgICAg
Ly8gZGlzcGF0Y2hpbmcgY2hhbmdlIGV2ZW50cyBkdXJpbmcgYmx1ciBldmVudCBkaXNwYXRjaC4K
ICAgICBpZiAodXNlc01lbnVMaXN0KCkpCiAgICAgICAgIHNhdmVMYXN0U2VsZWN0aW9uKCk7Ci0g
ICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlzcGF0Y2hGb2N1c0V2ZW50KFdU
Rk1vdmUob2xkRm9jdXNlZEVsZW1lbnQpLCBkaXJlY3Rpb24pOworICAgIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoRm9jdXNFdmVudChXVEZNb3ZlKG9sZEZvY3VzZWRF
bGVtZW50KSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmRpc3BhdGNo
Qmx1ckV2ZW50KFJlZlB0cjxFbGVtZW50PiYmIG5ld0ZvY3VzZWRFbGVtZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCmluZGV4IDlhNTcwNTY0OGQ3MGU1YmY0MGU0Njgw
YjBmMzUxNDAxMzQyNzM5ZGUuLmIxNDczMjA3ZTNlYjRhNzA3NDNmY2UzYjU5Njk2Yzc1ZmNmNGE5
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKQEAgLTExOSw3ICsx
MTksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2
ZW50KikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3QgZmlu
YWw7CiAKLSAgICB2b2lkIGRpc3BhdGNoRm9jdXNFdmVudChSZWZQdHI8RWxlbWVudD4mJiBvbGRG
b2N1c2VkRWxlbWVudCwgRm9jdXNEaXJlY3Rpb24pIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hG
b2N1c0V2ZW50KFJlZlB0cjxFbGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50LCBjb25zdCBGb2N1
c09wdGlvbnMmKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoQmx1ckV2ZW50KFJlZlB0cjxFbGVt
ZW50PiYmIG5ld0ZvY3VzZWRFbGVtZW50KSBmaW5hbDsKICAgICAKICAgICBib29sIGNhblN0YXJ0
U2VsZWN0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggOTY0Y2Mx
YTIxZDAzNTFlMDU5NWQ3YjdmZWJjODlmNjIxZmMwZjE5Yi4uMWQxZDZkMzhhMmExYzQzYWRkYzlj
YzEzM2ExYzBkZGVmZTY2MzkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTEyNSwxMiArMTI1LDEyIEBAIHZvaWQgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldEhvdmVyZWQoYm9vbCBvdmVyLCBTdHlsZTo6SW52
YWxpZGF0aW9uU2NvcGUKICAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoKTsKIH0KIAot
dm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KFJlZlB0
cjxFbGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50LCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24p
Cit2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQoUmVm
UHRyPEVsZW1lbnQ+JiYgb2xkRm9jdXNlZEVsZW1lbnQsIGNvbnN0IEZvY3VzT3B0aW9ucyYgb3B0
aW9ucykKIHsKICAgICBpZiAoc3VwcG9ydHNQbGFjZWhvbGRlcigpKQogICAgICAgICB1cGRhdGVQ
bGFjZWhvbGRlclZpc2liaWxpdHkoKTsKLSAgICBoYW5kbGVGb2N1c0V2ZW50KG9sZEZvY3VzZWRF
bGVtZW50LmdldCgpLCBkaXJlY3Rpb24pOwotICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRo
U3RhdGU6OmRpc3BhdGNoRm9jdXNFdmVudChXVEZNb3ZlKG9sZEZvY3VzZWRFbGVtZW50KSwgZGly
ZWN0aW9uKTsKKyAgICBoYW5kbGVGb2N1c0V2ZW50KG9sZEZvY3VzZWRFbGVtZW50LmdldCgpLCBv
cHRpb25zLmRpcmVjdGlvbik7CisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6
ZGlzcGF0Y2hGb2N1c0V2ZW50KFdURk1vdmUob2xkRm9jdXNlZEVsZW1lbnQpLCBvcHRpb25zKTsK
IH0KIAogdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQo
UmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9jdXNlZEVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggOTk4NmFjNTU0MDhlYmE3
MDNhNTc2MjI1MTgwZmYxZGZhNDZjOWVjYi4uZTBmNjU0YmU5MjM2MjQ5N2MwN2M2ZWZiNWQzMzhk
YmVmMWMyNWM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIHByaXZhdGU6CiAgICAgaW50IGNvbXB1
dGVTZWxlY3Rpb25FbmQoKSBjb25zdDsKICAgICBUZXh0RmllbGRTZWxlY3Rpb25EaXJlY3Rpb24g
Y29tcHV0ZVNlbGVjdGlvbkRpcmVjdGlvbigpIGNvbnN0OwogCi0gICAgdm9pZCBkaXNwYXRjaEZv
Y3VzRXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgb2xkRm9jdXNlZEVsZW1lbnQsIEZvY3VzRGlyZWN0
aW9uKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRm9jdXNFdmVudChSZWZQdHI8RWxlbWVudD4m
JiBvbGRGb2N1c2VkRWxlbWVudCwgY29uc3QgRm9jdXNPcHRpb25zJikgZmluYWw7CiAgICAgdm9p
ZCBkaXNwYXRjaEJsdXJFdmVudChSZWZQdHI8RWxlbWVudD4mJiBuZXdGb2N1c2VkRWxlbWVudCkg
ZmluYWw7CiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBj
b25zdCBvdmVycmlkZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRl
eCBjZDVmMjhmMTQ2MWU4YTJlNmFkYmMwZDAwZTU4ZGVlNTZkNGQwNzM4Li45ZGYyMDNlNTU5NDM0
N2IzMjY2MTk2MDhlNmM4MjMyMTEyODE3MWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oCkBAIC0xNTcsNyArMTU3LDcgQEAgY2xhc3MgRW1wdHlDaHJvbWVDbGllbnQgOiBwdWJs
aWMgQ2hyb21lQ2xpZW50IHsKICAgICB2b2lkIHNob3dTaGFyZVNoZWV0KFNoYXJlRGF0YVdpdGhQ
YXJzZWRVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICB2
b2lkIGxvYWRJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlSWNvbkxvYWRl
ciYpIGZpbmFsIHsgfQogCi0gICAgdm9pZCBlbGVtZW50RGlkRm9jdXMoRWxlbWVudCYpIGZpbmFs
IHsgfQorICAgIHZvaWQgZWxlbWVudERpZEZvY3VzKEVsZW1lbnQmLCBjb25zdCBGb2N1c09wdGlv
bnMmKSBmaW5hbCB7IH0KICAgICB2b2lkIGVsZW1lbnREaWRCbHVyKEVsZW1lbnQmKSBmaW5hbCB7
IH0KIAogICAgIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYpIGZpbmFsIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggNDQxOWVkNTU1MzA1MTkzOGI3NTgwMGJkZWViZDRm
NmI0NDczMDc4Yy4uOTVlYjZmNmM1MDQ4ODVjODY2N2FhNjAzMDJjZGUyNGExYTQ3NTIwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0xMzQsNiArMTM0LDcgQEAgc3RydWN0IENv
bnRhY3RzUmVxdWVzdERhdGE7CiBzdHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0czsKIHN0cnVj
dCBEYXRhRGV0ZWN0b3JFbGVtZW50SW5mbzsKIHN0cnVjdCBEYXRlVGltZUNob29zZXJQYXJhbWV0
ZXJzOworc3RydWN0IEZvY3VzT3B0aW9uczsKIHN0cnVjdCBHcmFwaGljc0RldmljZUFkYXB0ZXI7
CiBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKIHN0cnVjdCBTZWN1
cml0eU9yaWdpbkRhdGE7CkBAIC0zNDUsOSArMzQ2LDkgQEAgcHVibGljOgogICAgIC8vIEFzeW5j
aHJvbm91cyByZXF1ZXN0IHRvIGxvYWQgYW4gaWNvbiBmb3Igc3BlY2lmaWVkIGZpbGVuYW1lcy4K
ICAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IEZpbGVJY29uTG9hZGVyJikgPSAwOwogICAgICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZWxlbWVu
dERpZEZvY3VzKEVsZW1lbnQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZWxlbWVudERpZEZvY3Vz
KEVsZW1lbnQmLCBjb25zdCBGb2N1c09wdGlvbnMmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZWxl
bWVudERpZEJsdXIoRWxlbWVudCYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBlbGVtZW50RGlkUmVm
b2N1cyhFbGVtZW50JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGVsZW1lbnREaWRSZWZvY3VzKEVs
ZW1lbnQmLCBjb25zdCBGb2N1c09wdGlvbnMmKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBmb2N1
c2VkRWxlbWVudERpZENoYW5nZUlucHV0TW9kZShFbGVtZW50JiwgSW5wdXRNb2RlKSB7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IDkzM2JkYTY2MDVlYzlj
M2Y4NmI1ZDU4YmMzNTg4YWMyMTI4YjRmYWEuLmQ1YWM5MTEzZmU2YmQ0YWY1YzQzNTJiZTdiZWYx
MjRkOWZmMmEwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAg
LTMxMCw3ICszMTAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZGlzcGF0Y2hFdmVudHNPbldpbmRv
d0FuZEZvY3VzZWRFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgYgogICAgICAgICBkb2N1bWVu
dC0+Zm9jdXNlZEVsZW1lbnQoKS0+ZGlzcGF0Y2hCbHVyRXZlbnQobnVsbHB0cik7CiAgICAgZG9j
dW1lbnQtPmRpc3BhdGNoV2luZG93RXZlbnQoRXZlbnQ6OmNyZWF0ZShmb2N1c2VkID8gZXZlbnRO
YW1lcygpLmZvY3VzRXZlbnQgOiBldmVudE5hbWVzKCkuYmx1ckV2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICBpZiAoZm9jdXNlZCAmJiBk
b2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKSkKLSAgICAgICAgZG9jdW1lbnQtPmZvY3VzZWRFbGVt
ZW50KCktPmRpc3BhdGNoRm9jdXNFdmVudChudWxscHRyLCBGb2N1c0RpcmVjdGlvbjo6Tm9uZSk7
CisgICAgICAgIGRvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpLT5kaXNwYXRjaEZvY3VzRXZlbnQo
bnVsbHB0ciwgeyB9KTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGlzRm9jdXNhYmxlRWxlbWVu
dE9yU2NvcGVPd25lcihFbGVtZW50JiBlbGVtZW50LCBLZXlib2FyZEV2ZW50KiBldmVudCkKQEAg
LTgzNyw3ICs4MzcsNyBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZEVsZW1lbnQo
RWxlbWVudCogZWxlbWVudCwgRnJhbWUmIG5ld0ZvY3VzZWRGcmFtZQogICAgIEVsZW1lbnQqIG9s
ZEZvY3VzZWRFbGVtZW50ID0gb2xkRG9jdW1lbnQgPyBvbGREb2N1bWVudC0+Zm9jdXNlZEVsZW1l
bnQoKSA6IG51bGxwdHI7CiAgICAgaWYgKG9sZEZvY3VzZWRFbGVtZW50ID09IGVsZW1lbnQpIHsK
ICAgICAgICAgaWYgKGVsZW1lbnQpCi0gICAgICAgICAgICBtX3BhZ2UuY2hyb21lKCkuY2xpZW50
KCkuZWxlbWVudERpZFJlZm9jdXMoKmVsZW1lbnQpOworICAgICAgICAgICAgbV9wYWdlLmNocm9t
ZSgpLmNsaWVudCgpLmVsZW1lbnREaWRSZWZvY3VzKCplbGVtZW50LCBvcHRpb25zKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Gb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Zv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24uY3BwCmluZGV4IDYyNzQ0NzAxNGM5NWVmZTY4NjU1MDNk
MWM4MDdkYTdlOWEwMzE1ZjAuLmVjN2NlNWYxNThkYjVhNzkwMmMzZDkyODEyMmU3NjFjOGY3YzA1
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24uY3BwCkBAIC0xMTQsNiArMTE0LDcgQEAgdm9pZCBGb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwg
c2hvdWxkQXZvaWRTY3JvbGxpbmdXaGVuRm9jdXNlZENvbnRlbnRJc1Zpc2libGU7CiAgICAgZW5j
b2RlciA8PCBzaG91bGRVc2VMZWdhY3lTZWxlY3RQb3BvdmVyRGlzbWlzc2FsQmVoYXZpb3JJbkRh
dGFBY3RpdmF0aW9uOwogICAgIGVuY29kZXIgPDwgaXNGb2N1c2luZ1dpdGhWYWxpZGF0aW9uTWVz
c2FnZTsKKyAgICBlbmNvZGVyIDw8IHByZXZlbnRTY3JvbGw7CiB9CiAKIGJvb2wgRm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgRm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbiYgcmVzdWx0KQpAQCAtMjYyLDYgKzI2Myw5IEBAIGJvb2wgRm9jdXNl
ZEVsZW1lbnRJbmZvcm1hdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgRm9jdXNl
ZEVsZW1lbnRJbmZvCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaXNGb2N1c2luZ1dp
dGhWYWxpZGF0aW9uTWVzc2FnZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LnByZXZlbnRTY3JvbGwpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5oCmluZGV4IDkwODRhOGU1MGNkYjBhYTZm
Yzk2NzBhNDcxZjBhNDYxMTVhMDhiZjQuLjU3OTk0NjcyMjIyMGFjZDY3ZjU2OWE5NmFlZGQzNzEy
ZTQwOGNiMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZvY3VzZWRFbGVtZW50
SW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Gb2N1c2VkRWxlbWVudElu
Zm9ybWF0aW9uLmgKQEAgLTEzOCw2ICsxMzgsNyBAQCBzdHJ1Y3QgRm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbiB7CiAgICAgYm9vbCBzaG91bGRBdm9pZFNjcm9sbGluZ1doZW5Gb2N1c2VkQ29udGVu
dElzVmlzaWJsZSB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRVc2VMZWdhY3lTZWxlY3RQb3Bv
dmVyRGlzbWlzc2FsQmVoYXZpb3JJbkRhdGFBY3RpdmF0aW9uIHsgZmFsc2UgfTsKICAgICBib29s
IGlzRm9jdXNpbmdXaXRoVmFsaWRhdGlvbk1lc3NhZ2UgeyBmYWxzZSB9OworICAgIGJvb2wgcHJl
dmVudFNjcm9sbCB7IGZhbHNlIH07CiAKICAgICBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uSWRl
bnRpZmllciBpZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCBjb250YWlu
ZXJTY3JvbGxpbmdOb2RlSUQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA3YjQ3ODhjOTMzNzky
Y2I4OTQwMWZiZjQwNjI0YTViYTljNmMxNGVhLi5jM2Q5YTc1NjY3YTE1OTVmZmYwNWM5NjZiNjVj
YzhlZGM0ZWFjNzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTIzODksNiArMjM4OSw5IEBAIHN0YXRp
YyBOU1ZhbHVlICpuc1NpemVGb3JUYXBIaWdobGlnaHRCb3JkZXJSYWRpdXMoV2ViQ29yZTo6SW50
U2l6ZSBib3JkZXJSYWRpdXMsCiAKIC0gKHZvaWQpX3pvb21Ub1JldmVhbEZvY3VzZWRFbGVtZW50
CiB7CisgICAgaWYgKF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnByZXZlbnRTY3JvbGwpCisg
ICAgICAgIHJldHVybjsKKwogICAgIGlmIChfc3VwcHJlc3NTZWxlY3Rpb25Bc3Npc3RhbnRSZWFz
b25zIHx8IF9hY3RpdmVUZXh0SW50ZXJhY3Rpb25Db3VudCkKICAgICAgICAgcmV0dXJuOwogCkBA
IC02ODI3LDYgKzY4MzAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TT2JqZWN0IDxXS0Zvcm1QZXJp
cGhlcmFsPj4gY3JlYXRlSW5wdXRQZXJpcGhlcmFsV2l0aFZpZXcoV2ViSwogICAgIF9mb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uLnNob3VsZEF2b2lkU2Nyb2xsaW5nV2hlbkZvY3VzZWRDb250ZW50
SXNWaXNpYmxlID0gZmFsc2U7CiAgICAgX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uc2hvdWxk
VXNlTGVnYWN5U2VsZWN0UG9wb3ZlckRpc21pc3NhbEJlaGF2aW9ySW5EYXRhQWN0aXZhdGlvbiA9
IGZhbHNlOwogICAgIF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmlzRm9jdXNpbmdXaXRoVmFs
aWRhdGlvbk1lc3NhZ2UgPSBmYWxzZTsKKyAgICBfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5w
cmV2ZW50U2Nyb2xsID0gZmFsc2U7CiAgICAgX2lucHV0UGVyaXBoZXJhbCA9IG5pbDsKICAgICBf
Zm9jdXNSZXF1aXJlc1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZSA9IE5POwogICAgIF9hdXRvY29y
cmVjdGlvbkNvbnRleHROZWVkc1VwZGF0ZSA9IFlFUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5k
ZXggYzVmNDAzYTZkNDRkNTU0YjZiZTc5NGQxNjkwM2RkYzg3YzYyMmE3Ny4uMDVlM2YzZjFiOGQ0
Y2NkYTI1ZmQ3YjQ1NzUyNWUyM2M1YzI4MWYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAg
LTIxNCwxNCArMjE0LDE0IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp1bmZvY3VzKCkKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6ZWxlbWVudERpZEZvY3Vz
KEVsZW1lbnQmIGVsZW1lbnQpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6ZWxlbWVudERpZEZvY3Vz
KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEZvY3VzT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBt
X3BhZ2UuZWxlbWVudERpZEZvY3VzKGVsZW1lbnQpOworICAgIG1fcGFnZS5lbGVtZW50RGlkRm9j
dXMoZWxlbWVudCwgb3B0aW9ucyk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbGVtZW50
RGlkUmVmb2N1cyhFbGVtZW50JiBlbGVtZW50KQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OmVsZW1l
bnREaWRSZWZvY3VzKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEZvY3VzT3B0aW9ucyYgb3B0aW9u
cykKIHsKLSAgICBtX3BhZ2UuZWxlbWVudERpZFJlZm9jdXMoZWxlbWVudCk7CisgICAgbV9wYWdl
LmVsZW1lbnREaWRSZWZvY3VzKGVsZW1lbnQsIG9wdGlvbnMpOwogfQogCiB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6ZWxlbWVudERpZEJsdXIoRWxlbWVudCYgZWxlbWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAppbmRleCA3NzlkYTVhYzRmYmFkNWUwMGUyZGQ3YWYwY2RiMGJiY2NjNGNjMDZhLi4xNzRhYmRi
NmNkZjY4YTE2OGJmOTY0ZGYwNTNkODBiZWU1MmQ4MDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBA
IC0zMDYsOSArMzA2LDkgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgdm9pZCBlbGVtZW50RGlkRm9jdXMoV2ViQ29yZTo6RWxlbWVudCYpIGZpbmFsOworICAg
IHZvaWQgZWxlbWVudERpZEZvY3VzKFdlYkNvcmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpG
b2N1c09wdGlvbnMmKSBmaW5hbDsKICAgICB2b2lkIGVsZW1lbnREaWRCbHVyKFdlYkNvcmU6OkVs
ZW1lbnQmKSBmaW5hbDsKLSAgICB2b2lkIGVsZW1lbnREaWRSZWZvY3VzKFdlYkNvcmU6OkVsZW1l
bnQmKSBmaW5hbDsKKyAgICB2b2lkIGVsZW1lbnREaWRSZWZvY3VzKFdlYkNvcmU6OkVsZW1lbnQm
LCBjb25zdCBXZWJDb3JlOjpGb2N1c09wdGlvbnMmKSBmaW5hbDsKICAgICB2b2lkIGZvY3VzZWRF
bGVtZW50RGlkQ2hhbmdlSW5wdXRNb2RlKFdlYkNvcmU6OkVsZW1lbnQmLCBXZWJDb3JlOjpJbnB1
dE1vZGUpIGZpbmFsOwogCiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggODFlMzc2
MjIzN2I3MzBmNGE0MmY4ZGI1YTYzZjJkZmJkNjliMmVjZi4uMjRlNGEzZjA0YmE4YmY2MDk2Yjdh
MDVlZmU3Y2VhNWRmNjdjOTZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTYxNTEsOSArNjE1MSw5IEBAIHZvaWQgV2ViUGFnZTo6cmVzZXRG
b2N1c2VkRWxlbWVudEZvckZyYW1lKFdlYkZyYW1lKiBmcmFtZSkKICAgICB9CiB9CiAKLXZvaWQg
V2ViUGFnZTo6ZWxlbWVudERpZFJlZm9jdXMoV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkKK3Zv
aWQgV2ViUGFnZTo6ZWxlbWVudERpZFJlZm9jdXMoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgRm9j
dXNPcHRpb25zJiBvcHRpb25zKQogewotICAgIGVsZW1lbnREaWRGb2N1cyhlbGVtZW50KTsKKyAg
ICBlbGVtZW50RGlkRm9jdXMoZWxlbWVudCwgb3B0aW9ucyk7CiAKICAgICBpZiAobV91c2VySXNJ
bnRlcmFjdGluZykKICAgICAgICAgc2NoZWR1bGVGdWxsRWRpdG9yU3RhdGVVcGRhdGUoKTsKQEAg
LTYxNzYsNyArNjE3Niw3IEBAIHN0YXRpYyBib29sIGlzVGV4dEZvcm1Db250cm9sT3JFZGl0YWJs
ZUNvbnRlbnQoY29uc3QgV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gaXM8
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1lbnQpIHx8IGVsZW1lbnQuaGFzRWRpdGFi
bGVTdHlsZSgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmVsZW1lbnREaWRGb2N1cyhXZWJDb3JlOjpF
bGVtZW50JiBlbGVtZW50KQordm9pZCBXZWJQYWdlOjplbGVtZW50RGlkRm9jdXMoRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgRm9jdXNPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICghc2hvdWxk
RGlzcGF0Y2hVcGRhdGVBZnRlckZvY3VzaW5nRWxlbWVudChlbGVtZW50KSkgewogICAgICAgICB1
cGRhdGVJbnB1dENvbnRleHRBZnRlckJsdXJyaW5nQW5kUmVmb2N1c2luZ0VsZW1lbnRJZk5lZWRl
ZChlbGVtZW50KTsKQEAgLTYyMDQsNiArNjIwNCw3IEBAIHZvaWQgV2ViUGFnZTo6ZWxlbWVudERp
ZEZvY3VzKFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICAgICAgbV9mb3JtQ2xpZW50
LT53aWxsQmVnaW5JbnB1dFNlc3Npb24odGhpcywgJmVsZW1lbnQsIFdlYkZyYW1lOjpmcm9tQ29y
ZUZyYW1lKCplbGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKSksIG1fdXNlcklzSW50ZXJhY3Rpbmcs
IHVzZXJEYXRhKTsKIAorICAgICAgICBpbmZvcm1hdGlvbi0+cHJldmVudFNjcm9sbCA9IG9wdGlv
bnMucHJldmVudFNjcm9sbDsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpF
bGVtZW50RGlkRm9jdXMoaW5mb3JtYXRpb24udmFsdWUoKSwgbV91c2VySXNJbnRlcmFjdGluZywg
bV9yZWNlbnRseUJsdXJyZWRFbGVtZW50LCBtX2xhc3RBY3Rpdml0eVN0YXRlQ2hhbmdlcywgVXNl
ckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1
c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiAjZWxpZiBQTEFURk9STShNQUMpCiAgICAgICAgIC8v
IEZJWE1FOiBUaGlzIGNhbiBiZSB1bmlmaWVkIHdpdGggdGhlIGlPUyBjb2RlIGFib3ZlIGJ5IGJy
aW5naW5nIEVsZW1lbnREaWRGb2N1cyB0byBtYWNPUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA0NzI5YzA5OWE3MGIzMGE2NzJmMDBlOWNlOGIxODgx
NTYwYWJmODcyLi5jNWI2ZDkxNjdmMTA2NzQxNjM2M2Y1MmVjNzM1NzMzM2ViZmQ0MjEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC03MzQsOCArNzM0
LDggQEAgcHVibGljOgogICAgIE1lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
JiBtZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpIHsgcmV0dXJuIG1fbWVk
aWFLZXlTeXN0ZW1QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7IH0KICNlbmRpZgogCi0gICAgdm9p
ZCBlbGVtZW50RGlkRm9jdXMoV2ViQ29yZTo6RWxlbWVudCYpOwotICAgIHZvaWQgZWxlbWVudERp
ZFJlZm9jdXMoV2ViQ29yZTo6RWxlbWVudCYpOworICAgIHZvaWQgZWxlbWVudERpZEZvY3VzKFdl
YkNvcmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpGb2N1c09wdGlvbnMmKTsKKyAgICB2b2lk
IGVsZW1lbnREaWRSZWZvY3VzKFdlYkNvcmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpGb2N1
c09wdGlvbnMmKTsKICAgICB2b2lkIGVsZW1lbnREaWRCbHVyKFdlYkNvcmU6OkVsZW1lbnQmKTsK
ICAgICB2b2lkIGZvY3VzZWRFbGVtZW50RGlkQ2hhbmdlSW5wdXRNb2RlKFdlYkNvcmU6OkVsZW1l
bnQmLCBXZWJDb3JlOjpJbnB1dE1vZGUpOwogICAgIHZvaWQgcmVzZXRGb2N1c2VkRWxlbWVudEZv
ckZyYW1lKFdlYkZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oCmluZGV4IDAyOGY5ZDZjYjFi
N2Q4MjFiNWYxYjc1ZTMzZDNjZDZlNjNiMjg4ZmUuLjUxYTU1MGNjYTIxYTBlNjg2NTg4ZDUwOTBm
Yzc0OTU5M2M1MmJiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oCkBAIC03OSw3ICs3OSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzdXBwcmVzc0Zvcm1Ob3RpZmljYXRpb25zKCkgZmluYWw7CiAg
ICAgdm9pZCByZXN0b3JlRm9ybU5vdGlmaWNhdGlvbnMoKSBmaW5hbDsKIAotICAgIHZvaWQgZWxl
bWVudERpZEZvY3VzKFdlYkNvcmU6OkVsZW1lbnQmKSBmaW5hbDsKKyAgICB2b2lkIGVsZW1lbnRE
aWRGb2N1cyhXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6Rm9jdXNPcHRpb25zJikg
ZmluYWw7CiAgICAgdm9pZCBlbGVtZW50RGlkQmx1cihXZWJDb3JlOjpFbGVtZW50JikgZmluYWw7
CiAKICAgICB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKFdlYkNvcmU6OkZyYW1lJiwgV2Vi
Q29yZTo6R3JhcGhpY3NMYXllciopIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCmluZGV4
IDA2ODcwMzI2NmZkYjc1NjczYjE0MGEwMTViYWE0OTU0NWVhYmI3M2MuLjVlZjg4OGEzYjE3YzQz
MTVjMTNmMjViNDk4YWM2NTg5MjQ5NDBlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0KQEAg
LTI3Myw3ICsyNzMsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudElPUzo6cmVzdG9yZUZvcm1Ob3Rp
ZmljYXRpb25zKCkKICAgICAgICAgbV9mb3JtTm90aWZpY2F0aW9uU3VwcHJlc3Npb25zID0gMDsK
IH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnRJT1M6OmVsZW1lbnREaWRGb2N1cyhXZWJDb3JlOjpF
bGVtZW50JiBlbGVtZW50KQordm9pZCBXZWJDaHJvbWVDbGllbnRJT1M6OmVsZW1lbnREaWRGb2N1
cyhXZWJDb3JlOjpFbGVtZW50JiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpGb2N1c09wdGlvbnMm
KQogewogICAgIGlmIChtX2Zvcm1Ob3RpZmljYXRpb25TdXBwcmVzc2lvbnMgPD0gMCkKICAgICAg
ICAgW1t3ZWJWaWV3KCkgX1VJS2l0RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldygp
IGVsZW1lbnREaWRGb2N1c05vZGU6a2l0KCZlbGVtZW50KV07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4
IDgyMjM3OGY0MDYzZjBiYWYzMDQ4Y2QzMDBjYTY0MjIyODNkZTgwYjkuLmNmM2NlZjViN2E2MmUx
OTk5NDBjMTJkYTc0MDdkMzMwZjBmMmZlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xNzYsNyAr
MTc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpIGZp
bmFsOwogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCBlbGVtZW50RGlkRm9j
dXMoV2ViQ29yZTo6RWxlbWVudCYpIG92ZXJyaWRlOworICAgIHZvaWQgZWxlbWVudERpZEZvY3Vz
KFdlYkNvcmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpGb2N1c09wdGlvbnMmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGVsZW1lbnREaWRCbHVyKFdlYkNvcmU6OkVsZW1lbnQmKSBvdmVycmlkZTsK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggMzYzNGY3YTYwMjE0NjE5ZWNmZWFmMGFl
ZDllYmZjZTcyMTBmMWExYS4uYWMzM2NlMTc1ZDBkNDdjY2ZhM2EyMjMxNDA2MDM3ZjczMjU2N2I3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5tbQpAQCAtODQ5LDcgKzg0OSw3IEBAIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjpkaXNhYmxlU3VkZGVuVGVybWluYXRpb24oKQogfQogCiAjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCi12b2lkIFdlYkNocm9tZUNsaWVudDo6ZWxlbWVudERpZEZvY3VzKFdlYkNvcmU6
OkVsZW1lbnQmIGVsZW1lbnQpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6ZWxlbWVudERpZEZvY3Vz
KFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OkZvY3VzT3B0aW9ucyYp
CiB7CiAgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpmb3Jt
RGlkRm9jdXNOb2RlOiksIGtpdCgmZWxlbWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDkxMGNlOGU0MDlhMmUw
ZWY0YTAwNDA2Yzc3N2Q4NmM5YjMwNzQ1NWEuLmI3YTEyMDE5NWQwODkxMjVkZDFkNDVmYzIwYmI1
NTkyMWE5ZjcxMjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMi0wMi0yOCAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBmb2N1cyh7cHJldmVudFNj
cm9sbDogdHJ1ZX0pIGRvZXMgbm90IHByZXZlbnQgc2Nyb2xsaW5nIG9uIGlPUworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTg0CisgICAgICAgIHJk
YXI6Ly84ODkxMTE4NAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAg
ICAgICBBZGQgYSBjb3VwbGUgb2YgbmV3IGxheW91dCB0ZXN0cyB0byB2ZXJpZnkgdGhhdCBwYXNz
aW5nIGluIGB7IHByZXZlbnRTY3JvbGw6IHRydWUgfWAgZm9yIGZvY3VzIG9wdGlvbnMgY2F1c2Vz
CisgICAgICAgIHVzIHRvIGF2b2lkIHNjcm9sbGluZyB0byByZXZlYWwgZm9jdXNlZCBzZWxlY3Qg
ZWxlbWVudHMgYW5kIHRleHQgZmllbGRzLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9zZWxlY3Qt
Zm9jdXMtcHJldmVudC1zY3JvbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Zvcm1zL3NlbGVjdC1mb2N1cy1wcmV2ZW50LXNjcm9sbC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Zvcm1zL3RleHQtZmllbGQtZm9jdXMtcHJldmVudC1zY3JvbGwtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3RleHQtZmllbGQtZm9jdXMtcHJldmVudC1z
Y3JvbGwuaHRtbDogQWRkZWQuCisgICAgICAgICogcmVzb3VyY2VzL3VpLWhlbHBlci5qczoKKwor
ICAgICAgICBBbHNvIG1ha2UgaXQgc2FmZSB0byBjYWxsIGB3YWl0Rm9ySW5wdXRTZXNzaW9uVG9E
aXNtaXNzKClgIGluIGEgcGxhdGZvcm0tYWdub3N0aWMgdGVzdCwgYnkgYmFpbGluZyBlYXJseSBp
ZgorICAgICAgICB3ZSdyZSBub3Qgb24gaU9TLCB1c2luZyBXZWJLaXQyLgorCiAyMDIyLTAyLTI4
ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBhZGQgYEl0ZXJhYmxlV2Vha1NldGAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291
cmNlcy91aS1oZWxwZXIuanMgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCmlu
ZGV4IGFjNjNjYWU1OGQ5NWRjOWJhMTY2ZTc3MTY2NTdjZDRhODU1NzQ1ZjguLjQ1N2I0N2U2NzUw
OWE0OGUxMDk2OGY1ZmJlY2JmZDBiYWEzZTVlMTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Jl
c291cmNlcy91aS1oZWxwZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBl
ci5qcwpAQCAtNTkxLDYgKzU5MSw5IEBAIHdpbmRvdy5VSUhlbHBlciA9IGNsYXNzIFVJSGVscGVy
IHsKIAogICAgIHN0YXRpYyB3YWl0Rm9ySW5wdXRTZXNzaW9uVG9EaXNtaXNzKCkKICAgICB7Cisg
ICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKQorICAg
ICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworCiAgICAgICAgIHJldHVybiBuZXcg
UHJvbWlzZShyZXNvbHZlID0+IHsKICAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQo
YAogICAgICAgICAgICAgICAgIChmdW5jdGlvbigpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453453</attachid>
            <date>2022-02-28 17:43:41 -0800</date>
            <delta_ts>2022-03-01 07:17:22 -0800</delta_ts>
            <desc>Add missing tests</desc>
            <filename>bug-236584-20220228174340.patch</filename>
            <type>text/plain</type>
            <size>33829</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM4NjY2NzM5OGE2YWU3
NDE3M2MzNGVjZWM4MWI4OGNmYTYyNjlhNC4uZGY2OGY5YTQ4YTllNWQxMGI3NzE3NDYyN2FjNDU5
ZDNkYWI1OWYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIyLTAyLTI4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIGZvY3VzKHtwcmV2
ZW50U2Nyb2xsOiB0cnVlfSkgZG9lcyBub3QgcHJldmVudCBzY3JvbGxpbmcgb24gaU9TCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1ODQKKyAgICAg
ICAgcmRhcjovLzg4OTExMTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgor
CisgICAgICAgIFBsdW1iIGBGb2N1c09wdGlvbnNgIHRocm91Z2ggYEVsZW1lbnQ6OmRpc3BhdGNo
Rm9jdXNFdmVudCgpYCBhcyB3ZWxsIGFzIHRoZSBjaHJvbWUgY2xpZW50IGhvb2tzIGZvcgorICAg
ICAgICBgZWxlbWVudERpZFJlZm9jdXNgIGFuZCBgZWxlbWVudERpZEZvY3VzYCwgaW5zdGVhZCBv
ZiBqdXN0IGEgYEZvY3VzRGlyZWN0aW9uYCBmbGFnLgorCisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRGb2N1c2VkRWxlbWVudCk6Cisg
ICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Zm9j
dXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KToKKyAg
ICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNF
dmVudCk6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCk6CisgICAgICAgICog
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAqIGxvYWRlci9FbXB0
eUNsaWVudHMuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50OjplbGVtZW50RGlkRm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50OjplbGVtZW50RGlkUmVmb2N1cyk6CisgICAgICAgICogcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hFdmVudHNPbldpbmRvd0Fu
ZEZvY3VzZWRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6c2V0
Rm9jdXNlZEVsZW1lbnQpOgorCiAyMDIyLTAyLTI4ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbRmxleGJveF0gQWRkIG9wdGlvbnMg
dG8gc2hvdyBlYWNoIGFyZWEncyBDU1MgYG9yZGVyYCBhbmQvb3IgRE9NIGluZGV4IGluIHRoZSBw
YXJlbnQgZmxleCBjb250YWluZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMWZmYTUwZWIyOGY5NjIwZDBiZGM2MTBj
YjBlYTBlZDU1Y2RmOWUzNC4uNmNhNmRhZjc4ODc3ZjhkOTNkYTNmNGRlZWVjNzQ3NGEyNDgyZDZj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAyMi0wMi0yOCAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBmb2N1cyh7cHJldmVudFNjcm9sbDog
dHJ1ZX0pIGRvZXMgbm90IHByZXZlbnQgc2Nyb2xsaW5nIG9uIGlPUworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTg0CisgICAgICAgIHJkYXI6Ly84
ODkxMTE4NAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBB
ZGQgc3VwcG9ydCBmb3IgYHByZXZlbnRTY3JvbGxgIG9uIGlPUyBieSBhdm9pZGluZyBVSS1zaWRl
IHpvb21pbmcvc2Nyb2xsaW5nIHRvIHJldmVhbCB0aGUgZm9jdXNlZCBlbGVtZW50IGlmIGl0Cisg
ICAgICAgIHdhcyBmb2N1c2VkIHdpdGggYHByZXZlbnRTY3JvbGw6IHRydWVgLiBTZWUgYmVsb3cg
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICBUZXN0czogZmFzdC9mb3Jtcy9zZWxlY3QtZm9j
dXMtcHJldmVudC1zY3JvbGwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy90ZXh0LWZp
ZWxkLWZvY3VzLXByZXZlbnQtc2Nyb2xsLmh0bWwKKworICAgICAgICAqIFNoYXJlZC9Gb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Rm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvRm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbi5oOgorCisgICAgICAgIEFkZCBhIGJvb2xlYW4gZmxhZyB0byBgRm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbmAgdG8gaW5kaWNhdGUgd2hldGhlciBvciBub3Qgc2Nyb2xsaW5nIHRv
IHJldmVhbCB0aGUgZm9jdXNlZAorICAgICAgICBlbGVtZW50IHNob3VsZCBiZSBwcmV2ZW50ZWQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfem9vbVRvUmV2ZWFsRm9jdXNlZEVsZW1lbnRdKToK
KworICAgICAgICBPbmx5IHpvb20gdG8gcmV2ZWFsIHRoZSBmb2N1c2VkIGVsZW1lbnQgaWYgdGhl
IGZvY3VzZWQgZWxlbWVudCBpbmZvcm1hdGlvbidzIGBwcmV2ZW50U2Nyb2xsYCBmbGFnIGlzIGBO
T2AuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZWxlbWVudERpZEJsdXJdKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZWxlbWVudERpZEZvY3VzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjplbGVtZW50RGlkUmVmb2N1cyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmVsZW1lbnREaWRSZWZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZWxlbWVudERp
ZEZvY3VzKToKKworICAgICAgICBVc2UgYEZvY3VzT3B0aW9uc2AgdG8gc2V0IHRoZSBgcHJldmVu
dFNjcm9sbGAgZmxhZyB3aGVuIHByb3BhZ2F0aW5nIGBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
YC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMjItMDIt
MjggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZG9wdCB0aGUg
bW9kZXJuIEhhc2hlciBtb3JlIHdpZGVseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4
IGY3NzEzMGZmNzllZTdmMmNmNDRhYjIyZWEwZmMxMjc0NzQwOWVhMTIuLjVkZWY3ZDc4ZTllMThm
MDUwMTEyMmVmOTQ0YWY3M2U5MjBkYjQwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMi0yOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KKworICAgICAgICBmb2N1cyh7cHJldmVudFNjcm9sbDogdHJ1ZX0pIGRvZXMg
bm90IHByZXZlbnQgc2Nyb2xsaW5nIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTg0CisgICAgICAgIHJkYXI6Ly84ODkxMTE4NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBBZGp1c3QgdGhlIG1l
dGhvZCBzaWduYXR1cmUgb2YgZWxlbWVudERpZEZvY3VzLiBTZWUgV2ViQ29yZSBDaGFuZ2VMb2cg
Zm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnRJT1MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJ
T1MubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnRJT1M6OmVsZW1lbnREaWRGb2N1cyk6CisK
IDIwMjEtMTAtMjIgIElhbiBBbmRlcnNvbiAgPGlhbmFAYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBhIG1vZHVsZSBtYXAgZmlsZSBmb3IgUHJpdmF0ZUZyYW1ld29ya3MvV2ViS2l0TGVnYWN5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjBiMmU3NTg1N2I1MGRmNGYwNmJmMTY1NjQx
MDcxYjkxNzI3NGI0YS4uNzUwMzRiMDBmODZhMWJjNzlkNTI1N2UwYzIwZGRhZDIzMjUzYjAyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTAyLTI4
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIGZvY3Vz
KHtwcmV2ZW50U2Nyb2xsOiB0cnVlfSkgZG9lcyBub3QgcHJldmVudCBzY3JvbGxpbmcgb24gaU9T
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1ODQK
KyAgICAgICAgcmRhcjovLzg4OTExMTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJh
c2VyLgorCisgICAgICAgIEFkanVzdCB0aGUgbWV0aG9kIHNpZ25hdHVyZSBvZiBlbGVtZW50RGlk
Rm9jdXMuIFNlZSBXZWJDb3JlIENoYW5nZUxvZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6
ZWxlbWVudERpZEZvY3VzKToKKwogMjAyMi0wMi0yNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnZva2luZyAiTWFya3VwIEltYWdlIiBzaG91bGQg
cHJlc2VydmUgdGhlIGV4aXN0aW5nIHNlbGVjdGlvbiByYW5nZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggMjI0NjMyM2YzNWI5ZTg2YWI3MjAxNDBiMTc3Njk3Y2Y4MGIwMGFmZS4uYzM5YzFl
Y2E2MmY1YzQ5YzY3MTBlODU2YTg2ZGE0NWE4NTc0MTE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC00NzEzLDcgKzQ3MTMsNyBAQCBib29sIERvY3VtZW50OjpzZXRGb2N1c2VkRWxlbWVu
dChFbGVtZW50KiBlbGVtZW50LCBjb25zdCBGb2N1c09wdGlvbnMmIG9wdGlvbnMpCiAgICAgICAg
IH0KIAogICAgICAgICAvLyBEaXNwYXRjaCB0aGUgZm9jdXMgZXZlbnQgYW5kIGxldCB0aGUgbm9k
ZSBkbyBhbnkgb3RoZXIgZm9jdXMgcmVsYXRlZCBhY3Rpdml0aWVzIChpbXBvcnRhbnQgZm9yIHRl
eHQgZmllbGRzKQotICAgICAgICBtX2ZvY3VzZWRFbGVtZW50LT5kaXNwYXRjaEZvY3VzRXZlbnQo
b2xkRm9jdXNlZEVsZW1lbnQuY29weVJlZigpLCBvcHRpb25zLmRpcmVjdGlvbik7CisgICAgICAg
IG1fZm9jdXNlZEVsZW1lbnQtPmRpc3BhdGNoRm9jdXNFdmVudChvbGRGb2N1c2VkRWxlbWVudC5j
b3B5UmVmKCksIG9wdGlvbnMpOwogCiAgICAgICAgIGlmIChtX2ZvY3VzZWRFbGVtZW50ICE9IG5l
d0ZvY3VzZWRFbGVtZW50KSB7CiAgICAgICAgICAgICAvLyBoYW5kbGVyIHNoaWZ0ZWQgZm9jdXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBjMDUwMjEyZTFjNWU5YWRmNzlhZDgwYzc5NDE2ZjIy
OTVkZDgxZDBhLi41ZWVmZTc5NWE0ZTYwNzJhNzdhMTMzOGJjZDU5NTU2MTNhZmY5MTgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zMDczLDcgKzMwNzMsNyBAQCB2b2lkIEVsZW1lbnQ6OmZv
Y3VzKGNvbnN0IEZvY3VzT3B0aW9ucyYgb3B0aW9ucykKICAgICBSZWYgZG9jdW1lbnQgeyB0aGlz
LT5kb2N1bWVudCgpIH07CiAgICAgaWYgKGRvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpID09IHRo
aXMpIHsKICAgICAgICAgaWYgKGRvY3VtZW50LT5wYWdlKCkpCi0gICAgICAgICAgICBkb2N1bWVu
dC0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5lbGVtZW50RGlkUmVmb2N1cygqdGhpcyk7Cisg
ICAgICAgICAgICBkb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5lbGVtZW50RGlk
UmVmb2N1cygqdGhpcywgb3B0aW9ucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMw
OTEsNyArMzA5MSw3IEBAIHZvaWQgRWxlbWVudDo6Zm9jdXMoY29uc3QgRm9jdXNPcHRpb25zJiBv
cHRpb25zKQogICAgICAgICBSZWZQdHIgY3VycmVudGx5Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVu
dC0+Zm9jdXNlZEVsZW1lbnQoKTsKICAgICAgICAgaWYgKHJvb3QtPmNvbnRhaW5zSW5jbHVkaW5n
U2hhZG93RE9NKGN1cnJlbnRseUZvY3VzZWRFbGVtZW50LmdldCgpKSkgewogICAgICAgICAgICAg
aWYgKGRvY3VtZW50LT5wYWdlKCkpCi0gICAgICAgICAgICAgICAgZG9jdW1lbnQtPnBhZ2UoKS0+
Y2hyb21lKCkuY2xpZW50KCkuZWxlbWVudERpZFJlZm9jdXMoKmN1cnJlbnRseUZvY3VzZWRFbGVt
ZW50KTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQo
KS5lbGVtZW50RGlkUmVmb2N1cygqY3VycmVudGx5Rm9jdXNlZEVsZW1lbnQsIG9wdGlvbnMpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTMyMDgsMTAgKzMyMDgsMTAgQEAg
dm9pZCBFbGVtZW50OjpkaXNwYXRjaEZvY3VzT3V0RXZlbnRJZk5lZWRlZChSZWZQdHI8RWxlbWVu
dD4mJiBuZXdGb2N1c2VkRWxlbWVudCkKICAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KEZvY3VzRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZm9jdXNvdXRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6
WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObywgZG9jdW1lbnQoKS53aW5kb3dQcm94eSgpLCAw
LCBXVEZNb3ZlKG5ld0ZvY3VzZWRFbGVtZW50KSkpOwogfQogCi12b2lkIEVsZW1lbnQ6OmRpc3Bh
dGNoRm9jdXNFdmVudChSZWZQdHI8RWxlbWVudD4mJiBvbGRGb2N1c2VkRWxlbWVudCwgRm9jdXNE
aXJlY3Rpb24pCit2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudChSZWZQdHI8RWxlbWVu
dD4mJiBvbGRGb2N1c2VkRWxlbWVudCwgY29uc3QgRm9jdXNPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmNo
cm9tZSgpLmNsaWVudCgpLmVsZW1lbnREaWRGb2N1cygqdGhpcyk7CisgICAgICAgIHBhZ2UtPmNo
cm9tZSgpLmNsaWVudCgpLmVsZW1lbnREaWRGb2N1cygqdGhpcywgb3B0aW9ucyk7CiAgICAgZGlz
cGF0Y2hFdmVudChGb2N1c0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmZvY3VzRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObywgZG9jdW1lbnQoKS53
aW5kb3dQcm94eSgpLCAwLCBXVEZNb3ZlKG9sZEZvY3VzZWRFbGVtZW50KSkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaAppbmRleCBmM2RiNjA0NDYwMDYyYWJiYzllMDVkM2IyMjk0NjJmMTM1YjcwODUw
Li5hNTI4ZDE3MDVlZGExYTIzZjVkOWYxMzNmN2YyNmZmNWUzZWE1ZjkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKQEAgLTU3NCw3ICs1NzQsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IENvbnNpZGVy
IGNoYW5naW5nIHNpZ25hdHVyZSB0byBhY2NlcHQgRWxlbWVudCogYmVjYXVzZSBhbGwgY2FsbGVy
cyBwZXJmb3JtIGNvcHlSZWYoKS4KICAgICB2b2lkIGRpc3BhdGNoRm9jdXNJbkV2ZW50SWZOZWVk
ZWQoUmVmUHRyPEVsZW1lbnQ+JiYgb2xkRm9jdXNlZEVsZW1lbnQpOwogICAgIHZvaWQgZGlzcGF0
Y2hGb2N1c091dEV2ZW50SWZOZWVkZWQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9jdXNlZEVsZW1l
bnQpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvY3VzRXZlbnQoUmVmUHRyPEVsZW1lbnQ+
JiYgb2xkRm9jdXNlZEVsZW1lbnQsIEZvY3VzRGlyZWN0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hGb2N1c0V2ZW50KFJlZlB0cjxFbGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50LCBj
b25zdCBGb2N1c09wdGlvbnMmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQo
UmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9jdXNlZEVsZW1lbnQpOwogICAgIHZvaWQgZGlzcGF0Y2hX
ZWJLaXRJbWFnZVJlYWR5RXZlbnRGb3JUZXN0aW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggNzJhZmUwNGUwN2Y4OWM4YzI0YWYzZjhiOGNhZDM4
Y2UyOTZhOGQwMy4uNmUwYWI1MWMwMzE5OTZjNWE3ZjMwZWU0MWRjYzVjZjVlMmVmOTRlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTk0OSwxMyArOTQ5
LDEzIEBAIGludCBIVE1MU2VsZWN0RWxlbWVudDo6bGlzdFRvT3B0aW9uSW5kZXgoaW50IGxpc3RJ
bmRleCkgY29uc3QKICAgICByZXR1cm4gb3B0aW9uSW5kZXg7CiB9CiAKLXZvaWQgSFRNTFNlbGVj
dEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudChSZWZQdHI8RWxlbWVudD4mJiBvbGRGb2N1c2Vk
RWxlbWVudCwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQordm9pZCBIVE1MU2VsZWN0RWxlbWVu
dDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KFJlZlB0cjxFbGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50
LCBjb25zdCBGb2N1c09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gU2F2ZSB0aGUgc2VsZWN0
aW9uIHNvIGl0IGNhbiBiZSBjb21wYXJlZCB0byB0aGUgbmV3IHNlbGVjdGlvbiB3aGVuCiAgICAg
Ly8gZGlzcGF0Y2hpbmcgY2hhbmdlIGV2ZW50cyBkdXJpbmcgYmx1ciBldmVudCBkaXNwYXRjaC4K
ICAgICBpZiAodXNlc01lbnVMaXN0KCkpCiAgICAgICAgIHNhdmVMYXN0U2VsZWN0aW9uKCk7Ci0g
ICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlzcGF0Y2hGb2N1c0V2ZW50KFdU
Rk1vdmUob2xkRm9jdXNlZEVsZW1lbnQpLCBkaXJlY3Rpb24pOworICAgIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoRm9jdXNFdmVudChXVEZNb3ZlKG9sZEZvY3VzZWRF
bGVtZW50KSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmRpc3BhdGNo
Qmx1ckV2ZW50KFJlZlB0cjxFbGVtZW50PiYmIG5ld0ZvY3VzZWRFbGVtZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCmluZGV4IDlhNTcwNTY0OGQ3MGU1YmY0MGU0Njgw
YjBmMzUxNDAxMzQyNzM5ZGUuLmIxNDczMjA3ZTNlYjRhNzA3NDNmY2UzYjU5Njk2Yzc1ZmNmNGE5
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKQEAgLTExOSw3ICsx
MTksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2
ZW50KikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3QgZmlu
YWw7CiAKLSAgICB2b2lkIGRpc3BhdGNoRm9jdXNFdmVudChSZWZQdHI8RWxlbWVudD4mJiBvbGRG
b2N1c2VkRWxlbWVudCwgRm9jdXNEaXJlY3Rpb24pIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hG
b2N1c0V2ZW50KFJlZlB0cjxFbGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50LCBjb25zdCBGb2N1
c09wdGlvbnMmKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoQmx1ckV2ZW50KFJlZlB0cjxFbGVt
ZW50PiYmIG5ld0ZvY3VzZWRFbGVtZW50KSBmaW5hbDsKICAgICAKICAgICBib29sIGNhblN0YXJ0
U2VsZWN0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggOTY0Y2Mx
YTIxZDAzNTFlMDU5NWQ3YjdmZWJjODlmNjIxZmMwZjE5Yi4uMWQxZDZkMzhhMmExYzQzYWRkYzlj
YzEzM2ExYzBkZGVmZTY2MzkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTEyNSwxMiArMTI1LDEyIEBAIHZvaWQgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldEhvdmVyZWQoYm9vbCBvdmVyLCBTdHlsZTo6SW52
YWxpZGF0aW9uU2NvcGUKICAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoKTsKIH0KIAot
dm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KFJlZlB0
cjxFbGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50LCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24p
Cit2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQoUmVm
UHRyPEVsZW1lbnQ+JiYgb2xkRm9jdXNlZEVsZW1lbnQsIGNvbnN0IEZvY3VzT3B0aW9ucyYgb3B0
aW9ucykKIHsKICAgICBpZiAoc3VwcG9ydHNQbGFjZWhvbGRlcigpKQogICAgICAgICB1cGRhdGVQ
bGFjZWhvbGRlclZpc2liaWxpdHkoKTsKLSAgICBoYW5kbGVGb2N1c0V2ZW50KG9sZEZvY3VzZWRF
bGVtZW50LmdldCgpLCBkaXJlY3Rpb24pOwotICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRo
U3RhdGU6OmRpc3BhdGNoRm9jdXNFdmVudChXVEZNb3ZlKG9sZEZvY3VzZWRFbGVtZW50KSwgZGly
ZWN0aW9uKTsKKyAgICBoYW5kbGVGb2N1c0V2ZW50KG9sZEZvY3VzZWRFbGVtZW50LmdldCgpLCBv
cHRpb25zLmRpcmVjdGlvbik7CisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6
ZGlzcGF0Y2hGb2N1c0V2ZW50KFdURk1vdmUob2xkRm9jdXNlZEVsZW1lbnQpLCBvcHRpb25zKTsK
IH0KIAogdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQo
UmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9jdXNlZEVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggOTk4NmFjNTU0MDhlYmE3
MDNhNTc2MjI1MTgwZmYxZGZhNDZjOWVjYi4uZTBmNjU0YmU5MjM2MjQ5N2MwN2M2ZWZiNWQzMzhk
YmVmMWMyNWM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIHByaXZhdGU6CiAgICAgaW50IGNvbXB1
dGVTZWxlY3Rpb25FbmQoKSBjb25zdDsKICAgICBUZXh0RmllbGRTZWxlY3Rpb25EaXJlY3Rpb24g
Y29tcHV0ZVNlbGVjdGlvbkRpcmVjdGlvbigpIGNvbnN0OwogCi0gICAgdm9pZCBkaXNwYXRjaEZv
Y3VzRXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgb2xkRm9jdXNlZEVsZW1lbnQsIEZvY3VzRGlyZWN0
aW9uKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRm9jdXNFdmVudChSZWZQdHI8RWxlbWVudD4m
JiBvbGRGb2N1c2VkRWxlbWVudCwgY29uc3QgRm9jdXNPcHRpb25zJikgZmluYWw7CiAgICAgdm9p
ZCBkaXNwYXRjaEJsdXJFdmVudChSZWZQdHI8RWxlbWVudD4mJiBuZXdGb2N1c2VkRWxlbWVudCkg
ZmluYWw7CiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBj
b25zdCBvdmVycmlkZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRl
eCBjZDVmMjhmMTQ2MWU4YTJlNmFkYmMwZDAwZTU4ZGVlNTZkNGQwNzM4Li45ZGYyMDNlNTU5NDM0
N2IzMjY2MTk2MDhlNmM4MjMyMTEyODE3MWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oCkBAIC0xNTcsNyArMTU3LDcgQEAgY2xhc3MgRW1wdHlDaHJvbWVDbGllbnQgOiBwdWJs
aWMgQ2hyb21lQ2xpZW50IHsKICAgICB2b2lkIHNob3dTaGFyZVNoZWV0KFNoYXJlRGF0YVdpdGhQ
YXJzZWRVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICB2
b2lkIGxvYWRJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlSWNvbkxvYWRl
ciYpIGZpbmFsIHsgfQogCi0gICAgdm9pZCBlbGVtZW50RGlkRm9jdXMoRWxlbWVudCYpIGZpbmFs
IHsgfQorICAgIHZvaWQgZWxlbWVudERpZEZvY3VzKEVsZW1lbnQmLCBjb25zdCBGb2N1c09wdGlv
bnMmKSBmaW5hbCB7IH0KICAgICB2b2lkIGVsZW1lbnREaWRCbHVyKEVsZW1lbnQmKSBmaW5hbCB7
IH0KIAogICAgIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYpIGZpbmFsIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggNDQxOWVkNTU1MzA1MTkzOGI3NTgwMGJkZWViZDRm
NmI0NDczMDc4Yy4uOTVlYjZmNmM1MDQ4ODVjODY2N2FhNjAzMDJjZGUyNGExYTQ3NTIwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0xMzQsNiArMTM0LDcgQEAgc3RydWN0IENv
bnRhY3RzUmVxdWVzdERhdGE7CiBzdHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0czsKIHN0cnVj
dCBEYXRhRGV0ZWN0b3JFbGVtZW50SW5mbzsKIHN0cnVjdCBEYXRlVGltZUNob29zZXJQYXJhbWV0
ZXJzOworc3RydWN0IEZvY3VzT3B0aW9uczsKIHN0cnVjdCBHcmFwaGljc0RldmljZUFkYXB0ZXI7
CiBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKIHN0cnVjdCBTZWN1
cml0eU9yaWdpbkRhdGE7CkBAIC0zNDUsOSArMzQ2LDkgQEAgcHVibGljOgogICAgIC8vIEFzeW5j
aHJvbm91cyByZXF1ZXN0IHRvIGxvYWQgYW4gaWNvbiBmb3Igc3BlY2lmaWVkIGZpbGVuYW1lcy4K
ICAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IEZpbGVJY29uTG9hZGVyJikgPSAwOwogICAgICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZWxlbWVu
dERpZEZvY3VzKEVsZW1lbnQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZWxlbWVudERpZEZvY3Vz
KEVsZW1lbnQmLCBjb25zdCBGb2N1c09wdGlvbnMmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZWxl
bWVudERpZEJsdXIoRWxlbWVudCYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBlbGVtZW50RGlkUmVm
b2N1cyhFbGVtZW50JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGVsZW1lbnREaWRSZWZvY3VzKEVs
ZW1lbnQmLCBjb25zdCBGb2N1c09wdGlvbnMmKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBmb2N1
c2VkRWxlbWVudERpZENoYW5nZUlucHV0TW9kZShFbGVtZW50JiwgSW5wdXRNb2RlKSB7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IDkzM2JkYTY2MDVlYzlj
M2Y4NmI1ZDU4YmMzNTg4YWMyMTI4YjRmYWEuLmQ1YWM5MTEzZmU2YmQ0YWY1YzQzNTJiZTdiZWYx
MjRkOWZmMmEwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAg
LTMxMCw3ICszMTAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZGlzcGF0Y2hFdmVudHNPbldpbmRv
d0FuZEZvY3VzZWRFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgYgogICAgICAgICBkb2N1bWVu
dC0+Zm9jdXNlZEVsZW1lbnQoKS0+ZGlzcGF0Y2hCbHVyRXZlbnQobnVsbHB0cik7CiAgICAgZG9j
dW1lbnQtPmRpc3BhdGNoV2luZG93RXZlbnQoRXZlbnQ6OmNyZWF0ZShmb2N1c2VkID8gZXZlbnRO
YW1lcygpLmZvY3VzRXZlbnQgOiBldmVudE5hbWVzKCkuYmx1ckV2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICBpZiAoZm9jdXNlZCAmJiBk
b2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKSkKLSAgICAgICAgZG9jdW1lbnQtPmZvY3VzZWRFbGVt
ZW50KCktPmRpc3BhdGNoRm9jdXNFdmVudChudWxscHRyLCBGb2N1c0RpcmVjdGlvbjo6Tm9uZSk7
CisgICAgICAgIGRvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpLT5kaXNwYXRjaEZvY3VzRXZlbnQo
bnVsbHB0ciwgeyB9KTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGlzRm9jdXNhYmxlRWxlbWVu
dE9yU2NvcGVPd25lcihFbGVtZW50JiBlbGVtZW50LCBLZXlib2FyZEV2ZW50KiBldmVudCkKQEAg
LTgzNyw3ICs4MzcsNyBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZEVsZW1lbnQo
RWxlbWVudCogZWxlbWVudCwgRnJhbWUmIG5ld0ZvY3VzZWRGcmFtZQogICAgIEVsZW1lbnQqIG9s
ZEZvY3VzZWRFbGVtZW50ID0gb2xkRG9jdW1lbnQgPyBvbGREb2N1bWVudC0+Zm9jdXNlZEVsZW1l
bnQoKSA6IG51bGxwdHI7CiAgICAgaWYgKG9sZEZvY3VzZWRFbGVtZW50ID09IGVsZW1lbnQpIHsK
ICAgICAgICAgaWYgKGVsZW1lbnQpCi0gICAgICAgICAgICBtX3BhZ2UuY2hyb21lKCkuY2xpZW50
KCkuZWxlbWVudERpZFJlZm9jdXMoKmVsZW1lbnQpOworICAgICAgICAgICAgbV9wYWdlLmNocm9t
ZSgpLmNsaWVudCgpLmVsZW1lbnREaWRSZWZvY3VzKCplbGVtZW50LCBvcHRpb25zKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Gb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Zv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24uY3BwCmluZGV4IDYyNzQ0NzAxNGM5NWVmZTY4NjU1MDNk
MWM4MDdkYTdlOWEwMzE1ZjAuLmVjN2NlNWYxNThkYjVhNzkwMmMzZDkyODEyMmU3NjFjOGY3YzA1
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24uY3BwCkBAIC0xMTQsNiArMTE0LDcgQEAgdm9pZCBGb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwg
c2hvdWxkQXZvaWRTY3JvbGxpbmdXaGVuRm9jdXNlZENvbnRlbnRJc1Zpc2libGU7CiAgICAgZW5j
b2RlciA8PCBzaG91bGRVc2VMZWdhY3lTZWxlY3RQb3BvdmVyRGlzbWlzc2FsQmVoYXZpb3JJbkRh
dGFBY3RpdmF0aW9uOwogICAgIGVuY29kZXIgPDwgaXNGb2N1c2luZ1dpdGhWYWxpZGF0aW9uTWVz
c2FnZTsKKyAgICBlbmNvZGVyIDw8IHByZXZlbnRTY3JvbGw7CiB9CiAKIGJvb2wgRm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgRm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbiYgcmVzdWx0KQpAQCAtMjYyLDYgKzI2Myw5IEBAIGJvb2wgRm9jdXNl
ZEVsZW1lbnRJbmZvcm1hdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgRm9jdXNl
ZEVsZW1lbnRJbmZvCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaXNGb2N1c2luZ1dp
dGhWYWxpZGF0aW9uTWVzc2FnZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LnByZXZlbnRTY3JvbGwpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5oCmluZGV4IDkwODRhOGU1MGNkYjBhYTZm
Yzk2NzBhNDcxZjBhNDYxMTVhMDhiZjQuLjU3OTk0NjcyMjIyMGFjZDY3ZjU2OWE5NmFlZGQzNzEy
ZTQwOGNiMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZvY3VzZWRFbGVtZW50
SW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Gb2N1c2VkRWxlbWVudElu
Zm9ybWF0aW9uLmgKQEAgLTEzOCw2ICsxMzgsNyBAQCBzdHJ1Y3QgRm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbiB7CiAgICAgYm9vbCBzaG91bGRBdm9pZFNjcm9sbGluZ1doZW5Gb2N1c2VkQ29udGVu
dElzVmlzaWJsZSB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRVc2VMZWdhY3lTZWxlY3RQb3Bv
dmVyRGlzbWlzc2FsQmVoYXZpb3JJbkRhdGFBY3RpdmF0aW9uIHsgZmFsc2UgfTsKICAgICBib29s
IGlzRm9jdXNpbmdXaXRoVmFsaWRhdGlvbk1lc3NhZ2UgeyBmYWxzZSB9OworICAgIGJvb2wgcHJl
dmVudFNjcm9sbCB7IGZhbHNlIH07CiAKICAgICBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uSWRl
bnRpZmllciBpZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCBjb250YWlu
ZXJTY3JvbGxpbmdOb2RlSUQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA3YjQ3ODhjOTMzNzky
Y2I4OTQwMWZiZjQwNjI0YTViYTljNmMxNGVhLi5jM2Q5YTc1NjY3YTE1OTVmZmYwNWM5NjZiNjVj
YzhlZGM0ZWFjNzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTIzODksNiArMjM4OSw5IEBAIHN0YXRp
YyBOU1ZhbHVlICpuc1NpemVGb3JUYXBIaWdobGlnaHRCb3JkZXJSYWRpdXMoV2ViQ29yZTo6SW50
U2l6ZSBib3JkZXJSYWRpdXMsCiAKIC0gKHZvaWQpX3pvb21Ub1JldmVhbEZvY3VzZWRFbGVtZW50
CiB7CisgICAgaWYgKF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnByZXZlbnRTY3JvbGwpCisg
ICAgICAgIHJldHVybjsKKwogICAgIGlmIChfc3VwcHJlc3NTZWxlY3Rpb25Bc3Npc3RhbnRSZWFz
b25zIHx8IF9hY3RpdmVUZXh0SW50ZXJhY3Rpb25Db3VudCkKICAgICAgICAgcmV0dXJuOwogCkBA
IC02ODI3LDYgKzY4MzAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TT2JqZWN0IDxXS0Zvcm1QZXJp
cGhlcmFsPj4gY3JlYXRlSW5wdXRQZXJpcGhlcmFsV2l0aFZpZXcoV2ViSwogICAgIF9mb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uLnNob3VsZEF2b2lkU2Nyb2xsaW5nV2hlbkZvY3VzZWRDb250ZW50
SXNWaXNpYmxlID0gZmFsc2U7CiAgICAgX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uc2hvdWxk
VXNlTGVnYWN5U2VsZWN0UG9wb3ZlckRpc21pc3NhbEJlaGF2aW9ySW5EYXRhQWN0aXZhdGlvbiA9
IGZhbHNlOwogICAgIF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmlzRm9jdXNpbmdXaXRoVmFs
aWRhdGlvbk1lc3NhZ2UgPSBmYWxzZTsKKyAgICBfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5w
cmV2ZW50U2Nyb2xsID0gZmFsc2U7CiAgICAgX2lucHV0UGVyaXBoZXJhbCA9IG5pbDsKICAgICBf
Zm9jdXNSZXF1aXJlc1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZSA9IE5POwogICAgIF9hdXRvY29y
cmVjdGlvbkNvbnRleHROZWVkc1VwZGF0ZSA9IFlFUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5k
ZXggYzVmNDAzYTZkNDRkNTU0YjZiZTc5NGQxNjkwM2RkYzg3YzYyMmE3Ny4uMDVlM2YzZjFiOGQ0
Y2NkYTI1ZmQ3YjQ1NzUyNWUyM2M1YzI4MWYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAg
LTIxNCwxNCArMjE0LDE0IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp1bmZvY3VzKCkKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6ZWxlbWVudERpZEZvY3Vz
KEVsZW1lbnQmIGVsZW1lbnQpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6ZWxlbWVudERpZEZvY3Vz
KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEZvY3VzT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBt
X3BhZ2UuZWxlbWVudERpZEZvY3VzKGVsZW1lbnQpOworICAgIG1fcGFnZS5lbGVtZW50RGlkRm9j
dXMoZWxlbWVudCwgb3B0aW9ucyk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbGVtZW50
RGlkUmVmb2N1cyhFbGVtZW50JiBlbGVtZW50KQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OmVsZW1l
bnREaWRSZWZvY3VzKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEZvY3VzT3B0aW9ucyYgb3B0aW9u
cykKIHsKLSAgICBtX3BhZ2UuZWxlbWVudERpZFJlZm9jdXMoZWxlbWVudCk7CisgICAgbV9wYWdl
LmVsZW1lbnREaWRSZWZvY3VzKGVsZW1lbnQsIG9wdGlvbnMpOwogfQogCiB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6ZWxlbWVudERpZEJsdXIoRWxlbWVudCYgZWxlbWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAppbmRleCA3NzlkYTVhYzRmYmFkNWUwMGUyZGQ3YWYwY2RiMGJiY2NjNGNjMDZhLi4xNzRhYmRi
NmNkZjY4YTE2OGJmOTY0ZGYwNTNkODBiZWU1MmQ4MDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBA
IC0zMDYsOSArMzA2LDkgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgdm9pZCBlbGVtZW50RGlkRm9jdXMoV2ViQ29yZTo6RWxlbWVudCYpIGZpbmFsOworICAg
IHZvaWQgZWxlbWVudERpZEZvY3VzKFdlYkNvcmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpG
b2N1c09wdGlvbnMmKSBmaW5hbDsKICAgICB2b2lkIGVsZW1lbnREaWRCbHVyKFdlYkNvcmU6OkVs
ZW1lbnQmKSBmaW5hbDsKLSAgICB2b2lkIGVsZW1lbnREaWRSZWZvY3VzKFdlYkNvcmU6OkVsZW1l
bnQmKSBmaW5hbDsKKyAgICB2b2lkIGVsZW1lbnREaWRSZWZvY3VzKFdlYkNvcmU6OkVsZW1lbnQm
LCBjb25zdCBXZWJDb3JlOjpGb2N1c09wdGlvbnMmKSBmaW5hbDsKICAgICB2b2lkIGZvY3VzZWRF
bGVtZW50RGlkQ2hhbmdlSW5wdXRNb2RlKFdlYkNvcmU6OkVsZW1lbnQmLCBXZWJDb3JlOjpJbnB1
dE1vZGUpIGZpbmFsOwogCiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggODFlMzc2
MjIzN2I3MzBmNGE0MmY4ZGI1YTYzZjJkZmJkNjliMmVjZi4uMjRlNGEzZjA0YmE4YmY2MDk2Yjdh
MDVlZmU3Y2VhNWRmNjdjOTZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTYxNTEsOSArNjE1MSw5IEBAIHZvaWQgV2ViUGFnZTo6cmVzZXRG
b2N1c2VkRWxlbWVudEZvckZyYW1lKFdlYkZyYW1lKiBmcmFtZSkKICAgICB9CiB9CiAKLXZvaWQg
V2ViUGFnZTo6ZWxlbWVudERpZFJlZm9jdXMoV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkKK3Zv
aWQgV2ViUGFnZTo6ZWxlbWVudERpZFJlZm9jdXMoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgRm9j
dXNPcHRpb25zJiBvcHRpb25zKQogewotICAgIGVsZW1lbnREaWRGb2N1cyhlbGVtZW50KTsKKyAg
ICBlbGVtZW50RGlkRm9jdXMoZWxlbWVudCwgb3B0aW9ucyk7CiAKICAgICBpZiAobV91c2VySXNJ
bnRlcmFjdGluZykKICAgICAgICAgc2NoZWR1bGVGdWxsRWRpdG9yU3RhdGVVcGRhdGUoKTsKQEAg
LTYxNzYsNyArNjE3Niw3IEBAIHN0YXRpYyBib29sIGlzVGV4dEZvcm1Db250cm9sT3JFZGl0YWJs
ZUNvbnRlbnQoY29uc3QgV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gaXM8
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1lbnQpIHx8IGVsZW1lbnQuaGFzRWRpdGFi
bGVTdHlsZSgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmVsZW1lbnREaWRGb2N1cyhXZWJDb3JlOjpF
bGVtZW50JiBlbGVtZW50KQordm9pZCBXZWJQYWdlOjplbGVtZW50RGlkRm9jdXMoRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgRm9jdXNPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICghc2hvdWxk
RGlzcGF0Y2hVcGRhdGVBZnRlckZvY3VzaW5nRWxlbWVudChlbGVtZW50KSkgewogICAgICAgICB1
cGRhdGVJbnB1dENvbnRleHRBZnRlckJsdXJyaW5nQW5kUmVmb2N1c2luZ0VsZW1lbnRJZk5lZWRl
ZChlbGVtZW50KTsKQEAgLTYyMDQsNiArNjIwNCw3IEBAIHZvaWQgV2ViUGFnZTo6ZWxlbWVudERp
ZEZvY3VzKFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICAgICAgbV9mb3JtQ2xpZW50
LT53aWxsQmVnaW5JbnB1dFNlc3Npb24odGhpcywgJmVsZW1lbnQsIFdlYkZyYW1lOjpmcm9tQ29y
ZUZyYW1lKCplbGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKSksIG1fdXNlcklzSW50ZXJhY3Rpbmcs
IHVzZXJEYXRhKTsKIAorICAgICAgICBpbmZvcm1hdGlvbi0+cHJldmVudFNjcm9sbCA9IG9wdGlv
bnMucHJldmVudFNjcm9sbDsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpF
bGVtZW50RGlkRm9jdXMoaW5mb3JtYXRpb24udmFsdWUoKSwgbV91c2VySXNJbnRlcmFjdGluZywg
bV9yZWNlbnRseUJsdXJyZWRFbGVtZW50LCBtX2xhc3RBY3Rpdml0eVN0YXRlQ2hhbmdlcywgVXNl
ckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1
c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiAjZWxpZiBQTEFURk9STShNQUMpCiAgICAgICAgIC8v
IEZJWE1FOiBUaGlzIGNhbiBiZSB1bmlmaWVkIHdpdGggdGhlIGlPUyBjb2RlIGFib3ZlIGJ5IGJy
aW5naW5nIEVsZW1lbnREaWRGb2N1cyB0byBtYWNPUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA0NzI5YzA5OWE3MGIzMGE2NzJmMDBlOWNlOGIxODgx
NTYwYWJmODcyLi5jNWI2ZDkxNjdmMTA2NzQxNjM2M2Y1MmVjNzM1NzMzM2ViZmQ0MjEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC03MzQsOCArNzM0
LDggQEAgcHVibGljOgogICAgIE1lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
JiBtZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpIHsgcmV0dXJuIG1fbWVk
aWFLZXlTeXN0ZW1QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7IH0KICNlbmRpZgogCi0gICAgdm9p
ZCBlbGVtZW50RGlkRm9jdXMoV2ViQ29yZTo6RWxlbWVudCYpOwotICAgIHZvaWQgZWxlbWVudERp
ZFJlZm9jdXMoV2ViQ29yZTo6RWxlbWVudCYpOworICAgIHZvaWQgZWxlbWVudERpZEZvY3VzKFdl
YkNvcmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpGb2N1c09wdGlvbnMmKTsKKyAgICB2b2lk
IGVsZW1lbnREaWRSZWZvY3VzKFdlYkNvcmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpGb2N1
c09wdGlvbnMmKTsKICAgICB2b2lkIGVsZW1lbnREaWRCbHVyKFdlYkNvcmU6OkVsZW1lbnQmKTsK
ICAgICB2b2lkIGZvY3VzZWRFbGVtZW50RGlkQ2hhbmdlSW5wdXRNb2RlKFdlYkNvcmU6OkVsZW1l
bnQmLCBXZWJDb3JlOjpJbnB1dE1vZGUpOwogICAgIHZvaWQgcmVzZXRGb2N1c2VkRWxlbWVudEZv
ckZyYW1lKFdlYkZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oCmluZGV4IDAyOGY5ZDZjYjFi
N2Q4MjFiNWYxYjc1ZTMzZDNjZDZlNjNiMjg4ZmUuLjUxYTU1MGNjYTIxYTBlNjg2NTg4ZDUwOTBm
Yzc0OTU5M2M1MmJiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oCkBAIC03OSw3ICs3OSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzdXBwcmVzc0Zvcm1Ob3RpZmljYXRpb25zKCkgZmluYWw7CiAg
ICAgdm9pZCByZXN0b3JlRm9ybU5vdGlmaWNhdGlvbnMoKSBmaW5hbDsKIAotICAgIHZvaWQgZWxl
bWVudERpZEZvY3VzKFdlYkNvcmU6OkVsZW1lbnQmKSBmaW5hbDsKKyAgICB2b2lkIGVsZW1lbnRE
aWRGb2N1cyhXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6Rm9jdXNPcHRpb25zJikg
ZmluYWw7CiAgICAgdm9pZCBlbGVtZW50RGlkQmx1cihXZWJDb3JlOjpFbGVtZW50JikgZmluYWw7
CiAKICAgICB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKFdlYkNvcmU6OkZyYW1lJiwgV2Vi
Q29yZTo6R3JhcGhpY3NMYXllciopIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCmluZGV4
IDA2ODcwMzI2NmZkYjc1NjczYjE0MGEwMTViYWE0OTU0NWVhYmI3M2MuLjVlZjg4OGEzYjE3YzQz
MTVjMTNmMjViNDk4YWM2NTg5MjQ5NDBlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0KQEAg
LTI3Myw3ICsyNzMsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudElPUzo6cmVzdG9yZUZvcm1Ob3Rp
ZmljYXRpb25zKCkKICAgICAgICAgbV9mb3JtTm90aWZpY2F0aW9uU3VwcHJlc3Npb25zID0gMDsK
IH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnRJT1M6OmVsZW1lbnREaWRGb2N1cyhXZWJDb3JlOjpF
bGVtZW50JiBlbGVtZW50KQordm9pZCBXZWJDaHJvbWVDbGllbnRJT1M6OmVsZW1lbnREaWRGb2N1
cyhXZWJDb3JlOjpFbGVtZW50JiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpGb2N1c09wdGlvbnMm
KQogewogICAgIGlmIChtX2Zvcm1Ob3RpZmljYXRpb25TdXBwcmVzc2lvbnMgPD0gMCkKICAgICAg
ICAgW1t3ZWJWaWV3KCkgX1VJS2l0RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldygp
IGVsZW1lbnREaWRGb2N1c05vZGU6a2l0KCZlbGVtZW50KV07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4
IDgyMjM3OGY0MDYzZjBiYWYzMDQ4Y2QzMDBjYTY0MjIyODNkZTgwYjkuLmNmM2NlZjViN2E2MmUx
OTk5NDBjMTJkYTc0MDdkMzMwZjBmMmZlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xNzYsNyAr
MTc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpIGZp
bmFsOwogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCBlbGVtZW50RGlkRm9j
dXMoV2ViQ29yZTo6RWxlbWVudCYpIG92ZXJyaWRlOworICAgIHZvaWQgZWxlbWVudERpZEZvY3Vz
KFdlYkNvcmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpGb2N1c09wdGlvbnMmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGVsZW1lbnREaWRCbHVyKFdlYkNvcmU6OkVsZW1lbnQmKSBvdmVycmlkZTsK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggMzYzNGY3YTYwMjE0NjE5ZWNmZWFmMGFl
ZDllYmZjZTcyMTBmMWExYS4uYWMzM2NlMTc1ZDBkNDdjY2ZhM2EyMjMxNDA2MDM3ZjczMjU2N2I3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5tbQpAQCAtODQ5LDcgKzg0OSw3IEBAIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjpkaXNhYmxlU3VkZGVuVGVybWluYXRpb24oKQogfQogCiAjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCi12b2lkIFdlYkNocm9tZUNsaWVudDo6ZWxlbWVudERpZEZvY3VzKFdlYkNvcmU6
OkVsZW1lbnQmIGVsZW1lbnQpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6ZWxlbWVudERpZEZvY3Vz
KFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OkZvY3VzT3B0aW9ucyYp
CiB7CiAgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpmb3Jt
RGlkRm9jdXNOb2RlOiksIGtpdCgmZWxlbWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDkxMGNlOGU0MDlhMmUw
ZWY0YTAwNDA2Yzc3N2Q4NmM5YjMwNzQ1NWEuLmI3YTEyMDE5NWQwODkxMjVkZDFkNDVmYzIwYmI1
NTkyMWE5ZjcxMjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMi0wMi0yOCAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBmb2N1cyh7cHJldmVudFNj
cm9sbDogdHJ1ZX0pIGRvZXMgbm90IHByZXZlbnQgc2Nyb2xsaW5nIG9uIGlPUworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTg0CisgICAgICAgIHJk
YXI6Ly84ODkxMTE4NAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAg
ICAgICBBZGQgYSBjb3VwbGUgb2YgbmV3IGxheW91dCB0ZXN0cyB0byB2ZXJpZnkgdGhhdCBwYXNz
aW5nIGluIGB7IHByZXZlbnRTY3JvbGw6IHRydWUgfWAgZm9yIGZvY3VzIG9wdGlvbnMgY2F1c2Vz
CisgICAgICAgIHVzIHRvIGF2b2lkIHNjcm9sbGluZyB0byByZXZlYWwgZm9jdXNlZCBzZWxlY3Qg
ZWxlbWVudHMgYW5kIHRleHQgZmllbGRzLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9zZWxlY3Qt
Zm9jdXMtcHJldmVudC1zY3JvbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Zvcm1zL3NlbGVjdC1mb2N1cy1wcmV2ZW50LXNjcm9sbC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Zvcm1zL3RleHQtZmllbGQtZm9jdXMtcHJldmVudC1zY3JvbGwtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3RleHQtZmllbGQtZm9jdXMtcHJldmVudC1z
Y3JvbGwuaHRtbDogQWRkZWQuCisgICAgICAgICogcmVzb3VyY2VzL3VpLWhlbHBlci5qczoKKwor
ICAgICAgICBBbHNvIG1ha2UgaXQgc2FmZSB0byBjYWxsIGB3YWl0Rm9ySW5wdXRTZXNzaW9uVG9E
aXNtaXNzKClgIGluIGEgcGxhdGZvcm0tYWdub3N0aWMgdGVzdCwgYnkgYmFpbGluZyBlYXJseSBp
ZgorICAgICAgICB3ZSdyZSBub3Qgb24gaU9TLCB1c2luZyBXZWJLaXQyLgorCiAyMDIyLTAyLTI4
ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBhZGQgYEl0ZXJhYmxlV2Vha1NldGAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvc2VsZWN0LWZvY3VzLXByZXZlbnQtc2Nyb2xsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvc2VsZWN0LWZvY3VzLXByZXZlbnQtc2Nyb2xsLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zZDNhZjkyODVlZThmNzI3YTAxNDhjZTQwYzk5MDlhNWFjZTBlNzYxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtZm9jdXMtcHJldmVu
dC1zY3JvbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1ZlcmlmaWVzIHRoYXQgcHJv
Z3JhbW1hdGljYWxseSBmb2N1c2luZyBhIHNlbGVjdCBlbGVtZW50IHdpdGggcHJldmVudFNjcm9s
bDogdHJ1ZSBkb2VzIG5vdCBjYXVzZSB0aGUgcGFnZSB0byBzY3JvbGwuIFRvIHJ1biB0aGUgdGVz
dCBtYW51YWxseSwgdGFwIG9yIGNsaWNrIHRoZSBidXR0b24gYW5kIGNoZWNrIHRoYXQgdGhlIHBh
Z2UgZG9lcyBub3Qgc2Nyb2xsIHRvIHRoZSBib3R0b20uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaXMgc2VsZWN0CitQQVNTIHBh
Z2VZT2Zmc2V0IGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorRm9jdXMgc2VsZWN0CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvc2VsZWN0LWZvY3VzLXByZXZlbnQtc2Nyb2xsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3NlbGVjdC1mb2N1cy1wcmV2ZW50LXNjcm9sbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkOGRhYmYx
NjE4YjM4MTJhMzFmMzY0YTYyMDU4MWQxZjgwZjczMDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1mb2N1cy1wcmV2ZW50LXNjcm9sbC5odG1sCkBAIC0w
LDAgKzEsNTMgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNl
RmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0i
dmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+
CitidXR0b24geworICAgIG1hcmdpbi1ib3R0b206IDgwMDBweDsKK30KKzwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgICA8ZGl2PjxidXR0b24gaWQ9ImZvY3VzIj5Gb2N1cyA8Y29kZT5zZWxl
Y3Q8L2NvZGU+PC9idXR0b24+PC9kaXY+CisgICAgPHNlbGVjdCBuYW1lPSJzZWxlY3QiPgorICAg
ICAgICA8b3B0aW9uIHZhbHVlPSIxIj5GaXJzdDwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZh
bHVlPSIyIj5TZWNvbmQ8L29wdGlvbj4KKyAgICA8L3NlbGVjdD4KKzwvYm9keT4KKzxzY3JpcHQ+
Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2Rlc2NyaXB0aW9uKCJWZXJpZmllcyB0aGF0IHByb2dy
YW1tYXRpY2FsbHkgZm9jdXNpbmcgYSBzZWxlY3QgZWxlbWVudCB3aXRoIDxjb2RlPnByZXZlbnRT
Y3JvbGw6IHRydWU8L2NvZGU+IGRvZXMgbm90IGNhdXNlIHRoZSBwYWdlIHRvIHNjcm9sbC4gVG8g
cnVuIHRoZSB0ZXN0IG1hbnVhbGx5LCB0YXAgb3IgY2xpY2sgdGhlIGJ1dHRvbiBhbmQgY2hlY2sg
dGhhdCB0aGUgcGFnZSBkb2VzIG5vdCBzY3JvbGwgdG8gdGhlIGJvdHRvbS4iKTsKKworbGV0IGZv
Y3VzQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvY3VzIik7CitzZWxlY3QgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzZWxlY3QiKTsKKworZm9jdXNCdXR0b24uYWRkRXZlbnRM
aXN0ZW5lcigiY2xpY2siLCBldmVudCA9PiB7CisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsK
KyAgICBzZWxlY3QuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pOworICAgIGlmICghd2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgY2hlY2tTY3JvbGxPZmZzZXRBbmRGb2N1c2VkRWxl
bWVudCgpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9KTsKKworZnVuY3Rpb24g
Y2hlY2tTY3JvbGxPZmZzZXRBbmRGb2N1c2VkRWxlbWVudCgpIHsKKyAgICBzaG91bGRCZSgiZG9j
dW1lbnQuYWN0aXZlRWxlbWVudCIsICJzZWxlY3QiKTsKKyAgICBzaG91bGRCZSgicGFnZVlPZmZz
ZXQiLCAiMCIpOworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4gewor
ICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF3YWl0
IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1dFNlc3Npb24oZm9jdXNCdXR0
b24pOworICAgIHNob3VsZEJlKCJkb2N1bWVudC5hY3RpdmVFbGVtZW50IiwgInNlbGVjdCIpOwor
ICAgIHNob3VsZEJlKCJwYWdlWU9mZnNldCIsICIwIik7CisgICAgZG9jdW1lbnQuYWN0aXZlRWxl
bWVudC5ibHVyKCk7CisgICAgYXdhaXQgVUlIZWxwZXIud2FpdEZvcklucHV0U2Vzc2lvblRvRGlz
bWlzcygpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dC1maWVsZC1mb2N1cy1wcmV2ZW50
LXNjcm9sbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHQtZmllbGQt
Zm9jdXMtcHJldmVudC1zY3JvbGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzZDI0Yjc4Nzg0
MDk1N2JmMzgzZGYxMjU3MjE1ZDRiY2E5NWY4NTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3RleHQtZmllbGQtZm9jdXMtcHJldmVudC1zY3JvbGwtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTIgQEAKK1ZlcmlmaWVzIHRoYXQgcHJvZ3JhbW1hdGljYWxseSBmb2N1
c2luZyBhbiBpbnB1dCBlbGVtZW50IHdpdGggcHJldmVudFNjcm9sbDogdHJ1ZSBkb2VzIG5vdCBj
YXVzZSB0aGUgcGFnZSB0byBzY3JvbGwuIFRvIHJ1biB0aGUgdGVzdCBtYW51YWxseSwgdGFwIG9y
IGNsaWNrIHRoZSBidXR0b24gYW5kIGNoZWNrIHRoYXQgdGhlIHBhZ2UgZG9lcyBub3Qgc2Nyb2xs
IHRvIHRoZSBib3R0b20uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRv
Y3VtZW50LmFjdGl2ZUVsZW1lbnQgaXMgaW5wdXQKK1BBU1MgcGFnZVlPZmZzZXQgaXMgMAorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitGb2N1cyBpbnB1
dAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHQtZmllbGQtZm9jdXMt
cHJldmVudC1zY3JvbGwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dC1maWVsZC1m
b2N1cy1wcmV2ZW50LXNjcm9sbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3NmMyZGFkM2U0OGE3NzljZjI3
ZGMyMWVmZjNmNDdhNTIwMTE0MTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3RleHQtZmllbGQtZm9jdXMtcHJldmVudC1zY3JvbGwuaHRtbApAQCAtMCwwICsxLDQ5
IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxl
Vmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0
IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorYnV0dG9u
IHsKKyAgICBtYXJnaW4tYm90dG9tOiA4MDAwcHg7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+CisgICAgPGRpdj48YnV0dG9uIGlkPSJmb2N1cyI+Rm9jdXMgPGNvZGU+aW5wdXQ8L2NvZGU+
PC9idXR0b24+PC9kaXY+CisgICAgPGlucHV0IHBsYWNlaG9sZGVyPSJUZXh0IGZpZWxkIj4KKzwv
Ym9keT4KKzxzY3JpcHQ+Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2Rlc2NyaXB0aW9uKCJWZXJp
ZmllcyB0aGF0IHByb2dyYW1tYXRpY2FsbHkgZm9jdXNpbmcgYW4gaW5wdXQgZWxlbWVudCB3aXRo
IDxjb2RlPnByZXZlbnRTY3JvbGw6IHRydWU8L2NvZGU+IGRvZXMgbm90IGNhdXNlIHRoZSBwYWdl
IHRvIHNjcm9sbC4gVG8gcnVuIHRoZSB0ZXN0IG1hbnVhbGx5LCB0YXAgb3IgY2xpY2sgdGhlIGJ1
dHRvbiBhbmQgY2hlY2sgdGhhdCB0aGUgcGFnZSBkb2VzIG5vdCBzY3JvbGwgdG8gdGhlIGJvdHRv
bS4iKTsKKworbGV0IGZvY3VzQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvY3Vz
Iik7CitpbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImlucHV0Iik7CisKK2ZvY3VzQnV0
dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZXZlbnQgPT4geworICAgIGV2ZW50LnByZXZl
bnREZWZhdWx0KCk7CisgICAgaW5wdXQuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pOwor
ICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgY2hlY2tTY3JvbGxPZmZzZXRB
bmRGb2N1c2VkRWxlbWVudCgpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9KTsK
KworZnVuY3Rpb24gY2hlY2tTY3JvbGxPZmZzZXRBbmRGb2N1c2VkRWxlbWVudCgpIHsKKyAgICBz
aG91bGRCZSgiZG9jdW1lbnQuYWN0aXZlRWxlbWVudCIsICJpbnB1dCIpOworICAgIHNob3VsZEJl
KCJwYWdlWU9mZnNldCIsICIwIik7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBhc3lu
YyAoKSA9PiB7CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50QW5kV2FpdEZvcklucHV0U2Vzc2lv
bihmb2N1c0J1dHRvbik7CisgICAgY2hlY2tTY3JvbGxPZmZzZXRBbmRGb2N1c2VkRWxlbWVudCgp
OworICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpOworICAgIGF3YWl0IFVJSGVscGVy
LndhaXRGb3JJbnB1dFNlc3Npb25Ub0Rpc21pc3MoKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30p
OworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMv
dWktaGVscGVyLmpzIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcwppbmRleCBh
YzYzY2FlNThkOTVkYzliYTE2NmU3NzE2NjU3Y2Q0YTg1NTc0NWY4Li40NTdiNDdlNjc1MDlhNDhl
MTA5NjhmNWZiZWNiZmQwYmFhM2U1ZTE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJj
ZXMvdWktaGVscGVyLmpzCisrKyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMK
QEAgLTU5MSw2ICs1OTEsOSBAQCB3aW5kb3cuVUlIZWxwZXIgPSBjbGFzcyBVSUhlbHBlciB7CiAK
ICAgICBzdGF0aWMgd2FpdEZvcklucHV0U2Vzc2lvblRvRGlzbWlzcygpCiAgICAgeworICAgICAg
ICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkgfHwgIXRoaXMuaXNJT1NGYW1pbHkoKSkKKyAgICAgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKwogICAgICAgICByZXR1cm4gbmV3IFByb21p
c2UocmVzb2x2ZSA9PiB7CiAgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAKICAg
ICAgICAgICAgICAgICAoZnVuY3Rpb24oKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>