<?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>109169</bug_id>
          
          <creation_ts>2013-02-07 03:46:06 -0800</creation_ts>
          <short_desc>[Chromium] Page popup needs to support accelerated compositing</short_desc>
          <delta_ts>2013-02-12 11:07:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>109439</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Keishi Hattori">keishi</reporter>
          <assigned_to name="Keishi Hattori">keishi</assigned_to>
          <cc>abarth</cc>
    
    <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>peter+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>827266</commentid>
    <comment_count>0</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2013-02-07 03:46:06 -0800</bug_when>
    <thetext>Page popup needs to support accelerated compositing so we can use css transforms in the calendar picker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827352</commentid>
    <comment_count>1</comment_count>
      <attachid>187069</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2013-02-07 05:24:52 -0800</bug_when>
    <thetext>Created attachment 187069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827353</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 05:29:07 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827355</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 05:29:23 -0800</bug_when>
    <thetext>Attachment 187069 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Source/WebKit/chromium/WebKit.gyp&apos;, u&apos;Source/WebKit/chromium/public/WebViewClient.h&apos;, u&apos;Source/WebKit/chromium/public/WebWidgetClient.h&apos;, u&apos;Source/WebKit/chromium/src/ChromeClientImpl.cpp&apos;, u&apos;Source/WebKit/chromium/src/ChromeClientImpl.h&apos;, u&apos;Source/WebKit/chromium/src/LinkHighlight.cpp&apos;, u&apos;Source/WebKit/chromium/src/NonCompositedContentHost.cpp&apos;, u&apos;Source/WebKit/chromium/src/NonCompositedContentHost.h&apos;, u&apos;Source/WebKit/chromium/src/PageOverlay.cpp&apos;, u&apos;Source/WebKit/chromium/src/PageWidgetLayerTree.cpp&apos;, u&apos;Source/WebKit/chromium/src/PageWidgetLayerTree.h&apos;, u&apos;Source/WebKit/chromium/src/WebPagePopupImpl.cpp&apos;, u&apos;Source/WebKit/chromium/src/WebPagePopupImpl.h&apos;, u&apos;Source/WebKit/chromium/src/WebViewBenchmarkSupportImpl.cpp&apos;, u&apos;Source/WebKit/chromium/src/WebViewImpl.cpp&apos;, u&apos;Source/WebKit/chromium/src/WebViewImpl.h&apos;]&quot; exit_code: 1
Source/WebKit/chromium/src/WebPagePopupImpl.h:55:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 15 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>827551</commentid>
    <comment_count>4</comment_count>
      <attachid>187069</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-07 08:31:47 -0800</bug_when>
    <thetext>Comment on attachment 187069
Patch

Attachment 187069 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16418216

New failing tests:
http/tests/cache/cached-main-resource.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828563</commentid>
    <comment_count>5</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2013-02-08 07:40:52 -0800</bug_when>
    <thetext>​jamesr@ could you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828860</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-08 17:59:11 -0800</bug_when>
    <thetext>Interesting.  I wish you would have reached out to me sooner, I&apos;m midway through some significant changes in this area that will collide heavily with this work.  I&apos;m deleting about half the functions you are patching.

Is there a crbug or something tracking the requirement for 3D CSS in the calendar picker?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829699</commentid>
    <comment_count>7</comment_count>
      <attachid>187576</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2013-02-11 08:01:22 -0800</bug_when>
    <thetext>Created attachment 187576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829711</commentid>
    <comment_count>8</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2013-02-11 08:10:36 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Interesting.  I wish you would have reached out to me sooner, I&apos;m midway through some significant changes in this area that will collide heavily with this work.  I&apos;m deleting about half the functions you are patching.
&gt; 
&gt; Is there a crbug or something tracking the requirement for 3D CSS in the calendar picker?

If your significant changes are going to take a while, could we do something like this(https://bugs.webkit.org/attachment.cgi?id=187576) where I don&apos;t touch WebViewImpl and add just the bare minimum methods to WebPagePopupImpl?

I filed Bug 109439 which I will use as a meta bug to track the requirements for the new calendar picker UI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829713</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 08:12:33 -0800</bug_when>
    <thetext>Attachment 187576 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Source/WebKit/chromium/src/NonCompositedContentHost.cpp&apos;, u&apos;Source/WebKit/chromium/src/NonCompositedContentHost.h&apos;, u&apos;Source/WebKit/chromium/src/WebPagePopupImpl.cpp&apos;, u&apos;Source/WebKit/chromium/src/WebPagePopupImpl.h&apos;, u&apos;Source/WebKit/chromium/src/WebViewImpl.cpp&apos;, u&apos;Source/WebKit/chromium/src/WebViewImpl.h&apos;]&quot; exit_code: 1
Source/WebKit/chromium/src/WebPagePopupImpl.h:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 7 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>829715</commentid>
    <comment_count>10</comment_count>
      <attachid>187576</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 08:14:27 -0800</bug_when>
    <thetext>Comment on attachment 187576
Patch

Attachment 187576 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16491252</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829717</commentid>
    <comment_count>11</comment_count>
      <attachid>187576</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 08:15:52 -0800</bug_when>
    <thetext>Comment on attachment 187576
Patch

Attachment 187576 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16491253</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829720</commentid>
    <comment_count>12</comment_count>
      <attachid>187576</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-02-11 08:19:50 -0800</bug_when>
    <thetext>Comment on attachment 187576
Patch

Attachment 187576 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/16486355</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829802</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-11 09:43:52 -0800</bug_when>
    <thetext>I definitely want to be able to use compositing mode for popups (and all widgets), the question is how exactly to wire it up.  Are page popups widgets scrollable?  One of the primary reasons for the way NCCH works is to get good performance when scrolling, without that constraint something much simpler would work.  Perhaps we could use a simpler interface for popups and other widget types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830222</commentid>
    <comment_count>14</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2013-02-11 15:31:17 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; I definitely want to be able to use compositing mode for popups (and all widgets), the question is how exactly to wire it up.  Are page popups widgets scrollable?  One of the primary reasons for the way NCCH works is to get good performance when scrolling, without that constraint something much simpler would work.  Perhaps we could use a simpler interface for popups and other widget types.

Here is the mock of what I want to implement. https://googledrive.com/host/0B4aiM9jljUy8T19WQkJVMTFTd1E/
You can open the mock calendar picker by focusing the bottom field. (Clicking on the black triangle opens the current popup)

I use a custom scroll view implemented with JS for the grid of days. And I used CSS 3D transform so I can get 60fps. When I run it without changing anything the elements with CSS 3D transform are not shown.

The &lt;datalist&gt; suggestion picker uses overflow:scroll but I haven&apos;t noticed low scrolling performance.

Is there some way to make things simpler by just enabling CSS 3D transforms and not accelerated scrolling?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830463</commentid>
    <comment_count>15</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-11 19:11:24 -0800</bug_when>
    <thetext>I don&apos;t see any 3D, just normal 2D transitions.  Are they not performing as well as you would like when using the normal non-3D properties?  For this size animation I&apos;d expect software to do just fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830515</commentid>
    <comment_count>16</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2013-02-11 20:39:43 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; I don&apos;t see any 3D, just normal 2D transitions.  Are they not performing as well as you would like when using the normal non-3D properties?  For this size animation I&apos;d expect software to do just fine.

You&apos;re right! 2D transforms was fast enough. I will use 2D transforms.

By the way, do you think software will be fast enough for lower spec PCs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830541</commentid>
    <comment_count>17</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-11 21:36:46 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; I don&apos;t see any 3D, just normal 2D transitions.  Are they not performing as well as you would like when using the normal non-3D properties?  For this size animation I&apos;d expect software to do just fine.
&gt; 
&gt; You&apos;re right! 2D transforms was fast enough. I will use 2D transforms.
&gt; 
&gt; By the way, do you think software will be fast enough for lower spec PCs?

