<?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>111265</bug_id>
          
          <creation_ts>2013-03-03 01:43:19 -0800</creation_ts>
          <short_desc>[GTK] Add WebKitWebViewGroup to WebKit2 GTK+ API</short_desc>
          <delta_ts>2013-04-25 09:46:04 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>99081</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gdesmott</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rego</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>845980</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-03 01:43:19 -0800</bug_when>
    <thetext>In the current API the settings are always shared by all web views, because they are always created on the default page group. This makes impossible to have different settings on different web views. We need to expose the page group in the API, so that users can create web views on a group different than the default one to have their own settings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845983</commentid>
    <comment_count>1</comment_count>
      <attachid>191131</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-03 02:13:47 -0800</bug_when>
    <thetext>Created attachment 191131
Patch

Note that this patch is compatible with current API because web views are created in the default page group by default, so apps currently using the API won&apos;t be affected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845984</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-03 02:14:19 -0800</bug_when>
    <thetext>Adding WebKit2 owners to the CC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845985</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-03 02:20:25 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845986</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-03 02:20:41 -0800</bug_when>
    <thetext>Attachment 191131 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/GNUmakefile.list.am&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitSettingsPrivate.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebContextPrivate.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebViewGroup.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebViewGroup.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebViewGroupPrivate.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk.types&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/tests/GNUmakefile.am&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebViewGroup.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/webkit2.h&apos;]&quot; exit_code: 1
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebViewGroup.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&quot;
Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebViewGroup.cpp:74:  Use 0 instead of NULL.  [readability/null] [5]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/webkit2.h&quot;
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845989</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-03 02:30:13 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Attachment 191131 [details] did not pass style-queue:
&gt; 
&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebViewGroup.cpp:74:  Use 0 instead of NULL.  [readability/null] [5]

This NULL is a sentinel, we can&apos;t use 0 ins this particular case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845995</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-03 03:38:23 -0800</bug_when>
    <thetext>It seems to me that GTK+ EWS is failing because it builds with WebKit2 disabled, but tries to generate the API docs for WebKit2. 

Failed to run &quot;[&apos;Tools/Scripts/build-webkit&apos;, &apos;--release&apos;, &apos;--gtk&apos;, &apos;--update-gtk&apos;, &apos;--no-webkit2&apos;, &apos;--makeargs=&quot;-j8&quot;&apos;]&quot; exit_code: 1

Copying template files to output directory...
Running gtkdoc-scan
Running gtkdoc-scangobj
webkit2gtk-scan.o: In function `get_object_types&apos;:
webkit2gtk-scan.c:(.text+0x307): undefined reference to `webkit_web_view_group_get_type&apos;
collect2: error: ld returned 1 exit status
Linking of scanner failed: 

I ran generate-gtkdoc locally and it worked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845996</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-03 03:39:55 -0800</bug_when>
    <thetext>Now the box is green, I don&apos;t understand what&apos;s going on with GTK EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846027</commentid>
    <comment_count>8</comment_count>
      <attachid>191131</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-03-03 09:36:49 -0800</bug_when>
    <thetext>Comment on attachment 191131
Patch

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

Very nice. Looks good to me.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:624
&gt; +            _(&quot;Web View Group&quot;),

Nit: WebView

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:625
&gt; +            _(&quot;The web view group of the view&quot;),

Maybe this should say &quot;The WebKitWebViewGroup of the view?&quot;

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewGroup.cpp:41
&gt; + * To create a #WebKitWebView on a different WebKitWebViewGroup you can use

Nit: on -&gt; in</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847059</commentid>
    <comment_count>9</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-03-04 17:08:28 -0800</bug_when>
    <thetext>I think the GTK+ EWS that failed to build (rego&apos;s) did not finish reporting the error for some reason, since there is no comment in the bug and the patch did not get cq-, then another EWS bot got the patch from the queue and it passed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847130</commentid>
    <comment_count>10</comment_count>
      <attachid>191131</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-03-04 17:59:08 -0800</bug_when>
    <thetext>Comment on attachment 191131
Patch

WebCore makes a distinction of per-Page settings and PageGroup settings, so that you can still have different settings that make sense for each page, but can also have PageGroup-wide settings (such as local storage path), have you considered using that same approach at the API level?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847427</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-05 01:32:15 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 191131 [details])
&gt; WebCore makes a distinction of per-Page settings and PageGroup settings, so that you can still have different settings that make sense for each page, but can also have PageGroup-wide settings (such as local storage path), have you considered using that same approach at the API level?

There are no GroupSettings in WebKit2, I think those are per process and handled by the WebContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847438</commentid>
    <comment_count>12</comment_count>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2013-03-05 01:40:29 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; I think the GTK+ EWS that failed to build (rego&apos;s) did not finish reporting the error for some reason, since there is no comment in the bug and the patch did not get cq-, then another EWS bot got the patch from the queue and it passed.

My EWS doesn&apos;t have EditBugs permission yet, that&apos;s why even if it fails it doesn&apos;t add comments to the bug. I&apos;ve requested it several times by IRC without success :-(. I&apos;ll try again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847783</commentid>
    <comment_count>13</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-03-05 10:14:54 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; My EWS doesn&apos;t have EditBugs permission yet, that&apos;s why even if it fails it doesn&apos;t add comments to the bug. I&apos;ve requested it several times by IRC without success :-(. I&apos;ll try again.

Would be good to try to figure out why it failed, though, while the other EWS passed, perhaps it has left-overs that caused webkit2 docs to be built for some reason?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848530</commentid>
    <comment_count>14</comment_count>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2013-03-06 00:03:08 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; My EWS doesn&apos;t have EditBugs permission yet, that&apos;s why even if it fails it doesn&apos;t add comments to the bug. I&apos;ve requested it several times by IRC without success :-(. I&apos;ll try again.
&gt; 
&gt; Would be good to try to figure out why it failed, though, while the other EWS passed, perhaps it has left-overs that caused webkit2 docs to be built for some reason?

I&apos;ve tried again the patch in the EWS and it failed again:
Generating WebKit2 documentation...
Copying template files to output directory...
Running gtkdoc-scan
Running gtkdoc-scangobj
webkit2gtk-scan.o: In function `get_object_types&apos;:
webkit2gtk-scan.c:(.text+0x307): undefined reference to `webkit_web_view_group_get_type&apos;
collect2: error: ld returned 1 exit status
Linking of scanner failed: 
Traceback (most recent call last):
  File &quot;/home/igalia/mrego/WebKit/Tools/gtk/generate-gtkdoc&quot;, line 203, in &lt;module&gt;
    saw_webkit2_warnings = generate_doc(generator)
  File &quot;/home/igalia/mrego/WebKit/Tools/gtk/generate-gtkdoc&quot;, line 154, in generate_doc
    generator.generate(html=&apos;--skip-html&apos; not in sys.argv)
  File &quot;/home/igalia/mrego/WebKit/Tools/gtk/gtkdoc.py&quot;, line 137, in generate
    self._run_gtkdoc_scangobj()
  File &quot;/home/igalia/mrego/WebKit/Tools/gtk/gtkdoc.py&quot;, line 314, in _run_gtkdoc_scangobj
    env=env, cwd=self.output_dir)
  File &quot;/home/igalia/mrego/WebKit/Tools/gtk/gtkdoc.py&quot;, line 198, in _run_command
    % (args[0], process.returncode))
Exception: gtkdoc-scangobj produced a non-zero return code 1

 gtkdoc did not build without warnings


The real problem was that I maybe did a build without &quot;--disable-webkit2&quot; in the EWS before, and that was the reason why the file &quot;WebKitBuild/Release/Source/WebKit2/webkit2gtk-3.0.pc&quot; exists and it tried to generate WK2 documentation.

I did a clean build which fixed the problem. So, sorry for the noise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857251</commentid>
    <comment_count>15</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-03-18 10:17:34 -0700</bug_when>
    <thetext>Other than the few nits, I think this is ready for owner review. Anders or Sam, do you mind double-checking that this is okay with you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879868</commentid>
    <comment_count>16</comment_count>
      <attachid>199241</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-04-23 08:22:23 -0700</bug_when>
    <thetext>Created attachment 199241
Rebased patch

Rebased and addressed review nits. Ping WebKit2 owners</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879869</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-23 08:24:15 -0700</bug_when>
    <thetext>Attachment 199241 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/GNUmakefile.list.am&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitSettingsPrivate.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebContextPrivate.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebViewGroup.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebViewGroup.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebViewGroupPrivate.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk.types&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/tests/GNUmakefile.am&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebViewGroup.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/webkit2.h&apos;]&quot; exit_code: 1
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebViewGroup.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&quot;
Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebViewGroup.cpp:74:  Use 0 instead of NULL.  [readability/null] [5]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/webkit2.h&quot;
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879891</commentid>
    <comment_count>18</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-04-23 09:32:26 -0700</bug_when>
    <thetext>gtk-wk2 failure seems to be related to freedesktop.org git issues while updating dependencies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881259</commentid>
    <comment_count>19</comment_count>
      <attachid>199241</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-04-25 08:16:43 -0700</bug_when>
    <thetext>Comment on attachment 199241
Rebased patch

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

&gt; Source/WebKit2/ChangeLog:75
&gt; +        (webkit_web_view_group_get_settings): Get the settins of a

Typo, settins.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881319</commentid>
    <comment_count>20</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-04-25 09:46:04 -0700</bug_when>
    <thetext>Committed r149117: &lt;http://trac.webkit.org/changeset/149117&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191131</attachid>
            <date>2013-03-03 02:13:47 -0800</date>
            <delta_ts>2013-04-23 08:22:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-web-view-group.diff</filename>
            <type>text/plain</type>
            <size>52752</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjZTE4YWRkLi40YzAxZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA1
IEBACisyMDEzLTAzLTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBBZGQgV2ViS2l0V2ViVmlld0dyb3VwIHRvIFdlYktpdDIgR1RL
KyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
MTI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElu
IHRoZSBjdXJyZW50IEFQSSB0aGUgc2V0dGluZ3MgYXJlIGFsd2F5cyBzaGFyZWQgYnkgYWxsIHdl
YgorICAgICAgICB2aWV3cywgYmVjYXVzZSB0aGV5IGFyZSBhbHdheXMgY3JlYXRlZCBvbiB0aGUg
ZGVmYXVsdCBwYWdlCisgICAgICAgIGdyb3VwLiBUaGlzIG1ha2VzIGltcG9zc2libGUgdG8gaGF2
ZSBkaWZmZXJlbnQgc2V0dGluZ3Mgb24KKyAgICAgICAgZGlmZmVyZW50IHdlYiB2aWV3cy4gRXhw
b3NlIHRoZSBwYWdlIGdyb3VwIGluIHRoZSBBUEksCisgICAgICAgIHNvIHRoYXQgdXNlcnMgY2Fu
IGNyZWF0ZSB3ZWIgdmlld3Mgb24gYSBncm91cCBkaWZmZXJlbnQgdGhhbiB0aGUKKyAgICAgICAg
ZGVmYXVsdCBvbmUgdG8gaGF2ZSB0aGVpciBvd24gc2V0dGluZ3MuCisKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5saXN0LmFtOiBBZGQgbmV3IGZpbGVzIHRvIGNvbXBpbGF0aW9uLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcDoKKyAgICAgICAgKHdlYmtpdFNl
dHRpbmdzR2V0UHJlZmVyZW5jZXMpOiBIZWxwZXIgcHJpdmF0ZSBtZXRob2QgdG8gZ2V0IHRoZQor
ICAgICAgICBXZWJQcmVmZXJlbmNlcyB3cmFwcGVkIGJ5IGEgV2ViS2l0U2V0dGluZ3Mgb2JqZWN0
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzUHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAg
ICAoX1dlYktpdFdlYkNvbnRleHRQcml2YXRlKTogQWRkIGEgZGVmYXVsdCBXZWJLaXRXZWJWaWV3
R3JvdXAuCisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcpOiBD
cmVhdGUgdGhlIFdlYlBhZ2VQcm94eQorICAgICAgICB3aXRoIHRoZSBXZWJQYWdlR3JvdXAgb2Yg
dGhlIGdpdmVuIFdlYktpdFdlYlZpZXdHcm91cC4KKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRH
ZXREZWZhdWx0V2ViVmlld0dyb3VwKTogSGVscGVyIHByaXZhdGUgbWV0aG9kIHRvCisgICAgICAg
IGdldCB0aGUgZGVmYXVsdCBXZWJLaXRXZWJWaWV3R3JvdXAuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3UHJpdmF0
ZSk6IEFkZCBhIFdlYktpdFdlYlZpZXdHcm91cCBpbiBjYXNlIHRoZSB2aWV3CisgICAgICAgIGlz
IGNyZWF0ZWQgd2l0aCBhIGdyb3VwLgorICAgICAgICAod2Via2l0V2ViVmlld1VwZGF0ZVNldHRp
bmdzKTogS2VlcCBhIHJlZmVyZW5jZSBvZiB0aGUgZ3JvdXAKKyAgICAgICAgc2V0dGluZ3MgdG8g
YmUgYWJsZSB0byBkaXNjb25uZWN0IHRoZSBzaWduYWxzIHdoZW4gdGhlIHNldHRpbmdzCisgICAg
ICAgIG9iamVjdCBpcyByZXBsYWNlZCBpbiB0aGUgdmlldyBncm91cCBhbmQgY29ubmVjdCB0byB0
aGUgc2lnbmFscworICAgICAgICBmb3IgdGhlIGN1c3RvbSBzZXR0aW5ncy4KKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdTZXR0aW5nc0NoYW5nZWQpOiBEaXNjb25uZWN0IHRoZSBzaWduYWxzIGZvciB0
aGUKKyAgICAgICAgcHJldmlvdXMgc2V0dGluZ3MgYW5kIHNldCB0aGUgbmV3IHNldHRpbmdzLgor
ICAgICAgICAod2Via2l0V2ViVmlld0Rpc2Nvbm5lY3RTZXR0aW5nc0NoYW5nZWRTaWduYWxIYW5k
bGVyKTogRGlzY29ubmVjdAorICAgICAgICBub3RpZnk6OnNldHRpbmdzIHNpZ25hbCBvZiBXZWJL
aXRXZWJWaWV3R3JvdXAuCisgICAgICAgICh3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQpOiBQYXNz
IHRoZSBjdXJyZW50IFdlYktpdFdlYlZpZXdHcm91cCB0bworICAgICAgICB3ZWJraXRXZWJDb250
ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoKS4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdTZXRQcm9w
ZXJ0eSk6IEFkZCBzZXR0ZXIgZm9yIGdyb3VwIHByb3BlcnR5LgorICAgICAgICAod2Via2l0V2Vi
Vmlld0dldFByb3BlcnR5KTogQWRkIGdldHRlciBmb3IgZ3JvdXAgcHJvcGVydHkuCisgICAgICAg
ICh3ZWJraXRXZWJWaWV3RGlzcG9zZSk6IENhbGwKKyAgICAgICAgd2Via2l0V2ViVmlld0Rpc2Nv
bm5lY3RTZXR0aW5nc0NoYW5nZWRTaWduYWxIYW5kbGVyKCkuCisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfY2xhc3NfaW5pdCk6IEFkZCBXZWJLaXRXZWJWaWV3Omdyb3VwIHByb3BlcnR5LgorICAg
ICAgICAod2Via2l0V2ViVmlld0hhbmRsZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTogVXNlCisg
ICAgICAgIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MoKS4KKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19uZXdfd2l0aF9ncm91cCk6IENyZWF0ZSBhIG5ldyB3ZWIgdmlldyB3aXRoIHRoZQor
ICAgICAgICBnaXZlbiBXZWJLaXRXZWJWaWV3R3JvdXAuCisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2dyb3VwKTogUmV0dXJuIHRoZSBjdXJyZW50IFdlYktpdFdlYlZpZXdHcm91cAorICAg
ICAgICBvciB0aGUgZGVmYXVsdCBvbmUgaWYgdGhlIHZpZXcgd2FzIG5vdCBjcmVhdGVkIHdpdGgK
KyAgICAgICAgd2Via2l0X3dlYl92aWV3X25ld193aXRoX2dyb3VwKCkuCisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKTogU2V0IHRoZSBzZXR0aW5ncyBvZiB0aGUgY3VycmVu
dAorICAgICAgICBXZWJLaXRXZWJWaWV3R3JvdXAuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3NldHRpbmdzKTogR2V0IHRoZSBzZXR0aW5ncyBvZiB0aGUgY3VycmVudAorICAgICAgICBX
ZWJLaXRXZWJWaWV3R3JvdXAuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X3pvb21fbGV2
ZWwpOiBVc2UKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncygpLgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X2dldF96b29tX2xldmVsKTogRGl0dG8uCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdHcm91cC5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlZp
ZXdHcm91cFByaXZhdGUpOgorICAgICAgICAod2Via2l0V2ViVmlld0dyb3VwU2V0UHJvcGVydHkp
OgorICAgICAgICAod2Via2l0V2ViVmlld0dyb3VwR2V0UHJvcGVydHkpOgorICAgICAgICAod2Vi
a2l0V2ViVmlld0dyb3VwQ29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dy
b3VwX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0V2ViVmlld0dyb3VwQXR0YWNoU2V0dGlu
Z3NUb1BhZ2VHcm91cCk6IFNldCB0aGUKKyAgICAgICAgV2ViUHJlZmVyZW5jZXMgb2YgdGhlIGN1
cnJlbnQgV2ViS2l0U2V0dGluZ3MgdG8gdGhlIFdlYlBhZ2VHcm91cC4KKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdHcm91cENyZWF0ZSk6IENyZWF0ZSBhIG5ldyBXZWJLaXRXZWJWaWV3R3JvdXAgZm9y
CisgICAgICAgIHRoZSBnaXZlbiBXZWJQYWdlR3JvdXAuCisgICAgICAgICh3ZWJraXRXZWJWaWV3
R3JvdXBHZXRQYWdlR3JvdXApOiBIZWxwZXIgcHJpdmF0ZSBtZXRob2QgdG8gZ2V0IHRoZQorICAg
ICAgICBXZWJQYWdlR3JvdXAgd3JhcHBlZCBieSB0aGUgV2ViS2l0V2ViVmlld0dyb3VwLgorICAg
ICAgICAod2Via2l0X3dlYl92aWV3X2dyb3VwX25ldyk6IENyZWF0ZSBhIG5ldyBXZWJLaXRXZWJW
aWV3R3JvdXAuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfZ2V0X25hbWUpOiBSZXR1
cm4gdGhlIG5hbWUgb2YgYQorICAgICAgICBXZWJLaXRXZWJWaWV3R3JvdXAuCisgICAgICAgICh3
ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfZ2V0X3NldHRpbmdzKTogR2V0IHRoZSBzZXR0aW5zIG9mIGEK
KyAgICAgICAgV2ViS2l0V2ViVmlld0dyb3VwLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dy
b3VwX3NldF9zZXR0aW5ncyk6IFNldCBuZXcgc2V0dGluZ3Mgb2YgYQorICAgICAgICBXZWJLaXRX
ZWJWaWV3R3JvdXAuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0dy
b3VwLmg6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlZpZXdHcm91cCk6CisgICAgICAgIChf
V2ViS2l0V2ViVmlld0dyb3VwQ2xhc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdHcm91cFByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbDogQWRkCisgICAgICAgIFdlYktpdFdlYlZp
ZXdHcm91cCBzZWN0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZCBuZXcgc3ltYm9scy4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXM6IEFkZAorICAgICAgICB3ZWJraXRfd2ViX3Zp
ZXdfZ3JvdXBfZ2V0X3R5cGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvR05V
bWFrZWZpbGUuYW06IEFkZCBuZXcgZmlsZXMgdG8KKyAgICAgICAgY29tcGlsYXRpb24uCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAg
ICAgICAodGVzdFdlYlZpZXdTZXR0aW5ncyk6IFdlIGNhbid0IHdhdGNoIHNldHRpbmdzIGluIHRo
ZSBkZWZhdWx0IHZpZXcKKyAgICAgICAgZ3JvdXAgYW55bW9yZSwgYmVjYXVzZSB0aGV5IGFyZSBu
b3QgcmVsZWFzZWQgd2l0aCB0aGUgd2ViIHZpZXcgYnV0CisgICAgICAgIHdpdGggdGhlIHdlYiBj
b250ZXh0IHRoYXQgaXMgZnJlZWQgYWZ0ZXIgdGhlIFRlc3QgZGVzdHJ1Y3Rvci4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcDogQWRk
ZWQuCisgICAgICAgICh0ZXN0V2ViVmlld0dyb3VwRGVmYXVsdCk6CisgICAgICAgICh0ZXN0V2Vi
Vmlld0dyb3VwTmV3R3JvdXApOgorICAgICAgICAodGVzdFdlYlZpZXdOZXdXaXRoR3JvdXApOgor
ICAgICAgICAodGVzdFdlYlZpZXdHcm91cFNldHRpbmdzKToKKyAgICAgICAgKGJlZm9yZUFsbCk6
CisgICAgICAgIChhZnRlckFsbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0
Mi5oOiBJbmNsdWRlIFdlYktpdFdlYlZpZXdHcm91cC5oLgorCiAyMDEzLTAzLTAxICBTaGVyaWZm
IEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTQ0NDIyIGFuZCByMTQ0NDI0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggOTE3Y2U0Mi4uNzIzNjI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0xMjgsNiArMTI4LDcgQEAgd2Via2l0Mmd0a19oX2FwaSArPSBcCiAJJChXZWJLaXQy
KS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJSZXNvdXJjZS5oIFwKIAkkKFdlYktpdDIpL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdHcm91cC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdpbmRvd1Byb3BlcnRpZXMuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQyLmgKIApAQCAtNzcyLDYgKzc3Myw5IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VBY2Nlc3Np
YmxlLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlQWNjZXNzaWJsZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3R3JvdXAuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwUHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2luZG93UHJvcGVydGllcy5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzUHJpdmF0
ZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNl
dHRpbmdzLmNwcAppbmRleCBlZGRlMjg5Li5jMGYxYzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCkBAIC0zMyw5ICszMyw2
IEBACiAKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0U2V0dGlu
Z3NQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCi0jaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCi0jaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1VzZXJBZ2VudEd0ay5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNzIsMTggKzY5LDE5IEBAIHN0cnVjdCBfV2ViS2l0U2V0
dGluZ3NQcml2YXRlIHsKIAogLyoqCiAgKiBTRUNUSU9OOldlYktpdFNldHRpbmdzCi0gKiBAc2hv
cnRfZGVzY3JpcHRpb246IENvbnRyb2wgdGhlIGJlaGF2aW91ciBvZiBhICNXZWJLaXRXZWJWaWV3
CisgKiBAc2hvcnRfZGVzY3JpcHRpb246IENvbnRyb2wgdGhlIGJlaGF2aW91ciBvZiAjV2ViS2l0
V2ViVmlldzwhLS0gLS0+cworICogQHNlZV9hbHNvOiAjV2ViS2l0V2ViVmlld0dyb3VwLCAjV2Vi
S2l0V2ViVmlldwogICoKLSAqICNXZWJLaXRTZXR0aW5ncyBjYW4gYmUgYXBwbGllZCB0byBhICNX
ZWJLaXRXZWJWaWV3IHRvIGNvbnRyb2wgdGV4dCBjaGFyc2V0LAotICogY29sb3IsIGZvbnQgc2l6
ZXMsIHByaW50aW5nIG1vZGUsIHNjcmlwdCBzdXBwb3J0LCBsb2FkaW5nIG9mIGltYWdlcyBhbmQg
dmFyaW91cyBvdGhlciB0aGluZ3MuCisgKiAjV2ViS2l0U2V0dGluZ3MgY2FuIGJlIGFwcGxpZWQg
dG8gYSAjV2ViS2l0V2ViVmlld0dyb3VwIHRvIGNvbnRyb2wgdGV4dCBjaGFyc2V0LAorICogY29s
b3IsIGZvbnQgc2l6ZXMsIHByaW50aW5nIG1vZGUsIHNjcmlwdCBzdXBwb3J0LCBsb2FkaW5nIG9m
IGltYWdlcyBhbmQgdmFyaW91cworICogb3RoZXIgdGhpbmdzIG9uIHRoZSAjV2ViS2l0V2ViVmll
dzwhLS0gLS0+cyBvZiB0aGUgZ3JvdXAuCiAgKiBBZnRlciBjcmVhdGlvbiwgYSAjV2ViS2l0U2V0
dGluZ3Mgb2JqZWN0IGNvbnRhaW5zIGRlZmF1bHQgc2V0dGluZ3MuCiAgKgogICogPGluZm9ybWFs
ZXhhbXBsZT48cHJvZ3JhbWxpc3Rpbmc+Ci0gKiAvPCEtLSAtLT4qIENyZWF0ZSBhIG5ldyAjV2Vi
S2l0U2V0dGluZ3MgYW5kIGRpc2FibGUgSmF2YVNjcmlwdC4gKjwhLS0gLS0+LwotICogV2ViS2l0
U2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3NldHRpbmdzX25ldyAoKTsKLSAqIGdfb2JqZWN0
X3NldCAoR19PQkpFQ1QgKHNldHRpbmdzKSwgImVuYWJsZS1qYXZhc2NyaXB0IiwgRkFMU0UsIE5V
TEwpOworICogLzwhLS0gLS0+KiBEaXNhYmxlIEphdmFTY3JpcHQuICo8IS0tIC0tPi8KKyAqIFdl
YktpdFNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19ncm91cF9nZXRfc2V0dGlu
Z3MgKG15X3ZpZXdfZ3JvdXApOworICogd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNj
cmlwdCAoc2V0dGluZ3MsIEZBTFNFKTsKICAqCi0gKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRp
bmdzIChXRUJLSVRfV0VCX1ZJRVcgKG15X3dlYnZpZXcpLCBzZXR0aW5ncyk7CiAgKiA8L3Byb2dy
YW1saXN0aW5nPjwvaW5mb3JtYWxleGFtcGxlPgogICovCiAKQEAgLTEwNzUsMTggKzEwNzMsMTYg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3NldHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0U2V0dGluZ3ND
bGFzcyoga2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CiB9CiAKLXZvaWQg
d2Via2l0U2V0dGluZ3NBdHRhY2hTZXR0aW5nc1RvUGFnZShXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MsIFdlYlBhZ2VQcm94eSogcGFnZSkKK1dlYlByZWZlcmVuY2VzKiB3ZWJraXRTZXR0aW5nc0dl
dFByZWZlcmVuY2VzKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKIHsKLSAgICBwYWdlLT5wYWdl
R3JvdXAoKS0+c2V0UHJlZmVyZW5jZXMoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgp
KTsKLSAgICBwYWdlLT5zZXRDYW5SdW5Nb2RhbChzZXR0aW5ncy0+cHJpdi0+YWxsb3dNb2RhbERp
YWxvZ3MpOwotICAgIHBhZ2UtPnNldEN1c3RvbVVzZXJBZ2VudChTdHJpbmc6OmZyb21VVEY4KHNl
dHRpbmdzLT5wcml2LT51c2VyQWdlbnQuZGF0YSgpKSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5w
cml2LT5wcmVmZXJlbmNlcy5nZXQoKTsKIH0KIAogLyoqCiAgKiB3ZWJraXRfc2V0dGluZ3NfbmV3
OgogICoKICAqIENyZWF0ZXMgYSBuZXcgI1dlYktpdFNldHRpbmdzIGluc3RhbmNlIHdpdGggZGVm
YXVsdCB2YWx1ZXMuIEl0IG11c3QKLSAqIGJlIG1hbnVhbGx5IGF0dGFjaGVkIHRvIGEgI1dlYktp
dFdlYlZpZXcuCisgKiBiZSBtYW51YWxseSBhdHRhY2hlZCB0byBhICNXZWJLaXRXZWJWaWV3R3Jv
dXAuCiAgKiBTZWUgYWxzbyB3ZWJraXRfc2V0dGluZ3NfbmV3X3dpdGhfc2V0dGluZ3MoKS4KICAq
CiAgKiBSZXR1cm5zOiBhIG5ldyAjV2ViS2l0U2V0dGluZ3MgaW5zdGFuY2UuCkBAIC0xMTAzLDcg
KzEwOTksNyBAQCBXZWJLaXRTZXR0aW5ncyogd2Via2l0X3NldHRpbmdzX25ldygpCiAgKiAgICAl
TlVMTC10ZXJtaW5hdGVkCiAgKgogICogQ3JlYXRlcyBhIG5ldyAjV2ViS2l0U2V0dGluZ3MgaW5z
dGFuY2Ugd2l0aCB0aGUgZ2l2ZW4gc2V0dGluZ3MuIEl0IG11c3QKLSAqIGJlIG1hbnVhbGx5IGF0
dGFjaGVkIHRvIGEgI1dlYktpdFdlYlZpZXcuCisgKiBiZSBtYW51YWxseSBhdHRhY2hlZCB0byBh
ICNXZWJLaXRXZWJWaWV3R3JvdXAuCiAgKgogICogUmV0dXJuczogYSBuZXcgI1dlYktpdFNldHRp
bmdzIGluc3RhbmNlLgogICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRTZXR0aW5nc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzUHJpdmF0ZS5oCmluZGV4IDFlYzI1MmJjLi5jMjNhOGNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0
aW5nc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRTZXR0aW5nc1ByaXZhdGUuaApAQCAtMjcsNyArMjcsOCBAQAogI2RlZmluZSBXZWJLaXRTZXR0
aW5nc1ByaXZhdGVfaAogCiAjaW5jbHVkZSAiV2ViS2l0U2V0dGluZ3MuaCIKKyNpbmNsdWRlICJX
ZWJQcmVmZXJlbmNlcy5oIgogCi12b2lkIHdlYmtpdFNldHRpbmdzQXR0YWNoU2V0dGluZ3NUb1Bh
Z2UoV2ViS2l0U2V0dGluZ3MqLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOworV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlcyogd2Via2l0U2V0dGluZ3NHZXRQcmVmZXJlbmNlcyhXZWJLaXRTZXR0aW5ncyop
OwogCiAjZW5kaWYgLy8gV2ViS2l0U2V0dGluZ3NQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggNjg5
NjEzYi4uYmQzODY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJX
ZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRl
eHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCisjaW5j
bHVkZSAiV2ViS2l0V2ViVmlld0dyb3VwUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNl
Q2FjaGVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgpAQCAtMTQzLDYgKzE0NCw3IEBAIHN0cnVj
dCBfV2ViS2l0V2ViQ29udGV4dFByaXZhdGUgewogICAgIFdlYktpdFRMU0Vycm9yc1BvbGljeSB0
bHNFcnJvcnNQb2xpY3k7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXZWJLaXRXZWJWaWV3Kj4g
d2ViVmlld3M7CisgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3R3JvdXA+IGRlZmF1bHRXZWJWaWV3
R3JvdXA7CiB9OwogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07
CkBAIC04NTUsMTIgKzg1NywxNyBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hVUklS
ZXF1ZXN0KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIHVpbnQ2NF90IHJlcQogICAgIGNvbnRl
eHQtPnByaXYtPnVyaVNjaGVtZVJlcXVlc3RzLnJlbW92ZShyZXF1ZXN0SUQpOwogfQogCi12b2lk
IHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0LCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQordm9pZCB3ZWJraXRXZWJDb250ZXh0Q3Jl
YXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgV2ViS2l0V2ViVmll
dyogd2ViVmlldywgV2ViS2l0V2ViVmlld0dyb3VwKiB3ZWJWaWV3R3JvdXApCiB7CiAgICAgV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2ViVmll
dyk7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKHdlYlZpZXdCYXNlLCBjb250
ZXh0LT5wcml2LT5jb250ZXh0LmdldCgpLCAwKTsKKyAgICBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91
cCA9IHdlYlZpZXdHcm91cCA/IHdlYmtpdFdlYlZpZXdHcm91cEdldFBhZ2VHcm91cCh3ZWJWaWV3
R3JvdXApIDogMDsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2Uod2ViVmlld0Jh
c2UsIGNvbnRleHQtPnByaXYtPmNvbnRleHQuZ2V0KCksIHBhZ2VHcm91cCk7CisKICAgICBXZWJQ
YWdlUHJveHkqIHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2Uod2ViVmlld0Jhc2UpOwog
ICAgIGNvbnRleHQtPnByaXYtPndlYlZpZXdzLnNldChwYWdlLT5wYWdlSUQoKSwgd2ViVmlldyk7
CisKKyAgICBpZiAoIXBhZ2VHcm91cCAmJiAhY29udGV4dC0+cHJpdi0+ZGVmYXVsdFdlYlZpZXdH
cm91cCkKKyAgICAgICAgY29udGV4dC0+cHJpdi0+ZGVmYXVsdFdlYlZpZXdHcm91cCA9IGFkb3B0
R1JlZih3ZWJraXRXZWJWaWV3R3JvdXBDcmVhdGUocGFnZS0+cGFnZUdyb3VwKCkpKTsKIH0KIAog
dm9pZCB3ZWJraXRXZWJDb250ZXh0V2ViVmlld0Rlc3Ryb3llZChXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0LCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQpAQCAtODczLDMgKzg4MCw4IEBAIFdlYktp
dFdlYlZpZXcqIHdlYmtpdFdlYkNvbnRleHRHZXRXZWJWaWV3Rm9yUGFnZShXZWJLaXRXZWJDb250
ZXh0KiBjb250ZXh0LCBXZWJQCiB7CiAgICAgcmV0dXJuIHBhZ2UgPyBjb250ZXh0LT5wcml2LT53
ZWJWaWV3cy5nZXQocGFnZS0+cGFnZUlEKCkpIDogMDsKIH0KKworV2ViS2l0V2ViVmlld0dyb3Vw
KiB3ZWJraXRXZWJDb250ZXh0R2V0RGVmYXVsdFdlYlZpZXdHcm91cChXZWJLaXRXZWJDb250ZXh0
KiBjb250ZXh0KQoreworICAgIHJldHVybiBjb250ZXh0LT5wcml2LT5kZWZhdWx0V2ViVmlld0dy
b3VwLmdldCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKaW5kZXggOWNkNmYyMy4uODFjNDczYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29u
dGV4dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0UHJpdmF0ZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFVSSVNjaGVtZVJlcXVlc3QuaCIKICNpbmNsdWRl
ICJXZWJLaXRXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0dyb3VwLmgiCiAj
aW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKIAogV2ViS2l0OjpXZWJDb250
ZXh0KiB3ZWJraXRXZWJDb250ZXh0R2V0Q29udGV4dChXZWJLaXRXZWJDb250ZXh0Kik7CkBAIC00
Miw4ICs0Myw5IEBAIFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkqIHdlYmtpdFdl
YkNvbnRleHRHZXRSZXF1ZXN0TWFuYWdlcihXZWJLaXRXZWJDCiB2b2lkIHdlYmtpdFdlYkNvbnRl
eHRSZWNlaXZlZFVSSVJlcXVlc3QoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdFVSSVNjaGVtZVJl
cXVlc3QqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dERpZEZhaWxUb0xvYWRVUklSZXF1ZXN0KFdl
YktpdFdlYkNvbnRleHQqLCB1aW50NjRfdCByZXF1ZXN0SUQpOwogdm9pZCB3ZWJraXRXZWJDb250
ZXh0RGlkRmluaXNoVVJJUmVxdWVzdChXZWJLaXRXZWJDb250ZXh0KiwgdWludDY0X3QgcmVxdWVz
dElEKTsKLXZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdl
YkNvbnRleHQqLCBXZWJLaXRXZWJWaWV3Kik7Cit2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQ
YWdlRm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0V2ViVmlldyosIFdlYktpdFdl
YlZpZXdHcm91cCopOwogdm9pZCB3ZWJraXRXZWJDb250ZXh0V2ViVmlld0Rlc3Ryb3llZChXZWJL
aXRXZWJDb250ZXh0KiwgV2ViS2l0V2ViVmlldyopOwogV2ViS2l0V2ViVmlldyogd2Via2l0V2Vi
Q29udGV4dEdldFdlYlZpZXdGb3JQYWdlKFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXQ6OldlYlBh
Z2VQcm94eSopOworV2ViS2l0V2ViVmlld0dyb3VwKiB3ZWJraXRXZWJDb250ZXh0R2V0RGVmYXVs
dFdlYlZpZXdHcm91cChXZWJLaXRXZWJDb250ZXh0Kik7CiAKICNlbmRpZiAvLyBXZWJLaXRXZWJD
b250ZXh0UHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDIzMjBlMWMuLjQyNjYxYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC00NSw3
ICs0NSw2IEBACiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFJl
c3BvbnNlUG9saWN5RGVjaXNpb24uaCIKICNpbmNsdWRlICJXZWJLaXRTY3JpcHREaWFsb2dQcml2
YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0U2V0dGluZ3NQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0VUlDbGllbnQuaCIKICNpbmNsdWRlICJXZWJLaXRVUklSZXF1ZXN0UHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYktpdFVSSVJlc3BvbnNlUHJpdmF0ZS5oIgpAQCAtNTMsNiArNTIsNyBAQAogI2lu
Y2x1ZGUgIldlYktpdFdlYkluc3BlY3RvclByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJS
ZXNvdXJjZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIK
KyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3R3JvdXBQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
V2ViVmlld1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzUHJpdmF0
ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KQEAgLTEyMiw2ICsxMjIs
NyBAQCBlbnVtIHsKICAgICBQUk9QXzAsCiAKICAgICBQUk9QX1dFQl9DT05URVhULAorICAgIFBS
T1BfR1JPVVAsCiAgICAgUFJPUF9USVRMRSwKICAgICBQUk9QX0VTVElNQVRFRF9MT0FEX1BST0dS
RVNTLAogICAgIFBST1BfRkFWSUNPTiwKQEAgLTE1OCw2ICsxNTksOCBAQCBzdHJ1Y3QgX1dlYktp
dFdlYlZpZXdQcml2YXRlIHsKIAogICAgIEdSZWZQdHI8V2ViS2l0QmFja0ZvcndhcmRMaXN0PiBi
YWNrRm9yd2FyZExpc3Q7CiAgICAgR1JlZlB0cjxXZWJLaXRTZXR0aW5ncz4gc2V0dGluZ3M7Cisg
ICAgdW5zaWduZWQgbG9uZyBzZXR0aW5nc0NoYW5nZWRIYW5kbGVySUQ7CisgICAgR1JlZlB0cjxX
ZWJLaXRXZWJWaWV3R3JvdXA+IGdyb3VwOwogICAgIEdSZWZQdHI8V2ViS2l0V2luZG93UHJvcGVy
dGllcz4gd2luZG93UHJvcGVydGllczsKIAogICAgIEdSZWZQdHI8R01haW5Mb29wPiBtb2RhbExv
b3A7CkBAIC0zNTYsMTAgKzM1OSwxNiBAQCBzdGF0aWMgdm9pZCBmYXZpY29uQ2hhbmdlZENhbGxi
YWNrKFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IGNoYXIqCiAgICAgd2Vi
a2l0V2ViVmlld1VwZGF0ZUZhdmljb25VUkkod2ViVmlldywgZmF2aWNvblVSSSk7CiB9CiAKLXN0
YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdTZXRTZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3VXBk
YXRlU2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJWaWV3LT5wcml2
LT5zZXR0aW5ncyA9IHNldHRpbmdzOwotICAgIHdlYmtpdFNldHRpbmdzQXR0YWNoU2V0dGluZ3NU
b1BhZ2Uod2ViVmlldy0+cHJpdi0+c2V0dGluZ3MuZ2V0KCksIGdldFBhZ2Uod2ViVmlldykpOwor
ICAgIC8vIFdlIGtlZXAgYSByZWYgb2YgdGhlIGN1cnJlbnQgc2V0dGluZ3MgdG8gZGlzY29ubmVj
dCB0aGUgc2lnbmFscyB3aGVuIHNldHRpbmdzIGNoYW5nZSBpbiB0aGUgZ3JvdXAuCisgICAgd2Vi
Vmlldy0+cHJpdi0+c2V0dGluZ3MgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZp
ZXcpOworCisgICAgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzID0gd2ViVmlldy0+cHJpdi0+c2V0
dGluZ3MuZ2V0KCk7CisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gZ2V0UGFnZSh3ZWJWaWV3KTsK
KyAgICBwYWdlLT5zZXRDYW5SdW5Nb2RhbCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2FsbG93X21vZGFs
X2RpYWxvZ3Moc2V0dGluZ3MpKTsKKyAgICBwYWdlLT5zZXRDdXN0b21Vc2VyQWdlbnQoU3RyaW5n
Ojpmcm9tVVRGOCh3ZWJraXRfc2V0dGluZ3NfZ2V0X3VzZXJfYWdlbnQoc2V0dGluZ3MpKSk7CisK
ICAgICBnX3NpZ25hbF9jb25uZWN0KHNldHRpbmdzLCAibm90aWZ5OjphbGxvdy1tb2RhbC1kaWFs
b2dzIiwgR19DQUxMQkFDSyhhbGxvd01vZGFsRGlhbG9nc0NoYW5nZWQpLCB3ZWJWaWV3KTsKICAg
ICBnX3NpZ25hbF9jb25uZWN0KHNldHRpbmdzLCAibm90aWZ5Ojp6b29tLXRleHQtb25seSIsIEdf
Q0FMTEJBQ0soem9vbVRleHRPbmx5Q2hhbmdlZCksIHdlYlZpZXcpOwogICAgIGdfc2lnbmFsX2Nv
bm5lY3Qoc2V0dGluZ3MsICJub3RpZnk6OnVzZXItYWdlbnQiLCBHX0NBTExCQUNLKHVzZXJBZ2Vu
dENoYW5nZWQpLCB3ZWJWaWV3KTsKQEAgLTM3Myw2ICszODIsMjAgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0V2ViVmlld0Rpc2Nvbm5lY3RTZXR0aW5nc1NpZ25hbEhhbmRsZXJzKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoc2V0dGlu
Z3MsIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHVzZXJBZ2VudENoYW5nZWQpLCB3ZWJWaWV3
KTsKIH0KIAorc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1NldHRpbmdzQ2hhbmdlZChXZWJLaXRX
ZWJWaWV3R3JvdXAqIGdyb3VwLCBHUGFyYW1TcGVjKiwgV2ViS2l0V2ViVmlldyogd2ViVmlldykK
K3sKKyAgICB3ZWJraXRXZWJWaWV3RGlzY29ubmVjdFNldHRpbmdzU2lnbmFsSGFuZGxlcnMod2Vi
Vmlldyk7CisgICAgd2Via2l0V2ViVmlld1VwZGF0ZVNldHRpbmdzKHdlYlZpZXcpOworfQorCitz
dGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3RGlzY29ubmVjdFNldHRpbmdzQ2hhbmdlZFNpZ25hbEhh
bmRsZXIoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0
ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisgICAgaWYgKHByaXYtPnNldHRpbmdzQ2hhbmdlZEhh
bmRsZXJJRCkKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KHdlYmtpdF93ZWJf
dmlld19nZXRfZ3JvdXAod2ViVmlldyksIHByaXYtPnNldHRpbmdzQ2hhbmdlZEhhbmRsZXJJRCk7
CisgICAgcHJpdi0+c2V0dGluZ3NDaGFuZ2VkSGFuZGxlcklEID0gMDsKK30KKwogc3RhdGljIHZv
aWQgd2Via2l0V2ViVmlld0Rpc2Nvbm5lY3RNYWluUmVzb3VyY2VSZXNwb25zZUNoYW5nZWRTaWdu
YWxIYW5kbGVyKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgV2ViS2l0V2ViVmlld1By
aXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwpAQCAtNDU1LDcgKzQ3OCw3IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKICAgICBXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKG9iamVjdCk7CiAgICAgV2ViS2l0
V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotICAgIHdlYmtpdFdlYkNvbnRl
eHRDcmVhdGVQYWdlRm9yV2ViVmlldyhwcml2LT5jb250ZXh0LCB3ZWJWaWV3KTsKKyAgICB3ZWJr
aXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcocHJpdi0+Y29udGV4dCwgd2ViVmlldywg
cHJpdi0+Z3JvdXAuZ2V0KCkpOwogCiAgICAgd2Via2l0V2ViVmlld0Jhc2VTZXREb3dubG9hZFJl
cXVlc3RIYW5kbGVyKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpLCB3ZWJraXRXZWJWaWV3
SGFuZGxlRG93bmxvYWRSZXF1ZXN0KTsKIApAQCAtNDY5LDggKzQ5Miw5IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgcHJpdi0+YmFj
a0ZvcndhcmRMaXN0ID0gYWRvcHRHUmVmKHdlYmtpdEJhY2tGb3J3YXJkTGlzdENyZWF0ZShnZXRQ
YWdlKHdlYlZpZXcpLT5iYWNrRm9yd2FyZExpc3QoKSkpOwogICAgIHByaXYtPndpbmRvd1Byb3Bl
cnRpZXMgPSBhZG9wdEdSZWYod2Via2l0V2luZG93UHJvcGVydGllc0NyZWF0ZSgpKTsKIAotICAg
IEdSZWZQdHI8V2ViS2l0U2V0dGluZ3M+IHNldHRpbmdzID0gYWRvcHRHUmVmKHdlYmtpdF9zZXR0
aW5nc19uZXcoKSk7Ci0gICAgd2Via2l0V2ViVmlld1NldFNldHRpbmdzKHdlYlZpZXcsIHNldHRp
bmdzLmdldCgpKTsKKyAgICB3ZWJraXRXZWJWaWV3VXBkYXRlU2V0dGluZ3Mod2ViVmlldyk7Cisg
ICAgcHJpdi0+c2V0dGluZ3NDaGFuZ2VkSGFuZGxlcklEID0KKyAgICAgICAgZ19zaWduYWxfY29u
bmVjdCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2dyb3VwKHdlYlZpZXcpLCAibm90aWZ5OjpzZXR0aW5n
cyIsIEdfQ0FMTEJBQ0sod2Via2l0V2ViVmlld1NldHRpbmdzQ2hhbmdlZCksIHdlYlZpZXcpOwog
fQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0
LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3Bl
YykKQEAgLTQ4Myw2ICs1MDcsMTEgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1NldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUKICAgICAgICAg
d2ViVmlldy0+cHJpdi0+Y29udGV4dCA9IHdlYkNvbnRleHQgPyBXRUJLSVRfV0VCX0NPTlRFWFQo
d2ViQ29udGV4dCkgOiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQorICAgIGNhc2UgUFJPUF9HUk9VUDogeworICAgICAgICBncG9pbnRlciBn
cm91cCA9IGdfdmFsdWVfZ2V0X29iamVjdCh2YWx1ZSk7CisgICAgICAgIHdlYlZpZXctPnByaXYt
Pmdyb3VwID0gZ3JvdXAgPyBXRUJLSVRfV0VCX1ZJRVdfR1JPVVAoZ3JvdXApIDogMDsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgUFJPUF9aT09NX0xFVkVMOgogICAgICAgICB3ZWJr
aXRfd2ViX3ZpZXdfc2V0X3pvb21fbGV2ZWwod2ViVmlldywgZ192YWx1ZV9nZXRfZG91YmxlKHZh
bHVlKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTAyLDYgKzUzMSw5IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1Zh
bHVlKiB2YWx1CiAgICAgY2FzZSBQUk9QX1dFQl9DT05URVhUOgogICAgICAgICBnX3ZhbHVlX3Rh
a2Vfb2JqZWN0KHZhbHVlLCB3ZWJWaWV3LT5wcml2LT5jb250ZXh0KTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX0dST1VQOgorICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUs
IHdlYmtpdF93ZWJfdmlld19nZXRfZ3JvdXAod2ViVmlldykpOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIFBST1BfVElUTEU6CiAgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Vi
Vmlldy0+cHJpdi0+dGl0bGUuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CkBAIC01MzMsNiArNTY1
LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Rpc3Bvc2UoR09iamVjdCogb2JqZWN0KQog
ICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KTsKICAg
ICB3ZWJraXRXZWJWaWV3Q2FuY2VsRmF2aWNvblJlcXVlc3Qod2ViVmlldyk7CiAgICAgd2Via2l0
V2ViVmlld0Rpc2Nvbm5lY3RNYWluUmVzb3VyY2VSZXNwb25zZUNoYW5nZWRTaWduYWxIYW5kbGVy
KHdlYlZpZXcpOworICAgIHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0U2V0dGluZ3NDaGFuZ2VkU2ln
bmFsSGFuZGxlcih3ZWJWaWV3KTsKICAgICB3ZWJraXRXZWJWaWV3RGlzY29ubmVjdFNldHRpbmdz
U2lnbmFsSGFuZGxlcnMod2ViVmlldyk7CiAgICAgd2Via2l0V2ViVmlld0Rpc2Nvbm5lY3RGYXZp
Y29uRGF0YWJhc2VTaWduYWxIYW5kbGVycyh3ZWJWaWV3KTsKIApAQCAtNTc4LDYgKzYxMSwyMCBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xh
c3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXygiVGhlIHdlYiBjb250ZXh0IGZvciB0aGUgdmlldyIpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJL
SVRfVFlQRV9XRUJfQ09OVEVYVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJB
TV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOworICAgIC8qKgorICAgICAq
IFdlYktpdFdlYlZpZXc6Z3JvdXA6CisgICAgICoKKyAgICAgKiBUaGUgI1dlYktpdFdlYlZpZXdH
cm91cCBvZiB0aGUgdmlldy4KKyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By
b3BlcnR5KAorICAgICAgICBnT2JqZWN0Q2xhc3MsCisgICAgICAgIFBST1BfR1JPVVAsCisgICAg
ICAgIGdfcGFyYW1fc3BlY19vYmplY3QoCisgICAgICAgICAgICAiZ3JvdXAiLAorICAgICAgICAg
ICAgXygiV2ViIFZpZXcgR3JvdXAiKSwKKyAgICAgICAgICAgIF8oIlRoZSB3ZWIgdmlldyBncm91
cCBvZiB0aGUgdmlldyIpLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1ZJRVdfR1JPVVAs
CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURX
UklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CiAKICAgICAvKioKICAgICAgKiBXZWJL
aXRXZWJWaWV3OnRpdGxlOgpAQCAtMTY2OSw3ICsxNzE2LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3
SGFuZGxlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldywgQXV0
aGVudGkKICAgICBXZWJLaXQyR3RrQXV0aGVudGljYXRpb25EaWFsb2cqIGRpYWxvZzsKICAgICBH
dGtBdXRoZW50aWNhdGlvbkRpYWxvZzo6Q3JlZGVudGlhbFN0b3JhZ2VNb2RlIGNyZWRlbnRpYWxT
dG9yYWdlTW9kZTsKIAotICAgIGlmICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wcml2YXRl
X2Jyb3dzaW5nKHdlYlZpZXctPnByaXYtPnNldHRpbmdzLmdldCgpKSkKKyAgICBpZiAod2Via2l0
X3NldHRpbmdzX2dldF9lbmFibGVfcHJpdmF0ZV9icm93c2luZyh3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3NldHRpbmdzKHdlYlZpZXcpKSkKICAgICAgICAgY3JlZGVudGlhbFN0b3JhZ2VNb2RlID0gR3Rr
QXV0aGVudGljYXRpb25EaWFsb2c6OkRpc2FsbG93UGVyc2lzdGVudFN0b3JhZ2U7CiAgICAgZWxz
ZQogICAgICAgICBjcmVkZW50aWFsU3RvcmFnZU1vZGUgPSBHdGtBdXRoZW50aWNhdGlvbkRpYWxv
Zzo6QWxsb3dQZXJzaXN0ZW50U3RvcmFnZTsKQEAgLTE2ODcsOCArMTczNCw5IEBAIHZvaWQgd2Vi
a2l0V2ViVmlld0luc2VjdXJlQ29udGVudERldGVjdGVkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IFdlYktpdEluc2VjdXJlCiAvKioKICAqIHdlYmtpdF93ZWJfdmlld19uZXc6CiAgKgotICogQ3Jl
YXRlcyBhIG5ldyAjV2ViS2l0V2ViVmlldyB3aXRoIHRoZSBkZWZhdWx0ICNXZWJLaXRXZWJDb250
ZXh0LgotICogU2VlIGFsc28gd2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQoKS4KKyAq
IENyZWF0ZXMgYSBuZXcgI1dlYktpdFdlYlZpZXcgd2l0aCB0aGUgZGVmYXVsdCAjV2ViS2l0V2Vi
Q29udGV4dCBhbmQgdGhlCisgKiBkZWZhdWx0ICNXZWJLaXRXZWJWaWV3R3JvdXAuCisgKiBTZWUg
YWxzbyB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dCgpIGFuZCB3ZWJraXRfd2ViX3Zp
ZXdfbmV3X3dpdGhfZ3JvdXAoKS4KICAqCiAgKiBSZXR1cm5zOiBUaGUgbmV3bHkgY3JlYXRlZCAj
V2ViS2l0V2ViVmlldyB3aWRnZXQKICAqLwpAQCAtMTcwMSw3ICsxNzQ5LDkgQEAgR3RrV2lkZ2V0
KiB3ZWJraXRfd2ViX3ZpZXdfbmV3KCkKICAqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250
ZXh0OgogICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29udGV4dCB0byBiZSB1c2VkIGJ5IHRo
ZSAjV2ViS2l0V2ViVmlldwogICoKLSAqIENyZWF0ZXMgYSBuZXcgI1dlYktpdFdlYlZpZXcgd2l0
aCB0aGUgZ2l2ZW4gI1dlYktpdFdlYkNvbnRleHQuCisgKiBDcmVhdGVzIGEgbmV3ICNXZWJLaXRX
ZWJWaWV3IHdpdGggdGhlIGdpdmVuICNXZWJLaXRXZWJDb250ZXh0IGFuZCB0aGUKKyAqIGRlZmF1
bHQgI1dlYktpdFdlYlZpZXdHcm91cC4KKyAqIFNlZSBhbHNvIHdlYmtpdF93ZWJfdmlld19uZXdf
d2l0aF9ncm91cCgpLgogICoKICAqIFJldHVybnM6IFRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRX
ZWJWaWV3IHdpZGdldAogICovCkBAIC0xNzEzLDYgKzE3NjMsMjMgQEAgR3RrV2lkZ2V0KiB3ZWJr
aXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQog
fQogCiAvKioKKyAqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9ncm91cDoKKyAqIEBncm91cDog
YSAjV2ViS2l0V2ViVmlld0dyb3VwCisgKgorICogQ3JlYXRlcyBhIG5ldyAjV2ViS2l0V2ViVmll
dyB3aXRoIHRoZSBnaXZlbiAjV2ViS2l0V2ViVmlld0dyb3VwLgorICogVGhlIHZpZXcgd2lsbCBi
ZSBwYXJ0IG9mIEBncm91cCBhbmQgaXQgd2lsbCBiZSBhZmZlY3RlZCBieSB0aGUKKyAqIGdyb3Vw
IHByb3BlcnRpZXMgbGlrZSB0aGUgc2V0dGluZ3MuCisgKgorICogUmV0dXJuczogVGhlIG5ld2x5
IGNyZWF0ZWQgI1dlYktpdFdlYlZpZXcgd2lkZ2V0CisgKi8KK0d0a1dpZGdldCogd2Via2l0X3dl
Yl92aWV3X25ld193aXRoX2dyb3VwKFdlYktpdFdlYlZpZXdHcm91cCogZ3JvdXApCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXX0dST1VQKGdyb3VwKSwgMCk7
CisKKyAgICByZXR1cm4gR1RLX1dJREdFVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJ
RVcsICJncm91cCIsIGdyb3VwLCBOVUxMKSk7Cit9CisKKy8qKgogICogd2Via2l0X3dlYl92aWV3
X2dldF9jb250ZXh0OgogICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CiAgKgpAQCAtMTcy
OCw2ICsxNzk1LDI0IEBAIFdlYktpdFdlYkNvbnRleHQqIHdlYmtpdF93ZWJfdmlld19nZXRfY29u
dGV4dChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3KQogfQogCiAvKioKKyAqIHdlYmtpdF93ZWJfdmll
d19nZXRfZ3JvdXA6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBHZXRz
IHRoZSBncm91cCBAd2ViX3ZpZXcgYmVsb25ncyB0by4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNm
ZXIgbm9uZSk6IHRoZSAjV2ViS2l0V2ViVmlld0dyb3VwIHRvIHdoaWNoIHRoZSB2aWV3IGJlbG9u
Z3MKKyAqLworV2ViS2l0V2ViVmlld0dyb3VwKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2dyb3VwKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9WSUVXKHdlYlZpZXcpLCAwKTsKKworICAgIGlmICh3ZWJWaWV3LT5wcml2LT5ncm91
cCkKKyAgICAgICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPmdyb3VwLmdldCgpOworCisgICAgcmV0
dXJuIHdlYmtpdFdlYkNvbnRleHRHZXREZWZhdWx0V2ViVmlld0dyb3VwKHdlYlZpZXctPnByaXYt
PmNvbnRleHQpOworfQorCisvKioKICAqIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaToKICAqIEB3
ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldwogICogQHVyaTogYW4gVVJJIHN0cmluZwpAQCAtMjE2
MSwyMiArMjI0NiwxNiBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19nb190b19iYWNrX2ZvcndhcmRf
bGlzdF9pdGVtKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdAogICogQHdlYl92aWV3OiBh
ICNXZWJLaXRXZWJWaWV3CiAgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCiAgKgotICog
U2V0cyB0aGUgI1dlYktpdFNldHRpbmdzIHRvIGJlIGFwcGxpZWQgdG8gQHdlYl92aWV3LiBUaGUK
LSAqIGV4aXN0aW5nICNXZWJLaXRTZXR0aW5ncyBvZiBAd2ViX3ZpZXcgd2lsbCBiZSByZXBsYWNl
ZCBieQotICogQHNldHRpbmdzLiBOZXcgc2V0dGluZ3MgYXJlIGFwcGxpZWQgaW1tZWRpYXRlbHkg
b24gQHdlYl92aWV3LgotICogVGhlIHNhbWUgI1dlYktpdFNldHRpbmdzIG9iamVjdCBjYW4gYmUg
c2hhcmVkCi0gKiBieSBtdWx0aXBsZSAjV2ViS2l0V2ViVmlldzwhLS0gLS0+cy4KKyAqIFNldHMg
dGhlICNXZWJLaXRTZXR0aW5ncyB0byBiZSBhcHBsaWVkIHRvIEB3ZWJfdmlldy4KKyAqIFRoaXMg
aXMgYSBjb252ZW5pZW50IG1ldGhvZCB0byBzZXQgbmV3IHNldHRpbmdzIHRvIHRoZQorICogI1dl
YktpdFdlYlZpZXdHcm91cCBAd2ViX3ZpZXcgYmVsb25ncyB0by4KKyAqIE5ldyBzZXR0aW5ncyBh
cmUgYXBwbGllZCBpbW1lZGlhdGVseSBvbiBhbGwgI1dlYktpdFdlYlZpZXc8IS0tIC0tPnMKKyAq
IGluIHRoZSBAd2ViX3ZpZXcgZ3JvdXAuCisgKiBTZWUgYWxzbyB3ZWJraXRfd2ViX3ZpZXdfZ3Jv
dXBfc2V0X3NldHRpbmdzKCkuCiAgKi8KIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5n
cyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7Ci0g
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwotICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7Ci0KLSAgICBpZiAo
d2ViVmlldy0+cHJpdi0+c2V0dGluZ3MgPT0gc2V0dGluZ3MpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0U2V0dGluZ3NTaWduYWxIYW5kbGVycyh3ZWJWaWV3
KTsKLSAgICB3ZWJraXRXZWJWaWV3U2V0U2V0dGluZ3Mod2ViVmlldywgc2V0dGluZ3MpOworICAg
IHdlYmtpdF93ZWJfdmlld19ncm91cF9zZXRfc2V0dGluZ3Mod2Via2l0X3dlYl92aWV3X2dldF9n
cm91cCh3ZWJWaWV3KSwgc2V0dGluZ3MpOwogfQogCiAvKioKQEAgLTIxODQsMjYgKzIyNjMsMTkg
QEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIFdlYktpdFNldHRpbmdzKiBzZXR0aW4KICAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmll
dwogICoKICAqIEdldHMgdGhlICNXZWJLaXRTZXR0aW5ncyBjdXJyZW50bHkgYXBwbGllZCB0byBA
d2ViX3ZpZXcuCi0gKiBJZiBubyBvdGhlciAjV2ViS2l0U2V0dGluZ3MgaGF2ZSBiZWVuIGV4cGxp
Y2l0bHkgYXBwbGllZCB0bwotICogQHdlYl92aWV3IHdpdGggd2Via2l0X3dlYl92aWV3X3NldF9z
ZXR0aW5ncygpLCB0aGUgZGVmYXVsdAotICogI1dlYktpdFNldHRpbmdzIHdpbGwgYmUgcmV0dXJu
ZWQuIFRoaXMgbWV0aG9kIGFsd2F5cyByZXR1cm5zCi0gKiBhIHZhbGlkICNXZWJLaXRTZXR0aW5n
cyBvYmplY3QuCi0gKiBUbyBtb2RpZnkgYW55IG9mIHRoZSBAd2ViX3ZpZXcgc2V0dGluZ3MsIHlv
dSBjYW4gZWl0aGVyIGNyZWF0ZQotICogYSBuZXcgI1dlYktpdFNldHRpbmdzIG9iamVjdCB3aXRo
IHdlYmtpdF9zZXR0aW5nc19uZXcoKSwgc2V0dGluZwotICogdGhlIGRlc2lyZWQgcHJlZmVyZW5j
ZXMsIGFuZCB0aGVuIHJlcGxhY2UgdGhlIGV4aXN0aW5nIEB3ZWJfdmlldwotICogc2V0dGluZ3Mg
d2l0aCB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKCkgb3IgZ2V0IHRoZSBleGlzdGluZwot
ICogQHdlYl92aWV3IHNldHRpbmdzIGFuZCB1cGRhdGUgaXQgZGlyZWN0bHkuICNXZWJLaXRTZXR0
aW5ncyBvYmplY3RzCi0gKiBjYW4gYmUgc2hhcmVkIGJ5IG11bHRpcGxlICNXZWJLaXRXZWJWaWV3
PCEtLSAtLT5zLCBzbyBtb2RpZnlpbmcKKyAqIFRoaXMgaXMgYSBjb252ZW5pZW50IG1ldGhvZCB0
byBnZXQgdGhlIHNldHRpbmdzIG9mIHRoZQorICogI1dlYktpdFdlYlZpZXdHcm91cCBAd2ViX3Zp
ZXcgYmVsb25ncyB0by4KKyAqICNXZWJLaXRTZXR0aW5ncyBvYmplY3RzIGFyZSBzaGFyZWQgYnkg
YWxsIHRoZSAjV2ViS2l0V2ViVmlldzwhLS0gLS0+cworICogaW4gdGhlIHNhbWUgI1dlYktpdFdl
YlZpZXdHcm91cCwgc28gbW9kaWZ5aW5nCiAgKiB0aGUgc2V0dGluZ3Mgb2YgYSAjV2ViS2l0V2Vi
VmlldyB3b3VsZCBhZmZlY3Qgb3RoZXIKLSAqICNXZWJLaXRXZWJWaWV3PCEtLSAtLT5zIHVzaW5n
IHRoZSBzYW1lICNXZWJLaXRTZXR0aW5ncy4KKyAqICNXZWJLaXRXZWJWaWV3PCEtLSAtLT5zIG9m
IHRoZSBzYW1lIGdyb3VwLgorICogU2VlIGFsc28gd2Via2l0X3dlYl92aWV3X2dyb3VwX2dldF9z
ZXR0aW5ncygpLgogICoKICAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogdGhlICNXZWJLaXRT
ZXR0aW5ncyBhdHRhY2hlZCB0byBAd2ViX3ZpZXcKICAqLwogV2ViS2l0U2V0dGluZ3MqIHdlYmtp
dF93ZWJfdmlld19nZXRfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIDApOwotCi0g
ICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPnNldHRpbmdzLmdldCgpOworICAgIHJldHVybiB3ZWJr
aXRfd2ViX3ZpZXdfZ3JvdXBfZ2V0X3NldHRpbmdzKHdlYmtpdF93ZWJfdmlld19nZXRfZ3JvdXAo
d2ViVmlldykpOwogfQogCiAvKioKQEAgLTIyMzgsNyArMjMxMCw3IEBAIHZvaWQgd2Via2l0X3dl
Yl92aWV3X3NldF96b29tX2xldmVsKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGdkb3VibGUgem9v
bUxldmVsKQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBnZXRQ
YWdlKHdlYlZpZXcpOwotICAgIGlmICh3ZWJraXRfc2V0dGluZ3NfZ2V0X3pvb21fdGV4dF9vbmx5
KHdlYlZpZXctPnByaXYtPnNldHRpbmdzLmdldCgpKSkKKyAgICBpZiAod2Via2l0X3NldHRpbmdz
X2dldF96b29tX3RleHRfb25seSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcp
KSkKICAgICAgICAgcGFnZS0+c2V0VGV4dFpvb21GYWN0b3Ioem9vbUxldmVsKTsKICAgICBlbHNl
CiAgICAgICAgIHBhZ2UtPnNldFBhZ2Vab29tRmFjdG9yKHpvb21MZXZlbCk7CkBAIC0yMjU5LDcg
KzIzMzEsNyBAQCBnZG91YmxlIHdlYmtpdF93ZWJfdmlld19nZXRfem9vbV9sZXZlbChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VklFVyh3ZWJWaWV3KSwgMSk7CiAKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBnZXRQYWdlKHdl
YlZpZXcpOwotICAgIGdib29sZWFuIHpvb21UZXh0T25seSA9IHdlYmtpdF9zZXR0aW5nc19nZXRf
em9vbV90ZXh0X29ubHkod2ViVmlldy0+cHJpdi0+c2V0dGluZ3MuZ2V0KCkpOworICAgIGdib29s
ZWFuIHpvb21UZXh0T25seSA9IHdlYmtpdF9zZXR0aW5nc19nZXRfem9vbV90ZXh0X29ubHkod2Vi
a2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSk7CiAgICAgcmV0dXJuIHpvb21UZXh0
T25seSA/IHBhZ2UtPnRleHRab29tRmFjdG9yKCkgOiBwYWdlLT5wYWdlWm9vbUZhY3RvcigpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmgKaW5kZXggYWFlODQ5Yi4uNTUwYjQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0V2ViSW5zcGVjdG9yLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRX
ZWJSZXNvdXJjZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViVmlld0Jhc2UuaD4KKyNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlZpZXdHcm91cC5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0V2luZG93UHJvcGVydGllcy5oPgogCiBHX0JFR0lOX0RFQ0xTCkBAIC0yMzEsOSArMjMy
LDE1IEBAIHdlYmtpdF93ZWJfdmlld19uZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHZvaWQpOwogV0VCS0lUX0FQSSBHdGtXaWRnZXQgKgogd2Via2l0X3dlYl92aWV3X25ld193
aXRoX2NvbnRleHQgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAg
ICAqY29udGV4dCk7CiAKK1dFQktJVF9BUEkgR3RrV2lkZ2V0ICoKK3dlYmtpdF93ZWJfdmlld19u
ZXdfd2l0aF9ncm91cCAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXdHcm91cCAg
ICAgICAgKmdyb3VwKTsKKwogV0VCS0lUX0FQSSBXZWJLaXRXZWJDb250ZXh0ICoKIHdlYmtpdF93
ZWJfdmlld19nZXRfY29udGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKIAorV0VCS0lUX0FQSSBXZWJLaXRXZWJWaWV3R3Jv
dXAgKgord2Via2l0X3dlYl92aWV3X2dldF9ncm91cCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOworCiBXRUJLSVRfQVBJIHZv
aWQKIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAg
ICAgICAqdXJpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3R3JvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjdjYzk5MDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3R3JvdXAuY3BwCkBAIC0wLDAgKzEsMjIzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJLaXRXZWJWaWV3R3JvdXAuaCIKKworI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIK
KyNpbmNsdWRlICJXZWJLaXRTZXR0aW5nc1ByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJW
aWV3R3JvdXBQcml2YXRlLmgiCisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFNFQ1RJT046IFdlYktpdFdlYlZp
ZXdHcm91cAorICogQFNob3J0X2Rlc2NyaXB0aW9uOiBHcm91cCBvZiB3ZWIgdmlld3MKKyAqIEBU
aXRsZTogV2ViS2l0V2ViVmlld0dyb3VwCisgKiBAU2VlX2Fsc286ICNXZWJLaXRXZWJWaWV3LCAj
V2ViS2l0U2V0dGluZ3MKKyAqCisgKiBBIFdlYktpdFdlYlZpZXdHcm91cCByZXByZXNlbnRzIGEg
Z3JvdXAgb2YgI1dlYktpdFdlYlZpZXc8IS0tIC0tPnMgdGhhdAorICogc2hhcmUgdGhpbmdzIGxp
a2Ugc2V0dGluZ3MuIFRoZXJlJ3MgYSBkZWZhdWx0IFdlYktpdFdlYlZpZXdHcm91cCB3aGVyZQor
ICogYWxsICNXZWJLaXRXZWJWaWV3PCEtLSAtLT5zIG9mIHRoZSBzYW1lICNXZWJLaXRXZWJDb250
ZXh0IGFyZSBhZGRlZCBieSBkZWZhdWx0LgorICogVG8gY3JlYXRlIGEgI1dlYktpdFdlYlZpZXcg
b24gYSBkaWZmZXJlbnQgV2ViS2l0V2ViVmlld0dyb3VwIHlvdSBjYW4gdXNlCisgKiB3ZWJraXRf
d2ViX3ZpZXdfbmV3X3dpdGhfZ3JvdXAoKS4KKyAqCisgKiBXZWJLaXRXZWJWaWV3R3JvdXBzIGFy
ZSBpZGVudGlmaWVkIGJ5IGEgdW5pcXVlIG5hbWUgZ2l2ZW4gd2hlbiB0aGUgZ3JvdXAgaXMKKyAq
IGNyZWF0ZWQgd2l0aCB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfbmV3KCkuCisgKiBXZWJLaXRXZWJW
aWV3R3JvdXBzIGhhdmUgYSAjV2ViS2l0U2V0dGluZ3MgdG8gY29udHJvbCB0aGUgc2V0dGluZ3Mg
b2YgYWxsCisgKiAjV2ViS2l0V2ViVmlldzwhLS0gLS0+cyBvZiB0aGUgZ3JvdXAuIFlvdSBjYW4g
Z2V0IHRoZSBzZXR0aW5ncyB3aXRoCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfZ2V0X3NldHRp
bmdzKCkgdG8gaGFuZGxlIHRoZSBzZXR0aW5ncywgb3IgeW91IGNhbiBzZXQKKyAqIHlvdXIgb3du
ICNXZWJLaXRTZXR0aW5ncyB3aXRoIHdlYmtpdF93ZWJfdmlld19ncm91cF9zZXRfc2V0dGluZ3Mo
KS4gV2hlbgorICogdGhlICNXZWJLaXRTZXR0aW5ncyBvZiBhIFdlYktpdFdlYlZpZXdHcm91cCBj
aGFuZ2VzLCB0aGUgc2lnbmFsIG5vdGlmeTo6c2V0dGluZ3MKKyAqIGlzIGVtaXR0ZWQgb24gdGhl
IGdyb3VwLgorICovCisKK2VudW0geworICAgIFBST1BfMCwKKworICAgIFBST1BfU0VUVElOR1MK
K307CisKK3N0cnVjdCBfV2ViS2l0V2ViVmlld0dyb3VwUHJpdmF0ZSB7CisgICAgUmVmUHRyPFdl
YlBhZ2VHcm91cD4gcGFnZUdyb3VwOworICAgIENTdHJpbmcgbmFtZTsKKyAgICBHUmVmUHRyPFdl
YktpdFNldHRpbmdzPiBzZXR0aW5nczsKK307CisKK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRX
ZWJWaWV3R3JvdXAsIHdlYmtpdF93ZWJfdmlld19ncm91cCwgR19UWVBFX09CSkVDVCkKKworc3Rh
dGljIHZvaWQgd2Via2l0V2ViVmlld0dyb3VwU2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykK
K3sKKyAgICBXZWJLaXRXZWJWaWV3R3JvdXAqIGdyb3VwID0gV0VCS0lUX1dFQl9WSUVXX0dST1VQ
KG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2UgUFJPUF9TRVRUSU5H
UzoKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X2dyb3VwX3NldF9zZXR0aW5ncyhncm91cCwgV0VC
S0lUX1NFVFRJTkdTKGdfdmFsdWVfZ2V0X29iamVjdCh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lE
KG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Vi
a2l0V2ViVmlld0dyb3VwR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQs
IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKK3sKKyAgICBXZWJLaXRXZWJW
aWV3R3JvdXAqIGdyb3VwID0gV0VCS0lUX1dFQl9WSUVXX0dST1VQKG9iamVjdCk7CisKKyAgICBz
d2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2UgUFJPUF9TRVRUSU5HUzoKKyAgICAgICAgZ192YWx1
ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfZ2V0X3NldHRpbmdzKGdy
b3VwKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dB
Uk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKKyAgICB9
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHcm91cENvbnN0cnVjdGVkKEdPYmplY3Qq
IG9iamVjdCkKK3sKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcGFy
ZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKKworICAgIFdlYktpdFdlYlZpZXdHcm91
cFByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfR1JPVVAob2JqZWN0KS0+cHJpdjsKKyAg
ICBwcml2LT5zZXR0aW5ncyA9IGFkb3B0R1JlZih3ZWJraXRfc2V0dGluZ3NfbmV3KCkpOworfQor
CitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfY2xhc3NfaW5pdChXZWJLaXRXZWJW
aWV3R3JvdXBDbGFzcyogaGl0VGVzdFJlc3VsdENsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyog
b2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhoaXRUZXN0UmVzdWx0Q2xhc3MpOworICAgIG9i
amVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRXZWJWaWV3R3JvdXBTZXRQcm9wZXJ0eTsK
KyAgICBvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0V2ViVmlld0dyb3VwR2V0UHJv
cGVydHk7CisgICAgb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdGVkID0gd2Via2l0V2ViVmlld0dyb3Vw
Q29uc3RydWN0ZWQ7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3R3JvdXA6c2V0dGlu
Z3M6CisgICAgICoKKyAgICAgKiBUaGUgI1dlYktpdFNldHRpbmdzIG9mIHRoZSB3ZWIgdmlldyBn
cm91cC4KKyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAg
ICAgICBvYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9TRVRUSU5HUywKKyAgICAgICAgZ19wYXJh
bV9zcGVjX29iamVjdCgKKyAgICAgICAgICAgICJzZXR0aW5ncyIsCisgICAgICAgICAgICBfKCJT
ZXR0aW5ncyIpLAorICAgICAgICAgICAgXygiVGhlIHNldHRpbmdzIG9mIHRoZSB3ZWIgdmlldyBn
cm91cCIpLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfU0VUVElOR1MsCisgICAgICAgICAgICBX
RUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdH
cm91cEF0dGFjaFNldHRpbmdzVG9QYWdlR3JvdXAoV2ViS2l0V2ViVmlld0dyb3VwKiBncm91cCkK
K3sKKyAgICBncm91cC0+cHJpdi0+cGFnZUdyb3VwLT5zZXRQcmVmZXJlbmNlcyh3ZWJraXRTZXR0
aW5nc0dldFByZWZlcmVuY2VzKGdyb3VwLT5wcml2LT5zZXR0aW5ncy5nZXQoKSkpOworfQorCitX
ZWJLaXRXZWJWaWV3R3JvdXAqIHdlYmtpdFdlYlZpZXdHcm91cENyZWF0ZShXZWJQYWdlR3JvdXAq
IHBhZ2VHcm91cCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3R3JvdXAqIGdyb3VwID0gV0VCS0lUX1dF
Ql9WSUVXX0dST1VQKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFV19HUk9VUCwgTlVM
TCkpOworICAgIGdyb3VwLT5wcml2LT5wYWdlR3JvdXAgPSBwYWdlR3JvdXA7CisgICAgd2Via2l0
V2ViVmlld0dyb3VwQXR0YWNoU2V0dGluZ3NUb1BhZ2VHcm91cChncm91cCk7CisgICAgcmV0dXJu
IGdyb3VwOworfQorCitXZWJQYWdlR3JvdXAqIHdlYmtpdFdlYlZpZXdHcm91cEdldFBhZ2VHcm91
cChXZWJLaXRXZWJWaWV3R3JvdXAqIGdyb3VwKQoreworICAgIHJldHVybiBncm91cC0+cHJpdi0+
cGFnZUdyb3VwLmdldCgpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19ncm91cF9uZXc6
CisgKiBAbmFtZTogKGFsbG93LW5vbmUpOiB0aGUgbmFtZSBvZiB0aGUgZ3JvdXAKKyAqCisgKiBD
cmVhdGVzIGEgbmV3ICNXZWJLaXRXZWJWaWV3R3JvdXAgd2l0aCB0aGUgZ2l2ZW4gQG5hbWUuCisg
KiBJZiBAbmFtZSBpcyAlTlVMTCBhIHVuaXF1ZSBpZGVudGlmaWVyIG5hbWUgd2lsbCBiZSBjcmVh
dGVkCisgKiBhdXRvbWF0aWNhbGx5LgorICogVGhlIG5ld2x5IGNyZWF0ZWQgI1dlYktpdFdlYlZp
ZXdHcm91cCBkb2Vzbid0IGNvbnRhaW4gYW55CisgKiAjV2ViS2l0V2ViVmlldywgd2ViIHZpZXdz
IGFyZSBhZGRlZCB0byB0aGUgbmV3IGdyb3VwIHdoZW4gY3JlYXRlZAorICogd2l0aCB3ZWJraXRf
d2ViX3ZpZXdfbmV3X3dpdGhfZ3JvdXAoKSBwYXNzaW5nIHRoZSBncm91cC4KKyAqCisgKiBSZXR1
cm5zOiAodHJhbnNmZXIgZnVsbCk6IGEgbmV3ICNXZWJLaXRXZWJWaWV3R3JvdXAKKyAqLworV2Vi
S2l0V2ViVmlld0dyb3VwKiB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfbmV3KGNvbnN0IGNoYXIqIG5h
bWUpCit7CisgICAgV2ViS2l0V2ViVmlld0dyb3VwKiBncm91cCA9IFdFQktJVF9XRUJfVklFV19H
Uk9VUChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVdfR1JPVVAsIE5VTEwpKTsKKyAg
ICBncm91cC0+cHJpdi0+cGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUobmFtZSA/IFN0
cmluZzo6ZnJvbVVURjgobmFtZSkgOiBTdHJpbmcoKSk7CisgICAgd2Via2l0V2ViVmlld0dyb3Vw
QXR0YWNoU2V0dGluZ3NUb1BhZ2VHcm91cChncm91cCk7CisgICAgcmV0dXJuIGdyb3VwOworfQor
CisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19ncm91cF9nZXRfbmFtZToKKyAqIEBncm91cDogYSAj
V2ViS2l0V2ViVmlld0dyb3VwCisgKgorICogR2V0cyB0aGUgbmFtZSB0aGF0IHVuaXF1ZWx5IGlk
ZW50aWZpZXMgdGhlICNXZWJLaXRXZWJWaWV3R3JvdXAuCisgKgorICogUmV0dXJuczogdGhlIG5h
bWUgb2YgQGdyb3VwCisgKi8KK2NvbnN0IGNoYXIqIHdlYmtpdF93ZWJfdmlld19ncm91cF9nZXRf
bmFtZShXZWJLaXRXZWJWaWV3R3JvdXAqIGdyb3VwKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfVklFV19HUk9VUChncm91cCksIDApOworCisgICAgV2ViS2l0V2Vi
Vmlld0dyb3VwUHJpdmF0ZSogcHJpdiA9IGdyb3VwLT5wcml2OworICAgIGlmIChwcml2LT5uYW1l
LmlzTnVsbCgpKQorICAgICAgICBwcml2LT5uYW1lID0gcHJpdi0+cGFnZUdyb3VwLT5pZGVudGlm
aWVyKCkudXRmOCgpOworCisgICAgcmV0dXJuIHByaXYtPm5hbWUuZGF0YSgpOworfQorCisvKioK
KyAqIHdlYmtpdF93ZWJfdmlld19ncm91cF9nZXRfc2V0dGluZ3M6CisgKiBAZ3JvdXA6IGEgI1dl
YktpdFdlYlZpZXdHcm91cAorICoKKyAqIEdldHMgdGhlICNXZWJLaXRTZXR0aW5ncyBvZiB0aGUg
I1dlYktpdFdlYlZpZXdHcm91cC4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IHRo
ZSBzZXR0aW5ncyBvZiBAZ3JvdXAKKyAqLworV2ViS2l0U2V0dGluZ3MqIHdlYmtpdF93ZWJfdmll
d19ncm91cF9nZXRfc2V0dGluZ3MoV2ViS2l0V2ViVmlld0dyb3VwKiBncm91cCkKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVdfR1JPVVAoZ3JvdXApLCAwKTsK
KworICAgIHJldHVybiBncm91cC0+cHJpdi0+c2V0dGluZ3MuZ2V0KCk7Cit9CisKKy8qKgorICog
d2Via2l0X3dlYl92aWV3X2dyb3VwX3NldF9zZXR0aW5nczoKKyAqIEBncm91cDogYSAjV2ViS2l0
V2ViVmlld0dyb3VwCisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICogU2V0
cyBhIG5ldyAjV2ViS2l0U2V0dGluZ3MgZm9yIHRoZSAjV2ViS2l0V2ViVmlld0dyb3VwLiBUaGUg
c2V0dGluZ3Mgd2lsbAorICogYWZmZWN0IHRvIGFsbCB0aGUgI1dlYktpdFdlYlZpZXc8IS0tIC0t
PnMgb2YgdGhlIGdyb3VwLgorICogI1dlYktpdFdlYlZpZXdHcm91cDwhLS0gLS0+cyBhbHdheXMg
aGF2ZSBhICNXZWJLaXRTZXR0aW5ncyBzbyBpZiB5b3UganVzdCB3YW50IHRvCisgKiBtb2RpZnkg
YSBzZXR0aW5nIHlvdSBjYW4gdXNlIHdlYmtpdF93ZWJfdmlld19ncm91cF9nZXRfc2V0dGluZ3Mo
KSBhbmQgbW9kaWZ5IHRoZQorICogcmV0dXJuZWQgI1dlYktpdFNldHRpbmdzIGluc3RlYWQuCisg
KiBTZXR0aW5nIHRoZSBzYW1lICNXZWJLaXRTZXR0aW5ncyBtdWx0aXBsZSB0aW1lcyBkb2Vzbid0
IGhhdmUgYW55IGVmZmVjdC4KKyAqIFlvdSBjYW4gbW9uaXRvciB0aGUgc2V0dGluZ3Mgb2YgYSAj
V2ViS2l0V2ViVmlld0dyb3VwIGJ5IGNvbm5lY3RpbmcgdG8gdGhlCisgKiBub3RpZnk6OnNldHRp
bmdzIHNpZ25hbCBvZiBAZ3JvdXAuCisgKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3X2dyb3VwX3Nl
dF9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3R3JvdXAqIGdyb3VwLCBXZWJLaXRTZXR0aW5ncyogc2V0
dGluZ3MpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVdfR1JPVVAo
Z3JvdXApKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5n
cykpOworCisgICAgaWYgKGdyb3VwLT5wcml2LT5zZXR0aW5ncyA9PSBzZXR0aW5ncykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZ3JvdXAtPnByaXYtPnNldHRpbmdzID0gc2V0dGluZ3M7CisgICAg
d2Via2l0V2ViVmlld0dyb3VwQXR0YWNoU2V0dGluZ3NUb1BhZ2VHcm91cChncm91cCk7CisgICAg
Z19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKGdyb3VwKSwgInNldHRpbmdzIik7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3JvdXAu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHcm91cC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0ODhhZTcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3Jv
dXAuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBT
LkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lU
Ml9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBp
bmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRXZWJWaWV3R3JvdXBf
aAorI2RlZmluZSBXZWJLaXRXZWJWaWV3R3JvdXBfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3Qu
aD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFNldHRpbmdzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQ
RV9XRUJfVklFV19HUk9VUCAgICAgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfZ2V0X3R5
cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9WSUVXX0dST1VQKG9iaikgICAgICAgICAgICAoR19U
WVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9WSUVXX0dST1VQ
LCBXZWJLaXRXZWJWaWV3R3JvdXApKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1ZJRVdfR1JPVVAo
b2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZ
UEVfV0VCX1ZJRVdfR1JPVVApKQorI2RlZmluZSBXRUJLSVRfV0VCX1ZJRVdfR1JPVVBfQ0xBU1Mo
a2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVf
V0VCX1ZJRVdfR1JPVVAsIFdlYktpdFdlYlZpZXdHcm91cENsYXNzKSkKKyNkZWZpbmUgV0VCS0lU
X0lTX1dFQl9WSUVXX0dST1VQX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUo
KGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9WSUVXX0dST1VQKSkKKyNkZWZpbmUgV0VCS0lUX1dF
Ql9WSUVXX0dST1VQX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygo
b2JqKSwgIFdFQktJVF9UWVBFX1dFQl9WSUVXX0dST1VQLCBXZWJLaXRXZWJWaWV3R3JvdXBDbGFz
cykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3R3JvdXAgICAgICAgIFdlYktpdFdl
YlZpZXdHcm91cDsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3R3JvdXBDbGFzcyAgIFdl
YktpdFdlYlZpZXdHcm91cENsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdHcm91
cFByaXZhdGUgV2ViS2l0V2ViVmlld0dyb3VwUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJW
aWV3R3JvdXAgeworICAgIEdPYmplY3QgcGFyZW50OworCisgICAgV2ViS2l0V2ViVmlld0dyb3Vw
UHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0V2ViVmlld0dyb3VwQ2xhc3Mgewor
ICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3
ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfZ2V0X3R5cGUgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBX
ZWJLaXRXZWJWaWV3R3JvdXAgKgord2Via2l0X3dlYl92aWV3X2dyb3VwX25ldyAgICAgICAgICAo
Y29uc3QgZ2NoYXIgICAgICAgICpuYW1lKTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCit3
ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfZ2V0X25hbWUgICAgIChXZWJLaXRXZWJWaWV3R3JvdXAgKmdy
b3VwKTsKKworV0VCS0lUX0FQSSBXZWJLaXRTZXR0aW5ncyAqCit3ZWJraXRfd2ViX3ZpZXdfZ3Jv
dXBfZ2V0X3NldHRpbmdzIChXZWJLaXRXZWJWaWV3R3JvdXAgKmdyb3VwKTsKKworV0VCS0lUX0FQ
SSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfc2V0X3NldHRpbmdzIChXZWJLaXRXZWJWaWV3
R3JvdXAgKmdyb3VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
U2V0dGluZ3MgICAgICpzZXR0aW5ncyk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3Vw
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0dyb3VwUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmZDg2
NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3R3JvdXBQcml2YXRlLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdFdlYlZpZXdHcm91cFByaXZh
dGVfaAorI2RlZmluZSBXZWJLaXRXZWJWaWV3R3JvdXBQcml2YXRlX2gKKworI2luY2x1ZGUgIldl
YktpdFdlYlZpZXdHcm91cC5oIgorI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgorCitXZWJLaXRX
ZWJWaWV3R3JvdXAqIHdlYmtpdFdlYlZpZXdHcm91cENyZWF0ZShXZWJLaXQ6OldlYlBhZ2VHcm91
cCopOworV2ViS2l0OjpXZWJQYWdlR3JvdXAqIHdlYmtpdFdlYlZpZXdHcm91cEdldFBhZ2VHcm91
cChXZWJLaXRXZWJWaWV3R3JvdXAqKTsKKworI2VuZGlmIC8vIFdlYktpdFdlYlZpZXdHcm91cFBy
aXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggN2M2YzY4ZC4uMmZhN2ViYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRv
Y3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstZG9jcy5zZ21sCkBAIC00MSw2ICs0MSw3IEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL1dlYktpdENvbnRleHRNZW51SXRlbS54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4
bWwvV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhy
ZWY9InhtbC9XZWJLaXRTZWN1cml0eU1hbmFnZXIueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJl
Zj0ieG1sL1dlYktpdFdlYlZpZXdHcm91cC54bWwiLz4KICAgPC9jaGFwdGVyPgogCiAgIDxjaGFw
dGVyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggZjZlOGE4NC4uMmE2NTE4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC04Nyw3ICs4Nyw5IEBAIFdFQktJVF9FRElUSU5H
X0NPTU1BTkRfUkVETwogPFNVQlNFQ1RJT04+CiB3ZWJraXRfd2ViX3ZpZXdfbmV3CiB3ZWJraXRf
d2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dAord2Via2l0X3dlYl92aWV3X25ld193aXRoX2dyb3Vw
CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQKK3dlYmtpdF93ZWJfdmlld19nZXRfZ3JvdXAK
IHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaQogd2Via2l0X3dlYl92aWV3X2xvYWRfaHRtbAogd2Vi
a2l0X3dlYl92aWV3X2xvYWRfYWx0ZXJuYXRlX2h0bWwKQEAgLTkzMSw2ICs5MzMsMjggQEAgd2Vi
a2l0X3NlY3VyaXR5X21hbmFnZXJfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+Cis8
RklMRT5XZWJLaXRXZWJWaWV3R3JvdXA8L0ZJTEU+CitXZWJLaXRXZWJWaWV3R3JvdXAKK3dlYmtp
dF93ZWJfdmlld19ncm91cF9uZXcKK3dlYmtpdF93ZWJfdmlld19ncm91cF9nZXRfbmFtZQord2Vi
a2l0X3dlYl92aWV3X2dyb3VwX2dldF9zZXR0aW5ncword2Via2l0X3dlYl92aWV3X2dyb3VwX3Nl
dF9zZXR0aW5ncworCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dlYktpdFdlYlZpZXdHcm91cENs
YXNzCitXRUJLSVRfVFlQRV9XRUJfVklFV19HUk9VUAorV0VCS0lUX1dFQl9WSUVXX0dST1VQCitX
RUJLSVRfSVNfV0VCX1ZJRVdfR1JPVVAKK1dFQktJVF9XRUJfVklFV19HUk9VUF9DTEFTUworV0VC
S0lUX0lTX1dFQl9WSUVXX0dST1VQX0NMQVNTCitXRUJLSVRfV0VCX1ZJRVdfR1JPVVBfR0VUX0NM
QVNTCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRXZWJWaWV3R3JvdXBQcml2YXRlCit3
ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8
RklMRT5XZWJLaXRXZWJFeHRlbnNpb248L0ZJTEU+CiBXZWJLaXRXZWJFeHRlbnNpb24KIFdlYktp
dFdlYkV4dGVuc2lvbkluaXRpYWxpemVGdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCmluZGV4IGViMGYzMzgu
LjVkOTdmNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay50eXBlcworKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKQEAgLTIxLDUgKzIxLDYgQEAgd2Via2l0X3dlYl9pbnNw
ZWN0b3JfZ2V0X3R5cGUKIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3R5cGUKIHdlYmtp
dF9jb250ZXh0X21lbnVfZ2V0X3R5cGUKIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfdHlw
ZQord2Via2l0X3dlYl92aWV3X2dyb3VwX2dldF90eXBlCiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9n
ZXRfdHlwZQogd2Via2l0X3dlYl9wYWdlX2dldF90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtCmluZGV4IGQwMjQ2ZDYu
LjczZDUxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL0dOVW1ha2VmaWxlLmFtCkBAIC0yMCw2ICsyMCw3IEBAIFRFU1RfUFJPR1MgKz0gXAog
CVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9UZXN0V2ViS2l0U2V0dGluZ3MgXAogCVByb2dyYW1z
L1dlYktpdDJBUElUZXN0cy9UZXN0V2ViS2l0V2ViQ29udGV4dCBcCiAJUHJvZ3JhbXMvV2ViS2l0
MkFQSVRlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3IFwKKwlQcm9ncmFtcy9XZWJLaXQyQVBJVGVzdHMv
VGVzdFdlYktpdFdlYlZpZXdHcm91cCBcCiAJUHJvZ3JhbXMvV2ViS2l0MkFQSVRlc3RzL1Rlc3RX
ZWJWaWV3RWRpdG9yCiAKIG5vaW5zdF9QUk9HUkFNUyArPSAkKFRFU1RfUFJPR1MpCkBAIC0yNTEs
NCArMjUyLDEwIEBAIFByb2dyYW1zX1dlYktpdDJBUElUZXN0c19UZXN0V2ViRXh0ZW5zaW9uc19D
UFBGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19jcHBmbGFncykKIFByb2dyYW1zX1dlYktpdDJBUElU
ZXN0c19UZXN0V2ViRXh0ZW5zaW9uc19MREFERCA9ICQod2Via2l0Ml90ZXN0c19sZGFkZCkKIFBy
b2dyYW1zX1dlYktpdDJBUElUZXN0c19UZXN0V2ViRXh0ZW5zaW9uc19MREZMQUdTID0gJCh3ZWJr
aXQyX3Rlc3RzX2xkZmxhZ3MpCiAKK1Byb2dyYW1zX1dlYktpdDJBUElUZXN0c19UZXN0V2ViS2l0
V2ViVmlld0dyb3VwX1NPVVJDRVMgPSBcCisgICAgICAgIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXAuY3BwCitQcm9ncmFtc19XZWJL
aXQyQVBJVGVzdHNfVGVzdFdlYktpdFdlYlZpZXdHcm91cF9DUFBGTEFHUyA9ICQod2Via2l0Ml90
ZXN0c19jcHBmbGFncykKK1Byb2dyYW1zX1dlYktpdDJBUElUZXN0c19UZXN0V2ViS2l0V2ViVmll
d0dyb3VwX0xEQUREID0gJCh3ZWJraXQyX3Rlc3RzX2xkYWRkKQorUHJvZ3JhbXNfV2ViS2l0MkFQ
SVRlc3RzX1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXBfTERGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19s
ZGZsYWdzKQorCiBlbmRpZiAjIEVOQUJMRV9XRUJLSVQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAK
aW5kZXggNmVkNGEzOC4uNGVjNjE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtNDgs
MTIgKzQ4LDEwIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3Q3VzdG9tQ2hhcnNldChXZWJWaWV3
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3U2V0dGlu
Z3MoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgV2ViS2l0U2V0dGlu
Z3MqIGRlZmF1bHRTZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3ModGVzdC0+
bV93ZWJWaWV3KTsKLSAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlz
aGVzKEdfT0JKRUNUKGRlZmF1bHRTZXR0aW5ncykpOwogICAgIGdfYXNzZXJ0KGRlZmF1bHRTZXR0
aW5ncyk7CiAgICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlw
dChkZWZhdWx0U2V0dGluZ3MpKTsKIAogICAgIEdSZWZQdHI8V2ViS2l0U2V0dGluZ3M+IG5ld1Nl
dHRpbmdzID0gYWRvcHRHUmVmKHdlYmtpdF9zZXR0aW5nc19uZXcoKSk7Ci0gICAgdGVzdC0+YXNz
ZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChuZXdTZXR0aW5ncy5n
ZXQoKSkpOwogICAgIGdfb2JqZWN0X3NldChHX09CSkVDVChuZXdTZXR0aW5ncy5nZXQoKSksICJl
bmFibGUtamF2YXNjcmlwdCIsIEZBTFNFLCBOVUxMKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0
X3NldHRpbmdzKHRlc3QtPm1fd2ViVmlldywgbmV3U2V0dGluZ3MuZ2V0KCkpOwogCkBAIC02Nyw3
ICs2NSw2IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3U2V0dGluZ3MoV2ViVmlld1Rlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF9zZXR0
aW5ncyhXRUJLSVRfV0VCX1ZJRVcod2ViVmlldzIuZ2V0KCkpKSA9PSBzZXR0aW5ncyk7CiAKICAg
ICBHUmVmUHRyPFdlYktpdFNldHRpbmdzPiBuZXdTZXR0aW5nczIgPSBhZG9wdEdSZWYod2Via2l0
X3NldHRpbmdzX25ldygpKTsKLSAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVz
dEZpbmlzaGVzKEdfT0JKRUNUKG5ld1NldHRpbmdzMi5nZXQoKSkpOwogICAgIHdlYmtpdF93ZWJf
dmlld19zZXRfc2V0dGluZ3MoV0VCS0lUX1dFQl9WSUVXKHdlYlZpZXcyLmdldCgpKSwgbmV3U2V0
dGluZ3MyLmdldCgpKTsKICAgICBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGlu
Z3MoV0VCS0lUX1dFQl9WSUVXKHdlYlZpZXcyLmdldCgpKSk7CiAgICAgZ19hc3NlcnQoc2V0dGlu
Z3MgPT0gbmV3U2V0dGluZ3MyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXAuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXdHcm91cC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JjMWQyMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJL
aXRXZWJWaWV3R3JvdXAuY3BwCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJW
aWV3VGVzdC5oIgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL3dlYmtp
dDIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisKK3N0YXRpYyB2b2lkIHRl
c3RXZWJWaWV3R3JvdXBEZWZhdWx0KFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAg
Ly8gRGVmYXVsdCBncm91cCBpcyBzaGFyZWQgYnkgYWxsIFdlYlZpZXdzIGJ5IGRlZmF1bHQuCisg
ICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiB3ZWJWaWV3MSA9IFdFQktJVF9XRUJfVklFVyh3ZWJr
aXRfd2ViX3ZpZXdfbmV3KCkpOworICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldzIg
PSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKKyAgICBnX2Fzc2VydCh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2dyb3VwKHdlYlZpZXcxLmdldCgpKSA9PSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2dyb3VwKHdlYlZpZXcyLmdldCgpKSk7CisKKyAgICAvLyBTZXR0aW5ncyBhcmUgc2hh
cmVkIGJ5IGFsbCB3ZWIgdmlldyBpbiB0aGUgc2FtZSBncm91cC4KKyAgICBnX2Fzc2VydCh3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcxLmdldCgpKSA9PSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcyLmdldCgpKSk7CisgICAgZ19hc3NlcnQod2Via2l0X3dl
Yl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3MS5nZXQoKSkgPT0gd2Via2l0X3dlYl92aWV3X2dy
b3VwX2dldF9zZXR0aW5ncyh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2dyb3VwKHdlYlZpZXcyLmdldCgp
KSkpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0dyb3VwTmV3R3JvdXAoVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICAvLyBQYXNzaW5nIDAgYXMgZ3JvdXAgbmFtZSBnZW5l
cmF0ZXMgdGhlIG5hbWUgYXV0b21hdGljYWxseS4KKyAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXdH
cm91cD4gdmlld0dyb3VwMSA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfbmV3KDAp
KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JK
RUNUKHZpZXdHcm91cDEuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ3Jv
dXBfZ2V0X25hbWUodmlld0dyb3VwMS5nZXQoKSkpOworCisgICAgLy8gTmV3IGdyb3VwIHdpdGgg
YSBnaXZlbiBuYW1lLgorICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlld0dyb3VwPiB2aWV3R3JvdXAy
ID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJfdmlld19ncm91cF9uZXcoIlRlc3RHcm91cDIiKSk7Cisg
ICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh2
aWV3R3JvdXAyLmdldCgpKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfdmlld19n
cm91cF9nZXRfbmFtZSh2aWV3R3JvdXAyLmdldCgpKSwgPT0sICJUZXN0R3JvdXAyIik7CisgICAg
Z19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfdmlld19ncm91cF9nZXRfbmFtZSh2aWV3R3JvdXAy
LmdldCgpKSwgIT0sIHdlYmtpdF93ZWJfdmlld19ncm91cF9nZXRfbmFtZSh2aWV3R3JvdXAxLmdl
dCgpKSk7CisKKyAgICAvLyBFdmVyeSBncm91cCBoYXMgaXRzIG93biBzZXR0aW5ncy4KKyAgICBn
X2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfZ2V0X3NldHRpbmdzKHZpZXdHcm91cDEuZ2V0
KCkpICE9IHdlYmtpdF93ZWJfdmlld19ncm91cF9nZXRfc2V0dGluZ3Modmlld0dyb3VwMi5nZXQo
KSkpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld05ld1dpdGhHcm91cChUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQoreworICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlld0dyb3VwPiB2aWV3
R3JvdXAxID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJfdmlld19ncm91cF9uZXcoIlRlc3RHcm91cDEi
KSk7CisgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09C
SkVDVCh2aWV3R3JvdXAxLmdldCgpKSk7CisgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiB3ZWJW
aWV3MSA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfZ3JvdXAodmll
d0dyb3VwMS5nZXQoKSkpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfZ3JvdXAo
d2ViVmlldzEuZ2V0KCkpID09IHZpZXdHcm91cDEuZ2V0KCkpOworCisgICAgR1JlZlB0cjxXZWJL
aXRXZWJWaWV3PiB3ZWJWaWV3MiA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3
KCkpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfZ3JvdXAod2ViVmlldzIuZ2V0
KCkpICE9IHZpZXdHcm91cDEuZ2V0KCkpOworCisgICAgLy8gU2V0dGluZ3Mgc2hvdWxkIGJlIGRp
ZmZlcmVudCBmb3Igdmlld3MgaW4gZGlmZmVyZW50IGdyb3Vwcy4KKyAgICBnX2Fzc2VydCh3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcxLmdldCgpKSAhPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcyLmdldCgpKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3R3JvdXBTZXR0aW5ncyhUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIEdS
ZWZQdHI8V2ViS2l0V2ViVmlld0dyb3VwPiB2aWV3R3JvdXAxID0gYWRvcHRHUmVmKHdlYmtpdF93
ZWJfdmlld19ncm91cF9uZXcoIlRlc3RHcm91cDEiKSk7CisgICAgdGVzdC0+YXNzZXJ0T2JqZWN0
SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh2aWV3R3JvdXAxLmdldCgpKSk7Cisg
ICAgR1JlZlB0cjxXZWJLaXRTZXR0aW5ncz4gbmV3U2V0dGluZ3MgPSBhZG9wdEdSZWYod2Via2l0
X3NldHRpbmdzX25ld193aXRoX3NldHRpbmdzKCJlbmFibGUtamF2YXNjcmlwdCIsIEZBTFNFLCBO
VUxMKSk7CisgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhH
X09CSkVDVChuZXdTZXR0aW5ncy5nZXQoKSkpOworICAgIHdlYmtpdF93ZWJfdmlld19ncm91cF9z
ZXRfc2V0dGluZ3Modmlld0dyb3VwMS5nZXQoKSwgbmV3U2V0dGluZ3MuZ2V0KCkpOworICAgIGdf
YXNzZXJ0KHdlYmtpdF93ZWJfdmlld19ncm91cF9nZXRfc2V0dGluZ3Modmlld0dyb3VwMS5nZXQo
KSkgPT0gbmV3U2V0dGluZ3MuZ2V0KCkpOworCisgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiB3
ZWJWaWV3MSA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfZ3JvdXAo
dmlld0dyb3VwMS5nZXQoKSkpOworICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldzIg
PSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKKyAgICBXZWJLaXRTZXR0
aW5ncyogd2ViVmlldzFTZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2Vi
VmlldzEuZ2V0KCkpOworICAgIFdlYktpdFNldHRpbmdzKiB3ZWJWaWV3MlNldHRpbmdzID0gd2Vi
a2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3Mi5nZXQoKSk7CisgICAgZ19hc3NlcnQo
d2ViVmlldzFTZXR0aW5ncyAhPSB3ZWJWaWV3MlNldHRpbmdzKTsKKyAgICBnX2Fzc2VydCh3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KHdlYlZpZXcxU2V0dGluZ3MpICE9IHdl
YmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQod2ViVmlldzJTZXR0aW5ncykpOwor
CisgICAgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyh3ZWJWaWV3MS5nZXQoKSwgd2ViVmll
dzJTZXR0aW5ncyk7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3
ZWJWaWV3MS5nZXQoKSkgPT0gd2ViVmlldzJTZXR0aW5ncyk7CisgICAgZ19hc3NlcnQod2Via2l0
X3dlYl92aWV3X2dyb3VwX2dldF9zZXR0aW5ncyh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2dyb3VwKHdl
YlZpZXcxLmdldCgpKSkgPT0gd2ViVmlldzJTZXR0aW5ncyk7Cit9CisKK3ZvaWQgYmVmb3JlQWxs
KCkKK3sKKyAgICBUZXN0OjphZGQoIldlYktpdFdlYlZpZXdHcm91cCIsICJkZWZhdWx0LWdyb3Vw
IiwgdGVzdFdlYlZpZXdHcm91cERlZmF1bHQpOworICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmll
d0dyb3VwIiwgIm5ldy1ncm91cCIsIHRlc3RXZWJWaWV3R3JvdXBOZXdHcm91cCk7CisgICAgVGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIm5ldy13aXRoLWdyb3VwIiwgdGVzdFdlYlZpZXdOZXdX
aXRoR3JvdXApOworICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlld0dyb3VwIiwgInNldHRpbmdz
IiwgdGVzdFdlYlZpZXdHcm91cFNldHRpbmdzKTsKK30KKwordm9pZCBhZnRlckFsbCgpCit7CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRleCAxYjRm
YTg2Li5kMTg0MzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0
Mi5oCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJSZXNvdXJj
ZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViVmlldy5oPgogI2luY2x1ZGUgPHdlYmtp
dDIvV2ViS2l0V2ViVmlld0Jhc2UuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlZpZXdH
cm91cC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2luZG93UHJvcGVydGllcy5oPgogCiAj
dW5kZWYgX19XRUJLSVQyX0hfSU5TSURFX18K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199241</attachid>
            <date>2013-04-23 08:22:23 -0700</date>
            <delta_ts>2013-04-25 08:16:43 -0700</delta_ts>
            <desc>Rebased patch</desc>
            <filename>wk2-view-group.diff</filename>
            <type>text/plain</type>
            <size>52843</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmOTU1OTA2Li5kMzMzODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTA3
