<?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>95040</bug_id>
          
          <creation_ts>2012-08-26 21:36:41 -0700</creation_ts>
          <short_desc>[chromium] Add CompositorSupport interface for constructing compositor classes</short_desc>
          <delta_ts>2012-08-30 12:52:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>704940</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-26 21:36:41 -0700</bug_when>
    <thetext>[chromium] Add CompositorSupport interface for constructing compositor classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704943</commentid>
    <comment_count>1</comment_count>
      <attachid>160627</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-26 21:44:10 -0700</bug_when>
    <thetext>Created attachment 160627
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704944</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-26 21:47:32 -0700</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>705000</commentid>
    <comment_count>3</comment_count>
      <attachid>160627</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-26 23:48:22 -0700</bug_when>
    <thetext>Comment on attachment 160627
Patch

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

I was hoping I could review this, but I just have silly comments about whitespace.  :)

&gt; Source/Platform/chromium/public/WebCompositorSupport.h:55
&gt; +    // May return nil if initialization fails. Does not take ownership of the provided client or root layer.

nil -&gt; 0

&gt; Source/Platform/chromium/public/WebCompositorSupport.h:59
&gt; +    // Layers -------------------------------------------------------

Please add a blank line below this line and one more blank line above this line.

&gt; Source/Platform/chromium/public/WebCompositorSupport.h:80
&gt; +    // Animation ----------------------------------------------------

Please add a blank line below this line.

&gt; Source/WebKit/chromium/src/LinkHighlight.cpp:44
&gt; +

This blank line isn&apos;t needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705616</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-27 13:40:24 -0700</bug_when>
    <thetext>I&apos;ll try using the fancy new WebPassOwnPtr&lt;&gt; type here and see how it works out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705626</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-27 13:46:50 -0700</bug_when>
    <thetext>Woah, we have WebPassOwnPtr now!  That&apos;s exciting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705631</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-27 13:50:55 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Woah, we have WebPassOwnPtr now!  That&apos;s exciting.

Not yet - we will soon though :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705633</commentid>
    <comment_count>7</comment_count>
      <attachid>160797</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-27 13:53:22 -0700</bug_when>
    <thetext>Created attachment 160797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705634</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-27 13:53:43 -0700</bug_when>
    <thetext>Check it out - I don&apos;t have to document ownership transfers any more since it&apos;s in the type system. Woohoo!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705640</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-27 13:55:15 -0700</bug_when>
    <thetext>Attachment 160797 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/Platform/chromium/public/WebPassOwnPtr.h:85:  scoped_ptr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 16 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>705691</commentid>
    <comment_count>10</comment_count>
      <attachid>160810</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-27 14:45:05 -0700</bug_when>
    <thetext>Created attachment 160810
Remove default WebPassOwnPtr constructor, it&apos;s not useful without a copy ctor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705696</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-27 14:47:28 -0700</bug_when>
    <thetext>Attachment 160810 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/Platform/chromium/public/WebPassOwnPtr.h:80:  scoped_ptr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 16 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>705698</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-27 14:47:48 -0700</bug_when>
    <thetext>Darin pointed out it would be super handy to have default implementations of the create..() functions so it&apos;s easier to modify the interface without having to land implementations of the new functions chromium-side first.  However, I don&apos;t know how to write a default implementation of these since WebPassOwnPtr&lt;T&gt; is not copyable (by design) since users should only be using it to put into a OwnPtr&lt;T&gt; or scoped_ptr&lt;T&gt; depending on which side of the interface they are on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705899</commentid>
    <comment_count>13</comment_count>
      <attachid>160861</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-27 17:10:05 -0700</bug_when>
    <thetext>Created attachment 160861
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705901</commentid>
    <comment_count>14</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-27 17:12:40 -0700</bug_when>
    <thetext>This provides default implementations of WebCompositorSupport, which Darin points out will make modifying the interface a hell of a lot easier.  To do this we&apos;ve (mostly accidentally) implemented move emulation for WebPassOwnPtr&lt;&gt; so that we can return a temporary null value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705903</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-27 17:13:19 -0700</bug_when>
    <thetext>Attachment 160861 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/Platform/chromium/public/WebPassOwnPtr.h:85:  scoped_ptr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 16 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>705916</commentid>
    <comment_count>16</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-27 17:26:32 -0700</bug_when>
    <thetext>One consequence of this is that WebPassOwnPtr&lt;T&gt; is a really weird type.  I think we should just make sure it&apos;s never declared as a local or member variable, or really used at all outside of declaring + implementing WebKit APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706725</commentid>
    <comment_count>17</comment_count>
      <attachid>160861</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-08-28 14:19:47 -0700</bug_when>
    <thetext>Comment on attachment 160861
Patch

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

&gt; Source/Platform/chromium/public/WebPassOwnPtr.h:35
&gt; +#include &quot;base/memory/scoped_ptr.h&quot;

This adds a new circular dependency between WebKit and Chromium, but it is probably fairly unlikely that this path will ever change.

&gt; Source/Platform/chromium/public/WebPassOwnPtr.h:52
&gt; +//   OwnPtr&lt;Foo&gt; foo = ...-&gt;createFoo();

It would be good to complete this by showing how to implement on the WebKit side and call on the Chromium side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708009</commentid>
    <comment_count>18</comment_count>
      <attachid>161350</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-29 16:15:54 -0700</bug_when>
    <thetext>Created attachment 161350
consistent fallback behavior</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708011</commentid>
    <comment_count>19</comment_count>
      <attachid>161351</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-29 16:18:36 -0700</bug_when>
    <thetext>Created attachment 161351
add example of implementing in WebKit and using on chromium side</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708012</commentid>
    <comment_count>20</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-29 16:19:51 -0700</bug_when>
    <thetext>This assumes that if compositorSupport is not null, it&apos;ll return the types we want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708015</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-29 16:21:00 -0700</bug_when>
    <thetext>Attachment 161351 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/Platform/chromium/public/WebPassOwnPtr.h:98:  scoped_ptr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 16 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>708924</commentid>
    <comment_count>22</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-30 12:52:17 -0700</bug_when>
    <thetext>Committed r127172: &lt;http://trac.webkit.org/changeset/127172&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160627</attachid>
            <date>2012-08-26 21:44:10 -0700</date>
            <delta_ts>2012-08-27 13:53:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95040-20120826214411.patch</filename>
            <type>text/plain</type>
            <size>29572</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxMzViMTUyNzI4NTcz
M2FjZTg3MmNjNThiMjBmMjk4MTlkYmJiMmIyLi5iNDE5OTczYzFiMzc1NDhkMWRmNzQ2ZWI5MzNk
M2Q1OTU2YzEyMjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0wOC0yNiAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gQWRkIENvbXBvc2l0b3JTdXBwb3J0IGludGVyZmFjZSBmb3IgY29uc3RydWN0aW5nIGNvbXBv
c2l0b3IgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTUwNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRzIGEgV2ViQ29tcG9zaXRvclN1cHBvcnQgaW50ZXJmYWNlIGFzIGEgdGVhci1vZmYg
b2YgUGxhdGZvcm1TdXBwb3J0IHNvIHRoZSBlbWJlZGRlciBjYW4gaGFuZGxlIHByb3ZpZGUKKyAg
ICAgICAgaW1wbGVtZW50YXRpb25zIG9mIGNvbXBvc2l0b3IgaW50ZXJmYWNlcy4KKworICAgICAg
ICAqIFBsYXRmb3JtLmd5cGk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmg6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybTo6Y29tcG9zaXRv
clN1cHBvcnQpOgorICAgICAgICAoUGxhdGZvcm0pOgorICAgICAgICAqIGNocm9taXVtL3B1Ymxp
Yy9XZWJDb21wb3NpdG9yU3VwcG9ydC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJDb21wb3NpdG9yU3VwcG9ydCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0
b3JTdXBwb3J0Ojp+V2ViQ29tcG9zaXRvclN1cHBvcnQpOgorCiAyMDEyLTA4LTIzICBKYW1lcyBS
b2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBDb252
ZXJ0IFdlYkxheWVyVHJlZVZpZXcgaW50ZXJmYWNlIGludG8gcHVyZSB2aXJ0dWFsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMDAyZmE2NWE3NjJhMDM1MzkyMDhmZDg1MGFkZTFkYzNhZTUwYWU1Yi4uODI0NzQ0NGUz
ZGE4ZTY2N2MwNjU5MjQzOGRkNzJjZDE4YzgwZGZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2
IEBACisyMDEyLTA4LTI2ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgW2Nocm9taXVtXSBBZGQgQ29tcG9zaXRvclN1cHBvcnQgaW50ZXJmYWNlIGZvciBj
b25zdHJ1Y3RpbmcgY29tcG9zaXRvciBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTA0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVzZXMgV2ViQ29tcG9zaXRvclN1cHBvcnQgaW50ZXJmYWNl
cyB3aGVyZSBhcHByb3ByaWF0ZSB3aXRoIGZhbGxiYWNrIHRvIHRoZSBvbGQgY3JlYXRpb24gcGF0
aCB3aGVuCisgICAgICAgIGNvbXBvc2l0b3JTdXBwb3J0IGlzIG5pbCB0byBlYXNlIHRoZSB0cmFu
c2l0aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQW5pbWF0aW9u
VHJhbnNsYXRpb25VdGlsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdlYkFuaW1hdGlv
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJy
aWRnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQnJpZGdlOjpDYW52YXMy
RExheWVyQnJpZGdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3
aW5nQnVmZmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlclBy
aXZhdGU6OkRyYXdpbmdCdWZmZXJQcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNocm9taXVtOjpHcmFwaGljc0xheWVyQ2hyb21pdW0pOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJQcmVzZXJ2
ZXMzRCk6CisKIDIwMTItMDgtMjQgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4K
IAogICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZCBzaG91bGQgdXNl
IENHIGZvbnQgcmVuZGVyaW5nIGNvZGUgcGF0aCwgbm90IEdESQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCA4MjIyNjgzM2RhNzJiMzI2YTg5NDFkZGQ3ZTY5YTAxMTljZjVjOGYwLi42ZDYw
YTA4ZmI0YzRmZWY0MTI5ZDViYTU5ZDg2ZjA5Y2U2MzA4OWJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA4LTI2ICBKYW1lcyBSb2JpbnNvbiAgPGph
bWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgQ29tcG9zaXRvclN1
cHBvcnQgaW50ZXJmYWNlIGZvciBjb25zdHJ1Y3RpbmcgY29tcG9zaXRvciBjbGFzc2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTA0MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL0xpbmtIaWdo
bGlnaHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpMaW5rSGlnaGxpZ2h0OjpMaW5rSGlnaGxpZ2h0
KToKKyAgICAgICAgKFdlYktpdDo6TGlua0hpZ2hsaWdodDo6c3RhcnRIaWdobGlnaHRBbmltYXRp
b24pOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2VkKToK
KyAgICAgICAgKiBzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAqIHNyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6c2V0QmFja2luZ1RleHR1cmVJZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNldEJhY2tpbmdJT1N1cmZh
Y2VJZCk6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaDoKKyAgICAgICAg
KFdlYktpdCk6CisKIDIwMTItMDgtMjQgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgQ2hyb21pdW06IFdlYkFjY2Vzc2liaWxpdHlPYmplY3Qgc2hvdWxk
IGV4cG9zZSB1cGRhdGVCYWNraW5nU3RvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9Q
bGF0Zm9ybS5neXBpIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKaW5kZXggN2FiMDgy
NjJhZmU3NjA3MTQ2ZTdjZTRiYTY0YmY0ZTVmNDdmNjkwNS4uZWM2ZjUwNjZjYTI1N2Y5YzI5MmM3
YjFlNDY3ODY5MzgxYzVkNzlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL1BsYXRmb3Jt
Lmd5cGkKKysrIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKQEAgLTQ0LDYgKzQ0LDgg
QEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ2xpcGJvYXJkLmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb2xvci5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViQ29tbW9uLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJD
b21wb3NpdG9yLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9y
U3VyZmFjZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvck91
dHB1dFN1cmZhY2UuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0
b3JPdXRwdXRTdXJmYWNlQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9X
ZWJDb250ZW50TGF5ZXIuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1BsYXRmb3JtLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRm
b3JtLmgKaW5kZXggZDZiYTg2ZmU3ZmU4NDBiZTYwMmVlZmE4YzQzN2I3MzdkZTgwZjgyZS4uNDdk
OTkwNWRjNDk1MzBiMDcwZWQyZjY1YmVlNTNiMTNkN2FjZDQwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaApAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIGNsYXNzIFdlYkF1ZGlvQnVzOwogY2xhc3MgV2ViQmxvYlJlZ2lzdHJ5OwogY2xh
c3MgV2ViQ2xpcGJvYXJkOworY2xhc3MgV2ViQ29tcG9zaXRvclN1cHBvcnQ7CiBjbGFzcyBXZWJD
b29raWVKYXI7CiBjbGFzcyBXZWJGaWxlU3lzdGVtOwogY2xhc3MgV2ViRmlsZVV0aWxpdGllczsK
QEAgLTQxMSw2ICs0MTIsOCBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyB2YWx1ZSBtdXN0IGJlIGNo
ZWNrZWQgYWdhaW4gYWZ0ZXIgYSBjb250ZXh0IGxvc3MgZXZlbnQgYXMgdGhlIHBsYXRmb3JtJ3Mg
Y2FwYWJpbGl0aWVzIG1heSBoYXZlIGNoYW5nZWQuCiAgICAgdmlydHVhbCBib29sIGNhbkFjY2Vs
ZXJhdGUyZENhbnZhcygpIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0dWFsIFdlYkNvbXBv
c2l0b3JTdXBwb3J0KiBjb21wb3NpdG9yU3VwcG9ydCgpIHsgcmV0dXJuIDA7IH0KKwogICAgIHZp
cnR1YWwgV2ViRmxpbmdBbmltYXRvciogY3JlYXRlRmxpbmdBbmltYXRvcigpIHsgcmV0dXJuIDA7
IH0KIAogICAgIC8vIFdlYlJUQyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmVkNDM4ODFkYTJm
MzVkMzczMjMxOTkzYzg2NWIyMjFmNGE3ZDJmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaApAQCAtMCwwICsx
LDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb21wb3NpdG9yU3VwcG9ydF9oCisjZGVmaW5lIFdl
YkNvbXBvc2l0b3JTdXBwb3J0X2gKKworI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgorI2luY2x1
ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkxheWVyVHJlZVZpZXcuaCIKKyNpbmNsdWRl
ICJXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYkNvbnRlbnRMYXllcjsKK2NsYXNzIFdlYkNvbnRlbnRMYXllckNsaWVudDsKK2NsYXNz
IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOworY2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJD
bGllbnQ7CitjbGFzcyBXZWJGbGluZ0FuaW1hdG9yOworY2xhc3MgV2ViRmxvYXRBbmltYXRpb25D
dXJ2ZTsKK2NsYXNzIFdlYklPU3VyZmFjZUxheWVyOworY2xhc3MgV2ViSW1hZ2VMYXllcjsKK2Ns
YXNzIFdlYkxheWVyOworY2xhc3MgV2ViU2Nyb2xsYmFyOworY2xhc3MgV2ViU2Nyb2xsYmFyTGF5
ZXI7CitjbGFzcyBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5OworY2xhc3MgV2ViU29saWRDb2xv
ckxheWVyOworY2xhc3MgV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU7CitjbGFzcyBXZWJWaWRl
b0ZyYW1lUHJvdmlkZXI7CitjbGFzcyBXZWJWaWRlb0xheWVyOworCitjbGFzcyBXZWJDb21wb3Np
dG9yU3VwcG9ydCB7CitwdWJsaWM6CisgICAgLy8gTWF5IHJldHVybiBuaWwgaWYgaW5pdGlhbGl6
YXRpb24gZmFpbHMuIERvZXMgbm90IHRha2Ugb3duZXJzaGlwIG9mIHRoZSBwcm92aWRlZCBjbGll
bnQgb3Igcm9vdCBsYXllci4KKyAgICAvLyBUaGUgY2xpZW50IG11c3Qgb3V0bGl2ZSB0aGUgdmll
dy4KKyAgICB2aXJ0dWFsIFdlYkxheWVyVHJlZVZpZXcqIGNyZWF0ZUxheWVyVHJlZVZpZXcoV2Vi
TGF5ZXJUcmVlVmlld0NsaWVudCosIGNvbnN0IFdlYkxheWVyJiByb290LCBjb25zdCBXZWJMYXll
clRyZWVWaWV3OjpTZXR0aW5ncyYpID0gMDsKKworICAgIC8vIExheWVycyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgdmlydHVhbCBX
ZWJMYXllciogY3JlYXRlTGF5ZXIoKSA9IDA7CisKKyAgICAvLyBUaGUgY2FsbGVyIHJldGFpbnMg
b3duZXJzaGlwIG9mIHRoZSBwcm92aWRlZCBjbGllbnQsIHdoaWNoIG11c3Qgb3V0bGl2ZSB0aGUg
bGF5ZXIuCisgICAgdmlydHVhbCBXZWJDb250ZW50TGF5ZXIqIGNyZWF0ZUNvbnRlbnRMYXllcihX
ZWJDb250ZW50TGF5ZXJDbGllbnQqKSA9IDA7CisKKyAgICAvLyBJZiB0aGUgb3B0aW9uYWwgY2xp
ZW50IGlzIHByb3ZpZGVkLCB0aGUgY2FsbGVyIHJldGFpbnMgb3duZXJzaGlwIG9mIGl0LgorICAg
IHZpcnR1YWwgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIqIGNyZWF0ZUV4dGVybmFsVGV4dHVyZUxh
eWVyKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50KiA9IDApID0gMDsKKworICAgIHZpcnR1
YWwgV2ViSU9TdXJmYWNlTGF5ZXIqIGNyZWF0ZUlPU3VyZmFjZUxheWVyKCkgPSAwOworCisgICAg
dmlydHVhbCBXZWJJbWFnZUxheWVyKiBjcmVhdGVJbWFnZUxheWVyKCkgPSAwOworCisgICAgdmly
dHVhbCBXZWJTb2xpZENvbG9yTGF5ZXIqIGNyZWF0ZVNvbGlkQ29sb3JMYXllcigpID0gMDsKKwor
ICAgIHZpcnR1YWwgV2ViVmlkZW9MYXllciogY3JlYXRlVmlkZW9MYXllcihXZWJWaWRlb0ZyYW1l
UHJvdmlkZXIqKSA9IDA7CisKKyAgICAvLyBUYWtlcyBvd25lcnNoaXAgb2YgdGhlIHByb3ZpZGVk
IFdlYlNjcm9sbGJhciBhbmQgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS4KKyAgICB2aXJ0dWFs
IFdlYlNjcm9sbGJhckxheWVyKiBjcmVhdGVTY3JvbGxiYXJMYXllcihXZWJTY3JvbGxiYXIqLCBX
ZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIsIFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkqKSA9IDA7
CisKKworICAgIC8vIEFuaW1hdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgdmlydHVhbCBXZWJBbmltYXRpb24qIGNyZWF0ZUFuaW1h
dGlvbihjb25zdCBXZWJBbmltYXRpb25DdXJ2ZSYsIFdlYkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVy
dHksIGludCBhbmltYXRpb25JZCA9IDApID0gMDsKKworICAgIHZpcnR1YWwgV2ViRmxvYXRBbmlt
YXRpb25DdXJ2ZSogY3JlYXRlRmxvYXRBbmltYXRpb25DdXJ2ZSgpID0gMDsKKworICAgIHZpcnR1
YWwgV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUqIGNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbkN1
cnZlKCkgPSAwOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgfldlYkNvbXBvc2l0b3JTdXBwb3J0
KCkgeyB9Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJDb21wb3NpdG9yU3VwcG9ydF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BbmltYXRp
b25UcmFuc2xhdGlvblV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsLmNwcAppbmRleCA1YjRmOTk3ZjNiMGJj
MzFmOTUyMDc0OTk1MDUzZTc1YWNiNjk2ZDc0Li5kNzY5NTEwM2U1NWQ4M2ViNzk3YzhkYjdhZDll
MTZhNDNkYTE1NDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9BbmltYXRpb25UcmFuc2xhdGlvblV0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0FuaW1hdGlvblRyYW5zbGF0aW9uVXRpbC5j
cHAKQEAgLTQwLDggKzQwLDEwIEBACiAjaW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgIlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogCisjaW5jbHVkZSA8cHVi
bGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkFuaW1hdGlvbi5oPgogI2luY2x1
ZGUgPHB1YmxpYy9XZWJBbmltYXRpb25DdXJ2ZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21w
b3NpdG9yU3VwcG9ydC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdEFuaW1hdGlvbkN1cnZl
Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlLmg+CiAjaW5j
bHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMuaD4KQEAgLTIxMyw3ICsyMTUsNyBA
QCBib29sIGFwcGVuZEtleWZyYW1lV2l0aEN1c3RvbUJlemllclRpbWluZ0Z1bmN0aW9uPFRyYW5z
Zm9ybUFuaW1hdGlvblZhbHVlLCBXZWJUcgogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVmFsdWUsIGNs
YXNzIEtleWZyYW1lLCBjbGFzcyBDdXJ2ZT4KLVBhc3NPd25QdHI8V2ViS2l0OjpXZWJBbmltYXRp
b24+IGNyZWF0ZVdlYkFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0
LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgaW50IGFuaW1hdGlvbklkLCBkb3VibGUgdGlt
ZU9mZnNldCwgV2ViS2l0OjpXZWJBbmltYXRpb246OlRhcmdldFByb3BlcnR5IHRhcmdldFByb3Bl
cnR5LCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUpCitQYXNzT3duUHRyPFdlYktpdDo6V2ViQW5p
bWF0aW9uPiBjcmVhdGVXZWJBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVl
TGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGludCBhbmltYXRpb25JZCwgZG91Ymxl
IHRpbWVPZmZzZXQsIEN1cnZlKiBjdXJ2ZSwgV2ViS2l0OjpXZWJBbmltYXRpb246OlRhcmdldFBy
b3BlcnR5IHRhcmdldFByb3BlcnR5LCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUpCiB7CiAgICAg
Ym9vbCBhbHRlcm5hdGUgPSBmYWxzZTsKICAgICBib29sIHJldmVyc2UgPSBmYWxzZTsKQEAgLTIy
NSw4ICsyMjcsNiBAQCBQYXNzT3duUHRyPFdlYktpdDo6V2ViQW5pbWF0aW9uPiBjcmVhdGVXZWJB
bmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbAogICAgICAgICAgICAgcmV2ZXJz
ZSA9IHRydWU7CiAgICAgfQogCi0gICAgT3duUHRyPEN1cnZlPiBjdXJ2ZSA9IGFkb3B0UHRyKEN1
cnZlOjpjcmVhdGUoKSk7Ci0KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlTGlzdC5z
aXplKCk7IGkrKykgewogICAgICAgICBzaXplX3QgaW5kZXggPSByZXZlcnNlID8gdmFsdWVMaXN0
LnNpemUoKSAtIGkgLSAxIDogaTsKICAgICAgICAgY29uc3QgVmFsdWUqIG9yaWdpbmFsVmFsdWUg
PSBzdGF0aWNfY2FzdDxjb25zdCBWYWx1ZSo+KHZhbHVlTGlzdC5hdChpbmRleCkpOwpAQCAtMjc3
LDMyICsyNzcsNTAgQEAgUGFzc093blB0cjxXZWJLaXQ6OldlYkFuaW1hdGlvbj4gY3JlYXRlV2Vi
QW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWwKIAogICAgICAgICBib29sIGFk
ZGVkS2V5ZnJhbWUgPSBmYWxzZTsKICAgICAgICAgaWYgKGlzVXNpbmdDdXN0b21CZXppZXJUaW1p
bmdGdW5jdGlvbikKLSAgICAgICAgICAgIGFkZGVkS2V5ZnJhbWUgPSBhcHBlbmRLZXlmcmFtZVdp
dGhDdXN0b21CZXppZXJUaW1pbmdGdW5jdGlvbjxWYWx1ZSwgS2V5ZnJhbWUsIEN1cnZlPihjdXJ2
ZS5nZXQoKSwga2V5VGltZSwgb3JpZ2luYWxWYWx1ZSwgbGFzdE9yaWdpbmFsVmFsdWUsIHgxLCB5
MSwgeDIsIHkyLCBib3hTaXplKTsKKyAgICAgICAgICAgIGFkZGVkS2V5ZnJhbWUgPSBhcHBlbmRL
ZXlmcmFtZVdpdGhDdXN0b21CZXppZXJUaW1pbmdGdW5jdGlvbjxWYWx1ZSwgS2V5ZnJhbWUsIEN1
cnZlPihjdXJ2ZSwga2V5VGltZSwgb3JpZ2luYWxWYWx1ZSwgbGFzdE9yaWdpbmFsVmFsdWUsIHgx
LCB5MSwgeDIsIHkyLCBib3hTaXplKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkZWRL
ZXlmcmFtZSA9IGFwcGVuZEtleWZyYW1lV2l0aFN0YW5kYXJkVGltaW5nRnVuY3Rpb248VmFsdWUs
IEtleWZyYW1lLCBDdXJ2ZT4oY3VydmUuZ2V0KCksIGtleVRpbWUsIG9yaWdpbmFsVmFsdWUsIGxh
c3RPcmlnaW5hbFZhbHVlLCB0aW1pbmdGdW5jdGlvblR5cGUsIGJveFNpemUpOworICAgICAgICAg
ICAgYWRkZWRLZXlmcmFtZSA9IGFwcGVuZEtleWZyYW1lV2l0aFN0YW5kYXJkVGltaW5nRnVuY3Rp
b248VmFsdWUsIEtleWZyYW1lLCBDdXJ2ZT4oY3VydmUsIGtleVRpbWUsIG9yaWdpbmFsVmFsdWUs
IGxhc3RPcmlnaW5hbFZhbHVlLCB0aW1pbmdGdW5jdGlvblR5cGUsIGJveFNpemUpOwogICAgICAg
ICBpZiAoIWFkZGVkS2V5ZnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJBbmltYXRpb24+IGFuaW0oYWRvcHRQdHIoV2ViS2l0
OjpXZWJBbmltYXRpb246OmNyZWF0ZSgqY3VydmUsIHRhcmdldFByb3BlcnR5LCBhbmltYXRpb25J
ZCkpKTsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJBbmltYXRpb24+IHdlYkFuaW1hdGlvbjsKKyAg
ICBpZiAoV2ViQ29tcG9zaXRvclN1cHBvcnQqIGNvbXBvc2l0b3JTdXBwb3J0ID0gV2ViS2l0OjpQ
bGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9yU3VwcG9ydCgpKQorICAgICAgICB3ZWJBbmlt
YXRpb24gPSBhZG9wdFB0cihjb21wb3NpdG9yU3VwcG9ydC0+Y3JlYXRlQW5pbWF0aW9uKCpjdXJ2
ZSwgdGFyZ2V0UHJvcGVydHksIGFuaW1hdGlvbklkKSk7CisgICAgZWxzZQorICAgICAgICB3ZWJB
bmltYXRpb24gPSBhZG9wdFB0cihXZWJLaXQ6OldlYkFuaW1hdGlvbjo6Y3JlYXRlKCpjdXJ2ZSwg
dGFyZ2V0UHJvcGVydHksIGFuaW1hdGlvbklkKSk7CiAKICAgICBpbnQgaXRlcmF0aW9ucyA9IChh
bmltYXRpb24gJiYgYW5pbWF0aW9uLT5pc0l0ZXJhdGlvbkNvdW50U2V0KCkpID8gYW5pbWF0aW9u
LT5pdGVyYXRpb25Db3VudCgpIDogMTsKLSAgICBhbmltLT5zZXRJdGVyYXRpb25zKGl0ZXJhdGlv
bnMpOwotICAgIGFuaW0tPnNldEFsdGVybmF0ZXNEaXJlY3Rpb24oYWx0ZXJuYXRlKTsKKyAgICB3
ZWJBbmltYXRpb24tPnNldEl0ZXJhdGlvbnMoaXRlcmF0aW9ucyk7CisgICAgd2ViQW5pbWF0aW9u
LT5zZXRBbHRlcm5hdGVzRGlyZWN0aW9uKGFsdGVybmF0ZSk7CiAKICAgICAvLyBJZiB0aW1lT2Zm
c2V0ID4gMCwgdGhlbiB0aGUgYW5pbWF0aW9uIGhhcyBzdGFydGVkIGluIHRoZSBwYXN0LgotICAg
IGFuaW0tPnNldFRpbWVPZmZzZXQodGltZU9mZnNldCk7CisgICAgd2ViQW5pbWF0aW9uLT5zZXRU
aW1lT2Zmc2V0KHRpbWVPZmZzZXQpOwogCi0gICAgcmV0dXJuIGFuaW0ucmVsZWFzZSgpOworICAg
IHJldHVybiB3ZWJBbmltYXRpb24ucmVsZWFzZSgpOwogfQogCiBQYXNzT3duUHRyPFdlYktpdDo6
V2ViQW5pbWF0aW9uPiBjcmVhdGVXZWJBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
IHZhbHVlcywgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGludCBhbmltYXRpb25JZCwgZG91
YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSkKIHsKLSAgICBpZiAodmFs
dWVzLnByb3BlcnR5KCkgPT0gQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSkKLSAgICAg
ICAgcmV0dXJuIGNyZWF0ZVdlYkFuaW1hdGlvbjxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSwgV2Vi
VHJhbnNmb3JtS2V5ZnJhbWUsIFdlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlPih2YWx1ZXMsIGFu
aW1hdGlvbiwgYW5pbWF0aW9uSWQsIHRpbWVPZmZzZXQsIFdlYktpdDo6V2ViQW5pbWF0aW9uOjpU
YXJnZXRQcm9wZXJ0eVRyYW5zZm9ybSwgRmxvYXRTaXplKGJveFNpemUpKTsKIAotICAgIGlmICh2
YWx1ZXMucHJvcGVydHkoKSA9PSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eSkKLSAgICAgICAgcmV0
dXJuIGNyZWF0ZVdlYkFuaW1hdGlvbjxGbG9hdEFuaW1hdGlvblZhbHVlLCBXZWJGbG9hdEtleWZy
YW1lLCBXZWJGbG9hdEFuaW1hdGlvbkN1cnZlPih2YWx1ZXMsIGFuaW1hdGlvbiwgYW5pbWF0aW9u
SWQsIHRpbWVPZmZzZXQsIFdlYktpdDo6V2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eU9wYWNp
dHksIEZsb2F0U2l6ZSgpKTsKKworICAgIGlmICh2YWx1ZXMucHJvcGVydHkoKSA9PSBBbmltYXRl
ZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKSB7CisgICAgICAgIE93blB0cjxXZWJUcmFuc2Zvcm1B
bmltYXRpb25DdXJ2ZT4gY3VydmU7CisgICAgICAgIGlmIChXZWJDb21wb3NpdG9yU3VwcG9ydCog
Y29tcG9zaXRvclN1cHBvcnQgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0
b3JTdXBwb3J0KCkpCisgICAgICAgICAgICBjdXJ2ZSA9IGFkb3B0UHRyKGNvbXBvc2l0b3JTdXBw
b3J0LT5jcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSgpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgY3VydmUgPSBhZG9wdFB0cihXZWJUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZTo6Y3Jl
YXRlKCkpOworICAgICAgICByZXR1cm4gY3JlYXRlV2ViQW5pbWF0aW9uPFRyYW5zZm9ybUFuaW1h
dGlvblZhbHVlLCBXZWJUcmFuc2Zvcm1LZXlmcmFtZSwgV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3Vy
dmU+KHZhbHVlcywgYW5pbWF0aW9uLCBhbmltYXRpb25JZCwgdGltZU9mZnNldCwgY3VydmUuZ2V0
KCksIFdlYktpdDo6V2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eVRyYW5zZm9ybSwgRmxvYXRT
aXplKGJveFNpemUpKTsKKyAgICB9CisKKyAgICBpZiAodmFsdWVzLnByb3BlcnR5KCkgPT0gQW5p
bWF0ZWRQcm9wZXJ0eU9wYWNpdHkpIHsKKyAgICAgICAgT3duUHRyPFdlYkZsb2F0QW5pbWF0aW9u
Q3VydmU+IGN1cnZlOworICAgICAgICBpZiAoV2ViQ29tcG9zaXRvclN1cHBvcnQqIGNvbXBvc2l0
b3JTdXBwb3J0ID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9yU3VwcG9y
dCgpKQorICAgICAgICAgICAgY3VydmUgPSBhZG9wdFB0cihjb21wb3NpdG9yU3VwcG9ydC0+Y3Jl
YXRlRmxvYXRBbmltYXRpb25DdXJ2ZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3Vy
dmUgPSBhZG9wdFB0cihXZWJGbG9hdEFuaW1hdGlvbkN1cnZlOjpjcmVhdGUoKSk7CisgICAgICAg
IHJldHVybiBjcmVhdGVXZWJBbmltYXRpb248RmxvYXRBbmltYXRpb25WYWx1ZSwgV2ViRmxvYXRL
ZXlmcmFtZSwgV2ViRmxvYXRBbmltYXRpb25DdXJ2ZT4odmFsdWVzLCBhbmltYXRpb24sIGFuaW1h
dGlvbklkLCB0aW1lT2Zmc2V0LCBjdXJ2ZS5nZXQoKSwgV2ViS2l0OjpXZWJBbmltYXRpb246OlRh
cmdldFByb3BlcnR5T3BhY2l0eSwgRmxvYXRTaXplKCkpOworICAgIH0KIAogICAgIHJldHVybiBu
dWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcAppbmRleCBlZDMzMmIx
ODc4NWJhZDNhYWRhMjQwNDdkMjIwZGY3MDY0OWZiZTA1Li45ODVlOTkzNjU5MzFhMjIxMjM0MGM0
NzEwNWM5YjEzMTM3YmY2ZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcApA
QCAtMzIsNyArMzIsOSBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgor
I2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3Np
dG9yLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+CiAjaW5jbHVk
ZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CiAKIHVzaW5nIFdlYktpdDo6V2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXI7CkBAIC02OSw3ICs3MSwxMSBAQCBDYW52YXMyRExheWVyQnJpZGdl
OjpDYW52YXMyRExheWVyQnJpZGdlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRl
eHQsCiAgICAgICAgICAgICBnckNvbnRleHQtPnJlc2V0Q29udGV4dCgpOwogICAgIH0KIAotICAg
IG1fbGF5ZXIgPSBhZG9wdFB0cihXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKHRoaXMp
KTsKKyAgICBpZiAoV2ViS2l0OjpXZWJDb21wb3NpdG9yU3VwcG9ydCogY29tcG9zaXRvclN1cHBv
cnQgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCkpCisg
ICAgICAgIG1fbGF5ZXIgPSBhZG9wdFB0cihjb21wb3NpdG9yU3VwcG9ydC0+Y3JlYXRlRXh0ZXJu
YWxUZXh0dXJlTGF5ZXIodGhpcykpOworICAgIGlmICghbV9sYXllcikKKyAgICAgICAgbV9sYXll
ciA9IGFkb3B0UHRyKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSh0aGlz
KSk7CisKICAgICBtX2xheWVyLT5zZXRUZXh0dXJlSWQodGV4dHVyZUlkKTsKICAgICBtX2xheWVy
LT5zZXRSYXRlTGltaXRDb250ZXh0KCFXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnRocmVhZGluZ0Vu
YWJsZWQoKSB8fCBtX3VzZURvdWJsZUJ1ZmZlcmluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1
ZmZlckNocm9taXVtLmNwcAppbmRleCA2MTAyYTNlNmY3ODY5NzYwZTFmMzc4MDJkMDZmZTY1ZjRl
YmQzNTI0Li4yNzk5YTFmZmJmMGY3ZDI0ZDRmNjg2ZDFlYjRkMjc5YTJjZmQ1MGFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVm
ZmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKQEAgLTM3LDcgKzM3LDkgQEAKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0u
aD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvci5oPgorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJDb21wb3NpdG9yU3VwcG9ydC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJFeHRlcm5hbFRleHR1
cmVMYXllci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVu
dC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgpAQCAtMTU2LDgg
KzE1OCwxMiBAQCBjbGFzcyBEcmF3aW5nQnVmZmVyUHJpdmF0ZSA6IHB1YmxpYyBXZWJLaXQ6Oldl
YkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBEcmF3
aW5nQnVmZmVyUHJpdmF0ZShEcmF3aW5nQnVmZmVyKiBkcmF3aW5nQnVmZmVyKQogICAgICAgICA6
IG1fZHJhd2luZ0J1ZmZlcihkcmF3aW5nQnVmZmVyKQotICAgICAgICAsIG1fbGF5ZXIoYWRvcHRQ
dHIoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKHRoaXMpKSkKICAgICB7
CisgICAgICAgIGlmIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JTdXBwb3J0KiBjb21wb3NpdG9yU3Vw
cG9ydCA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKSkK
KyAgICAgICAgICAgIG1fbGF5ZXIgPSBhZG9wdFB0cihjb21wb3NpdG9yU3VwcG9ydC0+Y3JlYXRl
RXh0ZXJuYWxUZXh0dXJlTGF5ZXIodGhpcykpOworICAgICAgICBpZiAoIW1fbGF5ZXIpCisgICAg
ICAgICAgICBtX2xheWVyID0gYWRvcHRQdHIoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXll
cjo6Y3JlYXRlKHRoaXMpKTsKKwogICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRl
cyBhdHRyaWJ1dGVzID0gbV9kcmF3aW5nQnVmZmVyLT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRD
b250ZXh0QXR0cmlidXRlcygpOwogICAgICAgICBtX2xheWVyLT5zZXRPcGFxdWUoIWF0dHJpYnV0
ZXMuYWxwaGEpOwogICAgICAgICBtX2xheWVyLT5zZXRQcmVtdWx0aXBsaWVkQWxwaGEoYXR0cmli
dXRlcy5wcmVtdWx0aXBsaWVkQWxwaGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5jcHAKaW5kZXggNzY1ZTQ1MDk4ZWQyMzIxYTFlNDlhYzJjODFjNTU1ZDE5MzI5NmJiYy4uNTdk
NzdiNjc2MzZkNTkzN2ZjMzNmNjJlNzgxMTEyYjUwZGI3MTlmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFw
aGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC01Nyw3ICs1Nyw5IEBACiAjaW5jbHVkZSAiU2tNYXRy
aXg0NC5oIgogI2luY2x1ZGUgIlN5c3RlbVRpbWUuaCIKIAorI2luY2x1ZGUgPHB1YmxpYy9QbGF0
Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJBbmltYXRpb24uaD4KKyNpbmNsdWRlIDxwdWJs
aWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3Bl
cmF0aW9uLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KICNpbmNs
dWRlIDxwdWJsaWMvV2ViRmxvYXRQb2ludC5oPgpAQCAtOTAsNyArOTIsMTIgQEAgR3JhcGhpY3NM
YXllckNocm9taXVtOjpHcmFwaGljc0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNsaWVudCog
Y2xpZW50KQogICAgICwgbV9wYWdlU2NhbGVDaGFuZ2VkKGZhbHNlKQogewogICAgIG1fb3BhcXVl
UmVjdFRyYWNraW5nQ29udGVudExheWVyRGVsZWdhdGUgPSBhZG9wdFB0cihuZXcgT3BhcXVlUmVj
dFRyYWNraW5nQ29udGVudExheWVyRGVsZWdhdGUodGhpcykpOwotICAgIG1fbGF5ZXIgPSBhZG9w
dFB0cihXZWJDb250ZW50TGF5ZXI6OmNyZWF0ZShtX29wYXF1ZVJlY3RUcmFja2luZ0NvbnRlbnRM
YXllckRlbGVnYXRlLmdldCgpKSk7CisKKyAgICBpZiAoV2ViQ29tcG9zaXRvclN1cHBvcnQqIGNv
bXBvc2l0b3JTdXBwb3J0ID0gUGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQo
KSkKKyAgICAgICAgbV9sYXllciA9IGFkb3B0UHRyKGNvbXBvc2l0b3JTdXBwb3J0LT5jcmVhdGVD
b250ZW50TGF5ZXIobV9vcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZS5nZXQo
KSkpOworICAgIGlmICghbV9sYXllcikKKyAgICAgICAgbV9sYXllciA9IGFkb3B0UHRyKFdlYkNv
bnRlbnRMYXllcjo6Y3JlYXRlKG1fb3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExheWVyRGVsZWdh
dGUuZ2V0KCkpKTsKKwogICAgIG1fbGF5ZXItPmxheWVyKCktPnNldERyYXdzQ29udGVudChtX2Ry
YXdzQ29udGVudCAmJiBtX2NvbnRlbnRzVmlzaWJsZSk7CiAgICAgaWYgKGNsaWVudCkKICAgICAg
ICAgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CkBAIC00NjcsNyArNDc0LDEyIEBA
IHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGlt
YWdlKQogICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7CiAgICAgaWYgKGltYWdlKSB7
CiAgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlICE9IENvbnRlbnRzTGF5ZXJGb3JJ
bWFnZSkgewotICAgICAgICAgICAgbV9pbWFnZUxheWVyID0gYWRvcHRQdHIoV2ViSW1hZ2VMYXll
cjo6Y3JlYXRlKCkpOworCisgICAgICAgICAgICBpZiAoV2ViQ29tcG9zaXRvclN1cHBvcnQqIGNv
bXBvc2l0b3JTdXBwb3J0ID0gUGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQo
KSkKKyAgICAgICAgICAgICAgICBtX2ltYWdlTGF5ZXIgPSBhZG9wdFB0cihjb21wb3NpdG9yU3Vw
cG9ydC0+Y3JlYXRlSW1hZ2VMYXllcigpKTsKKyAgICAgICAgICAgIGlmICghbV9pbWFnZUxheWVy
KQorICAgICAgICAgICAgICAgIG1faW1hZ2VMYXllciA9IGFkb3B0UHRyKFdlYkltYWdlTGF5ZXI6
OmNyZWF0ZSgpKTsKKwogICAgICAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKG1faW1hZ2VMYXll
ci0+bGF5ZXIoKSk7CiAgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVu
dHNMYXllckZvckltYWdlOwogICAgICAgICAgICAgY2hpbGRyZW5DaGFuZ2VkID0gdHJ1ZTsKQEAg
LTUwMCw3ICs1MTIsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNU
b01lZGlhKFBsYXRmb3JtTGF5ZXIqIGxheWVyKQogICAgIHNldENvbnRlbnRzVG8oQ29udGVudHNM
YXllckZvclZpZGVvLCBsYXllcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpz
ZXRDb250ZW50c1RvKENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UsIFdlYktpdDo6V2ViTGF5
ZXIqIGxheWVyKQordm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG8oQ29u
dGVudHNMYXllclB1cnBvc2UgcHVycG9zZSwgV2ViTGF5ZXIqIGxheWVyKQogewogICAgIGJvb2wg
Y2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7CiAgICAgaWYgKGxheWVyKSB7CkBAIC01MzIsNyArNTQ0
LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZEFuaW1hdGlvbihjb25zdCBLZXlm
cmFtZVZhbHVlTGlzdCYgdmFsdWVzLCBjb25zdAogICAgIGlmIChtX2FuaW1hdGlvbklkTWFwLmNv
bnRhaW5zKGFuaW1hdGlvbk5hbWUpKQogICAgICAgICBhbmltYXRpb25JZCA9IG1fYW5pbWF0aW9u
SWRNYXAuZ2V0KGFuaW1hdGlvbk5hbWUpOwogCi0gICAgT3duUHRyPFdlYktpdDo6V2ViQW5pbWF0
aW9uPiB0b0FkZChjcmVhdGVXZWJBbmltYXRpb24odmFsdWVzLCBhbmltYXRpb24sIGFuaW1hdGlv
bklkLCB0aW1lT2Zmc2V0LCBib3hTaXplKSk7CisgICAgT3duUHRyPFdlYkFuaW1hdGlvbj4gdG9B
ZGQoY3JlYXRlV2ViQW5pbWF0aW9uKHZhbHVlcywgYW5pbWF0aW9uLCBhbmltYXRpb25JZCwgdGlt
ZU9mZnNldCwgYm94U2l6ZSkpOwogCiAgICAgaWYgKHRvQWRkKSB7CiAgICAgICAgIGFuaW1hdGlv
bklkID0gdG9BZGQtPmlkKCk7CkBAIC02NzgsOCArNjkwLDExIEBAIHZvaWQgR3JhcGhpY3NMYXll
ckNocm9taXVtOjp1cGRhdGVNYXNrc1RvQm91bmRzKCkKIHZvaWQgR3JhcGhpY3NMYXllckNocm9t
aXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNEKCkKIHsKICAgICBpZiAobV9wcmVzZXJ2ZXMzRCAm
JiAhbV90cmFuc2Zvcm1MYXllcikgewotICAgICAgICAvLyBDcmVhdGUgdGhlIHRyYW5zZm9ybSBs
YXllci4KLSAgICAgICAgbV90cmFuc2Zvcm1MYXllciA9IGFkb3B0UHRyKFdlYkxheWVyOjpjcmVh
dGUoKSk7CisgICAgICAgIGlmIChXZWJDb21wb3NpdG9yU3VwcG9ydCogY29tcG9zaXRvclN1cHBv
cnQgPSBQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9yU3VwcG9ydCgpKQorICAgICAgICAg
ICAgbV90cmFuc2Zvcm1MYXllciA9IGFkb3B0UHRyKGNvbXBvc2l0b3JTdXBwb3J0LT5jcmVhdGVM
YXllcigpKTsKKyAgICAgICAgaWYgKCFtX3RyYW5zZm9ybUxheWVyKQorICAgICAgICAgICAgbV90
cmFuc2Zvcm1MYXllciA9IGFkb3B0UHRyKFdlYkxheWVyOjpjcmVhdGUoKSk7CisKICAgICAgICAg
bV90cmFuc2Zvcm1MYXllci0+c2V0UHJlc2VydmVzM0QodHJ1ZSk7CiAgICAgICAgIG1fdHJhbnNm
b3JtTGF5ZXItPnNldEFuaW1hdGlvbkRlbGVnYXRlKHRoaXMpOwogICAgICAgICBtX2xheWVyLT5s
YXllcigpLT50cmFuc2ZlckFuaW1hdGlvbnNUbyhtX3RyYW5zZm9ybUxheWVyLmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xpbmtIaWdobGlnaHQuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTGlua0hpZ2hsaWdodC5jcHAKaW5kZXggMmM4MDRh
OGNkNTBhNjRjNjhhNDk2N2E3NDYzNGViZGJjOWE2OGQ2NC4uZmYxMjIwMmI5MzAxNDE5MDBlZWNk
MjRjY2YyOTBjNzdmYTdlZDA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvTGlua0hpZ2hsaWdodC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTGlu
a0hpZ2hsaWdodC5jcHAKQEAgLTQxLDcgKzQxLDEwIEBACiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBs
LmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKKworI2lu
Y2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJBbmltYXRpb25D
dXJ2ZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9ydC5oPgogI2luY2x1
ZGUgPHB1YmxpYy9XZWJGbG9hdEFuaW1hdGlvbkN1cnZlLmg+CiAjaW5jbHVkZSA8cHVibGljL1dl
YkZsb2F0UG9pbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUmVjdC5oPgpAQCAtNTksMTYgKzYy
LDIwIEBAIFBhc3NPd25QdHI8TGlua0hpZ2hsaWdodD4gTGlua0hpZ2hsaWdodDo6Y3JlYXRlKE5v
ZGUqIG5vZGUsIFdlYlZpZXdJbXBsKiBvd25pbmdXCiB9CiAKIExpbmtIaWdobGlnaHQ6OkxpbmtI
aWdobGlnaHQoTm9kZSogbm9kZSwgV2ViVmlld0ltcGwqIG93bmluZ1dlYlZpZXdJbXBsKQotICAg
IDogbV9jb250ZW50TGF5ZXIoYWRvcHRQdHIoV2ViQ29udGVudExheWVyOjpjcmVhdGUodGhpcykp
KQotICAgICwgbV9jbGlwTGF5ZXIoYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKSkKLSAgICAs
IG1fbm9kZShub2RlKQorICAgIDogbV9ub2RlKG5vZGUpCiAgICAgLCBtX293bmluZ1dlYlZpZXdJ
bXBsKG93bmluZ1dlYlZpZXdJbXBsKQogICAgICwgbV9jdXJyZW50R3JhcGhpY3NMYXllcigwKQog
ICAgICwgbV9nZW9tZXRyeU5lZWRzVXBkYXRlKGZhbHNlKQogewogICAgIEFTU0VSVChtX25vZGUp
OwogICAgIEFTU0VSVChvd25pbmdXZWJWaWV3SW1wbCk7Ci0KKyAgICBpZiAoV2ViQ29tcG9zaXRv
clN1cHBvcnQqIGNvbXBvc2l0b3JTdXBwb3J0ID0gUGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9z
aXRvclN1cHBvcnQoKSkgeworICAgICAgICBtX2NvbnRlbnRMYXllciA9IGFkb3B0UHRyKGNvbXBv
c2l0b3JTdXBwb3J0LT5jcmVhdGVDb250ZW50TGF5ZXIodGhpcykpOworICAgICAgICBtX2NsaXBM
YXllciA9IGFkb3B0UHRyKGNvbXBvc2l0b3JTdXBwb3J0LT5jcmVhdGVMYXllcigpKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBtX2NvbnRlbnRMYXllciA9IGFkb3B0UHRyKFdlYkNvbnRlbnRMYXll
cjo6Y3JlYXRlKHRoaXMpKTsKKyAgICAgICAgbV9jbGlwTGF5ZXIgPSBhZG9wdFB0cihXZWJMYXll
cjo6Y3JlYXRlKCkpOworICAgIH0KICAgICBtX2NsaXBMYXllci0+c2V0QW5jaG9yUG9pbnQoV2Vi
RmxvYXRQb2ludCgpKTsKICAgICBtX2NsaXBMYXllci0+YWRkQ2hpbGQobV9jb250ZW50TGF5ZXIt
PmxheWVyKCkpOwogICAgIG1fY29udGVudExheWVyLT5sYXllcigpLT5zZXREcmF3c0NvbnRlbnQo
ZmFsc2UpOwpAQCAtMjAwLDEzICsyMDcsMjQgQEAgdm9pZCBMaW5rSGlnaGxpZ2h0OjpzdGFydEhp
Z2hsaWdodEFuaW1hdGlvbigpCiAKICAgICBtX2NvbnRlbnRMYXllci0+bGF5ZXIoKS0+c2V0T3Bh
Y2l0eShzdGFydE9wYWNpdHkpOwogCi0gICAgT3duUHRyPFdlYkZsb2F0QW5pbWF0aW9uQ3VydmU+
IGN1cnZlID0gYWRvcHRQdHIoV2ViRmxvYXRBbmltYXRpb25DdXJ2ZTo6Y3JlYXRlKCkpOworICAg
IFdlYkNvbXBvc2l0b3JTdXBwb3J0KiBjb21wb3NpdG9yU3VwcG9ydCA9IFBsYXRmb3JtOjpjdXJy
ZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCk7CisKKyAgICBPd25QdHI8V2ViRmxvYXRBbmltYXRp
b25DdXJ2ZT4gY3VydmU7CisgICAgaWYgKGNvbXBvc2l0b3JTdXBwb3J0KQorICAgICAgICBjdXJ2
ZSA9IGFkb3B0UHRyKGNvbXBvc2l0b3JTdXBwb3J0LT5jcmVhdGVGbG9hdEFuaW1hdGlvbkN1cnZl
KCkpOworICAgIGVsc2UKKyAgICAgICAgY3VydmUgPSBhZG9wdFB0cihXZWJGbG9hdEFuaW1hdGlv
bkN1cnZlOjpjcmVhdGUoKSk7CisKICAgICBjdXJ2ZS0+YWRkKFdlYkZsb2F0S2V5ZnJhbWUoMCwg
c3RhcnRPcGFjaXR5KSk7CiAgICAgY3VydmUtPmFkZChXZWJGbG9hdEtleWZyYW1lKGR1cmF0aW9u
IC8gMiwgc3RhcnRPcGFjaXR5KSk7CiAgICAgLy8gRm9yIGxheW91dCB0ZXN0cyB3ZSBkb24ndCBm
YWRlIG91dC4KICAgICBjdXJ2ZS0+YWRkKFdlYkZsb2F0S2V5ZnJhbWUoZHVyYXRpb24sIFdlYktp
dDo6bGF5b3V0VGVzdE1vZGUoKSA/IHN0YXJ0T3BhY2l0eSA6IDApKTsKIAotICAgIG1fYW5pbWF0
aW9uID0gYWRvcHRQdHIoV2ViQW5pbWF0aW9uOjpjcmVhdGUoKmN1cnZlLCBXZWJBbmltYXRpb246
OlRhcmdldFByb3BlcnR5T3BhY2l0eSkpOworICAgIGlmIChjb21wb3NpdG9yU3VwcG9ydCkKKyAg
ICAgICAgbV9hbmltYXRpb24gPSBhZG9wdFB0cihjb21wb3NpdG9yU3VwcG9ydC0+Y3JlYXRlQW5p
bWF0aW9uKCpjdXJ2ZSwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eU9wYWNpdHkpKTsKKyAg
ICBlbHNlCisgICAgICAgIG1fYW5pbWF0aW9uID0gYWRvcHRQdHIoV2ViQW5pbWF0aW9uOjpjcmVh
dGUoKmN1cnZlLCBXZWJBbmltYXRpb246OlRhcmdldFByb3BlcnR5T3BhY2l0eSkpOworCiAgICAg
bV9jb250ZW50TGF5ZXItPmxheWVyKCktPnNldERyYXdzQ29udGVudCh0cnVlKTsKICAgICBtX2Nv
bnRlbnRMYXllci0+bGF5ZXIoKS0+YWRkQW5pbWF0aW9uKG1fYW5pbWF0aW9uLmdldCgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xp
ZW50SW1wbC5jcHAKaW5kZXggNzJlODcxNjM3YjdkZGYyMWRjNmM4ZWM4M2Q0NjNkY2EzZDg1ZWJj
MS4uZGU1OTcwNmYyZmM2OTQ5YjQ1ZDgwOTM0NTdiNDMzODM0ZDI3OTg2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwu
Y3BwCkBAIC0yOSwxMSArMjksMTMgQEAKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNp
bmNsdWRlIDxwdWJsaWMvV2ViQ1N0cmluZy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDYW52YXMu
aD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaD4KICNpbmNsdWRlIDxw
dWJsaWMvV2ViTWltZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KICNp
bmNsdWRlIDxwdWJsaWMvV2ViU2l6ZS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4K
ICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlZpZGVvTGF5
ZXIuaD4KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpbmNsdWRlICJSZW5k
ZXJMYXllckNvbXBvc2l0b3IuaCIKQEAgLTExMSw3ICsxMTMsMTEgQEAgdm9pZCBXZWJNZWRpYVBs
YXllckNsaWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2VkKCkKICAgICBtX21lZGlhUGxheWVyLT5y
ZWFkeVN0YXRlQ2hhbmdlZCgpOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAg
ICBpZiAoaGFzVmlkZW8oKSAmJiBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgJiYgIW1f
dmlkZW9MYXllcikgewotICAgICAgICBtX3ZpZGVvTGF5ZXIgPSBhZG9wdFB0cihXZWJWaWRlb0xh
eWVyOjpjcmVhdGUodGhpcykpOworICAgICAgICBpZiAoV2ViQ29tcG9zaXRvclN1cHBvcnQqIGNv
bXBvc2l0b3JTdXBwb3J0ID0gUGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQo
KSkKKyAgICAgICAgICAgIG1fdmlkZW9MYXllciA9IGFkb3B0UHRyKGNvbXBvc2l0b3JTdXBwb3J0
LT5jcmVhdGVWaWRlb0xheWVyKHRoaXMpKTsKKyAgICAgICAgaWYgKCFtX3ZpZGVvTGF5ZXIpCisg
ICAgICAgICAgICBtX3ZpZGVvTGF5ZXIgPSBhZG9wdFB0cihXZWJWaWRlb0xheWVyOjpjcmVhdGUo
dGhpcykpOworCiAgICAgICAgIG1fdmlkZW9MYXllci0+bGF5ZXIoKS0+c2V0T3BhcXVlKG1fb3Bh
cXVlKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKaW5kZXggMzI5ZmQ5ZWMwZjQ4OGE5ZWFhZmVh
NmU5NWM4ZmJiMjQ5MDQxNWMwZS4uYmQyOTA3ZWQyNjFmMTdmZGExMjQ5N2Q2ODUzMGM2OGRjYjkz
MzkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsLmgKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJXZWJNZWRpYVBs
YXllckNsaWVudC5oIgogI2luY2x1ZGUgIldlYlN0cmVhbVRleHR1cmVDbGllbnQuaCIKICNpbmNs
dWRlIDxwdWJsaWMvV2ViVmlkZW9GcmFtZVByb3ZpZGVyLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dl
YlZpZGVvTGF5ZXIuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KIApAQCAtNTAsNiArNDksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IFdlYkhlbHBlclBsdWdpbkltcGw7CiBjbGFzcyBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyOwogY2xh
c3MgV2ViTWVkaWFQbGF5ZXI7CitjbGFzcyBXZWJWaWRlb0xheWVyOwogCiAvLyBUaGlzIGNsYXNz
IHNlcnZlcyBhcyBhIGJyaWRnZSBiZXR3ZWVuIFdlYkNvcmU6Ok1lZGlhUGxheWVyIGFuZAogLy8g
V2ViS2l0OjpXZWJNZWRpYVBsYXllci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAKaW5kZXggNzVhOTdlMGY2Y2M1ZTQ3YWUy
OWRkYTMwMTVjMTZkOGZiNzFhMzFmNC4uZmFhNzA4YzVjM2FiODViNTdjM2VjNWZiMGQzZDgzN2Iw
N2U2YmFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2lu
Q29udGFpbmVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1
Z2luQ29udGFpbmVySW1wbC5jcHAKQEAgLTcxLDYgKzcxLDggQEAKICNpbmNsdWRlICJXaGVlbEV2
ZW50LmgiCiAjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dl
YkNsaXBib2FyZC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9ydC5oPgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oPgogI2luY2x1ZGUgPHB1
YmxpYy9XZWJSZWN0Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJVUkwuaD4KQEAgLTM2OCw2ICszNzAsMTAgQEAgdm9pZCBXZWJQbHVnaW5Db250
YWluZXJJbXBsOjpzZXRCYWNraW5nVGV4dHVyZUlkKHVuc2lnbmVkIHRleHR1cmVJZCkKIAogICAg
IEFTU0VSVCghbV9pb1N1cmZhY2VMYXllcik7CiAKKyAgICBpZiAoIW1fdGV4dHVyZUxheWVyKSB7
CisgICAgICAgIGlmIChXZWJDb21wb3NpdG9yU3VwcG9ydCogY29tcG9zaXRvclN1cHBvcnQgPSBQ
bGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9yU3VwcG9ydCgpKQorICAgICAgICAgICAgbV90
ZXh0dXJlTGF5ZXIgPSBhZG9wdFB0cihjb21wb3NpdG9yU3VwcG9ydC0+Y3JlYXRlRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXIoKSk7CisgICAgfQogICAgIGlmICghbV90ZXh0dXJlTGF5ZXIpCiAgICAgICAg
IG1fdGV4dHVyZUxheWVyID0gYWRvcHRQdHIoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0
ZSgpKTsKICAgICBtX3RleHR1cmVMYXllci0+c2V0VGV4dHVyZUlkKHRleHR1cmVJZCk7CkBAIC0z
OTIsNiArMzk4LDEwIEBAIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6c2V0QmFja2luZ0lP
U3VyZmFjZUlkKGludCB3aWR0aCwKIAogICAgIEFTU0VSVCghbV90ZXh0dXJlTGF5ZXIpOwogCisg
ICAgaWYgKCFtX2lvU3VyZmFjZUxheWVyKSB7CisgICAgICAgIGlmIChXZWJDb21wb3NpdG9yU3Vw
cG9ydCogY29tcG9zaXRvclN1cHBvcnQgPSBQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9y
U3VwcG9ydCgpKQorICAgICAgICAgICAgbV9pb1N1cmZhY2VMYXllciA9IGFkb3B0UHRyKGNvbXBv
c2l0b3JTdXBwb3J0LT5jcmVhdGVJT1N1cmZhY2VMYXllcigpKTsKKyAgICB9CiAgICAgaWYgKCFt
X2lvU3VyZmFjZUxheWVyKQogICAgICAgICBtX2lvU3VyZmFjZUxheWVyID0gYWRvcHRQdHIoV2Vi
SU9TdXJmYWNlTGF5ZXI6OmNyZWF0ZSgpKTsKICAgICBtX2lvU3VyZmFjZUxheWVyLT5zZXRJT1N1
cmZhY2VQcm9wZXJ0aWVzKGlvU3VyZmFjZUlkLCBXZWJTaXplKHdpZHRoLCBoZWlnaHQpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lcklt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwu
aAppbmRleCA5OThiZTZlNDE5Zjg5NWZhODIxNzk0MDM5MzQ0YmMxNmYzMTFmOTIzLi5lMjAzYTcz
NzAxOTAzMWYwNGFkODEyNzkzMTM1OGY2YTg4MDg4OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oCkBAIC0zNSw3ICszNSw2
IEBACiAjaW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiV2lkZ2V0Lmgi
CiAKLSNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaD4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViSU9TdXJmYWNlTGF5ZXIuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTY3LDYgKzY2LDcgQEAgc3RydWN0IFdlYlBy
aW50UGFyYW1zOwogY2xhc3MgU2Nyb2xsYmFyR3JvdXA7CiBjbGFzcyBXZWJQbHVnaW47CiBjbGFz
cyBXZWJQbHVnaW5Mb2FkT2JzZXJ2ZXI7CitjbGFzcyBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjsK
IAogY2xhc3MgV2ViUGx1Z2luQ29udGFpbmVySW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpQbHVnaW5W
aWV3QmFzZSwgcHVibGljIFdlYlBsdWdpbkNvbnRhaW5lciB7CiBwdWJsaWM6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160797</attachid>
            <date>2012-08-27 13:53:22 -0700</date>
            <delta_ts>2012-08-27 14:45:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95040-20120827135314.patch</filename>
            <type>text/plain</type>
            <size>32968</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2Nzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxMzViMTUyNzI4NTcz
M2FjZTg3MmNjNThiMjBmMjk4MTlkYmJiMmIyLi5lY2Q3MTJhOWIwNWQwMWZlY2MwZTM5Y2Q1NjFh
MjU3N2ZjYWNmOWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wOC0yNyAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gQWRkIENvbXBvc2l0b3JTdXBwb3J0IGludGVyZmFjZSBmb3IgY29uc3RydWN0aW5nIGNvbXBv
c2l0b3IgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTUwNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRzIGEgV2ViQ29tcG9zaXRvclN1cHBvcnQgaW50ZXJmYWNlIGFzIGEgdGVhci1vZmYg
b2YgUGxhdGZvcm1TdXBwb3J0IHNvIHRoZSBlbWJlZGRlciBjYW4gaGFuZGxlIHByb3ZpZGUKKyAg
ICAgICAgaW1wbGVtZW50YXRpb25zIG9mIGNvbXBvc2l0b3IgaW50ZXJmYWNlcy4KKworICAgICAg
ICBBZGRzIGEgbmV3IFdlYlBhc3NPd25QdHI8PiB0eXBlIGZvciB1c2Ugd2hlbiB0aGUgY2FsbGVy
IG9mIGFuIEFQSSBtdXN0IHRha2Ugb3duZXJzaGlwIG9mIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9Q
bGF0Zm9ybS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm06
OmNvbXBvc2l0b3JTdXBwb3J0KToKKyAgICAgICAgKFBsYXRmb3JtKToKKyAgICAgICAgKiBjaHJv
bWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViQ29tcG9zaXRvclN1cHBvcnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb21wb3NpdG9yU3VwcG9ydDo6fldlYkNvbXBvc2l0b3JTdXBwb3J0KToKKwogMjAxMi0wOC0y
MyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gQ29udmVydCBXZWJMYXllclRyZWVWaWV3IGludGVyZmFjZSBpbnRvIHB1cmUgdmlydHVh
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDAzMzQyZmQwODM1ZGU2NzM1NzJjYjVlOWNiNTQ3YWVhZDIxMzcyZmEu
LmIxY2E2YzA2OWFhNWNmNTdiOWQ4OTI5OGU3Y2E4NzM5ZTIxNGQwYzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNiBAQAorMjAxMi0wOC0yNyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRkIENvbXBvc2l0b3JTdXBwb3J0IGludGVy
ZmFjZSBmb3IgY29uc3RydWN0aW5nIGNvbXBvc2l0b3IgY2xhc3NlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUwNDAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2VzIFdlYkNvbXBvc2l0b3JTdXBwb3J0
IGludGVyZmFjZXMgd2hlcmUgYXBwcm9wcmlhdGUgd2l0aCBmYWxsYmFjayB0byB0aGUgb2xkIGNy
ZWF0aW9uIHBhdGggd2hlbgorICAgICAgICBjb21wb3NpdG9yU3VwcG9ydCBpcyBuaWwgdG8gZWFz
ZSB0aGUgdHJhbnNpdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0FuaW1hdGlvblRyYW5zbGF0aW9uVXRpbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVX
ZWJBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
czJETGF5ZXJCcmlkZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRn
ZTo6Q2FudmFzMkRMYXllckJyaWRnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdp
bmdCdWZmZXJQcml2YXRlOjpEcmF3aW5nQnVmZmVyUHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6R3JhcGhpY3NMYXllckNocm9taXVtKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb0lt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVu
dHNUbyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZEFuaW1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxh
eWVyUHJlc2VydmVzM0QpOgorCiAyMDEyLTA4LTI3ICBLZXZpbiBGdW5rICA8a2V2aW4uZnVua0Br
ZGFiLmNvbT4KIAogICAgICAgICBGaXggY29tcGlsYXRpb24gd2hlbiBib3RoIE9TKFdJTkNFKSBh
bmQgUExBVEZPUk0oUVQpIGFyZSB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGI3
ZTRkNTAzYTA0MmE3NjBiYjA4MzkzM2U2M2EwNDJlZTNhYjM2MTIuLjdjNDgxOWNlM2VmZjk3ZjBi
NWVmM2RlMjM4OTI3Y2RiNTY4YmNiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTItMDgtMjcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBDb21wb3NpdG9yU3VwcG9ydCBpbnRlcmZh
Y2UgZm9yIGNvbnN0cnVjdGluZyBjb21wb3NpdG9yIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MDQwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvTGlua0hpZ2hsaWdodC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkxpbmtIaWdobGlnaHQ6OkxpbmtIaWdobGlnaHQpOgorICAgICAgICAo
V2ViS2l0OjpMaW5rSGlnaGxpZ2h0OjpzdGFydEhpZ2hsaWdodEFuaW1hdGlvbik6CisgICAgICAg
ICogc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cmVhZHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIHNy
Yy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
ICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bHVnaW5Db250YWluZXJJbXBsOjpzZXRCYWNraW5nVGV4dHVyZUlkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6c2V0QmFja2luZ0lPU3VyZmFjZUlkKToKKyAgICAg
ICAgKiBzcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oOgorICAgICAgICAoV2ViS2l0KToKKwog
MjAxMi0wOC0yNyAgSnVzdGluIE5vdm9zYWQgIDxqdW5vdkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW0Nocm9taXVtXSBJbXBsZW1lbnRpbmcgYSBnbG9iYWwgbGltaXQgb24gbWVtb3J5IGNvbnN1
bWVkIGJ5IGRlZmVycmVkIDJEIGNhbnZhc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
UGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCmluZGV4IDdhYjA4
MjYyYWZlNzYwNzE0NmU3Y2U0YmE2NGJmNGU1ZjQ3ZjY5MDUuLjJkMzZlYTMxMWM1MWQxNDE3YmIy
NmJkYzM5NDc4MTQ4ZDk2ZmQwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9y
bS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCkBAIC00NCw2ICs0NCw4
IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNsaXBib2FyZC5oJywKICAgICAg
ICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29sb3IuaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYkNvbW1vbi5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2Vi
Q29tcG9zaXRvci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRv
clN1cmZhY2UuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JP
dXRwdXRTdXJmYWNlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3Np
dG9yT3V0cHV0U3VyZmFjZUNsaWVudC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMv
V2ViQ29udGVudExheWVyLmgnLApAQCAtOTEsNiArOTMsNyBAQAogICAgICAgICAgICAgJ2Nocm9t
aXVtL3B1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5uZWxDbGllbnQuaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYk1pbWVSZWdpc3RyeS5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViTm9uQ29weWFibGUuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYlBhc3NPd25QdHIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlBlZXJD
b25uZWN0aW9uMDBIYW5kbGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJQ
ZWVyQ29ubmVjdGlvbjAwSGFuZGxlckNsaWVudC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9QbGF0Zm9ybS5oCmluZGV4IGQ2YmE4NmZlN2ZlODQwYmU2MDJlZWZhOGM0Mzdi
NzM3ZGU4MGY4MmUuLjQ3ZDk5MDVkYzQ5NTMwYjA3MGVkMmY2NWJlZTUzYjEzZDdhY2Q0MGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAorKysg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgKQEAgLTQ5LDYgKzQ5
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBdWRpb0J1czsKIGNsYXNzIFdlYkJs
b2JSZWdpc3RyeTsKIGNsYXNzIFdlYkNsaXBib2FyZDsKK2NsYXNzIFdlYkNvbXBvc2l0b3JTdXBw
b3J0OwogY2xhc3MgV2ViQ29va2llSmFyOwogY2xhc3MgV2ViRmlsZVN5c3RlbTsKIGNsYXNzIFdl
YkZpbGVVdGlsaXRpZXM7CkBAIC00MTEsNiArNDEyLDggQEAgcHVibGljOgogICAgIC8vIFRoaXMg
dmFsdWUgbXVzdCBiZSBjaGVja2VkIGFnYWluIGFmdGVyIGEgY29udGV4dCBsb3NzIGV2ZW50IGFz
IHRoZSBwbGF0Zm9ybSdzIGNhcGFiaWxpdGllcyBtYXkgaGF2ZSBjaGFuZ2VkLgogICAgIHZpcnR1
YWwgYm9vbCBjYW5BY2NlbGVyYXRlMmRDYW52YXMoKSB7IHJldHVybiBmYWxzZTsgfQogCisgICAg
dmlydHVhbCBXZWJDb21wb3NpdG9yU3VwcG9ydCogY29tcG9zaXRvclN1cHBvcnQoKSB7IHJldHVy
biAwOyB9CisKICAgICB2aXJ0dWFsIFdlYkZsaW5nQW5pbWF0b3IqIGNyZWF0ZUZsaW5nQW5pbWF0
b3IoKSB7IHJldHVybiAwOyB9CiAKICAgICAvLyBXZWJSVEMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9ydC5oIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9ydC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE3NjZiNWYxNDg0ZjJlY2UxYjczZDgzMmFkNDk0ZDkxZmYzOWZhMzUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JTdXBw
b3J0LmgKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29tcG9zaXRvclN1cHBv
cnRfaAorI2RlZmluZSBXZWJDb21wb3NpdG9yU3VwcG9ydF9oCisKKyNpbmNsdWRlICJXZWJBbmlt
YXRpb24uaCIKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJDb250ZW50TGF5
ZXIuaCIKKyNpbmNsdWRlICJXZWJFeHRlcm5hbFRleHR1cmVMYXllci5oIgorI2luY2x1ZGUgIldl
YkZsb2F0QW5pbWF0aW9uQ3VydmUuaCIKKyNpbmNsdWRlICJXZWJJT1N1cmZhY2VMYXllci5oIgor
I2luY2x1ZGUgIldlYkltYWdlTGF5ZXIuaCIKKyNpbmNsdWRlICJXZWJMYXllci5oIgorI2luY2x1
ZGUgIldlYkxheWVyVHJlZVZpZXcuaCIKKyNpbmNsdWRlICJXZWJQYXNzT3duUHRyLmgiCisjaW5j
bHVkZSAiV2ViU2Nyb2xsYmFyLmgiCisjaW5jbHVkZSAiV2ViU2Nyb2xsYmFyTGF5ZXIuaCIKKyNp
bmNsdWRlICJXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5LmgiCisjaW5jbHVkZSAiV2ViU2Nyb2xs
YmFyVGhlbWVQYWludGVyLmgiCisjaW5jbHVkZSAiV2ViU29saWRDb2xvckxheWVyLmgiCisjaW5j
bHVkZSAiV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUuaCIKKyNpbmNsdWRlICJXZWJWaWRlb0xh
eWVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJDb250ZW50TGF5ZXJDbGll
bnQ7CitjbGFzcyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudDsKK2NsYXNzIFdlYlZpZGVv
RnJhbWVQcm92aWRlcjsKKworY2xhc3MgV2ViQ29tcG9zaXRvclN1cHBvcnQgeworcHVibGljOgor
ICAgIC8vIE1heSByZXR1cm4gMCBpZiBpbml0aWFsaXphdGlvbiBmYWlscy4KKyAgICB2aXJ0dWFs
IFdlYlBhc3NPd25QdHI8V2ViTGF5ZXJUcmVlVmlldz4gY3JlYXRlTGF5ZXJUcmVlVmlldyhXZWJM
YXllclRyZWVWaWV3Q2xpZW50KiwgY29uc3QgV2ViTGF5ZXImIHJvb3QsIGNvbnN0IFdlYkxheWVy
VHJlZVZpZXc6OlNldHRpbmdzJikgPSAwOworCisKKyAgICAvLyBMYXllcnMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdmlydHVh
bCBXZWJQYXNzT3duUHRyPFdlYkxheWVyPiBjcmVhdGVMYXllcigpID0gMDsKKworICAgIHZpcnR1
YWwgV2ViUGFzc093blB0cjxXZWJDb250ZW50TGF5ZXI+IGNyZWF0ZUNvbnRlbnRMYXllcihXZWJD
b250ZW50TGF5ZXJDbGllbnQqKSA9IDA7CisKKyAgICB2aXJ0dWFsIFdlYlBhc3NPd25QdHI8V2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXI+IGNyZWF0ZUV4dGVybmFsVGV4dHVyZUxheWVyKFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVyQ2xpZW50KiA9IDApID0gMDsKKworICAgIHZpcnR1YWwgV2ViUGFzc093
blB0cjxXZWJJT1N1cmZhY2VMYXllcj4gY3JlYXRlSU9TdXJmYWNlTGF5ZXIoKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIFdlYlBhc3NPd25QdHI8V2ViSW1hZ2VMYXllcj4gY3JlYXRlSW1hZ2VMYXllcigp
ID0gMDsKKworICAgIHZpcnR1YWwgV2ViUGFzc093blB0cjxXZWJTb2xpZENvbG9yTGF5ZXI+IGNy
ZWF0ZVNvbGlkQ29sb3JMYXllcigpID0gMDsKKworICAgIHZpcnR1YWwgV2ViUGFzc093blB0cjxX
ZWJWaWRlb0xheWVyPiBjcmVhdGVWaWRlb0xheWVyKFdlYlZpZGVvRnJhbWVQcm92aWRlciopID0g
MDsKKworICAgIHZpcnR1YWwgV2ViUGFzc093blB0cjxXZWJTY3JvbGxiYXJMYXllcj4gY3JlYXRl
U2Nyb2xsYmFyTGF5ZXIoV2ViUGFzc093blB0cjxXZWJTY3JvbGxiYXI+LCBXZWJTY3JvbGxiYXJU
aGVtZVBhaW50ZXIsIFdlYlBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4pID0g
MDsKKworCisgICAgLy8gQW5pbWF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHZpcnR1YWwgV2ViUGFzc093blB0cjxXZWJBbmlt
YXRpb24+IGNyZWF0ZUFuaW1hdGlvbihjb25zdCBXZWJBbmltYXRpb25DdXJ2ZSYsIFdlYkFuaW1h
dGlvbjo6VGFyZ2V0UHJvcGVydHksIGludCBhbmltYXRpb25JZCA9IDApID0gMDsKKworICAgIHZp
cnR1YWwgV2ViUGFzc093blB0cjxXZWJGbG9hdEFuaW1hdGlvbkN1cnZlPiBjcmVhdGVGbG9hdEFu
aW1hdGlvbkN1cnZlKCkgPSAwOworCisgICAgdmlydHVhbCBXZWJQYXNzT3duUHRyPFdlYlRyYW5z
Zm9ybUFuaW1hdGlvbkN1cnZlPiBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSgpID0gMDsK
KworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIH5XZWJDb21wb3NpdG9yU3VwcG9ydCgpIHsgfQorfTsK
KworfQorCisjZW5kaWYgLy8gV2ViQ29tcG9zaXRvclN1cHBvcnRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQYXNzT3duUHRyLmggYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlBhc3NPd25QdHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDNlNjBk
YzIwMDJhNGUwYjA1NTIyYjQ3OTA2MWQ0MzkyMDI3NDU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQYXNzT3duUHRyLmgKQEAgLTAsMCArMSw5
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViUGFzc093blB0cl9oCisjZGVmaW5lIFdlYlBhc3NPd25Q
dHJfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJ
T04KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
KyNlbHNlCisjaW5jbHVkZSAiYmFzZS9tZW1vcnkvc2NvcGVkX3B0ci5oIgorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCisvLyBVc2UgYSByZXR1cm4gdmFsdWUgb2YgdHlwZSBXZWJQYXNz
T3duUHRyPFQ+IHdoZW4gdGhlIGNhbGxlciB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIHJldHVybmVk
IHZhbHVlLCBmb3IgaW5zdGFuY2UKKy8vIGluIGEgY3JlYXRlRm9vKCkgZmFjdG9yeSBmdW5jdGlv
bi4gRXhhbXBsZToKKy8vCisvLyBUbyBpbXBsZW1lbnQgdGhlIGNsYXNzIFdlYlBhc3NPd25QdHI8
Rm9vPiBjcmVhdGVGb28oKSBpbiBjaHJvbWl1bSBjb2RlLCB3cml0ZToKKy8vCisvLyBXZWJQYXNz
T3duUHRyPEZvbz4gY3JlYXRlRm9vKCkgeworLy8gICBzY29wZWRfcHRyPEZvbz4gZm9vID0gLi4u
OworLy8gICByZXR1cm4gZm9vLlBhc3MoKTsKKy8vIH0KKy8vCisvLyBUbyB1c2Ugb24gdGhlIFdl
YktpdCBzaWRlOgorLy8KKy8vICAgT3duUHRyPEZvbz4gZm9vID0gLi4uLT5jcmVhdGVGb28oKTsK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgV2ViUGFzc093blB0ciA6IHB1YmxpYyBXZWJO
b25Db3B5YWJsZSB7CitwdWJsaWM6CisgICAgV2ViUGFzc093blB0cigpCisgICAgICAgIDogbV9w
dHIoMCkKKyAgICB7CisgICAgfQorCisgICAgfldlYlBhc3NPd25QdHIoKQorICAgIHsKKyAgICAg
ICAgV0VCS0lUX0FTU0VSVCghbV9wdHIpOworICAgIH0KKworCisjaWYgV0VCS0lUX0lNUExFTUVO
VEFUSU9OCisgICAgV2ViUGFzc093blB0cihQYXNzT3duUHRyPFQ+IHB0cikKKyAgICAgICAgOiBt
X3B0cihwdHIubGVha1B0cigpKQorICAgIHsKKyAgICB9CisKKyAgICBvcGVyYXRvciBQYXNzT3du
UHRyPFQ+KCkKKyAgICB7CisgICAgICAgIE93blB0cjxUPiByZXQgPSBhZG9wdFB0cihtX3B0cik7
CisgICAgICAgIG1fcHRyID0gMDsKKyAgICAgICAgcmV0dXJuIHJldC5yZWxlYXNlKCk7CisgICAg
fQorI2Vsc2UKKyAgICBXZWJQYXNzT3duUHRyKHNjb3BlZF9wdHI8VD4gcHRyKQorICAgICAgICA6
IG1fcHRyKHB0ci5yZWxlYXNlKCkpCisgICAgeworICAgIH0KKworICAgIG9wZXJhdG9yIHNjb3Bl
ZF9wdHI8VD4oKQorICAgIHsKKyAgICAgICAgc2NvcGVkX3B0cjxUPiByZXQobV9wdHIpOworICAg
ICAgICBtX3B0ciA9IDA7CisgICAgICAgIHJldHVybiByZXQuUGFzcygpOworICAgIH0KKyNlbmRp
ZgorCitwcml2YXRlOgorICAgIFQqIG1fcHRyOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViUGFz
c093blB0cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9BbmltYXRpb25UcmFuc2xhdGlvblV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsLmNwcAppbmRl
eCA1YjRmOTk3ZjNiMGJjMzFmOTUyMDc0OTk1MDUzZTc1YWNiNjk2ZDc0Li45MDZhY2I1ZmJlODll
Y2YwNzdlMDZmNTk5NGM2MzliZTdmODUxMGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BbmltYXRpb25UcmFuc2xhdGlvblV0aWwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0FuaW1hdGlvblRy
YW5zbGF0aW9uVXRpbC5jcHAKQEAgLTQwLDggKzQwLDEwIEBACiAjaW5jbHVkZSAiVHJhbnNmb3Jt
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgog
CisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkFuaW1h
dGlvbi5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJBbmltYXRpb25DdXJ2ZS5oPgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9ydC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9h
dEFuaW1hdGlvbkN1cnZlLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybUFuaW1hdGlv
bkN1cnZlLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMuaD4KQEAg
LTIxMyw3ICsyMTUsNyBAQCBib29sIGFwcGVuZEtleWZyYW1lV2l0aEN1c3RvbUJlemllclRpbWlu
Z0Z1bmN0aW9uPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlLCBXZWJUcgogfQogCiB0ZW1wbGF0ZSA8
Y2xhc3MgVmFsdWUsIGNsYXNzIEtleWZyYW1lLCBjbGFzcyBDdXJ2ZT4KLVBhc3NPd25QdHI8V2Vi
S2l0OjpXZWJBbmltYXRpb24+IGNyZWF0ZVdlYkFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVl
TGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgaW50IGFuaW1hdGlv
bklkLCBkb3VibGUgdGltZU9mZnNldCwgV2ViS2l0OjpXZWJBbmltYXRpb246OlRhcmdldFByb3Bl
cnR5IHRhcmdldFByb3BlcnR5LCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUpCitQYXNzT3duUHRy
PFdlYktpdDo6V2ViQW5pbWF0aW9uPiBjcmVhdGVXZWJBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVW
YWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGludCBhbmlt
YXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQsIEN1cnZlKiBjdXJ2ZSwgV2ViS2l0OjpXZWJBbmlt
YXRpb246OlRhcmdldFByb3BlcnR5IHRhcmdldFByb3BlcnR5LCBjb25zdCBGbG9hdFNpemUmIGJv
eFNpemUpCiB7CiAgICAgYm9vbCBhbHRlcm5hdGUgPSBmYWxzZTsKICAgICBib29sIHJldmVyc2Ug
PSBmYWxzZTsKQEAgLTIyNSw4ICsyMjcsNiBAQCBQYXNzT3duUHRyPFdlYktpdDo6V2ViQW5pbWF0
aW9uPiBjcmVhdGVXZWJBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbAogICAg
ICAgICAgICAgcmV2ZXJzZSA9IHRydWU7CiAgICAgfQogCi0gICAgT3duUHRyPEN1cnZlPiBjdXJ2
ZSA9IGFkb3B0UHRyKEN1cnZlOjpjcmVhdGUoKSk7Ci0KICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHZhbHVlTGlzdC5zaXplKCk7IGkrKykgewogICAgICAgICBzaXplX3QgaW5kZXggPSByZXZl
cnNlID8gdmFsdWVMaXN0LnNpemUoKSAtIGkgLSAxIDogaTsKICAgICAgICAgY29uc3QgVmFsdWUq
IG9yaWdpbmFsVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBWYWx1ZSo+KHZhbHVlTGlzdC5hdChp
bmRleCkpOwpAQCAtMjc3LDMyICsyNzcsNTAgQEAgUGFzc093blB0cjxXZWJLaXQ6OldlYkFuaW1h
dGlvbj4gY3JlYXRlV2ViQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWwKIAog
ICAgICAgICBib29sIGFkZGVkS2V5ZnJhbWUgPSBmYWxzZTsKICAgICAgICAgaWYgKGlzVXNpbmdD
dXN0b21CZXppZXJUaW1pbmdGdW5jdGlvbikKLSAgICAgICAgICAgIGFkZGVkS2V5ZnJhbWUgPSBh
cHBlbmRLZXlmcmFtZVdpdGhDdXN0b21CZXppZXJUaW1pbmdGdW5jdGlvbjxWYWx1ZSwgS2V5ZnJh
bWUsIEN1cnZlPihjdXJ2ZS5nZXQoKSwga2V5VGltZSwgb3JpZ2luYWxWYWx1ZSwgbGFzdE9yaWdp
bmFsVmFsdWUsIHgxLCB5MSwgeDIsIHkyLCBib3hTaXplKTsKKyAgICAgICAgICAgIGFkZGVkS2V5
ZnJhbWUgPSBhcHBlbmRLZXlmcmFtZVdpdGhDdXN0b21CZXppZXJUaW1pbmdGdW5jdGlvbjxWYWx1
ZSwgS2V5ZnJhbWUsIEN1cnZlPihjdXJ2ZSwga2V5VGltZSwgb3JpZ2luYWxWYWx1ZSwgbGFzdE9y
aWdpbmFsVmFsdWUsIHgxLCB5MSwgeDIsIHkyLCBib3hTaXplKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgYWRkZWRLZXlmcmFtZSA9IGFwcGVuZEtleWZyYW1lV2l0aFN0YW5kYXJkVGltaW5n
RnVuY3Rpb248VmFsdWUsIEtleWZyYW1lLCBDdXJ2ZT4oY3VydmUuZ2V0KCksIGtleVRpbWUsIG9y
aWdpbmFsVmFsdWUsIGxhc3RPcmlnaW5hbFZhbHVlLCB0aW1pbmdGdW5jdGlvblR5cGUsIGJveFNp
emUpOworICAgICAgICAgICAgYWRkZWRLZXlmcmFtZSA9IGFwcGVuZEtleWZyYW1lV2l0aFN0YW5k
YXJkVGltaW5nRnVuY3Rpb248VmFsdWUsIEtleWZyYW1lLCBDdXJ2ZT4oY3VydmUsIGtleVRpbWUs
IG9yaWdpbmFsVmFsdWUsIGxhc3RPcmlnaW5hbFZhbHVlLCB0aW1pbmdGdW5jdGlvblR5cGUsIGJv
eFNpemUpOwogICAgICAgICBpZiAoIWFkZGVkS2V5ZnJhbWUpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJBbmltYXRpb24+IGFuaW0o
YWRvcHRQdHIoV2ViS2l0OjpXZWJBbmltYXRpb246OmNyZWF0ZSgqY3VydmUsIHRhcmdldFByb3Bl
cnR5LCBhbmltYXRpb25JZCkpKTsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJBbmltYXRpb24+IHdl
YkFuaW1hdGlvbjsKKyAgICBpZiAoV2ViQ29tcG9zaXRvclN1cHBvcnQqIGNvbXBvc2l0b3JTdXBw
b3J0ID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9yU3VwcG9ydCgpKQor
ICAgICAgICB3ZWJBbmltYXRpb24gPSBjb21wb3NpdG9yU3VwcG9ydC0+Y3JlYXRlQW5pbWF0aW9u
KCpjdXJ2ZSwgdGFyZ2V0UHJvcGVydHksIGFuaW1hdGlvbklkKTsKKyAgICBlbHNlCisgICAgICAg
IHdlYkFuaW1hdGlvbiA9IGFkb3B0UHRyKFdlYktpdDo6V2ViQW5pbWF0aW9uOjpjcmVhdGUoKmN1
cnZlLCB0YXJnZXRQcm9wZXJ0eSwgYW5pbWF0aW9uSWQpKTsKIAogICAgIGludCBpdGVyYXRpb25z
ID0gKGFuaW1hdGlvbiAmJiBhbmltYXRpb24tPmlzSXRlcmF0aW9uQ291bnRTZXQoKSkgPyBhbmlt
YXRpb24tPml0ZXJhdGlvbkNvdW50KCkgOiAxOwotICAgIGFuaW0tPnNldEl0ZXJhdGlvbnMoaXRl
cmF0aW9ucyk7Ci0gICAgYW5pbS0+c2V0QWx0ZXJuYXRlc0RpcmVjdGlvbihhbHRlcm5hdGUpOwor
ICAgIHdlYkFuaW1hdGlvbi0+c2V0SXRlcmF0aW9ucyhpdGVyYXRpb25zKTsKKyAgICB3ZWJBbmlt
YXRpb24tPnNldEFsdGVybmF0ZXNEaXJlY3Rpb24oYWx0ZXJuYXRlKTsKIAogICAgIC8vIElmIHRp
bWVPZmZzZXQgPiAwLCB0aGVuIHRoZSBhbmltYXRpb24gaGFzIHN0YXJ0ZWQgaW4gdGhlIHBhc3Qu
Ci0gICAgYW5pbS0+c2V0VGltZU9mZnNldCh0aW1lT2Zmc2V0KTsKKyAgICB3ZWJBbmltYXRpb24t
PnNldFRpbWVPZmZzZXQodGltZU9mZnNldCk7CiAKLSAgICByZXR1cm4gYW5pbS5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIHdlYkFuaW1hdGlvbi5yZWxlYXNlKCk7CiB9CiAKIFBhc3NPd25QdHI8V2Vi
S2l0OjpXZWJBbmltYXRpb24+IGNyZWF0ZVdlYkFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVl
TGlzdCYgdmFsdWVzLCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgaW50IGFuaW1hdGlvbklk
LCBkb3VibGUgdGltZU9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBib3hTaXplKQogewotICAgIGlm
ICh2YWx1ZXMucHJvcGVydHkoKSA9PSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKQot
ICAgICAgICByZXR1cm4gY3JlYXRlV2ViQW5pbWF0aW9uPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVl
LCBXZWJUcmFuc2Zvcm1LZXlmcmFtZSwgV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU+KHZhbHVl
cywgYW5pbWF0aW9uLCBhbmltYXRpb25JZCwgdGltZU9mZnNldCwgV2ViS2l0OjpXZWJBbmltYXRp
b246OlRhcmdldFByb3BlcnR5VHJhbnNmb3JtLCBGbG9hdFNpemUoYm94U2l6ZSkpOwogCi0gICAg
aWYgKHZhbHVlcy5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KQotICAgICAg
ICByZXR1cm4gY3JlYXRlV2ViQW5pbWF0aW9uPEZsb2F0QW5pbWF0aW9uVmFsdWUsIFdlYkZsb2F0
S2V5ZnJhbWUsIFdlYkZsb2F0QW5pbWF0aW9uQ3VydmU+KHZhbHVlcywgYW5pbWF0aW9uLCBhbmlt
YXRpb25JZCwgdGltZU9mZnNldCwgV2ViS2l0OjpXZWJBbmltYXRpb246OlRhcmdldFByb3BlcnR5
T3BhY2l0eSwgRmxvYXRTaXplKCkpOworCisgICAgaWYgKHZhbHVlcy5wcm9wZXJ0eSgpID09IEFu
aW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pIHsKKyAgICAgICAgT3duUHRyPFdlYlRyYW5z
Zm9ybUFuaW1hdGlvbkN1cnZlPiBjdXJ2ZTsKKyAgICAgICAgaWYgKFdlYkNvbXBvc2l0b3JTdXBw
b3J0KiBjb21wb3NpdG9yU3VwcG9ydCA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y29t
cG9zaXRvclN1cHBvcnQoKSkKKyAgICAgICAgICAgIGN1cnZlID0gY29tcG9zaXRvclN1cHBvcnQt
PmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGN1cnZlID0gYWRvcHRQdHIoV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU6OmNyZWF0ZSgp
KTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVdlYkFuaW1hdGlvbjxUcmFuc2Zvcm1BbmltYXRpb25W
YWx1ZSwgV2ViVHJhbnNmb3JtS2V5ZnJhbWUsIFdlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlPih2
YWx1ZXMsIGFuaW1hdGlvbiwgYW5pbWF0aW9uSWQsIHRpbWVPZmZzZXQsIGN1cnZlLmdldCgpLCBX
ZWJLaXQ6OldlYkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHlUcmFuc2Zvcm0sIEZsb2F0U2l6ZShi
b3hTaXplKSk7CisgICAgfQorCisgICAgaWYgKHZhbHVlcy5wcm9wZXJ0eSgpID09IEFuaW1hdGVk
UHJvcGVydHlPcGFjaXR5KSB7CisgICAgICAgIE93blB0cjxXZWJGbG9hdEFuaW1hdGlvbkN1cnZl
PiBjdXJ2ZTsKKyAgICAgICAgaWYgKFdlYkNvbXBvc2l0b3JTdXBwb3J0KiBjb21wb3NpdG9yU3Vw
cG9ydCA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKSkK
KyAgICAgICAgICAgIGN1cnZlID0gY29tcG9zaXRvclN1cHBvcnQtPmNyZWF0ZUZsb2F0QW5pbWF0
aW9uQ3VydmUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3VydmUgPSBhZG9wdFB0cihX
ZWJGbG9hdEFuaW1hdGlvbkN1cnZlOjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVX
ZWJBbmltYXRpb248RmxvYXRBbmltYXRpb25WYWx1ZSwgV2ViRmxvYXRLZXlmcmFtZSwgV2ViRmxv
YXRBbmltYXRpb25DdXJ2ZT4odmFsdWVzLCBhbmltYXRpb24sIGFuaW1hdGlvbklkLCB0aW1lT2Zm
c2V0LCBjdXJ2ZS5nZXQoKSwgV2ViS2l0OjpXZWJBbmltYXRpb246OlRhcmdldFByb3BlcnR5T3Bh
Y2l0eSwgRmxvYXRTaXplKCkpOworICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcAppbmRleCAxY2U3Nzg1NjRhZmFhMjNkYjc2OTAx
MDM1NTQ0ZDJkMGQ0YmRjNjZlLi44M2Q1MThjYmI0Y2ZhN2EyOTg2NmJkNWI2M2EzOWJjYTllM2Mz
N2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcApAQCAtMzMsNyArMzMsOSBA
QAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2luY2x1ZGUgPHB1Ymxp
Yy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yLmg+CisjaW5jbHVk
ZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkdy
YXBoaWNzQ29udGV4dDNELmg+CiAKIHVzaW5nIFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXI7CkBAIC03Myw3ICs3NSwxMSBAQCBDYW52YXMyRExheWVyQnJpZGdlOjpDYW52YXMyRExheWVy
QnJpZGdlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsCiAgICAgICAgICAg
ICBnckNvbnRleHQtPnJlc2V0Q29udGV4dCgpOwogICAgIH0KIAotICAgIG1fbGF5ZXIgPSBhZG9w
dFB0cihXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKHRoaXMpKTsKKyAgICBpZiAoV2Vi
S2l0OjpXZWJDb21wb3NpdG9yU3VwcG9ydCogY29tcG9zaXRvclN1cHBvcnQgPSBXZWJLaXQ6OlBs
YXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCkpCisgICAgICAgIG1fbGF5ZXIg
PSBjb21wb3NpdG9yU3VwcG9ydC0+Y3JlYXRlRXh0ZXJuYWxUZXh0dXJlTGF5ZXIodGhpcyk7Cisg
ICAgaWYgKCFtX2xheWVyKQorICAgICAgICBtX2xheWVyID0gYWRvcHRQdHIoV2ViS2l0OjpXZWJF
eHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKHRoaXMpKTsKKwogICAgIG1fbGF5ZXItPnNldFRl
eHR1cmVJZCh0ZXh0dXJlSWQpOwogICAgIG1fbGF5ZXItPnNldFJhdGVMaW1pdENvbnRleHQoIVdl
YktpdDo6V2ViQ29tcG9zaXRvcjo6dGhyZWFkaW5nRW5hYmxlZCgpIHx8IG1fdXNlRG91YmxlQnVm
ZmVyaW5nKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCmluZGV4IDYx
MDJhM2U2Zjc4Njk3NjBlMWYzNzgwMmQwNmZlNjVmNGViZDM1MjQuLmM4MmY1MzM0MzVmZGE2YzI5
OWUwOTIwMjdhMDY3NWVmOGMxMDMzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9t
aXVtLmNwcApAQCAtMzcsNyArMzcsOSBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSA8YWxnb3Jp
dGhtPgorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJD
b21wb3NpdG9yLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+CiAj
aW5jbHVkZSA8cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmg+CiAjaW5jbHVkZSA8cHVi
bGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dl
YkdyYXBoaWNzQ29udGV4dDNELmg+CkBAIC0xNTYsOCArMTU4LDEyIEBAIGNsYXNzIERyYXdpbmdC
dWZmZXJQcml2YXRlIDogcHVibGljIFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGll
bnQgewogcHVibGljOgogICAgIGV4cGxpY2l0IERyYXdpbmdCdWZmZXJQcml2YXRlKERyYXdpbmdC
dWZmZXIqIGRyYXdpbmdCdWZmZXIpCiAgICAgICAgIDogbV9kcmF3aW5nQnVmZmVyKGRyYXdpbmdC
dWZmZXIpCi0gICAgICAgICwgbV9sYXllcihhZG9wdFB0cihXZWJLaXQ6OldlYkV4dGVybmFsVGV4
dHVyZUxheWVyOjpjcmVhdGUodGhpcykpKQogICAgIHsKKyAgICAgICAgaWYgKFdlYktpdDo6V2Vi
Q29tcG9zaXRvclN1cHBvcnQqIGNvbXBvc2l0b3JTdXBwb3J0ID0gV2ViS2l0OjpQbGF0Zm9ybTo6
Y3VycmVudCgpLT5jb21wb3NpdG9yU3VwcG9ydCgpKQorICAgICAgICAgICAgbV9sYXllciA9IGNv
bXBvc2l0b3JTdXBwb3J0LT5jcmVhdGVFeHRlcm5hbFRleHR1cmVMYXllcih0aGlzKTsKKyAgICAg
ICAgaWYgKCFtX2xheWVyKQorICAgICAgICAgICAgbV9sYXllciA9IGFkb3B0UHRyKFdlYktpdDo6
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSh0aGlzKSk7CisKICAgICAgICAgR3JhcGhp
Y3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IG1fZHJhd2luZ0J1ZmZlci0+Z3Jh
cGhpY3NDb250ZXh0M0QoKS0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsKICAgICAgICAgbV9sYXll
ci0+c2V0T3BhcXVlKCFhdHRyaWJ1dGVzLmFscGhhKTsKICAgICAgICAgbV9sYXllci0+c2V0UHJl
bXVsdGlwbGllZEFscGhhKGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDc2NWU0NTA5OGVkMjMyMWExZTQ5YWMy
YzgxYzU1NWQxOTMyOTZiYmMuLjU4NTg1M2NiZjU5ZDNiMTQzM2JiOWUxZGQ3NGI0NTQzNTdjMmRl
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtNTcsNyArNTcs
OSBAQAogI2luY2x1ZGUgIlNrTWF0cml4NDQuaCIKICNpbmNsdWRlICJTeXN0ZW1UaW1lLmgiCiAK
KyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQW5pbWF0
aW9uLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+CiAjaW5jbHVk
ZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0
ZXJPcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UG9pbnQuaD4KQEAgLTkw
LDcgKzkyLDEyIEBAIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6R3JhcGhpY3NMYXllckNocm9taXVt
KEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKICAgICAsIG1fcGFnZVNjYWxlQ2hhbmdlZChm
YWxzZSkKIHsKICAgICBtX29wYXF1ZVJlY3RUcmFja2luZ0NvbnRlbnRMYXllckRlbGVnYXRlID0g
YWRvcHRQdHIobmV3IE9wYXF1ZVJlY3RUcmFja2luZ0NvbnRlbnRMYXllckRlbGVnYXRlKHRoaXMp
KTsKLSAgICBtX2xheWVyID0gYWRvcHRQdHIoV2ViQ29udGVudExheWVyOjpjcmVhdGUobV9vcGFx
dWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZS5nZXQoKSkpOworCisgICAgaWYgKFdl
YkNvbXBvc2l0b3JTdXBwb3J0KiBjb21wb3NpdG9yU3VwcG9ydCA9IFBsYXRmb3JtOjpjdXJyZW50
KCktPmNvbXBvc2l0b3JTdXBwb3J0KCkpCisgICAgICAgIG1fbGF5ZXIgPSBjb21wb3NpdG9yU3Vw
cG9ydC0+Y3JlYXRlQ29udGVudExheWVyKG1fb3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExheWVy
RGVsZWdhdGUuZ2V0KCkpOworICAgIGlmICghbV9sYXllcikKKyAgICAgICAgbV9sYXllciA9IGFk
b3B0UHRyKFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKG1fb3BhcXVlUmVjdFRyYWNraW5nQ29udGVu
dExheWVyRGVsZWdhdGUuZ2V0KCkpKTsKKwogICAgIG1fbGF5ZXItPmxheWVyKCktPnNldERyYXdz
Q29udGVudChtX2RyYXdzQ29udGVudCAmJiBtX2NvbnRlbnRzVmlzaWJsZSk7CiAgICAgaWYgKGNs
aWVudCkKICAgICAgICAgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CkBAIC00Njcs
NyArNDc0LDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvSW1h
Z2UoSW1hZ2UqIGltYWdlKQogICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7CiAgICAg
aWYgKGltYWdlKSB7CiAgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlICE9IENvbnRl
bnRzTGF5ZXJGb3JJbWFnZSkgewotICAgICAgICAgICAgbV9pbWFnZUxheWVyID0gYWRvcHRQdHIo
V2ViSW1hZ2VMYXllcjo6Y3JlYXRlKCkpOworCisgICAgICAgICAgICBpZiAoV2ViQ29tcG9zaXRv
clN1cHBvcnQqIGNvbXBvc2l0b3JTdXBwb3J0ID0gUGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9z
aXRvclN1cHBvcnQoKSkKKyAgICAgICAgICAgICAgICBtX2ltYWdlTGF5ZXIgPSBjb21wb3NpdG9y
U3VwcG9ydC0+Y3JlYXRlSW1hZ2VMYXllcigpOworICAgICAgICAgICAgaWYgKCFtX2ltYWdlTGF5
ZXIpCisgICAgICAgICAgICAgICAgbV9pbWFnZUxheWVyID0gYWRvcHRQdHIoV2ViSW1hZ2VMYXll
cjo6Y3JlYXRlKCkpOworCiAgICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIobV9pbWFnZUxh
eWVyLT5sYXllcigpKTsKICAgICAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250
ZW50c0xheWVyRm9ySW1hZ2U7CiAgICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwpA
QCAtNTAwLDcgKzUxMiw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50
c1RvTWVkaWEoUGxhdGZvcm1MYXllciogbGF5ZXIpCiAgICAgc2V0Q29udGVudHNUbyhDb250ZW50
c0xheWVyRm9yVmlkZW8sIGxheWVyKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06
OnNldENvbnRlbnRzVG8oQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSwgV2ViS2l0OjpXZWJM
YXllciogbGF5ZXIpCit2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUbyhD
b250ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlLCBXZWJMYXllciogbGF5ZXIpCiB7CiAgICAgYm9v
bCBjaGlsZHJlbkNoYW5nZWQgPSBmYWxzZTsKICAgICBpZiAobGF5ZXIpIHsKQEAgLTUzMiw3ICs1
NDQsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKGNvbnN0IEtl
eWZyYW1lVmFsdWVMaXN0JiB2YWx1ZXMsIGNvbnN0CiAgICAgaWYgKG1fYW5pbWF0aW9uSWRNYXAu
Y29udGFpbnMoYW5pbWF0aW9uTmFtZSkpCiAgICAgICAgIGFuaW1hdGlvbklkID0gbV9hbmltYXRp
b25JZE1hcC5nZXQoYW5pbWF0aW9uTmFtZSk7CiAKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJBbmlt
YXRpb24+IHRvQWRkKGNyZWF0ZVdlYkFuaW1hdGlvbih2YWx1ZXMsIGFuaW1hdGlvbiwgYW5pbWF0
aW9uSWQsIHRpbWVPZmZzZXQsIGJveFNpemUpKTsKKyAgICBPd25QdHI8V2ViQW5pbWF0aW9uPiB0
b0FkZChjcmVhdGVXZWJBbmltYXRpb24odmFsdWVzLCBhbmltYXRpb24sIGFuaW1hdGlvbklkLCB0
aW1lT2Zmc2V0LCBib3hTaXplKSk7CiAKICAgICBpZiAodG9BZGQpIHsKICAgICAgICAgYW5pbWF0
aW9uSWQgPSB0b0FkZC0+aWQoKTsKQEAgLTY3OCw4ICs2OTAsMTEgQEAgdm9pZCBHcmFwaGljc0xh
eWVyQ2hyb21pdW06OnVwZGF0ZU1hc2tzVG9Cb3VuZHMoKQogdm9pZCBHcmFwaGljc0xheWVyQ2hy
b21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QoKQogewogICAgIGlmIChtX3ByZXNlcnZlczNE
ICYmICFtX3RyYW5zZm9ybUxheWVyKSB7Ci0gICAgICAgIC8vIENyZWF0ZSB0aGUgdHJhbnNmb3Jt
IGxheWVyLgotICAgICAgICBtX3RyYW5zZm9ybUxheWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNy
ZWF0ZSgpKTsKKyAgICAgICAgaWYgKFdlYkNvbXBvc2l0b3JTdXBwb3J0KiBjb21wb3NpdG9yU3Vw
cG9ydCA9IFBsYXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCkpCisgICAgICAg
ICAgICBtX3RyYW5zZm9ybUxheWVyID0gY29tcG9zaXRvclN1cHBvcnQtPmNyZWF0ZUxheWVyKCk7
CisgICAgICAgIGlmICghbV90cmFuc2Zvcm1MYXllcikKKyAgICAgICAgICAgIG1fdHJhbnNmb3Jt
TGF5ZXIgPSBhZG9wdFB0cihXZWJMYXllcjo6Y3JlYXRlKCkpOworCiAgICAgICAgIG1fdHJhbnNm
b3JtTGF5ZXItPnNldFByZXNlcnZlczNEKHRydWUpOwogICAgICAgICBtX3RyYW5zZm9ybUxheWVy
LT5zZXRBbmltYXRpb25EZWxlZ2F0ZSh0aGlzKTsKICAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+
dHJhbnNmZXJBbmltYXRpb25zVG8obV90cmFuc2Zvcm1MYXllci5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9MaW5rSGlnaGxpZ2h0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0xpbmtIaWdobGlnaHQuY3BwCmluZGV4IDJjODA0YThjZDUwYTY0
YzY4YTQ5NjdhNzQ2MzRlYmRiYzlhNjhkNjQuLjliOTI5ZDUxMmY4MTZmZDAxN2YyNjliZGQxM2Yz
ZjQxYzRkOGJhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xpbmtI
aWdobGlnaHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xpbmtIaWdobGln
aHQuY3BwCkBAIC00MSw3ICs0MSw5IEBACiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCiAjaW5j
bHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKKyNpbmNsdWRlIDxwdWJs
aWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQW5pbWF0aW9uQ3VydmUuaD4KKyNp
bmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViRmxvYXRBbmltYXRpb25DdXJ2ZS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFBvaW50
Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KQEAgLTU5LDE2ICs2MSwyMCBAQCBQYXNz
T3duUHRyPExpbmtIaWdobGlnaHQ+IExpbmtIaWdobGlnaHQ6OmNyZWF0ZShOb2RlKiBub2RlLCBX
ZWJWaWV3SW1wbCogb3duaW5nVwogfQogCiBMaW5rSGlnaGxpZ2h0OjpMaW5rSGlnaGxpZ2h0KE5v
ZGUqIG5vZGUsIFdlYlZpZXdJbXBsKiBvd25pbmdXZWJWaWV3SW1wbCkKLSAgICA6IG1fY29udGVu
dExheWVyKGFkb3B0UHRyKFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKHRoaXMpKSkKLSAgICAsIG1f
Y2xpcExheWVyKGFkb3B0UHRyKFdlYkxheWVyOjpjcmVhdGUoKSkpCi0gICAgLCBtX25vZGUobm9k
ZSkKKyAgICA6IG1fbm9kZShub2RlKQogICAgICwgbV9vd25pbmdXZWJWaWV3SW1wbChvd25pbmdX
ZWJWaWV3SW1wbCkKICAgICAsIG1fY3VycmVudEdyYXBoaWNzTGF5ZXIoMCkKICAgICAsIG1fZ2Vv
bWV0cnlOZWVkc1VwZGF0ZShmYWxzZSkKIHsKICAgICBBU1NFUlQobV9ub2RlKTsKICAgICBBU1NF
UlQob3duaW5nV2ViVmlld0ltcGwpOwotCisgICAgaWYgKFdlYkNvbXBvc2l0b3JTdXBwb3J0KiBj
b21wb3NpdG9yU3VwcG9ydCA9IFBsYXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0
KCkpIHsKKyAgICAgICAgbV9jb250ZW50TGF5ZXIgPSBjb21wb3NpdG9yU3VwcG9ydC0+Y3JlYXRl
Q29udGVudExheWVyKHRoaXMpOworICAgICAgICBtX2NsaXBMYXllciA9IGNvbXBvc2l0b3JTdXBw
b3J0LT5jcmVhdGVMYXllcigpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fY29udGVudExheWVy
ID0gYWRvcHRQdHIoV2ViQ29udGVudExheWVyOjpjcmVhdGUodGhpcykpOworICAgICAgICBtX2Ns
aXBMYXllciA9IGFkb3B0UHRyKFdlYkxheWVyOjpjcmVhdGUoKSk7CisgICAgfQogICAgIG1fY2xp
cExheWVyLT5zZXRBbmNob3JQb2ludChXZWJGbG9hdFBvaW50KCkpOwogICAgIG1fY2xpcExheWVy
LT5hZGRDaGlsZChtX2NvbnRlbnRMYXllci0+bGF5ZXIoKSk7CiAgICAgbV9jb250ZW50TGF5ZXIt
PmxheWVyKCktPnNldERyYXdzQ29udGVudChmYWxzZSk7CkBAIC0yMDAsMTMgKzIwNiwyNCBAQCB2
b2lkIExpbmtIaWdobGlnaHQ6OnN0YXJ0SGlnaGxpZ2h0QW5pbWF0aW9uKCkKIAogICAgIG1fY29u
dGVudExheWVyLT5sYXllcigpLT5zZXRPcGFjaXR5KHN0YXJ0T3BhY2l0eSk7CiAKLSAgICBPd25Q
dHI8V2ViRmxvYXRBbmltYXRpb25DdXJ2ZT4gY3VydmUgPSBhZG9wdFB0cihXZWJGbG9hdEFuaW1h
dGlvbkN1cnZlOjpjcmVhdGUoKSk7CisgICAgV2ViQ29tcG9zaXRvclN1cHBvcnQqIGNvbXBvc2l0
b3JTdXBwb3J0ID0gUGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKTsKKwor
ICAgIE93blB0cjxXZWJGbG9hdEFuaW1hdGlvbkN1cnZlPiBjdXJ2ZTsKKyAgICBpZiAoY29tcG9z
aXRvclN1cHBvcnQpCisgICAgICAgIGN1cnZlID0gY29tcG9zaXRvclN1cHBvcnQtPmNyZWF0ZUZs
b2F0QW5pbWF0aW9uQ3VydmUoKTsKKyAgICBlbHNlCisgICAgICAgIGN1cnZlID0gYWRvcHRQdHIo
V2ViRmxvYXRBbmltYXRpb25DdXJ2ZTo6Y3JlYXRlKCkpOworCiAgICAgY3VydmUtPmFkZChXZWJG
bG9hdEtleWZyYW1lKDAsIHN0YXJ0T3BhY2l0eSkpOwogICAgIGN1cnZlLT5hZGQoV2ViRmxvYXRL
ZXlmcmFtZShkdXJhdGlvbiAvIDIsIHN0YXJ0T3BhY2l0eSkpOwogICAgIC8vIEZvciBsYXlvdXQg
dGVzdHMgd2UgZG9uJ3QgZmFkZSBvdXQuCiAgICAgY3VydmUtPmFkZChXZWJGbG9hdEtleWZyYW1l
KGR1cmF0aW9uLCBXZWJLaXQ6OmxheW91dFRlc3RNb2RlKCkgPyBzdGFydE9wYWNpdHkgOiAwKSk7
CiAKLSAgICBtX2FuaW1hdGlvbiA9IGFkb3B0UHRyKFdlYkFuaW1hdGlvbjo6Y3JlYXRlKCpjdXJ2
ZSwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eU9wYWNpdHkpKTsKKyAgICBpZiAoY29tcG9z
aXRvclN1cHBvcnQpCisgICAgICAgIG1fYW5pbWF0aW9uID0gY29tcG9zaXRvclN1cHBvcnQtPmNy
ZWF0ZUFuaW1hdGlvbigqY3VydmUsIFdlYkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHlPcGFjaXR5
KTsKKyAgICBlbHNlCisgICAgICAgIG1fYW5pbWF0aW9uID0gYWRvcHRQdHIoV2ViQW5pbWF0aW9u
OjpjcmVhdGUoKmN1cnZlLCBXZWJBbmltYXRpb246OlRhcmdldFByb3BlcnR5T3BhY2l0eSkpOwor
CiAgICAgbV9jb250ZW50TGF5ZXItPmxheWVyKCktPnNldERyYXdzQ29udGVudCh0cnVlKTsKICAg
ICBtX2NvbnRlbnRMYXllci0+bGF5ZXIoKS0+YWRkQW5pbWF0aW9uKG1fYW5pbWF0aW9uLmdldCgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbC5jcHAKaW5kZXggNzJlODcxNjM3YjdkZGYyMWRjNmM4ZWM4M2Q0NjNkY2Ez
ZDg1ZWJjMS4uNWJhZjhiOTFkNmJiMTIxOTYyNTcyNDAzMWMxOGYwNGI5ZDg0MjJlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVu
dEltcGwuY3BwCkBAIC0yOSwxMSArMjksMTMgQEAKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0u
aD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ1N0cmluZy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJD
YW52YXMuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaD4KICNpbmNs
dWRlIDxwdWJsaWMvV2ViTWltZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJlY3Qu
aD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU2l6ZS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJp
bmcuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlZp
ZGVvTGF5ZXIuaD4KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpbmNsdWRl
ICJSZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKQEAgLTExMSw3ICsxMTMsMTEgQEAgdm9pZCBXZWJN
ZWRpYVBsYXllckNsaWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2VkKCkKICAgICBtX21lZGlhUGxh
eWVyLT5yZWFkeVN0YXRlQ2hhbmdlZCgpOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKICAgICBpZiAoaGFzVmlkZW8oKSAmJiBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkg
JiYgIW1fdmlkZW9MYXllcikgewotICAgICAgICBtX3ZpZGVvTGF5ZXIgPSBhZG9wdFB0cihXZWJW
aWRlb0xheWVyOjpjcmVhdGUodGhpcykpOworICAgICAgICBpZiAoV2ViQ29tcG9zaXRvclN1cHBv
cnQqIGNvbXBvc2l0b3JTdXBwb3J0ID0gUGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1
cHBvcnQoKSkKKyAgICAgICAgICAgIG1fdmlkZW9MYXllciA9IGNvbXBvc2l0b3JTdXBwb3J0LT5j
cmVhdGVWaWRlb0xheWVyKHRoaXMpOworICAgICAgICBpZiAoIW1fdmlkZW9MYXllcikKKyAgICAg
ICAgICAgIG1fdmlkZW9MYXllciA9IGFkb3B0UHRyKFdlYlZpZGVvTGF5ZXI6OmNyZWF0ZSh0aGlz
KSk7CisKICAgICAgICAgbV92aWRlb0xheWVyLT5sYXllcigpLT5zZXRPcGFxdWUobV9vcGFxdWUp
OwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJNZWRpYVBsYXllckNsaWVudEltcGwuaAppbmRleCAzMjlmZDllYzBmNDg4YTllYWFmZWE2ZTk1
YzhmYmIyNDkwNDE1YzBlLi5iZDI5MDdlZDI2MWYxN2ZkYTEyNDk3ZDY4NTMwYzY4ZGNiOTMzOTMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNs
aWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXll
ckNsaWVudEltcGwuaApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVy
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViU3RyZWFtVGV4dHVyZUNsaWVudC5oIgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJWaWRlb0ZyYW1lUHJvdmlkZXIuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViVmlk
ZW9MYXllci5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogCkBAIC01MCw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2Vi
SGVscGVyUGx1Z2luSW1wbDsKIGNsYXNzIFdlYkF1ZGlvU291cmNlUHJvdmlkZXI7CiBjbGFzcyBX
ZWJNZWRpYVBsYXllcjsKK2NsYXNzIFdlYlZpZGVvTGF5ZXI7CiAKIC8vIFRoaXMgY2xhc3Mgc2Vy
dmVzIGFzIGEgYnJpZGdlIGJldHdlZW4gV2ViQ29yZTo6TWVkaWFQbGF5ZXIgYW5kCiAvLyBXZWJL
aXQ6OldlYk1lZGlhUGxheWVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAppbmRleCA3NWE5N2UwZjZjYzVlNDdhZTI5ZGRh
MzAxNWMxNmQ4ZmI3MWEzMWY0Li5hOWRjYzE2NDg3YWZjMDlmN2Q5NWUxYWExNTcxY2M1NGFjY2Q1
Nzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250
YWluZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5D
b250YWluZXJJbXBsLmNwcApAQCAtNzEsNiArNzEsOCBAQAogI2luY2x1ZGUgIldoZWVsRXZlbnQu
aCIKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ2xp
cGJvYXJkLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+CisjaW5j
bHVkZSA8cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmg+CiAjaW5jbHVkZSA8cHVibGlj
L1dlYlJlY3QuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CiAjaW5jbHVkZSA8cHVi
bGljL1dlYlVSTC5oPgpAQCAtMzY4LDYgKzM3MCwxMCBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5l
ckltcGw6OnNldEJhY2tpbmdUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKQogCiAgICAgQVNT
RVJUKCFtX2lvU3VyZmFjZUxheWVyKTsKIAorICAgIGlmICghbV90ZXh0dXJlTGF5ZXIpIHsKKyAg
ICAgICAgaWYgKFdlYkNvbXBvc2l0b3JTdXBwb3J0KiBjb21wb3NpdG9yU3VwcG9ydCA9IFBsYXRm
b3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCkpCisgICAgICAgICAgICBtX3RleHR1
cmVMYXllciA9IGNvbXBvc2l0b3JTdXBwb3J0LT5jcmVhdGVFeHRlcm5hbFRleHR1cmVMYXllcigp
OworICAgIH0KICAgICBpZiAoIW1fdGV4dHVyZUxheWVyKQogICAgICAgICBtX3RleHR1cmVMYXll
ciA9IGFkb3B0UHRyKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUoKSk7CiAgICAgbV90
ZXh0dXJlTGF5ZXItPnNldFRleHR1cmVJZCh0ZXh0dXJlSWQpOwpAQCAtMzkyLDYgKzM5OCwxMCBA
QCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNldEJhY2tpbmdJT1N1cmZhY2VJZChpbnQg
d2lkdGgsCiAKICAgICBBU1NFUlQoIW1fdGV4dHVyZUxheWVyKTsKIAorICAgIGlmICghbV9pb1N1
cmZhY2VMYXllcikgeworICAgICAgICBpZiAoV2ViQ29tcG9zaXRvclN1cHBvcnQqIGNvbXBvc2l0
b3JTdXBwb3J0ID0gUGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKSkKKyAg
ICAgICAgICAgIG1faW9TdXJmYWNlTGF5ZXIgPSBjb21wb3NpdG9yU3VwcG9ydC0+Y3JlYXRlSU9T
dXJmYWNlTGF5ZXIoKTsKKyAgICB9CiAgICAgaWYgKCFtX2lvU3VyZmFjZUxheWVyKQogICAgICAg
ICBtX2lvU3VyZmFjZUxheWVyID0gYWRvcHRQdHIoV2ViSU9TdXJmYWNlTGF5ZXI6OmNyZWF0ZSgp
KTsKICAgICBtX2lvU3VyZmFjZUxheWVyLT5zZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGlvU3VyZmFj
ZUlkLCBXZWJTaXplKHdpZHRoLCBoZWlnaHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaAppbmRleCA5OThiZTZlNDE5Zjg5NWZh
ODIxNzk0MDM5MzQ0YmMxNmYzMTFmOTIzLi5lMjAzYTczNzAxOTAzMWYwNGFkODEyNzkzMTM1OGY2
YTg4MDg4OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVn
aW5Db250YWluZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1
Z2luQ29udGFpbmVySW1wbC5oCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiV2ViUGx1Z2lu
Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAKLSNpbmNsdWRlIDxwdWJsaWMvV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViSU9TdXJmYWNlTGF5
ZXIuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KQEAgLTY3LDYgKzY2LDcgQEAgc3RydWN0IFdlYlByaW50UGFyYW1zOwogY2xhc3MgU2Nyb2xs
YmFyR3JvdXA7CiBjbGFzcyBXZWJQbHVnaW47CiBjbGFzcyBXZWJQbHVnaW5Mb2FkT2JzZXJ2ZXI7
CitjbGFzcyBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjsKIAogY2xhc3MgV2ViUGx1Z2luQ29udGFp
bmVySW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpQbHVnaW5WaWV3QmFzZSwgcHVibGljIFdlYlBsdWdp
bkNvbnRhaW5lciB7CiBwdWJsaWM6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160810</attachid>
            <date>2012-08-27 14:45:05 -0700</date>
            <delta_ts>2012-08-27 17:10:02 -0700</delta_ts>
            <desc>Remove default WebPassOwnPtr constructor, it&apos;s not useful without a copy ctor</desc>
            <filename>bug-95040-20120827144457.patch</filename>
            <type>text/plain</type>
            <size>32911</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2Nzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxMzViMTUyNzI4NTcz
M2FjZTg3MmNjNThiMjBmMjk4MTlkYmJiMmIyLi5lY2Q3MTJhOWIwNWQwMWZlY2MwZTM5Y2Q1NjFh
MjU3N2ZjYWNmOWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wOC0yNyAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gQWRkIENvbXBvc2l0b3JTdXBwb3J0IGludGVyZmFjZSBmb3IgY29uc3RydWN0aW5nIGNvbXBv
c2l0b3IgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTUwNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRzIGEgV2ViQ29tcG9zaXRvclN1cHBvcnQgaW50ZXJmYWNlIGFzIGEgdGVhci1vZmYg
b2YgUGxhdGZvcm1TdXBwb3J0IHNvIHRoZSBlbWJlZGRlciBjYW4gaGFuZGxlIHByb3ZpZGUKKyAg
ICAgICAgaW1wbGVtZW50YXRpb25zIG9mIGNvbXBvc2l0b3IgaW50ZXJmYWNlcy4KKworICAgICAg
ICBBZGRzIGEgbmV3IFdlYlBhc3NPd25QdHI8PiB0eXBlIGZvciB1c2Ugd2hlbiB0aGUgY2FsbGVy
IG9mIGFuIEFQSSBtdXN0IHRha2Ugb3duZXJzaGlwIG9mIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9Q
bGF0Zm9ybS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm06
OmNvbXBvc2l0b3JTdXBwb3J0KToKKyAgICAgICAgKFBsYXRmb3JtKToKKyAgICAgICAgKiBjaHJv
bWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViQ29tcG9zaXRvclN1cHBvcnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb21wb3NpdG9yU3VwcG9ydDo6fldlYkNvbXBvc2l0b3JTdXBwb3J0KToKKwogMjAxMi0wOC0y
MyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gQ29udmVydCBXZWJMYXllclRyZWVWaWV3IGludGVyZmFjZSBpbnRvIHB1cmUgdmlydHVh
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDAzMzQyZmQwODM1ZGU2NzM1NzJjYjVlOWNiNTQ3YWVhZDIxMzcyZmEu
LmIxY2E2YzA2OWFhNWNmNTdiOWQ4OTI5OGU3Y2E4NzM5ZTIxNGQwYzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNiBAQAorMjAxMi0wOC0yNyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRkIENvbXBvc2l0b3JTdXBwb3J0IGludGVy
ZmFjZSBmb3IgY29uc3RydWN0aW5nIGNvbXBvc2l0b3IgY2xhc3NlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUwNDAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2VzIFdlYkNvbXBvc2l0b3JTdXBwb3J0
IGludGVyZmFjZXMgd2hlcmUgYXBwcm9wcmlhdGUgd2l0aCBmYWxsYmFjayB0byB0aGUgb2xkIGNy
ZWF0aW9uIHBhdGggd2hlbgorICAgICAgICBjb21wb3NpdG9yU3VwcG9ydCBpcyBuaWwgdG8gZWFz
ZSB0aGUgdHJhbnNpdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0FuaW1hdGlvblRyYW5zbGF0aW9uVXRpbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVX
ZWJBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
czJETGF5ZXJCcmlkZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRn
ZTo6Q2FudmFzMkRMYXllckJyaWRnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdp
bmdCdWZmZXJQcml2YXRlOjpEcmF3aW5nQnVmZmVyUHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6R3JhcGhpY3NMYXllckNocm9taXVtKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb0lt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVu
dHNUbyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZEFuaW1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxh
eWVyUHJlc2VydmVzM0QpOgorCiAyMDEyLTA4LTI3ICBLZXZpbiBGdW5rICA8a2V2aW4uZnVua0Br
ZGFiLmNvbT4KIAogICAgICAgICBGaXggY29tcGlsYXRpb24gd2hlbiBib3RoIE9TKFdJTkNFKSBh
bmQgUExBVEZPUk0oUVQpIGFyZSB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGI3
ZTRkNTAzYTA0MmE3NjBiYjA4MzkzM2U2M2EwNDJlZTNhYjM2MTIuLjdjNDgxOWNlM2VmZjk3ZjBi
NWVmM2RlMjM4OTI3Y2RiNTY4YmNiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTItMDgtMjcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBDb21wb3NpdG9yU3VwcG9ydCBpbnRlcmZh
Y2UgZm9yIGNvbnN0cnVjdGluZyBjb21wb3NpdG9yIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MDQwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvTGlua0hpZ2hsaWdodC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkxpbmtIaWdobGlnaHQ6OkxpbmtIaWdobGlnaHQpOgorICAgICAgICAo
V2ViS2l0OjpMaW5rSGlnaGxpZ2h0OjpzdGFydEhpZ2hsaWdodEFuaW1hdGlvbik6CisgICAgICAg
ICogc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cmVhZHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIHNy
Yy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
ICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bHVnaW5Db250YWluZXJJbXBsOjpzZXRCYWNraW5nVGV4dHVyZUlkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6c2V0QmFja2luZ0lPU3VyZmFjZUlkKToKKyAgICAg
ICAgKiBzcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oOgorICAgICAgICAoV2ViS2l0KToKKwog
MjAxMi0wOC0yNyAgSnVzdGluIE5vdm9zYWQgIDxqdW5vdkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW0Nocm9taXVtXSBJbXBsZW1lbnRpbmcgYSBnbG9iYWwgbGltaXQgb24gbWVtb3J5IGNvbnN1
bWVkIGJ5IGRlZmVycmVkIDJEIGNhbnZhc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
UGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCmluZGV4IDdhYjA4
MjYyYWZlNzYwNzE0NmU3Y2U0YmE2NGJmNGU1ZjQ3ZjY5MDUuLjJkMzZlYTMxMWM1MWQxNDE3YmIy
NmJkYzM5NDc4MTQ4ZDk2ZmQwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9y
bS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCkBAIC00NCw2ICs0NCw4
IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNsaXBib2FyZC5oJywKICAgICAg
ICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29sb3IuaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYkNvbW1vbi5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2Vi
Q29tcG9zaXRvci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRv
clN1cmZhY2UuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JP
dXRwdXRTdXJmYWNlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3Np
dG9yT3V0cHV0U3VyZmFjZUNsaWVudC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMv
V2ViQ29udGVudExheWVyLmgnLApAQCAtOTEsNiArOTMsNyBAQAogICAgICAgICAgICAgJ2Nocm9t
aXVtL3B1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5uZWxDbGllbnQuaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYk1pbWVSZWdpc3RyeS5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViTm9uQ29weWFibGUuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYlBhc3NPd25QdHIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlBlZXJD
b25uZWN0aW9uMDBIYW5kbGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJQ
ZWVyQ29ubmVjdGlvbjAwSGFuZGxlckNsaWVudC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9QbGF0Zm9ybS5oCmluZGV4IGQ2YmE4NmZlN2ZlODQwYmU2MDJlZWZhOGM0Mzdi
NzM3ZGU4MGY4MmUuLjQ3ZDk5MDVkYzQ5NTMwYjA3MGVkMmY2NWJlZTUzYjEzZDdhY2Q0MGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAorKysg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgKQEAgLTQ5LDYgKzQ5
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBdWRpb0J1czsKIGNsYXNzIFdlYkJs
b2JSZWdpc3RyeTsKIGNsYXNzIFdlYkNsaXBib2FyZDsKK2NsYXNzIFdlYkNvbXBvc2l0b3JTdXBw
b3J0OwogY2xhc3MgV2ViQ29va2llSmFyOwogY2xhc3MgV2ViRmlsZVN5c3RlbTsKIGNsYXNzIFdl
YkZpbGVVdGlsaXRpZXM7CkBAIC00MTEsNiArNDEyLDggQEAgcHVibGljOgogICAgIC8vIFRoaXMg
dmFsdWUgbXVzdCBiZSBjaGVja2VkIGFnYWluIGFmdGVyIGEgY29udGV4dCBsb3NzIGV2ZW50IGFz
IHRoZSBwbGF0Zm9ybSdzIGNhcGFiaWxpdGllcyBtYXkgaGF2ZSBjaGFuZ2VkLgogICAgIHZpcnR1
YWwgYm9vbCBjYW5BY2NlbGVyYXRlMmRDYW52YXMoKSB7IHJldHVybiBmYWxzZTsgfQogCisgICAg
dmlydHVhbCBXZWJDb21wb3NpdG9yU3VwcG9ydCogY29tcG9zaXRvclN1cHBvcnQoKSB7IHJldHVy
biAwOyB9CisKICAgICB2aXJ0dWFsIFdlYkZsaW5nQW5pbWF0b3IqIGNyZWF0ZUZsaW5nQW5pbWF0
b3IoKSB7IHJldHVybiAwOyB9CiAKICAgICAvLyBXZWJSVEMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9ydC5oIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9ydC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE3NjZiNWYxNDg0ZjJlY2UxYjczZDgzMmFkNDk0ZDkxZmYzOWZhMzUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JTdXBw
b3J0LmgKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29tcG9zaXRvclN1cHBv
cnRfaAorI2RlZmluZSBXZWJDb21wb3NpdG9yU3VwcG9ydF9oCisKKyNpbmNsdWRlICJXZWJBbmlt
YXRpb24uaCIKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJDb250ZW50TGF5
ZXIuaCIKKyNpbmNsdWRlICJXZWJFeHRlcm5hbFRleHR1cmVMYXllci5oIgorI2luY2x1ZGUgIldl
YkZsb2F0QW5pbWF0aW9uQ3VydmUuaCIKKyNpbmNsdWRlICJXZWJJT1N1cmZhY2VMYXllci5oIgor
I2luY2x1ZGUgIldlYkltYWdlTGF5ZXIuaCIKKyNpbmNsdWRlICJXZWJMYXllci5oIgorI2luY2x1
ZGUgIldlYkxheWVyVHJlZVZpZXcuaCIKKyNpbmNsdWRlICJXZWJQYXNzT3duUHRyLmgiCisjaW5j
bHVkZSAiV2ViU2Nyb2xsYmFyLmgiCisjaW5jbHVkZSAiV2ViU2Nyb2xsYmFyTGF5ZXIuaCIKKyNp
bmNsdWRlICJXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5LmgiCisjaW5jbHVkZSAiV2ViU2Nyb2xs
YmFyVGhlbWVQYWludGVyLmgiCisjaW5jbHVkZSAiV2ViU29saWRDb2xvckxheWVyLmgiCisjaW5j
bHVkZSAiV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUuaCIKKyNpbmNsdWRlICJXZWJWaWRlb0xh
eWVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJDb250ZW50TGF5ZXJDbGll
bnQ7CitjbGFzcyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudDsKK2NsYXNzIFdlYlZpZGVv
RnJhbWVQcm92aWRlcjsKKworY2xhc3MgV2ViQ29tcG9zaXRvclN1cHBvcnQgeworcHVibGljOgor
ICAgIC8vIE1heSByZXR1cm4gMCBpZiBpbml0aWFsaXphdGlvbiBmYWlscy4KKyAgICB2aXJ0dWFs
IFdlYlBhc3NPd25QdHI8V2ViTGF5ZXJUcmVlVmlldz4gY3JlYXRlTGF5ZXJUcmVlVmlldyhXZWJM
YXllclRyZWVWaWV3Q2xpZW50KiwgY29uc3QgV2ViTGF5ZXImIHJvb3QsIGNvbnN0IFdlYkxheWVy
VHJlZVZpZXc6OlNldHRpbmdzJikgPSAwOworCisKKyAgICAvLyBMYXllcnMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdmlydHVh
bCBXZWJQYXNzT3duUHRyPFdlYkxheWVyPiBjcmVhdGVMYXllcigpID0gMDsKKworICAgIHZpcnR1
YWwgV2ViUGFzc093blB0cjxXZWJDb250ZW50TGF5ZXI+IGNyZWF0ZUNvbnRlbnRMYXllcihXZWJD
b250ZW50TGF5ZXJDbGllbnQqKSA9IDA7CisKKyAgICB2aXJ0dWFsIFdlYlBhc3NPd25QdHI8V2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXI+IGNyZWF0ZUV4dGVybmFsVGV4dHVyZUxheWVyKFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVyQ2xpZW50KiA9IDApID0gMDsKKworICAgIHZpcnR1YWwgV2ViUGFzc093
blB0cjxXZWJJT1N1cmZhY2VMYXllcj4gY3JlYXRlSU9TdXJmYWNlTGF5ZXIoKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIFdlYlBhc3NPd25QdHI8V2ViSW1hZ2VMYXllcj4gY3JlYXRlSW1hZ2VMYXllcigp
ID0gMDsKKworICAgIHZpcnR1YWwgV2ViUGFzc093blB0cjxXZWJTb2xpZENvbG9yTGF5ZXI+IGNy
ZWF0ZVNvbGlkQ29sb3JMYXllcigpID0gMDsKKworICAgIHZpcnR1YWwgV2ViUGFzc093blB0cjxX
ZWJWaWRlb0xheWVyPiBjcmVhdGVWaWRlb0xheWVyKFdlYlZpZGVvRnJhbWVQcm92aWRlciopID0g
MDsKKworICAgIHZpcnR1YWwgV2ViUGFzc093blB0cjxXZWJTY3JvbGxiYXJMYXllcj4gY3JlYXRl
U2Nyb2xsYmFyTGF5ZXIoV2ViUGFzc093blB0cjxXZWJTY3JvbGxiYXI+LCBXZWJTY3JvbGxiYXJU
aGVtZVBhaW50ZXIsIFdlYlBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4pID0g
MDsKKworCisgICAgLy8gQW5pbWF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHZpcnR1YWwgV2ViUGFzc093blB0cjxXZWJBbmlt
YXRpb24+IGNyZWF0ZUFuaW1hdGlvbihjb25zdCBXZWJBbmltYXRpb25DdXJ2ZSYsIFdlYkFuaW1h
dGlvbjo6VGFyZ2V0UHJvcGVydHksIGludCBhbmltYXRpb25JZCA9IDApID0gMDsKKworICAgIHZp
cnR1YWwgV2ViUGFzc093blB0cjxXZWJGbG9hdEFuaW1hdGlvbkN1cnZlPiBjcmVhdGVGbG9hdEFu
aW1hdGlvbkN1cnZlKCkgPSAwOworCisgICAgdmlydHVhbCBXZWJQYXNzT3duUHRyPFdlYlRyYW5z
Zm9ybUFuaW1hdGlvbkN1cnZlPiBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSgpID0gMDsK
KworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIH5XZWJDb21wb3NpdG9yU3VwcG9ydCgpIHsgfQorfTsK
KworfQorCisjZW5kaWYgLy8gV2ViQ29tcG9zaXRvclN1cHBvcnRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQYXNzT3duUHRyLmggYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlBhc3NPd25QdHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTVmOWEy
YWE0YWE1MTcyYWM3Zjc3OTk4YzdhYjA5YmRlNWE3MDIxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQYXNzT3duUHRyLmgKQEAgLTAsMCArMSw5
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViUGFzc093blB0cl9oCisjZGVmaW5lIFdlYlBhc3NPd25Q
dHJfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJ
T04KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
KyNlbHNlCisjaW5jbHVkZSAiYmFzZS9tZW1vcnkvc2NvcGVkX3B0ci5oIgorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCisvLyBVc2UgYSByZXR1cm4gdmFsdWUgb2YgdHlwZSBXZWJQYXNz
T3duUHRyPFQ+IHdoZW4gdGhlIGNhbGxlciB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIHJldHVybmVk
IHZhbHVlLCBmb3IgaW5zdGFuY2UKKy8vIGluIGEgY3JlYXRlRm9vKCkgZmFjdG9yeSBmdW5jdGlv
bi4gRXhhbXBsZToKKy8vCisvLyBUbyBpbXBsZW1lbnQgdGhlIGNsYXNzIFdlYlBhc3NPd25QdHI8
Rm9vPiBjcmVhdGVGb28oKSBpbiBjaHJvbWl1bSBjb2RlLCB3cml0ZToKKy8vCisvLyBXZWJQYXNz
T3duUHRyPEZvbz4gY3JlYXRlRm9vKCkgeworLy8gICBzY29wZWRfcHRyPEZvbz4gZm9vID0gLi4u
OworLy8gICByZXR1cm4gZm9vLlBhc3MoKTsKKy8vIH0KKy8vCisvLyBUbyB1c2Ugb24gdGhlIFdl
YktpdCBzaWRlOgorLy8KKy8vICAgT3duUHRyPEZvbz4gZm9vID0gLi4uLT5jcmVhdGVGb28oKTsK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgV2ViUGFzc093blB0ciA6IHB1YmxpYyBXZWJO
b25Db3B5YWJsZSB7CitwdWJsaWM6CisgICAgfldlYlBhc3NPd25QdHIoKQorICAgIHsKKyAgICAg
ICAgV0VCS0lUX0FTU0VSVCghbV9wdHIpOworICAgIH0KKworCisjaWYgV0VCS0lUX0lNUExFTUVO
VEFUSU9OCisgICAgV2ViUGFzc093blB0cihQYXNzT3duUHRyPFQ+IHB0cikKKyAgICAgICAgOiBt
X3B0cihwdHIubGVha1B0cigpKQorICAgIHsKKyAgICB9CisKKyAgICBvcGVyYXRvciBQYXNzT3du
UHRyPFQ+KCkKKyAgICB7CisgICAgICAgIE93blB0cjxUPiByZXQgPSBhZG9wdFB0cihtX3B0cik7
CisgICAgICAgIG1fcHRyID0gMDsKKyAgICAgICAgcmV0dXJuIHJldC5yZWxlYXNlKCk7CisgICAg
fQorI2Vsc2UKKyAgICBXZWJQYXNzT3duUHRyKHNjb3BlZF9wdHI8VD4gcHRyKQorICAgICAgICA6
IG1fcHRyKHB0ci5yZWxlYXNlKCkpCisgICAgeworICAgIH0KKworICAgIG9wZXJhdG9yIHNjb3Bl
ZF9wdHI8VD4oKQorICAgIHsKKyAgICAgICAgc2NvcGVkX3B0cjxUPiByZXQobV9wdHIpOworICAg
ICAgICBtX3B0ciA9IDA7CisgICAgICAgIHJldHVybiByZXQuUGFzcygpOworICAgIH0KKyNlbmRp
ZgorCitwcml2YXRlOgorICAgIFQqIG1fcHRyOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViUGFz
c093blB0cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9BbmltYXRpb25UcmFuc2xhdGlvblV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsLmNwcAppbmRl
eCA1YjRmOTk3ZjNiMGJjMzFmOTUyMDc0OTk1MDUzZTc1YWNiNjk2ZDc0Li45MDZhY2I1ZmJlODll
Y2YwNzdlMDZmNTk5NGM2MzliZTdmODUxMGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BbmltYXRpb25UcmFuc2xhdGlvblV0aWwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0FuaW1hdGlvblRy
YW5zbGF0aW9uVXRpbC5jcHAKQEAgLTQwLDggKzQwLDEwIEBACiAjaW5jbHVkZSAiVHJhbnNmb3Jt
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgog
CisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkFuaW1h
dGlvbi5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJBbmltYXRpb25DdXJ2ZS5oPgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9ydC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9h
dEFuaW1hdGlvbkN1cnZlLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybUFuaW1hdGlv
bkN1cnZlLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMuaD4KQEAg
LTIxMyw3ICsyMTUsNyBAQCBib29sIGFwcGVuZEtleWZyYW1lV2l0aEN1c3RvbUJlemllclRpbWlu
Z0Z1bmN0aW9uPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlLCBXZWJUcgogfQogCiB0ZW1wbGF0ZSA8
Y2xhc3MgVmFsdWUsIGNsYXNzIEtleWZyYW1lLCBjbGFzcyBDdXJ2ZT4KLVBhc3NPd25QdHI8V2Vi
S2l0OjpXZWJBbmltYXRpb24+IGNyZWF0ZVdlYkFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVl
TGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgaW50IGFuaW1hdGlv
bklkLCBkb3VibGUgdGltZU9mZnNldCwgV2ViS2l0OjpXZWJBbmltYXRpb246OlRhcmdldFByb3Bl
cnR5IHRhcmdldFByb3BlcnR5LCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUpCitQYXNzT3duUHRy
PFdlYktpdDo6V2ViQW5pbWF0aW9uPiBjcmVhdGVXZWJBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVW
YWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGludCBhbmlt
YXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQsIEN1cnZlKiBjdXJ2ZSwgV2ViS2l0OjpXZWJBbmlt
YXRpb246OlRhcmdldFByb3BlcnR5IHRhcmdldFByb3BlcnR5LCBjb25zdCBGbG9hdFNpemUmIGJv
eFNpemUpCiB7CiAgICAgYm9vbCBhbHRlcm5hdGUgPSBmYWxzZTsKICAgICBib29sIHJldmVyc2Ug
PSBmYWxzZTsKQEAgLTIyNSw4ICsyMjcsNiBAQCBQYXNzT3duUHRyPFdlYktpdDo6V2ViQW5pbWF0
aW9uPiBjcmVhdGVXZWJBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbAogICAg
ICAgICAgICAgcmV2ZXJzZSA9IHRydWU7CiAgICAgfQogCi0gICAgT3duUHRyPEN1cnZlPiBjdXJ2
ZSA9IGFkb3B0UHRyKEN1cnZlOjpjcmVhdGUoKSk7Ci0KICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHZhbHVlTGlzdC5zaXplKCk7IGkrKykgewogICAgICAgICBzaXplX3QgaW5kZXggPSByZXZl
cnNlID8gdmFsdWVMaXN0LnNpemUoKSAtIGkgLSAxIDogaTsKICAgICAgICAgY29uc3QgVmFsdWUq
IG9yaWdpbmFsVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBWYWx1ZSo+KHZhbHVlTGlzdC5hdChp
bmRleCkpOwpAQCAtMjc3LDMyICsyNzcsNTAgQEAgUGFzc093blB0cjxXZWJLaXQ6OldlYkFuaW1h
dGlvbj4gY3JlYXRlV2ViQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWwKIAog
ICAgICAgICBib29sIGFkZGVkS2V5ZnJhbWUgPSBmYWxzZTsKICAgICAgICAgaWYgKGlzVXNpbmdD
dXN0b21CZXppZXJUaW1pbmdGdW5jdGlvbikKLSAgICAgICAgICAgIGFkZGVkS2V5ZnJhbWUgPSBh
cHBlbmRLZXlmcmFtZVdpdGhDdXN0b21CZXppZXJUaW1pbmdGdW5jdGlvbjxWYWx1ZSwgS2V5ZnJh
bWUsIEN1cnZlPihjdXJ2ZS5nZXQoKSwga2V5VGltZSwgb3JpZ2luYWxWYWx1ZSwgbGFzdE9yaWdp
bmFsVmFsdWUsIHgxLCB5MSwgeDIsIHkyLCBib3hTaXplKTsKKyAgICAgICAgICAgIGFkZGVkS2V5
ZnJhbWUgPSBhcHBlbmRLZXlmcmFtZVdpdGhDdXN0b21CZXppZXJUaW1pbmdGdW5jdGlvbjxWYWx1
ZSwgS2V5ZnJhbWUsIEN1cnZlPihjdXJ2ZSwga2V5VGltZSwgb3JpZ2luYWxWYWx1ZSwgbGFzdE9y
aWdpbmFsVmFsdWUsIHgxLCB5MSwgeDIsIHkyLCBib3hTaXplKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgYWRkZWRLZXlmcmFtZSA9IGFwcGVuZEtleWZyYW1lV2l0aFN0YW5kYXJkVGltaW5n
RnVuY3Rpb248VmFsdWUsIEtleWZyYW1lLCBDdXJ2ZT4oY3VydmUuZ2V0KCksIGtleVRpbWUsIG9y
aWdpbmFsVmFsdWUsIGxhc3RPcmlnaW5hbFZhbHVlLCB0aW1pbmdGdW5jdGlvblR5cGUsIGJveFNp
emUpOworICAgICAgICAgICAgYWRkZWRLZXlmcmFtZSA9IGFwcGVuZEtleWZyYW1lV2l0aFN0YW5k
YXJkVGltaW5nRnVuY3Rpb248VmFsdWUsIEtleWZyYW1lLCBDdXJ2ZT4oY3VydmUsIGtleVRpbWUs
IG9yaWdpbmFsVmFsdWUsIGxhc3RPcmlnaW5hbFZhbHVlLCB0aW1pbmdGdW5jdGlvblR5cGUsIGJv
eFNpemUpOwogICAgICAgICBpZiAoIWFkZGVkS2V5ZnJhbWUpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJBbmltYXRpb24+IGFuaW0o
YWRvcHRQdHIoV2ViS2l0OjpXZWJBbmltYXRpb246OmNyZWF0ZSgqY3VydmUsIHRhcmdldFByb3Bl
cnR5LCBhbmltYXRpb25JZCkpKTsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJBbmltYXRpb24+IHdl
YkFuaW1hdGlvbjsKKyAgICBpZiAoV2ViQ29tcG9zaXRvclN1cHBvcnQqIGNvbXBvc2l0b3JTdXBw
b3J0ID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9yU3VwcG9ydCgpKQor
ICAgICAgICB3ZWJBbmltYXRpb24gPSBjb21wb3NpdG9yU3VwcG9ydC0+Y3JlYXRlQW5pbWF0aW9u
KCpjdXJ2ZSwgdGFyZ2V0UHJvcGVydHksIGFuaW1hdGlvbklkKTsKKyAgICBlbHNlCisgICAgICAg
IHdlYkFuaW1hdGlvbiA9IGFkb3B0UHRyKFdlYktpdDo6V2ViQW5pbWF0aW9uOjpjcmVhdGUoKmN1
cnZlLCB0YXJnZXRQcm9wZXJ0eSwgYW5pbWF0aW9uSWQpKTsKIAogICAgIGludCBpdGVyYXRpb25z
ID0gKGFuaW1hdGlvbiAmJiBhbmltYXRpb24tPmlzSXRlcmF0aW9uQ291bnRTZXQoKSkgPyBhbmlt
YXRpb24tPml0ZXJhdGlvbkNvdW50KCkgOiAxOwotICAgIGFuaW0tPnNldEl0ZXJhdGlvbnMoaXRl
cmF0aW9ucyk7Ci0gICAgYW5pbS0+c2V0QWx0ZXJuYXRlc0RpcmVjdGlvbihhbHRlcm5hdGUpOwor
ICAgIHdlYkFuaW1hdGlvbi0+c2V0SXRlcmF0aW9ucyhpdGVyYXRpb25zKTsKKyAgICB3ZWJBbmlt
YXRpb24tPnNldEFsdGVybmF0ZXNEaXJlY3Rpb24oYWx0ZXJuYXRlKTsKIAogICAgIC8vIElmIHRp
bWVPZmZzZXQgPiAwLCB0aGVuIHRoZSBhbmltYXRpb24gaGFzIHN0YXJ0ZWQgaW4gdGhlIHBhc3Qu
Ci0gICAgYW5pbS0+c2V0VGltZU9mZnNldCh0aW1lT2Zmc2V0KTsKKyAgICB3ZWJBbmltYXRpb24t
PnNldFRpbWVPZmZzZXQodGltZU9mZnNldCk7CiAKLSAgICByZXR1cm4gYW5pbS5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIHdlYkFuaW1hdGlvbi5yZWxlYXNlKCk7CiB9CiAKIFBhc3NPd25QdHI8V2Vi
S2l0OjpXZWJBbmltYXRpb24+IGNyZWF0ZVdlYkFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVl
TGlzdCYgdmFsdWVzLCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgaW50IGFuaW1hdGlvbklk
LCBkb3VibGUgdGltZU9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBib3hTaXplKQogewotICAgIGlm
ICh2YWx1ZXMucHJvcGVydHkoKSA9PSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKQot
ICAgICAgICByZXR1cm4gY3JlYXRlV2ViQW5pbWF0aW9uPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVl
LCBXZWJUcmFuc2Zvcm1LZXlmcmFtZSwgV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU+KHZhbHVl
cywgYW5pbWF0aW9uLCBhbmltYXRpb25JZCwgdGltZU9mZnNldCwgV2ViS2l0OjpXZWJBbmltYXRp
b246OlRhcmdldFByb3BlcnR5VHJhbnNmb3JtLCBGbG9hdFNpemUoYm94U2l6ZSkpOwogCi0gICAg
aWYgKHZhbHVlcy5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KQotICAgICAg
ICByZXR1cm4gY3JlYXRlV2ViQW5pbWF0aW9uPEZsb2F0QW5pbWF0aW9uVmFsdWUsIFdlYkZsb2F0
S2V5ZnJhbWUsIFdlYkZsb2F0QW5pbWF0aW9uQ3VydmU+KHZhbHVlcywgYW5pbWF0aW9uLCBhbmlt
YXRpb25JZCwgdGltZU9mZnNldCwgV2ViS2l0OjpXZWJBbmltYXRpb246OlRhcmdldFByb3BlcnR5
T3BhY2l0eSwgRmxvYXRTaXplKCkpOworCisgICAgaWYgKHZhbHVlcy5wcm9wZXJ0eSgpID09IEFu
aW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pIHsKKyAgICAgICAgT3duUHRyPFdlYlRyYW5z
Zm9ybUFuaW1hdGlvbkN1cnZlPiBjdXJ2ZTsKKyAgICAgICAgaWYgKFdlYkNvbXBvc2l0b3JTdXBw
b3J0KiBjb21wb3NpdG9yU3VwcG9ydCA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y29t
cG9zaXRvclN1cHBvcnQoKSkKKyAgICAgICAgICAgIGN1cnZlID0gY29tcG9zaXRvclN1cHBvcnQt
PmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGN1cnZlID0gYWRvcHRQdHIoV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU6OmNyZWF0ZSgp
KTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVdlYkFuaW1hdGlvbjxUcmFuc2Zvcm1BbmltYXRpb25W
YWx1ZSwgV2ViVHJhbnNmb3JtS2V5ZnJhbWUsIFdlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlPih2
YWx1ZXMsIGFuaW1hdGlvbiwgYW5pbWF0aW9uSWQsIHRpbWVPZmZzZXQsIGN1cnZlLmdldCgpLCBX
ZWJLaXQ6OldlYkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHlUcmFuc2Zvcm0sIEZsb2F0U2l6ZShi
b3hTaXplKSk7CisgICAgfQorCisgICAgaWYgKHZhbHVlcy5wcm9wZXJ0eSgpID09IEFuaW1hdGVk
UHJvcGVydHlPcGFjaXR5KSB7CisgICAgICAgIE93blB0cjxXZWJGbG9hdEFuaW1hdGlvbkN1cnZl
PiBjdXJ2ZTsKKyAgICAgICAgaWYgKFdlYkNvbXBvc2l0b3JTdXBwb3J0KiBjb21wb3NpdG9yU3Vw
cG9ydCA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKSkK
KyAgICAgICAgICAgIGN1cnZlID0gY29tcG9zaXRvclN1cHBvcnQtPmNyZWF0ZUZsb2F0QW5pbWF0
aW9uQ3VydmUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3VydmUgPSBhZG9wdFB0cihX
ZWJGbG9hdEFuaW1hdGlvbkN1cnZlOjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVX
ZWJBbmltYXRpb248RmxvYXRBbmltYXRpb25WYWx1ZSwgV2ViRmxvYXRLZXlmcmFtZSwgV2ViRmxv
YXRBbmltYXRpb25DdXJ2ZT4odmFsdWVzLCBhbmltYXRpb24sIGFuaW1hdGlvbklkLCB0aW1lT2Zm
c2V0LCBjdXJ2ZS5nZXQoKSwgV2ViS2l0OjpXZWJBbmltYXRpb246OlRhcmdldFByb3BlcnR5T3Bh
Y2l0eSwgRmxvYXRTaXplKCkpOworICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcAppbmRleCAxY2U3Nzg1NjRhZmFhMjNkYjc2OTAx
MDM1NTQ0ZDJkMGQ0YmRjNjZlLi44M2Q1MThjYmI0Y2ZhN2EyOTg2NmJkNWI2M2EzOWJjYTllM2Mz
N2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcApAQCAtMzMsNyArMzMsOSBA
QAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2luY2x1ZGUgPHB1Ymxp
Yy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yLmg+CisjaW5jbHVk
ZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkdy
YXBoaWNzQ29udGV4dDNELmg+CiAKIHVzaW5nIFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXI7CkBAIC03Myw3ICs3NSwxMSBAQCBDYW52YXMyRExheWVyQnJpZGdlOjpDYW52YXMyRExheWVy
QnJpZGdlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsCiAgICAgICAgICAg
ICBnckNvbnRleHQtPnJlc2V0Q29udGV4dCgpOwogICAgIH0KIAotICAgIG1fbGF5ZXIgPSBhZG9w
dFB0cihXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKHRoaXMpKTsKKyAgICBpZiAoV2Vi
S2l0OjpXZWJDb21wb3NpdG9yU3VwcG9ydCogY29tcG9zaXRvclN1cHBvcnQgPSBXZWJLaXQ6OlBs
YXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCkpCisgICAgICAgIG1fbGF5ZXIg
PSBjb21wb3NpdG9yU3VwcG9ydC0+Y3JlYXRlRXh0ZXJuYWxUZXh0dXJlTGF5ZXIodGhpcyk7Cisg
ICAgaWYgKCFtX2xheWVyKQorICAgICAgICBtX2xheWVyID0gYWRvcHRQdHIoV2ViS2l0OjpXZWJF
eHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKHRoaXMpKTsKKwogICAgIG1fbGF5ZXItPnNldFRl
eHR1cmVJZCh0ZXh0dXJlSWQpOwogICAgIG1fbGF5ZXItPnNldFJhdGVMaW1pdENvbnRleHQoIVdl
YktpdDo6V2ViQ29tcG9zaXRvcjo6dGhyZWFkaW5nRW5hYmxlZCgpIHx8IG1fdXNlRG91YmxlQnVm
ZmVyaW5nKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCmluZGV4IDYx
MDJhM2U2Zjc4Njk3NjBlMWYzNzgwMmQwNmZlNjVmNGViZDM1MjQuLmM4MmY1MzM0MzVmZGE2YzI5
OWUwOTIwMjdhMDY3NWVmOGMxMDMzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9t
aXVtLmNwcApAQCAtMzcsNyArMzcsOSBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSA8YWxnb3Jp
dGhtPgorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJD
b21wb3NpdG9yLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+CiAj
aW5jbHVkZSA8cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmg+CiAjaW5jbHVkZSA8cHVi
bGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dl
YkdyYXBoaWNzQ29udGV4dDNELmg+CkBAIC0xNTYsOCArMTU4LDEyIEBAIGNsYXNzIERyYXdpbmdC
dWZmZXJQcml2YXRlIDogcHVibGljIFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGll
bnQgewogcHVibGljOgogICAgIGV4cGxpY2l0IERyYXdpbmdCdWZmZXJQcml2YXRlKERyYXdpbmdC
dWZmZXIqIGRyYXdpbmdCdWZmZXIpCiAgICAgICAgIDogbV9kcmF3aW5nQnVmZmVyKGRyYXdpbmdC
dWZmZXIpCi0gICAgICAgICwgbV9sYXllcihhZG9wdFB0cihXZWJLaXQ6OldlYkV4dGVybmFsVGV4
dHVyZUxheWVyOjpjcmVhdGUodGhpcykpKQogICAgIHsKKyAgICAgICAgaWYgKFdlYktpdDo6V2Vi
Q29tcG9zaXRvclN1cHBvcnQqIGNvbXBvc2l0b3JTdXBwb3J0ID0gV2ViS2l0OjpQbGF0Zm9ybTo6
Y3VycmVudCgpLT5jb21wb3NpdG9yU3VwcG9ydCgpKQorICAgICAgICAgICAgbV9sYXllciA9IGNv
bXBvc2l0b3JTdXBwb3J0LT5jcmVhdGVFeHRlcm5hbFRleHR1cmVMYXllcih0aGlzKTsKKyAgICAg
ICAgaWYgKCFtX2xheWVyKQorICAgICAgICAgICAgbV9sYXllciA9IGFkb3B0UHRyKFdlYktpdDo6
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSh0aGlzKSk7CisKICAgICAgICAgR3JhcGhp
Y3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IG1fZHJhd2luZ0J1ZmZlci0+Z3Jh
cGhpY3NDb250ZXh0M0QoKS0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsKICAgICAgICAgbV9sYXll
ci0+c2V0T3BhcXVlKCFhdHRyaWJ1dGVzLmFscGhhKTsKICAgICAgICAgbV9sYXllci0+c2V0UHJl
bXVsdGlwbGllZEFscGhhKGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDc2NWU0NTA5OGVkMjMyMWExZTQ5YWMy
YzgxYzU1NWQxOTMyOTZiYmMuLjU4NTg1M2NiZjU5ZDNiMTQzM2JiOWUxZGQ3NGI0NTQzNTdjMmRl
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtNTcsNyArNTcs
OSBAQAogI2luY2x1ZGUgIlNrTWF0cml4NDQuaCIKICNpbmNsdWRlICJTeXN0ZW1UaW1lLmgiCiAK
KyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQW5pbWF0
aW9uLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+CiAjaW5jbHVk
ZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0
ZXJPcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UG9pbnQuaD4KQEAgLTkw
LDcgKzkyLDEyIEBAIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6R3JhcGhpY3NMYXllckNocm9taXVt
KEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKICAgICAsIG1fcGFnZVNjYWxlQ2hhbmdlZChm
YWxzZSkKIHsKICAgICBtX29wYXF1ZVJlY3RUcmFja2luZ0NvbnRlbnRMYXllckRlbGVnYXRlID0g
YWRvcHRQdHIobmV3IE9wYXF1ZVJlY3RUcmFja2luZ0NvbnRlbnRMYXllckRlbGVnYXRlKHRoaXMp
KTsKLSAgICBtX2xheWVyID0gYWRvcHRQdHIoV2ViQ29udGVudExheWVyOjpjcmVhdGUobV9vcGFx
dWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZS5nZXQoKSkpOworCisgICAgaWYgKFdl
YkNvbXBvc2l0b3JTdXBwb3J0KiBjb21wb3NpdG9yU3VwcG9ydCA9IFBsYXRmb3JtOjpjdXJyZW50
KCktPmNvbXBvc2l0b3JTdXBwb3J0KCkpCisgICAgICAgIG1fbGF5ZXIgPSBjb21wb3NpdG9yU3Vw
cG9ydC0+Y3JlYXRlQ29udGVudExheWVyKG1fb3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExheWVy
RGVsZWdhdGUuZ2V0KCkpOworICAgIGlmICghbV9sYXllcikKKyAgICAgICAgbV9sYXllciA9IGFk
b3B0UHRyKFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKG1fb3BhcXVlUmVjdFRyYWNraW5nQ29udGVu
dExheWVyRGVsZWdhdGUuZ2V0KCkpKTsKKwogICAgIG1fbGF5ZXItPmxheWVyKCktPnNldERyYXdz
Q29udGVudChtX2RyYXdzQ29udGVudCAmJiBtX2NvbnRlbnRzVmlzaWJsZSk7CiAgICAgaWYgKGNs
aWVudCkKICAgICAgICAgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CkBAIC00Njcs
NyArNDc0LDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvSW1h
Z2UoSW1hZ2UqIGltYWdlKQogICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7CiAgICAg
aWYgKGltYWdlKSB7CiAgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlICE9IENvbnRl
bnRzTGF5ZXJGb3JJbWFnZSkgewotICAgICAgICAgICAgbV9pbWFnZUxheWVyID0gYWRvcHRQdHIo
V2ViSW1hZ2VMYXllcjo6Y3JlYXRlKCkpOworCisgICAgICAgICAgICBpZiAoV2ViQ29tcG9zaXRv
clN1cHBvcnQqIGNvbXBvc2l0b3JTdXBwb3J0ID0gUGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9z
aXRvclN1cHBvcnQoKSkKKyAgICAgICAgICAgICAgICBtX2ltYWdlTGF5ZXIgPSBjb21wb3NpdG9y
U3VwcG9ydC0+Y3JlYXRlSW1hZ2VMYXllcigpOworICAgICAgICAgICAgaWYgKCFtX2ltYWdlTGF5
ZXIpCisgICAgICAgICAgICAgICAgbV9pbWFnZUxheWVyID0gYWRvcHRQdHIoV2ViSW1hZ2VMYXll
cjo6Y3JlYXRlKCkpOworCiAgICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIobV9pbWFnZUxh
eWVyLT5sYXllcigpKTsKICAgICAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250
ZW50c0xheWVyRm9ySW1hZ2U7CiAgICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwpA
QCAtNTAwLDcgKzUxMiw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50
c1RvTWVkaWEoUGxhdGZvcm1MYXllciogbGF5ZXIpCiAgICAgc2V0Q29udGVudHNUbyhDb250ZW50
c0xheWVyRm9yVmlkZW8sIGxheWVyKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06
OnNldENvbnRlbnRzVG8oQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSwgV2ViS2l0OjpXZWJM
YXllciogbGF5ZXIpCit2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUbyhD
b250ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlLCBXZWJMYXllciogbGF5ZXIpCiB7CiAgICAgYm9v
bCBjaGlsZHJlbkNoYW5nZWQgPSBmYWxzZTsKICAgICBpZiAobGF5ZXIpIHsKQEAgLTUzMiw3ICs1
NDQsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKGNvbnN0IEtl
eWZyYW1lVmFsdWVMaXN0JiB2YWx1ZXMsIGNvbnN0CiAgICAgaWYgKG1fYW5pbWF0aW9uSWRNYXAu
Y29udGFpbnMoYW5pbWF0aW9uTmFtZSkpCiAgICAgICAgIGFuaW1hdGlvbklkID0gbV9hbmltYXRp
b25JZE1hcC5nZXQoYW5pbWF0aW9uTmFtZSk7CiAKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJBbmlt
YXRpb24+IHRvQWRkKGNyZWF0ZVdlYkFuaW1hdGlvbih2YWx1ZXMsIGFuaW1hdGlvbiwgYW5pbWF0
aW9uSWQsIHRpbWVPZmZzZXQsIGJveFNpemUpKTsKKyAgICBPd25QdHI8V2ViQW5pbWF0aW9uPiB0
b0FkZChjcmVhdGVXZWJBbmltYXRpb24odmFsdWVzLCBhbmltYXRpb24sIGFuaW1hdGlvbklkLCB0
aW1lT2Zmc2V0LCBib3hTaXplKSk7CiAKICAgICBpZiAodG9BZGQpIHsKICAgICAgICAgYW5pbWF0
aW9uSWQgPSB0b0FkZC0+aWQoKTsKQEAgLTY3OCw4ICs2OTAsMTEgQEAgdm9pZCBHcmFwaGljc0xh
eWVyQ2hyb21pdW06OnVwZGF0ZU1hc2tzVG9Cb3VuZHMoKQogdm9pZCBHcmFwaGljc0xheWVyQ2hy
b21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QoKQogewogICAgIGlmIChtX3ByZXNlcnZlczNE
ICYmICFtX3RyYW5zZm9ybUxheWVyKSB7Ci0gICAgICAgIC8vIENyZWF0ZSB0aGUgdHJhbnNmb3Jt
IGxheWVyLgotICAgICAgICBtX3RyYW5zZm9ybUxheWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNy
ZWF0ZSgpKTsKKyAgICAgICAgaWYgKFdlYkNvbXBvc2l0b3JTdXBwb3J0KiBjb21wb3NpdG9yU3Vw
cG9ydCA9IFBsYXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCkpCisgICAgICAg
ICAgICBtX3RyYW5zZm9ybUxheWVyID0gY29tcG9zaXRvclN1cHBvcnQtPmNyZWF0ZUxheWVyKCk7
CisgICAgICAgIGlmICghbV90cmFuc2Zvcm1MYXllcikKKyAgICAgICAgICAgIG1fdHJhbnNmb3Jt
TGF5ZXIgPSBhZG9wdFB0cihXZWJMYXllcjo6Y3JlYXRlKCkpOworCiAgICAgICAgIG1fdHJhbnNm
b3JtTGF5ZXItPnNldFByZXNlcnZlczNEKHRydWUpOwogICAgICAgICBtX3RyYW5zZm9ybUxheWVy
LT5zZXRBbmltYXRpb25EZWxlZ2F0ZSh0aGlzKTsKICAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+
dHJhbnNmZXJBbmltYXRpb25zVG8obV90cmFuc2Zvcm1MYXllci5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9MaW5rSGlnaGxpZ2h0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0xpbmtIaWdobGlnaHQuY3BwCmluZGV4IDJjODA0YThjZDUwYTY0
YzY4YTQ5NjdhNzQ2MzRlYmRiYzlhNjhkNjQuLjliOTI5ZDUxMmY4MTZmZDAxN2YyNjliZGQxM2Yz
ZjQxYzRkOGJhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xpbmtI
aWdobGlnaHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xpbmtIaWdobGln
aHQuY3BwCkBAIC00MSw3ICs0MSw5IEBACiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCiAjaW5j
bHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKKyNpbmNsdWRlIDxwdWJs
aWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQW5pbWF0aW9uQ3VydmUuaD4KKyNp
bmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViRmxvYXRBbmltYXRpb25DdXJ2ZS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFBvaW50
Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KQEAgLTU5LDE2ICs2MSwyMCBAQCBQYXNz
T3duUHRyPExpbmtIaWdobGlnaHQ+IExpbmtIaWdobGlnaHQ6OmNyZWF0ZShOb2RlKiBub2RlLCBX
ZWJWaWV3SW1wbCogb3duaW5nVwogfQogCiBMaW5rSGlnaGxpZ2h0OjpMaW5rSGlnaGxpZ2h0KE5v
ZGUqIG5vZGUsIFdlYlZpZXdJbXBsKiBvd25pbmdXZWJWaWV3SW1wbCkKLSAgICA6IG1fY29udGVu
dExheWVyKGFkb3B0UHRyKFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKHRoaXMpKSkKLSAgICAsIG1f
Y2xpcExheWVyKGFkb3B0UHRyKFdlYkxheWVyOjpjcmVhdGUoKSkpCi0gICAgLCBtX25vZGUobm9k
ZSkKKyAgICA6IG1fbm9kZShub2RlKQogICAgICwgbV9vd25pbmdXZWJWaWV3SW1wbChvd25pbmdX
ZWJWaWV3SW1wbCkKICAgICAsIG1fY3VycmVudEdyYXBoaWNzTGF5ZXIoMCkKICAgICAsIG1fZ2Vv
bWV0cnlOZWVkc1VwZGF0ZShmYWxzZSkKIHsKICAgICBBU1NFUlQobV9ub2RlKTsKICAgICBBU1NF
UlQob3duaW5nV2ViVmlld0ltcGwpOwotCisgICAgaWYgKFdlYkNvbXBvc2l0b3JTdXBwb3J0KiBj
b21wb3NpdG9yU3VwcG9ydCA9IFBsYXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0
KCkpIHsKKyAgICAgICAgbV9jb250ZW50TGF5ZXIgPSBjb21wb3NpdG9yU3VwcG9ydC0+Y3JlYXRl
Q29udGVudExheWVyKHRoaXMpOworICAgICAgICBtX2NsaXBMYXllciA9IGNvbXBvc2l0b3JTdXBw
b3J0LT5jcmVhdGVMYXllcigpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fY29udGVudExheWVy
ID0gYWRvcHRQdHIoV2ViQ29udGVudExheWVyOjpjcmVhdGUodGhpcykpOworICAgICAgICBtX2Ns
aXBMYXllciA9IGFkb3B0UHRyKFdlYkxheWVyOjpjcmVhdGUoKSk7CisgICAgfQogICAgIG1fY2xp
cExheWVyLT5zZXRBbmNob3JQb2ludChXZWJGbG9hdFBvaW50KCkpOwogICAgIG1fY2xpcExheWVy
LT5hZGRDaGlsZChtX2NvbnRlbnRMYXllci0+bGF5ZXIoKSk7CiAgICAgbV9jb250ZW50TGF5ZXIt
PmxheWVyKCktPnNldERyYXdzQ29udGVudChmYWxzZSk7CkBAIC0yMDAsMTMgKzIwNiwyNCBAQCB2
b2lkIExpbmtIaWdobGlnaHQ6OnN0YXJ0SGlnaGxpZ2h0QW5pbWF0aW9uKCkKIAogICAgIG1fY29u
dGVudExheWVyLT5sYXllcigpLT5zZXRPcGFjaXR5KHN0YXJ0T3BhY2l0eSk7CiAKLSAgICBPd25Q
dHI8V2ViRmxvYXRBbmltYXRpb25DdXJ2ZT4gY3VydmUgPSBhZG9wdFB0cihXZWJGbG9hdEFuaW1h
dGlvbkN1cnZlOjpjcmVhdGUoKSk7CisgICAgV2ViQ29tcG9zaXRvclN1cHBvcnQqIGNvbXBvc2l0
b3JTdXBwb3J0ID0gUGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKTsKKwor
ICAgIE93blB0cjxXZWJGbG9hdEFuaW1hdGlvbkN1cnZlPiBjdXJ2ZTsKKyAgICBpZiAoY29tcG9z
aXRvclN1cHBvcnQpCisgICAgICAgIGN1cnZlID0gY29tcG9zaXRvclN1cHBvcnQtPmNyZWF0ZUZs
b2F0QW5pbWF0aW9uQ3VydmUoKTsKKyAgICBlbHNlCisgICAgICAgIGN1cnZlID0gYWRvcHRQdHIo
V2ViRmxvYXRBbmltYXRpb25DdXJ2ZTo6Y3JlYXRlKCkpOworCiAgICAgY3VydmUtPmFkZChXZWJG
bG9hdEtleWZyYW1lKDAsIHN0YXJ0T3BhY2l0eSkpOwogICAgIGN1cnZlLT5hZGQoV2ViRmxvYXRL
ZXlmcmFtZShkdXJhdGlvbiAvIDIsIHN0YXJ0T3BhY2l0eSkpOwogICAgIC8vIEZvciBsYXlvdXQg
dGVzdHMgd2UgZG9uJ3QgZmFkZSBvdXQuCiAgICAgY3VydmUtPmFkZChXZWJGbG9hdEtleWZyYW1l
KGR1cmF0aW9uLCBXZWJLaXQ6OmxheW91dFRlc3RNb2RlKCkgPyBzdGFydE9wYWNpdHkgOiAwKSk7
CiAKLSAgICBtX2FuaW1hdGlvbiA9IGFkb3B0UHRyKFdlYkFuaW1hdGlvbjo6Y3JlYXRlKCpjdXJ2
ZSwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eU9wYWNpdHkpKTsKKyAgICBpZiAoY29tcG9z
aXRvclN1cHBvcnQpCisgICAgICAgIG1fYW5pbWF0aW9uID0gY29tcG9zaXRvclN1cHBvcnQtPmNy
ZWF0ZUFuaW1hdGlvbigqY3VydmUsIFdlYkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHlPcGFjaXR5
KTsKKyAgICBlbHNlCisgICAgICAgIG1fYW5pbWF0aW9uID0gYWRvcHRQdHIoV2ViQW5pbWF0aW9u
OjpjcmVhdGUoKmN1cnZlLCBXZWJBbmltYXRpb246OlRhcmdldFByb3BlcnR5T3BhY2l0eSkpOwor
CiAgICAgbV9jb250ZW50TGF5ZXItPmxheWVyKCktPnNldERyYXdzQ29udGVudCh0cnVlKTsKICAg
ICBtX2NvbnRlbnRMYXllci0+bGF5ZXIoKS0+YWRkQW5pbWF0aW9uKG1fYW5pbWF0aW9uLmdldCgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbC5jcHAKaW5kZXggNzJlODcxNjM3YjdkZGYyMWRjNmM4ZWM4M2Q0NjNkY2Ez
ZDg1ZWJjMS4uNWJhZjhiOTFkNmJiMTIxOTYyNTcyNDAzMWMxOGYwNGI5ZDg0MjJlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVu
dEltcGwuY3BwCkBAIC0yOSwxMSArMjksMTMgQEAKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0u
aD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ1N0cmluZy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJD
YW52YXMuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaD4KICNpbmNs
dWRlIDxwdWJsaWMvV2ViTWltZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJlY3Qu
aD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU2l6ZS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJp
bmcuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlZp
ZGVvTGF5ZXIuaD4KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpbmNsdWRl
ICJSZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKQEAgLTExMSw3ICsxMTMsMTEgQEAgdm9pZCBXZWJN
ZWRpYVBsYXllckNsaWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2VkKCkKICAgICBtX21lZGlhUGxh
eWVyLT5yZWFkeVN0YXRlQ2hhbmdlZCgpOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKICAgICBpZiAoaGFzVmlkZW8oKSAmJiBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkg
JiYgIW1fdmlkZW9MYXllcikgewotICAgICAgICBtX3ZpZGVvTGF5ZXIgPSBhZG9wdFB0cihXZWJW
aWRlb0xheWVyOjpjcmVhdGUodGhpcykpOworICAgICAgICBpZiAoV2ViQ29tcG9zaXRvclN1cHBv
cnQqIGNvbXBvc2l0b3JTdXBwb3J0ID0gUGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1
cHBvcnQoKSkKKyAgICAgICAgICAgIG1fdmlkZW9MYXllciA9IGNvbXBvc2l0b3JTdXBwb3J0LT5j
cmVhdGVWaWRlb0xheWVyKHRoaXMpOworICAgICAgICBpZiAoIW1fdmlkZW9MYXllcikKKyAgICAg
ICAgICAgIG1fdmlkZW9MYXllciA9IGFkb3B0UHRyKFdlYlZpZGVvTGF5ZXI6OmNyZWF0ZSh0aGlz
KSk7CisKICAgICAgICAgbV92aWRlb0xheWVyLT5sYXllcigpLT5zZXRPcGFxdWUobV9vcGFxdWUp
OwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJNZWRpYVBsYXllckNsaWVudEltcGwuaAppbmRleCAzMjlmZDllYzBmNDg4YTllYWFmZWE2ZTk1
YzhmYmIyNDkwNDE1YzBlLi5iZDI5MDdlZDI2MWYxN2ZkYTEyNDk3ZDY4NTMwYzY4ZGNiOTMzOTMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNs
aWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXll
ckNsaWVudEltcGwuaApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVy
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViU3RyZWFtVGV4dHVyZUNsaWVudC5oIgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJWaWRlb0ZyYW1lUHJvdmlkZXIuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViVmlk
ZW9MYXllci5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogCkBAIC01MCw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2Vi
SGVscGVyUGx1Z2luSW1wbDsKIGNsYXNzIFdlYkF1ZGlvU291cmNlUHJvdmlkZXI7CiBjbGFzcyBX
ZWJNZWRpYVBsYXllcjsKK2NsYXNzIFdlYlZpZGVvTGF5ZXI7CiAKIC8vIFRoaXMgY2xhc3Mgc2Vy
dmVzIGFzIGEgYnJpZGdlIGJldHdlZW4gV2ViQ29yZTo6TWVkaWFQbGF5ZXIgYW5kCiAvLyBXZWJL
aXQ6OldlYk1lZGlhUGxheWVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAppbmRleCA3NWE5N2UwZjZjYzVlNDdhZTI5ZGRh
MzAxNWMxNmQ4ZmI3MWEzMWY0Li5hOWRjYzE2NDg3YWZjMDlmN2Q5NWUxYWExNTcxY2M1NGFjY2Q1
Nzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250
YWluZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5D
b250YWluZXJJbXBsLmNwcApAQCAtNzEsNiArNzEsOCBAQAogI2luY2x1ZGUgIldoZWVsRXZlbnQu
aCIKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ2xp
cGJvYXJkLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+CisjaW5j
bHVkZSA8cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmg+CiAjaW5jbHVkZSA8cHVibGlj
L1dlYlJlY3QuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CiAjaW5jbHVkZSA8cHVi
bGljL1dlYlVSTC5oPgpAQCAtMzY4LDYgKzM3MCwxMCBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5l
ckltcGw6OnNldEJhY2tpbmdUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKQogCiAgICAgQVNT
RVJUKCFtX2lvU3VyZmFjZUxheWVyKTsKIAorICAgIGlmICghbV90ZXh0dXJlTGF5ZXIpIHsKKyAg
ICAgICAgaWYgKFdlYkNvbXBvc2l0b3JTdXBwb3J0KiBjb21wb3NpdG9yU3VwcG9ydCA9IFBsYXRm
b3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCkpCisgICAgICAgICAgICBtX3RleHR1
cmVMYXllciA9IGNvbXBvc2l0b3JTdXBwb3J0LT5jcmVhdGVFeHRlcm5hbFRleHR1cmVMYXllcigp
OworICAgIH0KICAgICBpZiAoIW1fdGV4dHVyZUxheWVyKQogICAgICAgICBtX3RleHR1cmVMYXll
ciA9IGFkb3B0UHRyKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUoKSk7CiAgICAgbV90
ZXh0dXJlTGF5ZXItPnNldFRleHR1cmVJZCh0ZXh0dXJlSWQpOwpAQCAtMzkyLDYgKzM5OCwxMCBA
QCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNldEJhY2tpbmdJT1N1cmZhY2VJZChpbnQg
d2lkdGgsCiAKICAgICBBU1NFUlQoIW1fdGV4dHVyZUxheWVyKTsKIAorICAgIGlmICghbV9pb1N1
cmZhY2VMYXllcikgeworICAgICAgICBpZiAoV2ViQ29tcG9zaXRvclN1cHBvcnQqIGNvbXBvc2l0
b3JTdXBwb3J0ID0gUGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKSkKKyAg
ICAgICAgICAgIG1faW9TdXJmYWNlTGF5ZXIgPSBjb21wb3NpdG9yU3VwcG9ydC0+Y3JlYXRlSU9T
dXJmYWNlTGF5ZXIoKTsKKyAgICB9CiAgICAgaWYgKCFtX2lvU3VyZmFjZUxheWVyKQogICAgICAg
ICBtX2lvU3VyZmFjZUxheWVyID0gYWRvcHRQdHIoV2ViSU9TdXJmYWNlTGF5ZXI6OmNyZWF0ZSgp
KTsKICAgICBtX2lvU3VyZmFjZUxheWVyLT5zZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGlvU3VyZmFj
ZUlkLCBXZWJTaXplKHdpZHRoLCBoZWlnaHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaAppbmRleCA5OThiZTZlNDE5Zjg5NWZh
ODIxNzk0MDM5MzQ0YmMxNmYzMTFmOTIzLi5lMjAzYTczNzAxOTAzMWYwNGFkODEyNzkzMTM1OGY2
YTg4MDg4OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVn
aW5Db250YWluZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1
Z2luQ29udGFpbmVySW1wbC5oCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiV2ViUGx1Z2lu
Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAKLSNpbmNsdWRlIDxwdWJsaWMvV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViSU9TdXJmYWNlTGF5
ZXIuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KQEAgLTY3LDYgKzY2LDcgQEAgc3RydWN0IFdlYlByaW50UGFyYW1zOwogY2xhc3MgU2Nyb2xs
YmFyR3JvdXA7CiBjbGFzcyBXZWJQbHVnaW47CiBjbGFzcyBXZWJQbHVnaW5Mb2FkT2JzZXJ2ZXI7
CitjbGFzcyBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjsKIAogY2xhc3MgV2ViUGx1Z2luQ29udGFp
bmVySW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpQbHVnaW5WaWV3QmFzZSwgcHVibGljIFdlYlBsdWdp
bkNvbnRhaW5lciB7CiBwdWJsaWM6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160861</attachid>
            <date>2012-08-27 17:10:05 -0700</date>
            <delta_ts>2012-08-29 16:15:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95040-20120827170957.patch</filename>
            <type>text/plain</type>
            <size>33606</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBkOGZmN2I5NjI3ODlj
YzI1NGZhM2VhMTc4MmNkMzRkN2Q2ZTFhYmU5Li4yM2Q0OTI4MGU2Mjg4NDUwZDdkOTRiY2JiM2U3
Yjc2OWVhNmQ2YzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wOC0yNyAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gQWRkIENvbXBvc2l0b3JTdXBwb3J0IGludGVyZmFjZSBmb3IgY29uc3RydWN0aW5nIGNvbXBv
c2l0b3IgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTUwNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRzIGEgV2ViQ29tcG9zaXRvclN1cHBvcnQgaW50ZXJmYWNlIGFzIGEgdGVhci1vZmYg
b2YgUGxhdGZvcm1TdXBwb3J0IHNvIHRoZSBlbWJlZGRlciBjYW4gaGFuZGxlIHByb3ZpZGUKKyAg
ICAgICAgaW1wbGVtZW50YXRpb25zIG9mIGNvbXBvc2l0b3IgaW50ZXJmYWNlcy4KKworICAgICAg
ICBBZGRzIGEgbmV3IFdlYlBhc3NPd25QdHI8PiB0eXBlIGZvciB1c2Ugd2hlbiB0aGUgY2FsbGVy
IG9mIGFuIEFQSSBtdXN0IHRha2Ugb3duZXJzaGlwIG9mIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9Q
bGF0Zm9ybS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm06
OmNvbXBvc2l0b3JTdXBwb3J0KToKKyAgICAgICAgKFBsYXRmb3JtKToKKyAgICAgICAgKiBjaHJv
bWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViQ29tcG9zaXRvclN1cHBvcnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb21wb3NpdG9yU3VwcG9ydDo6fldlYkNvbXBvc2l0b3JTdXBwb3J0KToKKwogMjAxMi0wOC0y
NCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gQ2xlYW4gdXAgZGVwZW5kZW5jaWVzIG9mIFdlYlNjcm9sbGJhciBhbmQgV2ViU2Nyb2xs
YmFyTGF5ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNmM5MjQ5ZWI5ZDgwNTMwYjQxZDVhYTI0OTZkOWRmYTYz
NjljNWU2Li4yMDk5ODU5ZWQ2NzA0MDg5Y2RiMjM1MDg2OWExNTlmMWJjMWY1OGJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMDgtMjcgIEphbWVzIFJvYmluc29uICA8amFtZXNy
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBDb21wb3NpdG9yU3VwcG9y
dCBpbnRlcmZhY2UgZm9yIGNvbnN0cnVjdGluZyBjb21wb3NpdG9yIGNsYXNzZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MDQwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlcyBXZWJDb21wb3NpdG9y
U3VwcG9ydCBpbnRlcmZhY2VzIHdoZXJlIGFwcHJvcHJpYXRlIHdpdGggZmFsbGJhY2sgdG8gdGhl
IG9sZCBjcmVhdGlvbiBwYXRoIHdoZW4KKyAgICAgICAgY29tcG9zaXRvclN1cHBvcnQgaXMgbmls
IHRvIGVhc2UgdGhlIHRyYW5zaXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9BbmltYXRpb25UcmFuc2xhdGlvblV0aWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlV2ViQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5
ZXJCcmlkZ2U6OkNhbnZhczJETGF5ZXJCcmlkZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3aW5nQnVmZmVyUHJpdmF0ZTo6RHJhd2luZ0J1ZmZlclByaXZhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OkdyYXBoaWNzTGF5ZXJDaHJv
bWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRl
bnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNl
dENvbnRlbnRzVG8pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjph
ZGRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1
cGRhdGVMYXllclByZXNlcnZlczNEKToKKwogMjAxMi0wOC0yNCAgSmFtZXMgUm9iaW5zb24gIDxq
YW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYkdMIHNob3VsZCBub3QgZmxpcCB0ZXh0
dXJlcyBvbiBwcmVzZW50YXRpb24gaWYgY29udGVudHMgYXJlIHVuY2hhbmdlZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCAzODhiMjIyMDljOTQ5NjUxZmNhMGNhOGE2NzQ5YjhkZWU3YmQz
ODllLi5iMjkwZjFhYjNjMWM2ZGY1YTcwMDJmOWIxYjkxZmVjN2ZmODYxOTUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA4LTI3ICBKYW1lcyBSb2Jp
bnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgQ29t
cG9zaXRvclN1cHBvcnQgaW50ZXJmYWNlIGZvciBjb25zdHJ1Y3RpbmcgY29tcG9zaXRvciBjbGFz
c2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTA0
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3Jj
L0xpbmtIaWdobGlnaHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpMaW5rSGlnaGxpZ2h0OjpMaW5r
SGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6TGlua0hpZ2hsaWdodDo6c3RhcnRIaWdobGln
aHRBbmltYXRpb24pOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnJlYWR5U3RhdGVD
aGFuZ2VkKToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmg6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6c2V0QmFja2luZ1RleHR1
cmVJZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNldEJhY2tp
bmdJT1N1cmZhY2VJZCk6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaDoK
KyAgICAgICAgKFdlYktpdCk6CisKIDIwMTItMDgtMjQgIEphbWVzIFJvYmluc29uICA8amFtZXNy
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENsZWFuIHVwIGRlcGVuZGVuY2ll
cyBvZiBXZWJTY3JvbGxiYXIgYW5kIFdlYlNjcm9sbGJhckxheWVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBp
CmluZGV4IDdhYjA4MjYyYWZlNzYwNzE0NmU3Y2U0YmE2NGJmNGU1ZjQ3ZjY5MDUuLjJkMzZlYTMx
MWM1MWQxNDE3YmIyNmJkYzM5NDc4MTQ4ZDk2ZmQwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0
Zm9ybS9QbGF0Zm9ybS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCkBA
IC00NCw2ICs0NCw4IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNsaXBib2Fy
ZC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29sb3IuaCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbW1vbi5oJywKKyAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViQ29tcG9zaXRvci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMv
V2ViQ29tcG9zaXRvclN1cmZhY2UuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dl
YkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1Ymxp
Yy9XZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZUNsaWVudC5oJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmgnLApAQCAtOTEsNiArOTMsNyBAQAogICAgICAg
ICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5uZWxDbGllbnQuaCcsCiAg
ICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYk1pbWVSZWdpc3RyeS5oJywKICAgICAgICAg
ICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViTm9uQ29weWFibGUuaCcsCisgICAgICAgICAgICAnY2hy
b21pdW0vcHVibGljL1dlYlBhc3NPd25QdHIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJQZWVyQ29ubmVjdGlvbjAwSGFuZGxlckNsaWVudC5oJywKICAgICAgICAgICAg
ICdjaHJvbWl1bS9wdWJsaWMvV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oIGIvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oCmluZGV4IGQ2YmE4NmZlN2ZlODQwYmU2
MDJlZWZhOGM0MzdiNzM3ZGU4MGY4MmUuLjQ3ZDk5MDVkYzQ5NTMwYjA3MGVkMmY2NWJlZTUzYjEz
ZDdhY2Q0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxh
dGZvcm0uaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgK
QEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBdWRpb0J1czsK
IGNsYXNzIFdlYkJsb2JSZWdpc3RyeTsKIGNsYXNzIFdlYkNsaXBib2FyZDsKK2NsYXNzIFdlYkNv
bXBvc2l0b3JTdXBwb3J0OwogY2xhc3MgV2ViQ29va2llSmFyOwogY2xhc3MgV2ViRmlsZVN5c3Rl
bTsKIGNsYXNzIFdlYkZpbGVVdGlsaXRpZXM7CkBAIC00MTEsNiArNDEyLDggQEAgcHVibGljOgog
ICAgIC8vIFRoaXMgdmFsdWUgbXVzdCBiZSBjaGVja2VkIGFnYWluIGFmdGVyIGEgY29udGV4dCBs
b3NzIGV2ZW50IGFzIHRoZSBwbGF0Zm9ybSdzIGNhcGFiaWxpdGllcyBtYXkgaGF2ZSBjaGFuZ2Vk
LgogICAgIHZpcnR1YWwgYm9vbCBjYW5BY2NlbGVyYXRlMmRDYW52YXMoKSB7IHJldHVybiBmYWxz
ZTsgfQogCisgICAgdmlydHVhbCBXZWJDb21wb3NpdG9yU3VwcG9ydCogY29tcG9zaXRvclN1cHBv
cnQoKSB7IHJldHVybiAwOyB9CisKICAgICB2aXJ0dWFsIFdlYkZsaW5nQW5pbWF0b3IqIGNyZWF0
ZUZsaW5nQW5pbWF0b3IoKSB7IHJldHVybiAwOyB9CiAKICAgICAvLyBXZWJSVEMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9y
dC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9y
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjkyN2NmYmVjMTBlNDI0MzFiMDUxMWFlNmJlZThmYzZkMzU5MmFkZGYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNv
bXBvc2l0b3JTdXBwb3J0LmgKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29t
cG9zaXRvclN1cHBvcnRfaAorI2RlZmluZSBXZWJDb21wb3NpdG9yU3VwcG9ydF9oCisKKyNpbmNs
dWRlICJXZWJBbmltYXRpb24uaCIKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJX
ZWJDb250ZW50TGF5ZXIuaCIKKyNpbmNsdWRlICJXZWJFeHRlcm5hbFRleHR1cmVMYXllci5oIgor
I2luY2x1ZGUgIldlYkZsb2F0QW5pbWF0aW9uQ3VydmUuaCIKKyNpbmNsdWRlICJXZWJJT1N1cmZh
Y2VMYXllci5oIgorI2luY2x1ZGUgIldlYkltYWdlTGF5ZXIuaCIKKyNpbmNsdWRlICJXZWJMYXll
ci5oIgorI2luY2x1ZGUgIldlYkxheWVyVHJlZVZpZXcuaCIKKyNpbmNsdWRlICJXZWJQYXNzT3du
UHRyLmgiCisjaW5jbHVkZSAiV2ViU2Nyb2xsYmFyLmgiCisjaW5jbHVkZSAiV2ViU2Nyb2xsYmFy
TGF5ZXIuaCIKKyNpbmNsdWRlICJXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5LmgiCisjaW5jbHVk
ZSAiV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyLmgiCisjaW5jbHVkZSAiV2ViU29saWRDb2xvckxh
eWVyLmgiCisjaW5jbHVkZSAiV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUuaCIKKyNpbmNsdWRl
ICJXZWJWaWRlb0xheWVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJDb250
ZW50TGF5ZXJDbGllbnQ7CitjbGFzcyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudDsKK2Ns
YXNzIFdlYlZpZGVvRnJhbWVQcm92aWRlcjsKKworY2xhc3MgV2ViQ29tcG9zaXRvclN1cHBvcnQg
eworcHVibGljOgorICAgIC8vIE1heSByZXR1cm4gMCBpZiBpbml0aWFsaXphdGlvbiBmYWlscy4K
KyAgICB2aXJ0dWFsIFdlYlBhc3NPd25QdHI8V2ViTGF5ZXJUcmVlVmlldz4gY3JlYXRlTGF5ZXJU
cmVlVmlldyhXZWJMYXllclRyZWVWaWV3Q2xpZW50KiwgY29uc3QgV2ViTGF5ZXImIHJvb3QsIGNv
bnN0IFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzJikgeyByZXR1cm4gV2ViUGFzc093blB0cjxX
ZWJMYXllclRyZWVWaWV3PigpOyB9CisKKworICAgIC8vIExheWVycyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICB2aXJ0dWFsIFdl
YlBhc3NPd25QdHI8V2ViTGF5ZXI+IGNyZWF0ZUxheWVyKCkgeyByZXR1cm4gV2ViUGFzc093blB0
cjxXZWJMYXllcj4oKTsgfQorCisgICAgdmlydHVhbCBXZWJQYXNzT3duUHRyPFdlYkNvbnRlbnRM
YXllcj4gY3JlYXRlQ29udGVudExheWVyKFdlYkNvbnRlbnRMYXllckNsaWVudCopIHsgcmV0dXJu
IFdlYlBhc3NPd25QdHI8V2ViQ29udGVudExheWVyPigpOyB9CisKKyAgICB2aXJ0dWFsIFdlYlBh
c3NPd25QdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+IGNyZWF0ZUV4dGVybmFsVGV4dHVyZUxh
eWVyKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50KiA9IDApIHsgcmV0dXJuIFdlYlBhc3NP
d25QdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+KCk7IH0KKworICAgIHZpcnR1YWwgV2ViUGFz
c093blB0cjxXZWJJT1N1cmZhY2VMYXllcj4gY3JlYXRlSU9TdXJmYWNlTGF5ZXIoKSB7IHJldHVy
biBXZWJQYXNzT3duUHRyPFdlYklPU3VyZmFjZUxheWVyPigpOyB9CisKKyAgICB2aXJ0dWFsIFdl
YlBhc3NPd25QdHI8V2ViSW1hZ2VMYXllcj4gY3JlYXRlSW1hZ2VMYXllcigpIHsgcmV0dXJuIFdl
YlBhc3NPd25QdHI8V2ViSW1hZ2VMYXllcj4oKTsgfQorCisgICAgdmlydHVhbCBXZWJQYXNzT3du
UHRyPFdlYlNvbGlkQ29sb3JMYXllcj4gY3JlYXRlU29saWRDb2xvckxheWVyKCkgeyByZXR1cm4g
V2ViUGFzc093blB0cjxXZWJTb2xpZENvbG9yTGF5ZXI+KCk7IH0KKworICAgIHZpcnR1YWwgV2Vi
UGFzc093blB0cjxXZWJWaWRlb0xheWVyPiBjcmVhdGVWaWRlb0xheWVyKFdlYlZpZGVvRnJhbWVQ
cm92aWRlciopIHsgcmV0dXJuIFdlYlBhc3NPd25QdHI8V2ViVmlkZW9MYXllcj4oKTsgfQorCisg
ICAgdmlydHVhbCBXZWJQYXNzT3duUHRyPFdlYlNjcm9sbGJhckxheWVyPiBjcmVhdGVTY3JvbGxi
YXJMYXllcihXZWJQYXNzT3duUHRyPFdlYlNjcm9sbGJhcj4sIFdlYlNjcm9sbGJhclRoZW1lUGFp
bnRlciwgV2ViUGFzc093blB0cjxXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5PikgeyByZXR1cm4g
V2ViUGFzc093blB0cjxXZWJTY3JvbGxiYXJMYXllcj4oKTsgfQorCisKKyAgICAvLyBBbmltYXRp
b24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisgICAgdmlydHVhbCBXZWJQYXNzT3duUHRyPFdlYkFuaW1hdGlvbj4gY3JlYXRlQW5pbWF0aW9u
KGNvbnN0IFdlYkFuaW1hdGlvbkN1cnZlJiwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSwg
aW50IGFuaW1hdGlvbklkID0gMCkgeyByZXR1cm4gV2ViUGFzc093blB0cjxXZWJBbmltYXRpb24+
KCk7IH0KKworICAgIHZpcnR1YWwgV2ViUGFzc093blB0cjxXZWJGbG9hdEFuaW1hdGlvbkN1cnZl
PiBjcmVhdGVGbG9hdEFuaW1hdGlvbkN1cnZlKCkgeyByZXR1cm4gV2ViUGFzc093blB0cjxXZWJG
bG9hdEFuaW1hdGlvbkN1cnZlPigpOyB9CisKKyAgICB2aXJ0dWFsIFdlYlBhc3NPd25QdHI8V2Vi
VHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU+IGNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKCkg
eyByZXR1cm4gV2ViUGFzc093blB0cjxXZWJUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZT4oKTsgfQor
Citwcml2YXRlOgorICAgIHZpcnR1YWwgfldlYkNvbXBvc2l0b3JTdXBwb3J0KCkgeyB9Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBXZWJDb21wb3NpdG9yU3VwcG9ydF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlBhc3NPd25QdHIuaCBiL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUGFzc093blB0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2M2UwYzM3
NDJmYjdlZjI3YzlkZTY3Y2JjMTU0OWM2NGUyMGZmMzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlBhc3NPd25QdHIuaApAQCAtMCwwICsxLDEw
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViUGFzc093blB0cl9oCisjZGVmaW5lIFdlYlBhc3NPd25Q
dHJfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJ
T04KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
KyNlbHNlCisjaW5jbHVkZSAiYmFzZS9tZW1vcnkvc2NvcGVkX3B0ci5oIgorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCisvLyBVc2UgYSByZXR1cm4gdmFsdWUgb2YgdHlwZSBXZWJQYXNz
T3duUHRyPFQ+IHdoZW4gdGhlIGNhbGxlciB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIHJldHVybmVk
IHZhbHVlLCBmb3IgaW5zdGFuY2UKKy8vIGluIGEgY3JlYXRlRm9vKCkgZmFjdG9yeSBmdW5jdGlv
bi4gRXhhbXBsZToKKy8vCisvLyBUbyBpbXBsZW1lbnQgdGhlIGNsYXNzIFdlYlBhc3NPd25QdHI8
Rm9vPiBjcmVhdGVGb28oKSBpbiBjaHJvbWl1bSBjb2RlLCB3cml0ZToKKy8vCisvLyBXZWJQYXNz
T3duUHRyPEZvbz4gY3JlYXRlRm9vKCkgeworLy8gICBzY29wZWRfcHRyPEZvbz4gZm9vID0gLi4u
OworLy8gICByZXR1cm4gZm9vLlBhc3MoKTsKKy8vIH0KKy8vCisvLyBUbyB1c2Ugb24gdGhlIFdl
YktpdCBzaWRlOgorLy8KKy8vICAgT3duUHRyPEZvbz4gZm9vID0gLi4uLT5jcmVhdGVGb28oKTsK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgV2ViUGFzc093blB0ciA6IHB1YmxpYyBXZWJO
b25Db3B5YWJsZSB7CitwdWJsaWM6CisgICAgV2ViUGFzc093blB0cigpCisgICAgICAgIDogbV9w
dHIoMCkKKyAgICB7CisgICAgfQorCisgICAgfldlYlBhc3NPd25QdHIoKQorICAgIHsKKyAgICAg
ICAgV0VCS0lUX0FTU0VSVCghbV9wdHIpOworICAgIH0KKworCisjaWYgV0VCS0lUX0lNUExFTUVO
VEFUSU9OCisgICAgV2ViUGFzc093blB0cihQYXNzT3duUHRyPFQ+IHB0cikKKyAgICAgICAgOiBt
X3B0cihwdHIubGVha1B0cigpKQorICAgIHsKKyAgICB9CisKKyAgICBvcGVyYXRvciBQYXNzT3du
UHRyPFQ+KCkKKyAgICB7CisgICAgICAgIE93blB0cjxUPiByZXQgPSBhZG9wdFB0cihtX3B0cik7
CisgICAgICAgIG1fcHRyID0gMDsKKyAgICAgICAgcmV0dXJuIHJldC5yZWxlYXNlKCk7CisgICAg
fQorI2Vsc2UKKyAgICBXZWJQYXNzT3duUHRyKHNjb3BlZF9wdHI8VD4gcHRyKQorICAgICAgICA6
IG1fcHRyKHB0ci5yZWxlYXNlKCkpCisgICAgeworICAgIH0KKworICAgIG9wZXJhdG9yIHNjb3Bl
ZF9wdHI8VD4oKQorICAgIHsKKyAgICAgICAgc2NvcGVkX3B0cjxUPiByZXQobV9wdHIpOworICAg
ICAgICBtX3B0ciA9IDA7CisgICAgICAgIHJldHVybiByZXQuUGFzcygpOworICAgIH0KKyNlbmRp
ZgorCitwcml2YXRlOgorICAgIFQqIG1fcHRyOworCisgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBo
YXMgdG8gYmUgZGVjbGFyZWQgYnV0IG5vdCBkZWZpbmVkIHRvIHRyaWdnZXIgbW92ZSBlbXVsYXRp
b24uCisgICAgV2ViUGFzc093blB0cihXZWJQYXNzT3duUHRyJik7Cit9OworCit9CisKKyNlbmRp
ZiAvLyBXZWJQYXNzT3duUHRyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0FuaW1hdGlvblRyYW5zbGF0aW9uVXRpbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BbmltYXRpb25UcmFuc2xhdGlvblV0
aWwuY3BwCmluZGV4IDViNGY5OTdmM2IwYmMzMWY5NTIwNzQ5OTUwNTNlNzVhY2I2OTZkNzQuLjkw
NmFjYjVmYmU4OWVjZjA3N2UwNmY1OTk0YzYzOWJlN2Y4NTEwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0FuaW1hdGlvblRyYW5zbGF0aW9u
VXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
QW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsLmNwcApAQCAtNDAsOCArNDAsMTAgQEAKICNpbmNsdWRl
ICJUcmFuc2Zvcm1PcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiVHJhbnNsYXRlVHJhbnNmb3JtT3Bl
cmF0aW9uLmgiCiAKKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJs
aWMvV2ViQW5pbWF0aW9uLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkFuaW1hdGlvbkN1cnZlLmg+
CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+CiAjaW5jbHVkZSA8cHVi
bGljL1dlYkZsb2F0QW5pbWF0aW9uQ3VydmUuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNm
b3JtQW5pbWF0aW9uQ3VydmUuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtT3BlcmF0
aW9ucy5oPgpAQCAtMjEzLDcgKzIxNSw3IEBAIGJvb2wgYXBwZW5kS2V5ZnJhbWVXaXRoQ3VzdG9t
QmV6aWVyVGltaW5nRnVuY3Rpb248VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUsIFdlYlRyCiB9CiAK
IHRlbXBsYXRlIDxjbGFzcyBWYWx1ZSwgY2xhc3MgS2V5ZnJhbWUsIGNsYXNzIEN1cnZlPgotUGFz
c093blB0cjxXZWJLaXQ6OldlYkFuaW1hdGlvbj4gY3JlYXRlV2ViQW5pbWF0aW9uKGNvbnN0IEtl
eWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBp
bnQgYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1lT2Zmc2V0LCBXZWJLaXQ6OldlYkFuaW1hdGlvbjo6
VGFyZ2V0UHJvcGVydHkgdGFyZ2V0UHJvcGVydHksIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSkK
K1Bhc3NPd25QdHI8V2ViS2l0OjpXZWJBbmltYXRpb24+IGNyZWF0ZVdlYkFuaW1hdGlvbihjb25z
dCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlv
biwgaW50IGFuaW1hdGlvbklkLCBkb3VibGUgdGltZU9mZnNldCwgQ3VydmUqIGN1cnZlLCBXZWJL
aXQ6OldlYkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkgdGFyZ2V0UHJvcGVydHksIGNvbnN0IEZs
b2F0U2l6ZSYgYm94U2l6ZSkKIHsKICAgICBib29sIGFsdGVybmF0ZSA9IGZhbHNlOwogICAgIGJv
b2wgcmV2ZXJzZSA9IGZhbHNlOwpAQCAtMjI1LDggKzIyNyw2IEBAIFBhc3NPd25QdHI8V2ViS2l0
OjpXZWJBbmltYXRpb24+IGNyZWF0ZVdlYkFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlz
dCYgdmFsCiAgICAgICAgICAgICByZXZlcnNlID0gdHJ1ZTsKICAgICB9CiAKLSAgICBPd25QdHI8
Q3VydmU+IGN1cnZlID0gYWRvcHRQdHIoQ3VydmU6OmNyZWF0ZSgpKTsKLQogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsgaSsrKSB7CiAgICAgICAgIHNpemVfdCBp
bmRleCA9IHJldmVyc2UgPyB2YWx1ZUxpc3Quc2l6ZSgpIC0gaSAtIDEgOiBpOwogICAgICAgICBj
b25zdCBWYWx1ZSogb3JpZ2luYWxWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFZhbHVlKj4odmFs
dWVMaXN0LmF0KGluZGV4KSk7CkBAIC0yNzcsMzIgKzI3Nyw1MCBAQCBQYXNzT3duUHRyPFdlYktp
dDo6V2ViQW5pbWF0aW9uPiBjcmVhdGVXZWJBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbAogCiAgICAgICAgIGJvb2wgYWRkZWRLZXlmcmFtZSA9IGZhbHNlOwogICAgICAgICBp
ZiAoaXNVc2luZ0N1c3RvbUJlemllclRpbWluZ0Z1bmN0aW9uKQotICAgICAgICAgICAgYWRkZWRL
ZXlmcmFtZSA9IGFwcGVuZEtleWZyYW1lV2l0aEN1c3RvbUJlemllclRpbWluZ0Z1bmN0aW9uPFZh
bHVlLCBLZXlmcmFtZSwgQ3VydmU+KGN1cnZlLmdldCgpLCBrZXlUaW1lLCBvcmlnaW5hbFZhbHVl
LCBsYXN0T3JpZ2luYWxWYWx1ZSwgeDEsIHkxLCB4MiwgeTIsIGJveFNpemUpOworICAgICAgICAg
ICAgYWRkZWRLZXlmcmFtZSA9IGFwcGVuZEtleWZyYW1lV2l0aEN1c3RvbUJlemllclRpbWluZ0Z1
bmN0aW9uPFZhbHVlLCBLZXlmcmFtZSwgQ3VydmU+KGN1cnZlLCBrZXlUaW1lLCBvcmlnaW5hbFZh
bHVlLCBsYXN0T3JpZ2luYWxWYWx1ZSwgeDEsIHkxLCB4MiwgeTIsIGJveFNpemUpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBhZGRlZEtleWZyYW1lID0gYXBwZW5kS2V5ZnJhbWVXaXRoU3Rh
bmRhcmRUaW1pbmdGdW5jdGlvbjxWYWx1ZSwgS2V5ZnJhbWUsIEN1cnZlPihjdXJ2ZS5nZXQoKSwg
a2V5VGltZSwgb3JpZ2luYWxWYWx1ZSwgbGFzdE9yaWdpbmFsVmFsdWUsIHRpbWluZ0Z1bmN0aW9u
VHlwZSwgYm94U2l6ZSk7CisgICAgICAgICAgICBhZGRlZEtleWZyYW1lID0gYXBwZW5kS2V5ZnJh
bWVXaXRoU3RhbmRhcmRUaW1pbmdGdW5jdGlvbjxWYWx1ZSwgS2V5ZnJhbWUsIEN1cnZlPihjdXJ2
ZSwga2V5VGltZSwgb3JpZ2luYWxWYWx1ZSwgbGFzdE9yaWdpbmFsVmFsdWUsIHRpbWluZ0Z1bmN0
aW9uVHlwZSwgYm94U2l6ZSk7CiAgICAgICAgIGlmICghYWRkZWRLZXlmcmFtZSkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIE93blB0cjxXZWJLaXQ6OldlYkFuaW1h
dGlvbj4gYW5pbShhZG9wdFB0cihXZWJLaXQ6OldlYkFuaW1hdGlvbjo6Y3JlYXRlKCpjdXJ2ZSwg
dGFyZ2V0UHJvcGVydHksIGFuaW1hdGlvbklkKSkpOworICAgIE93blB0cjxXZWJLaXQ6OldlYkFu
aW1hdGlvbj4gd2ViQW5pbWF0aW9uOworICAgIGlmIChXZWJDb21wb3NpdG9yU3VwcG9ydCogY29t
cG9zaXRvclN1cHBvcnQgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JT
dXBwb3J0KCkpCisgICAgICAgIHdlYkFuaW1hdGlvbiA9IGNvbXBvc2l0b3JTdXBwb3J0LT5jcmVh
dGVBbmltYXRpb24oKmN1cnZlLCB0YXJnZXRQcm9wZXJ0eSwgYW5pbWF0aW9uSWQpOworICAgIGVs
c2UKKyAgICAgICAgd2ViQW5pbWF0aW9uID0gYWRvcHRQdHIoV2ViS2l0OjpXZWJBbmltYXRpb246
OmNyZWF0ZSgqY3VydmUsIHRhcmdldFByb3BlcnR5LCBhbmltYXRpb25JZCkpOwogCiAgICAgaW50
IGl0ZXJhdGlvbnMgPSAoYW5pbWF0aW9uICYmIGFuaW1hdGlvbi0+aXNJdGVyYXRpb25Db3VudFNl
dCgpKSA/IGFuaW1hdGlvbi0+aXRlcmF0aW9uQ291bnQoKSA6IDE7Ci0gICAgYW5pbS0+c2V0SXRl
cmF0aW9ucyhpdGVyYXRpb25zKTsKLSAgICBhbmltLT5zZXRBbHRlcm5hdGVzRGlyZWN0aW9uKGFs
dGVybmF0ZSk7CisgICAgd2ViQW5pbWF0aW9uLT5zZXRJdGVyYXRpb25zKGl0ZXJhdGlvbnMpOwor
ICAgIHdlYkFuaW1hdGlvbi0+c2V0QWx0ZXJuYXRlc0RpcmVjdGlvbihhbHRlcm5hdGUpOwogCiAg
ICAgLy8gSWYgdGltZU9mZnNldCA+IDAsIHRoZW4gdGhlIGFuaW1hdGlvbiBoYXMgc3RhcnRlZCBp
biB0aGUgcGFzdC4KLSAgICBhbmltLT5zZXRUaW1lT2Zmc2V0KHRpbWVPZmZzZXQpOworICAgIHdl
YkFuaW1hdGlvbi0+c2V0VGltZU9mZnNldCh0aW1lT2Zmc2V0KTsKIAotICAgIHJldHVybiBhbmlt
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gd2ViQW5pbWF0aW9uLnJlbGVhc2UoKTsKIH0KIAogUGFz
c093blB0cjxXZWJLaXQ6OldlYkFuaW1hdGlvbj4gY3JlYXRlV2ViQW5pbWF0aW9uKGNvbnN0IEtl
eWZyYW1lVmFsdWVMaXN0JiB2YWx1ZXMsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBpbnQg
YW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUp
CiB7Ci0gICAgaWYgKHZhbHVlcy5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm0pCi0gICAgICAgIHJldHVybiBjcmVhdGVXZWJBbmltYXRpb248VHJhbnNmb3JtQW5p
bWF0aW9uVmFsdWUsIFdlYlRyYW5zZm9ybUtleWZyYW1lLCBXZWJUcmFuc2Zvcm1BbmltYXRpb25D
dXJ2ZT4odmFsdWVzLCBhbmltYXRpb24sIGFuaW1hdGlvbklkLCB0aW1lT2Zmc2V0LCBXZWJLaXQ6
OldlYkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHlUcmFuc2Zvcm0sIEZsb2F0U2l6ZShib3hTaXpl
KSk7CiAKLSAgICBpZiAodmFsdWVzLnByb3BlcnR5KCkgPT0gQW5pbWF0ZWRQcm9wZXJ0eU9wYWNp
dHkpCi0gICAgICAgIHJldHVybiBjcmVhdGVXZWJBbmltYXRpb248RmxvYXRBbmltYXRpb25WYWx1
ZSwgV2ViRmxvYXRLZXlmcmFtZSwgV2ViRmxvYXRBbmltYXRpb25DdXJ2ZT4odmFsdWVzLCBhbmlt
YXRpb24sIGFuaW1hdGlvbklkLCB0aW1lT2Zmc2V0LCBXZWJLaXQ6OldlYkFuaW1hdGlvbjo6VGFy
Z2V0UHJvcGVydHlPcGFjaXR5LCBGbG9hdFNpemUoKSk7CisKKyAgICBpZiAodmFsdWVzLnByb3Bl
cnR5KCkgPT0gQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSkgeworICAgICAgICBPd25Q
dHI8V2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU+IGN1cnZlOworICAgICAgICBpZiAoV2ViQ29t
cG9zaXRvclN1cHBvcnQqIGNvbXBvc2l0b3JTdXBwb3J0ID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT5jb21wb3NpdG9yU3VwcG9ydCgpKQorICAgICAgICAgICAgY3VydmUgPSBjb21wb3Np
dG9yU3VwcG9ydC0+Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUoKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgY3VydmUgPSBhZG9wdFB0cihXZWJUcmFuc2Zvcm1BbmltYXRpb25DdXJ2
ZTo6Y3JlYXRlKCkpOworICAgICAgICByZXR1cm4gY3JlYXRlV2ViQW5pbWF0aW9uPFRyYW5zZm9y
bUFuaW1hdGlvblZhbHVlLCBXZWJUcmFuc2Zvcm1LZXlmcmFtZSwgV2ViVHJhbnNmb3JtQW5pbWF0
aW9uQ3VydmU+KHZhbHVlcywgYW5pbWF0aW9uLCBhbmltYXRpb25JZCwgdGltZU9mZnNldCwgY3Vy
dmUuZ2V0KCksIFdlYktpdDo6V2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eVRyYW5zZm9ybSwg
RmxvYXRTaXplKGJveFNpemUpKTsKKyAgICB9CisKKyAgICBpZiAodmFsdWVzLnByb3BlcnR5KCkg
PT0gQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpIHsKKyAgICAgICAgT3duUHRyPFdlYkZsb2F0QW5p
bWF0aW9uQ3VydmU+IGN1cnZlOworICAgICAgICBpZiAoV2ViQ29tcG9zaXRvclN1cHBvcnQqIGNv
bXBvc2l0b3JTdXBwb3J0ID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9y
U3VwcG9ydCgpKQorICAgICAgICAgICAgY3VydmUgPSBjb21wb3NpdG9yU3VwcG9ydC0+Y3JlYXRl
RmxvYXRBbmltYXRpb25DdXJ2ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjdXJ2ZSA9
IGFkb3B0UHRyKFdlYkZsb2F0QW5pbWF0aW9uQ3VydmU6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZVdlYkFuaW1hdGlvbjxGbG9hdEFuaW1hdGlvblZhbHVlLCBXZWJGbG9hdEtleWZy
YW1lLCBXZWJGbG9hdEFuaW1hdGlvbkN1cnZlPih2YWx1ZXMsIGFuaW1hdGlvbiwgYW5pbWF0aW9u
SWQsIHRpbWVPZmZzZXQsIGN1cnZlLmdldCgpLCBXZWJLaXQ6OldlYkFuaW1hdGlvbjo6VGFyZ2V0
UHJvcGVydHlPcGFjaXR5LCBGbG9hdFNpemUoKSk7CisgICAgfQogCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJCcmlkZ2UuY3BwCmluZGV4IDYxNGZlNGI0YTQ1
ZGY0MWU0MjUyYzViMmFkMmZkOWJkYzA5ZWI5ZTguLmIwZTQ4OGI5NmI4MDExODEyZWVmNmQyMTVk
YTU4YWE0OGY3NDA2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJCcmlkZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJCcmlkZ2UuY3BwCkBAIC0z
Myw3ICszMyw5IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCisjaW5j
bHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3Iu
aD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaD4KICNpbmNsdWRlIDxw
dWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KIAogdXNpbmcgV2ViS2l0OjpXZWJFeHRlcm5h
bFRleHR1cmVMYXllcjsKQEAgLTczLDcgKzc1LDExIEBAIENhbnZhczJETGF5ZXJCcmlkZ2U6OkNh
bnZhczJETGF5ZXJCcmlkZ2UoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwK
ICAgICAgICAgICAgIGdyQ29udGV4dC0+cmVzZXRDb250ZXh0KCk7CiAgICAgfQogCi0gICAgbV9s
YXllciA9IGFkb3B0UHRyKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUodGhpcykpOwor
ICAgIGlmIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JTdXBwb3J0KiBjb21wb3NpdG9yU3VwcG9ydCA9
IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKSkKKyAgICAg
ICAgbV9sYXllciA9IGNvbXBvc2l0b3JTdXBwb3J0LT5jcmVhdGVFeHRlcm5hbFRleHR1cmVMYXll
cih0aGlzKTsKKyAgICBpZiAoIW1fbGF5ZXIpCisgICAgICAgIG1fbGF5ZXIgPSBhZG9wdFB0cihX
ZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUodGhpcykpOworCiAgICAgbV9s
YXllci0+c2V0VGV4dHVyZUlkKHRleHR1cmVJZCk7CiAgICAgbV9sYXllci0+c2V0UmF0ZUxpbWl0
Q29udGV4dCghV2ViS2l0OjpXZWJDb21wb3NpdG9yOjp0aHJlYWRpbmdFbmFibGVkKCkgfHwgbV91
c2VEb3VibGVCdWZmZXJpbmcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5j
cHAKaW5kZXggMDY4MzljOTc4MGNlMmZkMDEwMTUwYjc1YjI3MDcyMTVhZDJhZWRjZS4uZDVkNGI2
NzY1Y2NiNjljYTZiNDJjYWU2Nzk3MzU1N2Q3YzFkMTJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5n
QnVmZmVyQ2hyb21pdW0uY3BwCkBAIC0zNyw3ICszNyw5IEBACiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKICNpbmNs
dWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYkNvbXBvc2l0b3IuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclN1
cHBvcnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaD4KICNp
bmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQuaD4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KQEAgLTE2Miw4ICsxNjQsMTIgQEAgY2xh
c3MgRHJhd2luZ0J1ZmZlclByaXZhdGUgOiBwdWJsaWMgV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1
cmVMYXllckNsaWVudCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRHJhd2luZ0J1ZmZlclByaXZh
dGUoRHJhd2luZ0J1ZmZlciogZHJhd2luZ0J1ZmZlcikKICAgICAgICAgOiBtX2RyYXdpbmdCdWZm
ZXIoZHJhd2luZ0J1ZmZlcikKLSAgICAgICAgLCBtX2xheWVyKGFkb3B0UHRyKFdlYktpdDo6V2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSh0aGlzKSkpCiAgICAgeworICAgICAgICBpZiAo
V2ViS2l0OjpXZWJDb21wb3NpdG9yU3VwcG9ydCogY29tcG9zaXRvclN1cHBvcnQgPSBXZWJLaXQ6
OlBsYXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCkpCisgICAgICAgICAgICBt
X2xheWVyID0gY29tcG9zaXRvclN1cHBvcnQtPmNyZWF0ZUV4dGVybmFsVGV4dHVyZUxheWVyKHRo
aXMpOworICAgICAgICBpZiAoIW1fbGF5ZXIpCisgICAgICAgICAgICBtX2xheWVyID0gYWRvcHRQ
dHIoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKHRoaXMpKTsKKwogICAg
ICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gbV9kcmF3aW5n
QnVmZmVyLT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRDb250ZXh0QXR0cmlidXRlcygpOwogICAg
ICAgICBtX2xheWVyLT5zZXRPcGFxdWUoIWF0dHJpYnV0ZXMuYWxwaGEpOwogICAgICAgICBtX2xh
eWVyLT5zZXRQcmVtdWx0aXBsaWVkQWxwaGEoYXR0cmlidXRlcy5wcmVtdWx0aXBsaWVkQWxwaGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
R3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNzY1ZTQ1MDk4ZWQy
MzIxYTFlNDlhYzJjODFjNTU1ZDE5MzI5NmJiYy4uNTg1ODUzY2JmNTlkM2IxNDMzYmI5ZTFkZDc0
YjQ1NDM1N2MyZGVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBA
IC01Nyw3ICs1Nyw5IEBACiAjaW5jbHVkZSAiU2tNYXRyaXg0NC5oIgogI2luY2x1ZGUgIlN5c3Rl
bVRpbWUuaCIKIAorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJBbmltYXRpb24uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQu
aD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9uLmg+CiAjaW5jbHVkZSA8cHVi
bGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRQb2lu
dC5oPgpAQCAtOTAsNyArOTIsMTIgQEAgR3JhcGhpY3NMYXllckNocm9taXVtOjpHcmFwaGljc0xh
eWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQogICAgICwgbV9wYWdlU2Nh
bGVDaGFuZ2VkKGZhbHNlKQogewogICAgIG1fb3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExheWVy
RGVsZWdhdGUgPSBhZG9wdFB0cihuZXcgT3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExheWVyRGVs
ZWdhdGUodGhpcykpOwotICAgIG1fbGF5ZXIgPSBhZG9wdFB0cihXZWJDb250ZW50TGF5ZXI6OmNy
ZWF0ZShtX29wYXF1ZVJlY3RUcmFja2luZ0NvbnRlbnRMYXllckRlbGVnYXRlLmdldCgpKSk7CisK
KyAgICBpZiAoV2ViQ29tcG9zaXRvclN1cHBvcnQqIGNvbXBvc2l0b3JTdXBwb3J0ID0gUGxhdGZv
cm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKSkKKyAgICAgICAgbV9sYXllciA9IGNv
bXBvc2l0b3JTdXBwb3J0LT5jcmVhdGVDb250ZW50TGF5ZXIobV9vcGFxdWVSZWN0VHJhY2tpbmdD
b250ZW50TGF5ZXJEZWxlZ2F0ZS5nZXQoKSk7CisgICAgaWYgKCFtX2xheWVyKQorICAgICAgICBt
X2xheWVyID0gYWRvcHRQdHIoV2ViQ29udGVudExheWVyOjpjcmVhdGUobV9vcGFxdWVSZWN0VHJh
Y2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZS5nZXQoKSkpOworCiAgICAgbV9sYXllci0+bGF5ZXIo
KS0+c2V0RHJhd3NDb250ZW50KG1fZHJhd3NDb250ZW50ICYmIG1fY29udGVudHNWaXNpYmxlKTsK
ICAgICBpZiAoY2xpZW50KQogICAgICAgICBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQo
KTsKQEAgLTQ2Nyw3ICs0NzQsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENv
bnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgYm9vbCBjaGlsZHJlbkNoYW5nZWQgPSBm
YWxzZTsKICAgICBpZiAoaW1hZ2UpIHsKICAgICAgICAgaWYgKG1fY29udGVudHNMYXllclB1cnBv
c2UgIT0gQ29udGVudHNMYXllckZvckltYWdlKSB7Ci0gICAgICAgICAgICBtX2ltYWdlTGF5ZXIg
PSBhZG9wdFB0cihXZWJJbWFnZUxheWVyOjpjcmVhdGUoKSk7CisKKyAgICAgICAgICAgIGlmIChX
ZWJDb21wb3NpdG9yU3VwcG9ydCogY29tcG9zaXRvclN1cHBvcnQgPSBQbGF0Zm9ybTo6Y3VycmVu
dCgpLT5jb21wb3NpdG9yU3VwcG9ydCgpKQorICAgICAgICAgICAgICAgIG1faW1hZ2VMYXllciA9
IGNvbXBvc2l0b3JTdXBwb3J0LT5jcmVhdGVJbWFnZUxheWVyKCk7CisgICAgICAgICAgICBpZiAo
IW1faW1hZ2VMYXllcikKKyAgICAgICAgICAgICAgICBtX2ltYWdlTGF5ZXIgPSBhZG9wdFB0cihX
ZWJJbWFnZUxheWVyOjpjcmVhdGUoKSk7CisKICAgICAgICAgICAgIHNldHVwQ29udGVudHNMYXll
cihtX2ltYWdlTGF5ZXItPmxheWVyKCkpOwogICAgICAgICAgICAgbV9jb250ZW50c0xheWVyUHVy
cG9zZSA9IENvbnRlbnRzTGF5ZXJGb3JJbWFnZTsKICAgICAgICAgICAgIGNoaWxkcmVuQ2hhbmdl
ZCA9IHRydWU7CkBAIC01MDAsNyArNTEyLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06
OnNldENvbnRlbnRzVG9NZWRpYShQbGF0Zm9ybUxheWVyKiBsYXllcikKICAgICBzZXRDb250ZW50
c1RvKENvbnRlbnRzTGF5ZXJGb3JWaWRlbywgbGF5ZXIpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUbyhDb250ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlLCBX
ZWJLaXQ6OldlYkxheWVyKiBsYXllcikKK3ZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRD
b250ZW50c1RvKENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UsIFdlYkxheWVyKiBsYXllcikK
IHsKICAgICBib29sIGNoaWxkcmVuQ2hhbmdlZCA9IGZhbHNlOwogICAgIGlmIChsYXllcikgewpA
QCAtNTMyLDcgKzU0NCw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNocm9taXVtOjphZGRBbmltYXRp
b24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlcywgY29uc3QKICAgICBpZiAobV9hbmlt
YXRpb25JZE1hcC5jb250YWlucyhhbmltYXRpb25OYW1lKSkKICAgICAgICAgYW5pbWF0aW9uSWQg
PSBtX2FuaW1hdGlvbklkTWFwLmdldChhbmltYXRpb25OYW1lKTsKIAotICAgIE93blB0cjxXZWJL
aXQ6OldlYkFuaW1hdGlvbj4gdG9BZGQoY3JlYXRlV2ViQW5pbWF0aW9uKHZhbHVlcywgYW5pbWF0
aW9uLCBhbmltYXRpb25JZCwgdGltZU9mZnNldCwgYm94U2l6ZSkpOworICAgIE93blB0cjxXZWJB
bmltYXRpb24+IHRvQWRkKGNyZWF0ZVdlYkFuaW1hdGlvbih2YWx1ZXMsIGFuaW1hdGlvbiwgYW5p
bWF0aW9uSWQsIHRpbWVPZmZzZXQsIGJveFNpemUpKTsKIAogICAgIGlmICh0b0FkZCkgewogICAg
ICAgICBhbmltYXRpb25JZCA9IHRvQWRkLT5pZCgpOwpAQCAtNjc4LDggKzY5MCwxMSBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTWFza3NUb0JvdW5kcygpCiB2b2lkIEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJQcmVzZXJ2ZXMzRCgpCiB7CiAgICAgaWYgKG1f
cHJlc2VydmVzM0QgJiYgIW1fdHJhbnNmb3JtTGF5ZXIpIHsKLSAgICAgICAgLy8gQ3JlYXRlIHRo
ZSB0cmFuc2Zvcm0gbGF5ZXIuCi0gICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIgPSBhZG9wdFB0cihX
ZWJMYXllcjo6Y3JlYXRlKCkpOworICAgICAgICBpZiAoV2ViQ29tcG9zaXRvclN1cHBvcnQqIGNv
bXBvc2l0b3JTdXBwb3J0ID0gUGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQo
KSkKKyAgICAgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIgPSBjb21wb3NpdG9yU3VwcG9ydC0+Y3Jl
YXRlTGF5ZXIoKTsKKyAgICAgICAgaWYgKCFtX3RyYW5zZm9ybUxheWVyKQorICAgICAgICAgICAg
bV90cmFuc2Zvcm1MYXllciA9IGFkb3B0UHRyKFdlYkxheWVyOjpjcmVhdGUoKSk7CisKICAgICAg
ICAgbV90cmFuc2Zvcm1MYXllci0+c2V0UHJlc2VydmVzM0QodHJ1ZSk7CiAgICAgICAgIG1fdHJh
bnNmb3JtTGF5ZXItPnNldEFuaW1hdGlvbkRlbGVnYXRlKHRoaXMpOwogICAgICAgICBtX2xheWVy
LT5sYXllcigpLT50cmFuc2ZlckFuaW1hdGlvbnNUbyhtX3RyYW5zZm9ybUxheWVyLmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xpbmtIaWdobGlnaHQuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTGlua0hpZ2hsaWdodC5jcHAKaW5kZXggMmM4
MDRhOGNkNTBhNjRjNjhhNDk2N2E3NDYzNGViZGJjOWE2OGQ2NC4uOWI5MjlkNTEyZjgxNmZkMDE3
ZjI2OWJkZDEzZjNmNDFjNGQ4YmExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvTGlua0hpZ2hsaWdodC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
TGlua0hpZ2hsaWdodC5jcHAKQEAgLTQxLDcgKzQxLDkgQEAKICNpbmNsdWRlICJXZWJGcmFtZUlt
cGwuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgorI2lu
Y2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJBbmltYXRpb25D
dXJ2ZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9ydC5oPgogI2luY2x1
ZGUgPHB1YmxpYy9XZWJGbG9hdEFuaW1hdGlvbkN1cnZlLmg+CiAjaW5jbHVkZSA8cHVibGljL1dl
YkZsb2F0UG9pbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUmVjdC5oPgpAQCAtNTksMTYgKzYx
LDIwIEBAIFBhc3NPd25QdHI8TGlua0hpZ2hsaWdodD4gTGlua0hpZ2hsaWdodDo6Y3JlYXRlKE5v
ZGUqIG5vZGUsIFdlYlZpZXdJbXBsKiBvd25pbmdXCiB9CiAKIExpbmtIaWdobGlnaHQ6OkxpbmtI
aWdobGlnaHQoTm9kZSogbm9kZSwgV2ViVmlld0ltcGwqIG93bmluZ1dlYlZpZXdJbXBsKQotICAg
IDogbV9jb250ZW50TGF5ZXIoYWRvcHRQdHIoV2ViQ29udGVudExheWVyOjpjcmVhdGUodGhpcykp
KQotICAgICwgbV9jbGlwTGF5ZXIoYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKSkKLSAgICAs
IG1fbm9kZShub2RlKQorICAgIDogbV9ub2RlKG5vZGUpCiAgICAgLCBtX293bmluZ1dlYlZpZXdJ
bXBsKG93bmluZ1dlYlZpZXdJbXBsKQogICAgICwgbV9jdXJyZW50R3JhcGhpY3NMYXllcigwKQog
ICAgICwgbV9nZW9tZXRyeU5lZWRzVXBkYXRlKGZhbHNlKQogewogICAgIEFTU0VSVChtX25vZGUp
OwogICAgIEFTU0VSVChvd25pbmdXZWJWaWV3SW1wbCk7Ci0KKyAgICBpZiAoV2ViQ29tcG9zaXRv
clN1cHBvcnQqIGNvbXBvc2l0b3JTdXBwb3J0ID0gUGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9z
aXRvclN1cHBvcnQoKSkgeworICAgICAgICBtX2NvbnRlbnRMYXllciA9IGNvbXBvc2l0b3JTdXBw
b3J0LT5jcmVhdGVDb250ZW50TGF5ZXIodGhpcyk7CisgICAgICAgIG1fY2xpcExheWVyID0gY29t
cG9zaXRvclN1cHBvcnQtPmNyZWF0ZUxheWVyKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9j
b250ZW50TGF5ZXIgPSBhZG9wdFB0cihXZWJDb250ZW50TGF5ZXI6OmNyZWF0ZSh0aGlzKSk7Cisg
ICAgICAgIG1fY2xpcExheWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICB9
CiAgICAgbV9jbGlwTGF5ZXItPnNldEFuY2hvclBvaW50KFdlYkZsb2F0UG9pbnQoKSk7CiAgICAg
bV9jbGlwTGF5ZXItPmFkZENoaWxkKG1fY29udGVudExheWVyLT5sYXllcigpKTsKICAgICBtX2Nv
bnRlbnRMYXllci0+bGF5ZXIoKS0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKQEAgLTIwMCwxMyAr
MjA2LDI0IEBAIHZvaWQgTGlua0hpZ2hsaWdodDo6c3RhcnRIaWdobGlnaHRBbmltYXRpb24oKQog
CiAgICAgbV9jb250ZW50TGF5ZXItPmxheWVyKCktPnNldE9wYWNpdHkoc3RhcnRPcGFjaXR5KTsK
IAotICAgIE93blB0cjxXZWJGbG9hdEFuaW1hdGlvbkN1cnZlPiBjdXJ2ZSA9IGFkb3B0UHRyKFdl
YkZsb2F0QW5pbWF0aW9uQ3VydmU6OmNyZWF0ZSgpKTsKKyAgICBXZWJDb21wb3NpdG9yU3VwcG9y
dCogY29tcG9zaXRvclN1cHBvcnQgPSBQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9yU3Vw
cG9ydCgpOworCisgICAgT3duUHRyPFdlYkZsb2F0QW5pbWF0aW9uQ3VydmU+IGN1cnZlOworICAg
IGlmIChjb21wb3NpdG9yU3VwcG9ydCkKKyAgICAgICAgY3VydmUgPSBjb21wb3NpdG9yU3VwcG9y
dC0+Y3JlYXRlRmxvYXRBbmltYXRpb25DdXJ2ZSgpOworICAgIGVsc2UKKyAgICAgICAgY3VydmUg
PSBhZG9wdFB0cihXZWJGbG9hdEFuaW1hdGlvbkN1cnZlOjpjcmVhdGUoKSk7CisKICAgICBjdXJ2
ZS0+YWRkKFdlYkZsb2F0S2V5ZnJhbWUoMCwgc3RhcnRPcGFjaXR5KSk7CiAgICAgY3VydmUtPmFk
ZChXZWJGbG9hdEtleWZyYW1lKGR1cmF0aW9uIC8gMiwgc3RhcnRPcGFjaXR5KSk7CiAgICAgLy8g
Rm9yIGxheW91dCB0ZXN0cyB3ZSBkb24ndCBmYWRlIG91dC4KICAgICBjdXJ2ZS0+YWRkKFdlYkZs
b2F0S2V5ZnJhbWUoZHVyYXRpb24sIFdlYktpdDo6bGF5b3V0VGVzdE1vZGUoKSA/IHN0YXJ0T3Bh
Y2l0eSA6IDApKTsKIAotICAgIG1fYW5pbWF0aW9uID0gYWRvcHRQdHIoV2ViQW5pbWF0aW9uOjpj
cmVhdGUoKmN1cnZlLCBXZWJBbmltYXRpb246OlRhcmdldFByb3BlcnR5T3BhY2l0eSkpOworICAg
IGlmIChjb21wb3NpdG9yU3VwcG9ydCkKKyAgICAgICAgbV9hbmltYXRpb24gPSBjb21wb3NpdG9y
U3VwcG9ydC0+Y3JlYXRlQW5pbWF0aW9uKCpjdXJ2ZSwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9w
ZXJ0eU9wYWNpdHkpOworICAgIGVsc2UKKyAgICAgICAgbV9hbmltYXRpb24gPSBhZG9wdFB0cihX
ZWJBbmltYXRpb246OmNyZWF0ZSgqY3VydmUsIFdlYkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHlP
cGFjaXR5KSk7CisKICAgICBtX2NvbnRlbnRMYXllci0+bGF5ZXIoKS0+c2V0RHJhd3NDb250ZW50
KHRydWUpOwogICAgIG1fY29udGVudExheWVyLT5sYXllcigpLT5hZGRBbmltYXRpb24obV9hbmlt
YXRpb24uZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAppbmRleCA3MmU4NzE2MzdiN2RkZjIxZGM2Yzhl
YzgzZDQ2M2RjYTNkODVlYmMxLi41YmFmOGI5MWQ2YmIxMjE5NjI1NzI0MDMxYzE4ZjA0YjlkODQy
MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXll
ckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbC5jcHAKQEAgLTI5LDExICsyOSwxMyBAQAogI2luY2x1ZGUgPHB1Ymxp
Yy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDU3RyaW5nLmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYkNhbnZhcy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9y
dC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJNaW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxwdWJs
aWMvV2ViUmVjdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTaXplLmg+CiAjaW5jbHVkZSA8cHVi
bGljL1dlYlN0cmluZy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkwuaD4KKyNpbmNsdWRlIDxw
dWJsaWMvV2ViVmlkZW9MYXllci5oPgogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgpAQCAtMTExLDcgKzExMywxMSBA
QCB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cmVhZHlTdGF0ZUNoYW5nZWQoKQogICAg
IG1fbWVkaWFQbGF5ZXItPnJlYWR5U3RhdGVDaGFuZ2VkKCk7CiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQogICAgIGlmIChoYXNWaWRlbygpICYmIHN1cHBvcnRzQWNjZWxlcmF0ZWRS
ZW5kZXJpbmcoKSAmJiAhbV92aWRlb0xheWVyKSB7Ci0gICAgICAgIG1fdmlkZW9MYXllciA9IGFk
b3B0UHRyKFdlYlZpZGVvTGF5ZXI6OmNyZWF0ZSh0aGlzKSk7CisgICAgICAgIGlmIChXZWJDb21w
b3NpdG9yU3VwcG9ydCogY29tcG9zaXRvclN1cHBvcnQgPSBQbGF0Zm9ybTo6Y3VycmVudCgpLT5j
b21wb3NpdG9yU3VwcG9ydCgpKQorICAgICAgICAgICAgbV92aWRlb0xheWVyID0gY29tcG9zaXRv
clN1cHBvcnQtPmNyZWF0ZVZpZGVvTGF5ZXIodGhpcyk7CisgICAgICAgIGlmICghbV92aWRlb0xh
eWVyKQorICAgICAgICAgICAgbV92aWRlb0xheWVyID0gYWRvcHRQdHIoV2ViVmlkZW9MYXllcjo6
Y3JlYXRlKHRoaXMpKTsKKwogICAgICAgICBtX3ZpZGVvTGF5ZXItPmxheWVyKCktPnNldE9wYXF1
ZShtX29wYXF1ZSk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCmluZGV4IDMyOWZkOWVjMGY0ODhh
OWVhYWZlYTZlOTVjOGZiYjI0OTA0MTVjMGUuLmJkMjkwN2VkMjYxZjE3ZmRhMTI0OTdkNjg1MzBj
NjhkY2I5MzM5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiV2Vi
TWVkaWFQbGF5ZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJTdHJlYW1UZXh0dXJlQ2xpZW50Lmgi
CiAjaW5jbHVkZSA8cHVibGljL1dlYlZpZGVvRnJhbWVQcm92aWRlci5oPgotI2luY2x1ZGUgPHB1
YmxpYy9XZWJWaWRlb0xheWVyLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAKQEAgLTUwLDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBXZWJIZWxwZXJQbHVnaW5JbXBsOwogY2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92aWRl
cjsKIGNsYXNzIFdlYk1lZGlhUGxheWVyOworY2xhc3MgV2ViVmlkZW9MYXllcjsKIAogLy8gVGhp
cyBjbGFzcyBzZXJ2ZXMgYXMgYSBicmlkZ2UgYmV0d2VlbiBXZWJDb3JlOjpNZWRpYVBsYXllciBh
bmQKIC8vIFdlYktpdDo6V2ViTWVkaWFQbGF5ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCmluZGV4IDc1YTk3ZTBmNmNj
NWU0N2FlMjlkZGEzMDE1YzE2ZDhmYjcxYTMxZjQuLmE5ZGNjMTY0ODdhZmMwOWY3ZDk1ZTFhYTE1
NzFjYzU0YWNjZDU3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCkBAIC03MSw2ICs3MSw4IEBACiAjaW5jbHVkZSAi
V2hlZWxFdmVudC5oIgogI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1
YmxpYy9XZWJDbGlwYm9hcmQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBv
cnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaD4KICNpbmNs
dWRlIDxwdWJsaWMvV2ViUmVjdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KICNp
bmNsdWRlIDxwdWJsaWMvV2ViVVJMLmg+CkBAIC0zNjgsNiArMzcwLDEwIEBAIHZvaWQgV2ViUGx1
Z2luQ29udGFpbmVySW1wbDo6c2V0QmFja2luZ1RleHR1cmVJZCh1bnNpZ25lZCB0ZXh0dXJlSWQp
CiAKICAgICBBU1NFUlQoIW1faW9TdXJmYWNlTGF5ZXIpOwogCisgICAgaWYgKCFtX3RleHR1cmVM
YXllcikgeworICAgICAgICBpZiAoV2ViQ29tcG9zaXRvclN1cHBvcnQqIGNvbXBvc2l0b3JTdXBw
b3J0ID0gUGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKSkKKyAgICAgICAg
ICAgIG1fdGV4dHVyZUxheWVyID0gY29tcG9zaXRvclN1cHBvcnQtPmNyZWF0ZUV4dGVybmFsVGV4
dHVyZUxheWVyKCk7CisgICAgfQogICAgIGlmICghbV90ZXh0dXJlTGF5ZXIpCiAgICAgICAgIG1f
dGV4dHVyZUxheWVyID0gYWRvcHRQdHIoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSgp
KTsKICAgICBtX3RleHR1cmVMYXllci0+c2V0VGV4dHVyZUlkKHRleHR1cmVJZCk7CkBAIC0zOTIs
NiArMzk4LDEwIEBAIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6c2V0QmFja2luZ0lPU3Vy
ZmFjZUlkKGludCB3aWR0aCwKIAogICAgIEFTU0VSVCghbV90ZXh0dXJlTGF5ZXIpOwogCisgICAg
aWYgKCFtX2lvU3VyZmFjZUxheWVyKSB7CisgICAgICAgIGlmIChXZWJDb21wb3NpdG9yU3VwcG9y
dCogY29tcG9zaXRvclN1cHBvcnQgPSBQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9yU3Vw
cG9ydCgpKQorICAgICAgICAgICAgbV9pb1N1cmZhY2VMYXllciA9IGNvbXBvc2l0b3JTdXBwb3J0
LT5jcmVhdGVJT1N1cmZhY2VMYXllcigpOworICAgIH0KICAgICBpZiAoIW1faW9TdXJmYWNlTGF5
ZXIpCiAgICAgICAgIG1faW9TdXJmYWNlTGF5ZXIgPSBhZG9wdFB0cihXZWJJT1N1cmZhY2VMYXll
cjo6Y3JlYXRlKCkpOwogICAgIG1faW9TdXJmYWNlTGF5ZXItPnNldElPU3VyZmFjZVByb3BlcnRp
ZXMoaW9TdXJmYWNlSWQsIFdlYlNpemUod2lkdGgsIGhlaWdodCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oCmluZGV4IDk5OGJl
NmU0MTlmODk1ZmE4MjE3OTQwMzkzNDRiYzE2ZjMxMWY5MjMuLmUyMDNhNzM3MDE5MDMxZjA0YWQ4
MTI3OTMxMzU4ZjZhODgwODg5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmgKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRl
ICJXZWJQbHVnaW5Db250YWluZXIuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAotI2luY2x1ZGUg
PHB1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJJ
T1N1cmZhY2VMYXllci5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgpAQCAtNjcsNiArNjYsNyBAQCBzdHJ1Y3QgV2ViUHJpbnRQYXJhbXM7CiBj
bGFzcyBTY3JvbGxiYXJHcm91cDsKIGNsYXNzIFdlYlBsdWdpbjsKIGNsYXNzIFdlYlBsdWdpbkxv
YWRPYnNlcnZlcjsKK2NsYXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOwogCiBjbGFzcyBXZWJQ
bHVnaW5Db250YWluZXJJbXBsIDogcHVibGljIFdlYkNvcmU6OlBsdWdpblZpZXdCYXNlLCBwdWJs
aWMgV2ViUGx1Z2luQ29udGFpbmVyIHsKIHB1YmxpYzoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161350</attachid>
            <date>2012-08-29 16:15:54 -0700</date>
            <delta_ts>2012-08-29 16:18:33 -0700</delta_ts>
            <desc>consistent fallback behavior</desc>
            <filename>bug-95040-20120829161544.patch</filename>
            <type>text/plain</type>
            <size>33745</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhYjIxZTA1NWU0MGFm
ZTU1NzAxNTMyNzJkMDljNDFkMmQ4OTBmZGIxLi5iYTY2MjVjMWJjOWM1NWU4YmFkOTVkMzQzZjEz
OWVhMjE1YzI3NjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wOC0yNyAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gQWRkIENvbXBvc2l0b3JTdXBwb3J0IGludGVyZmFjZSBmb3IgY29uc3RydWN0aW5nIGNvbXBv
c2l0b3IgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTUwNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRzIGEgV2ViQ29tcG9zaXRvclN1cHBvcnQgaW50ZXJmYWNlIGFzIGEgdGVhci1vZmYg
b2YgUGxhdGZvcm1TdXBwb3J0IHNvIHRoZSBlbWJlZGRlciBjYW4gaGFuZGxlIHByb3ZpZGUKKyAg
ICAgICAgaW1wbGVtZW50YXRpb25zIG9mIGNvbXBvc2l0b3IgaW50ZXJmYWNlcy4KKworICAgICAg
ICBBZGRzIGEgbmV3IFdlYlBhc3NPd25QdHI8PiB0eXBlIGZvciB1c2Ugd2hlbiB0aGUgY2FsbGVy
IG9mIGFuIEFQSSBtdXN0IHRha2Ugb3duZXJzaGlwIG9mIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9Q
bGF0Zm9ybS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm06
OmNvbXBvc2l0b3JTdXBwb3J0KToKKyAgICAgICAgKFBsYXRmb3JtKToKKyAgICAgICAgKiBjaHJv
bWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViQ29tcG9zaXRvclN1cHBvcnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb21wb3NpdG9yU3VwcG9ydDo6fldlYkNvbXBvc2l0b3JTdXBwb3J0KToKKwogMjAxMi0wOC0y
NyAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIFNob3VsZCBhY2NlbGVyYXRlIHJvdGF0aW9ucyBvZiA+PSAxODAgZGVncmVlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDcyZWUzYjdiZTZiY2JlZDQxMzBhOGM4NzAzMTIzNmNlODk1NGIxYzcuLjA3NTRkZWJk
NWE3YzAxM2M5NWZiNGEyM2Y5YTE3YjNmNTZjZGY5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NSBAQAorMjAxMi0wOC0yNyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gQWRkIENvbXBvc2l0b3JTdXBwb3J0IGludGVyZmFjZSBmb3Ig
Y29uc3RydWN0aW5nIGNvbXBvc2l0b3IgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUwNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2VzIFdlYkNvbXBvc2l0b3JTdXBwb3J0IGludGVyZmFj
ZXMgd2hlcmUgYXBwcm9wcmlhdGUgdG8gY29uc3RydWN0IGNvbXBvc2l0b3IgdHlwZXMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BbmltYXRpb25UcmFuc2xhdGlvblV0
aWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2ViQW5pbWF0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJCcmlkZ2U6OkNhbnZhczJETGF5ZXJCcmlkZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyUHJpdmF0ZTo6RHJhd2lu
Z0J1ZmZlclByaXZhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dy
YXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2hyb21pdW06OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG8pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjphZGRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNEKToKKwogMjAx
Mi0wOC0yOCAgU2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIERvIG5vdCBjbGlwIHJvb3QgbGF5ZXIncyBzdWJ0cmVlIHRvIHZpZXdwb3J0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGZiMmE2NDU5NWJlYzQwMmMxOTEzMzc2YWQ1
OWMxYjZhZmFkMDJkZTcuLjEyNmYzZWI3ZTc0YWQ2ZmJlMjg1NDdiN2Q4NGNkOGYyNWRiMWVlMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDgtMjcg
IEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEFkZCBDb21wb3NpdG9yU3VwcG9ydCBpbnRlcmZhY2UgZm9yIGNvbnN0cnVjdGluZyBjb21w
b3NpdG9yIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk1MDQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBzcmMvTGlua0hpZ2hsaWdodC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxpbmtIaWdo
bGlnaHQ6OkxpbmtIaWdobGlnaHQpOgorICAgICAgICAoV2ViS2l0OjpMaW5rSGlnaGxpZ2h0Ojpz
dGFydEhpZ2hsaWdodEFuaW1hdGlvbik6CisgICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVyQ2xp
ZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6
cmVhZHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudElt
cGwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRhaW5l
ckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRC
YWNraW5nVGV4dHVyZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVySW1w
bDo6c2V0QmFja2luZ0lPU3VyZmFjZUlkKToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luQ29udGFp
bmVySW1wbC5oOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wOC0yOSAgVy4gSmFtZXMgTWFj
TGVhbiAgPHdqbWFjbGVhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBMaW5r
IGhpZ2hsaWdodCBzaG91bGQgY2xlYXIgb24gcGFnZSBuYXZpZ2F0aW9uLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0u
Z3lwaQppbmRleCA3YWIwODI2MmFmZTc2MDcxNDZlN2NlNGJhNjRiZjRlNWY0N2Y2OTA1Li4yZDM2
ZWEzMTFjNTFkMTQxN2JiMjZiZGMzOTQ3ODE0OGQ5NmZkMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
UGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQorKysgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lw
aQpAQCAtNDQsNiArNDQsOCBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDbGlw
Ym9hcmQuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbG9yLmgnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb21tb24uaCcsCisgICAgICAgICAgICAnY2hy
b21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3IuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYkNvbXBvc2l0b3JTdXJmYWNlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1Ymxp
Yy9XZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2VDbGllbnQuaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5oJywKQEAgLTkxLDYgKzkzLDcgQEAKICAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViTWVzc2FnZVBvcnRDaGFubmVsQ2xpZW50Lmgn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJNaW1lUmVnaXN0cnkuaCcsCiAgICAg
ICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYk5vbkNvcHlhYmxlLmgnLAorICAgICAgICAgICAg
J2Nocm9taXVtL3B1YmxpYy9XZWJQYXNzT3duUHRyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJQZWVyQ29ubmVjdGlvbjAwSGFuZGxlci5oJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJDbGllbnQuaCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlci5oJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaCBiL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAppbmRleCBkNmJhODZmZTdmZTg0
MGJlNjAyZWVmYThjNDM3YjczN2RlODBmODJlLi40N2Q5OTA1ZGM0OTUzMGIwNzBlZDJmNjViZWU1
M2IxM2Q3YWNkNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9y
bS5oCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQXVkaW9C
dXM7CiBjbGFzcyBXZWJCbG9iUmVnaXN0cnk7CiBjbGFzcyBXZWJDbGlwYm9hcmQ7CitjbGFzcyBX
ZWJDb21wb3NpdG9yU3VwcG9ydDsKIGNsYXNzIFdlYkNvb2tpZUphcjsKIGNsYXNzIFdlYkZpbGVT
eXN0ZW07CiBjbGFzcyBXZWJGaWxlVXRpbGl0aWVzOwpAQCAtNDExLDYgKzQxMiw4IEBAIHB1Ymxp
YzoKICAgICAvLyBUaGlzIHZhbHVlIG11c3QgYmUgY2hlY2tlZCBhZ2FpbiBhZnRlciBhIGNvbnRl
eHQgbG9zcyBldmVudCBhcyB0aGUgcGxhdGZvcm0ncyBjYXBhYmlsaXRpZXMgbWF5IGhhdmUgY2hh
bmdlZC4KICAgICB2aXJ0dWFsIGJvb2wgY2FuQWNjZWxlcmF0ZTJkQ2FudmFzKCkgeyByZXR1cm4g
ZmFsc2U7IH0KIAorICAgIHZpcnR1YWwgV2ViQ29tcG9zaXRvclN1cHBvcnQqIGNvbXBvc2l0b3JT
dXBwb3J0KCkgeyByZXR1cm4gMDsgfQorCiAgICAgdmlydHVhbCBXZWJGbGluZ0FuaW1hdG9yKiBj
cmVhdGVGbGluZ0FuaW1hdG9yKCkgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gV2ViUlRDIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN1
cHBvcnQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN1
cHBvcnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45MjdjZmJlYzEwZTQyNDMxYjA1MTFhZTZiZWU4ZmM2ZDM1OTJh
ZGRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJDb21wb3NpdG9yU3VwcG9ydC5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YkNvbXBvc2l0b3JTdXBwb3J0X2gKKyNkZWZpbmUgV2ViQ29tcG9zaXRvclN1cHBvcnRfaAorCisj
aW5jbHVkZSAiV2ViQW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVk
ZSAiV2ViQ29udGVudExheWVyLmgiCisjaW5jbHVkZSAiV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIu
aCIKKyNpbmNsdWRlICJXZWJGbG9hdEFuaW1hdGlvbkN1cnZlLmgiCisjaW5jbHVkZSAiV2ViSU9T
dXJmYWNlTGF5ZXIuaCIKKyNpbmNsdWRlICJXZWJJbWFnZUxheWVyLmgiCisjaW5jbHVkZSAiV2Vi
TGF5ZXIuaCIKKyNpbmNsdWRlICJXZWJMYXllclRyZWVWaWV3LmgiCisjaW5jbHVkZSAiV2ViUGFz
c093blB0ci5oIgorI2luY2x1ZGUgIldlYlNjcm9sbGJhci5oIgorI2luY2x1ZGUgIldlYlNjcm9s
bGJhckxheWVyLmgiCisjaW5jbHVkZSAiV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5oIgorI2lu
Y2x1ZGUgIldlYlNjcm9sbGJhclRoZW1lUGFpbnRlci5oIgorI2luY2x1ZGUgIldlYlNvbGlkQ29s
b3JMYXllci5oIgorI2luY2x1ZGUgIldlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlLmgiCisjaW5j
bHVkZSAiV2ViVmlkZW9MYXllci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
Q29udGVudExheWVyQ2xpZW50OworY2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQ7
CitjbGFzcyBXZWJWaWRlb0ZyYW1lUHJvdmlkZXI7CisKK2NsYXNzIFdlYkNvbXBvc2l0b3JTdXBw
b3J0IHsKK3B1YmxpYzoKKyAgICAvLyBNYXkgcmV0dXJuIDAgaWYgaW5pdGlhbGl6YXRpb24gZmFp
bHMuCisgICAgdmlydHVhbCBXZWJQYXNzT3duUHRyPFdlYkxheWVyVHJlZVZpZXc+IGNyZWF0ZUxh
eWVyVHJlZVZpZXcoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCosIGNvbnN0IFdlYkxheWVyJiByb290
LCBjb25zdCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncyYpIHsgcmV0dXJuIFdlYlBhc3NPd25Q
dHI8V2ViTGF5ZXJUcmVlVmlldz4oKTsgfQorCisKKyAgICAvLyBMYXllcnMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdmlydHVh
bCBXZWJQYXNzT3duUHRyPFdlYkxheWVyPiBjcmVhdGVMYXllcigpIHsgcmV0dXJuIFdlYlBhc3NP
d25QdHI8V2ViTGF5ZXI+KCk7IH0KKworICAgIHZpcnR1YWwgV2ViUGFzc093blB0cjxXZWJDb250
ZW50TGF5ZXI+IGNyZWF0ZUNvbnRlbnRMYXllcihXZWJDb250ZW50TGF5ZXJDbGllbnQqKSB7IHJl
dHVybiBXZWJQYXNzT3duUHRyPFdlYkNvbnRlbnRMYXllcj4oKTsgfQorCisgICAgdmlydHVhbCBX
ZWJQYXNzT3duUHRyPFdlYkV4dGVybmFsVGV4dHVyZUxheWVyPiBjcmVhdGVFeHRlcm5hbFRleHR1
cmVMYXllcihXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudCogPSAwKSB7IHJldHVybiBXZWJQ
YXNzT3duUHRyPFdlYkV4dGVybmFsVGV4dHVyZUxheWVyPigpOyB9CisKKyAgICB2aXJ0dWFsIFdl
YlBhc3NPd25QdHI8V2ViSU9TdXJmYWNlTGF5ZXI+IGNyZWF0ZUlPU3VyZmFjZUxheWVyKCkgeyBy
ZXR1cm4gV2ViUGFzc093blB0cjxXZWJJT1N1cmZhY2VMYXllcj4oKTsgfQorCisgICAgdmlydHVh
bCBXZWJQYXNzT3duUHRyPFdlYkltYWdlTGF5ZXI+IGNyZWF0ZUltYWdlTGF5ZXIoKSB7IHJldHVy
biBXZWJQYXNzT3duUHRyPFdlYkltYWdlTGF5ZXI+KCk7IH0KKworICAgIHZpcnR1YWwgV2ViUGFz
c093blB0cjxXZWJTb2xpZENvbG9yTGF5ZXI+IGNyZWF0ZVNvbGlkQ29sb3JMYXllcigpIHsgcmV0
dXJuIFdlYlBhc3NPd25QdHI8V2ViU29saWRDb2xvckxheWVyPigpOyB9CisKKyAgICB2aXJ0dWFs
IFdlYlBhc3NPd25QdHI8V2ViVmlkZW9MYXllcj4gY3JlYXRlVmlkZW9MYXllcihXZWJWaWRlb0Zy
YW1lUHJvdmlkZXIqKSB7IHJldHVybiBXZWJQYXNzT3duUHRyPFdlYlZpZGVvTGF5ZXI+KCk7IH0K
KworICAgIHZpcnR1YWwgV2ViUGFzc093blB0cjxXZWJTY3JvbGxiYXJMYXllcj4gY3JlYXRlU2Ny
b2xsYmFyTGF5ZXIoV2ViUGFzc093blB0cjxXZWJTY3JvbGxiYXI+LCBXZWJTY3JvbGxiYXJUaGVt
ZVBhaW50ZXIsIFdlYlBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4pIHsgcmV0
dXJuIFdlYlBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyTGF5ZXI+KCk7IH0KKworCisgICAgLy8gQW5p
bWF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworICAgIHZpcnR1YWwgV2ViUGFzc093blB0cjxXZWJBbmltYXRpb24+IGNyZWF0ZUFuaW1h
dGlvbihjb25zdCBXZWJBbmltYXRpb25DdXJ2ZSYsIFdlYkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVy
dHksIGludCBhbmltYXRpb25JZCA9IDApIHsgcmV0dXJuIFdlYlBhc3NPd25QdHI8V2ViQW5pbWF0
aW9uPigpOyB9CisKKyAgICB2aXJ0dWFsIFdlYlBhc3NPd25QdHI8V2ViRmxvYXRBbmltYXRpb25D
dXJ2ZT4gY3JlYXRlRmxvYXRBbmltYXRpb25DdXJ2ZSgpIHsgcmV0dXJuIFdlYlBhc3NPd25QdHI8
V2ViRmxvYXRBbmltYXRpb25DdXJ2ZT4oKTsgfQorCisgICAgdmlydHVhbCBXZWJQYXNzT3duUHRy
PFdlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlPiBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25DdXJ2
ZSgpIHsgcmV0dXJuIFdlYlBhc3NPd25QdHI8V2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU+KCk7
IH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIH5XZWJDb21wb3NpdG9yU3VwcG9ydCgpIHsgfQor
fTsKKworfQorCisjZW5kaWYgLy8gV2ViQ29tcG9zaXRvclN1cHBvcnRfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQYXNzT3duUHRyLmggYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlBhc3NPd25QdHIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjNl
MGMzNzQyZmI3ZWYyN2M5ZGU2N2NiYzE1NDljNjRlMjBmZjMzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQYXNzT3duUHRyLmgKQEAgLTAsMCAr
MSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBhc3NPd25QdHJfaAorI2RlZmluZSBXZWJQYXNz
T3duUHRyX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCisjaWYgV0VCS0lUX0lNUExFTUVO
VEFUSU9OCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CisjZWxzZQorI2luY2x1ZGUgImJhc2UvbWVtb3J5L3Njb3BlZF9wdHIuaCIKKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVXNlIGEgcmV0dXJuIHZhbHVlIG9mIHR5cGUgV2Vi
UGFzc093blB0cjxUPiB3aGVuIHRoZSBjYWxsZXIgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSByZXR1
cm5lZCB2YWx1ZSwgZm9yIGluc3RhbmNlCisvLyBpbiBhIGNyZWF0ZUZvbygpIGZhY3RvcnkgZnVu
Y3Rpb24uIEV4YW1wbGU6CisvLworLy8gVG8gaW1wbGVtZW50IHRoZSBjbGFzcyBXZWJQYXNzT3du
UHRyPEZvbz4gY3JlYXRlRm9vKCkgaW4gY2hyb21pdW0gY29kZSwgd3JpdGU6CisvLworLy8gV2Vi
UGFzc093blB0cjxGb28+IGNyZWF0ZUZvbygpIHsKKy8vICAgc2NvcGVkX3B0cjxGb28+IGZvbyA9
IC4uLjsKKy8vICAgcmV0dXJuIGZvby5QYXNzKCk7CisvLyB9CisvLworLy8gVG8gdXNlIG9uIHRo
ZSBXZWJLaXQgc2lkZToKKy8vCisvLyAgIE93blB0cjxGb28+IGZvbyA9IC4uLi0+Y3JlYXRlRm9v
KCk7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFdlYlBhc3NPd25QdHIgOiBwdWJsaWMg
V2ViTm9uQ29weWFibGUgeworcHVibGljOgorICAgIFdlYlBhc3NPd25QdHIoKQorICAgICAgICA6
IG1fcHRyKDApCisgICAgeworICAgIH0KKworICAgIH5XZWJQYXNzT3duUHRyKCkKKyAgICB7Cisg
ICAgICAgIFdFQktJVF9BU1NFUlQoIW1fcHRyKTsKKyAgICB9CisKKworI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgorICAgIFdlYlBhc3NPd25QdHIoUGFzc093blB0cjxUPiBwdHIpCisgICAgICAg
IDogbV9wdHIocHRyLmxlYWtQdHIoKSkKKyAgICB7CisgICAgfQorCisgICAgb3BlcmF0b3IgUGFz
c093blB0cjxUPigpCisgICAgeworICAgICAgICBPd25QdHI8VD4gcmV0ID0gYWRvcHRQdHIobV9w
dHIpOworICAgICAgICBtX3B0ciA9IDA7CisgICAgICAgIHJldHVybiByZXQucmVsZWFzZSgpOwor
ICAgIH0KKyNlbHNlCisgICAgV2ViUGFzc093blB0cihzY29wZWRfcHRyPFQ+IHB0cikKKyAgICAg
ICAgOiBtX3B0cihwdHIucmVsZWFzZSgpKQorICAgIHsKKyAgICB9CisKKyAgICBvcGVyYXRvciBz
Y29wZWRfcHRyPFQ+KCkKKyAgICB7CisgICAgICAgIHNjb3BlZF9wdHI8VD4gcmV0KG1fcHRyKTsK
KyAgICAgICAgbV9wdHIgPSAwOworICAgICAgICByZXR1cm4gcmV0LlBhc3MoKTsKKyAgICB9Cisj
ZW5kaWYKKworcHJpdmF0ZToKKyAgICBUKiBtX3B0cjsKKworICAgIC8vIFRoaXMgY29uc3RydWN0
b3IgaGFzIHRvIGJlIGRlY2xhcmVkIGJ1dCBub3QgZGVmaW5lZCB0byB0cmlnZ2VyIG1vdmUgZW11
bGF0aW9uLgorICAgIFdlYlBhc3NPd25QdHIoV2ViUGFzc093blB0ciYpOworfTsKKworfQorCisj
ZW5kaWYgLy8gV2ViUGFzc093blB0cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BbmltYXRpb25UcmFuc2xhdGlvblV0aWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQW5pbWF0aW9uVHJhbnNsYXRp
b25VdGlsLmNwcAppbmRleCBhZThmOTAwN2I1ODg4MTdiMTBiM2JiYTM1NzUxN2VkOWE1MzMxYzIz
Li4yZGFjMjJlYWU3Yjg3MDVmZGM2ZTg0NzJjN2NmYjk1NjljMTVhODllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BbmltYXRpb25UcmFuc2xh
dGlvblV0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0FuaW1hdGlvblRyYW5zbGF0aW9uVXRpbC5jcHAKQEAgLTQwLDggKzQwLDEwIEBACiAjaW5j
bHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlRyYW5zbGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbi5oIgogCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYkFuaW1hdGlvbi5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJBbmltYXRpb25DdXJ2
ZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9ydC5oPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJGbG9hdEFuaW1hdGlvbkN1cnZlLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlRy
YW5zZm9ybUFuaW1hdGlvbkN1cnZlLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybU9w
ZXJhdGlvbnMuaD4KQEAgLTE3MCw3ICsxNzIsNyBAQCBib29sIGFwcGVuZEtleWZyYW1lV2l0aEN1
c3RvbUJlemllclRpbWluZ0Z1bmN0aW9uPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlLCBXZWJUcgog
fQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVmFsdWUsIGNsYXNzIEtleWZyYW1lLCBjbGFzcyBDdXJ2ZT4K
LVBhc3NPd25QdHI8V2ViS2l0OjpXZWJBbmltYXRpb24+IGNyZWF0ZVdlYkFuaW1hdGlvbihjb25z
dCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlv
biwgaW50IGFuaW1hdGlvbklkLCBkb3VibGUgdGltZU9mZnNldCwgV2ViS2l0OjpXZWJBbmltYXRp
b246OlRhcmdldFByb3BlcnR5IHRhcmdldFByb3BlcnR5LCBjb25zdCBGbG9hdFNpemUmIGJveFNp
emUpCitQYXNzT3duUHRyPFdlYktpdDo6V2ViQW5pbWF0aW9uPiBjcmVhdGVXZWJBbmltYXRpb24o
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmlt
YXRpb24sIGludCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQsIEN1cnZlKiBjdXJ2ZSwg
V2ViS2l0OjpXZWJBbmltYXRpb246OlRhcmdldFByb3BlcnR5IHRhcmdldFByb3BlcnR5LCBjb25z
dCBGbG9hdFNpemUmIGJveFNpemUpCiB7CiAgICAgYm9vbCBhbHRlcm5hdGUgPSBmYWxzZTsKICAg
ICBib29sIHJldmVyc2UgPSBmYWxzZTsKQEAgLTE4Miw4ICsxODQsNiBAQCBQYXNzT3duUHRyPFdl
YktpdDo6V2ViQW5pbWF0aW9uPiBjcmVhdGVXZWJBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1
ZUxpc3QmIHZhbAogICAgICAgICAgICAgcmV2ZXJzZSA9IHRydWU7CiAgICAgfQogCi0gICAgT3du
UHRyPEN1cnZlPiBjdXJ2ZSA9IGFkb3B0UHRyKEN1cnZlOjpjcmVhdGUoKSk7Ci0KICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7IGkrKykgewogICAgICAgICBzaXpl
X3QgaW5kZXggPSByZXZlcnNlID8gdmFsdWVMaXN0LnNpemUoKSAtIGkgLSAxIDogaTsKICAgICAg
ICAgY29uc3QgVmFsdWUqIG9yaWdpbmFsVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBWYWx1ZSo+
KHZhbHVlTGlzdC5hdChpbmRleCkpOwpAQCAtMjM0LDMyICsyMzQsNTAgQEAgUGFzc093blB0cjxX
ZWJLaXQ6OldlYkFuaW1hdGlvbj4gY3JlYXRlV2ViQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFs
dWVMaXN0JiB2YWwKIAogICAgICAgICBib29sIGFkZGVkS2V5ZnJhbWUgPSBmYWxzZTsKICAgICAg
ICAgaWYgKGlzVXNpbmdDdXN0b21CZXppZXJUaW1pbmdGdW5jdGlvbikKLSAgICAgICAgICAgIGFk
ZGVkS2V5ZnJhbWUgPSBhcHBlbmRLZXlmcmFtZVdpdGhDdXN0b21CZXppZXJUaW1pbmdGdW5jdGlv
bjxWYWx1ZSwgS2V5ZnJhbWUsIEN1cnZlPihjdXJ2ZS5nZXQoKSwga2V5VGltZSwgb3JpZ2luYWxW
YWx1ZSwgbGFzdE9yaWdpbmFsVmFsdWUsIHgxLCB5MSwgeDIsIHkyLCBib3hTaXplKTsKKyAgICAg
ICAgICAgIGFkZGVkS2V5ZnJhbWUgPSBhcHBlbmRLZXlmcmFtZVdpdGhDdXN0b21CZXppZXJUaW1p
bmdGdW5jdGlvbjxWYWx1ZSwgS2V5ZnJhbWUsIEN1cnZlPihjdXJ2ZSwga2V5VGltZSwgb3JpZ2lu
YWxWYWx1ZSwgbGFzdE9yaWdpbmFsVmFsdWUsIHgxLCB5MSwgeDIsIHkyLCBib3hTaXplKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgYWRkZWRLZXlmcmFtZSA9IGFwcGVuZEtleWZyYW1lV2l0
aFN0YW5kYXJkVGltaW5nRnVuY3Rpb248VmFsdWUsIEtleWZyYW1lLCBDdXJ2ZT4oY3VydmUuZ2V0
KCksIGtleVRpbWUsIG9yaWdpbmFsVmFsdWUsIGxhc3RPcmlnaW5hbFZhbHVlLCB0aW1pbmdGdW5j
dGlvblR5cGUsIGJveFNpemUpOworICAgICAgICAgICAgYWRkZWRLZXlmcmFtZSA9IGFwcGVuZEtl
eWZyYW1lV2l0aFN0YW5kYXJkVGltaW5nRnVuY3Rpb248VmFsdWUsIEtleWZyYW1lLCBDdXJ2ZT4o
Y3VydmUsIGtleVRpbWUsIG9yaWdpbmFsVmFsdWUsIGxhc3RPcmlnaW5hbFZhbHVlLCB0aW1pbmdG
dW5jdGlvblR5cGUsIGJveFNpemUpOwogICAgICAgICBpZiAoIWFkZGVkS2V5ZnJhbWUpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJB
bmltYXRpb24+IGFuaW0oYWRvcHRQdHIoV2ViS2l0OjpXZWJBbmltYXRpb246OmNyZWF0ZSgqY3Vy
dmUsIHRhcmdldFByb3BlcnR5LCBhbmltYXRpb25JZCkpKTsKKyAgICBPd25QdHI8V2ViS2l0OjpX
ZWJBbmltYXRpb24+IHdlYkFuaW1hdGlvbjsKKyAgICBpZiAoV2ViQ29tcG9zaXRvclN1cHBvcnQq
IGNvbXBvc2l0b3JTdXBwb3J0ID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3Np
dG9yU3VwcG9ydCgpKQorICAgICAgICB3ZWJBbmltYXRpb24gPSBjb21wb3NpdG9yU3VwcG9ydC0+
Y3JlYXRlQW5pbWF0aW9uKCpjdXJ2ZSwgdGFyZ2V0UHJvcGVydHksIGFuaW1hdGlvbklkKTsKKyAg
ICBlbHNlCisgICAgICAgIHdlYkFuaW1hdGlvbiA9IGFkb3B0UHRyKFdlYktpdDo6V2ViQW5pbWF0
aW9uOjpjcmVhdGUoKmN1cnZlLCB0YXJnZXRQcm9wZXJ0eSwgYW5pbWF0aW9uSWQpKTsKIAogICAg
IGludCBpdGVyYXRpb25zID0gKGFuaW1hdGlvbiAmJiBhbmltYXRpb24tPmlzSXRlcmF0aW9uQ291
bnRTZXQoKSkgPyBhbmltYXRpb24tPml0ZXJhdGlvbkNvdW50KCkgOiAxOwotICAgIGFuaW0tPnNl
dEl0ZXJhdGlvbnMoaXRlcmF0aW9ucyk7Ci0gICAgYW5pbS0+c2V0QWx0ZXJuYXRlc0RpcmVjdGlv
bihhbHRlcm5hdGUpOworICAgIHdlYkFuaW1hdGlvbi0+c2V0SXRlcmF0aW9ucyhpdGVyYXRpb25z
KTsKKyAgICB3ZWJBbmltYXRpb24tPnNldEFsdGVybmF0ZXNEaXJlY3Rpb24oYWx0ZXJuYXRlKTsK
IAogICAgIC8vIElmIHRpbWVPZmZzZXQgPiAwLCB0aGVuIHRoZSBhbmltYXRpb24gaGFzIHN0YXJ0
ZWQgaW4gdGhlIHBhc3QuCi0gICAgYW5pbS0+c2V0VGltZU9mZnNldCh0aW1lT2Zmc2V0KTsKKyAg
ICB3ZWJBbmltYXRpb24tPnNldFRpbWVPZmZzZXQodGltZU9mZnNldCk7CiAKLSAgICByZXR1cm4g
YW5pbS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHdlYkFuaW1hdGlvbi5yZWxlYXNlKCk7CiB9CiAK
IFBhc3NPd25QdHI8V2ViS2l0OjpXZWJBbmltYXRpb24+IGNyZWF0ZVdlYkFuaW1hdGlvbihjb25z
dCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVzLCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwg
aW50IGFuaW1hdGlvbklkLCBkb3VibGUgdGltZU9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBib3hT
aXplKQogewotICAgIGlmICh2YWx1ZXMucHJvcGVydHkoKSA9PSBBbmltYXRlZFByb3BlcnR5V2Vi
a2l0VHJhbnNmb3JtKQotICAgICAgICByZXR1cm4gY3JlYXRlV2ViQW5pbWF0aW9uPFRyYW5zZm9y
bUFuaW1hdGlvblZhbHVlLCBXZWJUcmFuc2Zvcm1LZXlmcmFtZSwgV2ViVHJhbnNmb3JtQW5pbWF0
aW9uQ3VydmU+KHZhbHVlcywgYW5pbWF0aW9uLCBhbmltYXRpb25JZCwgdGltZU9mZnNldCwgV2Vi
S2l0OjpXZWJBbmltYXRpb246OlRhcmdldFByb3BlcnR5VHJhbnNmb3JtLCBGbG9hdFNpemUoYm94
U2l6ZSkpOwogCi0gICAgaWYgKHZhbHVlcy5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJvcGVydHlP
cGFjaXR5KQotICAgICAgICByZXR1cm4gY3JlYXRlV2ViQW5pbWF0aW9uPEZsb2F0QW5pbWF0aW9u
VmFsdWUsIFdlYkZsb2F0S2V5ZnJhbWUsIFdlYkZsb2F0QW5pbWF0aW9uQ3VydmU+KHZhbHVlcywg
YW5pbWF0aW9uLCBhbmltYXRpb25JZCwgdGltZU9mZnNldCwgV2ViS2l0OjpXZWJBbmltYXRpb246
OlRhcmdldFByb3BlcnR5T3BhY2l0eSwgRmxvYXRTaXplKCkpOworCisgICAgaWYgKHZhbHVlcy5w
cm9wZXJ0eSgpID09IEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pIHsKKyAgICAgICAg
T3duUHRyPFdlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlPiBjdXJ2ZTsKKyAgICAgICAgaWYgKFdl
YkNvbXBvc2l0b3JTdXBwb3J0KiBjb21wb3NpdG9yU3VwcG9ydCA9IFdlYktpdDo6UGxhdGZvcm06
OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKSkKKyAgICAgICAgICAgIGN1cnZlID0gY29t
cG9zaXRvclN1cHBvcnQtPmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGN1cnZlID0gYWRvcHRQdHIoV2ViVHJhbnNmb3JtQW5pbWF0aW9u
Q3VydmU6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVdlYkFuaW1hdGlvbjxUcmFu
c2Zvcm1BbmltYXRpb25WYWx1ZSwgV2ViVHJhbnNmb3JtS2V5ZnJhbWUsIFdlYlRyYW5zZm9ybUFu
aW1hdGlvbkN1cnZlPih2YWx1ZXMsIGFuaW1hdGlvbiwgYW5pbWF0aW9uSWQsIHRpbWVPZmZzZXQs
IGN1cnZlLmdldCgpLCBXZWJLaXQ6OldlYkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHlUcmFuc2Zv
cm0sIEZsb2F0U2l6ZShib3hTaXplKSk7CisgICAgfQorCisgICAgaWYgKHZhbHVlcy5wcm9wZXJ0
eSgpID09IEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KSB7CisgICAgICAgIE93blB0cjxXZWJGbG9h
dEFuaW1hdGlvbkN1cnZlPiBjdXJ2ZTsKKyAgICAgICAgaWYgKFdlYkNvbXBvc2l0b3JTdXBwb3J0
KiBjb21wb3NpdG9yU3VwcG9ydCA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9z
aXRvclN1cHBvcnQoKSkKKyAgICAgICAgICAgIGN1cnZlID0gY29tcG9zaXRvclN1cHBvcnQtPmNy
ZWF0ZUZsb2F0QW5pbWF0aW9uQ3VydmUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3Vy
dmUgPSBhZG9wdFB0cihXZWJGbG9hdEFuaW1hdGlvbkN1cnZlOjpjcmVhdGUoKSk7CisgICAgICAg
IHJldHVybiBjcmVhdGVXZWJBbmltYXRpb248RmxvYXRBbmltYXRpb25WYWx1ZSwgV2ViRmxvYXRL
ZXlmcmFtZSwgV2ViRmxvYXRBbmltYXRpb25DdXJ2ZT4odmFsdWVzLCBhbmltYXRpb24sIGFuaW1h
dGlvbklkLCB0aW1lT2Zmc2V0LCBjdXJ2ZS5nZXQoKSwgV2ViS2l0OjpXZWJBbmltYXRpb246OlRh
cmdldFByb3BlcnR5T3BhY2l0eSwgRmxvYXRTaXplKCkpOworICAgIH0KIAogICAgIHJldHVybiBu
dWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcAppbmRleCA2MTRmZTRi
NGE0NWRmNDFlNDI1MmM1YjJhZDJmZDliZGMwOWViOWU4Li5mYTgxNDlhYTM4ZTQ3ZjZlNDJiNDVm
YWVhOTRiMmM3MTViNTMwNTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcApA
QCAtMzMsNyArMzMsOSBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgor
I2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3Np
dG9yLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+CiAjaW5jbHVk
ZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CiAKIHVzaW5nIFdlYktpdDo6V2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXI7CkBAIC03Myw3ICs3NSwxMSBAQCBDYW52YXMyRExheWVyQnJpZGdl
OjpDYW52YXMyRExheWVyQnJpZGdlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRl
eHQsCiAgICAgICAgICAgICBnckNvbnRleHQtPnJlc2V0Q29udGV4dCgpOwogICAgIH0KIAotICAg
IG1fbGF5ZXIgPSBhZG9wdFB0cihXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKHRoaXMp
KTsKKyAgICBpZiAoV2ViS2l0OjpXZWJDb21wb3NpdG9yU3VwcG9ydCogY29tcG9zaXRvclN1cHBv
cnQgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCkpCisg
ICAgICAgIG1fbGF5ZXIgPSBjb21wb3NpdG9yU3VwcG9ydC0+Y3JlYXRlRXh0ZXJuYWxUZXh0dXJl
TGF5ZXIodGhpcyk7CisgICAgZWxzZQorICAgICAgICBtX2xheWVyID0gYWRvcHRQdHIoV2ViS2l0
OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKHRoaXMpKTsKKwogICAgIG1fbGF5ZXIt
PnNldFRleHR1cmVJZCh0ZXh0dXJlSWQpOwogICAgIG1fbGF5ZXItPnNldFJhdGVMaW1pdENvbnRl
eHQoIVdlYktpdDo6V2ViQ29tcG9zaXRvcjo6dGhyZWFkaW5nRW5hYmxlZCgpIHx8IG1fdXNlRG91
YmxlQnVmZmVyaW5nKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCmlu
ZGV4IDA2ODM5Yzk3ODBjZTJmZDAxMDE1MGI3NWIyNzA3MjE1YWQyYWVkY2UuLjlkYmY3MzUxZGQ2
YzUwMzA2MTg3ZWIxMWEyMDliZDI5MmJkYWQ3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZl
ckNocm9taXVtLmNwcApAQCAtMzcsNyArMzcsOSBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSA8
YWxnb3JpdGhtPgorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJDb21wb3NpdG9yLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0
Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmg+CiAjaW5jbHVk
ZSA8cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8cHVi
bGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CkBAIC0xNjIsOCArMTY0LDEyIEBAIGNsYXNzIERy
YXdpbmdCdWZmZXJQcml2YXRlIDogcHVibGljIFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXJDbGllbnQgewogcHVibGljOgogICAgIGV4cGxpY2l0IERyYXdpbmdCdWZmZXJQcml2YXRlKERy
YXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIpCiAgICAgICAgIDogbV9kcmF3aW5nQnVmZmVyKGRy
YXdpbmdCdWZmZXIpCi0gICAgICAgICwgbV9sYXllcihhZG9wdFB0cihXZWJLaXQ6OldlYkV4dGVy
bmFsVGV4dHVyZUxheWVyOjpjcmVhdGUodGhpcykpKQogICAgIHsKKyAgICAgICAgaWYgKFdlYktp
dDo6V2ViQ29tcG9zaXRvclN1cHBvcnQqIGNvbXBvc2l0b3JTdXBwb3J0ID0gV2ViS2l0OjpQbGF0
Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9yU3VwcG9ydCgpKQorICAgICAgICAgICAgbV9sYXll
ciA9IGNvbXBvc2l0b3JTdXBwb3J0LT5jcmVhdGVFeHRlcm5hbFRleHR1cmVMYXllcih0aGlzKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9sYXllciA9IGFkb3B0UHRyKFdlYktpdDo6V2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSh0aGlzKSk7CisKICAgICAgICAgR3JhcGhpY3ND
b250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IG1fZHJhd2luZ0J1ZmZlci0+Z3JhcGhp
Y3NDb250ZXh0M0QoKS0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsKICAgICAgICAgbV9sYXllci0+
c2V0T3BhcXVlKCFhdHRyaWJ1dGVzLmFscGhhKTsKICAgICAgICAgbV9sYXllci0+c2V0UHJlbXVs
dGlwbGllZEFscGhhKGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9H
cmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDc2NWU0NTA5OGVkMjMyMWExZTQ5YWMyYzgx
YzU1NWQxOTMyOTZiYmMuLjZlYjZjNmI4Y2JmMWYxMjRjNjliMjZmMjI2ZDk0NjAxYjUyMTE5MmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dy
YXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtNTcsNyArNTcsOSBA
QAogI2luY2x1ZGUgIlNrTWF0cml4NDQuaCIKICNpbmNsdWRlICJTeXN0ZW1UaW1lLmgiCiAKKyNp
bmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQW5pbWF0aW9u
Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJP
cGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UG9pbnQuaD4KQEAgLTkwLDcg
KzkyLDEyIEBAIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6R3JhcGhpY3NMYXllckNocm9taXVtKEdy
YXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKICAgICAsIG1fcGFnZVNjYWxlQ2hhbmdlZChmYWxz
ZSkKIHsKICAgICBtX29wYXF1ZVJlY3RUcmFja2luZ0NvbnRlbnRMYXllckRlbGVnYXRlID0gYWRv
cHRQdHIobmV3IE9wYXF1ZVJlY3RUcmFja2luZ0NvbnRlbnRMYXllckRlbGVnYXRlKHRoaXMpKTsK
LSAgICBtX2xheWVyID0gYWRvcHRQdHIoV2ViQ29udGVudExheWVyOjpjcmVhdGUobV9vcGFxdWVS
ZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZS5nZXQoKSkpOworCisgICAgaWYgKFdlYkNv
bXBvc2l0b3JTdXBwb3J0KiBjb21wb3NpdG9yU3VwcG9ydCA9IFBsYXRmb3JtOjpjdXJyZW50KCkt
PmNvbXBvc2l0b3JTdXBwb3J0KCkpCisgICAgICAgIG1fbGF5ZXIgPSBjb21wb3NpdG9yU3VwcG9y
dC0+Y3JlYXRlQ29udGVudExheWVyKG1fb3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExheWVyRGVs
ZWdhdGUuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgbV9sYXllciA9IGFkb3B0UHRyKFdlYkNv
bnRlbnRMYXllcjo6Y3JlYXRlKG1fb3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExheWVyRGVsZWdh
dGUuZ2V0KCkpKTsKKwogICAgIG1fbGF5ZXItPmxheWVyKCktPnNldERyYXdzQ29udGVudChtX2Ry
YXdzQ29udGVudCAmJiBtX2NvbnRlbnRzVmlzaWJsZSk7CiAgICAgaWYgKGNsaWVudCkKICAgICAg
ICAgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CkBAIC00NjcsNyArNDc0LDEyIEBA
IHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGlt
YWdlKQogICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7CiAgICAgaWYgKGltYWdlKSB7
CiAgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlICE9IENvbnRlbnRzTGF5ZXJGb3JJ
bWFnZSkgewotICAgICAgICAgICAgbV9pbWFnZUxheWVyID0gYWRvcHRQdHIoV2ViSW1hZ2VMYXll
cjo6Y3JlYXRlKCkpOworCisgICAgICAgICAgICBpZiAoV2ViQ29tcG9zaXRvclN1cHBvcnQqIGNv
bXBvc2l0b3JTdXBwb3J0ID0gUGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQo
KSkKKyAgICAgICAgICAgICAgICBtX2ltYWdlTGF5ZXIgPSBjb21wb3NpdG9yU3VwcG9ydC0+Y3Jl
YXRlSW1hZ2VMYXllcigpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1faW1h
Z2VMYXllciA9IGFkb3B0UHRyKFdlYkltYWdlTGF5ZXI6OmNyZWF0ZSgpKTsKKwogICAgICAgICAg
ICAgc2V0dXBDb250ZW50c0xheWVyKG1faW1hZ2VMYXllci0+bGF5ZXIoKSk7CiAgICAgICAgICAg
ICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNMYXllckZvckltYWdlOwogICAgICAg
ICAgICAgY2hpbGRyZW5DaGFuZ2VkID0gdHJ1ZTsKQEAgLTUwMCw3ICs1MTIsNyBAQCB2b2lkIEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqIGxh
eWVyKQogICAgIHNldENvbnRlbnRzVG8oQ29udGVudHNMYXllckZvclZpZGVvLCBsYXllcik7CiB9
CiAKLXZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvKENvbnRlbnRzTGF5
ZXJQdXJwb3NlIHB1cnBvc2UsIFdlYktpdDo6V2ViTGF5ZXIqIGxheWVyKQordm9pZCBHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG8oQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9z
ZSwgV2ViTGF5ZXIqIGxheWVyKQogewogICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7
CiAgICAgaWYgKGxheWVyKSB7CkBAIC01MzIsNyArNTQ0LDcgQEAgYm9vbCBHcmFwaGljc0xheWVy
Q2hyb21pdW06OmFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVzLCBj
b25zdAogICAgIGlmIChtX2FuaW1hdGlvbklkTWFwLmNvbnRhaW5zKGFuaW1hdGlvbk5hbWUpKQog
ICAgICAgICBhbmltYXRpb25JZCA9IG1fYW5pbWF0aW9uSWRNYXAuZ2V0KGFuaW1hdGlvbk5hbWUp
OwogCi0gICAgT3duUHRyPFdlYktpdDo6V2ViQW5pbWF0aW9uPiB0b0FkZChjcmVhdGVXZWJBbmlt
YXRpb24odmFsdWVzLCBhbmltYXRpb24sIGFuaW1hdGlvbklkLCB0aW1lT2Zmc2V0LCBib3hTaXpl
KSk7CisgICAgT3duUHRyPFdlYkFuaW1hdGlvbj4gdG9BZGQoY3JlYXRlV2ViQW5pbWF0aW9uKHZh
bHVlcywgYW5pbWF0aW9uLCBhbmltYXRpb25JZCwgdGltZU9mZnNldCwgYm94U2l6ZSkpOwogCiAg
ICAgaWYgKHRvQWRkKSB7CiAgICAgICAgIGFuaW1hdGlvbklkID0gdG9BZGQtPmlkKCk7CkBAIC02
NzgsOCArNjkwLDExIEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVNYXNrc1Rv
Qm91bmRzKCkKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZl
czNEKCkKIHsKICAgICBpZiAobV9wcmVzZXJ2ZXMzRCAmJiAhbV90cmFuc2Zvcm1MYXllcikgewot
ICAgICAgICAvLyBDcmVhdGUgdGhlIHRyYW5zZm9ybSBsYXllci4KLSAgICAgICAgbV90cmFuc2Zv
cm1MYXllciA9IGFkb3B0UHRyKFdlYkxheWVyOjpjcmVhdGUoKSk7CisgICAgICAgIGlmIChXZWJD
b21wb3NpdG9yU3VwcG9ydCogY29tcG9zaXRvclN1cHBvcnQgPSBQbGF0Zm9ybTo6Y3VycmVudCgp
LT5jb21wb3NpdG9yU3VwcG9ydCgpKQorICAgICAgICAgICAgbV90cmFuc2Zvcm1MYXllciA9IGNv
bXBvc2l0b3JTdXBwb3J0LT5jcmVhdGVMYXllcigpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtX3RyYW5zZm9ybUxheWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKKwogICAg
ICAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKICAgICAgICAgbV90
cmFuc2Zvcm1MYXllci0+c2V0QW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7CiAgICAgICAgIG1fbGF5
ZXItPmxheWVyKCktPnRyYW5zZmVyQW5pbWF0aW9uc1RvKG1fdHJhbnNmb3JtTGF5ZXIuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTGlua0hpZ2hsaWdodC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9MaW5rSGlnaGxpZ2h0LmNwcAppbmRleCBh
MGM1YmZiYWVjODAzYjViNzNkZDg4MWRjNTMyYzg0OWQzYmE1NzU4Li42Zjk3NDYwZDNlZjYyMWE1
NjI3ZGQ1ZTY2MjE0ZjBlYThmYWJhMTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9MaW5rSGlnaGxpZ2h0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9MaW5rSGlnaGxpZ2h0LmNwcApAQCAtNDEsNyArNDEsOSBAQAogI2luY2x1ZGUgIldlYkZyYW1l
SW1wbC5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCisj
aW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkFuaW1hdGlv
bkN1cnZlLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+CiAjaW5j
bHVkZSA8cHVibGljL1dlYkZsb2F0QW5pbWF0aW9uQ3VydmUuaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViRmxvYXRQb2ludC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+CkBAIC01OSwxNiAr
NjEsMjAgQEAgUGFzc093blB0cjxMaW5rSGlnaGxpZ2h0PiBMaW5rSGlnaGxpZ2h0OjpjcmVhdGUo
Tm9kZSogbm9kZSwgV2ViVmlld0ltcGwqIG93bmluZ1cKIH0KIAogTGlua0hpZ2hsaWdodDo6TGlu
a0hpZ2hsaWdodChOb2RlKiBub2RlLCBXZWJWaWV3SW1wbCogb3duaW5nV2ViVmlld0ltcGwpCi0g
ICAgOiBtX2NvbnRlbnRMYXllcihhZG9wdFB0cihXZWJDb250ZW50TGF5ZXI6OmNyZWF0ZSh0aGlz
KSkpCi0gICAgLCBtX2NsaXBMYXllcihhZG9wdFB0cihXZWJMYXllcjo6Y3JlYXRlKCkpKQotICAg
ICwgbV9ub2RlKG5vZGUpCisgICAgOiBtX25vZGUobm9kZSkKICAgICAsIG1fb3duaW5nV2ViVmll
d0ltcGwob3duaW5nV2ViVmlld0ltcGwpCiAgICAgLCBtX2N1cnJlbnRHcmFwaGljc0xheWVyKDAp
CiAgICAgLCBtX2dlb21ldHJ5TmVlZHNVcGRhdGUoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fbm9k
ZSk7CiAgICAgQVNTRVJUKG93bmluZ1dlYlZpZXdJbXBsKTsKLQorICAgIGlmIChXZWJDb21wb3Np
dG9yU3VwcG9ydCogY29tcG9zaXRvclN1cHBvcnQgPSBQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21w
b3NpdG9yU3VwcG9ydCgpKSB7CisgICAgICAgIG1fY29udGVudExheWVyID0gY29tcG9zaXRvclN1
cHBvcnQtPmNyZWF0ZUNvbnRlbnRMYXllcih0aGlzKTsKKyAgICAgICAgbV9jbGlwTGF5ZXIgPSBj
b21wb3NpdG9yU3VwcG9ydC0+Y3JlYXRlTGF5ZXIoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBt
X2NvbnRlbnRMYXllciA9IGFkb3B0UHRyKFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKHRoaXMpKTsK
KyAgICAgICAgbV9jbGlwTGF5ZXIgPSBhZG9wdFB0cihXZWJMYXllcjo6Y3JlYXRlKCkpOworICAg
IH0KICAgICBtX2NsaXBMYXllci0+c2V0QW5jaG9yUG9pbnQoV2ViRmxvYXRQb2ludCgpKTsKICAg
ICBtX2NsaXBMYXllci0+YWRkQ2hpbGQobV9jb250ZW50TGF5ZXItPmxheWVyKCkpOwogICAgIG1f
Y29udGVudExheWVyLT5sYXllcigpLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOwpAQCAtMjAwLDEz
ICsyMDYsMjQgQEAgdm9pZCBMaW5rSGlnaGxpZ2h0OjpzdGFydEhpZ2hsaWdodEFuaW1hdGlvbigp
CiAKICAgICBtX2NvbnRlbnRMYXllci0+bGF5ZXIoKS0+c2V0T3BhY2l0eShzdGFydE9wYWNpdHkp
OwogCi0gICAgT3duUHRyPFdlYkZsb2F0QW5pbWF0aW9uQ3VydmU+IGN1cnZlID0gYWRvcHRQdHIo
V2ViRmxvYXRBbmltYXRpb25DdXJ2ZTo6Y3JlYXRlKCkpOworICAgIFdlYkNvbXBvc2l0b3JTdXBw
b3J0KiBjb21wb3NpdG9yU3VwcG9ydCA9IFBsYXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JT
dXBwb3J0KCk7CisKKyAgICBPd25QdHI8V2ViRmxvYXRBbmltYXRpb25DdXJ2ZT4gY3VydmU7Cisg
ICAgaWYgKGNvbXBvc2l0b3JTdXBwb3J0KQorICAgICAgICBjdXJ2ZSA9IGNvbXBvc2l0b3JTdXBw
b3J0LT5jcmVhdGVGbG9hdEFuaW1hdGlvbkN1cnZlKCk7CisgICAgZWxzZQorICAgICAgICBjdXJ2
ZSA9IGFkb3B0UHRyKFdlYkZsb2F0QW5pbWF0aW9uQ3VydmU6OmNyZWF0ZSgpKTsKKwogICAgIGN1
cnZlLT5hZGQoV2ViRmxvYXRLZXlmcmFtZSgwLCBzdGFydE9wYWNpdHkpKTsKICAgICBjdXJ2ZS0+
YWRkKFdlYkZsb2F0S2V5ZnJhbWUoZHVyYXRpb24gLyAyLCBzdGFydE9wYWNpdHkpKTsKICAgICAv
LyBGb3IgbGF5b3V0IHRlc3RzIHdlIGRvbid0IGZhZGUgb3V0LgogICAgIGN1cnZlLT5hZGQoV2Vi
RmxvYXRLZXlmcmFtZShkdXJhdGlvbiwgV2ViS2l0OjpsYXlvdXRUZXN0TW9kZSgpID8gc3RhcnRP
cGFjaXR5IDogMCkpOwogCi0gICAgbV9hbmltYXRpb24gPSBhZG9wdFB0cihXZWJBbmltYXRpb246
OmNyZWF0ZSgqY3VydmUsIFdlYkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHlPcGFjaXR5KSk7Cisg
ICAgaWYgKGNvbXBvc2l0b3JTdXBwb3J0KQorICAgICAgICBtX2FuaW1hdGlvbiA9IGNvbXBvc2l0
b3JTdXBwb3J0LT5jcmVhdGVBbmltYXRpb24oKmN1cnZlLCBXZWJBbmltYXRpb246OlRhcmdldFBy
b3BlcnR5T3BhY2l0eSk7CisgICAgZWxzZQorICAgICAgICBtX2FuaW1hdGlvbiA9IGFkb3B0UHRy
KFdlYkFuaW1hdGlvbjo6Y3JlYXRlKCpjdXJ2ZSwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0
eU9wYWNpdHkpKTsKKwogICAgIG1fY29udGVudExheWVyLT5sYXllcigpLT5zZXREcmF3c0NvbnRl
bnQodHJ1ZSk7CiAgICAgbV9jb250ZW50TGF5ZXItPmxheWVyKCktPmFkZEFuaW1hdGlvbihtX2Fu
aW1hdGlvbi5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCmluZGV4IDcyZTg3MTYzN2I3ZGRmMjFkYzZj
OGVjODNkNDYzZGNhM2Q4NWViYzEuLjY5MWFhODI4ZTEwZjExMmI4YzU3Nzk0ZTEzMmI0YTMxNDQz
ZTJjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsLmNwcApAQCAtMjksMTEgKzI5LDEzIEBACiAjaW5jbHVkZSA8cHVi
bGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkNTdHJpbmcuaD4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViQ2FudmFzLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBw
b3J0Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYk1pbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPHB1
YmxpYy9XZWJSZWN0Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlNpemUuaD4KICNpbmNsdWRlIDxw
dWJsaWMvV2ViU3RyaW5nLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTC5oPgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJWaWRlb0xheWVyLmg+CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgiCkBAIC0xMTEsNyArMTEzLDEx
IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpyZWFkeVN0YXRlQ2hhbmdlZCgpCiAg
ICAgbV9tZWRpYVBsYXllci0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsKICNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKGhhc1ZpZGVvKCkgJiYgc3VwcG9ydHNBY2NlbGVyYXRl
ZFJlbmRlcmluZygpICYmICFtX3ZpZGVvTGF5ZXIpIHsKLSAgICAgICAgbV92aWRlb0xheWVyID0g
YWRvcHRQdHIoV2ViVmlkZW9MYXllcjo6Y3JlYXRlKHRoaXMpKTsKKyAgICAgICAgaWYgKFdlYkNv
bXBvc2l0b3JTdXBwb3J0KiBjb21wb3NpdG9yU3VwcG9ydCA9IFBsYXRmb3JtOjpjdXJyZW50KCkt
PmNvbXBvc2l0b3JTdXBwb3J0KCkpCisgICAgICAgICAgICBtX3ZpZGVvTGF5ZXIgPSBjb21wb3Np
dG9yU3VwcG9ydC0+Y3JlYXRlVmlkZW9MYXllcih0aGlzKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbV92aWRlb0xheWVyID0gYWRvcHRQdHIoV2ViVmlkZW9MYXllcjo6Y3JlYXRlKHRoaXMp
KTsKKwogICAgICAgICBtX3ZpZGVvTGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZShtX29wYXF1ZSk7
CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCmluZGV4IDMyOWZkOWVjMGY0ODhhOWVhYWZlYTZlOTVj
OGZiYjI0OTA0MTVjMGUuLmJkMjkwN2VkMjYxZjE3ZmRhMTI0OTdkNjg1MzBjNjhkY2I5MzM5MzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xp
ZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbC5oCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXJD
bGllbnQuaCIKICNpbmNsdWRlICJXZWJTdHJlYW1UZXh0dXJlQ2xpZW50LmgiCiAjaW5jbHVkZSA8
cHVibGljL1dlYlZpZGVvRnJhbWVQcm92aWRlci5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJWaWRl
b0xheWVyLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CiAKQEAgLTUwLDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJI
ZWxwZXJQbHVnaW5JbXBsOwogY2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92aWRlcjsKIGNsYXNzIFdl
Yk1lZGlhUGxheWVyOworY2xhc3MgV2ViVmlkZW9MYXllcjsKIAogLy8gVGhpcyBjbGFzcyBzZXJ2
ZXMgYXMgYSBicmlkZ2UgYmV0d2VlbiBXZWJDb3JlOjpNZWRpYVBsYXllciBhbmQKIC8vIFdlYktp
dDo6V2ViTWVkaWFQbGF5ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCmluZGV4IDc1YTk3ZTBmNmNjNWU0N2FlMjlkZGEz
MDE1YzE2ZDhmYjcxYTMxZjQuLjUyZjZiZDlhNTI4MzllZTMzOGQ1NGVkZDE1MjEwNDgxMTBmOGFj
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRh
aW5lckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNv
bnRhaW5lckltcGwuY3BwCkBAIC03MSw2ICs3MSw4IEBACiAjaW5jbHVkZSAiV2hlZWxFdmVudC5o
IgogI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDbGlw
Ym9hcmQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaD4KKyNpbmNs
dWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViUmVjdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KICNpbmNsdWRlIDxwdWJs
aWMvV2ViVVJMLmg+CkBAIC0zNjgsOCArMzcwLDEyIEBAIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVy
SW1wbDo6c2V0QmFja2luZ1RleHR1cmVJZCh1bnNpZ25lZCB0ZXh0dXJlSWQpCiAKICAgICBBU1NF
UlQoIW1faW9TdXJmYWNlTGF5ZXIpOwogCi0gICAgaWYgKCFtX3RleHR1cmVMYXllcikKLSAgICAg
ICAgbV90ZXh0dXJlTGF5ZXIgPSBhZG9wdFB0cihXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3Jl
YXRlKCkpOworICAgIGlmICghbV90ZXh0dXJlTGF5ZXIpIHsKKyAgICAgICAgaWYgKFdlYkNvbXBv
c2l0b3JTdXBwb3J0KiBjb21wb3NpdG9yU3VwcG9ydCA9IFBsYXRmb3JtOjpjdXJyZW50KCktPmNv
bXBvc2l0b3JTdXBwb3J0KCkpCisgICAgICAgICAgICBtX3RleHR1cmVMYXllciA9IGNvbXBvc2l0
b3JTdXBwb3J0LT5jcmVhdGVFeHRlcm5hbFRleHR1cmVMYXllcigpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX3RleHR1cmVMYXllciA9IGFkb3B0UHRyKFdlYkV4dGVybmFsVGV4dHVyZUxh
eWVyOjpjcmVhdGUoKSk7CisgICAgfQogICAgIG1fdGV4dHVyZUxheWVyLT5zZXRUZXh0dXJlSWQo
dGV4dHVyZUlkKTsKIAogICAgIC8vIElmIGFueW9uZSBvZiB0aGUgSURzIGlzIHplcm8gd2UgbmVl
ZCB0byBzd2l0Y2ggYmV0d2VlbiBoYXJkd2FyZQpAQCAtMzkyLDggKzM5OCwxMiBAQCB2b2lkIFdl
YlBsdWdpbkNvbnRhaW5lckltcGw6OnNldEJhY2tpbmdJT1N1cmZhY2VJZChpbnQgd2lkdGgsCiAK
ICAgICBBU1NFUlQoIW1fdGV4dHVyZUxheWVyKTsKIAotICAgIGlmICghbV9pb1N1cmZhY2VMYXll
cikKLSAgICAgICAgbV9pb1N1cmZhY2VMYXllciA9IGFkb3B0UHRyKFdlYklPU3VyZmFjZUxheWVy
OjpjcmVhdGUoKSk7CisgICAgaWYgKCFtX2lvU3VyZmFjZUxheWVyKSB7CisgICAgICAgIGlmIChX
ZWJDb21wb3NpdG9yU3VwcG9ydCogY29tcG9zaXRvclN1cHBvcnQgPSBQbGF0Zm9ybTo6Y3VycmVu
dCgpLT5jb21wb3NpdG9yU3VwcG9ydCgpKQorICAgICAgICAgICAgbV9pb1N1cmZhY2VMYXllciA9
IGNvbXBvc2l0b3JTdXBwb3J0LT5jcmVhdGVJT1N1cmZhY2VMYXllcigpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX2lvU3VyZmFjZUxheWVyID0gYWRvcHRQdHIoV2ViSU9TdXJmYWNlTGF5
ZXI6OmNyZWF0ZSgpKTsKKyAgICB9CiAgICAgbV9pb1N1cmZhY2VMYXllci0+c2V0SU9TdXJmYWNl
UHJvcGVydGllcyhpb1N1cmZhY2VJZCwgV2ViU2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CiAKICAgICAv
LyBJZiBhbnlvbmUgb2YgdGhlIElEcyBpcyB6ZXJvIHdlIG5lZWQgdG8gc3dpdGNoIGJldHdlZW4g
aGFyZHdhcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdp
bkNvbnRhaW5lckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNv
bnRhaW5lckltcGwuaAppbmRleCA5OThiZTZlNDE5Zjg5NWZhODIxNzk0MDM5MzQ0YmMxNmYzMTFm
OTIzLi5lMjAzYTczNzAxOTAzMWYwNGFkODEyNzkzMTM1OGY2YTg4MDg4OTM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oCkBA
IC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVyLmgiCiAjaW5jbHVk
ZSAiV2lkZ2V0LmgiCiAKLSNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIu
aD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViSU9TdXJmYWNlTGF5ZXIuaD4KICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTY3LDYgKzY2LDcgQEAg
c3RydWN0IFdlYlByaW50UGFyYW1zOwogY2xhc3MgU2Nyb2xsYmFyR3JvdXA7CiBjbGFzcyBXZWJQ
bHVnaW47CiBjbGFzcyBXZWJQbHVnaW5Mb2FkT2JzZXJ2ZXI7CitjbGFzcyBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllcjsKIAogY2xhc3MgV2ViUGx1Z2luQ29udGFpbmVySW1wbCA6IHB1YmxpYyBXZWJD
b3JlOjpQbHVnaW5WaWV3QmFzZSwgcHVibGljIFdlYlBsdWdpbkNvbnRhaW5lciB7CiBwdWJsaWM6
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161351</attachid>
            <date>2012-08-29 16:18:36 -0700</date>
            <delta_ts>2012-08-30 12:10:29 -0700</delta_ts>
            <desc>add example of implementing in WebKit and using on chromium side</desc>
            <filename>bug-95040-20120829161826.patch</filename>
            <type>text/plain</type>
            <size>34012</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhYjIxZTA1NWU0MGFm
ZTU1NzAxNTMyNzJkMDljNDFkMmQ4OTBmZGIxLi5iYTY2MjVjMWJjOWM1NWU4YmFkOTVkMzQzZjEz
OWVhMjE1YzI3NjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wOC0yNyAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gQWRkIENvbXBvc2l0b3JTdXBwb3J0IGludGVyZmFjZSBmb3IgY29uc3RydWN0aW5nIGNvbXBv
c2l0b3IgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTUwNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRzIGEgV2ViQ29tcG9zaXRvclN1cHBvcnQgaW50ZXJmYWNlIGFzIGEgdGVhci1vZmYg
b2YgUGxhdGZvcm1TdXBwb3J0IHNvIHRoZSBlbWJlZGRlciBjYW4gaGFuZGxlIHByb3ZpZGUKKyAg
ICAgICAgaW1wbGVtZW50YXRpb25zIG9mIGNvbXBvc2l0b3IgaW50ZXJmYWNlcy4KKworICAgICAg
ICBBZGRzIGEgbmV3IFdlYlBhc3NPd25QdHI8PiB0eXBlIGZvciB1c2Ugd2hlbiB0aGUgY2FsbGVy
IG9mIGFuIEFQSSBtdXN0IHRha2Ugb3duZXJzaGlwIG9mIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9Q
bGF0Zm9ybS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm06
OmNvbXBvc2l0b3JTdXBwb3J0KToKKyAgICAgICAgKFBsYXRmb3JtKToKKyAgICAgICAgKiBjaHJv
bWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViQ29tcG9zaXRvclN1cHBvcnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb21wb3NpdG9yU3VwcG9ydDo6fldlYkNvbXBvc2l0b3JTdXBwb3J0KToKKwogMjAxMi0wOC0y
NyAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIFNob3VsZCBhY2NlbGVyYXRlIHJvdGF0aW9ucyBvZiA+PSAxODAgZGVncmVlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDcyZWUzYjdiZTZiY2JlZDQxMzBhOGM4NzAzMTIzNmNlODk1NGIxYzcuLjA3NTRkZWJk
NWE3YzAxM2M5NWZiNGEyM2Y5YTE3YjNmNTZjZGY5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NSBAQAorMjAxMi0wOC0yNyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gQWRkIENvbXBvc2l0b3JTdXBwb3J0IGludGVyZmFjZSBmb3Ig
Y29uc3RydWN0aW5nIGNvbXBvc2l0b3IgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUwNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2VzIFdlYkNvbXBvc2l0b3JTdXBwb3J0IGludGVyZmFj
ZXMgd2hlcmUgYXBwcm9wcmlhdGUgdG8gY29uc3RydWN0IGNvbXBvc2l0b3IgdHlwZXMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BbmltYXRpb25UcmFuc2xhdGlvblV0
aWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2ViQW5pbWF0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJCcmlkZ2U6OkNhbnZhczJETGF5ZXJCcmlkZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyUHJpdmF0ZTo6RHJhd2lu
Z0J1ZmZlclByaXZhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dy
YXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2hyb21pdW06OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG8pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjphZGRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNEKToKKwogMjAx
Mi0wOC0yOCAgU2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIERvIG5vdCBjbGlwIHJvb3QgbGF5ZXIncyBzdWJ0cmVlIHRvIHZpZXdwb3J0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGZiMmE2NDU5NWJlYzQwMmMxOTEzMzc2YWQ1
OWMxYjZhZmFkMDJkZTcuLjEyNmYzZWI3ZTc0YWQ2ZmJlMjg1NDdiN2Q4NGNkOGYyNWRiMWVlMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDgtMjcg
IEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEFkZCBDb21wb3NpdG9yU3VwcG9ydCBpbnRlcmZhY2UgZm9yIGNvbnN0cnVjdGluZyBjb21w
b3NpdG9yIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk1MDQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBzcmMvTGlua0hpZ2hsaWdodC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxpbmtIaWdo
bGlnaHQ6OkxpbmtIaWdobGlnaHQpOgorICAgICAgICAoV2ViS2l0OjpMaW5rSGlnaGxpZ2h0Ojpz
dGFydEhpZ2hsaWdodEFuaW1hdGlvbik6CisgICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVyQ2xp
ZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6
cmVhZHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudElt
cGwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRhaW5l
ckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRC
YWNraW5nVGV4dHVyZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVySW1w
bDo6c2V0QmFja2luZ0lPU3VyZmFjZUlkKToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luQ29udGFp
bmVySW1wbC5oOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wOC0yOSAgVy4gSmFtZXMgTWFj
TGVhbiAgPHdqbWFjbGVhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBMaW5r
IGhpZ2hsaWdodCBzaG91bGQgY2xlYXIgb24gcGFnZSBuYXZpZ2F0aW9uLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0u
Z3lwaQppbmRleCA3YWIwODI2MmFmZTc2MDcxNDZlN2NlNGJhNjRiZjRlNWY0N2Y2OTA1Li4yZDM2
ZWEzMTFjNTFkMTQxN2JiMjZiZGMzOTQ3ODE0OGQ5NmZkMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
UGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQorKysgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lw
aQpAQCAtNDQsNiArNDQsOCBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDbGlw
Ym9hcmQuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbG9yLmgnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb21tb24uaCcsCisgICAgICAgICAgICAnY2hy
b21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3IuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYkNvbXBvc2l0b3JTdXJmYWNlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1Ymxp
Yy9XZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2VDbGllbnQuaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5oJywKQEAgLTkxLDYgKzkzLDcgQEAKICAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViTWVzc2FnZVBvcnRDaGFubmVsQ2xpZW50Lmgn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJNaW1lUmVnaXN0cnkuaCcsCiAgICAg
ICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYk5vbkNvcHlhYmxlLmgnLAorICAgICAgICAgICAg
J2Nocm9taXVtL3B1YmxpYy9XZWJQYXNzT3duUHRyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJQZWVyQ29ubmVjdGlvbjAwSGFuZGxlci5oJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJDbGllbnQuaCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlci5oJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaCBiL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAppbmRleCBkNmJhODZmZTdmZTg0
MGJlNjAyZWVmYThjNDM3YjczN2RlODBmODJlLi40N2Q5OTA1ZGM0OTUzMGIwNzBlZDJmNjViZWU1
M2IxM2Q3YWNkNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9y
bS5oCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQXVkaW9C
dXM7CiBjbGFzcyBXZWJCbG9iUmVnaXN0cnk7CiBjbGFzcyBXZWJDbGlwYm9hcmQ7CitjbGFzcyBX
ZWJDb21wb3NpdG9yU3VwcG9ydDsKIGNsYXNzIFdlYkNvb2tpZUphcjsKIGNsYXNzIFdlYkZpbGVT
eXN0ZW07CiBjbGFzcyBXZWJGaWxlVXRpbGl0aWVzOwpAQCAtNDExLDYgKzQxMiw4IEBAIHB1Ymxp
YzoKICAgICAvLyBUaGlzIHZhbHVlIG11c3QgYmUgY2hlY2tlZCBhZ2FpbiBhZnRlciBhIGNvbnRl
eHQgbG9zcyBldmVudCBhcyB0aGUgcGxhdGZvcm0ncyBjYXBhYmlsaXRpZXMgbWF5IGhhdmUgY2hh
bmdlZC4KICAgICB2aXJ0dWFsIGJvb2wgY2FuQWNjZWxlcmF0ZTJkQ2FudmFzKCkgeyByZXR1cm4g
ZmFsc2U7IH0KIAorICAgIHZpcnR1YWwgV2ViQ29tcG9zaXRvclN1cHBvcnQqIGNvbXBvc2l0b3JT
dXBwb3J0KCkgeyByZXR1cm4gMDsgfQorCiAgICAgdmlydHVhbCBXZWJGbGluZ0FuaW1hdG9yKiBj
cmVhdGVGbGluZ0FuaW1hdG9yKCkgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gV2ViUlRDIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN1
cHBvcnQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN1
cHBvcnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45MjdjZmJlYzEwZTQyNDMxYjA1MTFhZTZiZWU4ZmM2ZDM1OTJh
ZGRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJDb21wb3NpdG9yU3VwcG9ydC5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YkNvbXBvc2l0b3JTdXBwb3J0X2gKKyNkZWZpbmUgV2ViQ29tcG9zaXRvclN1cHBvcnRfaAorCisj
aW5jbHVkZSAiV2ViQW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVk
ZSAiV2ViQ29udGVudExheWVyLmgiCisjaW5jbHVkZSAiV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIu
aCIKKyNpbmNsdWRlICJXZWJGbG9hdEFuaW1hdGlvbkN1cnZlLmgiCisjaW5jbHVkZSAiV2ViSU9T
dXJmYWNlTGF5ZXIuaCIKKyNpbmNsdWRlICJXZWJJbWFnZUxheWVyLmgiCisjaW5jbHVkZSAiV2Vi
TGF5ZXIuaCIKKyNpbmNsdWRlICJXZWJMYXllclRyZWVWaWV3LmgiCisjaW5jbHVkZSAiV2ViUGFz
c093blB0ci5oIgorI2luY2x1ZGUgIldlYlNjcm9sbGJhci5oIgorI2luY2x1ZGUgIldlYlNjcm9s
bGJhckxheWVyLmgiCisjaW5jbHVkZSAiV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5oIgorI2lu
Y2x1ZGUgIldlYlNjcm9sbGJhclRoZW1lUGFpbnRlci5oIgorI2luY2x1ZGUgIldlYlNvbGlkQ29s
b3JMYXllci5oIgorI2luY2x1ZGUgIldlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlLmgiCisjaW5j
bHVkZSAiV2ViVmlkZW9MYXllci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
Q29udGVudExheWVyQ2xpZW50OworY2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQ7
CitjbGFzcyBXZWJWaWRlb0ZyYW1lUHJvdmlkZXI7CisKK2NsYXNzIFdlYkNvbXBvc2l0b3JTdXBw
b3J0IHsKK3B1YmxpYzoKKyAgICAvLyBNYXkgcmV0dXJuIDAgaWYgaW5pdGlhbGl6YXRpb24gZmFp
bHMuCisgICAgdmlydHVhbCBXZWJQYXNzT3duUHRyPFdlYkxheWVyVHJlZVZpZXc+IGNyZWF0ZUxh
eWVyVHJlZVZpZXcoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCosIGNvbnN0IFdlYkxheWVyJiByb290
LCBjb25zdCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncyYpIHsgcmV0dXJuIFdlYlBhc3NPd25Q
dHI8V2ViTGF5ZXJUcmVlVmlldz4oKTsgfQorCisKKyAgICAvLyBMYXllcnMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdmlydHVh
bCBXZWJQYXNzT3duUHRyPFdlYkxheWVyPiBjcmVhdGVMYXllcigpIHsgcmV0dXJuIFdlYlBhc3NP
d25QdHI8V2ViTGF5ZXI+KCk7IH0KKworICAgIHZpcnR1YWwgV2ViUGFzc093blB0cjxXZWJDb250
ZW50TGF5ZXI+IGNyZWF0ZUNvbnRlbnRMYXllcihXZWJDb250ZW50TGF5ZXJDbGllbnQqKSB7IHJl
dHVybiBXZWJQYXNzT3duUHRyPFdlYkNvbnRlbnRMYXllcj4oKTsgfQorCisgICAgdmlydHVhbCBX
ZWJQYXNzT3duUHRyPFdlYkV4dGVybmFsVGV4dHVyZUxheWVyPiBjcmVhdGVFeHRlcm5hbFRleHR1
cmVMYXllcihXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudCogPSAwKSB7IHJldHVybiBXZWJQ
YXNzT3duUHRyPFdlYkV4dGVybmFsVGV4dHVyZUxheWVyPigpOyB9CisKKyAgICB2aXJ0dWFsIFdl
YlBhc3NPd25QdHI8V2ViSU9TdXJmYWNlTGF5ZXI+IGNyZWF0ZUlPU3VyZmFjZUxheWVyKCkgeyBy
ZXR1cm4gV2ViUGFzc093blB0cjxXZWJJT1N1cmZhY2VMYXllcj4oKTsgfQorCisgICAgdmlydHVh
bCBXZWJQYXNzT3duUHRyPFdlYkltYWdlTGF5ZXI+IGNyZWF0ZUltYWdlTGF5ZXIoKSB7IHJldHVy
biBXZWJQYXNzT3duUHRyPFdlYkltYWdlTGF5ZXI+KCk7IH0KKworICAgIHZpcnR1YWwgV2ViUGFz
c093blB0cjxXZWJTb2xpZENvbG9yTGF5ZXI+IGNyZWF0ZVNvbGlkQ29sb3JMYXllcigpIHsgcmV0
dXJuIFdlYlBhc3NPd25QdHI8V2ViU29saWRDb2xvckxheWVyPigpOyB9CisKKyAgICB2aXJ0dWFs
IFdlYlBhc3NPd25QdHI8V2ViVmlkZW9MYXllcj4gY3JlYXRlVmlkZW9MYXllcihXZWJWaWRlb0Zy
YW1lUHJvdmlkZXIqKSB7IHJldHVybiBXZWJQYXNzT3duUHRyPFdlYlZpZGVvTGF5ZXI+KCk7IH0K
KworICAgIHZpcnR1YWwgV2ViUGFzc093blB0cjxXZWJTY3JvbGxiYXJMYXllcj4gY3JlYXRlU2Ny
b2xsYmFyTGF5ZXIoV2ViUGFzc093blB0cjxXZWJTY3JvbGxiYXI+LCBXZWJTY3JvbGxiYXJUaGVt
ZVBhaW50ZXIsIFdlYlBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4pIHsgcmV0
dXJuIFdlYlBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyTGF5ZXI+KCk7IH0KKworCisgICAgLy8gQW5p
bWF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworICAgIHZpcnR1YWwgV2ViUGFzc093blB0cjxXZWJBbmltYXRpb24+IGNyZWF0ZUFuaW1h
dGlvbihjb25zdCBXZWJBbmltYXRpb25DdXJ2ZSYsIFdlYkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVy
dHksIGludCBhbmltYXRpb25JZCA9IDApIHsgcmV0dXJuIFdlYlBhc3NPd25QdHI8V2ViQW5pbWF0
aW9uPigpOyB9CisKKyAgICB2aXJ0dWFsIFdlYlBhc3NPd25QdHI8V2ViRmxvYXRBbmltYXRpb25D
dXJ2ZT4gY3JlYXRlRmxvYXRBbmltYXRpb25DdXJ2ZSgpIHsgcmV0dXJuIFdlYlBhc3NPd25QdHI8
V2ViRmxvYXRBbmltYXRpb25DdXJ2ZT4oKTsgfQorCisgICAgdmlydHVhbCBXZWJQYXNzT3duUHRy
PFdlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlPiBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25DdXJ2
ZSgpIHsgcmV0dXJuIFdlYlBhc3NPd25QdHI8V2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU+KCk7
IH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIH5XZWJDb21wb3NpdG9yU3VwcG9ydCgpIHsgfQor
fTsKKworfQorCisjZW5kaWYgLy8gV2ViQ29tcG9zaXRvclN1cHBvcnRfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQYXNzT3duUHRyLmggYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlBhc3NPd25QdHIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDcx
ODI1MDBhMTM5YjI4YzA5YzUzODg3MDM5ZDQ3NWMyZmY5NjU4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQYXNzT3duUHRyLmgKQEAgLTAsMCAr
MSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBhc3NPd25QdHJfaAorI2RlZmluZSBXZWJQYXNz
T3duUHRyX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCisjaWYgV0VCS0lUX0lNUExFTUVO
VEFUSU9OCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CisjZWxzZQorI2luY2x1ZGUgImJhc2UvbWVtb3J5L3Njb3BlZF9wdHIuaCIKKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVXNlIGEgcmV0dXJuIHZhbHVlIG9mIHR5cGUgV2Vi
UGFzc093blB0cjxUPiB3aGVuIHRoZSBjYWxsZXIgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSByZXR1
cm5lZCB2YWx1ZSwgZm9yIGluc3RhbmNlCisvLyBpbiBhIGNyZWF0ZUZvbygpIGZhY3RvcnkgZnVu
Y3Rpb24uIEV4YW1wbGU6CisvLworLy8gVG8gaW1wbGVtZW50IHRoZSBjbGFzcyBXZWJQYXNzT3du
UHRyPEZvbz4gY3JlYXRlRm9vKCkgaW4gY2hyb21pdW0gY29kZSwgd3JpdGU6CisvLworLy8gV2Vi
UGFzc093blB0cjxGb28+IGNyZWF0ZUZvbygpIHsKKy8vICAgc2NvcGVkX3B0cjxGb28+IGZvbyA9
IC4uLjsKKy8vICAgcmV0dXJuIGZvby5QYXNzKCk7CisvLyB9CisvLworLy8gVG8gdXNlIG9uIHRo
ZSBXZWJLaXQgc2lkZToKKy8vCisvLyAgIE93blB0cjxGb28+IGZvbyA9IC4uLi0+Y3JlYXRlRm9v
KCk7CisvLworLy8gVG8gaW1wbGVtZW50IFdlYlBhc3NPd25QdHI8Rm9vPiBjcmVhdGVGb28oKSBp
biBXZWJLaXQgYW5kIHVzZSBpdCBmcm9tIGNocm9taXVtLCB3cml0ZToKKy8vCisvLyBXZWJQYXNz
T3duUHRyPEZvbz4gY3JlYXRlRm9vKCkKKy8vIHsKKy8vICAgICBPd25QdHI8Rm9vPiBmb28gPSAu
Li47CisvLyAgICAgcmV0dXJuIGZvby5yZWxlYXNlKCk7CisvLyB9CisvLworLy8gYW5kCisvLwor
Ly8gICBzY29wZWRfcHRyPEZvbz4gPSAuLi4tPmNyZWF0ZUZvbygpOworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2NsYXNzIFdlYlBhc3NPd25QdHIgOiBwdWJsaWMgV2ViTm9uQ29weWFibGUgewor
cHVibGljOgorICAgIFdlYlBhc3NPd25QdHIoKQorICAgICAgICA6IG1fcHRyKDApCisgICAgewor
ICAgIH0KKworICAgIH5XZWJQYXNzT3duUHRyKCkKKyAgICB7CisgICAgICAgIFdFQktJVF9BU1NF
UlQoIW1fcHRyKTsKKyAgICB9CisKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdl
YlBhc3NPd25QdHIoUGFzc093blB0cjxUPiBwdHIpCisgICAgICAgIDogbV9wdHIocHRyLmxlYWtQ
dHIoKSkKKyAgICB7CisgICAgfQorCisgICAgb3BlcmF0b3IgUGFzc093blB0cjxUPigpCisgICAg
eworICAgICAgICBPd25QdHI8VD4gcmV0ID0gYWRvcHRQdHIobV9wdHIpOworICAgICAgICBtX3B0
ciA9IDA7CisgICAgICAgIHJldHVybiByZXQucmVsZWFzZSgpOworICAgIH0KKyNlbHNlCisgICAg
V2ViUGFzc093blB0cihzY29wZWRfcHRyPFQ+IHB0cikKKyAgICAgICAgOiBtX3B0cihwdHIucmVs
ZWFzZSgpKQorICAgIHsKKyAgICB9CisKKyAgICBvcGVyYXRvciBzY29wZWRfcHRyPFQ+KCkKKyAg
ICB7CisgICAgICAgIHNjb3BlZF9wdHI8VD4gcmV0KG1fcHRyKTsKKyAgICAgICAgbV9wdHIgPSAw
OworICAgICAgICByZXR1cm4gcmV0LlBhc3MoKTsKKyAgICB9CisjZW5kaWYKKworcHJpdmF0ZToK
KyAgICBUKiBtX3B0cjsKKworICAgIC8vIFRoaXMgY29uc3RydWN0b3IgaGFzIHRvIGJlIGRlY2xh
cmVkIGJ1dCBub3QgZGVmaW5lZCB0byB0cmlnZ2VyIG1vdmUgZW11bGF0aW9uLgorICAgIFdlYlBh
c3NPd25QdHIoV2ViUGFzc093blB0ciYpOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViUGFzc093
blB0cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9BbmltYXRpb25UcmFuc2xhdGlvblV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsLmNwcAppbmRleCBh
ZThmOTAwN2I1ODg4MTdiMTBiM2JiYTM1NzUxN2VkOWE1MzMxYzIzLi4yZGFjMjJlYWU3Yjg3MDVm
ZGM2ZTg0NzJjN2NmYjk1NjljMTVhODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BbmltYXRpb25UcmFuc2xhdGlvblV0aWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0FuaW1hdGlvblRyYW5z
bGF0aW9uVXRpbC5jcHAKQEAgLTQwLDggKzQwLDEwIEBACiAjaW5jbHVkZSAiVHJhbnNmb3JtT3Bl
cmF0aW9ucy5oIgogI2luY2x1ZGUgIlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogCisj
aW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkFuaW1hdGlv
bi5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJBbmltYXRpb25DdXJ2ZS5oPgorI2luY2x1ZGUgPHB1
YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9ydC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdEFu
aW1hdGlvbkN1cnZlLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybUFuaW1hdGlvbkN1
cnZlLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMuaD4KQEAgLTE3
MCw3ICsxNzIsNyBAQCBib29sIGFwcGVuZEtleWZyYW1lV2l0aEN1c3RvbUJlemllclRpbWluZ0Z1
bmN0aW9uPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlLCBXZWJUcgogfQogCiB0ZW1wbGF0ZSA8Y2xh
c3MgVmFsdWUsIGNsYXNzIEtleWZyYW1lLCBjbGFzcyBDdXJ2ZT4KLVBhc3NPd25QdHI8V2ViS2l0
OjpXZWJBbmltYXRpb24+IGNyZWF0ZVdlYkFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlz
dCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgaW50IGFuaW1hdGlvbklk
LCBkb3VibGUgdGltZU9mZnNldCwgV2ViS2l0OjpXZWJBbmltYXRpb246OlRhcmdldFByb3BlcnR5
IHRhcmdldFByb3BlcnR5LCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUpCitQYXNzT3duUHRyPFdl
YktpdDo6V2ViQW5pbWF0aW9uPiBjcmVhdGVXZWJBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1
ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGludCBhbmltYXRp
b25JZCwgZG91YmxlIHRpbWVPZmZzZXQsIEN1cnZlKiBjdXJ2ZSwgV2ViS2l0OjpXZWJBbmltYXRp
b246OlRhcmdldFByb3BlcnR5IHRhcmdldFByb3BlcnR5LCBjb25zdCBGbG9hdFNpemUmIGJveFNp
emUpCiB7CiAgICAgYm9vbCBhbHRlcm5hdGUgPSBmYWxzZTsKICAgICBib29sIHJldmVyc2UgPSBm
YWxzZTsKQEAgLTE4Miw4ICsxODQsNiBAQCBQYXNzT3duUHRyPFdlYktpdDo6V2ViQW5pbWF0aW9u
PiBjcmVhdGVXZWJBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbAogICAgICAg
ICAgICAgcmV2ZXJzZSA9IHRydWU7CiAgICAgfQogCi0gICAgT3duUHRyPEN1cnZlPiBjdXJ2ZSA9
IGFkb3B0UHRyKEN1cnZlOjpjcmVhdGUoKSk7Ci0KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHZhbHVlTGlzdC5zaXplKCk7IGkrKykgewogICAgICAgICBzaXplX3QgaW5kZXggPSByZXZlcnNl
ID8gdmFsdWVMaXN0LnNpemUoKSAtIGkgLSAxIDogaTsKICAgICAgICAgY29uc3QgVmFsdWUqIG9y
aWdpbmFsVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBWYWx1ZSo+KHZhbHVlTGlzdC5hdChpbmRl
eCkpOwpAQCAtMjM0LDMyICsyMzQsNTAgQEAgUGFzc093blB0cjxXZWJLaXQ6OldlYkFuaW1hdGlv
bj4gY3JlYXRlV2ViQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWwKIAogICAg
ICAgICBib29sIGFkZGVkS2V5ZnJhbWUgPSBmYWxzZTsKICAgICAgICAgaWYgKGlzVXNpbmdDdXN0
b21CZXppZXJUaW1pbmdGdW5jdGlvbikKLSAgICAgICAgICAgIGFkZGVkS2V5ZnJhbWUgPSBhcHBl
bmRLZXlmcmFtZVdpdGhDdXN0b21CZXppZXJUaW1pbmdGdW5jdGlvbjxWYWx1ZSwgS2V5ZnJhbWUs
IEN1cnZlPihjdXJ2ZS5nZXQoKSwga2V5VGltZSwgb3JpZ2luYWxWYWx1ZSwgbGFzdE9yaWdpbmFs
VmFsdWUsIHgxLCB5MSwgeDIsIHkyLCBib3hTaXplKTsKKyAgICAgICAgICAgIGFkZGVkS2V5ZnJh
bWUgPSBhcHBlbmRLZXlmcmFtZVdpdGhDdXN0b21CZXppZXJUaW1pbmdGdW5jdGlvbjxWYWx1ZSwg
S2V5ZnJhbWUsIEN1cnZlPihjdXJ2ZSwga2V5VGltZSwgb3JpZ2luYWxWYWx1ZSwgbGFzdE9yaWdp
bmFsVmFsdWUsIHgxLCB5MSwgeDIsIHkyLCBib3hTaXplKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgYWRkZWRLZXlmcmFtZSA9IGFwcGVuZEtleWZyYW1lV2l0aFN0YW5kYXJkVGltaW5nRnVu
Y3Rpb248VmFsdWUsIEtleWZyYW1lLCBDdXJ2ZT4oY3VydmUuZ2V0KCksIGtleVRpbWUsIG9yaWdp
bmFsVmFsdWUsIGxhc3RPcmlnaW5hbFZhbHVlLCB0aW1pbmdGdW5jdGlvblR5cGUsIGJveFNpemUp
OworICAgICAgICAgICAgYWRkZWRLZXlmcmFtZSA9IGFwcGVuZEtleWZyYW1lV2l0aFN0YW5kYXJk
VGltaW5nRnVuY3Rpb248VmFsdWUsIEtleWZyYW1lLCBDdXJ2ZT4oY3VydmUsIGtleVRpbWUsIG9y
aWdpbmFsVmFsdWUsIGxhc3RPcmlnaW5hbFZhbHVlLCB0aW1pbmdGdW5jdGlvblR5cGUsIGJveFNp
emUpOwogICAgICAgICBpZiAoIWFkZGVkS2V5ZnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJBbmltYXRpb24+IGFuaW0oYWRv
cHRQdHIoV2ViS2l0OjpXZWJBbmltYXRpb246OmNyZWF0ZSgqY3VydmUsIHRhcmdldFByb3BlcnR5
LCBhbmltYXRpb25JZCkpKTsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJBbmltYXRpb24+IHdlYkFu
aW1hdGlvbjsKKyAgICBpZiAoV2ViQ29tcG9zaXRvclN1cHBvcnQqIGNvbXBvc2l0b3JTdXBwb3J0
ID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9yU3VwcG9ydCgpKQorICAg
ICAgICB3ZWJBbmltYXRpb24gPSBjb21wb3NpdG9yU3VwcG9ydC0+Y3JlYXRlQW5pbWF0aW9uKCpj
dXJ2ZSwgdGFyZ2V0UHJvcGVydHksIGFuaW1hdGlvbklkKTsKKyAgICBlbHNlCisgICAgICAgIHdl
YkFuaW1hdGlvbiA9IGFkb3B0UHRyKFdlYktpdDo6V2ViQW5pbWF0aW9uOjpjcmVhdGUoKmN1cnZl
LCB0YXJnZXRQcm9wZXJ0eSwgYW5pbWF0aW9uSWQpKTsKIAogICAgIGludCBpdGVyYXRpb25zID0g
KGFuaW1hdGlvbiAmJiBhbmltYXRpb24tPmlzSXRlcmF0aW9uQ291bnRTZXQoKSkgPyBhbmltYXRp
b24tPml0ZXJhdGlvbkNvdW50KCkgOiAxOwotICAgIGFuaW0tPnNldEl0ZXJhdGlvbnMoaXRlcmF0
aW9ucyk7Ci0gICAgYW5pbS0+c2V0QWx0ZXJuYXRlc0RpcmVjdGlvbihhbHRlcm5hdGUpOworICAg
IHdlYkFuaW1hdGlvbi0+c2V0SXRlcmF0aW9ucyhpdGVyYXRpb25zKTsKKyAgICB3ZWJBbmltYXRp
b24tPnNldEFsdGVybmF0ZXNEaXJlY3Rpb24oYWx0ZXJuYXRlKTsKIAogICAgIC8vIElmIHRpbWVP
ZmZzZXQgPiAwLCB0aGVuIHRoZSBhbmltYXRpb24gaGFzIHN0YXJ0ZWQgaW4gdGhlIHBhc3QuCi0g
ICAgYW5pbS0+c2V0VGltZU9mZnNldCh0aW1lT2Zmc2V0KTsKKyAgICB3ZWJBbmltYXRpb24tPnNl
dFRpbWVPZmZzZXQodGltZU9mZnNldCk7CiAKLSAgICByZXR1cm4gYW5pbS5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIHdlYkFuaW1hdGlvbi5yZWxlYXNlKCk7CiB9CiAKIFBhc3NPd25QdHI8V2ViS2l0
OjpXZWJBbmltYXRpb24+IGNyZWF0ZVdlYkFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlz
dCYgdmFsdWVzLCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgaW50IGFuaW1hdGlvbklkLCBk
b3VibGUgdGltZU9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBib3hTaXplKQogewotICAgIGlmICh2
YWx1ZXMucHJvcGVydHkoKSA9PSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKQotICAg
ICAgICByZXR1cm4gY3JlYXRlV2ViQW5pbWF0aW9uPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlLCBX
ZWJUcmFuc2Zvcm1LZXlmcmFtZSwgV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU+KHZhbHVlcywg
YW5pbWF0aW9uLCBhbmltYXRpb25JZCwgdGltZU9mZnNldCwgV2ViS2l0OjpXZWJBbmltYXRpb246
OlRhcmdldFByb3BlcnR5VHJhbnNmb3JtLCBGbG9hdFNpemUoYm94U2l6ZSkpOwogCi0gICAgaWYg
KHZhbHVlcy5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KQotICAgICAgICBy
ZXR1cm4gY3JlYXRlV2ViQW5pbWF0aW9uPEZsb2F0QW5pbWF0aW9uVmFsdWUsIFdlYkZsb2F0S2V5
ZnJhbWUsIFdlYkZsb2F0QW5pbWF0aW9uQ3VydmU+KHZhbHVlcywgYW5pbWF0aW9uLCBhbmltYXRp
b25JZCwgdGltZU9mZnNldCwgV2ViS2l0OjpXZWJBbmltYXRpb246OlRhcmdldFByb3BlcnR5T3Bh
Y2l0eSwgRmxvYXRTaXplKCkpOworCisgICAgaWYgKHZhbHVlcy5wcm9wZXJ0eSgpID09IEFuaW1h
dGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pIHsKKyAgICAgICAgT3duUHRyPFdlYlRyYW5zZm9y
bUFuaW1hdGlvbkN1cnZlPiBjdXJ2ZTsKKyAgICAgICAgaWYgKFdlYkNvbXBvc2l0b3JTdXBwb3J0
KiBjb21wb3NpdG9yU3VwcG9ydCA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9z
aXRvclN1cHBvcnQoKSkKKyAgICAgICAgICAgIGN1cnZlID0gY29tcG9zaXRvclN1cHBvcnQtPmNy
ZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGN1cnZlID0gYWRvcHRQdHIoV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU6OmNyZWF0ZSgpKTsK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZVdlYkFuaW1hdGlvbjxUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZSwgV2ViVHJhbnNmb3JtS2V5ZnJhbWUsIFdlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlPih2YWx1
ZXMsIGFuaW1hdGlvbiwgYW5pbWF0aW9uSWQsIHRpbWVPZmZzZXQsIGN1cnZlLmdldCgpLCBXZWJL
aXQ6OldlYkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHlUcmFuc2Zvcm0sIEZsb2F0U2l6ZShib3hT
aXplKSk7CisgICAgfQorCisgICAgaWYgKHZhbHVlcy5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJv
cGVydHlPcGFjaXR5KSB7CisgICAgICAgIE93blB0cjxXZWJGbG9hdEFuaW1hdGlvbkN1cnZlPiBj
dXJ2ZTsKKyAgICAgICAgaWYgKFdlYkNvbXBvc2l0b3JTdXBwb3J0KiBjb21wb3NpdG9yU3VwcG9y
dCA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKSkKKyAg
ICAgICAgICAgIGN1cnZlID0gY29tcG9zaXRvclN1cHBvcnQtPmNyZWF0ZUZsb2F0QW5pbWF0aW9u
Q3VydmUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3VydmUgPSBhZG9wdFB0cihXZWJG
bG9hdEFuaW1hdGlvbkN1cnZlOjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVXZWJB
bmltYXRpb248RmxvYXRBbmltYXRpb25WYWx1ZSwgV2ViRmxvYXRLZXlmcmFtZSwgV2ViRmxvYXRB
bmltYXRpb25DdXJ2ZT4odmFsdWVzLCBhbmltYXRpb24sIGFuaW1hdGlvbklkLCB0aW1lT2Zmc2V0
LCBjdXJ2ZS5nZXQoKSwgV2ViS2l0OjpXZWJBbmltYXRpb246OlRhcmdldFByb3BlcnR5T3BhY2l0
eSwgRmxvYXRTaXplKCkpOworICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcAppbmRleCA2MTRmZTRiNGE0NWRmNDFlNDI1MmM1YjJh
ZDJmZDliZGMwOWViOWU4Li5mYTgxNDlhYTM4ZTQ3ZjZlNDJiNDVmYWVhOTRiMmM3MTViNTMwNTJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXMyRExheWVyQnJpZGdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcApAQCAtMzMsNyArMzMsOSBAQAog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2luY2x1ZGUgPHB1YmxpYy9Q
bGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yLmg+CisjaW5jbHVkZSA8
cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBo
aWNzQ29udGV4dDNELmg+CiAKIHVzaW5nIFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI7
CkBAIC03Myw3ICs3NSwxMSBAQCBDYW52YXMyRExheWVyQnJpZGdlOjpDYW52YXMyRExheWVyQnJp
ZGdlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsCiAgICAgICAgICAgICBn
ckNvbnRleHQtPnJlc2V0Q29udGV4dCgpOwogICAgIH0KIAotICAgIG1fbGF5ZXIgPSBhZG9wdFB0
cihXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKHRoaXMpKTsKKyAgICBpZiAoV2ViS2l0
OjpXZWJDb21wb3NpdG9yU3VwcG9ydCogY29tcG9zaXRvclN1cHBvcnQgPSBXZWJLaXQ6OlBsYXRm
b3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCkpCisgICAgICAgIG1fbGF5ZXIgPSBj
b21wb3NpdG9yU3VwcG9ydC0+Y3JlYXRlRXh0ZXJuYWxUZXh0dXJlTGF5ZXIodGhpcyk7CisgICAg
ZWxzZQorICAgICAgICBtX2xheWVyID0gYWRvcHRQdHIoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1
cmVMYXllcjo6Y3JlYXRlKHRoaXMpKTsKKwogICAgIG1fbGF5ZXItPnNldFRleHR1cmVJZCh0ZXh0
dXJlSWQpOwogICAgIG1fbGF5ZXItPnNldFJhdGVMaW1pdENvbnRleHQoIVdlYktpdDo6V2ViQ29t
cG9zaXRvcjo6dGhyZWFkaW5nRW5hYmxlZCgpIHx8IG1fdXNlRG91YmxlQnVmZmVyaW5nKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Ry
YXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCmluZGV4IDA2ODM5Yzk3ODBjZTJm
ZDAxMDE1MGI3NWIyNzA3MjE1YWQyYWVkY2UuLjlkYmY3MzUxZGQ2YzUwMzA2MTg3ZWIxMWEyMDli
ZDI5MmJkYWQ3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcApAQCAt
MzcsNyArMzcsOSBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1
ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yLmg+
CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+CiAjaW5jbHVkZSA8cHVi
bGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkV4dGVy
bmFsVGV4dHVyZUxheWVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29u
dGV4dDNELmg+CkBAIC0xNjIsOCArMTY0LDEyIEBAIGNsYXNzIERyYXdpbmdCdWZmZXJQcml2YXRl
IDogcHVibGljIFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQgewogcHVibGlj
OgogICAgIGV4cGxpY2l0IERyYXdpbmdCdWZmZXJQcml2YXRlKERyYXdpbmdCdWZmZXIqIGRyYXdp
bmdCdWZmZXIpCiAgICAgICAgIDogbV9kcmF3aW5nQnVmZmVyKGRyYXdpbmdCdWZmZXIpCi0gICAg
ICAgICwgbV9sYXllcihhZG9wdFB0cihXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpj
cmVhdGUodGhpcykpKQogICAgIHsKKyAgICAgICAgaWYgKFdlYktpdDo6V2ViQ29tcG9zaXRvclN1
cHBvcnQqIGNvbXBvc2l0b3JTdXBwb3J0ID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5j
b21wb3NpdG9yU3VwcG9ydCgpKQorICAgICAgICAgICAgbV9sYXllciA9IGNvbXBvc2l0b3JTdXBw
b3J0LT5jcmVhdGVFeHRlcm5hbFRleHR1cmVMYXllcih0aGlzKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgbV9sYXllciA9IGFkb3B0UHRyKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXI6OmNyZWF0ZSh0aGlzKSk7CisKICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0
ZXMgYXR0cmlidXRlcyA9IG1fZHJhd2luZ0J1ZmZlci0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0
Q29udGV4dEF0dHJpYnV0ZXMoKTsKICAgICAgICAgbV9sYXllci0+c2V0T3BhcXVlKCFhdHRyaWJ1
dGVzLmFscGhhKTsKICAgICAgICAgbV9sYXllci0+c2V0UHJlbXVsdGlwbGllZEFscGhhKGF0dHJp
YnV0ZXMucHJlbXVsdGlwbGllZEFscGhhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21p
dW0uY3BwCmluZGV4IDc2NWU0NTA5OGVkMjMyMWExZTQ5YWMyYzgxYzU1NWQxOTMyOTZiYmMuLjZl
YjZjNmI4Y2JmMWYxMjRjNjliMjZmMjI2ZDk0NjAxYjUyMTE5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3Jh
cGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtNTcsNyArNTcsOSBAQAogI2luY2x1ZGUgIlNrTWF0
cml4NDQuaCIKICNpbmNsdWRlICJTeXN0ZW1UaW1lLmgiCiAKKyNpbmNsdWRlIDxwdWJsaWMvUGxh
dGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQW5pbWF0aW9uLmg+CisjaW5jbHVkZSA8cHVi
bGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9w
ZXJhdGlvbi5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+CiAjaW5j
bHVkZSA8cHVibGljL1dlYkZsb2F0UG9pbnQuaD4KQEAgLTkwLDcgKzkyLDEyIEBAIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6R3JhcGhpY3NMYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDbGllbnQq
IGNsaWVudCkKICAgICAsIG1fcGFnZVNjYWxlQ2hhbmdlZChmYWxzZSkKIHsKICAgICBtX29wYXF1
ZVJlY3RUcmFja2luZ0NvbnRlbnRMYXllckRlbGVnYXRlID0gYWRvcHRQdHIobmV3IE9wYXF1ZVJl
Y3RUcmFja2luZ0NvbnRlbnRMYXllckRlbGVnYXRlKHRoaXMpKTsKLSAgICBtX2xheWVyID0gYWRv
cHRQdHIoV2ViQ29udGVudExheWVyOjpjcmVhdGUobV9vcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50
TGF5ZXJEZWxlZ2F0ZS5nZXQoKSkpOworCisgICAgaWYgKFdlYkNvbXBvc2l0b3JTdXBwb3J0KiBj
b21wb3NpdG9yU3VwcG9ydCA9IFBsYXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0
KCkpCisgICAgICAgIG1fbGF5ZXIgPSBjb21wb3NpdG9yU3VwcG9ydC0+Y3JlYXRlQ29udGVudExh
eWVyKG1fb3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExheWVyRGVsZWdhdGUuZ2V0KCkpOworICAg
IGVsc2UKKyAgICAgICAgbV9sYXllciA9IGFkb3B0UHRyKFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRl
KG1fb3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExheWVyRGVsZWdhdGUuZ2V0KCkpKTsKKwogICAg
IG1fbGF5ZXItPmxheWVyKCktPnNldERyYXdzQ29udGVudChtX2RyYXdzQ29udGVudCAmJiBtX2Nv
bnRlbnRzVmlzaWJsZSk7CiAgICAgaWYgKGNsaWVudCkKICAgICAgICAgZGV2aWNlT3JQYWdlU2Nh
bGVGYWN0b3JDaGFuZ2VkKCk7CkBAIC00NjcsNyArNDc0LDEyIEBAIHZvaWQgR3JhcGhpY3NMYXll
ckNocm9taXVtOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogICAgIGJvb2wgY2hp
bGRyZW5DaGFuZ2VkID0gZmFsc2U7CiAgICAgaWYgKGltYWdlKSB7CiAgICAgICAgIGlmIChtX2Nv
bnRlbnRzTGF5ZXJQdXJwb3NlICE9IENvbnRlbnRzTGF5ZXJGb3JJbWFnZSkgewotICAgICAgICAg
ICAgbV9pbWFnZUxheWVyID0gYWRvcHRQdHIoV2ViSW1hZ2VMYXllcjo6Y3JlYXRlKCkpOworCisg
ICAgICAgICAgICBpZiAoV2ViQ29tcG9zaXRvclN1cHBvcnQqIGNvbXBvc2l0b3JTdXBwb3J0ID0g
UGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKSkKKyAgICAgICAgICAgICAg
ICBtX2ltYWdlTGF5ZXIgPSBjb21wb3NpdG9yU3VwcG9ydC0+Y3JlYXRlSW1hZ2VMYXllcigpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1faW1hZ2VMYXllciA9IGFkb3B0UHRy
KFdlYkltYWdlTGF5ZXI6OmNyZWF0ZSgpKTsKKwogICAgICAgICAgICAgc2V0dXBDb250ZW50c0xh
eWVyKG1faW1hZ2VMYXllci0+bGF5ZXIoKSk7CiAgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQ
dXJwb3NlID0gQ29udGVudHNMYXllckZvckltYWdlOwogICAgICAgICAgICAgY2hpbGRyZW5DaGFu
Z2VkID0gdHJ1ZTsKQEAgLTUwMCw3ICs1MTIsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6c2V0Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqIGxheWVyKQogICAgIHNldENvbnRl
bnRzVG8oQ29udGVudHNMYXllckZvclZpZGVvLCBsYXllcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NM
YXllckNocm9taXVtOjpzZXRDb250ZW50c1RvKENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2Us
IFdlYktpdDo6V2ViTGF5ZXIqIGxheWVyKQordm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNl
dENvbnRlbnRzVG8oQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSwgV2ViTGF5ZXIqIGxheWVy
KQogewogICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7CiAgICAgaWYgKGxheWVyKSB7
CkBAIC01MzIsNyArNTQ0LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZEFuaW1h
dGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVzLCBjb25zdAogICAgIGlmIChtX2Fu
aW1hdGlvbklkTWFwLmNvbnRhaW5zKGFuaW1hdGlvbk5hbWUpKQogICAgICAgICBhbmltYXRpb25J
ZCA9IG1fYW5pbWF0aW9uSWRNYXAuZ2V0KGFuaW1hdGlvbk5hbWUpOwogCi0gICAgT3duUHRyPFdl
YktpdDo6V2ViQW5pbWF0aW9uPiB0b0FkZChjcmVhdGVXZWJBbmltYXRpb24odmFsdWVzLCBhbmlt
YXRpb24sIGFuaW1hdGlvbklkLCB0aW1lT2Zmc2V0LCBib3hTaXplKSk7CisgICAgT3duUHRyPFdl
YkFuaW1hdGlvbj4gdG9BZGQoY3JlYXRlV2ViQW5pbWF0aW9uKHZhbHVlcywgYW5pbWF0aW9uLCBh
bmltYXRpb25JZCwgdGltZU9mZnNldCwgYm94U2l6ZSkpOwogCiAgICAgaWYgKHRvQWRkKSB7CiAg
ICAgICAgIGFuaW1hdGlvbklkID0gdG9BZGQtPmlkKCk7CkBAIC02NzgsOCArNjkwLDExIEBAIHZv
aWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVNYXNrc1RvQm91bmRzKCkKIHZvaWQgR3Jh
cGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNEKCkKIHsKICAgICBpZiAo
bV9wcmVzZXJ2ZXMzRCAmJiAhbV90cmFuc2Zvcm1MYXllcikgewotICAgICAgICAvLyBDcmVhdGUg
dGhlIHRyYW5zZm9ybSBsYXllci4KLSAgICAgICAgbV90cmFuc2Zvcm1MYXllciA9IGFkb3B0UHRy
KFdlYkxheWVyOjpjcmVhdGUoKSk7CisgICAgICAgIGlmIChXZWJDb21wb3NpdG9yU3VwcG9ydCog
Y29tcG9zaXRvclN1cHBvcnQgPSBQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9yU3VwcG9y
dCgpKQorICAgICAgICAgICAgbV90cmFuc2Zvcm1MYXllciA9IGNvbXBvc2l0b3JTdXBwb3J0LT5j
cmVhdGVMYXllcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3RyYW5zZm9ybUxheWVy
ID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKKwogICAgICAgICBtX3RyYW5zZm9ybUxh
eWVyLT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKICAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+c2V0
QW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7CiAgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnRyYW5z
ZmVyQW5pbWF0aW9uc1RvKG1fdHJhbnNmb3JtTGF5ZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTGlua0hpZ2hsaWdodC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9MaW5rSGlnaGxpZ2h0LmNwcAppbmRleCBhMGM1YmZiYWVjODAzYjViNzNk
ZDg4MWRjNTMyYzg0OWQzYmE1NzU4Li42Zjk3NDYwZDNlZjYyMWE1NjI3ZGQ1ZTY2MjE0ZjBlYThm
YWJhMTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9MaW5rSGlnaGxp
Z2h0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9MaW5rSGlnaGxpZ2h0LmNw
cApAQCAtNDEsNyArNDEsOSBAQAogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgogI2luY2x1ZGUg
IldlYktpdC5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCisjaW5jbHVkZSA8cHVibGljL1Bs
YXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkFuaW1hdGlvbkN1cnZlLmg+CisjaW5jbHVk
ZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkZs
b2F0QW5pbWF0aW9uQ3VydmUuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRQb2ludC5oPgog
I2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+CkBAIC01OSwxNiArNjEsMjAgQEAgUGFzc093blB0
cjxMaW5rSGlnaGxpZ2h0PiBMaW5rSGlnaGxpZ2h0OjpjcmVhdGUoTm9kZSogbm9kZSwgV2ViVmll
d0ltcGwqIG93bmluZ1cKIH0KIAogTGlua0hpZ2hsaWdodDo6TGlua0hpZ2hsaWdodChOb2RlKiBu
b2RlLCBXZWJWaWV3SW1wbCogb3duaW5nV2ViVmlld0ltcGwpCi0gICAgOiBtX2NvbnRlbnRMYXll
cihhZG9wdFB0cihXZWJDb250ZW50TGF5ZXI6OmNyZWF0ZSh0aGlzKSkpCi0gICAgLCBtX2NsaXBM
YXllcihhZG9wdFB0cihXZWJMYXllcjo6Y3JlYXRlKCkpKQotICAgICwgbV9ub2RlKG5vZGUpCisg
ICAgOiBtX25vZGUobm9kZSkKICAgICAsIG1fb3duaW5nV2ViVmlld0ltcGwob3duaW5nV2ViVmll
d0ltcGwpCiAgICAgLCBtX2N1cnJlbnRHcmFwaGljc0xheWVyKDApCiAgICAgLCBtX2dlb21ldHJ5
TmVlZHNVcGRhdGUoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fbm9kZSk7CiAgICAgQVNTRVJUKG93
bmluZ1dlYlZpZXdJbXBsKTsKLQorICAgIGlmIChXZWJDb21wb3NpdG9yU3VwcG9ydCogY29tcG9z
aXRvclN1cHBvcnQgPSBQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9yU3VwcG9ydCgpKSB7
CisgICAgICAgIG1fY29udGVudExheWVyID0gY29tcG9zaXRvclN1cHBvcnQtPmNyZWF0ZUNvbnRl
bnRMYXllcih0aGlzKTsKKyAgICAgICAgbV9jbGlwTGF5ZXIgPSBjb21wb3NpdG9yU3VwcG9ydC0+
Y3JlYXRlTGF5ZXIoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2NvbnRlbnRMYXllciA9IGFk
b3B0UHRyKFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKHRoaXMpKTsKKyAgICAgICAgbV9jbGlwTGF5
ZXIgPSBhZG9wdFB0cihXZWJMYXllcjo6Y3JlYXRlKCkpOworICAgIH0KICAgICBtX2NsaXBMYXll
ci0+c2V0QW5jaG9yUG9pbnQoV2ViRmxvYXRQb2ludCgpKTsKICAgICBtX2NsaXBMYXllci0+YWRk
Q2hpbGQobV9jb250ZW50TGF5ZXItPmxheWVyKCkpOwogICAgIG1fY29udGVudExheWVyLT5sYXll
cigpLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOwpAQCAtMjAwLDEzICsyMDYsMjQgQEAgdm9pZCBM
aW5rSGlnaGxpZ2h0OjpzdGFydEhpZ2hsaWdodEFuaW1hdGlvbigpCiAKICAgICBtX2NvbnRlbnRM
YXllci0+bGF5ZXIoKS0+c2V0T3BhY2l0eShzdGFydE9wYWNpdHkpOwogCi0gICAgT3duUHRyPFdl
YkZsb2F0QW5pbWF0aW9uQ3VydmU+IGN1cnZlID0gYWRvcHRQdHIoV2ViRmxvYXRBbmltYXRpb25D
dXJ2ZTo6Y3JlYXRlKCkpOworICAgIFdlYkNvbXBvc2l0b3JTdXBwb3J0KiBjb21wb3NpdG9yU3Vw
cG9ydCA9IFBsYXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCk7CisKKyAgICBP
d25QdHI8V2ViRmxvYXRBbmltYXRpb25DdXJ2ZT4gY3VydmU7CisgICAgaWYgKGNvbXBvc2l0b3JT
dXBwb3J0KQorICAgICAgICBjdXJ2ZSA9IGNvbXBvc2l0b3JTdXBwb3J0LT5jcmVhdGVGbG9hdEFu
aW1hdGlvbkN1cnZlKCk7CisgICAgZWxzZQorICAgICAgICBjdXJ2ZSA9IGFkb3B0UHRyKFdlYkZs
b2F0QW5pbWF0aW9uQ3VydmU6OmNyZWF0ZSgpKTsKKwogICAgIGN1cnZlLT5hZGQoV2ViRmxvYXRL
ZXlmcmFtZSgwLCBzdGFydE9wYWNpdHkpKTsKICAgICBjdXJ2ZS0+YWRkKFdlYkZsb2F0S2V5ZnJh
bWUoZHVyYXRpb24gLyAyLCBzdGFydE9wYWNpdHkpKTsKICAgICAvLyBGb3IgbGF5b3V0IHRlc3Rz
IHdlIGRvbid0IGZhZGUgb3V0LgogICAgIGN1cnZlLT5hZGQoV2ViRmxvYXRLZXlmcmFtZShkdXJh
dGlvbiwgV2ViS2l0OjpsYXlvdXRUZXN0TW9kZSgpID8gc3RhcnRPcGFjaXR5IDogMCkpOwogCi0g
ICAgbV9hbmltYXRpb24gPSBhZG9wdFB0cihXZWJBbmltYXRpb246OmNyZWF0ZSgqY3VydmUsIFdl
YkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHlPcGFjaXR5KSk7CisgICAgaWYgKGNvbXBvc2l0b3JT
dXBwb3J0KQorICAgICAgICBtX2FuaW1hdGlvbiA9IGNvbXBvc2l0b3JTdXBwb3J0LT5jcmVhdGVB
bmltYXRpb24oKmN1cnZlLCBXZWJBbmltYXRpb246OlRhcmdldFByb3BlcnR5T3BhY2l0eSk7Cisg
ICAgZWxzZQorICAgICAgICBtX2FuaW1hdGlvbiA9IGFkb3B0UHRyKFdlYkFuaW1hdGlvbjo6Y3Jl
YXRlKCpjdXJ2ZSwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eU9wYWNpdHkpKTsKKwogICAg
IG1fY29udGVudExheWVyLT5sYXllcigpLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CiAgICAgbV9j
b250ZW50TGF5ZXItPmxheWVyKCktPmFkZEFuaW1hdGlvbihtX2FuaW1hdGlvbi5nZXQoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xp
ZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNs
aWVudEltcGwuY3BwCmluZGV4IDcyZTg3MTYzN2I3ZGRmMjFkYzZjOGVjODNkNDYzZGNhM2Q4NWVi
YzEuLjY5MWFhODI4ZTEwZjExMmI4YzU3Nzk0ZTEzMmI0YTMxNDQzZTJjNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
LmNwcApAQCAtMjksMTEgKzI5LDEzIEBACiAjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAj
aW5jbHVkZSA8cHVibGljL1dlYkNTdHJpbmcuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ2FudmFz
Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYk1pbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+CiAj
aW5jbHVkZSA8cHVibGljL1dlYlNpemUuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+
CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJWaWRlb0xh
eWVyLmg+CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmgiCkBAIC0xMTEsNyArMTEzLDExIEBAIHZvaWQgV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsOjpyZWFkeVN0YXRlQ2hhbmdlZCgpCiAgICAgbV9tZWRpYVBsYXllci0+
cmVhZHlTdGF0ZUNoYW5nZWQoKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAg
ICAgaWYgKGhhc1ZpZGVvKCkgJiYgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpICYmICFt
X3ZpZGVvTGF5ZXIpIHsKLSAgICAgICAgbV92aWRlb0xheWVyID0gYWRvcHRQdHIoV2ViVmlkZW9M
YXllcjo6Y3JlYXRlKHRoaXMpKTsKKyAgICAgICAgaWYgKFdlYkNvbXBvc2l0b3JTdXBwb3J0KiBj
b21wb3NpdG9yU3VwcG9ydCA9IFBsYXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0
KCkpCisgICAgICAgICAgICBtX3ZpZGVvTGF5ZXIgPSBjb21wb3NpdG9yU3VwcG9ydC0+Y3JlYXRl
VmlkZW9MYXllcih0aGlzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV92aWRlb0xheWVy
ID0gYWRvcHRQdHIoV2ViVmlkZW9MYXllcjo6Y3JlYXRlKHRoaXMpKTsKKwogICAgICAgICBtX3Zp
ZGVvTGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZShtX29wYXF1ZSk7CiAgICAgfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVu
dEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50
SW1wbC5oCmluZGV4IDMyOWZkOWVjMGY0ODhhOWVhYWZlYTZlOTVjOGZiYjI0OTA0MTVjMGUuLmJk
MjkwN2VkMjYxZjE3ZmRhMTI0OTdkNjg1MzBjNjhkY2I5MzM5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCkBAIC0z
OSw3ICszOSw2IEBACiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJXZWJTdHJlYW1UZXh0dXJlQ2xpZW50LmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYlZpZGVvRnJh
bWVQcm92aWRlci5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJWaWRlb0xheWVyLmg+CiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKQEAgLTUwLDYg
KzQ5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJIZWxwZXJQbHVnaW5JbXBsOwog
Y2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92aWRlcjsKIGNsYXNzIFdlYk1lZGlhUGxheWVyOworY2xh
c3MgV2ViVmlkZW9MYXllcjsKIAogLy8gVGhpcyBjbGFzcyBzZXJ2ZXMgYXMgYSBicmlkZ2UgYmV0
d2VlbiBXZWJDb3JlOjpNZWRpYVBsYXllciBhbmQKIC8vIFdlYktpdDo6V2ViTWVkaWFQbGF5ZXIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWlu
ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5l
ckltcGwuY3BwCmluZGV4IDc1YTk3ZTBmNmNjNWU0N2FlMjlkZGEzMDE1YzE2ZDhmYjcxYTMxZjQu
LjUyZjZiZDlhNTI4MzllZTMzOGQ1NGVkZDE1MjEwNDgxMTBmOGFjMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCkBA
IC03MSw2ICs3MSw4IEBACiAjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgPHB1Ymxp
Yy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDbGlwYm9hcmQuaD4KKyNpbmNsdWRl
IDxwdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUmVjdC5oPgogI2luY2x1
ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMLmg+CkBAIC0z
NjgsOCArMzcwLDEyIEBAIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6c2V0QmFja2luZ1Rl
eHR1cmVJZCh1bnNpZ25lZCB0ZXh0dXJlSWQpCiAKICAgICBBU1NFUlQoIW1faW9TdXJmYWNlTGF5
ZXIpOwogCi0gICAgaWYgKCFtX3RleHR1cmVMYXllcikKLSAgICAgICAgbV90ZXh0dXJlTGF5ZXIg
PSBhZG9wdFB0cihXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKCkpOworICAgIGlmICgh
bV90ZXh0dXJlTGF5ZXIpIHsKKyAgICAgICAgaWYgKFdlYkNvbXBvc2l0b3JTdXBwb3J0KiBjb21w
b3NpdG9yU3VwcG9ydCA9IFBsYXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCkp
CisgICAgICAgICAgICBtX3RleHR1cmVMYXllciA9IGNvbXBvc2l0b3JTdXBwb3J0LT5jcmVhdGVF
eHRlcm5hbFRleHR1cmVMYXllcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3RleHR1
cmVMYXllciA9IGFkb3B0UHRyKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUoKSk7Cisg
ICAgfQogICAgIG1fdGV4dHVyZUxheWVyLT5zZXRUZXh0dXJlSWQodGV4dHVyZUlkKTsKIAogICAg
IC8vIElmIGFueW9uZSBvZiB0aGUgSURzIGlzIHplcm8gd2UgbmVlZCB0byBzd2l0Y2ggYmV0d2Vl
biBoYXJkd2FyZQpAQCAtMzkyLDggKzM5OCwxMiBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lcklt
cGw6OnNldEJhY2tpbmdJT1N1cmZhY2VJZChpbnQgd2lkdGgsCiAKICAgICBBU1NFUlQoIW1fdGV4
dHVyZUxheWVyKTsKIAotICAgIGlmICghbV9pb1N1cmZhY2VMYXllcikKLSAgICAgICAgbV9pb1N1
cmZhY2VMYXllciA9IGFkb3B0UHRyKFdlYklPU3VyZmFjZUxheWVyOjpjcmVhdGUoKSk7CisgICAg
aWYgKCFtX2lvU3VyZmFjZUxheWVyKSB7CisgICAgICAgIGlmIChXZWJDb21wb3NpdG9yU3VwcG9y
dCogY29tcG9zaXRvclN1cHBvcnQgPSBQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9yU3Vw
cG9ydCgpKQorICAgICAgICAgICAgbV9pb1N1cmZhY2VMYXllciA9IGNvbXBvc2l0b3JTdXBwb3J0
LT5jcmVhdGVJT1N1cmZhY2VMYXllcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2lv
U3VyZmFjZUxheWVyID0gYWRvcHRQdHIoV2ViSU9TdXJmYWNlTGF5ZXI6OmNyZWF0ZSgpKTsKKyAg
ICB9CiAgICAgbV9pb1N1cmZhY2VMYXllci0+c2V0SU9TdXJmYWNlUHJvcGVydGllcyhpb1N1cmZh
Y2VJZCwgV2ViU2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CiAKICAgICAvLyBJZiBhbnlvbmUgb2YgdGhl
IElEcyBpcyB6ZXJvIHdlIG5lZWQgdG8gc3dpdGNoIGJldHdlZW4gaGFyZHdhcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaAppbmRl
eCA5OThiZTZlNDE5Zjg5NWZhODIxNzk0MDM5MzQ0YmMxNmYzMTFmOTIzLi5lMjAzYTczNzAxOTAz
MWYwNGFkODEyNzkzMTM1OGY2YTg4MDg4OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oCkBAIC0zNSw3ICszNSw2IEBACiAj
aW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAKLSNp
bmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJs
aWMvV2ViSU9TdXJmYWNlTGF5ZXIuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTY3LDYgKzY2LDcgQEAgc3RydWN0IFdlYlByaW50UGFy
YW1zOwogY2xhc3MgU2Nyb2xsYmFyR3JvdXA7CiBjbGFzcyBXZWJQbHVnaW47CiBjbGFzcyBXZWJQ
bHVnaW5Mb2FkT2JzZXJ2ZXI7CitjbGFzcyBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjsKIAogY2xh
c3MgV2ViUGx1Z2luQ29udGFpbmVySW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpQbHVnaW5WaWV3QmFz
ZSwgcHVibGljIFdlYlBsdWdpbkNvbnRhaW5lciB7CiBwdWJsaWM6Cg==
</data>
<flag name="review"
          id="172129"
          type_id="1"
          status="+"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>