I would tend to think so at this resolution, but of course it&apos;s impossible to know for certain.  Keep in mind on lower spec PCs the GPUs will tend to be worse (or potentially unusable) as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831098</commentid>
    <comment_count>18</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2013-02-12 11:07:32 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; (In reply to comment #15)
&gt; &gt; &gt; I don&apos;t see any 3D, just normal 2D transitions.  Are they not performing as well as you would like when using the normal non-3D properties?  For this size animation I&apos;d expect software to do just fine.
&gt; &gt; 
&gt; &gt; You&apos;re right! 2D transforms was fast enough. I will use 2D transforms.
&gt; &gt; 
&gt; &gt; By the way, do you think software will be fast enough for lower spec PCs?
&gt; 
&gt; I would tend to think so at this resolution, but of course it&apos;s impossible to know for certain.  Keep in mind on lower spec PCs the GPUs will tend to be worse (or potentially unusable) as well.

Great! Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187069</attachid>
            <date>2013-02-07 05:24:52 -0800</date>
            <delta_ts>2013-02-11 08:01:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109169-20130207222127.patch</filename>
            <type>text/plain</type>
            <size>82470</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDU3YjA5ZWI4YTUwZjhlYWFiYTc0MjQ5NzUzOTBmNGY2NjgwODBjZTcuLjk3MmZjODRlNTMyZGNl
MDJjNzAyMDMyNGQzZTBhYmM5ZjUzMTJmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjQ4IEBACisyMDEzLTAyLTA3ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJr
aXQub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gUGFnZSBwb3B1cCBuZWVkcyB0byBzdXBwb3J0
IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDkxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIGV2ZXJ5dGhpbmcgaW4gV2ViVmlld0lt
cGwgdGhhdCBpcyByZWxhdGVkIHRvCisgICAgICAgIFdlYkxheWVyVHJlZVZpZXcgaW50byB0aGUg
UGFnZVdpZGdldExheWVyVHJlZSBjbGFzcyBzbyBpdCBjYW4gYmUgc2hhcmVkCisgICAgICAgIGJl
dHdlZW4gV2ViVmlld0ltcGwgYWRuIFdlYlBhZ2VQb3B1cEltcGwuCisKKyAgICAgICAgKiBXZWJL
aXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgIChXZWJL
aXQpOiBNb3ZpbmcgY3JlYXRlT3V0cHV0U3VyZmFjZSB0byBXZWJXaWRnZXRDbGllbnQuCisgICAg
ICAgICogcHVibGljL1dlYldpZGdldENsaWVudC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYldpZGdldENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldENsaWVudDo6
Y3JlYXRlT3V0cHV0U3VyZmFjZSk6IERpdHRvLgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6Q2hyb21lQ2xpZW50
SW1wbCk6IEFjY2VzcyB0aGUgbGF5ZXIgdHJlZSB0aHJvdWdoIHRoZSBQYWdlV2lkZ2V0TGF5ZXJU
cmVlLgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjppbnZhbGlkYXRlQ29udGVu
dHNBbmRSb290Vmlldyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBs
OjpncmFwaGljc0xheWVyRmFjdG9yeSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVD
bGllbnRJbXBsOjphdHRhY2hSb290R3JhcGhpY3NMYXllcik6IERpdHRvLgorICAgICAgICAoV2Vi
S2l0OjpDaHJvbWVDbGllbnRJbXBsOjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCk6IERp
dHRvLgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjphbGxvd2VkQ29tcG9zaXRp
bmdUcmlnZ2Vycyk6IERpdHRvLgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6Cisg
ICAgICAgIChDaHJvbWVDbGllbnRJbXBsKToKKyAgICAgICAgKiBzcmMvTGlua0hpZ2hsaWdodC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkxpbmtIaWdobGlnaHQ6OmNvbXB1dGVFbmNsb3NpbmdDb21w
b3NpdGluZ0xheWVyKTogRGl0dG8uCisgICAgICAgICogc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50
SG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Tm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0KToKKyAgICAgICAgKFdlYktpdDo6Tm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0Ojpub3RpZnlGbHVzaFJlcXVpcmVkKToKKyAgICAgICAgKFdlYktpdDo6Tm9uQ29t
cG9zaXRlZENvbnRlbnRIb3N0OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYktpdDo6Tm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0Ojppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAgICAqIHNy
Yy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChOb25Db21wb3NpdGVkQ29udGVudEhvc3REZWxlZ2F0ZSk6IEFkZGVkIHNvIHdlIGNhbiB1c2Ug
Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0IHdpdGggYm90aCBXZWJWaWV3SW1wbCBhbmQgV2ViUGFn
ZVBvcHVwSW1wbC4KKyAgICAgICAgKFdlYktpdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Ojpj
cmVhdGUpOgorICAgICAgICAoTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KToKKyAgICAgICAgKiBz
cmMvUGFnZU92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheTo6dXBkYXRl
KToKKyAgICAgICAgKiBzcmMvUGFnZVdpZGdldExheWVyVHJlZS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChHcmFwaGljc0xheWVyRmFjdG9yeUNocm9taXVtKTogTW92
ZWQgZnJvbSBXZWJWaWV3SW1wbC5jcHAKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJG
YWN0b3J5Q2hyb21pdW06On5HcmFwaGljc0xheWVyRmFjdG9yeUNocm9taXVtKToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VXaWRnZXRMYXllclRyZWU6OlBhZ2VXaWRn
ZXRMYXllclRyZWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlV2lkZ2V0TGF5ZXJUcmVlOjphbGxv
d3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVdpZGdldExh
eWVyVHJlZTo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpQYWdlV2lk
Z2V0TGF5ZXJUcmVlOjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKToKKyAgICAgICAgKFdl
YktpdDo6UGFnZVdpZGdldExheWVyVHJlZTo6bm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZVdpZGdldExheWVyVHJlZTo6cm9vdEdyYXBoaWNzTGF5ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlV2lkZ2V0TGF5ZXJUcmVlOjpwYWludFJvb3RMYXllcik6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VXaWRnZXRMYXllclRyZWU6OnNldElzQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VXaWRnZXRMYXllclRyZWU6Omlz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VXaWRn
ZXRMYXllclRyZWU6OnVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0KToKKyAgICAgICAgKFdlYktpdDo6
UGFnZVdpZGdldExheWVyVHJlZTo6Z3JhcGhpY3NMYXllckZhY3RvcnkpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlV2lkZ2V0TGF5ZXJUcmVlOjppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAgICAo
V2ViS2l0OjpQYWdlV2lkZ2V0TGF5ZXJUcmVlOjpzZXRJc1RyYW5zcGFyZW50KToKKyAgICAgICAg
KFdlYktpdDo6UGFnZVdpZGdldExheWVyVHJlZTo6aXNUcmFuc3BhcmVudCk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VXaWRnZXRMYXllclRyZWU6OmRldmljZVNjYWxlRmFjdG9yKToKKyAgICAgICAg
KFdlYktpdDo6UGFnZVdpZGdldExheWVyVHJlZTo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlV2lkZ2V0TGF5ZXJUcmVlOjpwYWdlU2NhbGVGYWN0b3IpOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlV2lkZ2V0TGF5ZXJUcmVlOjppbnZhbGlkYXRlUmVjdCk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VXaWRnZXRMYXllclRyZWU6OmRpZFJlY3JlYXRlT3V0cHV0U3VyZmFj
ZSk6CisgICAgICAgICogc3JjL1BhZ2VXaWRnZXRMYXllclRyZWUuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChQYWdlV2lkZ2V0TGF5ZXJU
cmVlQ2xpZW50KToKKyAgICAgICAgKFBhZ2VXaWRnZXRMYXllclRyZWUpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlV2lkZ2V0TGF5ZXJUcmVlOjp+UGFnZVdpZGdldExheWVyVHJlZSk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VXaWRnZXRMYXllclRyZWU6OmxheWVyVHJlZVZpZXcpOgorICAgICAgICAq
IHNyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RW1wdHlMYXllclRy
ZWVWaWV3Q2xpZW50OjphcHBseVNjcm9sbEFuZFNjYWxlKTogRW1wdHkgV2ViTGF5ZXJUcmVlVmll
d0NsaWVudCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYktpdDo6RW1wdHlMYXllclRyZWVW
aWV3Q2xpZW50OjpkaWRDb21taXRBbmREcmF3RnJhbWUpOiBEaXR0by4KKyAgICAgICAgKFdlYktp
dDo6RW1wdHlMYXllclRyZWVWaWV3Q2xpZW50OjpkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OkVtcHR5TGF5ZXJUcmVlVmlld0NsaWVudDo6c2NoZWR1bGVD
b21wb3NpdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VQb3B1cENocm9tZUNsaWVudDo6c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2gpOgorICAg
ICAgICAoUGFnZVBvcHVwQ2hyb21lQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBv
cHVwSW1wbDo6V2ViUGFnZVBvcHVwSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1
cEltcGw6OnZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6
OmxheW91dFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6
OnNldHRpbmdzSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OmxheWVy
VHJlZVZpZXdDbGllbnQpOgorICAgICAgICAqIHNyYy9XZWJQYWdlUG9wdXBJbXBsLmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OmxheWVyVHJlZSk6CisgICAgICAgIChXZWJQ
YWdlUG9wdXBJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0JlbmNobWFya1N1cHBvcnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0JlbmNobWFya1N1cHBvcnRJbXBsOjpwYWlu
dCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Omhh
bmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzdGFydFBh
Z2VTY2FsZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRTaG93
RlBTQ291bnRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRTaG93UGFpbnRS
ZWN0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRDb250aW51b3VzUGFpbnRp
bmdFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmhhbmRsZUtleUV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFuaW1hdGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6ZGlkQmVnaW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnVwZGF0ZVBhZ2VPdmVybGF5cyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6ZG9QaXhlbFJlYWRiYWNrVG9DYW52YXMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6cGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y29t
cG9zaXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldE5lZWRzUmVkcmF3KToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndpbGxDbG9zZUxheWVyVHJlZVZpZXcpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9yKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldERldmljZVNjYWxlRmFjdG9yKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OmVuYWJsZUZpeGVkTGF5b3V0TW9kZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpjb21wdXRlUGFnZVNjYWxlRmFjdG9yTGltaXRzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNlbmRSZXNpemVFdmVudEFuZFJlcGFpbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0SXNUcmFuc3BhcmVudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnNldE92ZXJsYXlMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpzY3JvbGxSb290TGF5ZXJSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNj
aGVkdWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZFJlY3Jl
YXRlT3V0cHV0U3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzaGFyZWRH
cmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRWaXNp
YmlsaXR5U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dmlld3BvcnRTaXpl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmxheW91dFZpZXdwb3J0U2l6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpsYXllclRyZWVWaWV3Q2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndpZGdldENsaWVudCk6CisgICAgICAgICogc3JjL1dl
YlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViVmlld0ltcGwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bGF5ZXJUcmVlKToKKworICAgICAgICAqIFdl
YktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgICogcHVibGljL1dlYldpZGdldENsaWVudC5oOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYldpZGdldENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYldp
ZGdldENsaWVudDo6Y3JlYXRlT3V0cHV0U3VyZmFjZSk6CisgICAgICAgICogc3JjL0Nocm9tZUNs
aWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpDaHJvbWVD
bGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6aW52YWxpZGF0
ZUNvbnRlbnRzQW5kUm9vdFZpZXcpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBs
OjpncmFwaGljc0xheWVyRmFjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudElt
cGw6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xp
ZW50SW1wbDo6c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2gpOgorICAgICAgICAoV2ViS2l0
OjpDaHJvbWVDbGllbnRJbXBsOjphbGxvd2VkQ29tcG9zaXRpbmdUcmlnZ2Vycyk6CisgICAgICAg
ICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKyAgICAgICAgKENocm9tZUNsaWVudEltcGwpOgor
ICAgICAgICAqIHNyYy9MaW5rSGlnaGxpZ2h0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGlua0hp
Z2hsaWdodDo6Y29tcHV0ZUVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5ZXIpOgorICAgICAgICAqIHNy
Yy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpOb25Db21w
b3NpdGVkQ29udGVudEhvc3Q6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6bm90aWZ5Rmx1c2hSZXF1aXJlZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6cGFpbnRDb250ZW50cyk6
CisgICAgICAgIChXZWJLaXQ6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6aXNUcmFja2luZ1Jl
cGFpbnRzKToKKyAgICAgICAgKiBzcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Lmg6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0RGVsZWdhdGUp
OgorICAgICAgICAoV2ViS2l0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmNyZWF0ZSk6Cisg
ICAgICAgIChOb25Db21wb3NpdGVkQ29udGVudEhvc3QpOgorICAgICAgICAqIHNyYy9QYWdlT3Zl
cmxheS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5Ojp1cGRhdGUpOgorICAgICAg
ICAqIHNyYy9QYWdlV2lkZ2V0TGF5ZXJUcmVlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJGYWN0b3J5Q2hyb21pdW0pOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnlDaHJvbWl1bTo6fkdyYXBoaWNzTGF5ZXJGYWN0b3J5
Q2hyb21pdW0pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVdpZGdl
dExheWVyVHJlZTo6UGFnZVdpZGdldExheWVyVHJlZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VX
aWRnZXRMYXllclRyZWU6OmFsbG93c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpQYWdlV2lkZ2V0TGF5ZXJUcmVlOjpzZXRSb290R3JhcGhpY3NMYXllcik6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VXaWRnZXRMYXllclRyZWU6OnNjaGVkdWxlQ29tcG9zaXRpbmdMYXll
clN5bmMpOgorICAgICAgICAoV2ViS2l0OjpQYWdlV2lkZ2V0TGF5ZXJUcmVlOjpub25Db21wb3Np
dGVkQ29udGVudEhvc3QpOgorICAgICAgICAoV2ViS2l0OjpQYWdlV2lkZ2V0TGF5ZXJUcmVlOjpy
b290R3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VXaWRnZXRMYXllclRyZWU6
OnBhaW50Um9vdExheWVyKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVdpZGdldExheWVyVHJlZTo6
c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZVdpZGdldExheWVyVHJlZTo6aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZVdpZGdldExheWVyVHJlZTo6dXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQp
OgorICAgICAgICAoV2ViS2l0OjpQYWdlV2lkZ2V0TGF5ZXJUcmVlOjpncmFwaGljc0xheWVyRmFj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VXaWRnZXRMYXllclRyZWU6OmlzVHJhY2tpbmdS
ZXBhaW50cyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VXaWRnZXRMYXllclRyZWU6OnNldElzVHJh
bnNwYXJlbnQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlV2lkZ2V0TGF5ZXJUcmVlOjppc1RyYW5z
cGFyZW50KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVdpZGdldExheWVyVHJlZTo6ZGV2aWNlU2Nh
bGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpQYWdlV2lkZ2V0TGF5ZXJUcmVlOjpzZXREZXZp
Y2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VXaWRnZXRMYXllclRyZWU6OnBh
Z2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VXaWRnZXRMYXllclRyZWU6Omlu
dmFsaWRhdGVSZWN0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVdpZGdldExheWVyVHJlZTo6ZGlk
UmVjcmVhdGVPdXRwdXRTdXJmYWNlKToKKyAgICAgICAgKiBzcmMvUGFnZVdpZGdldExheWVyVHJl
ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFBhZ2VXaWRnZXRMYXllclRyZWVDbGllbnQpOgorICAgICAgICAoUGFnZVdpZGdldExheWVy
VHJlZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VXaWRnZXRMYXllclRyZWU6On5QYWdlV2lkZ2V0
TGF5ZXJUcmVlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVdpZGdldExheWVyVHJlZTo6bGF5ZXJU
cmVlVmlldyk6CisgICAgICAgICogc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVBvcHVwQ2hyb21lQ2xpZW50OjpzY2hlZHVs
ZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCk6CisgICAgICAgIChQYWdlUG9wdXBDaHJvbWVDbGllbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpXZWJQYWdlUG9wdXBJbXBsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6dmlld3BvcnRTaXplKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6bGF5b3V0Vmlld3BvcnRTaXplKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6c2V0dGluZ3NJbXBsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6bGF5ZXJUcmVlVmlld0NsaWVudCk6CisgICAgICAgICog
c3JjL1dlYlBhZ2VQb3B1cEltcGwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1w
bDo6bGF5ZXJUcmVlKToKKyAgICAgICAgKFdlYlBhZ2VQb3B1cEltcGwpOgorICAgICAgICAqIHNy
Yy9XZWJWaWV3QmVuY2htYXJrU3VwcG9ydEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3QmVuY2htYXJrU3VwcG9ydEltcGw6OnBhaW50KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0lt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFNob3dGUFNDb3VudGVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OnNldFNob3dQYWludFJlY3RzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnNldENvbnRpbnVvdXNQYWludGluZ0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6aGFuZGxlS2V5RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRCZWdpbkZy
YW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnVwZGF0ZUFuaW1hdGlvbnMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dXBkYXRlUGFnZU92ZXJsYXlzKToKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkb1BpeGVsUmVhZGJh
Y2tUb0NhbnZhcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwYWludCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjb21wb3NpdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6c2V0TmVlZHNSZWRyYXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6d2lsbENsb3NlTGF5ZXJUcmVlVmlldyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpzZXRQYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0
RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZW5hYmxl
Rml4ZWRMYXlvdXRNb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbXB1dGVQ
YWdlU2NhbGVGYWN0b3JMaW1pdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2Vu
ZFJlc2l6ZUV2ZW50QW5kUmVwYWludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpz
ZXRJc1RyYW5zcGFyZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZENvbW1p
dExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0T3ZlcmxheUxheWVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNjcm9sbFJvb3RMYXllclJlY3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2NoZWR1bGVBbmltYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6ZGlkUmVjcmVhdGVPdXRwdXRTdXJmYWNlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjp2aWV3cG9ydFNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6bGF5b3V0Vmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OmxheWVyVHJlZVZpZXdDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2lk
Z2V0Q2xpZW50KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpsYXllclRyZWUpOgorCiAyMDEzLTAxLTMxICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBkaXNhYmxpbmcgZmFpbGluZyB0ZXN0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDY0MzgwMTM1ZDA3ZGYxMzk2NzAwYzBhYTQ3
YjQxMDlkNDIwZGEyYjAuLjIyZTM1NTc2M2QxNGVhNTA3NjFiNDA5ZmFmYTkxMzJmMTYzNjY3OTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTU4Niw2ICs1ODYsOCBAQAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViVmlld0JlbmNobWFya1N1cHBvcnRJbXBsLmgnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViVmlld0ltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlZp
ZXdJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvUGFnZVdpZGdldExheWVyVHJlZS5jcHAn
LAorICAgICAgICAgICAgICAgICdzcmMvUGFnZVdpZGdldExheWVyVHJlZS5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYldvcmtlckJhc2UuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YldvcmtlckJhc2UuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJXb3JrZXJDbGllbnRJbXBs
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgK
aW5kZXggYTE4MTc5Y2ZjZWFhNDA5NTE2MGNiNDRkOTFkMTcxZjJkMzgyZTQ4ZC4uYzQ3NjcyOTJm
MDc2ZDQzNWExYjBhOGI1MDNhYzkyNTY2ODFhZWE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaApAQCAtNTIsNyArNTIsNiBAQCBjbGFzcyBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgV2ViQmF0dGVyeVN0YXR1c0NsaWVudDsKIGNsYXNz
IFdlYkNvbG9yQ2hvb3NlcjsKIGNsYXNzIFdlYkNvbG9yQ2hvb3NlckNsaWVudDsKLWNsYXNzIFdl
YkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlOwogY2xhc3MgV2ViRGF0ZVRpbWVDaG9vc2VyQ29tcGxl
dGlvbjsKIGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50OwogY2xhc3MgV2ViRHJhZ0Rh
dGE7CkBAIC0xMjYsOSArMTI1LDYgQEAgcHVibGljOgogICAgIC8vIERFUFJFQ0FURUQ6IENyZWF0
ZXMgYSBncmFwaGljcyBjb250ZXh0IHRoYXQgcmVuZGVycyB0byB0aGUgY2xpZW50J3MgV2ViVmll
dy4KICAgICB2aXJ0dWFsIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjcmVhdGVHcmFwaGljc0NvbnRl
eHQzRChjb25zdCBXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyYpIHsgcmV0dXJuIDA7
IH0KIAotICAgIC8vIENyZWF0ZXMgdGhlIG91dHB1dCBzdXJmYWNlIHRoYXQgcmVuZGVycyB0byB0
aGUgY2xpZW50J3MgV2ViVmlldy4KLSAgICB2aXJ0dWFsIFdlYkNvbXBvc2l0b3JPdXRwdXRTdXJm
YWNlKiBjcmVhdGVPdXRwdXRTdXJmYWNlKCkgeyByZXR1cm4gMDsgfQotCiAgICAgLy8gTWlzYyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKICAgICAvLyBBIG5ldyBtZXNzYWdlIHdhcyBhZGRlZCB0byB0aGUgY29uc29sZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldENsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0Q2xpZW50LmgKaW5k
ZXggZmE5ZDNkOGZhMzZiY2IzNjI4OWQ3MGYyOTQ4M2RmN2Q5ZjRlMzUyMy4uMDcwYzY1NzZiYTUw
ZDI1ODk4NTA4MjhhZWUwMjBjZGRlZDVjNGQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViV2lkZ2V0Q2xpZW50LmgKQEAgLTM5LDYgKzM5LDcgQEAKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlOwogY2xhc3Mg
V2ViR2VzdHVyZUV2ZW50OwogY2xhc3MgV2ViU3RyaW5nOwogY2xhc3MgV2ViV2lkZ2V0OwpAQCAt
MTcwLDYgKzE3MSw5IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZWQgd2hlbiBhIGdlc3R1cmUgZXZl
bnQgaXMgaGFuZGxlZC4KICAgICB2aXJ0dWFsIHZvaWQgZGlkSGFuZGxlR2VzdHVyZUV2ZW50KGNv
bnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQsIGJvb2wgZXZlbnRDYW5jZWxsZWQpIHsgfQogCisg
ICAgLy8gQ3JlYXRlcyB0aGUgb3V0cHV0IHN1cmZhY2UgdGhhdCByZW5kZXJzIHRvIHRoZSBjbGll
bnQncyBXZWJWaWV3LgorICAgIHZpcnR1YWwgV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2UqIGNy
ZWF0ZU91dHB1dFN1cmZhY2UoKSB7IHJldHVybiAwOyB9CisKIHByb3RlY3RlZDoKICAgICB+V2Vi
V2lkZ2V0Q2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCBkMzBmN2MwNjY2NWRhNjkyYzE0MzhmYTk5Yzc2MTVi
M2U4YWVmZTRlLi5jM2E5MmI4ZWQ0NDU5MThmMTY1ZjUyODI4YjkxYmYwYzkzNzZkZTBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAt
MTEzLDIwICsxMTMsNiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotbmFtZXNwYWNl
IHsKLQotY2xhc3MgR3JhcGhpY3NMYXllckZhY3RvcnlDaHJvbWl1bSA6IHB1YmxpYyBHcmFwaGlj
c0xheWVyRmFjdG9yeSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+R3JhcGhpY3NMYXllckZhY3Rv
cnlDaHJvbWl1bSgpIHsgfQotCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+
IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KSBPVkVSUklE
RQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHcmFwaGljc0xheWVyQ2hyb21p
dW0oY2xpZW50KSk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIC8vIENvbnZlcnRzIGEgV2ViQ29yZTo6UG9wdXBDb250YWluZXJUeXBlIHRvIGEg
V2ViS2l0OjpXZWJQb3B1cFR5cGUuCkBAIC0xNjEsOSArMTQ3LDYgQEAgQ2hyb21lQ2xpZW50SW1w
bDo6Q2hyb21lQ2xpZW50SW1wbChXZWJWaWV3SW1wbCogd2ViVmlldykKICNpZiBFTkFCTEUoUEFH
RV9QT1BVUCkKICAgICAsIG1fcGFnZVBvcHVwRHJpdmVyKHdlYlZpZXcpCiAjZW5kaWYKLSNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgLCBtX2dyYXBoaWNzTGF5ZXJGYWN0b3J5
KGFkb3B0UHRyKG5ldyBHcmFwaGljc0xheWVyRmFjdG9yeUNocm9taXVtKSkKLSNlbmRpZgogewog
fQogCkBAIC01MjUsNyArNTA4LDcgQEAgdm9pZCBDaHJvbWVDbGllbnRJbXBsOjppbnZhbGlkYXRl
Q29udGVudHNBbmRSb290Vmlldyhjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0LAogewogICAgIGlm
ICh1cGRhdGVSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fd2ViVmlldy0+
aW52YWxpZGF0ZVJlY3QodXBkYXRlUmVjdCk7CisgICAgbV93ZWJWaWV3LT5sYXllclRyZWUoKS0+
aW52YWxpZGF0ZVJlY3QodXBkYXRlUmVjdCk7CiB9CiAKIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6
aW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0
LCBib29sIGltbWVkaWF0ZSkKQEAgLTk0MSwyMiArOTI0LDIyIEBAIGJvb2wgQ2hyb21lQ2xpZW50
SW1wbDo6cGFpbnRDdXN0b21PdmVyaGFuZ0FyZWEoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBJCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogR3JhcGhpY3NMYXllckZh
Y3RvcnkqIENocm9tZUNsaWVudEltcGw6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9ncmFwaGljc0xheWVyRmFjdG9yeS5nZXQoKTsKKyAgICByZXR1cm4gbV93
ZWJWaWV3LT5sYXllclRyZWUoKS0+Z3JhcGhpY3NMYXllckZhY3RvcnkoKTsKIH0KIAogdm9pZCBD
aHJvbWVDbGllbnRJbXBsOjphdHRhY2hSb290R3JhcGhpY3NMYXllcihGcmFtZSogZnJhbWUsIEdy
YXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCiB7Ci0gICAgbV93ZWJWaWV3LT5zZXRSb290R3Jh
cGhpY3NMYXllcihncmFwaGljc0xheWVyKTsKKyAgICBtX3dlYlZpZXctPmxheWVyVHJlZSgpLT5z
ZXRSb290R3JhcGhpY3NMYXllcihncmFwaGljc0xheWVyKTsKIH0KIAogdm9pZCBDaHJvbWVDbGll
bnRJbXBsOjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpCiB7Ci0gICAgbV93ZWJWaWV3
LT5zY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKCk7CisgICAgbV93ZWJWaWV3LT5sYXllclRy
ZWUoKS0+c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYygpOwogfQogCiBDaHJvbWVDbGllbnQ6
OkNvbXBvc2l0aW5nVHJpZ2dlckZsYWdzIENocm9tZUNsaWVudEltcGw6OmFsbG93ZWRDb21wb3Np
dGluZ1RyaWdnZXJzKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fd2ViVmlldy0+YWxsb3dzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZygpKQorICAgIGlmICghbV93ZWJWaWV3LT5sYXllclRyZWUoKS0+YWxs
b3dzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIENv
bXBvc2l0aW5nVHJpZ2dlckZsYWdzIGZsYWdzID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAppbmRleCBkNWU5YWZmM2FhNDNlNzNiZmI5OTNlOTA2
NTdhZmUyZWZhNmUyMWY3Li5mNTU3Y2JkOTEzY2MyOTYyMzdlZDMxNTgyYzc2ODI4MWFhNjhiN2I3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCkBA
IC0yNTAsMTAgKzI1MCw2IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFBBR0VfUE9QVVApCiAgICAg
V2ViQ29yZTo6UGFnZVBvcHVwRHJpdmVyKiBtX3BhZ2VQb3B1cERyaXZlcjsKICNlbmRpZgotCi0j
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIE93blB0cjxXZWJDb3JlOjpHcmFw
aGljc0xheWVyRmFjdG9yeT4gbV9ncmFwaGljc0xheWVyRmFjdG9yeTsKLSNlbmRpZgogfTsKIAog
Y2xhc3MgTmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpO
YXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvTGlua0hpZ2hsaWdodC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9MaW5rSGlnaGxpZ2h0LmNwcAppbmRleCA5YTg2YWU0ZWM0ZjFhMmE2N2RiMDExZDIzN2EzNTlm
NGY5ZWI1NjVhLi44ZWY0MDk3YmQzZWQ4NjRiYThmN2RlYjM2N2U4MTc4NDRjNTlmYzQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9MaW5rSGlnaGxpZ2h0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9MaW5rSGlnaGxpZ2h0LmNwcApAQCAtMTMxLDcg
KzEzMSw3IEBAIFJlbmRlckxheWVyKiBMaW5rSGlnaGxpZ2h0Ojpjb21wdXRlRW5jbG9zaW5nQ29t
cG9zaXRpbmdMYXllcigpCiAgICAgbV9jbGlwTGF5ZXItPnNldFN1YmxheWVyVHJhbnNmb3JtKFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwogICAgIGlmICghbmV3R3JhcGhpY3NMYXllci0+ZHJh
d3NDb250ZW50KCkpIHsKICAgICAgICAgbV9jbGlwTGF5ZXItPnNldFN1YmxheWVyVHJhbnNmb3Jt
KFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KG5ld0dyYXBoaWNzTGF5ZXItPnRyYW5zZm9ybSgpKSk7
Ci0gICAgICAgIG5ld0dyYXBoaWNzTGF5ZXIgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ2hy
b21pdW0qPihtX293bmluZ1dlYlZpZXdJbXBsLT5ub25Db21wb3NpdGVkQ29udGVudEhvc3QoKS0+
dG9wTGV2ZWxSb290TGF5ZXIoKSk7CisgICAgICAgIG5ld0dyYXBoaWNzTGF5ZXIgPSBzdGF0aWNf
Y2FzdDxHcmFwaGljc0xheWVyQ2hyb21pdW0qPihtX293bmluZ1dlYlZpZXdJbXBsLT5sYXllclRy
ZWUoKS0+bm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KCktPnRvcExldmVsUm9vdExheWVyKCkpOwog
ICAgIH0KIAogICAgIGlmIChtX2N1cnJlbnRHcmFwaGljc0xheWVyICE9IG5ld0dyYXBoaWNzTGF5
ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3Np
dGVkQ29udGVudEhvc3QuY3BwCmluZGV4IDlkMDdiNDQyNzhhYzU4NDVhMjU4ZDk2Yjk4YjMwYTI2
N2IzMmNmNDUuLmI2Y2FiMTNlMzdkYWEwNjRhNjAwNDk4MmVlOWJhODJlMWE5NGFhZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0LmNwcApAQCAtMzMsMTQgKzMzLDEzIEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNo
cm9taXVtLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCi0jaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2Vi
Q29udGVudExheWVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UG9pbnQuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLU5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0KFdlYlZpZXdJbXBsKiB3ZWJWaWV3LCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
RmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkpCi0gICAgOiBtX3dlYlZpZXcod2ViVmlldykK
K05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KE5vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdERlbGVnYXRlKiBkZWxlZ2F0ZSwgV2ViQ29yZTo6R3JhcGhpY3NM
YXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5LCBib29sIGFwcGx5UGFnZVNjYWxlRmFj
dG9yKQorICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKICAgICAsIG1fc2hvd0RlYnVnQm9yZGVy
cyhmYWxzZSkKIHsKICAgICBtX2dyYXBoaWNzTGF5ZXIgPSBXZWJDb3JlOjpHcmFwaGljc0xheWVy
OjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnksIHRoaXMpOwpAQCAtNDgsNyArNDcsNyBAQCBO
b25Db21wb3NpdGVkQ29udGVudEhvc3Q6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdChXZWJWaWV3
SW1wbCogd2ViVmlldywgV2ViQ29yZQogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0TmFtZSgibm9u
LWNvbXBvc2l0ZWQgY29udGVudCIpOwogI2VuZGlmCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRE
cmF3c0NvbnRlbnQodHJ1ZSk7Ci0gICAgbV9ncmFwaGljc0xheWVyLT5zZXRBcHBsaWVzUGFnZVNj
YWxlKCFtX3dlYlZpZXctPnBhZ2UoKS0+c2V0dGluZ3MoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJ
bkNvbXBvc2l0b3IoKSk7CisgICAgbV9ncmFwaGljc0xheWVyLT5zZXRBcHBsaWVzUGFnZVNjYWxl
KGFwcGx5UGFnZVNjYWxlRmFjdG9yKTsKICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRz
T3BhcXVlKHRydWUpOwogICAgIC8vIEZJWE1FOiBSZW1vdmUgTENEIHRleHQgc2V0dGluZyBhZnRl
ciBpdCBpcyBpbXBsZW1lbnRlZCBpbiBjaHJvbWl1bS4KICAgICBXZWJDb250ZW50TGF5ZXIqIGxh
eWVyID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtKj4obV9ncmFw
aGljc0xheWVyLmdldCgpKS0+Y29udGVudExheWVyKCk7CkBAIC0xNjcsNyArMTY2LDcgQEAgdm9p
ZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NMYXkKIAogdm9pZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6Om5v
dGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopCiB7Ci0gICAg
bV93ZWJWaWV3LT5zY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKCk7CisgICAgbV9kZWxlZ2F0
ZS0+c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYygpOwogfQogCiB2b2lkIE5vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdDo6cGFpbnRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
KiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QpCkBAIC0x
NzUsNyArMTc0LDcgQEAgdm9pZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnBhaW50Q29udGVu
dHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdlYkMKICAgICBjb250ZXh0LnRyYW5z
bGF0ZSgtbV9sYXllckFkanVzdCk7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBhZGp1c3RlZENsaXBS
ZWN0ID0gY2xpcFJlY3Q7CiAgICAgYWRqdXN0ZWRDbGlwUmVjdC5tb3ZlKG1fbGF5ZXJBZGp1c3Qp
OwotICAgIG1fd2ViVmlldy0+cGFpbnRSb290TGF5ZXIoY29udGV4dCwgYWRqdXN0ZWRDbGlwUmVj
dCk7CisgICAgbV9kZWxlZ2F0ZS0+cGFpbnRSb290TGF5ZXIoY29udGV4dCwgYWRqdXN0ZWRDbGlw
UmVjdCk7CiB9CiAKIHZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzZXRTaG93RGVidWdC
b3JkZXJzKGJvb2wgc2hvd0RlYnVnQm9yZGVycykKQEAgLTE4Niw3ICsxODUsNyBAQCB2b2lkIE5v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0U2hvd0RlYnVnQm9yZGVycyhib29sIHNob3dEZWJ1
Z0JvcmRlcnMpCiAKIGJvb2wgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Ojppc1RyYWNraW5nUmVw
YWludHMoKSBjb25zdAogewotICAgIHJldHVybiBtX3dlYlZpZXctPmlzVHJhY2tpbmdSZXBhaW50
cygpOworICAgIHJldHVybiBtX2RlbGVnYXRlLT5pc1RyYWNraW5nUmVwYWludHMoKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oCmluZGV4IDY0NjdjYzRiYTQyODhhYWI2MmQ0
NTE0NDRmNTcwNDNjNGJlZTBkNGIuLjE2MjhlNTJiY2Q2NDdiNWI0ODc4NDNiMjI3MTY3ZGZmMGRi
YWI1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdC5oCkBAIC00NCwxNCArNDQsMjAgQEAgY2xhc3MgSW50UmVjdDsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJWaWV3SW1wbDsKKworY2xhc3MgTm9uQ29t
cG9zaXRlZENvbnRlbnRIb3N0RGVsZWdhdGUgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFJvb3RMYXllcihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBjb250ZW50UmVjdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1RyYWNraW5nUmVwYWlu
dHMoKSBjb25zdCA9IDA7Cit9OwogCiBjbGFzcyBOb25Db21wb3NpdGVkQ29udGVudEhvc3QgOiBw
dWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNsaWVudCB7CiBXVEZfTUFLRV9OT05DT1BZQUJM
RShOb25Db21wb3NpdGVkQ29udGVudEhvc3QpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdD4gY3JlYXRlKFdlYlZpZXdJbXBsKiB3ZWJWaWV3
LCBXZWJDb3JlOjpHcmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkpCisg
ICAgc3RhdGljIFBhc3NPd25QdHI8Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0PiBjcmVhdGUoTm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0RGVsZWdhdGUqIGRlbGVnYXRlLCBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnksIGJvb2wgYXBwbHlQYWdlU2NhbGVG
YWN0b3IpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE5vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdCh3ZWJWaWV3LCBncmFwaGljc0xheWVyRmFjdG9yeSkpOworICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdChkZWxlZ2F0ZSwgZ3JhcGhp
Y3NMYXllckZhY3RvcnksIGFwcGx5UGFnZVNjYWxlRmFjdG9yKSk7CiAgICAgfQogICAgIHZpcnR1
YWwgfk5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCgpOwogCkBAIC02NSw3ICs3MSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcnMoYm9vbCk7CiAKIHByb3RlY3RlZDoKLSAg
ICBOb25Db21wb3NpdGVkQ29udGVudEhvc3QoV2ViVmlld0ltcGwqLCBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyRmFjdG9yeSopOworICAgIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdChOb25Db21wb3Np
dGVkQ29udGVudEhvc3REZWxlZ2F0ZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJGYWN0b3J5Kiwg
Ym9vbCk7CiAKIHByaXZhdGU6CiAgICAgLy8gR3JhcGhpY3NMYXllckNsaWVudApAQCAtNzgsNyAr
ODQsNyBAQCBwcml2YXRlOgogICAgIFdlYkxheWVyKiBzY3JvbGxMYXllcigpOwogCiAgICAgT3du
UHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fZ3JhcGhpY3NMYXllcjsKLSAgICBXZWJWaWV3
SW1wbCogbV93ZWJWaWV3OworICAgIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdERlbGVnYXRlKiBt
X2RlbGVnYXRlOwogICAgIFdlYkNvcmU6OkludFNpemUgbV92aWV3cG9ydFNpemU7CiAgICAgV2Vi
Q29yZTo6SW50U2l6ZSBtX2xheWVyQWRqdXN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9QYWdlT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9QYWdlT3ZlcmxheS5jcHAKaW5kZXggOTgyM2FiYmE4Y2NhNDE0NTBkOTFkY2NjNzY3ZjI2ZjFj
ZDVmZjcxOS4uMzJiNmRjNGU2MzBhYzM3NjE4YTVlZGQwMDBlNmY2MmM5Yzg4Y2UyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZU92ZXJsYXkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BhZ2VPdmVybGF5LmNwcApAQCAtMTI2LDcgKzEyNiw3
IEBAIHZvaWQgUGFnZU92ZXJsYXk6OnVwZGF0ZSgpCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogICAgIGlmICghbV9sYXllcikgewogICAgICAgICBtX2xheWVyQ2xpZW50ID0gT3Zl
cmxheUdyYXBoaWNzTGF5ZXJDbGllbnRJbXBsOjpjcmVhdGUobV92aWV3SW1wbCwgbV9vdmVybGF5
KTsKLSAgICAgICAgbV9sYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShtX3ZpZXdJbXBsLT5n
cmFwaGljc0xheWVyRmFjdG9yeSgpLCBtX2xheWVyQ2xpZW50LmdldCgpKTsKKyAgICAgICAgbV9s
YXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShtX3ZpZXdJbXBsLT5sYXllclRyZWUoKS0+Z3Jh
cGhpY3NMYXllckZhY3RvcnkoKSwgbV9sYXllckNsaWVudC5nZXQoKSk7CiAgICAgICAgIG1fbGF5
ZXItPnNldE5hbWUoIldlYlZpZXdJbXBsIHBhZ2Ugb3ZlcmxheSBjb250ZW50Iik7CiAgICAgICAg
IG1fbGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QYWdlV2lkZ2V0TGF5ZXJUcmVlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1BhZ2VXaWRnZXRMYXllclRyZWUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3
ZmQwNzFhYTBlOGZhOGQ4ZTU1ZjQwMWU5NmNiMGNiNDNiODRiZTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QYWdlV2lkZ2V0TGF5ZXJUcmVlLmNwcApAQCAt
MCwwICsxLDM2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQYWdlV2lkZ2V0TGF5
ZXJUcmVlLmgiCisKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJD
aHJvbWl1bS5oIgorI2luY2x1ZGUgIk5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oIgorI2luY2x1
ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlV2lkZ2V0RGVsZWdhdGUuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybUNvbnRleHRTa2lhLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgi
CisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVk
ZSAiVHJhY2VFdmVudC5oIgorI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
LmgiCisjaW5jbHVkZSAiV2ViU2V0dGluZ3NJbXBsLmgiCisjaW5jbHVkZSAiV2ViV2lkZ2V0Q2xp
ZW50LmgiCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dl
YkNvbXBvc2l0b3JTdXBwb3J0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyVHJlZVZpZXcu
aD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oPgorI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIEdyYXBoaWNz
TGF5ZXJGYWN0b3J5Q2hyb21pdW0gOiBwdWJsaWMgR3JhcGhpY3NMYXllckZhY3RvcnkgeworcHVi
bGljOgorICAgIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJGYWN0b3J5Q2hyb21pdW0oKSB7IH0KKwor
ICAgIHZpcnR1YWwgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBjcmVhdGVHcmFwaGljc0xheWVy
KEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgR3JhcGhpY3NMYXllckNocm9taXVtKGNsaWVudCkpOworICAgIH0K
K307CisKK30gLy8gbmFtZXNwYWNlCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYWdlV2lkZ2V0
TGF5ZXJUcmVlOjpQYWdlV2lkZ2V0TGF5ZXJUcmVlKFBhZ2VXaWRnZXRMYXllclRyZWVDbGllbnQq
IGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1faXNUcmFuc3BhcmVudChm
YWxzZSkKKyAgICAsIG1fc3VwcHJlc3NJbnZhbGlkYXRpb25zKGZhbHNlKQorI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKKyAgICAsIG1fbGF5ZXJUcmVlVmlldygwKQorICAgICwgbV9y
b290TGF5ZXIoMCkKKyAgICAsIG1fcm9vdEdyYXBoaWNzTGF5ZXIoMCkKKyAgICAsIG1faXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGZhbHNlKQorICAgICwgbV9sYXllclRyZWVWaWV3Q29t
bWl0c0RlZmVycmVkKGZhbHNlKQorICAgICwgbV9jb21wb3NpdG9yQ3JlYXRpb25GYWlsZWQoZmFs
c2UpCisvLyAgICAsIG1fcmVjcmVhdGluZ0dyYXBoaWNzQ29udGV4dChmYWxzZSkKKyAgICAsIG1f
aW5wdXRIYW5kbGVySWRlbnRpZmllcigtMSkKKyAgICAsIG1fZ3JhcGhpY3NMYXllckZhY3Rvcnko
YWRvcHRQdHIobmV3IEdyYXBoaWNzTGF5ZXJGYWN0b3J5Q2hyb21pdW0pKQorI2VuZGlmCit7Cit9
CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCitib29sIFBhZ2VXaWRnZXRMYXll
clRyZWU6OmFsbG93c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKQoreworICAgIHJldHVybiAhbV9j
b21wb3NpdG9yQ3JlYXRpb25GYWlsZWQ7Cit9CisKK3ZvaWQgUGFnZVdpZGdldExheWVyVHJlZTo6
c2V0Um9vdEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCit7CisgICAgVGVtcG9y
YXJ5Q2hhbmdlPGJvb2w+IGNoYW5nZShtX3N1cHByZXNzSW52YWxpZGF0aW9ucywgdHJ1ZSk7CisK
KyAgICBtX3Jvb3RHcmFwaGljc0xheWVyID0gbGF5ZXI7CisgICAgbV9yb290TGF5ZXIgPSBsYXll
ciA/IGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiAwOworCisgICAgc2V0SXNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQWN0aXZlKGxheWVyKTsKKyAgICBpZiAobV9ub25Db21wb3NpdGVkQ29udGVudEhv
c3QpIHsKKyAgICAgICAgR3JhcGhpY3NMYXllciogc2Nyb2xsTGF5ZXIgPSAwOworICAgICAgICBp
ZiAobGF5ZXIpIHsKKyAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fY2xpZW50LT5w
YWdlKCktPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpOworICAgICAgICAgICAgUmVuZGVyVmlldyog
cmVuZGVyVmlldyA9IGRvY3VtZW50LT5yZW5kZXJWaWV3KCk7CisgICAgICAgICAgICBSZW5kZXJM
YXllckNvbXBvc2l0b3IqIGNvbXBvc2l0b3IgPSByZW5kZXJWaWV3LT5jb21wb3NpdG9yKCk7Cisg
ICAgICAgICAgICBzY3JvbGxMYXllciA9IGNvbXBvc2l0b3ItPnNjcm9sbExheWVyKCk7CisgICAg
ICAgIH0KKyAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnNldFNjcm9sbExheWVy
KHNjcm9sbExheWVyKTsKKyAgICB9CisKKyAgICBpZiAobV9sYXllclRyZWVWaWV3KSB7CisgICAg
ICAgIGlmIChtX3Jvb3RMYXllcikKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0Um9v
dExheWVyKCptX3Jvb3RMYXllcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fbGF5ZXJU
cmVlVmlldy0+Y2xlYXJSb290TGF5ZXIoKTsKKyAgICB9CisKKyAgICBJbnRSZWN0IGRhbWFnZWRS
ZWN0KDAsIDAsIG1fY2xpZW50LT52aWV3cG9ydFNpemUoKS53aWR0aCgpLCBtX2NsaWVudC0+dmll
d3BvcnRTaXplKCkuaGVpZ2h0KCkpOworICAgIGlmICghbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdBY3RpdmUgJiYgIW1fc3VwcHJlc3NJbnZhbGlkYXRpb25zKQorICAgICAgICBtX2NsaWVudC0+
d2lkZ2V0Q2xpZW50KCktPmRpZEludmFsaWRhdGVSZWN0KGRhbWFnZWRSZWN0KTsKK30KKwordm9p
ZCBQYWdlV2lkZ2V0TGF5ZXJUcmVlOjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKCkKK3sK
KyAgICBtX2xheWVyVHJlZVZpZXctPnNldE5lZWRzUmVkcmF3KCk7Cit9CisKK05vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdCogUGFnZVdpZGdldExheWVyVHJlZTo6bm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0KCkKK3sKKyAgICByZXR1cm4gbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QuZ2V0KCk7Cit9
CisKK1dlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIFBhZ2VXaWRnZXRMYXllclRyZWU6OnJvb3RHcmFw
aGljc0xheWVyKCkKK3sKKyAgICByZXR1cm4gbV9yb290R3JhcGhpY3NMYXllcjsKK30KKwordm9p
ZCBQYWdlV2lkZ2V0TGF5ZXJUcmVlOjpwYWludFJvb3RMYXllcihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQoreworICAgIGRvdWJsZSBwYWludFN0
YXJ0ID0gY3VycmVudFRpbWUoKTsKKyAgICBpZiAoIW1fY2xpZW50LT5wYWdlKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2NsaWVudC0+cGFnZSgpLT5tYWluRnJh
bWUoKS0+dmlldygpOworICAgIGlmIChjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKQorICAgICAg
ICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5zZXREZXZpY2VTY2FsZUZhY3RvcihtX2NsaWVu
dC0+cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICB2aWV3LT5wYWludENvbnRlbnRz
KCZjb250ZXh0LCBjb250ZW50UmVjdCk7CisgICAgZG91YmxlIHBhaW50RW5kID0gY3VycmVudFRp
bWUoKTsKKyAgICBkb3VibGUgcGl4ZWxzUGVyU2VjID0gKGNvbnRlbnRSZWN0LndpZHRoKCkgKiBj
b250ZW50UmVjdC5oZWlnaHQoKSkgLyAocGFpbnRFbmQgLSBwYWludFN0YXJ0KTsKKyAgICBXZWJL
aXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmhpc3RvZ3JhbUN1c3RvbUNvdW50cygiUmVuZGVyZXI0
LkFjY2VsUm9vdFBhaW50RHVyYXRpb25NUyIsIChwYWludEVuZCAtIHBhaW50U3RhcnQpICogMTAw
MCwgMCwgMTIwLCAzMCk7CisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5oaXN0b2dy
YW1DdXN0b21Db3VudHMoIlJlbmRlcmVyNC5BY2NlbFJvb3RQYWludE1lZ2FwaXhQZXJTZWNvbmQi
LCBwaXhlbHNQZXJTZWMgLyAxMDAwMDAwLCAxMCwgMjEwLCAzMCk7CisKKyAgICBXZWJDb3JlOjpD
b2xvciBkb2N1bWVudEJhY2tncm91bmRDb2xvciA9IHZpZXctPmRvY3VtZW50QmFja2dyb3VuZENv
bG9yKCk7CisgICAgaWYgKGRvY3VtZW50QmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkKKyAgICAg
ICAgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IgPSBXZWJDb3JlOjpDb2xvcjo6d2hpdGU7CisgICAg
V2ViQ29sb3Igd2ViRG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IgPSBkb2N1bWVudEJhY2tncm91bmRD
b2xvci5yZ2IoKTsKKyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0QmFja2dyb3Vu
ZENvbG9yKGRvY3VtZW50QmFja2dyb3VuZENvbG9yKTsKKyAgICBtX2xheWVyVHJlZVZpZXctPnNl
dEJhY2tncm91bmRDb2xvcih3ZWJEb2N1bWVudEJhY2tncm91bmRDb2xvcik7Cit9CisKK3ZvaWQg
UGFnZVdpZGdldExheWVyVHJlZTo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJv
b2wgYWN0aXZlKQoreworICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+aGlzdG9ncmFt
RW51bWVyYXRpb24oIkdQVS5zZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUiLCBhY3Rp
dmUgKiAyICsgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUsIDQpOworCisgICAgaWYg
KG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlID09IGFjdGl2ZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKCFhY3RpdmUpIHsKKyAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdBY3RpdmUgPSBmYWxzZTsKKyAgICAgICAgLy8gV2UgbmVlZCB0byBmaW5pc2ggYWxsIEdM
IHJlbmRlcmluZyBiZWZvcmUgc2VuZGluZyBkaWREZWFjdGl2YXRlQ29tcG9zaXRvcigpIHRvIHBy
ZXZlbnQKKyAgICAgICAgLy8gZmxpY2tlcmluZyB3aGVuIGNvbXBvc2l0aW5nIHR1cm5zIG9mZi4g
VGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBpZiB3ZSdyZSBub3QgaW4KKyAgICAgICAgLy8gZm9yY2Ut
Y29tcG9zaXRpbmctbW9kZS4KKyAgICAgICAgaWYgKG1fbGF5ZXJUcmVlVmlldyAmJiAhbV9jbGll
bnQtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+Zm9yY2VDb21wb3NpdGluZ01vZGUoKSkKKyAgICAgICAg
ICAgIG1fbGF5ZXJUcmVlVmlldy0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7CisgICAgICAgIG1fY2xp
ZW50LT53aWRnZXRDbGllbnQoKS0+ZGlkRGVhY3RpdmF0ZUNvbXBvc2l0b3IoKTsKKyAgICAgICAg
aWYgKCFtX2xheWVyVHJlZVZpZXdDb21taXRzRGVmZXJyZWQKKyAgICAgICAgICAgICYmIFdlYktp
dDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKS0+aXNUaHJlYWRpbmdF
bmFibGVkKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2xheWVyVHJlZVZpZXcpOworICAgICAg
ICAgICAgLy8gSW4gdGhyZWFkZWQgY29tcG9zaXRpbmcgbW9kZSwgZm9yY2UgY29tcG9zaXRpbmcg
bW9kZSBpcyBhbHdheXMgb24gc28gc2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGZh
bHNlKQorICAgICAgICAgICAgLy8gbWVhbnMgdGhhdCB3ZSdyZSB0cmFuc2l0aW9uaW5nIHRvIGEg
bmV3IHBhZ2UuIFN1cHByZXNzIGNvbW1pdHMgdW50aWwgV2ViS2l0IGdlbmVyYXRlcyBpbnZhbGlk
YXRpb25zIHNvCisgICAgICAgICAgICAvLyB3ZSBkb24ndCBhdHRlbXB0IHRvIHBhaW50IHRvbyBl
YXJseSBpbiB0aGUgbmV4dCBwYWdlIGxvYWQuCisgICAgICAgICAgICBtX2xheWVyVHJlZVZpZXct
PnNldERlZmVyQ29tbWl0cyh0cnVlKTsKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlVmlld0NvbW1p
dHNEZWZlcnJlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG1fbGF5ZXJUcmVl
VmlldykgeworICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSA9IHRydWU7
CisgICAgICAgIHVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0KCk7CisKKyAgICAgICAgbV9jbGllbnQt
PndpZGdldENsaWVudCgpLT5kaWRBY3RpdmF0ZUNvbXBvc2l0b3IobV9pbnB1dEhhbmRsZXJJZGVu
dGlmaWVyKTsKKyAgICB9IGVsc2UgeworICAgICAgICBUUkFDRV9FVkVOVDAoIndlYmtpdCIsICJQ
YWdlV2lkZ2V0TGF5ZXJUcmVlOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUodHJ1
ZSkiKTsKKworICAgICAgICBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncyBsYXllclRyZWVWaWV3
U2V0dGluZ3M7CisgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRp
bmcgPSBtX2NsaWVudC0+cGFnZSgpLT5zZXR0aW5ncygpLT5hY2NlbGVyYXRlZERyYXdpbmdFbmFi
bGVkKCk7CisgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5zaG93RGVidWdCb3JkZXJzID0g
bV9jbGllbnQtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+c2hvd0RlYnVnQm9yZGVycygpOworICAgICAg
ICBsYXllclRyZWVWaWV3U2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgPSBtX2NsaWVudC0+c2V0dGlu
Z3NJbXBsKCktPnNob3dGUFNDb3VudGVyKCk7CisgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5n
cy5zaG93UGxhdGZvcm1MYXllclRyZWUgPSBtX2NsaWVudC0+c2V0dGluZ3NJbXBsKCktPnNob3dQ
bGF0Zm9ybUxheWVyVHJlZSgpOworICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3Muc2hvd1Bh
aW50UmVjdHMgPSBtX2NsaWVudC0+c2V0dGluZ3NJbXBsKCktPnNob3dQYWludFJlY3RzKCk7Cisg
ICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5yZW5kZXJWU3luY0VuYWJsZWQgPSBtX2NsaWVu
dC0+c2V0dGluZ3NJbXBsKCktPnJlbmRlclZTeW5jRW5hYmxlZCgpOworICAgICAgICBsYXllclRy
ZWVWaWV3U2V0dGluZ3MucmVuZGVyVlN5bmNOb3RpZmljYXRpb25FbmFibGVkID0gbV9jbGllbnQt
PnNldHRpbmdzSW1wbCgpLT5yZW5kZXJWU3luY05vdGlmaWNhdGlvbkVuYWJsZWQoKTsKKyAgICAg
ICAgbGF5ZXJUcmVlVmlld1NldHRpbmdzLnBlclRpbGVQYWludGluZ0VuYWJsZWQgPSBtX2NsaWVu
dC0+c2V0dGluZ3NJbXBsKCktPnBlclRpbGVQYWludGluZ0VuYWJsZWQoKTsKKyAgICAgICAgbGF5
ZXJUcmVlVmlld1NldHRpbmdzLmFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCA9IG1fY2xpZW50
LT5zZXR0aW5nc0ltcGwoKS0+YWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKCk7CisgICAgICAg
IGxheWVyVHJlZVZpZXdTZXR0aW5ncy5wYWdlU2NhbGVQaW5jaFpvb21FbmFibGVkID0gbV9jbGll
bnQtPnNldHRpbmdzSW1wbCgpLT5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpOwor
ICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MucmVjb3JkUmVuZGVyaW5nU3RhdHMgPSBtX2Ns
aWVudC0+c2V0dGluZ3NJbXBsKCktPnJlY29yZFJlbmRlcmluZ1N0YXRzKCk7CisKKyAgICAgICAg
bGF5ZXJUcmVlVmlld1NldHRpbmdzLmRlZmF1bHRUaWxlU2l6ZSA9IG1fY2xpZW50LT5zZXR0aW5n
c0ltcGwoKS0+ZGVmYXVsdFRpbGVTaXplKCk7CisgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5n
cy5tYXhVbnRpbGVkTGF5ZXJTaXplID0gbV9jbGllbnQtPnNldHRpbmdzSW1wbCgpLT5tYXhVbnRp
bGVkTGF5ZXJTaXplKCk7CisKKyAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QgPSBO
b25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmNyZWF0ZSh0aGlzLCBncmFwaGljc0xheWVyRmFjdG9y
eSgpLCAhbV9jbGllbnQtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJ
bkNvbXBvc2l0b3IoKSk7CisgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRT
aG93RGVidWdCb3JkZXJzKG1fY2xpZW50LT5wYWdlKCktPnNldHRpbmdzKCktPnNob3dEZWJ1Z0Jv
cmRlcnMoKSk7CisgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRPcGFxdWUo
IWlzVHJhbnNwYXJlbnQoKSk7CisKKyAgICAgICAgbV9jbGllbnQtPndpZGdldENsaWVudCgpLT5p
bml0aWFsaXplTGF5ZXJUcmVlVmlldyhtX2NsaWVudC0+bGF5ZXJUcmVlVmlld0NsaWVudCgpLCAq
bV9yb290TGF5ZXIsIGxheWVyVHJlZVZpZXdTZXR0aW5ncyk7CisgICAgICAgIG1fbGF5ZXJUcmVl
VmlldyA9IG1fY2xpZW50LT53aWRnZXRDbGllbnQoKS0+bGF5ZXJUcmVlVmlldygpOworICAgICAg
ICBpZiAobV9sYXllclRyZWVWaWV3KSB7CisgICAgICAgICAgICBpZiAobV9jbGllbnQtPnNldHRp
bmdzSW1wbCgpLT5hcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkgJiYgbV9jbGll
bnQtPnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSAhPSAxKQorICAgICAgICAgICAgICAgIHNl
dERldmljZVNjYWxlRmFjdG9yKG1fY2xpZW50LT5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCkp
OworCisgICAgICAgICAgICBib29sIHZpc2libGUgPSBtX2NsaWVudC0+cGFnZSgpLT52aXNpYmls
aXR5U3RhdGUoKSA9PSBQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZTsKKyAgICAgICAgICAgIG1f
bGF5ZXJUcmVlVmlldy0+c2V0VmlzaWJsZSh2aXNpYmxlKTsKKyAgICAgICAgICAgIG1fbGF5ZXJU
cmVlVmlldy0+c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGlzVHJhbnNwYXJlbnQoKSk7Cisg
ICAgICAgICAgICB1cGRhdGVMYXllclRyZWVWaWV3cG9ydCgpOworICAgICAgICAgICAgbV9jbGll
bnQtPndpZGdldENsaWVudCgpLT5kaWRBY3RpdmF0ZUNvbXBvc2l0b3IobV9pbnB1dEhhbmRsZXJJ
ZGVudGlmaWVyKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT51cGRhdGVQYWdlT3ZlcmxheXMoKTsK
KyAgICAgICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0U2hvd0ZQU0NvdW50ZXIobV9jbGllbnQt
PnNob3dGUFNDb3VudGVyKCkpOworICAgICAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXRTaG93
UGFpbnRSZWN0cyhtX2NsaWVudC0+c2hvd1BhaW50UmVjdHMoKSk7CisgICAgICAgICAgICBtX2xh
eWVyVHJlZVZpZXctPnNldENvbnRpbnVvdXNQYWludGluZ0VuYWJsZWQobV9jbGllbnQtPmNvbnRp
bnVvdXNQYWludGluZ0VuYWJsZWQoKSk7CisgICAgICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0FjdGl2ZSA9IHRydWU7CisgICAgICAgICAgICBtX2NvbXBvc2l0b3JDcmVhdGlvbkZh
aWxlZCA9IGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9ub25Db21wb3Np
dGVkQ29udGVudEhvc3QuY2xlYXIoKTsKKyAgICAgICAgICAgIG1faXNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQWN0aXZlID0gZmFsc2U7CisgICAgICAgICAgICBtX2NsaWVudC0+d2lkZ2V0Q2xpZW50
KCktPmRpZERlYWN0aXZhdGVDb21wb3NpdG9yKCk7CisgICAgICAgICAgICBtX2NvbXBvc2l0b3JD
cmVhdGlvbkZhaWxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKG1fY2xpZW50
LT5wYWdlKCkpCisgICAgICAgIG1fY2xpZW50LT5wYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCkt
PnNldENsaXBzUmVwYWludHMoIW1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKTsKK30K
KworYm9vbCBQYWdlV2lkZ2V0TGF5ZXJUcmVlOjppc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3Rp
dmUoKSBjb25zdAoreworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICByZXR1
cm4gbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmU7CisjZWxzZQorICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorfQorCit2b2lkIFBhZ2VXaWRnZXRMYXllclRyZWU6OnVwZGF0ZUxheWVy
VHJlZVZpZXdwb3J0KCkKK3sKKyAgICBpZiAoIW1fY2xpZW50LT5wYWdlKCkgfHwgIW1fbm9uQ29t
cG9zaXRlZENvbnRlbnRIb3N0IHx8ICFtX2xheWVyVHJlZVZpZXcpCisgICAgICAgIHJldHVybjsK
KworICAgIEZyYW1lVmlldyogdmlldyA9IG1fY2xpZW50LT5wYWdlKCktPm1haW5GcmFtZSgpLT52
aWV3KCk7CisKKyAgICBJbnRTaXplIGxheW91dFZpZXdwb3J0U2l6ZSA9IG1fY2xpZW50LT5sYXlv
dXRWaWV3cG9ydFNpemUoKTsKKyAgICBJbnRTaXplIGRldmljZVZpZXdwb3J0U2l6ZSA9IG1fY2xp
ZW50LT52aWV3cG9ydFNpemUoKTsKKyAgICBpZiAobV9jbGllbnQtPnNldHRpbmdzSW1wbCgpLT5h
cHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpCisgICAgICAgIGRldmljZVZpZXdw
b3J0U2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3RvcigpKTsKKworICAgIG1fbm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0LT5zZXRWaWV3cG9ydChkZXZpY2VWaWV3cG9ydFNpemUsIHZpZXctPmNvbnRl
bnRzU2l6ZSgpLCB2aWV3LT5zY3JvbGxQb3NpdGlvbigpLCB2aWV3LT5zY3JvbGxPcmlnaW4oKSk7
CisKKyAgICBtX2xheWVyVHJlZVZpZXctPnNldFZpZXdwb3J0U2l6ZShsYXlvdXRWaWV3cG9ydFNp
emUsIGRldmljZVZpZXdwb3J0U2l6ZSk7CisgICAgbV9sYXllclRyZWVWaWV3LT5zZXRQYWdlU2Nh
bGVGYWN0b3JBbmRMaW1pdHMocGFnZVNjYWxlRmFjdG9yKCksIG1fY2xpZW50LT5taW5pbXVtUGFn
ZVNjYWxlRmFjdG9yKCksIG1fY2xpZW50LT5tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKCkpOworfQor
CitHcmFwaGljc0xheWVyRmFjdG9yeSogUGFnZVdpZGdldExheWVyVHJlZTo6Z3JhcGhpY3NMYXll
ckZhY3RvcnkoKSBjb25zdAoreworICAgIHJldHVybiBtX2dyYXBoaWNzTGF5ZXJGYWN0b3J5Lmdl
dCgpOworfQorCitib29sIFBhZ2VXaWRnZXRMYXllclRyZWU6OmlzVHJhY2tpbmdSZXBhaW50cygp
IGNvbnN0Cit7CisgICAgaWYgKCFtX2NsaWVudC0+cGFnZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9jbGllbnQtPnBhZ2UoKS0+bWFpbkZyYW1lKCkt
PnZpZXcoKTsKKyAgICByZXR1cm4gdmlldy0+aXNUcmFja2luZ1JlcGFpbnRzKCk7Cit9CisKK3Zv
aWQgUGFnZVdpZGdldExheWVyVHJlZTo6c2V0SXNUcmFuc3BhcmVudChib29sIGlzVHJhbnNwYXJl
bnQpCit7CisgICAgVU5VU0VEX1BBUkFNKGlzVHJhbnNwYXJlbnQpOworICAgIHJldHVybjsKK30K
KworYm9vbCBQYWdlV2lkZ2V0TGF5ZXJUcmVlOjppc1RyYW5zcGFyZW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9pc1RyYW5zcGFyZW50OworfQorCitmbG9hdCBQYWdlV2lkZ2V0TGF5ZXJUcmVl
OjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2NsaWVudC0+cGFnZSgp
KQorICAgICAgICByZXR1cm4gMTsKKworICAgIHJldHVybiBtX2NsaWVudC0+cGFnZSgpLT5kZXZp
Y2VTY2FsZUZhY3RvcigpOworfQorCit2b2lkIFBhZ2VXaWRnZXRMYXllclRyZWU6OnNldERldmlj
ZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQoreworICAgIGlmICghbV9jbGllbnQtPnBh
Z2UoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQtPnBhZ2UoKS0+c2V0RGV2aWNl
U2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3IpOworCisgICAgaWYgKG1fbGF5ZXJUcmVlVmlldyAmJiBt
X2NsaWVudC0+c2V0dGluZ3NJbXBsKCktPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0
b3IoKSkKKyAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXREZXZpY2VTY2FsZUZhY3RvcihzY2Fs
ZUZhY3Rvcik7Cit9CisKK2Zsb2F0IFBhZ2VXaWRnZXRMYXllclRyZWU6OnBhZ2VTY2FsZUZhY3Rv
cigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2NsaWVudC0+cGFnZSgpKQorICAgICAgICByZXR1cm4g
MTsKKworICAgIHJldHVybiBtX2NsaWVudC0+cGFnZSgpLT5wYWdlU2NhbGVGYWN0b3IoKTsKK30K
Kwordm9pZCBQYWdlV2lkZ2V0TGF5ZXJUcmVlOjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0
JiByZWN0KQoreworICAgIGlmIChtX2xheWVyVHJlZVZpZXdDb21taXRzRGVmZXJyZWQpIHsKKyAg
ICAgICAgLy8gSWYgd2UgcmVjZWl2ZSBhbiBpbnZhbGlkYXRpb24gZnJvbSBXZWJLaXQgd2hpbGUg
aW4gZGVmZXJyZWQgY29tbWl0IG1vZGUsCisgICAgICAgIC8vIHRoYXQgbWVhbnMgaXQncyB0aW1l
IHRvIHN0YXJ0IHByb2R1Y2luZyBmcmFtZXMgYWdhaW4gc28gdW4tZGVmZXIuCisgICAgICAgIGlm
IChtX2xheWVyVHJlZVZpZXcpCisgICAgICAgICAgICBtX2xheWVyVHJlZVZpZXctPnNldERlZmVy
Q29tbWl0cyhmYWxzZSk7CisgICAgICAgIG1fbGF5ZXJUcmVlVmlld0NvbW1pdHNEZWZlcnJlZCA9
IGZhbHNlOworICAgIH0KKyAgICBpZiAobV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUp
IHsKKyAgICAgICAgQVNTRVJUKG1fbGF5ZXJUcmVlVmlldyk7CisKKyAgICAgICAgaWYgKCFtX2Ns
aWVudC0+cGFnZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEZyYW1lVmlldyog
dmlldyA9IG1fY2xpZW50LT5wYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7CisgICAgICAgIElu
dFJlY3QgZGlydHlSZWN0ID0gdmlldy0+d2luZG93VG9Db250ZW50cyhyZWN0KTsKKyAgICAgICAg
dXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKTsKKyAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVu
dEhvc3QtPmludmFsaWRhdGVSZWN0KGRpcnR5UmVjdCk7CisgICAgfSBlbHNlIGlmIChtX2NsaWVu
dCkKKyAgICAgICAgbV9jbGllbnQtPndpZGdldENsaWVudCgpLT5kaWRJbnZhbGlkYXRlUmVjdChy
ZWN0KTsKK30KKwordm9pZCBQYWdlV2lkZ2V0TGF5ZXJUcmVlOjpkaWRSZWNyZWF0ZU91dHB1dFN1
cmZhY2UoYm9vbCBzdWNjZXNzKQoreworICAgIC8vIFN3aXRjaCBiYWNrIHRvIHNvZnR3YXJlIHJl
bmRlcmluZyBtb2RlLCBpZiBuZWNlc3NhcnkKKyAgICBpZiAoc3VjY2VzcykKKyAgICAgICAgcmV0
dXJuOworICAgIEFTU0VSVChtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk7CisgICAg
c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGZhbHNlKTsKKyAgICBtX2NvbXBvc2l0
b3JDcmVhdGlvbkZhaWxlZCA9IHRydWU7CisgICAgbV9jbGllbnQtPndpZGdldENsaWVudCgpLT5k
aWRJbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIG1fY2xpZW50LT52aWV3cG9ydFNpemUoKS53
aWR0aCgpLCBtX2NsaWVudC0+dmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpKTsKKworICAgIC8vIEZv
cmNlIGEgc3R5bGUgcmVjYWxjIHRvIHJlbW92ZSBhbGwgdGhlIGNvbXBvc2l0ZWQgbGF5ZXJzLgor
ICAgIG1fY2xpZW50LT5wYWdlKCktPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLT5zY2hlZHVsZUZv
cmNlZFN0eWxlUmVjYWxjKCk7CisKKyAgICBtX2NsaWVudC0+dXBkYXRlUGFnZU92ZXJsYXlzKCk7
CisgICAgcmV0dXJuOworfQorCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QYWdlV2lkZ2V0TGF5ZXJUcmVlLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QYWdlV2lkZ2V0TGF5ZXJUcmVlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGZiMDc0NTg5MjAyMThkYjkwMWNjYzllYzQ5YzdjMmU2YjVlMWNlMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BhZ2VXaWRnZXRMYXllclRyZWUu
aApAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGFnZVdpZGdldExheWVyVHJlZV9oCisjZGVmaW5l
IFBhZ2VXaWRnZXRMYXllclRyZWVfaAorCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3Rvcnku
aCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0LmgiCisjaW5jbHVkZSAiV2ViU2V0dGluZ3NJbXBsLmgiCisjaW5jbHVkZSAiV2ViVGV4dERp
cmVjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgUGFnZTsKK2NsYXNzIFBhZ2VQb3B1cENsaWVudDsKK2NsYXNzIFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDsKK2NsYXNzIEdyYXBoaWNzTGF5ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJMYXllcjsKK2NsYXNzIFdlYkxheWVyVHJlZVZpZXc7CitjbGFzcyBXZWJX
aWRnZXRDbGllbnQ7CitjbGFzcyBXZWJMYXllclRyZWVWaWV3Q2xpZW50OworCitjbGFzcyBQYWdl
V2lkZ2V0TGF5ZXJUcmVlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Oklu
dFNpemUgbGF5b3V0Vmlld3BvcnRTaXplKCkgPSAwOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50
U2l6ZSB2aWV3cG9ydFNpemUoKSA9IDA7CisgICAgdmlydHVhbCBXZWJDb3JlOjpQYWdlKiBwYWdl
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgV2ViV2lkZ2V0Q2xpZW50KiB3aWRnZXRDbGllbnQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBXZWJTZXR0aW5nc0ltcGwqIHNldHRpbmdzSW1wbCgp
ID0gMDsKKyAgICB2aXJ0dWFsIFdlYkxheWVyVHJlZVZpZXdDbGllbnQqIGxheWVyVHJlZVZpZXdD
bGllbnQoKSA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBtaW5pbXVtUGFnZVNjYWxlRmFjdG9yKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgbWF4aW11bVBhZ2VTY2FsZUZhY3RvcigpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvd0ZQU0NvdW50ZXIoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIHNob3dQYWludFJlY3RzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBjb250aW51b3VzUGFpbnRpbmdFbmFibGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVQYWdlT3ZlcmxheXMoKSA9IDA7Cit9OworCitjbGFzcyBQYWdlV2lkZ2V0TGF5
ZXJUcmVlIDogcHVibGljIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdERlbGVnYXRlIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShQYWdlV2lkZ2V0TGF5ZXJUcmVlKTsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKKworcHVibGljOgorICAgIFBhZ2VXaWRnZXRMYXllclRyZWUoUGFnZVdp
ZGdldExheWVyVHJlZUNsaWVudCopOworICAgIHZpcnR1YWwgflBhZ2VXaWRnZXRMYXllclRyZWUo
KSB7IH0KKworICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIHJvb3RHcmFwaGljc0xheWVyKCk7
CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAgICAKKyAgICBXZWJMYXllclRyZWVW
aWV3KiBsYXllclRyZWVWaWV3KCkgeyByZXR1cm4gbV9sYXllclRyZWVWaWV3OyB9CisgICAgYm9v
bCBhbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCk7CisgICAgdm9pZCBzZXRSb290R3JhcGhp
Y3NMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CisgICAgdm9pZCBzY2hlZHVsZUNvbXBv
c2l0aW5nTGF5ZXJTeW5jKCk7CisgICAgdm9pZCBwYWludFJvb3RMYXllcihXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb250ZW50UmVjdCk7CisgICAg
Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KiBub25Db21wb3NpdGVkQ29udGVudEhvc3QoKTsKKyAg
ICBXZWJDb3JlOjpHcmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSBj
b25zdDsKKyAgICB2b2lkIHNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sKTsK
KyAgICBib29sIGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpIGNvbnN0OworICAgIHZv
aWQgdXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKTsKKyNlbmRpZgorICAgIHZvaWQgaW52YWxpZGF0
ZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgIHZvaWQgZGlkUmVjcmVhdGVPdXRw
dXRTdXJmYWNlKGJvb2wgc3VjY2Vzcyk7CisKK3ByaXZhdGU6CisKKyAgICBib29sIGlzVHJhY2tp
bmdSZXBhaW50cygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1RyYW5zcGFyZW50KCkgY29u
c3Q7CisgICAgdmlydHVhbCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCk7CisgICAgdmlydHVhbCBmbG9h
dCBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SXNUcmFuc3Bh
cmVudChib29sIHZhbHVlKTsKKworICAgIFBhZ2VXaWRnZXRMYXllclRyZWVDbGllbnQqIG1fY2xp
ZW50OworCisgICAgLy8gV2hldGhlciB0aGUgd2VidmlldyBpcyByZW5kZXJpbmcgdHJhbnNwYXJl
bnRseS4KKyAgICBib29sIG1faXNUcmFuc3BhcmVudDsKKworICAgIGJvb2wgbV9zdXBwcmVzc0lu
dmFsaWRhdGlvbnM7CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgT3du
UHRyPE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdD4gbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3Q7
CisgICAgV2ViTGF5ZXJUcmVlVmlldyogbV9sYXllclRyZWVWaWV3OworICAgIFdlYkxheWVyKiBt
X3Jvb3RMYXllcjsKKyAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBtX3Jvb3RHcmFwaGljc0xh
eWVyOworICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmU7CisgICAgYm9v
bCBtX2xheWVyVHJlZVZpZXdDb21taXRzRGVmZXJyZWQ7CisgICAgYm9vbCBtX2NvbXBvc2l0b3JD
cmVhdGlvbkZhaWxlZDsKKyAgICBpbnQgbV9pbnB1dEhhbmRsZXJJZGVudGlmaWVyOworICAgIE93
blB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyRmFjdG9yeT4gbV9ncmFwaGljc0xheWVyRmFjdG9y
eTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQYWdl
V2lkZ2V0TGF5ZXJUcmVlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlBhZ2VQb3B1cEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFn
ZVBvcHVwSW1wbC5jcHAKaW5kZXggZWNiZGEzNzk4Y2E4ZTA5YTRkN2RjZGYzNDU3NDViYTA5Nzc2
MTU3ZS4uOTQ1MWIxZDdhMzUyOGRlYTYxYzk0NjQxMDk0MWQ2NTc2MmNlZDdmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHAKQEAgLTU3LDYg
KzU3LDE1IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiAjaWYgRU5BQkxFKFBBR0VfUE9QVVApCiAK
K2NsYXNzIEVtcHR5TGF5ZXJUcmVlVmlld0NsaWVudCA6IHB1YmxpYyBXZWJMYXllclRyZWVWaWV3
Q2xpZW50IHsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgbW9ub3Rv
bmljRnJhbWVCZWdpblRpbWUpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQo
KSBPVkVSUklERSB7IH0KKyAgICB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2ViU2l6
ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHNjYWxlRmFjdG9yKSBPVkVSUklERSB7IH0KKyAgICB2b2lk
IGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIE9WRVJSSURFIHsgfQorICAgIHZvaWQgZGlkQ29tcGxl
dGVTd2FwQnVmZmVycygpIE9WRVJSSURFIHsgfQorICAgIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUo
KSBPVkVSUklERSB7IH0KK307CisKIGNsYXNzIFBhZ2VQb3B1cENocm9tZUNsaWVudCA6IHB1Ymxp
YyBFbXB0eUNocm9tZUNsaWVudCwgcHVibGljIFdlYkNvcmU6OlBhZ2VDbGllbnRDaHJvbWl1bSB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZVBvcHVwQ2hyb21lQ2xpZW50KTsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTExMiw2ICsxMjEsMjkgQEAgcHJpdmF0ZToKICAg
ICAgICAgaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcodXBkYXRlUmVjdCwgaW1tZWRpYXRl
KTsKICAgICB9CiAKKyAgICBHcmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3Rv
cnkoKSBjb25zdCBPVkVSUklERQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcG9wdXAtPmxheWVy
VHJlZSgpLT5ncmFwaGljc0xheWVyRmFjdG9yeSgpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lKiBmcmFtZSwgR3JhcGhpY3NMYXllciogZ3JhcGhp
Y3NMYXllcikgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fcG9wdXAtPmxheWVyVHJlZSgpLT5z
ZXRSb290R3JhcGhpY3NMYXllcihncmFwaGljc0xheWVyKTsKKyAgICB9CisKKyAgICB2b2lkIHNj
aGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCkKKyAgICB7CisgICAgICAgIG1fcG9wdXAtPmxh
eWVyVHJlZSgpLT5zY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKCk7CisgICAgfQorCisgICAg
Q2hyb21lQ2xpZW50OjpDb21wb3NpdGluZ1RyaWdnZXJGbGFncyBhbGxvd2VkQ29tcG9zaXRpbmdU
cmlnZ2VycygpIGNvbnN0IE9WRVJSSURFCisgICAgeworICAgICAgICBpZiAoIW1fcG9wdXAtPmxh
eWVyVHJlZSgpLT5hbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKworICAgICAgICByZXR1cm4gVGhyZWVEVHJhbnNmb3JtVHJpZ2dlciB8IEFuaW1h
dGlvblRyaWdnZXIgfCBTY3JvbGxhYmxlSW5uZXJGcmFtZVRyaWdnZXI7CisgICAgfQorCiAgICAg
dmlydHVhbCB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAg
IG1fcG9wdXAtPndpZGdldENsaWVudCgpLT5zY2hlZHVsZUFuaW1hdGlvbigpOwpAQCAtMTYxLDcg
KzE5Myw4IEBAIGJvb2wgUGFnZVBvcHVwRmVhdHVyZXNDbGllbnQ6OmlzRW5hYmxlZChEb2N1bWVu
dCosIENvbnRleHRGZWF0dXJlczo6RmVhdHVyZVR5cGUKIC8vIFdlYlBhZ2VQb3B1cEltcGwgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCiBXZWJQYWdlUG9wdXBJbXBsOjpXZWJQYWdlUG9wdXBJbXBsKFdlYldpZGdldENsaWVu
dCogY2xpZW50KQotICAgIDogbV93aWRnZXRDbGllbnQoY2xpZW50KQorICAgIDogbV9sYXllclRy
ZWUoYWRvcHRQdHIobmV3IFBhZ2VXaWRnZXRMYXllclRyZWUodGhpcykpKQorICAgICwgbV93aWRn
ZXRDbGllbnQoY2xpZW50KQogICAgICwgbV9jbG9zaW5nKGZhbHNlKQogewogICAgIEFTU0VSVChj
bGllbnQpOwpAQCAtMzUxLDYgKzM4NCwyOSBAQCB2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OmNsb3Nl
UG9wdXAoKQogICAgIG1fcG9wdXBDbGllbnQtPmRpZENsb3NlUG9wdXAoKTsKIH0KIAorV2ViQ29y
ZTo6SW50U2l6ZSBXZWJQYWdlUG9wdXBJbXBsOjp2aWV3cG9ydFNpemUoKQoreworICAgIHJldHVy
biBzaXplKCk7Cit9CisKK1dlYkNvcmU6OkludFNpemUgV2ViUGFnZVBvcHVwSW1wbDo6bGF5b3V0
Vmlld3BvcnRTaXplKCkKK3sKKyAgICByZXR1cm4gc2l6ZSgpOworfQorCitXZWJTZXR0aW5nc0lt
cGwqIFdlYlBhZ2VQb3B1cEltcGw6OnNldHRpbmdzSW1wbCgpCit7CisgICAgaWYgKCFtX3dlYlNl
dHRpbmdzKQorICAgICAgICBtX3dlYlNldHRpbmdzID0gYWRvcHRQdHIobmV3IFdlYlNldHRpbmdz
SW1wbChtX3BhZ2UtPnNldHRpbmdzKCkpKTsKKyAgICBBU1NFUlQobV93ZWJTZXR0aW5ncyk7Cisg
ICAgcmV0dXJuIG1fd2ViU2V0dGluZ3MuZ2V0KCk7Cit9CisKK1dlYkxheWVyVHJlZVZpZXdDbGll
bnQqIFdlYlBhZ2VQb3B1cEltcGw6OmxheWVyVHJlZVZpZXdDbGllbnQoKQoreworICAgIHJldHVy
biBuZXcgRW1wdHlMYXllclRyZWVWaWV3Q2xpZW50KCk7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUo
UEFHRV9QT1BVUCkKIAogLy8gV2ViUGFnZVBvcHVwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwuaAppbmRleCBmYjk3YzdkMDFlNTNmYWZjYzZh
ZjZjZDQ2NWM5NTc3ZjFiMjVhZDM4Li5kZmVkNzFlNzkwMzgyN2ExOTU1OGFmZTNlYjdiMTFlOTNi
ZGUxNWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9w
dXBJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1w
bC5oCkBAIC0zNSw2ICszNSw3IEBACiAKICNpbmNsdWRlICJQYWdlUG9wdXAuaCIKICNpbmNsdWRl
ICJQYWdlV2lkZ2V0RGVsZWdhdGUuaCIKKyNpbmNsdWRlICJQYWdlV2lkZ2V0TGF5ZXJUcmVlLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVBvcHVwLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC01MSw2ICs1Miw3IEBAIGNsYXNzIFBhZ2VQb3B1
cENocm9tZUNsaWVudDsKIGNsYXNzIFdlYlZpZXdJbXBsOwogCiBjbGFzcyBXZWJQYWdlUG9wdXBJ
bXBsIDogcHVibGljIFdlYlBhZ2VQb3B1cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwdWJs
aWMgUGFnZVdpZGdldExheWVyVHJlZUNsaWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICBw
dWJsaWMgUGFnZVdpZGdldEV2ZW50SGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICBw
dWJsaWMgV2ViQ29yZTo6UGFnZVBvcHVwLAogICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxp
YyBSZWZDb3VudGVkPFdlYlBhZ2VQb3B1cEltcGw+IHsKQEAgLTYyLDkgKzY0LDI2IEBAIHB1Ymxp
YzoKICAgICBib29sIGluaXRpYWxpemUoV2ViVmlld0ltcGwqLCBXZWJDb3JlOjpQYWdlUG9wdXBD
bGllbnQqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBvcmlnaW5Cb3VuZHNJblJvb3RWaWV3KTsK
ICAgICBib29sIGhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRF
dmVudCYpOwogICAgIHZvaWQgY2xvc2VQb3B1cCgpOwotICAgIFdlYldpZGdldENsaWVudCogd2lk
Z2V0Q2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV93aWRnZXRDbGllbnQ7IH0KKyAgICBXZWJXaWRn
ZXRDbGllbnQqIHdpZGdldENsaWVudCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fd2lkZ2V0
Q2xpZW50OyB9CiAgICAgYm9vbCBoYXNTYW1lUG9wdXBDbGllbnQoV2ViUGFnZVBvcHVwSW1wbCog
b3RoZXIpIHsgcmV0dXJuIG90aGVyICYmIG1fcG9wdXBDbGllbnQgPT0gb3RoZXItPm1fcG9wdXBD
bGllbnQ7IH0KIAorICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFnZSogcGFnZSgpIGNvbnN0IE9WRVJS
SURFCisgICAgeworICAgICAgICByZXR1cm4gbV9wYWdlLmdldCgpOworICAgIH0KKworICAgIHZp
cnR1YWwgV2ViQ29yZTo6SW50U2l6ZSB2aWV3cG9ydFNpemUoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6OkludFNpemUgbGF5b3V0Vmlld3BvcnRTaXplKCkgT1ZFUlJJREU7CisgICAg
UGFnZVdpZGdldExheWVyVHJlZSogbGF5ZXJUcmVlKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclRy
ZWUuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIFdlYlNldHRpbmdzSW1wbCogc2V0dGluZ3NJbXBsKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJMYXllclRyZWVWaWV3Q2xpZW50KiBsYXllclRyZWVW
aWV3Q2xpZW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBmbG9hdCBtaW5pbXVtUGFnZVNjYWxl
RmFjdG9yKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMS4wOyB9CisgICAgdmlydHVhbCBmbG9h
dCBtYXhpbXVtUGFnZVNjYWxlRmFjdG9yKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMS4wOyB9
CisgICAgdmlydHVhbCBib29sIHNob3dGUFNDb3VudGVyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvd1BhaW50UmVjdHMoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjb250aW51b3VzUGFpbnRp
bmdFbmFibGVkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlUGFnZU92ZXJsYXlzKCkgT1ZFUlJJREUgeyB9CisKIHByaXZhdGU6CiAgICAg
Ly8gV2ViV2lkZ2V0IGZ1bmN0aW9ucwogICAgIHZpcnR1YWwgV2ViU2l6ZSBzaXplKCkgT1ZFUlJJ
REU7CkBAIC04OSw2ICsxMDgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaW5pdGlhbGl6ZVBhZ2Uo
KTsKICAgICB2b2lkIGRlc3RvcnlQYWdlKCk7CiAKKyAgICBPd25QdHI8UGFnZVdpZGdldExheWVy
VHJlZT4gbV9sYXllclRyZWU7CiAgICAgV2ViV2lkZ2V0Q2xpZW50KiBtX3dpZGdldENsaWVudDsK
ICAgICBXZWJSZWN0IG1fd2luZG93UmVjdEluU2NyZWVuOwogICAgIFdlYlZpZXdJbXBsKiBtX3dl
YlZpZXc7CkBAIC05Nyw2ICsxMTcsMTEgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpQYWdlUG9w
dXBDbGllbnQqIG1fcG9wdXBDbGllbnQ7CiAgICAgYm9vbCBtX2Nsb3Npbmc7CiAKKyAgICAvLyBB
biBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCB0byBtYW5pcHVsYXRlIG1fcGFnZS0+c2V0dGluZ3Mo
KSB3aXRob3V0IGxpbmtpbmcKKyAgICAvLyBhZ2FpbnN0IFdlYkNvcmUuIFRoaXMgaXMgbGF6aWx5
IGFsbG9jYXRlZCB0aGUgZmlyc3QgdGltZSBHZXRXZWJTZXR0aW5ncygpCisgICAgLy8gaXMgY2Fs
bGVkLgorICAgIE93blB0cjxXZWJTZXR0aW5nc0ltcGw+IG1fd2ViU2V0dGluZ3M7CisKICAgICBm
cmllbmQgY2xhc3MgV2ViUGFnZVBvcHVwOwogICAgIGZyaWVuZCBjbGFzcyBQYWdlUG9wdXBDaHJv
bWVDbGllbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0JlbmNobWFya1N1cHBvcnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdCZW5jaG1hcmtTdXBwb3J0SW1wbC5jcHAKaW5kZXggYTBmN2E0YjBiNmQxYTIxYWY4
MTc5NjJlN2QxMjc0ZmU3YWI5ZjgxYS4uZTliMzc4ZDJkYjlmNWMzZTIwYzQ4ZTg2NTdhZDFlNTBh
YzdlYzEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0Jl
bmNobWFya1N1cHBvcnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3QmVuY2htYXJrU3VwcG9ydEltcGwuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgV2Vi
Vmlld0JlbmNobWFya1N1cHBvcnRJbXBsOjpwYWludChQYWludENsaWVudCogcGFpbnRDbGllbnQs
IFBhaW50TW9kZSBwYWluCiAgICAgbV93ZWJWaWV3SW1wbC0+bGF5b3V0KCk7CiAgICAgaWYgKCFt
X3dlYlZpZXdJbXBsLT5pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkKICAgICAgICAg
cmV0dXJuIHNvZnR3YXJlUGFpbnQocGFpbnRDbGllbnQsIHBhaW50TW9kZSk7Ci0gICAgR3JhcGhp
Y3NMYXllciogbGF5ZXIgPSBtX3dlYlZpZXdJbXBsLT5yb290R3JhcGhpY3NMYXllcigpOworICAg
IEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbV93ZWJWaWV3SW1wbC0+bGF5ZXJUcmVlKCktPnJvb3RH
cmFwaGljc0xheWVyKCk7CiAgICAgc3dpdGNoIChwYWludE1vZGUpIHsKICAgICBjYXNlIFBhaW50
TW9kZUV2ZXJ5dGhpbmc6CiAgICAgICAgIGFjY2VsZXJhdGVkUGFpbnRVbmNsaXBwZWQocGFpbnRD
bGllbnQsICpsYXllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKaW5kZXggZjc3NjU0NmZiYjVjMGIzNjAzMjYzZGRjNjQzZjFkOGEwODEzZjU5YS4uNDQ5MGRm
NzMwZjZhNGU5MGY1ZGE3YzNkOGZjYjVjOWU1YjE4NDBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtODQsNyArODQsNiBAQAogI2luY2x1ZGUgIkxp
bmtIaWdobGlnaHQuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAi
Tm9kZVJlbmRlclN0eWxlLmgiCi0jaW5jbHVkZSAiTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Lmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBh
Z2VHcm91cExvYWREZWZlcnJlci5oIgpAQCAtNDE4LDEzICs0MTcsNiBAQCBXZWJWaWV3SW1wbDo6
V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogICAgICwgbV9pc0NhbmNlbGluZ0Z1
bGxTY3JlZW4oZmFsc2UpCiAgICAgLCBtX2JlbmNobWFya1N1cHBvcnQodGhpcykKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgLCBtX2xheWVyVHJlZVZpZXcoMCkKLSAgICAs
IG1fcm9vdExheWVyKDApCi0gICAgLCBtX3Jvb3RHcmFwaGljc0xheWVyKDApCi0gICAgLCBtX2lz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShmYWxzZSkKLSAgICAsIG1fbGF5ZXJUcmVlVmll
d0NvbW1pdHNEZWZlcnJlZChmYWxzZSkKLSAgICAsIG1fY29tcG9zaXRvckNyZWF0aW9uRmFpbGVk
KGZhbHNlKQotICAgICwgbV9yZWNyZWF0aW5nR3JhcGhpY3NDb250ZXh0KGZhbHNlKQogICAgICwg
bV9pbnB1dEhhbmRsZXJJZGVudGlmaWVyKC0xKQogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQ
RUVDSCkKQEAgLTQ1Miw2ICs0NDQsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmll
d0NsaWVudCogY2xpZW50KQogICAgICwgbV9zaG93RlBTQ291bnRlcihmYWxzZSkKICAgICAsIG1f
c2hvd1BhaW50UmVjdHMoZmFsc2UpCiAgICAgLCBtX2NvbnRpbnVvdXNQYWludGluZ0VuYWJsZWQo
ZmFsc2UpCisgICAgLCBtX2xheWVyVHJlZShhZG9wdFB0cihuZXcgUGFnZVdpZGdldExheWVyVHJl
ZSh0aGlzKSkpCiB7CiAgICAgLy8gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBkb2VzIHRoZSBzYW1l
IHRoaW5nLCBleGNlcHQgdGhleSBjYWxsIHRoZQogICAgIC8vIEtKUyBzcGVjaWZpYyB3cmFwcGVy
IGFyb3VuZCB0aGlzIG1ldGhvZC4gV2UgbmVlZCB0byBoYXZlIHRocmVhZGluZwpAQCAtNzMzLDgg
KzcyNiw4IEBAIGJvb2wgV2ViVmlld0ltcGw6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBXZWJH
ZXN0dXJlRXZlbnQmIGV2ZW50KQogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5n
Q2FuY2VsOgogICAgICAgICBpZiAobV9nZXN0dXJlQW5pbWF0aW9uKSB7CiAgICAgICAgICAgICBt
X2dlc3R1cmVBbmltYXRpb24uY2xlYXIoKTsKLSAgICAgICAgICAgIGlmIChtX2xheWVyVHJlZVZp
ZXcpCi0gICAgICAgICAgICAgICAgbV9sYXllclRyZWVWaWV3LT5kaWRTdG9wRmxpbmdpbmcoKTsK
KyAgICAgICAgICAgIGlmIChtX2NsaWVudC0+bGF5ZXJUcmVlVmlldygpKQorICAgICAgICAgICAg
ICAgIG1fY2xpZW50LT5sYXllclRyZWVWaWV3KCktPmRpZFN0b3BGbGluZ2luZygpOwogICAgICAg
ICAgICAgZXZlbnRTd2FsbG93ZWQgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpA
QCAtODQ2LDEwICs4MzksMTAgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmlt
YXRpb24oY29uc3QgSW50UG9pbnQmIHRhcmdldFBvc2l0aW9uLCBib29sIHUKICAgICAgICAgc2V0
UGFnZVNjYWxlRmFjdG9yKG5ld1NjYWxlLCBjbGFtcGVkUG9pbnQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGlmICghbV9sYXllclRyZWVWaWV3KQorICAgIGlmICghbV9jbGllbnQtPmxh
eWVyVHJlZVZpZXcoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9sYXllclRyZWVWaWV3LT5z
dGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBuZXdTY2Fs
ZSwgZHVyYXRpb25JblNlY29uZHMpOworICAgIG1fY2xpZW50LT5sYXllclRyZWVWaWV3KCktPnN0
YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKHRhcmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIG5ld1NjYWxl
LCBkdXJhdGlvbkluU2Vjb25kcyk7CiB9CiAjZW5kaWYKIApAQCAtODYwLDI3ICs4NTMsMjcgQEAg
V2ViVmlld0JlbmNobWFya1N1cHBvcnQqIFdlYlZpZXdJbXBsOjpiZW5jaG1hcmtTdXBwb3J0KCkK
IAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCBzaG93KQogewotICAg
IGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkgeworICAgIGlmIChtX2xheWVy
VHJlZS0+aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkpIHsKICAgICAgICAgVFJBQ0Vf
RVZFTlQwKCJ3ZWJraXQiLCAiV2ViVmlld0ltcGw6OnNldFNob3dGUFNDb3VudGVyIik7Ci0gICAg
ICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0U2hvd0ZQU0NvdW50ZXIoc2hvdyk7CisgICAgICAgIG1f
Y2xpZW50LT5sYXllclRyZWVWaWV3KCktPnNldFNob3dGUFNDb3VudGVyKHNob3cpOwogICAgIH0K
ICAgICBtX3Nob3dGUFNDb3VudGVyID0gc2hvdzsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0
U2hvd1BhaW50UmVjdHMoYm9vbCBzaG93KQogewotICAgIGlmIChpc0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdBY3RpdmUoKSkgeworICAgIGlmIChtX2xheWVyVHJlZS0+aXNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQWN0aXZlKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJ3ZWJraXQiLCAiV2ViVmll
d0ltcGw6OnNldFNob3dQYWludFJlY3RzIik7Ci0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0
U2hvd1BhaW50UmVjdHMoc2hvdyk7CisgICAgICAgIG1fY2xpZW50LT5sYXllclRyZWVWaWV3KCkt
PnNldFNob3dQYWludFJlY3RzKHNob3cpOwogICAgIH0KICAgICBtX3Nob3dQYWludFJlY3RzID0g
c2hvdzsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0Q29udGludW91c1BhaW50aW5nRW5hYmxl
ZChib29sIGVuYWJsZWQpCiB7Ci0gICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2
ZSgpKSB7CisgICAgaWYgKG1fbGF5ZXJUcmVlLT5pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3Rp
dmUoKSkgewogICAgICAgICBUUkFDRV9FVkVOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6c2V0
Q29udGludW91c1BhaW50aW5nRW5hYmxlZCIpOwotICAgICAgICBtX2xheWVyVHJlZVZpZXctPnNl
dENvbnRpbnVvdXNQYWludGluZ0VuYWJsZWQoZW5hYmxlZCk7CisgICAgICAgIG1fY2xpZW50LT5s
YXllclRyZWVWaWV3KCktPnNldENvbnRpbnVvdXNQYWludGluZ0VuYWJsZWQoZW5hYmxlZCk7CiAg
ICAgfQogICAgIG1fY29udGludW91c1BhaW50aW5nRW5hYmxlZCA9IGVuYWJsZWQ7CiB9CkBAIC04
OTQsOCArODg3LDggQEAgYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlS2V5RXZlbnQoY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgLy8gSGFsdCBhbiBpbi1wcm9ncmVzcyBmbGluZyBv
biBhIGtleSBldmVudC4KICAgICBpZiAobV9nZXN0dXJlQW5pbWF0aW9uKSB7CiAgICAgICAgIG1f
Z2VzdHVyZUFuaW1hdGlvbi5jbGVhcigpOwotICAgICAgICBpZiAobV9sYXllclRyZWVWaWV3KQot
ICAgICAgICAgICAgbV9sYXllclRyZWVWaWV3LT5kaWRTdG9wRmxpbmdpbmcoKTsKKyAgICAgICAg
aWYgKG1fY2xpZW50LT5sYXllclRyZWVWaWV3KCkpCisgICAgICAgICAgICBtX2NsaWVudC0+bGF5
ZXJUcmVlVmlldygpLT5kaWRTdG9wRmxpbmdpbmcoKTsKICAgICB9CiAKICAgICAvLyBQbGVhc2Ug
cmVmZXIgdG8gdGhlIGNvbW1lbnRzIGV4cGxhaW5pbmcgdGhlIG1fc3VwcHJlc3NOZXh0S2V5cHJl
c3NFdmVudApAQCAtMTc4OSw4ICsxNzgyLDggQEAgdm9pZCBXZWJWaWV3SW1wbDo6YW5pbWF0ZShk
b3VibGUpCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIC8vIEluIGNvbXBv
c2l0ZWQgbW9kZSwgd2UgYWx3YXlzIGdvIHRocm91Z2ggdGhlIGNvbXBvc2l0b3Igc28gaXQgY2Fu
IGFwcGx5CiAgICAgLy8gYXBwcm9wcmlhdGUgZmxvdy1jb250cm9sIG1lY2hhbmlzbXMuCi0gICAg
aWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpKQotICAgICAgICBtX2xheWVyVHJl
ZVZpZXctPnVwZGF0ZUFuaW1hdGlvbnMobW9ub3RvbmljRnJhbWVCZWdpblRpbWUpOworICAgIGlm
IChtX2xheWVyVHJlZS0+aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkpCisgICAgICAg
IG1fY2xpZW50LT5sYXllclRyZWVWaWV3KCktPnVwZGF0ZUFuaW1hdGlvbnMobW9ub3RvbmljRnJh
bWVCZWdpblRpbWUpOwogICAgIGVsc2UKICNlbmRpZgogICAgICAgICB1cGRhdGVBbmltYXRpb25z
KG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKTsKQEAgLTE4MDgsNyArMTgwMSw3IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OmRpZEJlZ2luRnJhbWUoKQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkQ29tcG9zaXRlKG1fcGFnZS5nZXQoKSk7CiAKICAgICBpZiAobV9jb250aW51b3VzUGFpbnRp
bmdFbmFibGVkKQotICAgICAgICBDb250aW51b3VzUGFpbnRlcjo6c2V0TmVlZHNEaXNwbGF5UmVj
dXJzaXZlKG1fcm9vdEdyYXBoaWNzTGF5ZXIsIG1fcGFnZU92ZXJsYXlzLmdldCgpKTsKKyAgICAg
ICAgQ29udGludW91c1BhaW50ZXI6OnNldE5lZWRzRGlzcGxheVJlY3Vyc2l2ZShtX2xheWVyVHJl
ZS0+cm9vdEdyYXBoaWNzTGF5ZXIoKSwgbV9wYWdlT3ZlcmxheXMuZ2V0KCkpOwogfQogCiB2b2lk
IFdlYlZpZXdJbXBsOjp1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2lu
VGltZSkKQEAgLTE4MjIsOCArMTgxNSw4IEBAIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZUFuaW1h
dGlvbnMoZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKQogICAgICAgICAgICAgc2NoZWR1
bGVBbmltYXRpb24oKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBtX2dlc3R1cmVBbmlt
YXRpb24uY2xlYXIoKTsKLSAgICAgICAgICAgIGlmIChtX2xheWVyVHJlZVZpZXcpCi0gICAgICAg
ICAgICAgICAgbV9sYXllclRyZWVWaWV3LT5kaWRTdG9wRmxpbmdpbmcoKTsKKyAgICAgICAgICAg
IGlmIChtX2NsaWVudC0+bGF5ZXJUcmVlVmlldygpKQorICAgICAgICAgICAgICAgIG1fY2xpZW50
LT5sYXllclRyZWVWaWV3KCktPmRpZFN0b3BGbGluZ2luZygpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0xODU4LDE0ICsxODUxLDIwIEBAIHZvaWQgV2ViVmlld0ltcGw6OmVudGVyRm9yY2VDb21w
b3NpdGluZ01vZGUoYm9vbCBlbnRlcikKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKK3ZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZVBhZ2VPdmVybGF5cygpCit7CisgICAgaWYg
KG1fcGFnZU92ZXJsYXlzKQorICAgICAgICBtX3BhZ2VPdmVybGF5cy0+dXBkYXRlKCk7Cit9CisK
IHZvaWQgV2ViVmlld0ltcGw6OmRvUGl4ZWxSZWFkYmFja1RvQ2FudmFzKFdlYkNhbnZhcyogY2Fu
dmFzLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIEFTU0VSVChtX2xheWVyVHJlZVZpZXcp
OworICAgIEFTU0VSVChtX2NsaWVudC0+bGF5ZXJUcmVlVmlldygpKTsKIAogICAgIFNrQml0bWFw
IHRhcmdldDsKICAgICB0YXJnZXQuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZp
ZywgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLCByZWN0LndpZHRoKCkgKiA0KTsKICAgICB0
YXJnZXQuYWxsb2NQaXhlbHMoKTsKLSAgICBtX2xheWVyVHJlZVZpZXctPmNvbXBvc2l0ZUFuZFJl
YWRiYWNrKHRhcmdldC5nZXRQaXhlbHMoKSwgcmVjdCk7CisgICAgbV9jbGllbnQtPmxheWVyVHJl
ZVZpZXcoKS0+Y29tcG9zaXRlQW5kUmVhZGJhY2sodGFyZ2V0LmdldFBpeGVscygpLCByZWN0KTsK
ICNpZiAoIVNLX1IzMl9TSElGVCAmJiBTS19CMzJfU0hJRlQgPT0gMTYpCiAgICAgLy8gVGhlIGNv
bXBvc2l0b3IgcmVhZGJhY2sgYWx3YXlzIGdpdmVzIGJhY2sgcGl4ZWxzIGluIEJHUkEgb3JkZXIs
IGJ1dCBmb3IKICAgICAvLyBleGFtcGxlIEFuZHJvaWQncyBTa2lhIHVzZXMgUkdCQSBvcmRlcmlu
ZyBzbyB0aGUgcmVkIGFuZCBibHVlIGNoYW5uZWxzCkBAIC0xODg2LDIxICsxODg1LDIxIEBAIHZv
aWQgV2ViVmlld0ltcGw6OnBhaW50KFdlYkNhbnZhcyogY2FudmFzLCBjb25zdCBXZWJSZWN0JiBy
ZWN0LCBQYWludE9wdGlvbnMgb3B0CiAgICAgQVNTRVJUKG9wdGlvbiA9PSBSZWFkYmFja0Zyb21D
b21wb3NpdG9ySWZBdmFpbGFibGUpOwogI2VuZGlmCiAKLSAgICBpZiAob3B0aW9uID09IFJlYWRi
YWNrRnJvbUNvbXBvc2l0b3JJZkF2YWlsYWJsZSAmJiBpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdB
Y3RpdmUoKSkgeworICAgIGlmIChvcHRpb24gPT0gUmVhZGJhY2tGcm9tQ29tcG9zaXRvcklmQXZh
aWxhYmxlICYmIG1fbGF5ZXJUcmVlLT5pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkg
ewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAgICAgLy8gSWYgYSBjYW52
YXMgd2FzIHBhc3NlZCBpbiwgd2UgdXNlIGl0IHRvIGdyYWIgYSBjb3B5IG9mIHRoZQogICAgICAg
ICAvLyBmcmVzaGx5LXJlbmRlcmVkIHBpeGVscy4KICAgICAgICAgaWYgKGNhbnZhcykgewogICAg
ICAgICAgICAgLy8gQ2xpcCByZWN0IHRvIHRoZSBjb25maW5lcyBvZiB0aGUgcm9vdExheWVyVGV4
dHVyZS4KICAgICAgICAgICAgIEludFJlY3QgcmVzaXplUmVjdChyZWN0KTsKLSAgICAgICAgICAg
IHJlc2l6ZVJlY3QuaW50ZXJzZWN0KEludFJlY3QoSW50UG9pbnQoMCwgMCksIG1fbGF5ZXJUcmVl
Vmlldy0+ZGV2aWNlVmlld3BvcnRTaXplKCkpKTsKKyAgICAgICAgICAgIHJlc2l6ZVJlY3QuaW50
ZXJzZWN0KEludFJlY3QoSW50UG9pbnQoMCwgMCksIG1fY2xpZW50LT5sYXllclRyZWVWaWV3KCkt
PmRldmljZVZpZXdwb3J0U2l6ZSgpKSk7CiAgICAgICAgICAgICBkb1BpeGVsUmVhZGJhY2tUb0Nh
bnZhcyhjYW52YXMsIHJlc2l6ZVJlY3QpOwogICAgICAgICB9CiAjZW5kaWYKICAgICB9IGVsc2Ug
ewogICAgICAgICBGcmFtZVZpZXcqIHZpZXcgPSBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7
CiAgICAgICAgIFBhaW50QmVoYXZpb3Igb2xkUGFpbnRCZWhhdmlvciA9IHZpZXctPnBhaW50QmVo
YXZpb3IoKTsKLSAgICAgICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpKSB7
CisgICAgICAgIGlmIChtX2xheWVyVHJlZS0+aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZl
KCkpIHsKICAgICAgICAgICAgIEFTU0VSVChvcHRpb24gPT0gRm9yY2VTb2Z0d2FyZVJlbmRlcmlu
Z0FuZElnbm9yZUdQVVJlc2lkZW50Q29udGVudCk7ICAgICAgICAgICAgCiAgICAgICAgICAgICB2
aWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9yRmxh
dHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKICAgICAgICAgfQpAQCAtMTkxMiw3ICsxOTExLDcgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6cGFpbnQoV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJlY3Qm
IHJlY3QsIFBhaW50T3B0aW9ucyBvcHQKICAgICAgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVu
dCgpLT5oaXN0b2dyYW1DdXN0b21Db3VudHMoIlJlbmRlcmVyNC5Tb2Z0d2FyZVBhaW50RHVyYXRp
b25NUyIsIChwYWludEVuZCAtIHBhaW50U3RhcnQpICogMTAwMCwgMCwgMTIwLCAzMCk7CiAgICAg
ICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+aGlzdG9ncmFtQ3VzdG9tQ291bnRzKCJS
ZW5kZXJlcjQuU29mdHdhcmVQYWludE1lZ2FwaXhQZXJTZWNvbmQiLCBwaXhlbHNQZXJTZWMgLyAx
MDAwMDAwLCAxMCwgMjEwLCAzMCk7CiAKLSAgICAgICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0FjdGl2ZSgpKSB7CisgICAgICAgIGlmIChtX2xheWVyVHJlZS0+aXNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQWN0aXZlKCkpIHsKICAgICAgICAgICAgIEFTU0VSVChvcHRpb24gPT0gRm9yY2VT
b2Z0d2FyZVJlbmRlcmluZ0FuZElnbm9yZUdQVVJlc2lkZW50Q29udGVudCk7ICAgICAgICAgICAg
CiAgICAgICAgICAgICB2aWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IpOwog
ICAgICAgICB9CkBAIC0xOTQxLDEzICsxOTQwLDEzIEBAIHZvaWQgV2ViVmlld0ltcGw6OmNvbXBv
c2l0ZShib29sKQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAo
UGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKS0+aXNUaHJlYWRpbmdFbmFi
bGVkKCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0TmVlZHNSZWRyYXcoKTsKKyAgICAg
ICAgbV9jbGllbnQtPmxheWVyVHJlZVZpZXcoKS0+c2V0TmVlZHNSZWRyYXcoKTsKICAgICBlbHNl
IHsKLSAgICAgICAgQVNTRVJUKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpKTsKKyAg
ICAgICAgQVNTRVJUKG1fbGF5ZXJUcmVlLT5pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUo
KSk7CiAgICAgICAgIGlmICghcGFnZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IG1fbGF5ZXJUcmVlVmlldy0+Y29tcG9zaXRlKCk7CisgICAgICAgIG1fY2xpZW50LT5sYXllclRy
ZWVWaWV3KCktPmNvbXBvc2l0ZSgpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMTk1NSw4ICsxOTU0
LDggQEAgdm9pZCBXZWJWaWV3SW1wbDo6Y29tcG9zaXRlKGJvb2wpCiB2b2lkIFdlYlZpZXdJbXBs
OjpzZXROZWVkc1JlZHJhdygpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQot
ICAgIGlmIChtX2xheWVyVHJlZVZpZXcgJiYgaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZl
KCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0TmVlZHNSZWRyYXcoKTsKKyAgICBpZiAo
bV9jbGllbnQtPmxheWVyVHJlZVZpZXcoKSAmJiBtX2xheWVyVHJlZS0+aXNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQWN0aXZlKCkpCisgICAgICAgIG1fY2xpZW50LT5sYXllclRyZWVWaWV3KCktPnNl
dE5lZWRzUmVkcmF3KCk7CiAjZW5kaWYKIH0KIApAQCAtMjU0OSwxOSArMjU0OCwxMCBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpzZXRUZXh0RGlyZWN0aW9uKFdlYlRleHREaXJlY3Rpb24gZGlyZWN0aW9u
KQogICAgIH0KIH0KIAotYm9vbCBXZWJWaWV3SW1wbDo6aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5n
QWN0aXZlKCkgY29uc3QKLXsKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAg
cmV0dXJuIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlOwotI2Vsc2UKLSAgICByZXR1
cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQogdm9pZCBXZWJWaWV3SW1wbDo6d2lsbENsb3NlTGF5ZXJU
cmVlVmlldygpCiB7Ci0gICAgc2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGZhbHNl
KTsKLSAgICBtX2xheWVyVHJlZVZpZXcgPSAwOworICAgIG1fbGF5ZXJUcmVlLT5zZXRJc0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoZmFsc2UpOworICAgIG1fbGF5ZXJUcmVlLmNsZWFyKCk7
CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmRpZEFjcXVpcmVQb2ludGVyTG9jaygpCkBAIC0yOTc3
LDcgKzI5NjcsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQg
c2NhbGVGYWN0b3IsIGNvbnN0IFdlYlBvaW50JiBvcmlnaW4pCiAgICAgbV9wYWdlU2NhbGVGYWN0
b3JJc1NldCA9IHRydWU7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAg
dXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKTsKKyAgICBtX2xheWVyVHJlZS0+dXBkYXRlTGF5ZXJU
cmVlVmlld3BvcnQoKTsKICNlbmRpZgogfQogCkBAIC0yOTk2LDggKzI5ODYsOCBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikKIAogICAg
IHBhZ2UoKS0+c2V0RGV2aWNlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3IpOwogCi0gICAgaWYgKG1f
bGF5ZXJUcmVlVmlldyAmJiBtX3dlYlNldHRpbmdzLT5hcHBseURldmljZVNjYWxlRmFjdG9ySW5D
b21wb3NpdG9yKCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0RGV2aWNlU2NhbGVGYWN0
b3Ioc2NhbGVGYWN0b3IpOworICAgIGlmIChtX2NsaWVudC0+bGF5ZXJUcmVlVmlldygpICYmIG1f
d2ViU2V0dGluZ3MtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSkKKyAgICAg
ICAgbV9jbGllbnQtPmxheWVyVHJlZVZpZXcoKS0+c2V0RGV2aWNlU2NhbGVGYWN0b3Ioc2NhbGVG
YWN0b3IpOwogfQogCiBib29sIFdlYlZpZXdJbXBsOjppc0ZpeGVkTGF5b3V0TW9kZUVuYWJsZWQo
KSBjb25zdApAQCAtMzAyNSw4ICszMDE1LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZW5hYmxlRml4
ZWRMYXlvdXRNb2RlKGJvb2wgZW5hYmxlKQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQogICAgIC8vIEFsc28gbm90aWZ5IHRoZSBiYXNlIGxheWVyLCB3aGljaCBSZW5kZXJMYXll
ckNvbXBvc2l0b3IgZG9lcyBub3Qgc2VlLgotICAgIGlmIChtX25vbkNvbXBvc2l0ZWRDb250ZW50
SG9zdCkKLSAgICAgICAgdXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKTsKKyAgICBtX2xheWVyVHJl
ZS0+dXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKTsKICNlbmRpZgogfQogCkBAIC0zMTQwLDggKzMx
MjksOCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpjb21wdXRlUGFnZVNjYWxlRmFjdG9yTGltaXRzKCkK
ICAgICB9CiAgICAgbmV3UGFnZVNjYWxlRmFjdG9yID0gY2xhbXBQYWdlU2NhbGVGYWN0b3JUb0xp
bWl0cyhuZXdQYWdlU2NhbGVGYWN0b3IpOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKLSAgICBpZiAobV9sYXllclRyZWVWaWV3KQotICAgICAgICBtX2xheWVyVHJlZVZpZXctPnNl
dFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyhuZXdQYWdlU2NhbGVGYWN0b3IsIG1fbWluaW11bVBh
Z2VTY2FsZUZhY3RvciwgbV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKTsKKyAgICBpZiAobV9jbGll
bnQtPmxheWVyVHJlZVZpZXcoKSkKKyAgICAgICAgbV9jbGllbnQtPmxheWVyVHJlZVZpZXcoKS0+
c2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKG5ld1BhZ2VTY2FsZUZhY3RvciwgbV9taW5pbXVt
UGFnZVNjYWxlRmFjdG9yLCBtX21heGltdW1QYWdlU2NhbGVGYWN0b3IpOwogI2VuZGlmCiAgICAg
aWYgKG5ld1BhZ2VTY2FsZUZhY3RvciAhPSBwYWdlU2NhbGVGYWN0b3IoKSkKICAgICAgICAgc2V0
UGFnZVNjYWxlRmFjdG9yUHJlc2VydmluZ1Njcm9sbE9mZnNldChuZXdQYWdlU2NhbGVGYWN0b3Ip
OwpAQCAtMzQ1Nyw5ICszNDQ2LDkgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2VuZFJlc2l6ZUV2ZW50
QW5kUmVwYWludCgpCiAgICAgfQogCiAgICAgaWYgKG1fY2xpZW50KSB7Ci0gICAgICAgIGlmIChp
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkgeworICAgICAgICBpZiAobV9sYXllclRy
ZWUtPmlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpKSB7CiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQotICAgICAgICAgICAgdXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKTsK
KyAgICAgICAgICAgIG1fbGF5ZXJUcmVlLT51cGRhdGVMYXllclRyZWVWaWV3cG9ydCgpOwogI2Vu
ZGlmCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBXZWJSZWN0IGRhbWFnZWRSZWN0KDAs
IDAsIG1fc2l6ZS53aWR0aCwgbV9zaXplLmhlaWdodCk7CkBAIC0zNjMxLDggKzM2MjAsOCBAQCB2
b2lkIFdlYlZpZXdJbXBsOjpzZXRJc1RyYW5zcGFyZW50KGJvb2wgaXNUcmFuc3BhcmVudCkKICAg
ICAvLyBGdXR1cmUgZnJhbWVzIGNoZWNrIHRoaXMgdG8ga25vdyB3aGV0aGVyIHRvIGJlIHRyYW5z
cGFyZW50LgogICAgIG1faXNUcmFuc3BhcmVudCA9IGlzVHJhbnNwYXJlbnQ7CiAKLSAgICBpZiAo
bV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QpCi0gICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0LT5zZXRPcGFxdWUoIWlzVHJhbnNwYXJlbnQpOworICAgIGlmIChtX2xheWVyVHJlZS0+
bm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KCkpCisgICAgICAgIG1fbGF5ZXJUcmVlLT5ub25Db21w
b3NpdGVkQ29udGVudEhvc3QoKS0+c2V0T3BhcXVlKCFpc1RyYW5zcGFyZW50KTsKIH0KIAogYm9v
bCBXZWJWaWV3SW1wbDo6aXNUcmFuc3BhcmVudCgpIGNvbnN0CkBAIC0zNzM3LDggKzM3MjYsOCBA
QCB2b2lkIFdlYlZpZXdJbXBsOjpkaWRDb21taXRMb2FkKGJvb2wqIGlzTmV3TmF2aWdhdGlvbiwg
Ym9vbCBpc05hdmlnYXRpb25XaXRoaW5QYQogICAgIC8vIE1ha2Ugc3VyZSBsaW5rIGhpZ2hsaWdo
dCBmcm9tIHByZXZpb3VzIHBhZ2UgaXMgY2xlYXJlZC4KICAgICBtX2xpbmtIaWdobGlnaHQuY2xl
YXIoKTsKICAgICBtX2dlc3R1cmVBbmltYXRpb24uY2xlYXIoKTsKLSAgICBpZiAobV9sYXllclRy
ZWVWaWV3KQotICAgICAgICBtX2xheWVyVHJlZVZpZXctPmRpZFN0b3BGbGluZ2luZygpOworICAg
IGlmIChtX2NsaWVudC0+bGF5ZXJUcmVlVmlldygpKQorICAgICAgICBtX2NsaWVudC0+bGF5ZXJU
cmVlVmlldygpLT5kaWRTdG9wRmxpbmdpbmcoKTsKICAgICByZXNldFNhdmVkU2Nyb2xsQW5kU2Nh
bGVTdGF0ZSgpOwogfQogCkBAIC0zODY3LDkgKzM4NTYsOSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpy
ZW1vdmVQYWdlT3ZlcmxheShXZWJQYWdlT3ZlcmxheSogb3ZlcmxheSkKIAogdm9pZCBXZWJWaWV3
SW1wbDo6c2V0T3ZlcmxheUxheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVyKQogewot
ICAgIGlmIChtX3Jvb3RHcmFwaGljc0xheWVyKSB7Ci0gICAgICAgIGlmIChsYXllci0+cGFyZW50
KCkgIT0gbV9yb290R3JhcGhpY3NMYXllcikKLSAgICAgICAgICAgIG1fcm9vdEdyYXBoaWNzTGF5
ZXItPmFkZENoaWxkKGxheWVyKTsKKyAgICBpZiAobV9sYXllclRyZWUtPnJvb3RHcmFwaGljc0xh
eWVyKCkpIHsKKyAgICAgICAgaWYgKGxheWVyLT5wYXJlbnQoKSAhPSBtX2xheWVyVHJlZS0+cm9v
dEdyYXBoaWNzTGF5ZXIoKSkKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlLT5yb290R3JhcGhpY3NM
YXllcigpLT5hZGRDaGlsZChsYXllcik7CiAgICAgfQogfQogCkBAIC0zOTM0LDEwNSArMzkyMywx
OCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzdXBwcmVzc0ludmFsaWRhdGlvbnMoYm9vbCBlbmFibGUp
CiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi1ib29sIFdlYlZpZXdJbXBs
OjphbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkKLXsKLSAgICByZXR1cm4gIW1fY29tcG9z
aXRvckNyZWF0aW9uRmFpbGVkOwotfQotCi12b2lkIFdlYlZpZXdJbXBsOjpzZXRSb290R3JhcGhp
Y3NMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKLXsKLSAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9v
bD4gY2hhbmdlKG1fc3VwcHJlc3NJbnZhbGlkYXRpb25zLCB0cnVlKTsKLQotICAgIG1fcm9vdEdy
YXBoaWNzTGF5ZXIgPSBsYXllcjsKLSAgICBtX3Jvb3RMYXllciA9IGxheWVyID8gbGF5ZXItPnBs
YXRmb3JtTGF5ZXIoKSA6IDA7Ci0KLSAgICBzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3Rp
dmUobGF5ZXIpOwotICAgIGlmIChtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCkgewotICAgICAg
ICBHcmFwaGljc0xheWVyKiBzY3JvbGxMYXllciA9IDA7Ci0gICAgICAgIGlmIChsYXllcikgewot
ICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcGFnZSgpLT5tYWluRnJhbWUoKS0+ZG9j
dW1lbnQoKTsKLSAgICAgICAgICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBkb2N1bWVudC0+
cmVuZGVyVmlldygpOwotICAgICAgICAgICAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yKiBjb21wb3Np
dG9yID0gcmVuZGVyVmlldy0+Y29tcG9zaXRvcigpOwotICAgICAgICAgICAgc2Nyb2xsTGF5ZXIg
PSBjb21wb3NpdG9yLT5zY3JvbGxMYXllcigpOwotICAgICAgICB9Ci0gICAgICAgIG1fbm9uQ29t
cG9zaXRlZENvbnRlbnRIb3N0LT5zZXRTY3JvbGxMYXllcihzY3JvbGxMYXllcik7Ci0gICAgfQot
Ci0gICAgaWYgKG1fbGF5ZXJUcmVlVmlldykgewotICAgICAgICBpZiAobV9yb290TGF5ZXIpCi0g
ICAgICAgICAgICBtX2xheWVyVHJlZVZpZXctPnNldFJvb3RMYXllcigqbV9yb290TGF5ZXIpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2xheWVyVHJlZVZpZXctPmNsZWFyUm9vdExheWVy
KCk7Ci0gICAgfQotCi0gICAgSW50UmVjdCBkYW1hZ2VkUmVjdCgwLCAwLCBtX3NpemUud2lkdGgs
IG1fc2l6ZS5oZWlnaHQpOwotICAgIGlmICghbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3Rp
dmUgJiYgIW1fc3VwcHJlc3NJbnZhbGlkYXRpb25zKQotICAgICAgICBtX2NsaWVudC0+ZGlkSW52
YWxpZGF0ZVJlY3QoZGFtYWdlZFJlY3QpOwotfQotCi12b2lkIFdlYlZpZXdJbXBsOjpzY2hlZHVs
ZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKCkKLXsKLSAgICBtX2xheWVyVHJlZVZpZXctPnNldE5lZWRz
UmVkcmF3KCk7Ci19Ci0KIHZvaWQgV2ViVmlld0ltcGw6OnNjcm9sbFJvb3RMYXllclJlY3QoY29u
c3QgSW50U2l6ZSYsIGNvbnN0IEludFJlY3QmKQogewotICAgIHVwZGF0ZUxheWVyVHJlZVZpZXdw
b3J0KCk7Ci19Ci0KLXZvaWQgV2ViVmlld0ltcGw6OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJl
Y3QmIHJlY3QpCi17Ci0gICAgaWYgKG1fbGF5ZXJUcmVlVmlld0NvbW1pdHNEZWZlcnJlZCkgewot
ICAgICAgICAvLyBJZiB3ZSByZWNlaXZlIGFuIGludmFsaWRhdGlvbiBmcm9tIFdlYktpdCB3aGls
ZSBpbiBkZWZlcnJlZCBjb21taXQgbW9kZSwKLSAgICAgICAgLy8gdGhhdCBtZWFucyBpdCdzIHRp
bWUgdG8gc3RhcnQgcHJvZHVjaW5nIGZyYW1lcyBhZ2FpbiBzbyB1bi1kZWZlci4KLSAgICAgICAg
aWYgKG1fbGF5ZXJUcmVlVmlldykKLSAgICAgICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0RGVm
ZXJDb21taXRzKGZhbHNlKTsKLSAgICAgICAgbV9sYXllclRyZWVWaWV3Q29tbWl0c0RlZmVycmVk
ID0gZmFsc2U7Ci0gICAgfQotICAgIGlmIChtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2
ZSkgewotICAgICAgICBBU1NFUlQobV9sYXllclRyZWVWaWV3KTsKLQotICAgICAgICBpZiAoIXBh
Z2UoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBGcmFtZVZpZXcqIHZpZXcgPSBw
YWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7Ci0gICAgICAgIEludFJlY3QgZGlydHlSZWN0ID0g
dmlldy0+d2luZG93VG9Db250ZW50cyhyZWN0KTsKLSAgICAgICAgdXBkYXRlTGF5ZXJUcmVlVmll
d3BvcnQoKTsKLSAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPmludmFsaWRhdGVS
ZWN0KGRpcnR5UmVjdCk7Ci0gICAgfSBlbHNlIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGll
bnQtPmRpZEludmFsaWRhdGVSZWN0KHJlY3QpOwotfQotCi1Ob25Db21wb3NpdGVkQ29udGVudEhv
c3QqIFdlYlZpZXdJbXBsOjpub25Db21wb3NpdGVkQ29udGVudEhvc3QoKQotewotICAgIHJldHVy
biBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5nZXQoKTsKLX0KLQotdm9pZCBXZWJWaWV3SW1w
bDo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKLXsKLSAg
ICBXZWJDb3JlOjpDb2xvciBkb2N1bWVudEJhY2tncm91bmRDb2xvciA9IGNvbG9yLmlzVmFsaWQo
KSA/IGNvbG9yIDogV2ViQ29yZTo6Q29sb3I6OndoaXRlOwotICAgIFdlYkNvbG9yIHdlYkRvY3Vt
ZW50QmFja2dyb3VuZENvbG9yID0gZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IucmdiKCk7Ci0gICAg
bV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnNldEJhY2tncm91bmRDb2xvcihkb2N1bWVudEJh
Y2tncm91bmRDb2xvcik7Ci0gICAgbV9sYXllclRyZWVWaWV3LT5zZXRCYWNrZ3JvdW5kQ29sb3Io
d2ViRG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IpOwotfQotCi1XZWJDb3JlOjpHcmFwaGljc0xheWVy
RmFjdG9yeSogV2ViVmlld0ltcGw6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9jaHJvbWVDbGllbnRJbXBsLmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCk7Ci19Ci0K
LVdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIFdlYlZpZXdJbXBsOjpyb290R3JhcGhpY3NMYXllcigp
Ci17Ci0gICAgcmV0dXJuIG1fcm9vdEdyYXBoaWNzTGF5ZXI7CisgICAgbV9sYXllclRyZWUtPnVw
ZGF0ZUxheWVyVHJlZVZpZXdwb3J0KCk7CiB9CiAKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUUpCiB2b2lkIFdlYlZpZXdJbXBsOjpzY2hlZHVsZUFuaW1hdGlvbigpCiB7Ci0gICAg
aWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpKSB7CisgICAgaWYgKG1fbGF5ZXJU
cmVlLT5pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkgewogICAgICAgICBpZiAoUGxh
dGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKS0+aXNUaHJlYWRpbmdFbmFibGVk
KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2xheWVyVHJlZVZpZXcpOwotICAgICAgICAgICAg
bV9sYXllclRyZWVWaWV3LT5zZXROZWVkc0FuaW1hdGUoKTsKKyAgICAgICAgICAgIEFTU0VSVCht
X2NsaWVudC0+bGF5ZXJUcmVlVmlldygpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5sYXllclRy
ZWVWaWV3KCktPnNldE5lZWRzQW5pbWF0ZSgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IG1fY2xpZW50LT5zY2hlZHVsZUFuaW1hdGlvbigpOwogICAgIH0gZWxzZQpAQCAtNDA0MCwxMDUg
KzM5NDIsNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzY2hlZHVsZUFuaW1hdGlvbigpCiB9CiAjZW5k
aWYKIAotdm9pZCBXZWJWaWV3SW1wbDo6cGFpbnRSb290TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKLXsKLSAgICBkb3VibGUgcGFpbnRT
dGFydCA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgaWYgKCFwYWdlKCkpCi0gICAgICAgIHJldHVybjsK
LSAgICBGcmFtZVZpZXcqIHZpZXcgPSBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7Ci0gICAg
aWYgKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpCi0gICAgICAgIGNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCktPnNldERldmljZVNjYWxlRmFjdG9yKHBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KSk7Ci0gICAgdmlldy0+cGFpbnRDb250ZW50cygmY29udGV4dCwgY29udGVudFJlY3QpOwotICAg
IGRvdWJsZSBwYWludEVuZCA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgZG91YmxlIHBpeGVsc1BlclNl
YyA9IChjb250ZW50UmVjdC53aWR0aCgpICogY29udGVudFJlY3QuaGVpZ2h0KCkpIC8gKHBhaW50
RW5kIC0gcGFpbnRTdGFydCk7Ci0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5oaXN0
b2dyYW1DdXN0b21Db3VudHMoIlJlbmRlcmVyNC5BY2NlbFJvb3RQYWludER1cmF0aW9uTVMiLCAo
cGFpbnRFbmQgLSBwYWludFN0YXJ0KSAqIDEwMDAsIDAsIDEyMCwgMzApOwotICAgIFdlYktpdDo6
UGxhdGZvcm06OmN1cnJlbnQoKS0+aGlzdG9ncmFtQ3VzdG9tQ291bnRzKCJSZW5kZXJlcjQuQWNj
ZWxSb290UGFpbnRNZWdhcGl4UGVyU2Vjb25kIiwgcGl4ZWxzUGVyU2VjIC8gMTAwMDAwMCwgMTAs
IDIxMCwgMzApOwotCi0gICAgc2V0QmFja2dyb3VuZENvbG9yKHZpZXctPmRvY3VtZW50QmFja2dy
b3VuZENvbG9yKCkpOwotfQotCi12b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCi17Ci0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT5oaXN0b2dyYW1FbnVtZXJhdGlvbigiR1BVLnNldElzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0FjdGl2ZSIsIGFjdGl2ZSAqIDIgKyBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2
ZSwgNCk7Ci0KLSAgICBpZiAobV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUgPT0gYWN0
aXZlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWFjdGl2ZSkgewotICAgICAgICBtX2lz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSA9IGZhbHNlOwotICAgICAgICAvLyBXZSBuZWVk
IHRvIGZpbmlzaCBhbGwgR0wgcmVuZGVyaW5nIGJlZm9yZSBzZW5kaW5nIGRpZERlYWN0aXZhdGVD
b21wb3NpdG9yKCkgdG8gcHJldmVudAotICAgICAgICAvLyBmbGlja2VyaW5nIHdoZW4gY29tcG9z
aXRpbmcgdHVybnMgb2ZmLiBUaGlzIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIHdlJ3JlIG5vdCBpbgot
ICAgICAgICAvLyBmb3JjZS1jb21wb3NpdGluZy1tb2RlLgotICAgICAgICBpZiAobV9sYXllclRy
ZWVWaWV3ICYmICFwYWdlKCktPnNldHRpbmdzKCktPmZvcmNlQ29tcG9zaXRpbmdNb2RlKCkpCi0g
ICAgICAgICAgICBtX2xheWVyVHJlZVZpZXctPmZpbmlzaEFsbFJlbmRlcmluZygpOwotICAgICAg
ICBtX2NsaWVudC0+ZGlkRGVhY3RpdmF0ZUNvbXBvc2l0b3IoKTsKLSAgICAgICAgaWYgKCFtX2xh
eWVyVHJlZVZpZXdDb21taXRzRGVmZXJyZWQKLSAgICAgICAgICAgICYmIFdlYktpdDo6UGxhdGZv
cm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKS0+aXNUaHJlYWRpbmdFbmFibGVkKCkp
IHsKLSAgICAgICAgICAgIEFTU0VSVChtX2xheWVyVHJlZVZpZXcpOwotICAgICAgICAgICAgLy8g
SW4gdGhyZWFkZWQgY29tcG9zaXRpbmcgbW9kZSwgZm9yY2UgY29tcG9zaXRpbmcgbW9kZSBpcyBh
bHdheXMgb24gc28gc2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGZhbHNlKQotICAg
ICAgICAgICAgLy8gbWVhbnMgdGhhdCB3ZSdyZSB0cmFuc2l0aW9uaW5nIHRvIGEgbmV3IHBhZ2Uu
IFN1cHByZXNzIGNvbW1pdHMgdW50aWwgV2ViS2l0IGdlbmVyYXRlcyBpbnZhbGlkYXRpb25zIHNv
Ci0gICAgICAgICAgICAvLyB3ZSBkb24ndCBhdHRlbXB0IHRvIHBhaW50IHRvbyBlYXJseSBpbiB0
aGUgbmV4dCBwYWdlIGxvYWQuCi0gICAgICAgICAgICBtX2xheWVyVHJlZVZpZXctPnNldERlZmVy
Q29tbWl0cyh0cnVlKTsKLSAgICAgICAgICAgIG1fbGF5ZXJUcmVlVmlld0NvbW1pdHNEZWZlcnJl
ZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKG1fbGF5ZXJUcmVlVmlldykgewot
ICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSA9IHRydWU7Ci0gICAgICAg
IHVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0KCk7Ci0KLSAgICAgICAgbV9jbGllbnQtPmRpZEFjdGl2
YXRlQ29tcG9zaXRvcihtX2lucHV0SGFuZGxlcklkZW50aWZpZXIpOwotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIFRSQUNFX0VWRU5UMCgid2Via2l0IiwgIldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdBY3RpdmUodHJ1ZSkiKTsKLQotICAgICAgICBXZWJMYXllclRyZWVWaWV3
OjpTZXR0aW5ncyBsYXllclRyZWVWaWV3U2V0dGluZ3M7Ci0gICAgICAgIGxheWVyVHJlZVZpZXdT
ZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBwYWdlKCktPnNldHRpbmdzKCktPmFjY2VsZXJh
dGVkRHJhd2luZ0VuYWJsZWQoKTsKLSAgICAgICAgbGF5ZXJUcmVlVmlld1NldHRpbmdzLnNob3dE
ZWJ1Z0JvcmRlcnMgPSBwYWdlKCktPnNldHRpbmdzKCktPnNob3dEZWJ1Z0JvcmRlcnMoKTsKLSAg
ICAgICAgbGF5ZXJUcmVlVmlld1NldHRpbmdzLnNob3dGUFNDb3VudGVyID0gc2V0dGluZ3NJbXBs
KCktPnNob3dGUFNDb3VudGVyKCk7Ci0gICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5zaG93
UGxhdGZvcm1MYXllclRyZWUgPSBzZXR0aW5nc0ltcGwoKS0+c2hvd1BsYXRmb3JtTGF5ZXJUcmVl
KCk7Ci0gICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5zaG93UGFpbnRSZWN0cyA9IHNldHRp
bmdzSW1wbCgpLT5zaG93UGFpbnRSZWN0cygpOwotICAgICAgICBsYXllclRyZWVWaWV3U2V0dGlu
Z3MucmVuZGVyVlN5bmNFbmFibGVkID0gc2V0dGluZ3NJbXBsKCktPnJlbmRlclZTeW5jRW5hYmxl
ZCgpOwotICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MucmVuZGVyVlN5bmNOb3RpZmljYXRp
b25FbmFibGVkID0gc2V0dGluZ3NJbXBsKCktPnJlbmRlclZTeW5jTm90aWZpY2F0aW9uRW5hYmxl
ZCgpOwotICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MucGVyVGlsZVBhaW50aW5nRW5hYmxl
ZCA9IHNldHRpbmdzSW1wbCgpLT5wZXJUaWxlUGFpbnRpbmdFbmFibGVkKCk7Ci0gICAgICAgIGxh
eWVyVHJlZVZpZXdTZXR0aW5ncy5hY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQgPSBzZXR0aW5n
c0ltcGwoKS0+YWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKCk7Ci0gICAgICAgIGxheWVyVHJl
ZVZpZXdTZXR0aW5ncy5wYWdlU2NhbGVQaW5jaFpvb21FbmFibGVkID0gc2V0dGluZ3NJbXBsKCkt
PmFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCk7Ci0gICAgICAgIGxheWVyVHJlZVZp
ZXdTZXR0aW5ncy5yZWNvcmRSZW5kZXJpbmdTdGF0cyA9IHNldHRpbmdzSW1wbCgpLT5yZWNvcmRS
ZW5kZXJpbmdTdGF0cygpOwotCi0gICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5kZWZhdWx0
VGlsZVNpemUgPSBzZXR0aW5nc0ltcGwoKS0+ZGVmYXVsdFRpbGVTaXplKCk7Ci0gICAgICAgIGxh
eWVyVHJlZVZpZXdTZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJTaXplID0gc2V0dGluZ3NJbXBsKCkt
Pm1heFVudGlsZWRMYXllclNpemUoKTsKLQotICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50
SG9zdCA9IE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Y3JlYXRlKHRoaXMsIGdyYXBoaWNzTGF5
ZXJGYWN0b3J5KCkpOwotICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0U2hv
d0RlYnVnQm9yZGVycyhwYWdlKCktPnNldHRpbmdzKCktPnNob3dEZWJ1Z0JvcmRlcnMoKSk7Ci0g
ICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRPcGFxdWUoIWlzVHJhbnNwYXJl
bnQoKSk7Ci0KLSAgICAgICAgbV9jbGllbnQtPmluaXRpYWxpemVMYXllclRyZWVWaWV3KHRoaXMs
ICptX3Jvb3RMYXllciwgbGF5ZXJUcmVlVmlld1NldHRpbmdzKTsKLSAgICAgICAgbV9sYXllclRy
ZWVWaWV3ID0gbV9jbGllbnQtPmxheWVyVHJlZVZpZXcoKTsKLSAgICAgICAgaWYgKG1fbGF5ZXJU
cmVlVmlldykgewotICAgICAgICAgICAgaWYgKG1fd2ViU2V0dGluZ3MtPmFwcGx5RGV2aWNlU2Nh
bGVGYWN0b3JJbkNvbXBvc2l0b3IoKSAmJiBwYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCkgIT0g
MSkKLSAgICAgICAgICAgICAgICBzZXREZXZpY2VTY2FsZUZhY3RvcihwYWdlKCktPmRldmljZVNj
YWxlRmFjdG9yKCkpOwotCi0gICAgICAgICAgICBib29sIHZpc2libGUgPSBwYWdlKCktPnZpc2li
aWxpdHlTdGF0ZSgpID09IFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlOwotICAgICAgICAgICAg
bV9sYXllclRyZWVWaWV3LT5zZXRWaXNpYmxlKHZpc2libGUpOwotICAgICAgICAgICAgbV9sYXll
clRyZWVWaWV3LT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMocGFnZVNjYWxlRmFjdG9yKCks
IG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvciwgbV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKTsKLSAg
ICAgICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGlz
VHJhbnNwYXJlbnQoKSk7Ci0gICAgICAgICAgICB1cGRhdGVMYXllclRyZWVWaWV3cG9ydCgpOwot
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZEFjdGl2YXRlQ29tcG9zaXRvcihtX2lucHV0SGFuZGxl
cklkZW50aWZpZXIpOwotICAgICAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3Rp
dmUgPSB0cnVlOwotICAgICAgICAgICAgbV9jb21wb3NpdG9yQ3JlYXRpb25GYWlsZWQgPSBmYWxz
ZTsKLSAgICAgICAgICAgIGlmIChtX3BhZ2VPdmVybGF5cykKLSAgICAgICAgICAgICAgICBtX3Bh
Z2VPdmVybGF5cy0+dXBkYXRlKCk7Ci0gICAgICAgICAgICBtX2xheWVyVHJlZVZpZXctPnNldFNo
b3dGUFNDb3VudGVyKG1fc2hvd0ZQU0NvdW50ZXIpOwotICAgICAgICAgICAgbV9sYXllclRyZWVW
aWV3LT5zZXRTaG93UGFpbnRSZWN0cyhtX3Nob3dQYWludFJlY3RzKTsKLSAgICAgICAgICAgIG1f
bGF5ZXJUcmVlVmlldy0+c2V0Q29udGludW91c1BhaW50aW5nRW5hYmxlZChtX2NvbnRpbnVvdXNQ
YWludGluZ0VuYWJsZWQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9ub25Db21w
b3NpdGVkQ29udGVudEhvc3QuY2xlYXIoKTsKLSAgICAgICAgICAgIG1faXNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQWN0aXZlID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2NsaWVudC0+ZGlkRGVhY3Rp
dmF0ZUNvbXBvc2l0b3IoKTsKLSAgICAgICAgICAgIG1fY29tcG9zaXRvckNyZWF0aW9uRmFpbGVk
ID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAocGFnZSgpKQotICAgICAgICBwYWdl
KCktPm1haW5GcmFtZSgpLT52aWV3KCktPnNldENsaXBzUmVwYWludHMoIW1faXNBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQWN0aXZlKTsKLX0KLQogI2VuZGlmCiAKIFdlYkNvbXBvc2l0b3JPdXRwdXRT
dXJmYWNlKiBXZWJWaWV3SW1wbDo6Y3JlYXRlT3V0cHV0U3VyZmFjZSgpCkBAIC00MjA5LDIwICs0
MDEyLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZGlkQ29tcGxldGVTd2FwQnVmZmVycygpCiAKIHZv
aWQgV2ViVmlld0ltcGw6OmRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZShib29sIHN1Y2Nlc3MpCiB7
Ci0gICAgLy8gU3dpdGNoIGJhY2sgdG8gc29mdHdhcmUgcmVuZGVyaW5nIG1vZGUsIGlmIG5lY2Vz
c2FyeQotICAgIGlmICghc3VjY2VzcykgewotICAgICAgICBBU1NFUlQobV9pc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBY3RpdmUpOwotICAgICAgICBzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdB
Y3RpdmUoZmFsc2UpOwotICAgICAgICBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZCA9IHRydWU7
Ci0gICAgICAgIG1fY2xpZW50LT5kaWRJbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIG1fc2l6
ZS53aWR0aCwgbV9zaXplLmhlaWdodCkpOwotCi0gICAgICAgIC8vIEZvcmNlIGEgc3R5bGUgcmVj
YWxjIHRvIHJlbW92ZSBhbGwgdGhlIGNvbXBvc2l0ZWQgbGF5ZXJzLgotICAgICAgICBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLT5zY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobV9wYWdlT3ZlcmxheXMpCi0gICAgICAg
IG1fcGFnZU92ZXJsYXlzLT51cGRhdGUoKTsKKyAgICBtX2xheWVyVHJlZS0+ZGlkUmVjcmVhdGVP
dXRwdXRTdXJmYWNlKHN1Y2Nlc3MpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzY2hlZHVsZUNv
bXBvc2l0ZSgpCkBAIC00MjQyLDI3ICs0MDMyLDkgQEAgdm9pZCBXZWJWaWV3SW1wbDo6Y3JlYXRl
Rm9udEF0bGFzKFNrQml0bWFwJiBiaXRtYXAsIFdlYlJlY3QgYXNjaWlUb1JlY3RUYWJsZVsxMjgK
ICAgICBiaXRtYXAgPSBXZWJDb3JlOjpDb21wb3NpdG9ySFVERm9udEF0bGFzOjpnZW5lcmF0ZUZv
bnRBdGxhcyhhc2NpaVRvUmVjdFRhYmxlLCBmb250SGVpZ2h0KTsKIH0KIAotdm9pZCBXZWJWaWV3
SW1wbDo6dXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKQotewotICAgIGlmICghcGFnZSgpIHx8ICFt
X25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCB8fCAhbV9sYXllclRyZWVWaWV3KQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3
KCk7Ci0KLSAgICBJbnRTaXplIGxheW91dFZpZXdwb3J0U2l6ZSA9IGxheW91dFNpemUoKTsKLSAg
ICBJbnRTaXplIGRldmljZVZpZXdwb3J0U2l6ZSA9IG1fc2l6ZTsKLSAgICBpZiAobV93ZWJTZXR0
aW5ncy0+YXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpKQotICAgICAgICBkZXZp
Y2VWaWV3cG9ydFNpemUuc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0KLSAgICBtX25vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0Vmlld3BvcnQoZGV2aWNlVmlld3BvcnRTaXplLCB2aWV3
LT5jb250ZW50c1NpemUoKSwgdmlldy0+c2Nyb2xsUG9zaXRpb24oKSwgdmlldy0+c2Nyb2xsT3Jp
Z2luKCkpOwotCi0gICAgbV9sYXllclRyZWVWaWV3LT5zZXRWaWV3cG9ydFNpemUobGF5b3V0Vmll
d3BvcnRTaXplLCBkZXZpY2VWaWV3cG9ydFNpemUpOwotICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0
UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKHBhZ2VTY2FsZUZhY3RvcigpLCBtX21pbmltdW1QYWdl
U2NhbGVGYWN0b3IsIG1fbWF4aW11bVBhZ2VTY2FsZUZhY3Rvcik7Ci19Ci0KIFdlYkdyYXBoaWNz
Q29udGV4dDNEKiBXZWJWaWV3SW1wbDo6c2hhcmVkR3JhcGhpY3NDb250ZXh0M0QoKQogewotICAg
IGlmICghbV9wYWdlLT5zZXR0aW5ncygpLT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCgp
IHx8ICFhbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpCisgICAgaWYgKCFtX3BhZ2UtPnNl
dHRpbmdzKCktPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkgfHwgIW1fbGF5ZXJUcmVl
LT5hbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29u
dGV4dDNEKFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpnZXQoKS5nZXQoKSk7CkBAIC00MzE0LDkg
KzQwODYsOSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRWaXNpYmlsaXR5U3RhdGUoV2ViUGFnZVZp
c2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGUsCiAjZW5kaWYKIAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKLSAgICBpZiAobV9sYXllclRyZWVWaWV3KSB7CisgICAgaWYgKG1f
Y2xpZW50LT5sYXllclRyZWVWaWV3KCkpIHsKICAgICAgICAgYm9vbCB2aXNpYmxlID0gdmlzaWJp
bGl0eVN0YXRlID09IFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlOwotICAgICAgICBtX2xh
eWVyVHJlZVZpZXctPnNldFZpc2libGUodmlzaWJsZSk7CisgICAgICAgIG1fY2xpZW50LT5sYXll
clRyZWVWaWV3KCktPnNldFZpc2libGUodmlzaWJsZSk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC00
MzcxLDQgKzQxNDMsMjQgQEAgYm9vbCBXZWJWaWV3SW1wbDo6c2hvdWxkRGlzYWJsZURlc2t0b3BX
b3JrYXJvdW5kcygpCiAgICAgICAgIHx8IChhcmd1bWVudHMubWluWm9vbSA9PSBhcmd1bWVudHMu
bWF4Wm9vbSAmJiBhcmd1bWVudHMubWluWm9vbSAhPSBWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVB
dXRvKTsKIH0KIAorV2ViQ29yZTo6SW50U2l6ZSBXZWJWaWV3SW1wbDo6dmlld3BvcnRTaXplKCkK
K3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCitXZWJDb3JlOjpJbnRTaXplIFdlYlZpZXdJbXBs
OjpsYXlvdXRWaWV3cG9ydFNpemUoKQoreworICAgIHJldHVybiBsYXlvdXRTaXplKCk7Cit9CisK
K1dlYkxheWVyVHJlZVZpZXdDbGllbnQqIFdlYlZpZXdJbXBsOjpsYXllclRyZWVWaWV3Q2xpZW50
KCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30KKworV2ViV2lkZ2V0Q2xpZW50KiBXZWJWaWV3SW1w
bDo6d2lkZ2V0Q2xpZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQ7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKaW5kZXggMDIyNjYyOTIxYjIyNmY3MzAyODkyOGYwZmQzODNlN2E0OWQ3NTdjOS4uYmZmNTU0
YTQ0Y2U0NTQ1NDJlOTI5MDAzNGQ4N2RlYTFmYmY3OTMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC00MSwxMCArNDEsMTIgQEAKICNpbmNsdWRlICJJbnNw
ZWN0b3JDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCisjaW5jbHVkZSAiTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmgiCiAjaW5jbHVkZSAi
Tm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oIgogI2luY2x1ZGUgIlBhZ2VPdmVybGF5TGlzdC5o
IgogI2luY2x1ZGUgIlBhZ2VQb3B1cERyaXZlci5oIgogI2luY2x1ZGUgIlBhZ2VXaWRnZXREZWxl
Z2F0ZS5oIgorI2luY2x1ZGUgIlBhZ2VXaWRnZXRMYXllclRyZWUuaCIKICNpbmNsdWRlICJVc2Vy
TWVkaWFDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgogI2luY2x1ZGUg
IldlYk5hdmlnYXRpb25Qb2xpY3kuaCIKQEAgLTk0LDcgKzk2LDYgQEAgY2xhc3MgQ29udGV4dE1l
bnVDbGllbnRJbXBsOwogY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTsKIGNsYXNz
IEdlb2xvY2F0aW9uQ2xpZW50UHJveHk7CiBjbGFzcyBMaW5rSGlnaGxpZ2h0OwotY2xhc3MgTm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0OwogY2xhc3MgUHJlcmVuZGVyZXJDbGllbnRJbXBsOwogY2xh
c3MgU3BlZWNoSW5wdXRDbGllbnRJbXBsOwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25DbGllbnRQ
cm94eTsKQEAgLTEyMCw2ICsxMjEsNyBAQCBjbGFzcyBXZWJUb3VjaEV2ZW50OwogY2xhc3MgV2Vi
Vmlld0JlbmNobWFya1N1cHBvcnQ7CiAKIGNsYXNzIFdlYlZpZXdJbXBsIDogcHVibGljIFdlYlZp
ZXcKKyAgICAsIHB1YmxpYyBQYWdlV2lkZ2V0TGF5ZXJUcmVlQ2xpZW50CiAgICAgLCBwdWJsaWMg
V2ViTGF5ZXJUcmVlVmlld0NsaWVudAogICAgICwgcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlld0lt
cGw+CiAgICAgLCBwdWJsaWMgV2ViR2VzdHVyZUN1cnZlVGFyZ2V0CkBAIC0xNzQsNyArMTc2LDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3Rpb25UZXh0RGlyZWN0aW9uKFdlYlRl
eHREaXJlY3Rpb24mIHN0YXJ0LCBXZWJUZXh0RGlyZWN0aW9uJiBlbmQpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBjYXJldE9yU2VsZWN0aW9uUmFuZ2Uoc2l6ZV90KiBsb2NhdGlvbiwgc2l6ZV90
KiBsZW5ndGgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0RGlyZWN0aW9uKFdlYlRleHREaXJl
Y3Rpb24gZGlyZWN0aW9uKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQWN0aXZlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDbG9zZUxheWVyVHJlZVZp
ZXcoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpOwpAQCAtMzMxLDcgKzMzMiw2IEBA
IHB1YmxpYzoKICAgICAvLyBXZWJWaWV3SW1wbAogCiAgICAgdm9pZCBzdXBwcmVzc0ludmFsaWRh
dGlvbnMoYm9vbCBlbmFibGUpOwotICAgIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpOwogCiAgICAgdm9pZCBzZXRJZ25vcmVJbnB1dEV2ZW50cyhib29sIG5ld1Zh
bHVlKTsKICAgICBXZWJEZXZUb29sc0FnZW50UHJpdmF0ZSogZGV2VG9vbHNBZ2VudFByaXZhdGUo
KSB7IHJldHVybiBtX2RldlRvb2xzQWdlbnQuZ2V0KCk7IH0KQEAgLTUzNiwxNiArNTM2LDkgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbV9jdXJyZW50SW5wdXRFdmVudDsKICAgICB9CiAKLSAg
ICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiByb290R3JhcGhpY3NMYXllcigpOwogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBib29sIGFsbG93c0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmcoKTsKLSAgICB2b2lkIHNldFJvb3RHcmFwaGljc0xheWVyKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXIqKTsKLSAgICB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclN5bmMoKTsKICAgICB2
b2lkIHNjcm9sbFJvb3RMYXllclJlY3QoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVs
dGEsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0KTsKLSAgICB2b2lkIHBhaW50Um9v
dExheWVyKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGNvbnRlbnRSZWN0KTsKLSAgICBOb25Db21wb3NpdGVkQ29udGVudEhvc3QqIG5vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdCgpOwotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNv
cmU6OkNvbG9yJik7Ci0gICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNz
TGF5ZXJGYWN0b3J5KCkgY29uc3Q7CisgICAgUGFnZVdpZGdldExheWVyVHJlZSogbGF5ZXJUcmVl
KCkgY29uc3QgeyByZXR1cm4gbV9sYXllclRyZWUuZ2V0KCk7IH0KICNlbmRpZgogI2lmIEVOQUJM
RShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKICAgICB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCk7
CkBAIC02MTAsNyArNjAzLDE2IEBAIHB1YmxpYzoKICAgICBMaW5rSGlnaGxpZ2h0KiBsaW5rSGln
aGxpZ2h0KCkgeyByZXR1cm4gbV9saW5rSGlnaGxpZ2h0LmdldCgpOyB9CiAjZW5kaWYKIAotICAg
IFdlYlNldHRpbmdzSW1wbCogc2V0dGluZ3NJbXBsKCk7CisgICAgdmlydHVhbCBXZWJTZXR0aW5n
c0ltcGwqIHNldHRpbmdzSW1wbCgpIE9WRVJSSURFOworCisgICAgdmlydHVhbCBXZWJDb3JlOjpJ
bnRTaXplIHZpZXdwb3J0U2l6ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50
U2l6ZSBsYXlvdXRWaWV3cG9ydFNpemUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkxheWVy
VHJlZVZpZXdDbGllbnQqIGxheWVyVHJlZVZpZXdDbGllbnQoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFdlYldpZGdldENsaWVudCogd2lkZ2V0Q2xpZW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIHNob3dGUFNDb3VudGVyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9z
aG93RlBTQ291bnRlcjsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG93UGFpbnRSZWN0cygpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIG1fc2hvd1BhaW50UmVjdHM7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
Y29udGludW91c1BhaW50aW5nRW5hYmxlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fY29u
dGludW91c1BhaW50aW5nRW5hYmxlZDsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQYWdlT3Zl
cmxheXMoKSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVQYWdlU2NhbGVG
YWN0b3JMaW1pdHMoKTsKQEAgLTY2MywxMSArNjY1LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNv
bmZpZ3VyZUF1dG9SZXNpemVNb2RlKCk7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCi0gICAgdm9pZCBzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCk7Ci0g
ICAgdm9pZCBkb0NvbXBvc2l0ZSgpOwogICAgIHZvaWQgZG9QaXhlbFJlYWRiYWNrVG9DYW52YXMo
V2ViQ2FudmFzKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZvaWQgcmVhbGxvY2F0
ZVJlbmRlcmVyKCk7Ci0gICAgdm9pZCB1cGRhdGVMYXllclRyZWVWaWV3cG9ydCgpOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCkBAIC04NDYsMTYgKzg0NSw2IEBAIHByaXZh
dGU6CiAgICAgV2ViVmlld0JlbmNobWFya1N1cHBvcnRJbXBsIG1fYmVuY2htYXJrU3VwcG9ydDsK
IAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBXZWJDb3JlOjpJbnRSZWN0
IG1fcm9vdExheWVyU2Nyb2xsRGFtYWdlOwotICAgIE93blB0cjxOb25Db21wb3NpdGVkQ29udGVu
dEhvc3Q+IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OwotICAgIFdlYkxheWVyVHJlZVZpZXcq
IG1fbGF5ZXJUcmVlVmlldzsKLSAgICBXZWJMYXllciogbV9yb290TGF5ZXI7Ci0gICAgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllciogbV9yb290R3JhcGhpY3NMYXllcjsKLSAgICBib29sIG1faXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlOwotICAgIGJvb2wgbV9sYXllclRyZWVWaWV3Q29tbWl0
c0RlZmVycmVkOwotICAgIGJvb2wgbV9jb21wb3NpdG9yQ3JlYXRpb25GYWlsZWQ7Ci0gICAgLy8g
SWYgdHJ1ZSwgdGhlIGdyYXBoaWNzIGNvbnRleHQgaXMgYmVpbmcgcmVzdG9yZWQuCi0gICAgYm9v
bCBtX3JlY3JlYXRpbmdHcmFwaGljc0NvbnRleHQ7CiAgICAgaW50IG1faW5wdXRIYW5kbGVySWRl
bnRpZmllcjsKICNlbmRpZgogICAgIHN0YXRpYyBjb25zdCBXZWJJbnB1dEV2ZW50KiBtX2N1cnJl
bnRJbnB1dEV2ZW50OwpAQCAtODk2LDYgKzg4NSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3No
b3dGUFNDb3VudGVyOwogICAgIGJvb2wgbV9zaG93UGFpbnRSZWN0czsKICAgICBib29sIG1fY29u
dGludW91c1BhaW50aW5nRW5hYmxlZDsKKyAgICAKKyAgICBPd25QdHI8UGFnZVdpZGdldExheWVy
VHJlZT4gbV9sYXllclRyZWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187576</attachid>
            <date>2013-02-11 08:01:22 -0800</date>
            <delta_ts>2013-02-12 11:06:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109169-20130212005752.patch</filename>
            <type>text/plain</type>
            <size>23280</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDE4NmQxMjhhNmM0Y2UyYzRiM2RiNTNiOWRlMDM1NDEyZmI4Y2RmNGQuLjQ4OTNjNjJlNjRmZWMy
OGIxN2IxMzUxMDc2MTVlNjkyYjY2MmMxMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsODQgQEAKKzIwMTMtMDItMTEgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBQYWdlIHBvcHVwIG5lZWRzIHRvIHN1cHBvcnQg
YWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwOTE2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHA6IENoYW5n
ZWQgd2ViIHZpZXcgdG8gTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0RGVsZWdhdGUgc28gd2UgY2Fu
IHVzZSBOb25Db21wb3NpdGVkQ29udGVudEhvc3QgZm9yIFdlYlBhZ2VQb3B1cEltcGwuCisgICAg
ICAgIChXZWJLaXQ6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0KToKKyAgICAgICAgKFdlYktpdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Ojpub3Rp
ZnlGbHVzaFJlcXVpcmVkKToKKyAgICAgICAgKFdlYktpdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYktpdDo6Tm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0Ojppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAgICAqIHNyYy9Ob25Db21wb3NpdGVk
Q29udGVudEhvc3QuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChOb25Db21wb3NpdGVk
Q29udGVudEhvc3REZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5vbkNvbXBvc2l0ZWRDb250
ZW50SG9zdDo6Y3JlYXRlKToKKyAgICAgICAgKE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCk6Cisg
ICAgICAgICogc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwOgorICAgICAgICAoc3RkKToKKyAgICAg
ICAgKEdyYXBoaWNzTGF5ZXJGYWN0b3J5Q2hyb21pdW0pOgorICAgICAgICAoc3RkOjpHcmFwaGlj
c0xheWVyRmFjdG9yeUNocm9taXVtOjp+R3JhcGhpY3NMYXllckZhY3RvcnlDaHJvbWl1bSk6Cisg
ICAgICAgIChXZWJLaXQ6OkVtcHR5TGF5ZXJUcmVlVmlld0NsaWVudDo6YXBwbHlTY3JvbGxBbmRT
Y2FsZSk6CisgICAgICAgIChXZWJLaXQ6OkVtcHR5TGF5ZXJUcmVlVmlld0NsaWVudDo6ZGlkQ29t
bWl0QW5kRHJhd0ZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6RW1wdHlMYXllclRyZWVWaWV3Q2xp
ZW50OjpkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKToKKyAgICAgICAgKFdlYktpdDo6RW1wdHlMYXll
clRyZWVWaWV3Q2xpZW50OjpzY2hlZHVsZUNvbXBvc2l0ZSk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlUG9wdXBDaHJvbWVDbGllbnQ6OnNjaGVkdWxlQ29tcG9zaXRp
bmdMYXllckZsdXNoKToKKyAgICAgICAgKFBhZ2VQb3B1cENocm9tZUNsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OldlYlBhZ2VQb3B1cEltcGwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjphbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjppc1RyYWNraW5nUmVwYWludHMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpzY2hlZHVsZUNvbXBvc2l0aW5n
TGF5ZXJTeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6cGFpbnRSb290
TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpzZXRJc0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBs
Ojp1cGRhdGVMYXllclRyZWVWaWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1
cEltcGw6OnNjaGVkdWxlQW5pbWF0aW9uKToKKyAgICAgICAgKiBzcmMvV2ViUGFnZVBvcHVwSW1w
bC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpwYWdlKToKKyAgICAgICAg
KFdlYlBhZ2VQb3B1cEltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpn
cmFwaGljc0xheWVyRmFjdG9yeSk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Fj
dGl2ZSk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJLaXQpOgor
CisgICAgICAgICogc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0
KToKKyAgICAgICAgKFdlYktpdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Ojpub3RpZnlGbHVz
aFJlcXVpcmVkKToKKyAgICAgICAgKFdlYktpdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Ojpw
YWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYktpdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0
Ojppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAgICAqIHNyYy9Ob25Db21wb3NpdGVkQ29udGVu
dEhvc3QuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChOb25Db21wb3NpdGVkQ29udGVu
dEhvc3REZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dDo6Y3JlYXRlKToKKyAgICAgICAgKE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCk6CisgICAgICAg
ICogc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwOgorICAgICAgICAoc3RkKToKKyAgICAgICAgKEdy
YXBoaWNzTGF5ZXJGYWN0b3J5Q2hyb21pdW0pOgorICAgICAgICAoc3RkOjpHcmFwaGljc0xheWVy
RmFjdG9yeUNocm9taXVtOjp+R3JhcGhpY3NMYXllckZhY3RvcnlDaHJvbWl1bSk6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlUG9wdXBDaHJvbWVDbGllbnQ6OnNjaGVk
dWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKToKKyAgICAgICAgKFBhZ2VQb3B1cENocm9tZUNsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OldlYlBhZ2VQb3B1cEltcGwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjphbGxvd3NBY2NlbGVyYXRlZENv
bXBvc2l0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6c2V0Um9vdEdy
YXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjppc1RyYWNr
aW5nUmVwYWludHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpzY2hlZHVs
ZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1w
bDo6cGFpbnRSb290TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpz
ZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUG9wdXBJbXBsOjp1cGRhdGVMYXllclRyZWVWaWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQb3B1cEltcGw6OnNjaGVkdWxlQW5pbWF0aW9uKToKKyAgICAgICAgKiBzcmMvV2Vi
UGFnZVBvcHVwSW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjpwYWdl
KToKKyAgICAgICAgKFdlYlBhZ2VQb3B1cEltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UG9wdXBJbXBsOjpncmFwaGljc0xheWVyRmFjdG9yeSk6CisgICAgICAgICogc3JjL1dlYlZpZXdJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0FjdGl2ZSk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAg
IChXZWJLaXQpOgorCiAyMDEzLTAyLTA4ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbQ2hyb21pdW1dIERpc2FibGUgRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJ
TUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVk
Q29udGVudEhvc3QuY3BwCmluZGV4IDlkMDdiNDQyNzhhYzU4NDVhMjU4ZDk2Yjk4YjMwYTI2N2Iz
MmNmNDUuLmI2Y2FiMTNlMzdkYWEwNjRhNjAwNDk4MmVlOWJhODJlMWE5NGFhZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0LmNwcApAQCAtMzMsMTQgKzMzLDEzIEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNocm9t
aXVtLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCi0jaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29u
dGVudExheWVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UG9pbnQuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLU5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0KFdlYlZpZXdJbXBsKiB3ZWJWaWV3LCBXZWJDb3JlOjpHcmFwaGljc0xheWVyRmFj
dG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkpCi0gICAgOiBtX3dlYlZpZXcod2ViVmlldykKK05v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KE5vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdERlbGVnYXRlKiBkZWxlZ2F0ZSwgV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5LCBib29sIGFwcGx5UGFnZVNjYWxlRmFjdG9y
KQorICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKICAgICAsIG1fc2hvd0RlYnVnQm9yZGVycyhm
YWxzZSkKIHsKICAgICBtX2dyYXBoaWNzTGF5ZXIgPSBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpj
cmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnksIHRoaXMpOwpAQCAtNDgsNyArNDcsNyBAQCBOb25D
b21wb3NpdGVkQ29udGVudEhvc3Q6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdChXZWJWaWV3SW1w
bCogd2ViVmlldywgV2ViQ29yZQogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0TmFtZSgibm9uLWNv
bXBvc2l0ZWQgY29udGVudCIpOwogI2VuZGlmCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXREcmF3
c0NvbnRlbnQodHJ1ZSk7Ci0gICAgbV9ncmFwaGljc0xheWVyLT5zZXRBcHBsaWVzUGFnZVNjYWxl
KCFtX3dlYlZpZXctPnBhZ2UoKS0+c2V0dGluZ3MoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNv
bXBvc2l0b3IoKSk7CisgICAgbV9ncmFwaGljc0xheWVyLT5zZXRBcHBsaWVzUGFnZVNjYWxlKGFw
cGx5UGFnZVNjYWxlRmFjdG9yKTsKICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzT3Bh
cXVlKHRydWUpOwogICAgIC8vIEZJWE1FOiBSZW1vdmUgTENEIHRleHQgc2V0dGluZyBhZnRlciBp
dCBpcyBpbXBsZW1lbnRlZCBpbiBjaHJvbWl1bS4KICAgICBXZWJDb250ZW50TGF5ZXIqIGxheWVy
ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtKj4obV9ncmFwaGlj
c0xheWVyLmdldCgpKS0+Y29udGVudExheWVyKCk7CkBAIC0xNjcsNyArMTY2LDcgQEAgdm9pZCBO
b25Db21wb3NpdGVkQ29udGVudEhvc3Q6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NMYXkKIAogdm9pZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6Om5vdGlm
eUZsdXNoUmVxdWlyZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopCiB7Ci0gICAgbV93
ZWJWaWV3LT5zY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKCk7CisgICAgbV9kZWxlZ2F0ZS0+
c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYygpOwogfQogCiB2b2lkIE5vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdDo6cGFpbnRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
UGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QpCkBAIC0xNzUs
NyArMTc0LDcgQEAgdm9pZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnBhaW50Q29udGVudHMo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdlYkMKICAgICBjb250ZXh0LnRyYW5zbGF0
ZSgtbV9sYXllckFkanVzdCk7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBhZGp1c3RlZENsaXBSZWN0
ID0gY2xpcFJlY3Q7CiAgICAgYWRqdXN0ZWRDbGlwUmVjdC5tb3ZlKG1fbGF5ZXJBZGp1c3QpOwot
ICAgIG1fd2ViVmlldy0+cGFpbnRSb290TGF5ZXIoY29udGV4dCwgYWRqdXN0ZWRDbGlwUmVjdCk7
CisgICAgbV9kZWxlZ2F0ZS0+cGFpbnRSb290TGF5ZXIoY29udGV4dCwgYWRqdXN0ZWRDbGlwUmVj
dCk7CiB9CiAKIHZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzZXRTaG93RGVidWdCb3Jk
ZXJzKGJvb2wgc2hvd0RlYnVnQm9yZGVycykKQEAgLTE4Niw3ICsxODUsNyBAQCB2b2lkIE5vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0U2hvd0RlYnVnQm9yZGVycyhib29sIHNob3dEZWJ1Z0Jv
cmRlcnMpCiAKIGJvb2wgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Ojppc1RyYWNraW5nUmVwYWlu
dHMoKSBjb25zdAogewotICAgIHJldHVybiBtX3dlYlZpZXctPmlzVHJhY2tpbmdSZXBhaW50cygp
OworICAgIHJldHVybiBtX2RlbGVnYXRlLT5pc1RyYWNraW5nUmVwYWludHMoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oCmluZGV4IDY0NjdjYzRiYTQyODhhYWI2MmQ0NTE0
NDRmNTcwNDNjNGJlZTBkNGIuLjE2MjhlNTJiY2Q2NDdiNWI0ODc4NDNiMjI3MTY3ZGZmMGRiYWI1
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdC5oCkBAIC00NCwxNCArNDQsMjAgQEAgY2xhc3MgSW50UmVjdDsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJWaWV3SW1wbDsKKworY2xhc3MgTm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0RGVsZWdhdGUgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBzY2hl
ZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludFJv
b3RMYXllcihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBjb250ZW50UmVjdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1RyYWNraW5nUmVwYWludHMo
KSBjb25zdCA9IDA7Cit9OwogCiBjbGFzcyBOb25Db21wb3NpdGVkQ29udGVudEhvc3QgOiBwdWJs
aWMgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNsaWVudCB7CiBXVEZfTUFLRV9OT05DT1BZQUJMRShO
b25Db21wb3NpdGVkQ29udGVudEhvc3QpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdD4gY3JlYXRlKFdlYlZpZXdJbXBsKiB3ZWJWaWV3LCBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkpCisgICAg
c3RhdGljIFBhc3NPd25QdHI8Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0PiBjcmVhdGUoTm9uQ29t
cG9zaXRlZENvbnRlbnRIb3N0RGVsZWdhdGUqIGRlbGVnYXRlLCBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnksIGJvb2wgYXBwbHlQYWdlU2NhbGVGYWN0
b3IpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE5vbkNvbXBvc2l0ZWRDb250
ZW50SG9zdCh3ZWJWaWV3LCBncmFwaGljc0xheWVyRmFjdG9yeSkpOworICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdChkZWxlZ2F0ZSwgZ3JhcGhpY3NM
YXllckZhY3RvcnksIGFwcGx5UGFnZVNjYWxlRmFjdG9yKSk7CiAgICAgfQogICAgIHZpcnR1YWwg
fk5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCgpOwogCkBAIC02NSw3ICs3MSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcnMoYm9vbCk7CiAKIHByb3RlY3RlZDoKLSAgICBO
b25Db21wb3NpdGVkQ29udGVudEhvc3QoV2ViVmlld0ltcGwqLCBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyRmFjdG9yeSopOworICAgIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdChOb25Db21wb3NpdGVk
Q29udGVudEhvc3REZWxlZ2F0ZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJGYWN0b3J5KiwgYm9v
bCk7CiAKIHByaXZhdGU6CiAgICAgLy8gR3JhcGhpY3NMYXllckNsaWVudApAQCAtNzgsNyArODQs
NyBAQCBwcml2YXRlOgogICAgIFdlYkxheWVyKiBzY3JvbGxMYXllcigpOwogCiAgICAgT3duUHRy
PFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fZ3JhcGhpY3NMYXllcjsKLSAgICBXZWJWaWV3SW1w
bCogbV93ZWJWaWV3OworICAgIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdERlbGVnYXRlKiBtX2Rl
bGVnYXRlOwogICAgIFdlYkNvcmU6OkludFNpemUgbV92aWV3cG9ydFNpemU7CiAgICAgV2ViQ29y
ZTo6SW50U2l6ZSBtX2xheWVyQWRqdXN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwCmluZGV4IGVjYmRhMzc5OGNhOGUwOWE0ZDdkY2RmMzQ1
NzQ1YmEwOTc3NjE1N2UuLmRiZWQ4ZTE3MzQ3ZTU2ZDcxN2FkYzNhMGQ2NjkzNjFmOTk0MTZjZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3Bw
CkBAIC0zOCw5ICszOCwxMyBAQAogI2luY2x1ZGUgIkVtcHR5Q2xpZW50cy5oIgogI2luY2x1ZGUg
IkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdl
UG9wdXBDbGllbnQuaCIKICNpbmNsdWRlICJQYWdlV2lkZ2V0RGVsZWdhdGUuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiV2ViQ3Vyc29ySW5mby5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnRDb252ZXJzaW9u
LmgiCkBAIC00OSwxNCArNTMsMzkgQEAKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCiAjaW5j
bHVkZSAiV2ViVmlld0ltcGwuaCIKICNpbmNsdWRlICJXZWJXaWRnZXRDbGllbnQuaCIKKyNpbmNs
dWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclN1
cHBvcnQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwogCituYW1lc3BhY2UgeworCitjbGFzcyBHcmFwaGljc0xheWVyRmFjdG9yeUNocm9taXVtIDog
cHVibGljIEdyYXBoaWNzTGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HcmFw
aGljc0xheWVyRmFjdG9yeUNocm9taXVtKCkgeyB9CisKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
R3JhcGhpY3NMYXllcj4gY3JlYXRlR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyQ2xpZW50KiBj
bGllbnQpIE9WRVJSSURFCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bShjbGllbnQpKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZQor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogI2lmIEVOQUJMRShQQUdFX1BPUFVQKQogCitjbGFzcyBF
bXB0eUxheWVyVHJlZVZpZXdDbGllbnQgOiBwdWJsaWMgV2ViTGF5ZXJUcmVlVmlld0NsaWVudCB7
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY0ZyYW1l
QmVnaW5UaW1lKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJ
REUgeyB9CisgICAgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYlNpemUmIHNjcm9s
bERlbHRhLCBmbG9hdCBzY2FsZUZhY3RvcikgT1ZFUlJJREUgeyB9CisgICAgdm9pZCBkaWRDb21t
aXRBbmREcmF3RnJhbWUoKSBPVkVSUklERSB7IH0KKyAgICB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1
ZmZlcnMoKSBPVkVSUklERSB7IH0KKyAgICB2b2lkIHNjaGVkdWxlQ29tcG9zaXRlKCkgT1ZFUlJJ
REUgeyB9Cit9OworCiBjbGFzcyBQYWdlUG9wdXBDaHJvbWVDbGllbnQgOiBwdWJsaWMgRW1wdHlD
aHJvbWVDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpQYWdlQ2xpZW50Q2hyb21pdW0gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VQb3B1cENocm9tZUNsaWVudCk7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CkBAIC0xMTIsOSArMTQxLDMyIEBAIHByaXZhdGU6CiAgICAgICAgIGlu
dmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KHVwZGF0ZVJlY3QsIGltbWVkaWF0ZSk7CiAgICAg
fQogCisgICAgR3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgY29u
c3QgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHJldHVybiBtX3BvcHVwLT5ncmFwaGljc0xheWVy
RmFjdG9yeSgpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVy
KEZyYW1lKiBmcmFtZSwgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikgT1ZFUlJJREUKKyAg
ICB7CisgICAgICAgIG1fcG9wdXAtPnNldFJvb3RHcmFwaGljc0xheWVyKGdyYXBoaWNzTGF5ZXIp
OworICAgIH0KKworICAgIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKQorICAg
IHsKKyAgICAgICAgbV9wb3B1cC0+c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYygpOworICAg
IH0KKworICAgIENocm9tZUNsaWVudDo6Q29tcG9zaXRpbmdUcmlnZ2VyRmxhZ3MgYWxsb3dlZENv
bXBvc2l0aW5nVHJpZ2dlcnMoKSBjb25zdCBPVkVSUklERQorICAgIHsKKyAgICAgICAgaWYgKCFt
X3BvcHVwLT5hbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpCisgICAgICAgICAgICByZXR1
cm4gMDsKKworICAgICAgICByZXR1cm4gVGhyZWVEVHJhbnNmb3JtVHJpZ2dlcjsKKyAgICB9CisK
ICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKSBPVkVSUklERQogICAgIHsKLSAg
ICAgICAgbV9wb3B1cC0+d2lkZ2V0Q2xpZW50KCktPnNjaGVkdWxlQW5pbWF0aW9uKCk7CisgICAg
ICAgIG1fcG9wdXAtPnNjaGVkdWxlQW5pbWF0aW9uKCk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2
b2lkKiB3ZWJWaWV3KCkgY29uc3QgT1ZFUlJJREUKQEAgLTE2Myw2ICsyMTUsOSBAQCBib29sIFBh
Z2VQb3B1cEZlYXR1cmVzQ2xpZW50Ojppc0VuYWJsZWQoRG9jdW1lbnQqLCBDb250ZXh0RmVhdHVy
ZXM6OkZlYXR1cmVUeXBlCiBXZWJQYWdlUG9wdXBJbXBsOjpXZWJQYWdlUG9wdXBJbXBsKFdlYldp
ZGdldENsaWVudCogY2xpZW50KQogICAgIDogbV93aWRnZXRDbGllbnQoY2xpZW50KQogICAgICwg
bV9jbG9zaW5nKGZhbHNlKQorICAgICwgbV9yb290TGF5ZXIoMCkKKyAgICAsIG1faXNBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQWN0aXZlKGZhbHNlKQorICAgICwgbV9ncmFwaGljc0xheWVyRmFjdG9y
eShhZG9wdFB0cihuZXcgR3JhcGhpY3NMYXllckZhY3RvcnlDaHJvbWl1bSkpCiB7CiAgICAgQVNT
RVJUKGNsaWVudCk7CiB9CkBAIC0zNTEsNiArNDA2LDE0MyBAQCB2b2lkIFdlYlBhZ2VQb3B1cElt
cGw6OmNsb3NlUG9wdXAoKQogICAgIG1fcG9wdXBDbGllbnQtPmRpZENsb3NlUG9wdXAoKTsKIH0K
IAorYm9vbCBXZWJQYWdlUG9wdXBJbXBsOjphbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkK
K3sKKyAgICByZXR1cm4gIW1fY29tcG9zaXRvckNyZWF0aW9uRmFpbGVkOworfQorCit2b2lkIFdl
YlBhZ2VQb3B1cEltcGw6OnNldFJvb3RHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVy
KQoreworICAgIG1fcm9vdExheWVyID0gbGF5ZXIgPyBsYXllci0+cGxhdGZvcm1MYXllcigpIDog
MDsKKworICAgIHNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShsYXllcik7CisgICAg
aWYgKG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KSB7CisgICAgICAgIEdyYXBoaWNzTGF5ZXIq
IHNjcm9sbExheWVyID0gMDsKKyAgICAgICAgaWYgKGxheWVyKSB7CisgICAgICAgICAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpOworICAgICAg
ICAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGRvY3VtZW50LT5yZW5kZXJWaWV3KCk7Cisg
ICAgICAgICAgICBSZW5kZXJMYXllckNvbXBvc2l0b3IqIGNvbXBvc2l0b3IgPSByZW5kZXJWaWV3
LT5jb21wb3NpdG9yKCk7CisgICAgICAgICAgICBzY3JvbGxMYXllciA9IGNvbXBvc2l0b3ItPnNj
cm9sbExheWVyKCk7CisgICAgICAgIH0KKyAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhv
c3QtPnNldFNjcm9sbExheWVyKHNjcm9sbExheWVyKTsKKyAgICB9CisKKyAgICBpZiAobV93aWRn
ZXRDbGllbnQtPmxheWVyVHJlZVZpZXcoKSkgeworICAgICAgICBpZiAobV9yb290TGF5ZXIpCisg
ICAgICAgICAgICBtX3dpZGdldENsaWVudC0+bGF5ZXJUcmVlVmlldygpLT5zZXRSb290TGF5ZXIo
Km1fcm9vdExheWVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV93aWRnZXRDbGllbnQt
PmxheWVyVHJlZVZpZXcoKS0+Y2xlYXJSb290TGF5ZXIoKTsKKyAgICB9CisKKyAgICBJbnRSZWN0
IGRhbWFnZWRSZWN0KDAsIDAsIHNpemUoKS53aWR0aCwgc2l6ZSgpLmhlaWdodCk7CisgICAgaWYg
KCFtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSkKKyAgICAgICAgbV93aWRnZXRDbGll
bnQtPmRpZEludmFsaWRhdGVSZWN0KGRhbWFnZWRSZWN0KTsKK30KKworYm9vbCBXZWJQYWdlUG9w
dXBJbXBsOjppc1RyYWNraW5nUmVwYWludHMoKSBjb25zdAoreworICAgIGlmICghbV9wYWdlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9wYWdlLT5tYWlu
RnJhbWUoKS0+dmlldygpOworICAgIHJldHVybiB2aWV3LT5pc1RyYWNraW5nUmVwYWludHMoKTsK
K30KKwordm9pZCBXZWJQYWdlUG9wdXBJbXBsOjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5j
KCkKK3sKKyAgICBtX3dpZGdldENsaWVudC0+bGF5ZXJUcmVlVmlldygpLT5zZXROZWVkc1JlZHJh
dygpOworfQorCit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OnBhaW50Um9vdExheWVyKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCit7CisgICAgaWYg
KCFtX3BhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT52aWV3KCk7CisgICAgaWYgKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkp
CisgICAgICAgIGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPnNldERldmljZVNjYWxlRmFjdG9y
KG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgdmlldy0+cGFpbnRDb250ZW50cygm
Y29udGV4dCwgY29udGVudFJlY3QpOworCisgICAgV2ViQ29yZTo6Q29sb3IgZG9jdW1lbnRCYWNr
Z3JvdW5kQ29sb3IgPSB2aWV3LT5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpOworICAgIGlmIChk
b2N1bWVudEJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIGRvY3VtZW50QmFja2dy
b3VuZENvbG9yID0gV2ViQ29yZTo6Q29sb3I6OndoaXRlOworICAgIFdlYkNvbG9yIHdlYkRvY3Vt
ZW50QmFja2dyb3VuZENvbG9yID0gZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IucmdiKCk7CisgICAg
bV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnNldEJhY2tncm91bmRDb2xvcihkb2N1bWVudEJh
Y2tncm91bmRDb2xvcik7CisgICAgbV93aWRnZXRDbGllbnQtPmxheWVyVHJlZVZpZXcoKS0+c2V0
QmFja2dyb3VuZENvbG9yKHdlYkRvY3VtZW50QmFja2dyb3VuZENvbG9yKTsKK30KKwordm9pZCBX
ZWJQYWdlUG9wdXBJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBh
Y3RpdmUpCit7CisgICAgaWYgKG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlID09IGFj
dGl2ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFhY3RpdmUpIHsKKyAgICAgICAgbV9p
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUgPSBmYWxzZTsKKyAgICAgICAgLy8gV2UgbmVl
ZCB0byBmaW5pc2ggYWxsIEdMIHJlbmRlcmluZyBiZWZvcmUgc2VuZGluZyBkaWREZWFjdGl2YXRl
Q29tcG9zaXRvcigpIHRvIHByZXZlbnQKKyAgICAgICAgLy8gZmxpY2tlcmluZyB3aGVuIGNvbXBv
c2l0aW5nIHR1cm5zIG9mZi4gVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBpZiB3ZSdyZSBub3QgaW4K
KyAgICAgICAgLy8gZm9yY2UtY29tcG9zaXRpbmctbW9kZS4KKyAgICAgICAgaWYgKG1fd2lkZ2V0
Q2xpZW50LT5sYXllclRyZWVWaWV3KCkgJiYgIW1fcGFnZS0+c2V0dGluZ3MoKS0+Zm9yY2VDb21w
b3NpdGluZ01vZGUoKSkKKyAgICAgICAgICAgIG1fd2lkZ2V0Q2xpZW50LT5sYXllclRyZWVWaWV3
KCktPmZpbmlzaEFsbFJlbmRlcmluZygpOworICAgICAgICBtX3dpZGdldENsaWVudC0+ZGlkRGVh
Y3RpdmF0ZUNvbXBvc2l0b3IoKTsKKyAgICB9IGVsc2UgaWYgKG1fd2lkZ2V0Q2xpZW50LT5sYXll
clRyZWVWaWV3KCkpIHsKKyAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUg
PSB0cnVlOworICAgICAgICB1cGRhdGVMYXllclRyZWVWaWV3cG9ydCgpOworCisgICAgICAgIG1f
d2lkZ2V0Q2xpZW50LT5kaWRBY3RpdmF0ZUNvbXBvc2l0b3IoLTEpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0ID0gTm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0OjpjcmVhdGUodGhpcywgbV9ncmFwaGljc0xheWVyRmFjdG9yeS5nZXQoKSwgIW1fcGFnZS0+
c2V0dGluZ3MoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSk7CisgICAgICAg
IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRTaG93RGVidWdCb3JkZXJzKG1fcGFnZS0+
c2V0dGluZ3MoKS0+c2hvd0RlYnVnQm9yZGVycygpKTsKKyAgICAgICAgbV9ub25Db21wb3NpdGVk
Q29udGVudEhvc3QtPnNldE9wYXF1ZShmYWxzZSk7CisKKyAgICAgICAgbV93aWRnZXRDbGllbnQt
PmluaXRpYWxpemVMYXllclRyZWVWaWV3KG5ldyBFbXB0eUxheWVyVHJlZVZpZXdDbGllbnQoKSwg
Km1fcm9vdExheWVyLCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncygpKTsKKyAgICAgICAgaWYg
KG1fd2lkZ2V0Q2xpZW50LT5sYXllclRyZWVWaWV3KCkpIHsKKyAgICAgICAgICAgIGlmIChtX3Bh
Z2UtPnNldHRpbmdzKCktPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSAmJiBt
X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgIT0gMSkKKyAgICAgICAgICAgICAgICBtX3dpZGdl
dENsaWVudC0+bGF5ZXJUcmVlVmlldygpLT5zZXREZXZpY2VTY2FsZUZhY3RvcihtX3BhZ2UtPmRl
dmljZVNjYWxlRmFjdG9yKCkpOworCisgICAgICAgICAgICBib29sIHZpc2libGUgPSBtX3BhZ2Ut
PnZpc2liaWxpdHlTdGF0ZSgpID09IFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlOworICAgICAg
ICAgICAgbV93aWRnZXRDbGllbnQtPmxheWVyVHJlZVZpZXcoKS0+c2V0VmlzaWJsZSh2aXNpYmxl
KTsKKyAgICAgICAgICAgIG1fd2lkZ2V0Q2xpZW50LT5sYXllclRyZWVWaWV3KCktPnNldEhhc1Ry
YW5zcGFyZW50QmFja2dyb3VuZCh0cnVlKTsKKyAgICAgICAgICAgIHVwZGF0ZUxheWVyVHJlZVZp
ZXdwb3J0KCk7CisgICAgICAgICAgICBtX3dpZGdldENsaWVudC0+ZGlkQWN0aXZhdGVDb21wb3Np
dG9yKC0xKTsKKyAgICAgICAgICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlID0g
dHJ1ZTsKKyAgICAgICAgICAgIG1fY29tcG9zaXRvckNyZWF0aW9uRmFpbGVkID0gZmFsc2U7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5j
bGVhcigpOworICAgICAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUgPSBm
YWxzZTsKKyAgICAgICAgICAgIG1fd2lkZ2V0Q2xpZW50LT5kaWREZWFjdGl2YXRlQ29tcG9zaXRv
cigpOworICAgICAgICAgICAgbV9jb21wb3NpdG9yQ3JlYXRpb25GYWlsZWQgPSB0cnVlOworICAg
ICAgICB9CisgICAgfQorICAgIGlmIChtX3BhZ2UpCisgICAgICAgIG1fcGFnZS0+bWFpbkZyYW1l
KCktPnZpZXcoKS0+c2V0Q2xpcHNSZXBhaW50cyghbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdB
Y3RpdmUpOworfQorCit2b2lkIFdlYlBhZ2VQb3B1cEltcGw6OnVwZGF0ZUxheWVyVHJlZVZpZXdw
b3J0KCkKK3sKKyAgICBpZiAoIW1fcGFnZSB8fCAhbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3Qg
fHwgIW1fd2lkZ2V0Q2xpZW50LT5sYXllclRyZWVWaWV3KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEZyYW1lVmlldyogdmlldyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKKworICAg
IEludFNpemUgZGV2aWNlVmlld3BvcnRTaXplID0gc2l6ZSgpOworICAgIGlmIChtX3BhZ2UtPnNl
dHRpbmdzKCktPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSkKKyAgICAgICAg
ZGV2aWNlVmlld3BvcnRTaXplLnNjYWxlKG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisK
KyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0Vmlld3BvcnQoZGV2aWNlVmlld3Bv
cnRTaXplLCB2aWV3LT5jb250ZW50c1NpemUoKSwgdmlldy0+c2Nyb2xsUG9zaXRpb24oKSwgdmll
dy0+c2Nyb2xsT3JpZ2luKCkpOworCisgICAgbV93aWRnZXRDbGllbnQtPmxheWVyVHJlZVZpZXco
KS0+c2V0Vmlld3BvcnRTaXplKHNpemUoKSwgZGV2aWNlVmlld3BvcnRTaXplKTsKK30KKwordm9p
ZCBXZWJQYWdlUG9wdXBJbXBsOjpzY2hlZHVsZUFuaW1hdGlvbigpCit7CisgICAgaWYgKG1faXNB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKSB7CisgICAgICAgIGlmIChQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT5jb21wb3NpdG9yU3VwcG9ydCgpLT5pc1RocmVhZGluZ0VuYWJsZWQoKSkgeworICAg
ICAgICAgICAgQVNTRVJUKG1fd2lkZ2V0Q2xpZW50LT5sYXllclRyZWVWaWV3KCkpOworICAgICAg
ICAgICAgbV93aWRnZXRDbGllbnQtPmxheWVyVHJlZVZpZXcoKS0+c2V0TmVlZHNBbmltYXRlKCk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV93aWRnZXRDbGllbnQtPnNjaGVkdWxlQW5p
bWF0aW9uKCk7CisgICAgfSBlbHNlCisgICAgICAgIG1fd2lkZ2V0Q2xpZW50LT5zY2hlZHVsZUFu
aW1hdGlvbigpOworfQorCiAjZW5kaWYgLy8gRU5BQkxFKFBBR0VfUE9QVVApCiAKIC8vIFdlYlBh
Z2VQb3B1cCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJQYWdlUG9wdXBJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9w
dXBJbXBsLmgKaW5kZXggZmI5N2M3ZDAxZTUzZmFmY2M2YWY2Y2Q0NjVjOTU3N2YxYjI1YWQzOC4u
ODczZTY3NDlhNGJhZTE2MjJkZjM4MjViODdmM2U0N2RhNjI2ZWE4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwuaApAQCAtMzMsNiArMzMsOCBAQAog
CiAjaWYgRU5BQkxFKFBBR0VfUE9QVVApCiAKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyRmFjdG9y
eS5oIgorI2luY2x1ZGUgIk5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oIgogI2luY2x1ZGUgIlBh
Z2VQb3B1cC5oIgogI2luY2x1ZGUgIlBhZ2VXaWRnZXREZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIldl
YlBhZ2VQb3B1cC5oIgpAQCAtNTMsNiArNTUsNyBAQCBjbGFzcyBXZWJWaWV3SW1wbDsKIGNsYXNz
IFdlYlBhZ2VQb3B1cEltcGwgOiBwdWJsaWMgV2ViUGFnZVBvcHVwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1YmxpYyBQYWdlV2lkZ2V0RXZlbnRIYW5kbGVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1YmxpYyBXZWJDb3JlOjpQYWdlUG9wdXAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdERlbGVnYXRlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1YmxpYyBSZWZDb3VudGVkPFdlYlBhZ2VQb3B1cEltcGw+IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJQYWdlUG9wdXBJbXBsKTsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKQEAgLTY1LDYgKzY4LDExIEBAIHB1YmxpYzoKICAgICBXZWJXaWRnZXRD
bGllbnQqIHdpZGdldENsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkZ2V0Q2xpZW50OyB9CiAg
ICAgYm9vbCBoYXNTYW1lUG9wdXBDbGllbnQoV2ViUGFnZVBvcHVwSW1wbCogb3RoZXIpIHsgcmV0
dXJuIG90aGVyICYmIG1fcG9wdXBDbGllbnQgPT0gb3RoZXItPm1fcG9wdXBDbGllbnQ7IH0KIAor
ICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFnZSogcGFnZSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9wYWdlLmdldCgpOworICAgIH0KKwogcHJpdmF0ZToKICAgICAvLyBXZWJXaWRnZXQg
ZnVuY3Rpb25zCiAgICAgdmlydHVhbCBXZWJTaXplIHNpemUoKSBPVkVSUklERTsKQEAgLTgzLDEy
ICs5MSwyOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVDaGFyRXZlbnQoY29u
c3QgV2ViS2V5Ym9hcmRFdmVudCYpIE9WRVJSSURFOwogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5U
UykKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVF
dmVudCYpIE9WRVJSSURFOwotI2VuZGlmCisjZW5kaWYgICAgCisKKyAgICAvLyBOb25Db21wb3Np
dGVkQ29udGVudEhvc3REZWxlZ2F0ZSBmdW5jdGlvbnMKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVDb21wb3NpdGluZ0xheWVyU3luYygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFJvb3RMYXllcihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBjb250ZW50UmVjdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzVHJhY2tpbmdS
ZXBhaW50cygpIGNvbnN0IE9WRVJSSURFOworCisgICAgYm9vbCBhbGxvd3NBY2NlbGVyYXRlZENv
bXBvc2l0aW5nKCk7CiAKICAgICBleHBsaWNpdCBXZWJQYWdlUG9wdXBJbXBsKFdlYldpZGdldENs
aWVudCopOwogICAgIGJvb2wgaW5pdGlhbGl6ZVBhZ2UoKTsKICAgICB2b2lkIGRlc3RvcnlQYWdl
KCk7Ci0KKyAgICAKKyAgICB2b2lkIHNldFJvb3RHcmFwaGljc0xheWVyKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqKTsKKyAgICB2b2lkIHVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0KCk7CisgICAgdm9p
ZCBzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCk7CisgICAgdm9pZCBzY2hl
ZHVsZUFuaW1hdGlvbigpOworICAgIFdlYlNldHRpbmdzSW1wbCogc2V0dGluZ3NJbXBsKCk7Cisg
ICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkg
Y29uc3QgeyByZXR1cm4gbV9ncmFwaGljc0xheWVyRmFjdG9yeS5nZXQoKTsgfQorICAgIAorICAg
IE93blB0cjxOb25Db21wb3NpdGVkQ29udGVudEhvc3Q+IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0OworICAgIGJvb2wgbV9jb21wb3NpdG9yQ3JlYXRpb25GYWlsZWQ7CiAgICAgV2ViV2lkZ2V0
Q2xpZW50KiBtX3dpZGdldENsaWVudDsKICAgICBXZWJSZWN0IG1fd2luZG93UmVjdEluU2NyZWVu
OwogICAgIFdlYlZpZXdJbXBsKiBtX3dlYlZpZXc7CkBAIC05Niw2ICsxMjAsMTAgQEAgcHJpdmF0
ZToKICAgICBPd25QdHI8UGFnZVBvcHVwQ2hyb21lQ2xpZW50PiBtX2Nocm9tZUNsaWVudDsKICAg
ICBXZWJDb3JlOjpQYWdlUG9wdXBDbGllbnQqIG1fcG9wdXBDbGllbnQ7CiAgICAgYm9vbCBtX2Ns
b3Npbmc7CisgICAgCisgICAgV2ViTGF5ZXIqIG1fcm9vdExheWVyOworICAgIGJvb2wgbV9pc0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmU7CisgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJGYWN0b3J5PiBtX2dyYXBoaWNzTGF5ZXJGYWN0b3J5OwogCiAgICAgZnJpZW5kIGNsYXNz
IFdlYlBhZ2VQb3B1cDsKICAgICBmcmllbmQgY2xhc3MgUGFnZVBvcHVwQ2hyb21lQ2xpZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDc0NDk1OTcx
NjEzYWI4MThmMzY2ZTc2MmU3NGNhYTcxOGFlNzg1NTUuLmEyNDdjMDZjN2YzMGEzNjIwMTg0YmIx
NzA4NDJhODYxMGJhZmIxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKQEAgLTg0LDcgKzg0LDYgQEAKICNpbmNsdWRlICJMaW5rSGlnaGxpZ2h0LmgiCiAj
aW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5o
IgotI2luY2x1ZGUgIk5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQYWdlR3JvdXBMb2FkRGVmZXJy
ZXIuaCIKQEAgLTQxMzgsNyArNDEzNyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgbGF5ZXJUcmVlVmll
d1NldHRpbmdzLmRlZmF1bHRUaWxlU2l6ZSA9IHNldHRpbmdzSW1wbCgpLT5kZWZhdWx0VGlsZVNp
emUoKTsKICAgICAgICAgbGF5ZXJUcmVlVmlld1NldHRpbmdzLm1heFVudGlsZWRMYXllclNpemUg
PSBzZXR0aW5nc0ltcGwoKS0+bWF4VW50aWxlZExheWVyU2l6ZSgpOwogCi0gICAgICAgIG1fbm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0ID0gTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpjcmVhdGUo
dGhpcywgZ3JhcGhpY3NMYXllckZhY3RvcnkoKSk7CisgICAgICAgIG1fbm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0ID0gTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpjcmVhdGUodGhpcywgZ3JhcGhp
Y3NMYXllckZhY3RvcnkoKSwgIXBhZ2UoKS0+c2V0dGluZ3MoKS0+YXBwbHlQYWdlU2NhbGVGYWN0
b3JJbkNvbXBvc2l0b3IoKSk7CiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5z
ZXRTaG93RGVidWdCb3JkZXJzKHBhZ2UoKS0+c2V0dGluZ3MoKS0+c2hvd0RlYnVnQm9yZGVycygp
KTsKICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnNldE9wYXF1ZSghaXNUcmFu
c3BhcmVudCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5k
ZXggOTI2NmZiY2E5ZGMwOWRkZDQxZDIwY2JmOTk0MjlmMzhhM2IwNDVlZC4uZWE0NjI3NGVmNzNi
OWRlMDUzODAzNjhlY2MwYjE3YzI3ZDMxMDY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xp
ZW50SW1wbC5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgor
I2luY2x1ZGUgIk5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oIgogI2luY2x1ZGUgIk5vdGlmaWNh
dGlvblByZXNlbnRlckltcGwuaCIKICNpbmNsdWRlICJQYWdlT3ZlcmxheUxpc3QuaCIKICNpbmNs
dWRlICJQYWdlUG9wdXBEcml2ZXIuaCIKQEAgLTk0LDcgKzk1LDYgQEAgY2xhc3MgQ29udGV4dE1l
bnVDbGllbnRJbXBsOwogY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTsKIGNsYXNz
IEdlb2xvY2F0aW9uQ2xpZW50UHJveHk7CiBjbGFzcyBMaW5rSGlnaGxpZ2h0OwotY2xhc3MgTm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0OwogY2xhc3MgUHJlcmVuZGVyZXJDbGllbnRJbXBsOwogY2xh
c3MgU3BlZWNoSW5wdXRDbGllbnRJbXBsOwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25DbGllbnRQ
cm94eTsKQEAgLTEyNiw2ICsxMjYsNyBAQCBjbGFzcyBXZWJWaWV3SW1wbCA6IHB1YmxpYyBXZWJW
aWV3CiAjaWYgRU5BQkxFKFBBR0VfUE9QVVApCiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6UGFnZVBv
cHVwRHJpdmVyCiAjZW5kaWYKKyAgICAsIHB1YmxpYyBOb25Db21wb3NpdGVkQ29udGVudEhvc3RE
ZWxlZ2F0ZQogICAgICwgcHVibGljIFBhZ2VXaWRnZXRFdmVudEhhbmRsZXIgewogcHVibGljOgog
ICAgIGVudW0gQXV0b1pvb21UeXBlIHsK
</data>
<flag name="commit-queue"
          id="207437"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>