IEBACiAyMDEzLTA0LTIzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAorICAgICAgICBbR1RLXSBBZGQgV2ViS2l0V2ViVmlld0dyb3VwIHRvIFdlYktpdDIgR1RL
KyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
MTI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElu
IHRoZSBjdXJyZW50IEFQSSB0aGUgc2V0dGluZ3MgYXJlIGFsd2F5cyBzaGFyZWQgYnkgYWxsIHdl
YgorICAgICAgICB2aWV3cywgYmVjYXVzZSB0aGV5IGFyZSBhbHdheXMgY3JlYXRlZCBvbiB0aGUg
ZGVmYXVsdCBwYWdlCisgICAgICAgIGdyb3VwLiBUaGlzIG1ha2VzIGltcG9zc2libGUgdG8gaGF2
ZSBkaWZmZXJlbnQgc2V0dGluZ3Mgb24KKyAgICAgICAgZGlmZmVyZW50IHdlYiB2aWV3cy4gRXhw
b3NlIHRoZSBwYWdlIGdyb3VwIGluIHRoZSBBUEksCisgICAgICAgIHNvIHRoYXQgdXNlcnMgY2Fu
IGNyZWF0ZSB3ZWIgdmlld3Mgb24gYSBncm91cCBkaWZmZXJlbnQgdGhhbiB0aGUKKyAgICAgICAg
ZGVmYXVsdCBvbmUgdG8gaGF2ZSB0aGVpciBvd24gc2V0dGluZ3MuCisKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5saXN0LmFtOiBBZGQgbmV3IGZpbGVzIHRvIGNvbXBpbGF0aW9uLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcDoKKyAgICAgICAgKHdlYmtpdFNl
dHRpbmdzR2V0UHJlZmVyZW5jZXMpOiBIZWxwZXIgcHJpdmF0ZSBtZXRob2QgdG8gZ2V0IHRoZQor
ICAgICAgICBXZWJQcmVmZXJlbmNlcyB3cmFwcGVkIGJ5IGEgV2ViS2l0U2V0dGluZ3Mgb2JqZWN0
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzUHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAg
ICAoX1dlYktpdFdlYkNvbnRleHRQcml2YXRlKTogQWRkIGEgZGVmYXVsdCBXZWJLaXRXZWJWaWV3
R3JvdXAuCisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcpOiBD
cmVhdGUgdGhlIFdlYlBhZ2VQcm94eQorICAgICAgICB3aXRoIHRoZSBXZWJQYWdlR3JvdXAgb2Yg
dGhlIGdpdmVuIFdlYktpdFdlYlZpZXdHcm91cC4KKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRH
ZXREZWZhdWx0V2ViVmlld0dyb3VwKTogSGVscGVyIHByaXZhdGUgbWV0aG9kIHRvCisgICAgICAg
IGdldCB0aGUgZGVmYXVsdCBXZWJLaXRXZWJWaWV3R3JvdXAuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3UHJpdmF0
ZSk6IEFkZCBhIFdlYktpdFdlYlZpZXdHcm91cCBpbiBjYXNlIHRoZSB2aWV3CisgICAgICAgIGlz
IGNyZWF0ZWQgd2l0aCBhIGdyb3VwLgorICAgICAgICAod2Via2l0V2ViVmlld1VwZGF0ZVNldHRp
bmdzKTogS2VlcCBhIHJlZmVyZW5jZSBvZiB0aGUgZ3JvdXAKKyAgICAgICAgc2V0dGluZ3MgdG8g
YmUgYWJsZSB0byBkaXNjb25uZWN0IHRoZSBzaWduYWxzIHdoZW4gdGhlIHNldHRpbmdzCisgICAg
ICAgIG9iamVjdCBpcyByZXBsYWNlZCBpbiB0aGUgdmlldyBncm91cCBhbmQgY29ubmVjdCB0byB0
aGUgc2lnbmFscworICAgICAgICBmb3IgdGhlIGN1c3RvbSBzZXR0aW5ncy4KKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdTZXR0aW5nc0NoYW5nZWQpOiBEaXNjb25uZWN0IHRoZSBzaWduYWxzIGZvciB0
aGUKKyAgICAgICAgcHJldmlvdXMgc2V0dGluZ3MgYW5kIHNldCB0aGUgbmV3IHNldHRpbmdzLgor
ICAgICAgICAod2Via2l0V2ViVmlld0Rpc2Nvbm5lY3RTZXR0aW5nc0NoYW5nZWRTaWduYWxIYW5k
bGVyKTogRGlzY29ubmVjdAorICAgICAgICBub3RpZnk6OnNldHRpbmdzIHNpZ25hbCBvZiBXZWJL
aXRXZWJWaWV3R3JvdXAuCisgICAgICAgICh3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQpOiBQYXNz
IHRoZSBjdXJyZW50IFdlYktpdFdlYlZpZXdHcm91cCB0bworICAgICAgICB3ZWJraXRXZWJDb250
ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoKS4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdTZXRQcm9w
ZXJ0eSk6IEFkZCBzZXR0ZXIgZm9yIGdyb3VwIHByb3BlcnR5LgorICAgICAgICAod2Via2l0V2Vi
Vmlld0dldFByb3BlcnR5KTogQWRkIGdldHRlciBmb3IgZ3JvdXAgcHJvcGVydHkuCisgICAgICAg
ICh3ZWJraXRXZWJWaWV3RGlzcG9zZSk6IENhbGwKKyAgICAgICAgd2Via2l0V2ViVmlld0Rpc2Nv
bm5lY3RTZXR0aW5nc0NoYW5nZWRTaWduYWxIYW5kbGVyKCkuCisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfY2xhc3NfaW5pdCk6IEFkZCBXZWJLaXRXZWJWaWV3Omdyb3VwIHByb3BlcnR5LgorICAg
ICAgICAod2Via2l0V2ViVmlld0hhbmRsZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTogVXNlCisg
ICAgICAgIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MoKS4KKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19uZXdfd2l0aF9ncm91cCk6IENyZWF0ZSBhIG5ldyB3ZWIgdmlldyB3aXRoIHRoZQor
ICAgICAgICBnaXZlbiBXZWJLaXRXZWJWaWV3R3JvdXAuCisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2dyb3VwKTogUmV0dXJuIHRoZSBjdXJyZW50IFdlYktpdFdlYlZpZXdHcm91cAorICAg
ICAgICBvciB0aGUgZGVmYXVsdCBvbmUgaWYgdGhlIHZpZXcgd2FzIG5vdCBjcmVhdGVkIHdpdGgK
KyAgICAgICAgd2Via2l0X3dlYl92aWV3X25ld193aXRoX2dyb3VwKCkuCisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKTogU2V0IHRoZSBzZXR0aW5ncyBvZiB0aGUgY3VycmVu
dAorICAgICAgICBXZWJLaXRXZWJWaWV3R3JvdXAuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3NldHRpbmdzKTogR2V0IHRoZSBzZXR0aW5ncyBvZiB0aGUgY3VycmVudAorICAgICAgICBX
ZWJLaXRXZWJWaWV3R3JvdXAuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X3pvb21fbGV2
ZWwpOiBVc2UKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncygpLgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X2dldF96b29tX2xldmVsKTogRGl0dG8uCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdHcm91cC5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlZp
ZXdHcm91cFByaXZhdGUpOgorICAgICAgICAod2Via2l0V2ViVmlld0dyb3VwU2V0UHJvcGVydHkp
OgorICAgICAgICAod2Via2l0V2ViVmlld0dyb3VwR2V0UHJvcGVydHkpOgorICAgICAgICAod2Vi
a2l0V2ViVmlld0dyb3VwQ29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dy
b3VwX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0V2ViVmlld0dyb3VwQXR0YWNoU2V0dGlu
Z3NUb1BhZ2VHcm91cCk6IFNldCB0aGUKKyAgICAgICAgV2ViUHJlZmVyZW5jZXMgb2YgdGhlIGN1
cnJlbnQgV2ViS2l0U2V0dGluZ3MgdG8gdGhlIFdlYlBhZ2VHcm91cC4KKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdHcm91cENyZWF0ZSk6IENyZWF0ZSBhIG5ldyBXZWJLaXRXZWJWaWV3R3JvdXAgZm9y
CisgICAgICAgIHRoZSBnaXZlbiBXZWJQYWdlR3JvdXAuCisgICAgICAgICh3ZWJraXRXZWJWaWV3
R3JvdXBHZXRQYWdlR3JvdXApOiBIZWxwZXIgcHJpdmF0ZSBtZXRob2QgdG8gZ2V0IHRoZQorICAg
ICAgICBXZWJQYWdlR3JvdXAgd3JhcHBlZCBieSB0aGUgV2ViS2l0V2ViVmlld0dyb3VwLgorICAg
ICAgICAod2Via2l0X3dlYl92aWV3X2dyb3VwX25ldyk6IENyZWF0ZSBhIG5ldyBXZWJLaXRXZWJW
aWV3R3JvdXAuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfZ2V0X25hbWUpOiBSZXR1
cm4gdGhlIG5hbWUgb2YgYQorICAgICAgICBXZWJLaXRXZWJWaWV3R3JvdXAuCisgICAgICAgICh3
ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfZ2V0X3NldHRpbmdzKTogR2V0IHRoZSBzZXR0aW5zIG9mIGEK
KyAgICAgICAgV2ViS2l0V2ViVmlld0dyb3VwLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dy
b3VwX3NldF9zZXR0aW5ncyk6IFNldCBuZXcgc2V0dGluZ3Mgb2YgYQorICAgICAgICBXZWJLaXRX
ZWJWaWV3R3JvdXAuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0dy
b3VwLmg6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlZpZXdHcm91cCk6CisgICAgICAgIChf
V2ViS2l0V2ViVmlld0dyb3VwQ2xhc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdHcm91cFByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbDogQWRkCisgICAgICAgIFdlYktpdFdlYlZp
ZXdHcm91cCBzZWN0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZCBuZXcgc3ltYm9scy4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXM6IEFkZAorICAgICAgICB3ZWJraXRfd2ViX3Zp
ZXdfZ3JvdXBfZ2V0X3R5cGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvR05V
bWFrZWZpbGUuYW06IEFkZCBuZXcgZmlsZXMgdG8KKyAgICAgICAgY29tcGlsYXRpb24uCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAg
ICAgICAodGVzdFdlYlZpZXdTZXR0aW5ncyk6IFdlIGNhbid0IHdhdGNoIHNldHRpbmdzIGluIHRo
ZSBkZWZhdWx0IHZpZXcKKyAgICAgICAgZ3JvdXAgYW55bW9yZSwgYmVjYXVzZSB0aGV5IGFyZSBu
b3QgcmVsZWFzZWQgd2l0aCB0aGUgd2ViIHZpZXcgYnV0CisgICAgICAgIHdpdGggdGhlIHdlYiBj
b250ZXh0IHRoYXQgaXMgZnJlZWQgYWZ0ZXIgdGhlIFRlc3QgZGVzdHJ1Y3Rvci4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcDogQWRk
ZWQuCisgICAgICAgICh0ZXN0V2ViVmlld0dyb3VwRGVmYXVsdCk6CisgICAgICAgICh0ZXN0V2Vi
Vmlld0dyb3VwTmV3R3JvdXApOgorICAgICAgICAodGVzdFdlYlZpZXdOZXdXaXRoR3JvdXApOgor
ICAgICAgICAodGVzdFdlYlZpZXdHcm91cFNldHRpbmdzKToKKyAgICAgICAgKGJlZm9yZUFsbCk6
CisgICAgICAgIChhZnRlckFsbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0
Mi5oOiBJbmNsdWRlIFdlYktpdFdlYlZpZXdHcm91cC5oLgorCisyMDEzLTA0LTIzICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1RLXSBBZGQg
d2Via2l0X3VyaV9yZXF1ZXN0X2dldF9odHRwX2hlYWRlcnMgdG8gV2ViS2l0MiBHVEsrIEFQSQog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMTYwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGQ2NWM3ZGMuLjI3ZTBhYmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dl
YktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTI5LDYgKzEyOSw3IEBAIHdlYmtpdDJndGtf
aF9hcGkgKz0gXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViUmVzb3Vy
Y2UuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggXAog
CSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuaCBcCisJJChX
ZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3JvdXAuaCBcCiAJJChXZWJL
aXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmggXAogCSQoV2Vi
S2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCiAKQEAgLTc3NSw2ICs3NzYsOSBAQCB3
ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlQWNjZXNzaWJsZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZUFjY2Vzc2libGUuY3BwIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCBcCisJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmggXAorCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHcm91cC5jcHAgXAorCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHcm91cFByaXZhdGUu
aCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2luZG93UHJvcGVy
dGllcy5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdpbmRv
d1Byb3BlcnRpZXMuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2luZG93UHJvcGVydGllc1ByaXZhdGUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKaW5kZXggZWRkZTI4OS4uYzBmMWM0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGlu
Z3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRp
bmdzLmNwcApAQCAtMzMsOSArMzMsNiBAQAogCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgog
I2luY2x1ZGUgIldlYktpdFNldHRpbmdzUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYlBhZ2VHcm91
cC5oIgotI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgotI2luY2x1ZGUgIldlYlByZWZlcmVuY2Vz
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQWdlbnRHdGsuaD4KICNpbmNsdWRlIDxnbGliL2dp
MThuLWxpYi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTcyLDE4ICs2OSwx
OSBAQCBzdHJ1Y3QgX1dlYktpdFNldHRpbmdzUHJpdmF0ZSB7CiAKIC8qKgogICogU0VDVElPTjpX
ZWJLaXRTZXR0aW5ncwotICogQHNob3J0X2Rlc2NyaXB0aW9uOiBDb250cm9sIHRoZSBiZWhhdmlv
dXIgb2YgYSAjV2ViS2l0V2ViVmlldworICogQHNob3J0X2Rlc2NyaXB0aW9uOiBDb250cm9sIHRo
ZSBiZWhhdmlvdXIgb2YgI1dlYktpdFdlYlZpZXc8IS0tIC0tPnMKKyAqIEBzZWVfYWxzbzogI1dl
YktpdFdlYlZpZXdHcm91cCwgI1dlYktpdFdlYlZpZXcKICAqCi0gKiAjV2ViS2l0U2V0dGluZ3Mg
Y2FuIGJlIGFwcGxpZWQgdG8gYSAjV2ViS2l0V2ViVmlldyB0byBjb250cm9sIHRleHQgY2hhcnNl
dCwKLSAqIGNvbG9yLCBmb250IHNpemVzLCBwcmludGluZyBtb2RlLCBzY3JpcHQgc3VwcG9ydCwg
bG9hZGluZyBvZiBpbWFnZXMgYW5kIHZhcmlvdXMgb3RoZXIgdGhpbmdzLgorICogI1dlYktpdFNl
dHRpbmdzIGNhbiBiZSBhcHBsaWVkIHRvIGEgI1dlYktpdFdlYlZpZXdHcm91cCB0byBjb250cm9s
IHRleHQgY2hhcnNldCwKKyAqIGNvbG9yLCBmb250IHNpemVzLCBwcmludGluZyBtb2RlLCBzY3Jp
cHQgc3VwcG9ydCwgbG9hZGluZyBvZiBpbWFnZXMgYW5kIHZhcmlvdXMKKyAqIG90aGVyIHRoaW5n
cyBvbiB0aGUgI1dlYktpdFdlYlZpZXc8IS0tIC0tPnMgb2YgdGhlIGdyb3VwLgogICogQWZ0ZXIg
Y3JlYXRpb24sIGEgI1dlYktpdFNldHRpbmdzIG9iamVjdCBjb250YWlucyBkZWZhdWx0IHNldHRp
bmdzLgogICoKICAqIDxpbmZvcm1hbGV4YW1wbGU+PHByb2dyYW1saXN0aW5nPgotICogLzwhLS0g
LS0+KiBDcmVhdGUgYSBuZXcgI1dlYktpdFNldHRpbmdzIGFuZCBkaXNhYmxlIEphdmFTY3JpcHQu
ICo8IS0tIC0tPi8KLSAqIFdlYktpdFNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF9zZXR0aW5n
c19uZXcgKCk7Ci0gKiBnX29iamVjdF9zZXQgKEdfT0JKRUNUIChzZXR0aW5ncyksICJlbmFibGUt
amF2YXNjcmlwdCIsIEZBTFNFLCBOVUxMKTsKKyAqIC88IS0tIC0tPiogRGlzYWJsZSBKYXZhU2Ny
aXB0LiAqPCEtLSAtLT4vCisgKiBXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2Vi
X3ZpZXdfZ3JvdXBfZ2V0X3NldHRpbmdzIChteV92aWV3X2dyb3VwKTsKKyAqIHdlYmtpdF9zZXR0
aW5nc19zZXRfZW5hYmxlX2phdmFzY3JpcHQgKHNldHRpbmdzLCBGQUxTRSk7CiAgKgotICogd2Vi
a2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyAoV0VCS0lUX1dFQl9WSUVXIChteV93ZWJ2aWV3KSwg
c2V0dGluZ3MpOwogICogPC9wcm9ncmFtbGlzdGluZz48L2luZm9ybWFsZXhhbXBsZT4KICAqLwog
CkBAIC0xMDc1LDE4ICsxMDczLDE2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9zZXR0aW5nc19jbGFz
c19pbml0KFdlYktpdFNldHRpbmdzQ2xhc3MqIGtsYXNzKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFdyaXRlQ29uc3RydWN0UGFy
YW1GbGFncykpOwogfQogCi12b2lkIHdlYmtpdFNldHRpbmdzQXR0YWNoU2V0dGluZ3NUb1BhZ2Uo
V2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBXZWJQYWdlUHJveHkqIHBhZ2UpCitXZWJQcmVmZXJl
bmNlcyogd2Via2l0U2V0dGluZ3NHZXRQcmVmZXJlbmNlcyhXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MpCiB7Ci0gICAgcGFnZS0+cGFnZUdyb3VwKCktPnNldFByZWZlcmVuY2VzKHNldHRpbmdzLT5w
cml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Ci0gICAgcGFnZS0+c2V0Q2FuUnVuTW9kYWwoc2V0dGlu
Z3MtPnByaXYtPmFsbG93TW9kYWxEaWFsb2dzKTsKLSAgICBwYWdlLT5zZXRDdXN0b21Vc2VyQWdl
bnQoU3RyaW5nOjpmcm9tVVRGOChzZXR0aW5ncy0+cHJpdi0+dXNlckFnZW50LmRhdGEoKSkpOwor
ICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCk7CiB9CiAKIC8qKgog
ICogd2Via2l0X3NldHRpbmdzX25ldzoKICAqCiAgKiBDcmVhdGVzIGEgbmV3ICNXZWJLaXRTZXR0
aW5ncyBpbnN0YW5jZSB3aXRoIGRlZmF1bHQgdmFsdWVzLiBJdCBtdXN0Ci0gKiBiZSBtYW51YWxs
eSBhdHRhY2hlZCB0byBhICNXZWJLaXRXZWJWaWV3LgorICogYmUgbWFudWFsbHkgYXR0YWNoZWQg
dG8gYSAjV2ViS2l0V2ViVmlld0dyb3VwLgogICogU2VlIGFsc28gd2Via2l0X3NldHRpbmdzX25l
d193aXRoX3NldHRpbmdzKCkuCiAgKgogICogUmV0dXJuczogYSBuZXcgI1dlYktpdFNldHRpbmdz
IGluc3RhbmNlLgpAQCAtMTEwMyw3ICsxMDk5LDcgQEAgV2ViS2l0U2V0dGluZ3MqIHdlYmtpdF9z
ZXR0aW5nc19uZXcoKQogICogICAgJU5VTEwtdGVybWluYXRlZAogICoKICAqIENyZWF0ZXMgYSBu
ZXcgI1dlYktpdFNldHRpbmdzIGluc3RhbmNlIHdpdGggdGhlIGdpdmVuIHNldHRpbmdzLiBJdCBt
dXN0Ci0gKiBiZSBtYW51YWxseSBhdHRhY2hlZCB0byBhICNXZWJLaXRXZWJWaWV3LgorICogYmUg
bWFudWFsbHkgYXR0YWNoZWQgdG8gYSAjV2ViS2l0V2ViVmlld0dyb3VwLgogICoKICAqIFJldHVy
bnM6IGEgbmV3ICNXZWJLaXRTZXR0aW5ncyBpbnN0YW5jZS4KICAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3NQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5nc1ByaXZhdGUuaApp
bmRleCAxZWMyNTJiYy4uYzIzYThjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3NQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3NQcml2YXRlLmgKQEAgLTI3LDcgKzI3LDgg
QEAKICNkZWZpbmUgV2ViS2l0U2V0dGluZ3NQcml2YXRlX2gKIAogI2luY2x1ZGUgIldlYktpdFNl
dHRpbmdzLmgiCisjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKIAotdm9pZCB3ZWJraXRTZXR0
aW5nc0F0dGFjaFNldHRpbmdzVG9QYWdlKFdlYktpdFNldHRpbmdzKiwgV2ViS2l0OjpXZWJQYWdl
UHJveHkqKTsKK1dlYktpdDo6V2ViUHJlZmVyZW5jZXMqIHdlYmtpdFNldHRpbmdzR2V0UHJlZmVy
ZW5jZXMoV2ViS2l0U2V0dGluZ3MqKTsKIAogI2VuZGlmIC8vIFdlYktpdFNldHRpbmdzUHJpdmF0
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YkNvbnRleHQuY3BwCmluZGV4IGNkYjFlYjguLjQ3NDZiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0zNiw2
ICszNiw3IEBACiAjaW5jbHVkZSAiV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUuaCIKICNp
bmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYlZpZXdHcm91cFByaXZhdGUuaCIK
ICNpbmNsdWRlICJXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JY29uRGF0YWJhc2UuaD4KQEAg
LTE0Myw2ICsxNDQsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYkNvbnRleHRQcml2YXRlIHsKICAgICBX
ZWJLaXRUTFNFcnJvcnNQb2xpY3kgdGxzRXJyb3JzUG9saWN5OwogCiAgICAgSGFzaE1hcDx1aW50
NjRfdCwgV2ViS2l0V2ViVmlldyo+IHdlYlZpZXdzOworICAgIEdSZWZQdHI8V2ViS2l0V2ViVmll
d0dyb3VwPiBkZWZhdWx0V2ViVmlld0dyb3VwOwogfTsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNb
TEFTVF9TSUdOQUxdID0geyAwLCB9OwpAQCAtODc0LDEyICs4NzYsMTcgQEAgdm9pZCB3ZWJraXRX
ZWJDb250ZXh0RGlkRmluaXNoVVJJUmVxdWVzdChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1
aW50NjRfdCByZXEKICAgICBjb250ZXh0LT5wcml2LT51cmlTY2hlbWVSZXF1ZXN0cy5yZW1vdmUo
cmVxdWVzdElEKTsKIH0KIAotdm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZp
ZXcoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3Zv
aWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQq
IGNvbnRleHQsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYlZpZXdHcm91cCogd2Vi
Vmlld0dyb3VwKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJ
VF9XRUJfVklFV19CQVNFKHdlYlZpZXcpOwotICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2Vi
UGFnZSh3ZWJWaWV3QmFzZSwgY29udGV4dC0+cHJpdi0+Y29udGV4dC5nZXQoKSwgMCk7CisgICAg
V2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAgPSB3ZWJWaWV3R3JvdXAgPyB3ZWJraXRXZWJWaWV3R3Jv
dXBHZXRQYWdlR3JvdXAod2ViVmlld0dyb3VwKSA6IDA7CisgICAgd2Via2l0V2ViVmlld0Jhc2VD
cmVhdGVXZWJQYWdlKHdlYlZpZXdCYXNlLCBjb250ZXh0LT5wcml2LT5jb250ZXh0LmdldCgpLCBw
YWdlR3JvdXApOworCiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VH
ZXRQYWdlKHdlYlZpZXdCYXNlKTsKICAgICBjb250ZXh0LT5wcml2LT53ZWJWaWV3cy5zZXQocGFn
ZS0+cGFnZUlEKCksIHdlYlZpZXcpOworCisgICAgaWYgKCFwYWdlR3JvdXAgJiYgIWNvbnRleHQt
PnByaXYtPmRlZmF1bHRXZWJWaWV3R3JvdXApCisgICAgICAgIGNvbnRleHQtPnByaXYtPmRlZmF1
bHRXZWJWaWV3R3JvdXAgPSBhZG9wdEdSZWYod2Via2l0V2ViVmlld0dyb3VwQ3JlYXRlKHBhZ2Ut
PnBhZ2VHcm91cCgpKSk7CiB9CiAKIHZvaWQgd2Via2l0V2ViQ29udGV4dFdlYlZpZXdEZXN0cm95
ZWQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgV2ViS2l0V2ViVmlldyogd2ViVmlldykKQEAg
LTg5MiwzICs4OTksOCBAQCBXZWJLaXRXZWJWaWV3KiB3ZWJraXRXZWJDb250ZXh0R2V0V2ViVmll
d0ZvclBhZ2UoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgV2ViUAogewogICAgIHJldHVybiBw
YWdlID8gY29udGV4dC0+cHJpdi0+d2ViVmlld3MuZ2V0KHBhZ2UtPnBhZ2VJRCgpKSA6IDA7CiB9
CisKK1dlYktpdFdlYlZpZXdHcm91cCogd2Via2l0V2ViQ29udGV4dEdldERlZmF1bHRXZWJWaWV3
R3JvdXAoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gY29udGV4dC0+
cHJpdi0+ZGVmYXVsdFdlYlZpZXdHcm91cC5nZXQoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCmlu
ZGV4IDljZDZmMjMuLjgxYzQ3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklTY2hl
bWVSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YktpdFdlYlZpZXdHcm91cC5oIgogI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5
LmgiCiAKIFdlYktpdDo6V2ViQ29udGV4dCogd2Via2l0V2ViQ29udGV4dEdldENvbnRleHQoV2Vi
S2l0V2ViQ29udGV4dCopOwpAQCAtNDIsOCArNDMsOSBAQCBXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0
TWFuYWdlclByb3h5KiB3ZWJraXRXZWJDb250ZXh0R2V0UmVxdWVzdE1hbmFnZXIoV2ViS2l0V2Vi
Qwogdm9pZCB3ZWJraXRXZWJDb250ZXh0UmVjZWl2ZWRVUklSZXF1ZXN0KFdlYktpdFdlYkNvbnRl
eHQqLCBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Kik7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHREaWRG
YWlsVG9Mb2FkVVJJUmVxdWVzdChXZWJLaXRXZWJDb250ZXh0KiwgdWludDY0X3QgcmVxdWVzdElE
KTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dERpZEZpbmlzaFVSSVJlcXVlc3QoV2ViS2l0V2ViQ29u
dGV4dCosIHVpbnQ2NF90IHJlcXVlc3RJRCk7Ci12b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQ
YWdlRm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0V2ViVmlldyopOwordm9pZCB3
ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCosIFdl
YktpdFdlYlZpZXcqLCBXZWJLaXRXZWJWaWV3R3JvdXAqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4
dFdlYlZpZXdEZXN0cm95ZWQoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcqKTsKIFdl
YktpdFdlYlZpZXcqIHdlYmtpdFdlYkNvbnRleHRHZXRXZWJWaWV3Rm9yUGFnZShXZWJLaXRXZWJD
b250ZXh0KiwgV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKK1dlYktpdFdlYlZpZXdHcm91cCogd2Vi
a2l0V2ViQ29udGV4dEdldERlZmF1bHRXZWJWaWV3R3JvdXAoV2ViS2l0V2ViQ29udGV4dCopOwog
CiAjZW5kaWYgLy8gV2ViS2l0V2ViQ29udGV4dFByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBhMjBjZGVjLi45
NmQyZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcApAQCAtNDcsNyArNDcsNiBAQAogI2luY2x1ZGUgIldlYktpdFByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLmgiCiAjaW5jbHVkZSAi
V2ViS2l0U2NyaXB0RGlhbG9nUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdFNldHRpbmdzUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFVJQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJ
UmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklSZXNwb25zZVByaXZhdGUuaCIK
QEAgLTU1LDYgKzU0LDcgQEAKICNpbmNsdWRlICJXZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0V2ViUmVzb3VyY2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
V2ViVmlld0Jhc2VQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0dyb3VwUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
V2luZG93UHJvcGVydGllc1ByaXZhdGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElD
YXN0Lmg+CkBAIC0xMjYsNiArMTI2LDcgQEAgZW51bSB7CiAgICAgUFJPUF8wLAogCiAgICAgUFJP
UF9XRUJfQ09OVEVYVCwKKyAgICBQUk9QX0dST1VQLAogICAgIFBST1BfVElUTEUsCiAgICAgUFJP
UF9FU1RJTUFURURfTE9BRF9QUk9HUkVTUywKICAgICBQUk9QX0ZBVklDT04sCkBAIC0xNjMsNiAr
MTY0LDggQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAKICAgICBHUmVmUHRyPFdl
YktpdEJhY2tGb3J3YXJkTGlzdD4gYmFja0ZvcndhcmRMaXN0OwogICAgIEdSZWZQdHI8V2ViS2l0
U2V0dGluZ3M+IHNldHRpbmdzOworICAgIHVuc2lnbmVkIGxvbmcgc2V0dGluZ3NDaGFuZ2VkSGFu
ZGxlcklEOworICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlld0dyb3VwPiBncm91cDsKICAgICBHUmVm
UHRyPFdlYktpdFdpbmRvd1Byb3BlcnRpZXM+IHdpbmRvd1Byb3BlcnRpZXM7CiAKICAgICBHUmVm
UHRyPEdNYWluTG9vcD4gbW9kYWxMb29wOwpAQCAtMzYzLDEwICszNjYsMTYgQEAgc3RhdGljIHZv
aWQgZmF2aWNvbkNoYW5nZWRDYWxsYmFjayhXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNl
LCBjb25zdCBjaGFyKgogICAgIHdlYmtpdFdlYlZpZXdVcGRhdGVGYXZpY29uVVJJKHdlYlZpZXcs
IGZhdmljb25VUkkpOwogfQogCi1zdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U2V0U2V0dGluZ3Mo
V2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQorc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld1VwZGF0ZVNldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CiB7Ci0gICAgd2ViVmlldy0+cHJpdi0+c2V0dGluZ3MgPSBzZXR0aW5nczsKLSAgICB3ZWJraXRT
ZXR0aW5nc0F0dGFjaFNldHRpbmdzVG9QYWdlKHdlYlZpZXctPnByaXYtPnNldHRpbmdzLmdldCgp
LCBnZXRQYWdlKHdlYlZpZXcpKTsKKyAgICAvLyBXZSBrZWVwIGEgcmVmIG9mIHRoZSBjdXJyZW50
IHNldHRpbmdzIHRvIGRpc2Nvbm5lY3QgdGhlIHNpZ25hbHMgd2hlbiBzZXR0aW5ncyBjaGFuZ2Ug
aW4gdGhlIGdyb3VwLgorICAgIHdlYlZpZXctPnByaXYtPnNldHRpbmdzID0gd2Via2l0X3dlYl92
aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KTsKKworICAgIFdlYktpdFNldHRpbmdzKiBzZXR0aW5n
cyA9IHdlYlZpZXctPnByaXYtPnNldHRpbmdzLmdldCgpOworICAgIFdlYlBhZ2VQcm94eSogcGFn
ZSA9IGdldFBhZ2Uod2ViVmlldyk7CisgICAgcGFnZS0+c2V0Q2FuUnVuTW9kYWwod2Via2l0X3Nl
dHRpbmdzX2dldF9hbGxvd19tb2RhbF9kaWFsb2dzKHNldHRpbmdzKSk7CisgICAgcGFnZS0+c2V0
Q3VzdG9tVXNlckFnZW50KFN0cmluZzo6ZnJvbVVURjgod2Via2l0X3NldHRpbmdzX2dldF91c2Vy
X2FnZW50KHNldHRpbmdzKSkpOworCiAgICAgZ19zaWduYWxfY29ubmVjdChzZXR0aW5ncywgIm5v
dGlmeTo6YWxsb3ctbW9kYWwtZGlhbG9ncyIsIEdfQ0FMTEJBQ0soYWxsb3dNb2RhbERpYWxvZ3ND
aGFuZ2VkKSwgd2ViVmlldyk7CiAgICAgZ19zaWduYWxfY29ubmVjdChzZXR0aW5ncywgIm5vdGlm
eTo6em9vbS10ZXh0LW9ubHkiLCBHX0NBTExCQUNLKHpvb21UZXh0T25seUNoYW5nZWQpLCB3ZWJW
aWV3KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHNldHRpbmdzLCAibm90aWZ5Ojp1c2VyLWFnZW50
IiwgR19DQUxMQkFDSyh1c2VyQWdlbnRDaGFuZ2VkKSwgd2ViVmlldyk7CkBAIC0zODAsNiArMzg5
LDIwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0U2V0dGluZ3NTaWduYWxI
YW5kbGVycyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3CiAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlz
Y29ubmVjdF9ieV9mdW5jKHNldHRpbmdzLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPih1c2Vy
QWdlbnRDaGFuZ2VkKSwgd2ViVmlldyk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdT
ZXR0aW5nc0NoYW5nZWQoV2ViS2l0V2ViVmlld0dyb3VwKiBncm91cCwgR1BhcmFtU3BlYyosIFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgd2Via2l0V2ViVmlld0Rpc2Nvbm5lY3RTZXR0
aW5nc1NpZ25hbEhhbmRsZXJzKHdlYlZpZXcpOworICAgIHdlYmtpdFdlYlZpZXdVcGRhdGVTZXR0
aW5ncyh3ZWJWaWV3KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Rpc2Nvbm5lY3RT
ZXR0aW5nc0NoYW5nZWRTaWduYWxIYW5kbGVyKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7Cisg
ICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIGlmIChw
cml2LT5zZXR0aW5nc0NoYW5nZWRIYW5kbGVySUQpCisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJf
ZGlzY29ubmVjdCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2dyb3VwKHdlYlZpZXcpLCBwcml2LT5zZXR0
aW5nc0NoYW5nZWRIYW5kbGVySUQpOworICAgIHByaXYtPnNldHRpbmdzQ2hhbmdlZEhhbmRsZXJJ
RCA9IDA7Cit9CisKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0TWFpblJlc291
cmNlUmVzcG9uc2VDaGFuZ2VkU2lnbmFsSGFuZGxlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQog
ewogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKQEAgLTQ2
Miw3ICs0ODUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVj
dCogb2JqZWN0KQogCiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklF
VyhvYmplY3QpOwogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJp
djsKLSAgICB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcocHJpdi0+Y29udGV4
dCwgd2ViVmlldyk7CisgICAgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KHBy
aXYtPmNvbnRleHQsIHdlYlZpZXcsIHByaXYtPmdyb3VwLmdldCgpKTsKIAogICAgIHdlYmtpdFdl
YlZpZXdCYXNlU2V0RG93bmxvYWRSZXF1ZXN0SGFuZGxlcihXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3
ZWJWaWV3KSwgd2Via2l0V2ViVmlld0hhbmRsZURvd25sb2FkUmVxdWVzdCk7CiAKQEAgLTQ3Niw4
ICs0OTksOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCog
b2JqZWN0KQogICAgIHByaXYtPmJhY2tGb3J3YXJkTGlzdCA9IGFkb3B0R1JlZih3ZWJraXRCYWNr
Rm9yd2FyZExpc3RDcmVhdGUoZ2V0UGFnZSh3ZWJWaWV3KS0+YmFja0ZvcndhcmRMaXN0KCkpKTsK
ICAgICBwcml2LT53aW5kb3dQcm9wZXJ0aWVzID0gYWRvcHRHUmVmKHdlYmtpdFdpbmRvd1Byb3Bl
cnRpZXNDcmVhdGUoKSk7CiAKLSAgICBHUmVmUHRyPFdlYktpdFNldHRpbmdzPiBzZXR0aW5ncyA9
IGFkb3B0R1JlZih3ZWJraXRfc2V0dGluZ3NfbmV3KCkpOwotICAgIHdlYmtpdFdlYlZpZXdTZXRT
ZXR0aW5ncyh3ZWJWaWV3LCBzZXR0aW5ncy5nZXQoKSk7CisgICAgd2Via2l0V2ViVmlld1VwZGF0
ZVNldHRpbmdzKHdlYlZpZXcpOworICAgIHByaXYtPnNldHRpbmdzQ2hhbmdlZEhhbmRsZXJJRCA9
CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2Via2l0X3dlYl92aWV3X2dldF9ncm91cCh3ZWJW
aWV3KSwgIm5vdGlmeTo6c2V0dGluZ3MiLCBHX0NBTExCQUNLKHdlYmtpdFdlYlZpZXdTZXR0aW5n
c0NoYW5nZWQpLCB3ZWJWaWV3KTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1NldFBy
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUqIHZhbHVl
LCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCkBAIC00OTAsNiArNTE0LDExIEBAIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYlZpZXdTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwg
Y29uc3QgR1ZhbHVlCiAgICAgICAgIHdlYlZpZXctPnByaXYtPmNvbnRleHQgPSB3ZWJDb250ZXh0
ID8gV0VCS0lUX1dFQl9DT05URVhUKHdlYkNvbnRleHQpIDogd2Via2l0X3dlYl9jb250ZXh0X2dl
dF9kZWZhdWx0KCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFBST1BfR1JPVVA6
IHsKKyAgICAgICAgZ3BvaW50ZXIgZ3JvdXAgPSBnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpOwor
ICAgICAgICB3ZWJWaWV3LT5wcml2LT5ncm91cCA9IGdyb3VwID8gV0VCS0lUX1dFQl9WSUVXX0dS
T1VQKGdyb3VwKSA6IDA7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFBST1BfWk9P
TV9MRVZFTDoKICAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF96b29tX2xldmVsKHdlYlZpZXcs
IGdfdmFsdWVfZ2V0X2RvdWJsZSh2YWx1ZSkpOwogICAgICAgICBicmVhazsKQEAgLTUwOSw2ICs1
MzgsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3R2V0UHJvcGVydHkoR09iamVjdCogb2Jq
ZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdQogICAgIGNhc2UgUFJPUF9XRUJfQ09OVEVY
VDoKICAgICAgICAgZ192YWx1ZV90YWtlX29iamVjdCh2YWx1ZSwgd2ViVmlldy0+cHJpdi0+Y29u
dGV4dCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9HUk9VUDoKKyAgICAgICAgZ192
YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2dyb3VwKHdlYlZpZXcp
KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1RJVExFOgogICAgICAgICBnX3ZhbHVl
X3NldF9zdHJpbmcodmFsdWUsIHdlYlZpZXctPnByaXYtPnRpdGxlLmRhdGEoKSk7CiAgICAgICAg
IGJyZWFrOwpAQCAtNTQwLDYgKzU3Miw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdEaXNw
b3NlKEdPYmplY3QqIG9iamVjdCkKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lU
X1dFQl9WSUVXKG9iamVjdCk7CiAgICAgd2Via2l0V2ViVmlld0NhbmNlbEZhdmljb25SZXF1ZXN0
KHdlYlZpZXcpOwogICAgIHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0TWFpblJlc291cmNlUmVzcG9u
c2VDaGFuZ2VkU2lnbmFsSGFuZGxlcih3ZWJWaWV3KTsKKyAgICB3ZWJraXRXZWJWaWV3RGlzY29u
bmVjdFNldHRpbmdzQ2hhbmdlZFNpZ25hbEhhbmRsZXIod2ViVmlldyk7CiAgICAgd2Via2l0V2Vi
Vmlld0Rpc2Nvbm5lY3RTZXR0aW5nc1NpZ25hbEhhbmRsZXJzKHdlYlZpZXcpOwogICAgIHdlYmtp
dFdlYlZpZXdEaXNjb25uZWN0RmF2aWNvbkRhdGFiYXNlU2lnbmFsSGFuZGxlcnMod2ViVmlldyk7
CiAKQEAgLTU4NSw2ICs2MTgsMjAgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNz
X2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlRoZSB3ZWIgY29udGV4
dCBmb3IgdGhlIHZpZXciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0NPTlRFWFQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQ
YXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05M
WSkpKTsKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3Omdyb3VwOgorICAgICAqCisgICAg
ICogVGhlICNXZWJLaXRXZWJWaWV3R3JvdXAgb2YgdGhlIHZpZXcuCisgICAgICovCisgICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAg
ICAgICBQUk9QX0dST1VQLAorICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KAorICAgICAgICAg
ICAgImdyb3VwIiwKKyAgICAgICAgICAgIF8oIldlYlZpZXcgR3JvdXAiKSwKKyAgICAgICAgICAg
IF8oIlRoZSBXZWJLaXRXZWJWaWV3R3JvdXAgb2YgdGhlIHZpZXciKSwKKyAgICAgICAgICAgIFdF
QktJVF9UWVBFX1dFQl9WSUVXX0dST1VQLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFt
RmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkp
OwogCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmlldzp0aXRsZToKQEAgLTE2OTMsNyArMTc0
MCw3IEBAIHZvaWQgd2Via2l0V2ViVmlld1N1Ym1pdEZvcm1SZXF1ZXN0KFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIFdlYktpdEZvcm1TdWJtaXNzaW9uCiB2b2lkIHdlYmtpdFdlYlZpZXdIYW5kbGVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5KiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsKICAgICBDcmVk
ZW50aWFsU3RvcmFnZU1vZGUgY3JlZGVudGlhbFN0b3JhZ2VNb2RlOwotICAgIGlmICh3ZWJraXRf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9wcml2YXRlX2Jyb3dzaW5nKHdlYlZpZXctPnByaXYtPnNldHRp
bmdzLmdldCgpKSkKKyAgICBpZiAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcHJpdmF0ZV9i
cm93c2luZyh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKSkKICAgICAgICAg
Y3JlZGVudGlhbFN0b3JhZ2VNb2RlID0gRGlzYWxsb3dQZXJzaXN0ZW50U3RvcmFnZTsKICAgICBl
bHNlCiAgICAgICAgIGNyZWRlbnRpYWxTdG9yYWdlTW9kZSA9IEFsbG93UGVyc2lzdGVudFN0b3Jh
Z2U7CkBAIC0xNzA5LDggKzE3NTYsOSBAQCB2b2lkIHdlYmtpdFdlYlZpZXdJbnNlY3VyZUNvbnRl
bnREZXRlY3RlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRJbnNlY3VyZQogLyoqCiAg
KiB3ZWJraXRfd2ViX3ZpZXdfbmV3OgogICoKLSAqIENyZWF0ZXMgYSBuZXcgI1dlYktpdFdlYlZp
ZXcgd2l0aCB0aGUgZGVmYXVsdCAjV2ViS2l0V2ViQ29udGV4dC4KLSAqIFNlZSBhbHNvIHdlYmtp
dF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KCkuCisgKiBDcmVhdGVzIGEgbmV3ICNXZWJLaXRX
ZWJWaWV3IHdpdGggdGhlIGRlZmF1bHQgI1dlYktpdFdlYkNvbnRleHQgYW5kIHRoZQorICogZGVm
YXVsdCAjV2ViS2l0V2ViVmlld0dyb3VwLgorICogU2VlIGFsc28gd2Via2l0X3dlYl92aWV3X25l
d193aXRoX2NvbnRleHQoKSBhbmQgd2Via2l0X3dlYl92aWV3X25ld193aXRoX2dyb3VwKCkuCiAg
KgogICogUmV0dXJuczogVGhlIG5ld2x5IGNyZWF0ZWQgI1dlYktpdFdlYlZpZXcgd2lkZ2V0CiAg
Ki8KQEAgLTE3MjMsNyArMTc3MSw5IEBAIEd0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ldygp
CiAgKiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dDoKICAqIEBjb250ZXh0OiB0aGUg
I1dlYktpdFdlYkNvbnRleHQgdG8gYmUgdXNlZCBieSB0aGUgI1dlYktpdFdlYlZpZXcKICAqCi0g
KiBDcmVhdGVzIGEgbmV3ICNXZWJLaXRXZWJWaWV3IHdpdGggdGhlIGdpdmVuICNXZWJLaXRXZWJD
b250ZXh0LgorICogQ3JlYXRlcyBhIG5ldyAjV2ViS2l0V2ViVmlldyB3aXRoIHRoZSBnaXZlbiAj
V2ViS2l0V2ViQ29udGV4dCBhbmQgdGhlCisgKiBkZWZhdWx0ICNXZWJLaXRXZWJWaWV3R3JvdXAu
CisgKiBTZWUgYWxzbyB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfZ3JvdXAoKS4KICAqCiAgKiBS
ZXR1cm5zOiBUaGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmlldyB3aWRnZXQKICAqLwpAQCAt
MTczNSw2ICsxNzg1LDIzIEBAIEd0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ld193aXRoX2Nv
bnRleHQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKIH0KIAogLyoqCisgKiB3ZWJraXRfd2Vi
X3ZpZXdfbmV3X3dpdGhfZ3JvdXA6CisgKiBAZ3JvdXA6IGEgI1dlYktpdFdlYlZpZXdHcm91cAor
ICoKKyAqIENyZWF0ZXMgYSBuZXcgI1dlYktpdFdlYlZpZXcgd2l0aCB0aGUgZ2l2ZW4gI1dlYktp
dFdlYlZpZXdHcm91cC4KKyAqIFRoZSB2aWV3IHdpbGwgYmUgcGFydCBvZiBAZ3JvdXAgYW5kIGl0
IHdpbGwgYmUgYWZmZWN0ZWQgYnkgdGhlCisgKiBncm91cCBwcm9wZXJ0aWVzIGxpa2UgdGhlIHNl
dHRpbmdzLgorICoKKyAqIFJldHVybnM6IFRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRXZWJWaWV3
IHdpZGdldAorICovCitHdGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9ncm91cChX
ZWJLaXRXZWJWaWV3R3JvdXAqIGdyb3VwKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19XRUJfVklFV19HUk9VUChncm91cCksIDApOworCisgICAgcmV0dXJuIEdUS19XSURH
RVQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLCAiZ3JvdXAiLCBncm91cCwgTlVM
TCkpOworfQorCisvKioKICAqIHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dDoKICAqIEB3ZWJf
dmlldzogYSAjV2ViS2l0V2ViVmlldwogICoKQEAgLTE3NTAsNiArMTgxNywyNCBAQCBXZWJLaXRX
ZWJDb250ZXh0KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQoV2ViS2l0V2ViVmlldyAqd2Vi
VmlldykKIH0KIAogLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2dyb3VwOgorICogQHdlYl92
aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKgorICogR2V0cyB0aGUgZ3JvdXAgQHdlYl92aWV3IGJl
bG9uZ3MgdG8uCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgI1dlYktpdFdl
YlZpZXdHcm91cCB0byB3aGljaCB0aGUgdmlldyBiZWxvbmdzCisgKi8KK1dlYktpdFdlYlZpZXdH
cm91cCogd2Via2l0X3dlYl92aWV3X2dldF9ncm91cChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwg
MCk7CisKKyAgICBpZiAod2ViVmlldy0+cHJpdi0+Z3JvdXApCisgICAgICAgIHJldHVybiB3ZWJW
aWV3LT5wcml2LT5ncm91cC5nZXQoKTsKKworICAgIHJldHVybiB3ZWJraXRXZWJDb250ZXh0R2V0
RGVmYXVsdFdlYlZpZXdHcm91cCh3ZWJWaWV3LT5wcml2LT5jb250ZXh0KTsKK30KKworLyoqCiAg
KiB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmk6CiAgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZp
ZXcKICAqIEB1cmk6IGFuIFVSSSBzdHJpbmcKQEAgLTIxODYsMjIgKzIyNzEsMTYgQEAgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfZ29fdG9fYmFja19mb3J3YXJkX2xpc3RfaXRlbShXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBXZWJLaXQKICAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldwogICogQHNl
dHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncwogICoKLSAqIFNldHMgdGhlICNXZWJLaXRTZXR0aW5n
cyB0byBiZSBhcHBsaWVkIHRvIEB3ZWJfdmlldy4gVGhlCi0gKiBleGlzdGluZyAjV2ViS2l0U2V0
dGluZ3Mgb2YgQHdlYl92aWV3IHdpbGwgYmUgcmVwbGFjZWQgYnkKLSAqIEBzZXR0aW5ncy4gTmV3
IHNldHRpbmdzIGFyZSBhcHBsaWVkIGltbWVkaWF0ZWx5IG9uIEB3ZWJfdmlldy4KLSAqIFRoZSBz
YW1lICNXZWJLaXRTZXR0aW5ncyBvYmplY3QgY2FuIGJlIHNoYXJlZAotICogYnkgbXVsdGlwbGUg
I1dlYktpdFdlYlZpZXc8IS0tIC0tPnMuCisgKiBTZXRzIHRoZSAjV2ViS2l0U2V0dGluZ3MgdG8g
YmUgYXBwbGllZCB0byBAd2ViX3ZpZXcuCisgKiBUaGlzIGlzIGEgY29udmVuaWVudCBtZXRob2Qg
dG8gc2V0IG5ldyBzZXR0aW5ncyB0byB0aGUKKyAqICNXZWJLaXRXZWJWaWV3R3JvdXAgQHdlYl92
aWV3IGJlbG9uZ3MgdG8uCisgKiBOZXcgc2V0dGluZ3MgYXJlIGFwcGxpZWQgaW1tZWRpYXRlbHkg
b24gYWxsICNXZWJLaXRXZWJWaWV3PCEtLSAtLT5zCisgKiBpbiB0aGUgQHdlYl92aWV3IGdyb3Vw
LgorICogU2VlIGFsc28gd2Via2l0X3dlYl92aWV3X2dyb3VwX3NldF9zZXR0aW5ncygpLgogICov
CiB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmll
dywgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQogewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19TRVRUSU5HUyhzZXR0aW5ncykpOwotCi0gICAgaWYgKHdlYlZpZXctPnByaXYtPnNldHRpbmdz
ID09IHNldHRpbmdzKQotICAgICAgICByZXR1cm47Ci0KLSAgICB3ZWJraXRXZWJWaWV3RGlzY29u
bmVjdFNldHRpbmdzU2lnbmFsSGFuZGxlcnMod2ViVmlldyk7Ci0gICAgd2Via2l0V2ViVmlld1Nl
dFNldHRpbmdzKHdlYlZpZXcsIHNldHRpbmdzKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBf
c2V0X3NldHRpbmdzKHdlYmtpdF93ZWJfdmlld19nZXRfZ3JvdXAod2ViVmlldyksIHNldHRpbmdz
KTsKIH0KIAogLyoqCkBAIC0yMjA5LDI2ICsyMjg4LDE5IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3
X3NldF9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRTZXR0aW5ncyogc2V0
dGluCiAgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKICAqCiAgKiBHZXRzIHRoZSAjV2Vi
S2l0U2V0dGluZ3MgY3VycmVudGx5IGFwcGxpZWQgdG8gQHdlYl92aWV3LgotICogSWYgbm8gb3Ro
ZXIgI1dlYktpdFNldHRpbmdzIGhhdmUgYmVlbiBleHBsaWNpdGx5IGFwcGxpZWQgdG8KLSAqIEB3
ZWJfdmlldyB3aXRoIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MoKSwgdGhlIGRlZmF1bHQK
LSAqICNXZWJLaXRTZXR0aW5ncyB3aWxsIGJlIHJldHVybmVkLiBUaGlzIG1ldGhvZCBhbHdheXMg
cmV0dXJucwotICogYSB2YWxpZCAjV2ViS2l0U2V0dGluZ3Mgb2JqZWN0LgotICogVG8gbW9kaWZ5
IGFueSBvZiB0aGUgQHdlYl92aWV3IHNldHRpbmdzLCB5b3UgY2FuIGVpdGhlciBjcmVhdGUKLSAq
IGEgbmV3ICNXZWJLaXRTZXR0aW5ncyBvYmplY3Qgd2l0aCB3ZWJraXRfc2V0dGluZ3NfbmV3KCks
IHNldHRpbmcKLSAqIHRoZSBkZXNpcmVkIHByZWZlcmVuY2VzLCBhbmQgdGhlbiByZXBsYWNlIHRo
ZSBleGlzdGluZyBAd2ViX3ZpZXcKLSAqIHNldHRpbmdzIHdpdGggd2Via2l0X3dlYl92aWV3X3Nl
dF9zZXR0aW5ncygpIG9yIGdldCB0aGUgZXhpc3RpbmcKLSAqIEB3ZWJfdmlldyBzZXR0aW5ncyBh
bmQgdXBkYXRlIGl0IGRpcmVjdGx5LiAjV2ViS2l0U2V0dGluZ3Mgb2JqZWN0cwotICogY2FuIGJl
IHNoYXJlZCBieSBtdWx0aXBsZSAjV2ViS2l0V2ViVmlldzwhLS0gLS0+cywgc28gbW9kaWZ5aW5n
CisgKiBUaGlzIGlzIGEgY29udmVuaWVudCBtZXRob2QgdG8gZ2V0IHRoZSBzZXR0aW5ncyBvZiB0
aGUKKyAqICNXZWJLaXRXZWJWaWV3R3JvdXAgQHdlYl92aWV3IGJlbG9uZ3MgdG8uCisgKiAjV2Vi
S2l0U2V0dGluZ3Mgb2JqZWN0cyBhcmUgc2hhcmVkIGJ5IGFsbCB0aGUgI1dlYktpdFdlYlZpZXc8
IS0tIC0tPnMKKyAqIGluIHRoZSBzYW1lICNXZWJLaXRXZWJWaWV3R3JvdXAsIHNvIG1vZGlmeWlu
ZwogICogdGhlIHNldHRpbmdzIG9mIGEgI1dlYktpdFdlYlZpZXcgd291bGQgYWZmZWN0IG90aGVy
Ci0gKiAjV2ViS2l0V2ViVmlldzwhLS0gLS0+cyB1c2luZyB0aGUgc2FtZSAjV2ViS2l0U2V0dGlu
Z3MuCisgKiAjV2ViS2l0V2ViVmlldzwhLS0gLS0+cyBvZiB0aGUgc2FtZSBncm91cC4KKyAqIFNl
ZSBhbHNvIHdlYmtpdF93ZWJfdmlld19ncm91cF9nZXRfc2V0dGluZ3MoKS4KICAqCiAgKiBSZXR1
cm5zOiAodHJhbnNmZXIgbm9uZSk6IHRoZSAjV2ViS2l0U2V0dGluZ3MgYXR0YWNoZWQgdG8gQHdl
Yl92aWV3CiAgKi8KIFdlYktpdFNldHRpbmdzKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdz
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCAwKTsKLQotICAgIHJldHVybiB3ZWJWaWV3LT5wcml2
LT5zZXR0aW5ncy5nZXQoKTsKKyAgICByZXR1cm4gd2Via2l0X3dlYl92aWV3X2dyb3VwX2dldF9z
ZXR0aW5ncyh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2dyb3VwKHdlYlZpZXcpKTsKIH0KIAogLyoqCkBA
IC0yMjYzLDcgKzIzMzUsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfem9vbV9sZXZlbChX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBnZG91YmxlIHpvb21MZXZlbCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gZ2V0UGFnZSh3ZWJWaWV3KTsKLSAgICBpZiAo
d2Via2l0X3NldHRpbmdzX2dldF96b29tX3RleHRfb25seSh3ZWJWaWV3LT5wcml2LT5zZXR0aW5n
cy5nZXQoKSkpCisgICAgaWYgKHdlYmtpdF9zZXR0aW5nc19nZXRfem9vbV90ZXh0X29ubHkod2Vi
a2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSkpCiAgICAgICAgIHBhZ2UtPnNldFRl
eHRab29tRmFjdG9yKHpvb21MZXZlbCk7CiAgICAgZWxzZQogICAgICAgICBwYWdlLT5zZXRQYWdl
Wm9vbUZhY3Rvcih6b29tTGV2ZWwpOwpAQCAtMjI4NCw3ICsyMzU2LDcgQEAgZ2RvdWJsZSB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3pvb21fbGV2ZWwoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIDEpOwogCiAg
ICAgV2ViUGFnZVByb3h5KiBwYWdlID0gZ2V0UGFnZSh3ZWJWaWV3KTsKLSAgICBnYm9vbGVhbiB6
b29tVGV4dE9ubHkgPSB3ZWJraXRfc2V0dGluZ3NfZ2V0X3pvb21fdGV4dF9vbmx5KHdlYlZpZXct
PnByaXYtPnNldHRpbmdzLmdldCgpKTsKKyAgICBnYm9vbGVhbiB6b29tVGV4dE9ubHkgPSB3ZWJr
aXRfc2V0dGluZ3NfZ2V0X3pvb21fdGV4dF9vbmx5KHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGlu
Z3Mod2ViVmlldykpOwogICAgIHJldHVybiB6b29tVGV4dE9ubHkgPyBwYWdlLT50ZXh0Wm9vbUZh
Y3RvcigpIDogcGFnZS0+cGFnZVpvb21GYWN0b3IoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IDJlNzI0ZGQuLjVmNzk3
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmgKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkluc3Bl
Y3Rvci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViUmVzb3VyY2UuaD4KICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdFdlYlZpZXdCYXNlLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRX
ZWJWaWV3R3JvdXAuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdpbmRvd1Byb3BlcnRpZXMu
aD4KIAogR19CRUdJTl9ERUNMUwpAQCAtMjYxLDkgKzI2MiwxNSBAQCB3ZWJraXRfd2ViX3ZpZXdf
bmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKTsKIFdFQktJVF9BUEkg
R3RrV2lkZ2V0ICoKIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0ICAgICAgICAgICAg
ICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgKmNvbnRleHQpOwogCitXRUJLSVRf
QVBJIEd0a1dpZGdldCAqCit3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfZ3JvdXAgICAgICAgICAg
ICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3R3JvdXAgICAgICAgICpncm91cCk7CisKIFdFQktJ
VF9BUEkgV2ViS2l0V2ViQ29udGV4dCAqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQgICAg
ICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmll
dyk7CiAKK1dFQktJVF9BUEkgV2ViS2l0V2ViVmlld0dyb3VwICoKK3dlYmtpdF93ZWJfdmlld19n
ZXRfZ3JvdXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgKndlYl92aWV3KTsKKwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX3ZpZXdfbG9h
ZF91cmkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgKnVyaSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3JvdXAuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzFmZGFlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0dy
b3VwLmNwcApAQCAtMCwwICsxLDIyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2Fs
aWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0dyb3Vw
LmgiCisKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0U2V0dGlu
Z3NQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0dyb3VwUHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRXZWJWaWV3R3JvdXAKKyAqIEBTaG9ydF9kZXNj
cmlwdGlvbjogR3JvdXAgb2Ygd2ViIHZpZXdzCisgKiBAVGl0bGU6IFdlYktpdFdlYlZpZXdHcm91
cAorICogQFNlZV9hbHNvOiAjV2ViS2l0V2ViVmlldywgI1dlYktpdFNldHRpbmdzCisgKgorICog
QSBXZWJLaXRXZWJWaWV3R3JvdXAgcmVwcmVzZW50cyBhIGdyb3VwIG9mICNXZWJLaXRXZWJWaWV3
PCEtLSAtLT5zIHRoYXQKKyAqIHNoYXJlIHRoaW5ncyBsaWtlIHNldHRpbmdzLiBUaGVyZSdzIGEg
ZGVmYXVsdCBXZWJLaXRXZWJWaWV3R3JvdXAgd2hlcmUKKyAqIGFsbCAjV2ViS2l0V2ViVmlldzwh
LS0gLS0+cyBvZiB0aGUgc2FtZSAjV2ViS2l0V2ViQ29udGV4dCBhcmUgYWRkZWQgYnkgZGVmYXVs
dC4KKyAqIFRvIGNyZWF0ZSBhICNXZWJLaXRXZWJWaWV3IGluIGEgZGlmZmVyZW50IFdlYktpdFdl
YlZpZXdHcm91cCB5b3UgY2FuIHVzZQorICogd2Via2l0X3dlYl92aWV3X25ld193aXRoX2dyb3Vw
KCkuCisgKgorICogV2ViS2l0V2ViVmlld0dyb3VwcyBhcmUgaWRlbnRpZmllZCBieSBhIHVuaXF1
ZSBuYW1lIGdpdmVuIHdoZW4gdGhlIGdyb3VwIGlzCisgKiBjcmVhdGVkIHdpdGggd2Via2l0X3dl
Yl92aWV3X2dyb3VwX25ldygpLgorICogV2ViS2l0V2ViVmlld0dyb3VwcyBoYXZlIGEgI1dlYktp
dFNldHRpbmdzIHRvIGNvbnRyb2wgdGhlIHNldHRpbmdzIG9mIGFsbAorICogI1dlYktpdFdlYlZp
ZXc8IS0tIC0tPnMgb2YgdGhlIGdyb3VwLiBZb3UgY2FuIGdldCB0aGUgc2V0dGluZ3Mgd2l0aAor
ICogd2Via2l0X3dlYl92aWV3X2dyb3VwX2dldF9zZXR0aW5ncygpIHRvIGhhbmRsZSB0aGUgc2V0
dGluZ3MsIG9yIHlvdSBjYW4gc2V0CisgKiB5b3VyIG93biAjV2ViS2l0U2V0dGluZ3Mgd2l0aCB3
ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfc2V0X3NldHRpbmdzKCkuIFdoZW4KKyAqIHRoZSAjV2ViS2l0
U2V0dGluZ3Mgb2YgYSBXZWJLaXRXZWJWaWV3R3JvdXAgY2hhbmdlcywgdGhlIHNpZ25hbCBub3Rp
Znk6OnNldHRpbmdzCisgKiBpcyBlbWl0dGVkIG9uIHRoZSBncm91cC4KKyAqLworCitlbnVtIHsK
KyAgICBQUk9QXzAsCisKKyAgICBQUk9QX1NFVFRJTkdTCit9OworCitzdHJ1Y3QgX1dlYktpdFdl
YlZpZXdHcm91cFByaXZhdGUgeworICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cDsK
KyAgICBDU3RyaW5nIG5hbWU7CisgICAgR1JlZlB0cjxXZWJLaXRTZXR0aW5ncz4gc2V0dGluZ3M7
Cit9OworCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmlld0dyb3VwLCB3ZWJraXRfd2Vi
X3ZpZXdfZ3JvdXAsIEdfVFlQRV9PQkpFQ1QpCisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdH
cm91cFNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0V2ViVmlld0dy
b3VwKiBncm91cCA9IFdFQktJVF9XRUJfVklFV19HUk9VUChvYmplY3QpOworCisgICAgc3dpdGNo
IChwcm9wSWQpIHsKKyAgICBjYXNlIFBST1BfU0VUVElOR1M6CisgICAgICAgIHdlYmtpdF93ZWJf
dmlld19ncm91cF9zZXRfc2V0dGluZ3MoZ3JvdXAsIFdFQktJVF9TRVRUSU5HUyhnX3ZhbHVlX2dl
dF9vYmplY3QodmFsdWUpKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1T
cGVjKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHcm91cEdldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1T
cGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0V2ViVmlld0dyb3VwKiBncm91cCA9IFdFQktJ
VF9XRUJfVklFV19HUk9VUChvYmplY3QpOworCisgICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBj
YXNlIFBST1BfU0VUVElOR1M6CisgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Vi
a2l0X3dlYl92aWV3X2dyb3VwX2dldF9zZXR0aW5ncyhncm91cCkpOworICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQo
b2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJWaWV3R3JvdXBDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCit7CisgICAgR19PQkpF
Q1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2dyb3VwX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVk
KG9iamVjdCk7CisKKyAgICBXZWJLaXRXZWJWaWV3R3JvdXBQcml2YXRlKiBwcml2ID0gV0VCS0lU
X1dFQl9WSUVXX0dST1VQKG9iamVjdCktPnByaXY7CisgICAgcHJpdi0+c2V0dGluZ3MgPSBhZG9w
dEdSZWYod2Via2l0X3NldHRpbmdzX25ldygpKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl92aWV3X2dyb3VwX2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0dyb3VwQ2xhc3MqIGhpdFRlc3RS
ZXN1bHRDbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdENsYXNzID0gR19PQkpFQ1Rf
Q0xBU1MoaGl0VGVzdFJlc3VsdENsYXNzKTsKKyAgICBvYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5
ID0gd2Via2l0V2ViVmlld0dyb3VwU2V0UHJvcGVydHk7CisgICAgb2JqZWN0Q2xhc3MtPmdldF9w
cm9wZXJ0eSA9IHdlYmtpdFdlYlZpZXdHcm91cEdldFByb3BlcnR5OworICAgIG9iamVjdENsYXNz
LT5jb25zdHJ1Y3RlZCA9IHdlYmtpdFdlYlZpZXdHcm91cENvbnN0cnVjdGVkOworCisgICAgLyoq
CisgICAgICogV2ViS2l0V2ViVmlld0dyb3VwOnNldHRpbmdzOgorICAgICAqCisgICAgICogVGhl
ICNXZWJLaXRTZXR0aW5ncyBvZiB0aGUgd2ViIHZpZXcgZ3JvdXAuCisgICAgICovCisgICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgb2JqZWN0Q2xhc3MsCisgICAg
ICAgIFBST1BfU0VUVElOR1MsCisgICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QoCisgICAgICAg
ICAgICAic2V0dGluZ3MiLAorICAgICAgICAgICAgXygiU2V0dGluZ3MiKSwKKyAgICAgICAgICAg
IF8oIlRoZSBzZXR0aW5ncyBvZiB0aGUgd2ViIHZpZXcgZ3JvdXAiKSwKKyAgICAgICAgICAgIFdF
QktJVF9UWVBFX1NFVFRJTkdTLAorICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkp
OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3R3JvdXBBdHRhY2hTZXR0aW5nc1RvUGFn
ZUdyb3VwKFdlYktpdFdlYlZpZXdHcm91cCogZ3JvdXApCit7CisgICAgZ3JvdXAtPnByaXYtPnBh
Z2VHcm91cC0+c2V0UHJlZmVyZW5jZXMod2Via2l0U2V0dGluZ3NHZXRQcmVmZXJlbmNlcyhncm91
cC0+cHJpdi0+c2V0dGluZ3MuZ2V0KCkpKTsKK30KKworV2ViS2l0V2ViVmlld0dyb3VwKiB3ZWJr
aXRXZWJWaWV3R3JvdXBDcmVhdGUoV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXApCit7CisgICAgV2Vi
S2l0V2ViVmlld0dyb3VwKiBncm91cCA9IFdFQktJVF9XRUJfVklFV19HUk9VUChnX29iamVjdF9u
ZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVdfR1JPVVAsIE5VTEwpKTsKKyAgICBncm91cC0+cHJpdi0+
cGFnZUdyb3VwID0gcGFnZUdyb3VwOworICAgIHdlYmtpdFdlYlZpZXdHcm91cEF0dGFjaFNldHRp
bmdzVG9QYWdlR3JvdXAoZ3JvdXApOworICAgIHJldHVybiBncm91cDsKK30KKworV2ViUGFnZUdy
b3VwKiB3ZWJraXRXZWJWaWV3R3JvdXBHZXRQYWdlR3JvdXAoV2ViS2l0V2ViVmlld0dyb3VwKiBn
cm91cCkKK3sKKyAgICByZXR1cm4gZ3JvdXAtPnByaXYtPnBhZ2VHcm91cC5nZXQoKTsKK30KKwor
LyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfbmV3OgorICogQG5hbWU6IChhbGxvdy1ub25l
KTogdGhlIG5hbWUgb2YgdGhlIGdyb3VwCisgKgorICogQ3JlYXRlcyBhIG5ldyAjV2ViS2l0V2Vi
Vmlld0dyb3VwIHdpdGggdGhlIGdpdmVuIEBuYW1lLgorICogSWYgQG5hbWUgaXMgJU5VTEwgYSB1
bmlxdWUgaWRlbnRpZmllciBuYW1lIHdpbGwgYmUgY3JlYXRlZAorICogYXV0b21hdGljYWxseS4K
KyAqIFRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRXZWJWaWV3R3JvdXAgZG9lc24ndCBjb250YWlu
IGFueQorICogI1dlYktpdFdlYlZpZXcsIHdlYiB2aWV3cyBhcmUgYWRkZWQgdG8gdGhlIG5ldyBn
cm91cCB3aGVuIGNyZWF0ZWQKKyAqIHdpdGggd2Via2l0X3dlYl92aWV3X25ld193aXRoX2dyb3Vw
KCkgcGFzc2luZyB0aGUgZ3JvdXAuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBh
IG5ldyAjV2ViS2l0V2ViVmlld0dyb3VwCisgKi8KK1dlYktpdFdlYlZpZXdHcm91cCogd2Via2l0
X3dlYl92aWV3X2dyb3VwX25ldyhjb25zdCBjaGFyKiBuYW1lKQoreworICAgIFdlYktpdFdlYlZp
ZXdHcm91cCogZ3JvdXAgPSBXRUJLSVRfV0VCX1ZJRVdfR1JPVVAoZ19vYmplY3RfbmV3KFdFQktJ
VF9UWVBFX1dFQl9WSUVXX0dST1VQLCBOVUxMKSk7CisgICAgZ3JvdXAtPnByaXYtPnBhZ2VHcm91
cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKG5hbWUgPyBTdHJpbmc6OmZyb21VVEY4KG5hbWUpIDog
U3RyaW5nKCkpOworICAgIHdlYmtpdFdlYlZpZXdHcm91cEF0dGFjaFNldHRpbmdzVG9QYWdlR3Jv
dXAoZ3JvdXApOworICAgIHJldHVybiBncm91cDsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3Zp
ZXdfZ3JvdXBfZ2V0X25hbWU6CisgKiBAZ3JvdXA6IGEgI1dlYktpdFdlYlZpZXdHcm91cAorICoK
KyAqIEdldHMgdGhlIG5hbWUgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSAjV2ViS2l0V2Vi
Vmlld0dyb3VwLgorICoKKyAqIFJldHVybnM6IHRoZSBuYW1lIG9mIEBncm91cAorICovCitjb25z
dCBjaGFyKiB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfZ2V0X25hbWUoV2ViS2l0V2ViVmlld0dyb3Vw
KiBncm91cCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVdf
R1JPVVAoZ3JvdXApLCAwKTsKKworICAgIFdlYktpdFdlYlZpZXdHcm91cFByaXZhdGUqIHByaXYg
PSBncm91cC0+cHJpdjsKKyAgICBpZiAocHJpdi0+bmFtZS5pc051bGwoKSkKKyAgICAgICAgcHJp
di0+bmFtZSA9IHByaXYtPnBhZ2VHcm91cC0+aWRlbnRpZmllcigpLnV0ZjgoKTsKKworICAgIHJl
dHVybiBwcml2LT5uYW1lLmRhdGEoKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ3Jv
dXBfZ2V0X3NldHRpbmdzOgorICogQGdyb3VwOiBhICNXZWJLaXRXZWJWaWV3R3JvdXAKKyAqCisg
KiBHZXRzIHRoZSAjV2ViS2l0U2V0dGluZ3Mgb2YgdGhlICNXZWJLaXRXZWJWaWV3R3JvdXAuCisg
KgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgc2V0dGluZ3Mgb2YgQGdyb3VwCisg
Ki8KK1dlYktpdFNldHRpbmdzKiB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfZ2V0X3NldHRpbmdzKFdl
YktpdFdlYlZpZXdHcm91cCogZ3JvdXApCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9WSUVXX0dST1VQKGdyb3VwKSwgMCk7CisKKyAgICByZXR1cm4gZ3JvdXAtPnBy
aXYtPnNldHRpbmdzLmdldCgpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19ncm91cF9z
ZXRfc2V0dGluZ3M6CisgKiBAZ3JvdXA6IGEgI1dlYktpdFdlYlZpZXdHcm91cAorICogQHNldHRp
bmdzOiBhICNXZWJLaXRTZXR0aW5ncworICoKKyAqIFNldHMgYSBuZXcgI1dlYktpdFNldHRpbmdz
IGZvciB0aGUgI1dlYktpdFdlYlZpZXdHcm91cC4gVGhlIHNldHRpbmdzIHdpbGwKKyAqIGFmZmVj
dCB0byBhbGwgdGhlICNXZWJLaXRXZWJWaWV3PCEtLSAtLT5zIG9mIHRoZSBncm91cC4KKyAqICNX
ZWJLaXRXZWJWaWV3R3JvdXA8IS0tIC0tPnMgYWx3YXlzIGhhdmUgYSAjV2ViS2l0U2V0dGluZ3Mg
c28gaWYgeW91IGp1c3Qgd2FudCB0bworICogbW9kaWZ5IGEgc2V0dGluZyB5b3UgY2FuIHVzZSB3
ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfZ2V0X3NldHRpbmdzKCkgYW5kIG1vZGlmeSB0aGUKKyAqIHJl
dHVybmVkICNXZWJLaXRTZXR0aW5ncyBpbnN0ZWFkLgorICogU2V0dGluZyB0aGUgc2FtZSAjV2Vi
S2l0U2V0dGluZ3MgbXVsdGlwbGUgdGltZXMgZG9lc24ndCBoYXZlIGFueSBlZmZlY3QuCisgKiBZ
b3UgY2FuIG1vbml0b3IgdGhlIHNldHRpbmdzIG9mIGEgI1dlYktpdFdlYlZpZXdHcm91cCBieSBj
b25uZWN0aW5nIHRvIHRoZQorICogbm90aWZ5OjpzZXR0aW5ncyBzaWduYWwgb2YgQGdyb3VwLgor
ICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19ncm91cF9zZXRfc2V0dGluZ3MoV2ViS2l0V2ViVmll
d0dyb3VwKiBncm91cCwgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXX0dST1VQKGdyb3VwKSk7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIGlmIChncm91cC0+
cHJpdi0+c2V0dGluZ3MgPT0gc2V0dGluZ3MpCisgICAgICAgIHJldHVybjsKKworICAgIGdyb3Vw
LT5wcml2LT5zZXR0aW5ncyA9IHNldHRpbmdzOworICAgIHdlYmtpdFdlYlZpZXdHcm91cEF0dGFj
aFNldHRpbmdzVG9QYWdlR3JvdXAoZ3JvdXApOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVD
VChncm91cCksICJzZXR0aW5ncyIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3JvdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5hNDg4YWU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmgKQEAgLTAsMCArMSw3MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJL
SVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3Ig
Ik9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2Vu
ZGlmCisKKyNpZm5kZWYgV2ViS2l0V2ViVmlld0dyb3VwX2gKKyNkZWZpbmUgV2ViS2l0V2ViVmll
d0dyb3VwX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXREZWZpbmVzLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTZXR0aW5ncy5oPgorCitH
X0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX1ZJRVdfR1JPVVAgICAgICAg
ICAgICAod2Via2l0X3dlYl92aWV3X2dyb3VwX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9X
RUJfVklFV19HUk9VUChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNU
KChvYmopLCBXRUJLSVRfVFlQRV9XRUJfVklFV19HUk9VUCwgV2ViS2l0V2ViVmlld0dyb3VwKSkK
KyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9WSUVXX0dST1VQKG9iaikgICAgICAgICAoR19UWVBFX0NI
RUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9WSUVXX0dST1VQKSkKKyNk
ZWZpbmUgV0VCS0lUX1dFQl9WSUVXX0dST1VQX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNL
X0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9WSUVXX0dST1VQLCBXZWJLaXRX
ZWJWaWV3R3JvdXBDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfVklFV19HUk9VUF9DTEFT
UyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9X
RUJfVklFV19HUk9VUCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVklFV19HUk9VUF9HRVRfQ0xBU1Mo
b2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJf
VklFV19HUk9VUCwgV2ViS2l0V2ViVmlld0dyb3VwQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBf
V2ViS2l0V2ViVmlld0dyb3VwICAgICAgICBXZWJLaXRXZWJWaWV3R3JvdXA7Cit0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0V2ViVmlld0dyb3VwQ2xhc3MgICBXZWJLaXRXZWJWaWV3R3JvdXBDbGFzczsK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3R3JvdXBQcml2YXRlIFdlYktpdFdlYlZpZXdH
cm91cFByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0V2ViVmlld0dyb3VwIHsKKyAgICBHT2JqZWN0
IHBhcmVudDsKKworICAgIFdlYktpdFdlYlZpZXdHcm91cFByaXZhdGUgKnByaXY7Cit9OworCitz
dHJ1Y3QgX1dlYktpdFdlYlZpZXdHcm91cENsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50
X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl92aWV3X2dyb3VwX2dl
dF90eXBlICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0V2ViVmlld0dyb3VwICoKK3dl
YmtpdF93ZWJfdmlld19ncm91cF9uZXcgICAgICAgICAgKGNvbnN0IGdjaGFyICAgICAgICAqbmFt
ZSk7CisKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgord2Via2l0X3dlYl92aWV3X2dyb3VwX2dl
dF9uYW1lICAgICAoV2ViS2l0V2ViVmlld0dyb3VwICpncm91cCk7CisKK1dFQktJVF9BUEkgV2Vi
S2l0U2V0dGluZ3MgKgord2Via2l0X3dlYl92aWV3X2dyb3VwX2dldF9zZXR0aW5ncyAoV2ViS2l0
V2ViVmlld0dyb3VwICpncm91cCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3
X2dyb3VwX3NldF9zZXR0aW5ncyAoV2ViS2l0V2ViVmlld0dyb3VwICpncm91cCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNldHRpbmdzICAgICAqc2V0dGluZ3Mp
OworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHcm91cFByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHcm91cFByaXZhdGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmQ4NjU2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwUHJpdmF0
ZS5oCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMu
TC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2lmbmRlZiBXZWJLaXRXZWJWaWV3R3JvdXBQcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0V2Vi
Vmlld0dyb3VwUHJpdmF0ZV9oCisKKyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3R3JvdXAuaCIKKyNp
bmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKKworV2ViS2l0V2ViVmlld0dyb3VwKiB3ZWJraXRXZWJW
aWV3R3JvdXBDcmVhdGUoV2ViS2l0OjpXZWJQYWdlR3JvdXAqKTsKK1dlYktpdDo6V2ViUGFnZUdy
b3VwKiB3ZWJraXRXZWJWaWV3R3JvdXBHZXRQYWdlR3JvdXAoV2ViS2l0V2ViVmlld0dyb3VwKik7
CisKKyNlbmRpZiAvLyBXZWJLaXRXZWJWaWV3R3JvdXBQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5z
Z21sCmluZGV4IDdjNmM2OGQuLjJmYTdlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtNDEs
NiArNDEsNyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRDb250ZXh0TWVudUl0
ZW0ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEZvcm1TdWJtaXNzaW9u
UmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0U2VjdXJpdHlN
YW5hZ2VyLnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRXZWJWaWV3R3Jv
dXAueG1sIi8+CiAgIDwvY2hhcHRlcj4KIAogICA8Y2hhcHRlcj4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlv
bnMudHh0CmluZGV4IDZhYWU5MDguLmFmZTgwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4
dApAQCAtOTAsNyArOTAsOSBAQCBXRUJLSVRfRURJVElOR19DT01NQU5EX1JFRE8KIDxTVUJTRUNU
SU9OPgogd2Via2l0X3dlYl92aWV3X25ldwogd2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRl
eHQKK3dlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9ncm91cAogd2Via2l0X3dlYl92aWV3X2dldF9j
b250ZXh0Cit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2dyb3VwCiB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91
cmkKIHdlYmtpdF93ZWJfdmlld19sb2FkX2h0bWwKIHdlYmtpdF93ZWJfdmlld19sb2FkX2FsdGVy
bmF0ZV9odG1sCkBAIC05NDEsNiArOTQzLDI4IEBAIHdlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX2dl
dF90eXBlCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0V2ViVmlld0dyb3Vw
PC9GSUxFPgorV2ViS2l0V2ViVmlld0dyb3VwCit3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfbmV3Cit3
ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfZ2V0X25hbWUKK3dlYmtpdF93ZWJfdmlld19ncm91cF9nZXRf
c2V0dGluZ3MKK3dlYmtpdF93ZWJfdmlld19ncm91cF9zZXRfc2V0dGluZ3MKKworPFNVQlNFQ1RJ
T04gU3RhbmRhcmQ+CitXZWJLaXRXZWJWaWV3R3JvdXBDbGFzcworV0VCS0lUX1RZUEVfV0VCX1ZJ
RVdfR1JPVVAKK1dFQktJVF9XRUJfVklFV19HUk9VUAorV0VCS0lUX0lTX1dFQl9WSUVXX0dST1VQ
CitXRUJLSVRfV0VCX1ZJRVdfR1JPVVBfQ0xBU1MKK1dFQktJVF9JU19XRUJfVklFV19HUk9VUF9D
TEFTUworV0VCS0lUX1dFQl9WSUVXX0dST1VQX0dFVF9DTEFTUworCis8U1VCU0VDVElPTiBQcml2
YXRlPgorV2ViS2l0V2ViVmlld0dyb3VwUHJpdmF0ZQord2Via2l0X3dlYl92aWV3X2dyb3VwX2dl
dF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+V2ViS2l0V2ViRXh0ZW5zaW9u
PC9GSUxFPgogV2ViS2l0V2ViRXh0ZW5zaW9uCiBXZWJLaXRXZWJFeHRlbnNpb25Jbml0aWFsaXpl
RnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay50eXBlcyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay50eXBlcwppbmRleCBlYjBmMzM4Li41ZDk3ZjY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVz
CkBAIC0yMSw1ICsyMSw2IEBAIHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF90eXBlCiB3ZWJraXRf
dXJpX3NjaGVtZV9yZXF1ZXN0X2dldF90eXBlCiB3ZWJraXRfY29udGV4dF9tZW51X2dldF90eXBl
CiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X3R5cGUKK3dlYmtpdF93ZWJfdmlld19ncm91
cF9nZXRfdHlwZQogd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3R5cGUKIHdlYmtpdF93ZWJfcGFn
ZV9nZXRfdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9HTlVtYWtlZmlsZS5hbQppbmRleCAwZTExZGM4Li44NDZhYjQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbQpA
QCAtMjAsNiArMjAsNyBAQCBURVNUX1BST0dTICs9IFwKIAlQcm9ncmFtcy9XZWJLaXQyQVBJVGVz
dHMvVGVzdFdlYktpdFNldHRpbmdzIFwKIAlQcm9ncmFtcy9XZWJLaXQyQVBJVGVzdHMvVGVzdFdl
YktpdFdlYkNvbnRleHQgXAogCVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9UZXN0V2ViS2l0V2Vi
VmlldyBcCisJUHJvZ3JhbXMvV2ViS2l0MkFQSVRlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXAg
XAogCVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9UZXN0V2ViVmlld0VkaXRvcgogCiBub2luc3Rf
UFJPR1JBTVMgKz0gJChURVNUX1BST0dTKQpAQCAtMjUyLDQgKzI1MywxMCBAQCBQcm9ncmFtc19X
ZWJLaXQyQVBJVGVzdHNfVGVzdFdlYkV4dGVuc2lvbnNfQ1BQRkxBR1MgPSAkKHdlYmtpdDJfdGVz
dHNfY3BwZmxhZ3MpCiBQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdFdlYkV4dGVuc2lvbnNf
TERBREQgPSAkKHdlYmtpdDJfdGVzdHNfbGRhZGQpCiBQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNf
VGVzdFdlYkV4dGVuc2lvbnNfTERGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19sZGZsYWdzKQogCitQ
cm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdFdlYktpdFdlYlZpZXdHcm91cF9TT1VSQ0VTID0g
XAorICAgICAgICBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2Vi
S2l0V2ViVmlld0dyb3VwLmNwcAorUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RXZWJLaXRX
ZWJWaWV3R3JvdXBfQ1BQRkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfY3BwZmxhZ3MpCitQcm9ncmFt
c19XZWJLaXQyQVBJVGVzdHNfVGVzdFdlYktpdFdlYlZpZXdHcm91cF9MREFERCA9ICQod2Via2l0
Ml90ZXN0c19sZGFkZCkKK1Byb2dyYW1zX1dlYktpdDJBUElUZXN0c19UZXN0V2ViS2l0V2ViVmll
d0dyb3VwX0xERkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfbGRmbGFncykKKwogZW5kaWYgIyBFTkFC
TEVfV0VCS0lUMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDQ4YzUyZTYuLjA2YjY5ZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RX
ZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTQ4LDEyICs0OCwxMCBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld0N1c3RvbUNoYXJzZXQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1NldHRpbmdzKFdlYlZpZXdUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogewogICAgIFdlYktpdFNldHRpbmdzKiBkZWZhdWx0U2V0dGluZ3MgPSB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHRlc3QtPm1fd2ViVmlldyk7Ci0gICAgdGVzdC0+
YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkZWZhdWx0U2V0
dGluZ3MpKTsKICAgICBnX2Fzc2VydChkZWZhdWx0U2V0dGluZ3MpOwogICAgIGdfYXNzZXJ0KHdl
YmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoZGVmYXVsdFNldHRpbmdzKSk7CiAK
ICAgICBHUmVmUHRyPFdlYktpdFNldHRpbmdzPiBuZXdTZXR0aW5ncyA9IGFkb3B0R1JlZih3ZWJr
aXRfc2V0dGluZ3NfbmV3KCkpOwotICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5U
ZXN0RmluaXNoZXMoR19PQkpFQ1QobmV3U2V0dGluZ3MuZ2V0KCkpKTsKICAgICBnX29iamVjdF9z
ZXQoR19PQkpFQ1QobmV3U2V0dGluZ3MuZ2V0KCkpLCAiZW5hYmxlLWphdmFzY3JpcHQiLCBGQUxT
RSwgTlVMTCk7CiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyh0ZXN0LT5tX3dlYlZp
ZXcsIG5ld1NldHRpbmdzLmdldCgpKTsKIApAQCAtNjcsNyArNjUsNiBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2ViVmlld1NldHRpbmdzKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAg
IGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MoV0VCS0lUX1dFQl9WSUVXKHdl
YlZpZXcyLmdldCgpKSkgPT0gc2V0dGluZ3MpOwogCiAgICAgR1JlZlB0cjxXZWJLaXRTZXR0aW5n
cz4gbmV3U2V0dGluZ3MyID0gYWRvcHRHUmVmKHdlYmtpdF9zZXR0aW5nc19uZXcoKSk7Ci0gICAg
dGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChuZXdT
ZXR0aW5nczIuZ2V0KCkpKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKFdFQktJ
VF9XRUJfVklFVyh3ZWJWaWV3Mi5nZXQoKSksIG5ld1NldHRpbmdzMi5nZXQoKSk7CiAgICAgc2V0
dGluZ3MgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKFdFQktJVF9XRUJfVklFVyh3ZWJW
aWV3Mi5nZXQoKSkpOwogICAgIGdfYXNzZXJ0KHNldHRpbmdzID09IG5ld1NldHRpbmdzMi5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9U
ZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmNiYzFkMjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcApAQCAt
MCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKyNpbmNsdWRlIDxn
dGsvZ3RrLmg+CisjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+CisjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR1JlZlB0ci5oPgorCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0dyb3VwRGVmYXVsdChU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIC8vIERlZmF1bHQgZ3JvdXAgaXMgc2hh
cmVkIGJ5IGFsbCBXZWJWaWV3cyBieSBkZWZhdWx0LgorICAgIEdSZWZQdHI8V2ViS2l0V2ViVmll
dz4gd2ViVmlldzEgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKKyAg
ICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+IHdlYlZpZXcyID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtp
dF93ZWJfdmlld19uZXcoKSk7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF9ncm91
cCh3ZWJWaWV3MS5nZXQoKSkgPT0gd2Via2l0X3dlYl92aWV3X2dldF9ncm91cCh3ZWJWaWV3Mi5n
ZXQoKSkpOworCisgICAgLy8gU2V0dGluZ3MgYXJlIHNoYXJlZCBieSBhbGwgd2ViIHZpZXcgaW4g
dGhlIHNhbWUgZ3JvdXAuCisgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5n
cyh3ZWJWaWV3MS5nZXQoKSkgPT0gd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3
Mi5nZXQoKSkpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2Vi
VmlldzEuZ2V0KCkpID09IHdlYmtpdF93ZWJfdmlld19ncm91cF9nZXRfc2V0dGluZ3Mod2Via2l0
X3dlYl92aWV3X2dldF9ncm91cCh3ZWJWaWV3Mi5nZXQoKSkpKTsKK30KKworc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdHcm91cE5ld0dyb3VwKFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7Cisg
ICAgLy8gUGFzc2luZyAwIGFzIGdyb3VwIG5hbWUgZ2VuZXJhdGVzIHRoZSBuYW1lIGF1dG9tYXRp
Y2FsbHkuCisgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3R3JvdXA+IHZpZXdHcm91cDEgPSBhZG9w
dEdSZWYod2Via2l0X3dlYl92aWV3X2dyb3VwX25ldygwKSk7CisgICAgdGVzdC0+YXNzZXJ0T2Jq
ZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh2aWV3R3JvdXAxLmdldCgpKSk7
CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dyb3VwX2dldF9uYW1lKHZpZXdHcm91cDEu
Z2V0KCkpKTsKKworICAgIC8vIE5ldyBncm91cCB3aXRoIGEgZ2l2ZW4gbmFtZS4KKyAgICBHUmVm
UHRyPFdlYktpdFdlYlZpZXdHcm91cD4gdmlld0dyb3VwMiA9IGFkb3B0R1JlZih3ZWJraXRfd2Vi
X3ZpZXdfZ3JvdXBfbmV3KCJUZXN0R3JvdXAyIikpOworICAgIHRlc3QtPmFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qodmlld0dyb3VwMi5nZXQoKSkpOworICAg
IGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfZ2V0X25hbWUodmlld0dyb3Vw
Mi5nZXQoKSksID09LCAiVGVzdEdyb3VwMiIpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRf
d2ViX3ZpZXdfZ3JvdXBfZ2V0X25hbWUodmlld0dyb3VwMi5nZXQoKSksICE9LCB3ZWJraXRfd2Vi
X3ZpZXdfZ3JvdXBfZ2V0X25hbWUodmlld0dyb3VwMS5nZXQoKSkpOworCisgICAgLy8gRXZlcnkg
Z3JvdXAgaGFzIGl0cyBvd24gc2V0dGluZ3MuCisgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3
X2dyb3VwX2dldF9zZXR0aW5ncyh2aWV3R3JvdXAxLmdldCgpKSAhPSB3ZWJraXRfd2ViX3ZpZXdf
Z3JvdXBfZ2V0X3NldHRpbmdzKHZpZXdHcm91cDIuZ2V0KCkpKTsKK30KKworc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdOZXdXaXRoR3JvdXAoVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAg
ICBHUmVmUHRyPFdlYktpdFdlYlZpZXdHcm91cD4gdmlld0dyb3VwMSA9IGFkb3B0R1JlZih3ZWJr
aXRfd2ViX3ZpZXdfZ3JvdXBfbmV3KCJUZXN0R3JvdXAxIikpOworICAgIHRlc3QtPmFzc2VydE9i
amVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qodmlld0dyb3VwMS5nZXQoKSkp
OworICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldzEgPSBXRUJLSVRfV0VCX1ZJRVco
d2Via2l0X3dlYl92aWV3X25ld193aXRoX2dyb3VwKHZpZXdHcm91cDEuZ2V0KCkpKTsKKyAgICBn
X2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2dyb3VwKHdlYlZpZXcxLmdldCgpKSA9PSB2aWV3
R3JvdXAxLmdldCgpKTsKKworICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldzIgPSBX
RUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKKyAgICBnX2Fzc2VydCh3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2dyb3VwKHdlYlZpZXcyLmdldCgpKSAhPSB2aWV3R3JvdXAxLmdldCgp
KTsKKworICAgIC8vIFNldHRpbmdzIHNob3VsZCBiZSBkaWZmZXJlbnQgZm9yIHZpZXdzIGluIGRp
ZmZlcmVudCBncm91cHMuCisgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5n
cyh3ZWJWaWV3MS5nZXQoKSkgIT0gd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3
Mi5nZXQoKSkpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0dyb3VwU2V0dGluZ3MoVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXdHcm91
cD4gdmlld0dyb3VwMSA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfbmV3KCJUZXN0
R3JvdXAxIikpOworICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNo
ZXMoR19PQkpFQ1Qodmlld0dyb3VwMS5nZXQoKSkpOworICAgIEdSZWZQdHI8V2ViS2l0U2V0dGlu
Z3M+IG5ld1NldHRpbmdzID0gYWRvcHRHUmVmKHdlYmtpdF9zZXR0aW5nc19uZXdfd2l0aF9zZXR0
aW5ncygiZW5hYmxlLWphdmFzY3JpcHQiLCBGQUxTRSwgTlVMTCkpOworICAgIHRlc3QtPmFzc2Vy
dE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobmV3U2V0dGluZ3MuZ2V0
KCkpKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfc2V0X3NldHRpbmdzKHZpZXdHcm91cDEu
Z2V0KCksIG5ld1NldHRpbmdzLmdldCgpKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdf
Z3JvdXBfZ2V0X3NldHRpbmdzKHZpZXdHcm91cDEuZ2V0KCkpID09IG5ld1NldHRpbmdzLmdldCgp
KTsKKworICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldzEgPSBXRUJLSVRfV0VCX1ZJ
RVcod2Via2l0X3dlYl92aWV3X25ld193aXRoX2dyb3VwKHZpZXdHcm91cDEuZ2V0KCkpKTsKKyAg
ICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+IHdlYlZpZXcyID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtp
dF93ZWJfdmlld19uZXcoKSk7CisgICAgV2ViS2l0U2V0dGluZ3MqIHdlYlZpZXcxU2V0dGluZ3Mg
PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcxLmdldCgpKTsKKyAgICBXZWJL
aXRTZXR0aW5ncyogd2ViVmlldzJTZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGlu
Z3Mod2ViVmlldzIuZ2V0KCkpOworICAgIGdfYXNzZXJ0KHdlYlZpZXcxU2V0dGluZ3MgIT0gd2Vi
VmlldzJTZXR0aW5ncyk7CisgICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
amF2YXNjcmlwdCh3ZWJWaWV3MVNldHRpbmdzKSAhPSB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9qYXZhc2NyaXB0KHdlYlZpZXcyU2V0dGluZ3MpKTsKKworICAgIHdlYmtpdF93ZWJfdmlld19z
ZXRfc2V0dGluZ3Mod2ViVmlldzEuZ2V0KCksIHdlYlZpZXcyU2V0dGluZ3MpOworICAgIGdfYXNz
ZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldzEuZ2V0KCkpID09IHdlYlZp
ZXcyU2V0dGluZ3MpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19ncm91cF9nZXRfc2V0
dGluZ3Mod2Via2l0X3dlYl92aWV3X2dldF9ncm91cCh3ZWJWaWV3MS5nZXQoKSkpID09IHdlYlZp
ZXcyU2V0dGluZ3MpOworfQorCit2b2lkIGJlZm9yZUFsbCgpCit7CisgICAgVGVzdDo6YWRkKCJX
ZWJLaXRXZWJWaWV3R3JvdXAiLCAiZGVmYXVsdC1ncm91cCIsIHRlc3RXZWJWaWV3R3JvdXBEZWZh
dWx0KTsKKyAgICBUZXN0OjphZGQoIldlYktpdFdlYlZpZXdHcm91cCIsICJuZXctZ3JvdXAiLCB0
ZXN0V2ViVmlld0dyb3VwTmV3R3JvdXApOworICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIs
ICJuZXctd2l0aC1ncm91cCIsIHRlc3RXZWJWaWV3TmV3V2l0aEdyb3VwKTsKKyAgICBUZXN0Ojph
ZGQoIldlYktpdFdlYlZpZXdHcm91cCIsICJzZXR0aW5ncyIsIHRlc3RXZWJWaWV3R3JvdXBTZXR0
aW5ncyk7Cit9CisKK3ZvaWQgYWZ0ZXJBbGwoKQoreworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKaW5kZXggMWI0ZmE4Ni4uZDE4NDMxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtNTksNiArNTksNyBAQAog
I2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViUmVzb3VyY2UuaD4KICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFdlYlZpZXcuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlZpZXdCYXNlLmg+
CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJWaWV3R3JvdXAuaD4KICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdFdpbmRvd1Byb3BlcnRpZXMuaD4KIAogI3VuZGVmIF9fV0VCS0lUMl9IX0lOU0lE
RV9fCg==
</data>
<flag name="review"
          id="220884"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>