<?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>96134</bug_id>
          
          <creation_ts>2012-09-07 11:17:14 -0700</creation_ts>
          <short_desc>Mac: &lt;audio&gt; and &lt;video&gt; should send Do Not Track when appropriate</short_desc>
          <delta_ts>2012-09-10 16:39:59 -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>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>abecsi</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>japhet</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>714775</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-07 11:17:14 -0700</bug_when>
    <thetext>&lt;audio&gt; and &lt;video&gt; should send Do Not Track when appropriate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714804</commentid>
    <comment_count>1</comment_count>
      <attachid>162834</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-07 11:40:26 -0700</bug_when>
    <thetext>Created attachment 162834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714839</commentid>
    <comment_count>2</comment_count>
      <attachid>162834</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-09-07 12:17:45 -0700</bug_when>
    <thetext>Comment on attachment 162834
Patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:304
&gt;      if ([headerFields.get() count])
&gt;          [options.get() setObject:headerFields.get() forKey:@&quot;AVURLAssetHTTPHeaderFieldsKey&quot;];
&gt; +
&gt; +    if (player()-&gt;mediaPlayerClient()-&gt;mediaPlayerShouldSendDoNotTrackHTTPHeader())
&gt; +        [headerFields.get() setObject:@&quot;1&quot; forKey:@&quot;DNT&quot;];

You should set the DNT header field first or AVURLAssetHTTPHeaderFieldsKey won&apos;t be set in the dictionary if there isn&apos;t a referrer or a UA header.

&gt; LayoutTests/http/tests/media/resources/video-donottrack-check-donottrack.php:8
&gt; +
&gt; +

Nit: two blank lines?

&gt; LayoutTests/http/tests/media/resources/video-donottrack-check-donottrack.php:17
&gt; +
&gt; +    

Ditto.

&gt; LayoutTests/http/tests/media/resources/video-donottrack-check-donottrack.php:18
&gt; +    error_log(var_export(headers_list(), true));

What does this do?

&gt; LayoutTests/http/tests/media/resources/video-donottrack-check-donottrack.php:20
&gt; +    
&gt; +

Nit: two blank lines?

&gt; LayoutTests/http/tests/media/video-donottrack.html:11
&gt; +&lt;script src=../../media-resources/video-test.js&gt;&lt;/script&gt;
&gt; +&lt;script src=../../media-resources/media-file.js&gt;&lt;/script&gt;
&gt; +&lt;script&gt;
&gt; +    function runTest () {

Nit: is there any reason this isn&apos;t in the &lt;head&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714873</commentid>
    <comment_count>3</comment_count>
      <attachid>162834</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-07 12:55:14 -0700</bug_when>
    <thetext>Comment on attachment 162834
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:304
&gt;&gt; +        [headerFields.get() setObject:@&quot;1&quot; forKey:@&quot;DNT&quot;];
&gt; 
&gt; You should set the DNT header field first or AVURLAssetHTTPHeaderFieldsKey won&apos;t be set in the dictionary if there isn&apos;t a referrer or a UA header.

Sure thing.

&gt;&gt; LayoutTests/http/tests/media/resources/video-donottrack-check-donottrack.php:8
&gt;&gt; +
&gt; 
&gt; Nit: two blank lines?

I&apos;ll condense these.

&gt;&gt; LayoutTests/http/tests/media/resources/video-donottrack-check-donottrack.php:18
&gt;&gt; +    error_log(var_export(headers_list(), true));
&gt; 
&gt; What does this do?

This was just for debugging purposes, so that run-webkit-httpd would spit out the entire outgoing header array before returning.  I&apos;ll remove it.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714895</commentid>
    <comment_count>4</comment_count>
      <attachid>162852</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-07 13:18:35 -0700</bug_when>
    <thetext>Created attachment 162852
Patch

Patch for the EWS bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715010</commentid>
    <comment_count>5</comment_count>
      <attachid>162852</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-07 14:51:51 -0700</bug_when>
    <thetext>Comment on attachment 162852
Patch

Attachment 162852 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13772887</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715069</commentid>
    <comment_count>6</comment_count>
      <attachid>162889</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-07 15:49:15 -0700</bug_when>
    <thetext>Created attachment 162889
Patch

Fix the Qt build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715158</commentid>
    <comment_count>7</comment_count>
      <attachid>162889</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-09-07 17:18:56 -0700</bug_when>
    <thetext>Comment on attachment 162889
Patch

This looks fine to me, but don&apos;t you have to skip the new test on some platforms?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715337</commentid>
    <comment_count>8</comment_count>
      <attachid>162889</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-08 05:34:20 -0700</bug_when>
    <thetext>Comment on attachment 162889
Patch

Attachment 162889 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13794258

New failing tests:
http/tests/media/video-donottrack.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716289</commentid>
    <comment_count>9</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-10 11:10:39 -0700</bug_when>
    <thetext>Committed r128081: &lt;http://trac.webkit.org/changeset/128081&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716300</commentid>
    <comment_count>10</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-10 11:15:25 -0700</bug_when>
    <thetext>Skipped the new test on &amp; filed the following bugs for other platforms:

Chromium: https://bugs.webkit.org/show_bug.cgi?id=96287
GTK: https://bugs.webkit.org/show_bug.cgi?id=96290
Qt: https://bugs.webkit.org/show_bug.cgi?id=96291
EFL: https://bugs.webkit.org/show_bug.cgi?id=96292
Win: https://bugs.webkit.org/show_bug.cgi?id=96293</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716673</commentid>
    <comment_count>11</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-10 16:39:59 -0700</bug_when>
    <thetext>Rolled out in &lt;http://trac.webkit.org/changeset/128129&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162834</attachid>
            <date>2012-09-07 11:40:26 -0700</date>
            <delta_ts>2012-09-07 13:18:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96134-20120907114005.patch</filename>
            <type>text/plain</type>
            <size>35424</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDc4OTllY2JkYmJmN2E1
MWQ4YmI1ZDFmYTJhZjEwMTM1YTAzOGJjOS4uMGUxNDM3MGE2N2MyNTliNzVhZGQ5MWVlOGViYWI1
M2Y2YmRkNzZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTA3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIDxhdWRpbz4gYW5kIDx2aWRl
bz4gc2hvdWxkIHNlbmQgRG8gTm90IFRyYWNrIHdoZW4gYXBwcm9wcmlhdGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MTM0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgRnJhbWVMb2FkZXJDbGll
bnQgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIEROVCBoZWFkZXIgc2hvdWxkIGJl
IHNlbnQsCisgICAgICAgIGFuZCBwbHVtYiB0aGF0IG5ldyBmdW5jdGlvbiBkb3duIGludG8gdGhl
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMgY2xhc3MuCisKKyAgICAgICAgVGVz
dDogaHR0cC90ZXN0cy9tZWRpYS92aWRlby1kb25vdHRyYWNrLmh0bWwKKworICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllclNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcik6CisgICAgICAg
ICAgICBQYXNzIHRoZSBxdWVzdGlvbiBvbiB0aHJvdWdoIHRvIHRoZSBGcmFtZUxvYWRlckNsaWVu
dC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
OjpzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIpOgorICAgICAgICAgICAgQ2FsbCB0aHJv
dWdoIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBXZWJLaXQgb3IgV2ViS2l0Mi4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyU2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVy
KToKKyAgICAgICAgICAgIFBhc3MgdGhlIHF1ZXN0aW9uIG9uIHRvIHRoZSBIVE1MTWVkaWFFbGVt
ZW50LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKToKKyAg
ICAgICAgICAgIElmIHdlIHNob3VsZCBzZW5kIHRoZSBETlQgaGVhZGVyLCBhZGQgaXQgdG8gdGhl
IGhlYWRlciBvcHRpb25zIGFycmF5CisgICAgICAgICAgICB3aGVuIGNyZWF0aW5nIHRoZSBBVkFz
c2V0LgorCiAyMDEyLTA5LTA0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYkF1ZGlvOiBsaW1pdCBvdXRwdXQgbGV2ZWwgdG8gMGRiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggMTFmMDM1OGRiNDk3NDUzYWUyMWNiMzM3M2FkYzJmMzBkMTIzZDkxZC4uMTIwMzcxNTY1
NmVkNzg5MTcyZGU5MmM1YjgwMDEyZThmYzlhNTg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI2IEBACisyMDEyLTA5LTA3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIDxhdWRpbz4gYW5kIDx2aWRlbz4gc2hvdWxkIHNlbmQgRG8gTm90IFRyYWNrIHdo
ZW4gYXBwcm9wcmlhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk2MTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIg
YnkgcGFzc2luZyB0aGUgcmVxdWVzdAorICAgICAgICBvbiB0byB0aGUgV2ViRnJhbWVMb2FkRGVs
ZWdhdGUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFNlbmREb05vdFRyYWNrSGVhZGVyKToK
KyAgICAgICAgICAgIFBhc3MgdGhlIHF1ZXN0aW9uIG9uIHRvIHRoZSBXZWJGcmFtZUxvYWREZWxl
Z2F0ZS4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5n
Lmg6CisgICAgICAgIChXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUpOgor
ICAgICAgICAgICAgQWRkIGFuIGVudHJ5IGZvciB0aGUgZGVsZWdhdGUncyB3ZWJWaWV3U2hvdWxk
U2VuZERvTm90VHJhY2tIZWFkZXIgbWV0aG9kLgorICAgICAgICAqIFdlYlZpZXcvV2ViRGVsZWdh
dGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW06CisgICAgICAgIChDYWxsUmVzb3VyY2VMb2FkRGVs
ZWdhdGVSZXR1cm5pbmdCb29sZWFuKTogQWRkZWQgYSAwLXBhcmFtZXRlciBvdmVybG9hZGVkIGZ1
bmN0aW9uLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmll
dyBfY2FjaGVGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uc10pOiBpbml0aWFsaXplIHRo
ZSAKKyAgICAgICAgICAgIGNhY2hlZCB2YWx1ZSBmb3Igc2hvdWxkU2VuZERvTm90VHJhY2tIZWFk
ZXJGdW5jLgorCiAyMDEyLTA4LTI5ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTWFjXSBBZGQgaWNvblVSTCB0byBXZWJOb3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAx
MjYzOTllYjUxNjJhMzUwZWFjMTRhMjViOTMyMGMxYjM0MDNmYjc4Li42YTNiZWEyM2NkZDVkMzg5
ZDM4NmMwOTE5Y2Y2Yzk4YjgzZjdmMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIw
MTItMDktMDcgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgPGF1
ZGlvPiBhbmQgPHZpZGVvPiBzaG91bGQgc2VuZCBEbyBOb3QgVHJhY2sgd2hlbiBhcHByb3ByaWF0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYxMzQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgdGhlIHNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlciBieSBwYXNzaW5nIHRo
ZSByZXF1ZXN0CisgICAgICAgIG9uIHRvIHRoZSBXZWJGcmFtZUxvYWREZWxlZ2F0ZS4KKworICAg
ICAgICAqIFNoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwOiBJbmNyZW1lbnQgdGhlIGludGVyZmFj
ZVNpemVzIGZvciAKKyAgICAgICAgICAgIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCBieSB0aGUg
dmFsdWUgb2YgdGhlIG5ldyBmdW5jdGlvbnMuCisgICAgICAgICogU2hhcmVkL0FQSUNsaWVudFRy
YWl0cy5oOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZS5oOiBBZGQgYSBuZXcgQVBJIHRvIAorICAgICAgICAgICAgV0tCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50IGFuZCBidW1wIHRoZSB2ZXJzaW9uIG51bWJlci4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6c2hv
dWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKToKKyAgICAgICAgICAgIFBhc3MgdGhlIHF1ZXN0
aW9uIG9uIHRvIHRoZSBjbGllbnQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcik6
CisgICAgICAgICAgICBQYXNzIHRoZSBxdWVzdGlvbiBvbiB0byB0aGUgYnVuZGxlLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwog
MjAxMi0wOC0yOSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIEpTTlBPYmplY3QgZG9lc24ndCBhbHdheXMgcHJvdGVjdCBpdHMgZGF0YSB3aGVuIGNh
bGxpbmcgaW50byBwbHVnaW4gY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggN2M4NzNmNWEwNDMzYjJiMTIxMTZiYWYwZmEzMDBmYjYwOGNhMzlmMS4uYzNj
OTY5Y2ZlODhhYTAxNzczZmRhYmVlODgyMTQ2OWIwMmU1YjkxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00NDc3LDYgKzQ0NzcsMTkgQEAgSW50UmVjdCBI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcldpbmRvd0NsaXBSZWN0KCkKICAgICByZXR1cm4g
bWVkaWFQbGF5ZXJPd25pbmdEb2N1bWVudCgpLT52aWV3KCktPndpbmRvd0NsaXBSZWN0KCk7CiB9
CiAKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJTaG91bGRTZW5kRG9Ob3RUcmFj
a0hUVFBIZWFkZXIoKSBjb25zdAoreworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZy
YW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRnJh
bWVMb2FkZXJDbGllbnQqIGNsaWVudCA9IGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCk7CisgICAg
aWYgKCFjbGllbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBjbGllbnQt
PnNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcigpOworfQorCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnJlbW92ZUJlaGF2aW9yc1Jlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVyZSgp
CiB7CiAgICAgbV9yZXN0cmljdGlvbnMgPSBOb1Jlc3RyaWN0aW9uczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggMWYzMGIyOTZlNjQ3MmZjNTNiOTUzZjQyOWI0NmUy
MTEwNmY5MTU5Mi4uOTViZGFmMzU1NGRiNzIyZjVjMDcxZTJjNGU4MzgwZTJiNTViOWFjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTQzMyw2ICs0MzMsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcklzUGF1c2VkKCkgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBIb3N0V2luZG93KiBtZWRpYVBsYXllckhvc3RXaW5kb3coKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIEludFJlY3QgbWVkaWFQbGF5ZXJXaW5kb3dDbGlwUmVjdCgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllclNob3VsZFNlbmREb05vdFRy
YWNrSFRUUEhlYWRlcigpIGNvbnN0IE9WRVJSSURFOwogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBV
U0UoQVZGT1VOREFUSU9OKQogICAgIHZpcnR1YWwgR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBtZWRp
YVBsYXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcihjb25zdCBNZWRpYVBsYXllciopIGNvbnN0IE9W
RVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBi
ZTgxMDI4N2E3MGQ1NWU4ZTY1NmJmZjNkNjQwYWFmYTUzM2IxMDZhLi5jMWIyZjdkYTQwNGU2NGYw
N2NkYmExNDEwOGE1NzM0ODU3MmMyMWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaApAQCAtMzQzLDYgKzM0Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNp
b25Gcm9tR2xvYmFsT2JqZWN0KERPTVdpbmRvd0V4dGVuc2lvbiopIHsgfQogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9i
amVjdChET01XaW5kb3dFeHRlbnNpb24qKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24oRE9NV2luZG93
RXh0ZW5zaW9uKikgeyB9CisKKyAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFNlbmREb05vdFRy
YWNrSFRUUEhlYWRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmgKaW5kZXggZWFjMzQ1YzE3NzlhY2IzMDlhODQyMmUyNTQzYjIwM2ZmMTQxYjQ0
Ny4uZDUwYTg5ZmM4YjJjZTAwMzhmMjM1NmRlMmM4OGNjY2NiNGE1MmE1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0xOTksNiArMTk5
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcklzUGF1c2VkKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgSG9zdFdpbmRvdyogbWVkaWFQbGF5ZXJI
b3N0V2luZG93KCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgSW50UmVjdCBtZWRpYVBsYXll
cldpbmRvd0NsaXBSZWN0KCkgeyByZXR1cm4gSW50UmVjdCgpOyB9CisKKyAgICB2aXJ0dWFsIGJv
b2wgbWVkaWFQbGF5ZXJTaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogfTsKIAogY2xhc3MgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQg
ewpAQCAtNDE1LDYgKzQxNyw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBlbmdpbmVEZXNjcmlw
dGlvbigpIGNvbnN0OwogCisgICAgYm9vbCBzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIo
KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCop
OwogICAgIHZvaWQgbG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUoTWVkaWFQbGF5ZXJGYWN0b3J5Kik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBjZjc1ZDBjZjZjZmQ3NjA4YWQ3MWQ2NzdmNDZm
MWU3Njk4NzhhMzY2Li4yNmY5NjZkNzFkNzdlNDQ5ZDgyNmQwZTZlNmFlMDdkYTg2NWNiMmYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI5OSw2ICsyOTksOSBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29uc3QgU3Ry
aW5nJiB1cmwpCiAKICAgICBpZiAoW2hlYWRlckZpZWxkcy5nZXQoKSBjb3VudF0pCiAgICAgICAg
IFtvcHRpb25zLmdldCgpIHNldE9iamVjdDpoZWFkZXJGaWVsZHMuZ2V0KCkgZm9yS2V5OkAiQVZV
UkxBc3NldEhUVFBIZWFkZXJGaWVsZHNLZXkiXTsKKworICAgIGlmIChwbGF5ZXIoKS0+bWVkaWFQ
bGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJTaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIo
KSkKKyAgICAgICAgW2hlYWRlckZpZWxkcy5nZXQoKSBzZXRPYmplY3Q6QCIxIiBmb3JLZXk6QCJE
TlQiXTsKICNlbmRpZgogCiAgICAgTlNVUkwgKmNvY29hVVJMID0gS1VSTChQYXJzZWRVUkxTdHJp
bmcsIHVybCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAzYzFhNDA1OTBmNWU4YzZkMmViNjdlOTAxMGM1
MzcxN2QyMTQwNTQ3Li5mMjJhNjlhYzk5NzZjZWRmOGZlNDkzNWRjMWE5ZDY2ZDI0MWM2MGZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKQEAgLTIyNyw2ICsyMjcsOCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JN
KE1BQykKICAgICB2aXJ0dWFsIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVP
YmplY3QoKSBPVkVSUklERSB7IHJldHVybiAwOyB9CiAjZW5kaWYKKworICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoKSBjb25zdCBPVkVSUklERTsKICAgICAK
ICAgICBSZXRhaW5QdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcj4gc2V0VXBQb2xpY3lMaXN0ZW5l
cihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA2
YWFhMGZkNWQwYzZjMDdiNjljOTM3MjdiZGNiZGFkYjg5ZTliM2FlLi4zOTM3MDUxOTc0OWQyNDgw
ZDU3MzMyZDc1MTYyMTU3ZjMxMWIwOTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTk4MCw2ICsx
OTgwLDE2IEBAIGpvYmplY3QgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmphdmFBcHBsZXQoTlNWaWV3
KiB2aWV3KQogfQogI2VuZGlmCiAKK2Jvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFNl
bmREb05vdFRyYWNrSFRUUEhlYWRlcigpIGNvbnN0Cit7CisgICAgV2ViVmlldyAqd2ViVmlldyA9
IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CisgICAgV2ViRnJhbWVMb2FkRGVsZWdhdGVJ
bXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0RnJhbWVMb2Fk
RGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CisKKyAgICBpZiAoaW1wbGVtZW50YXRp
b25zLT5zaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXJGdW5jKQorICAgICAgICByZXR1cm4g
Q2FsbFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihZRVMsIGltcGxlbWVudGF0
aW9ucy0+c2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyRnVuYywgd2ViVmlldywgQHNlbGVj
dG9yKHdlYlZpZXdTaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXI6KSk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCiBAaW1wbGVtZW50YXRpb24gV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcgogKyAo
dm9pZClpbml0aWFsaXplCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgKaW5kZXggNjU2OGNjOTZi
MDFiNzlkYmZjNjJjNTlmOGU3ZDM4M2U0YTQ1ZDdjOC4uMDcyZThmZTk0ZjNjMTc4Mjg3MTE2YTg4
NTk1MTdkMGRiNmJjNDJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaApAQCAtNzgsNiArNzgs
NyBAQCBzdHJ1Y3QgV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlIHsKICAg
ICBJTVAgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZ1bmM7CiAgICAgSU1QIGRpZFJ1bkluc2Vj
dXJlQ29udGVudEZ1bmM7CiAgICAgSU1QIGRpZERldGVjdFhTU0Z1bmM7CisgICAgSU1QIHNob3Vs
ZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlckZ1bmM7CiB9OwogCiBzdHJ1Y3QgV2ViU2NyaXB0RGVi
dWdEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUgewpAQCAtMTM1LDYgKzEzNiw3IEBAIGlkIENh
bGxSZXNvdXJjZUxvYWREZWxlZ2F0ZShJTVAsIFdlYlZpZXcgKiwgU0VMLCBpZCwgaWQsIGlkLCBp
ZCk7CiBpZCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGUoSU1QLCBXZWJWaWV3ICosIFNFTCwgaWQs
IE5TSW50ZWdlciwgaWQpOwogaWQgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlKElNUCwgV2ViVmll
dyAqLCBTRUwsIGlkLCBpZCwgTlNJbnRlZ2VyLCBpZCk7CiAKK0JPT0wgQ2FsbFJlc291cmNlTG9h
ZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MLCBJTVAsIFdlYlZpZXcgKiwgU0VMKTsKIEJP
T0wgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MLCBJTVAsIFdl
YlZpZXcgKiwgU0VMLCBpZCk7CiBCT09MIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZVJldHVybmlu
Z0Jvb2xlYW4oQk9PTCwgSU1QLCBXZWJWaWV3ICosIFNFTCwgaWQsIGlkKTsKIEJPT0wgQ2FsbFJl
c291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MLCBJTVAsIFdlYlZpZXcgKiwg
U0VMLCBpZCwgaWQsIGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLm1tCmluZGV4IDE1ZjZkZmZh
MmUwYjY4ZGM0ZjI0YTUyOGNmNzhiMTU4YzkzMmNmYWYuLjRmM2RlMzcwYTdmMjA1OTYwZmM4ZDU5
MGJlZDcxYTg2NWZmNzRmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5tbQpAQCAtNDk5LDYg
KzQ5OSwxNiBAQCBpZCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9u
LCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0
ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZhdGUtPnJlc291cmNlUHJvZ3Jlc3NE
ZWxlZ2F0ZSwgc2VsZWN0b3IsIG9iamVjdDEsIG9iamVjdDIsIGludGVnZXIsIG9iamVjdDMpOwog
fQogCitCT09MIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9PTCBy
ZXN1bHQsIElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9yKQor
eworICAgIEB0cnkgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxCT09MICgqKShp
ZCwgU0VMLCBXZWJWaWV3ICopPihvYmpjX21zZ1NlbmQpKHNlbGYtPl9wcml2YXRlLT5yZXNvdXJj
ZVByb2dyZXNzRGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmKTsKKyAgICB9IEBjYXRjaChpZCBleGNl
cHRpb24pIHsKKyAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2VsZWN0
b3IsIGV4Y2VwdGlvbik7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIEJPT0wgQ2Fs
bFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MIHJlc3VsdCwgSU1QIGlt
cGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEpCiB7
CiAgICAgQHRyeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNjBiMzUz
ZjJkNDZmMGU4NzIwYWJkYjUyNWVhMTdmOTM0MGRiNmE5Ny4uOWFjNjU2MDI3ZWU1NTAxZmVkZjVh
NzE4YTY1MDVmMmRkZDYxMTVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpA
QCAtMTYyNyw2ICsxNjI3LDcgQEAgc3RhdGljIGlubGluZSBJTVAgZ2V0TWV0aG9kKGlkIG8sIFNF
TCBzKQogICAgIGNhY2hlLT5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50RnVuYyA9IGdldE1ldGhv
ZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXdEaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Oikp
OwogICAgIGNhY2hlLT5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGdW5jID0gZ2V0TWV0aG9kKGRlbGVn
YXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSdW5JbnNlY3VyZUNvbnRlbnQ6KSk7CiAgICAgY2Fj
aGUtPmRpZERldGVjdFhTU0Z1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJW
aWV3OmRpZERldGVjdFhTUzopKTsKKyAgICBjYWNoZS0+c2hvdWxkU2VuZERvTm90VHJhY2tIVFRQ
SGVhZGVyRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXdTaG91bGRT
ZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXI6KSk7CiB9CiAKIC0gKHZvaWQpX2NhY2hlU2NyaXB0RGVi
dWdEZWxlZ2F0ZUltcGxlbWVudGF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSUNsaWVudFRyYWl0cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50
VHJhaXRzLmNwcAppbmRleCBhZDNkMjIwOTE1ZGM4NmI1NjAxZjc2YzJlNzAyZDE4MmExNjM1MmZl
Li44NjkyZjk2ZjIwZWQ4Yzk5ZGVlYmVkNDZhZTc3N2Y0MzZhZjVkNWE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcApAQCAtMzksNiArMzksNyBAQCBjb25zdCBz
aXplX3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlQ2xpZW50Pjo6aW50ZXJmYWNlU2l6ZXNCeVZl
cnNpb25bXSA9IHsKIGNvbnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50Pjo6aW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bXSA9IHsKICAgICBvZmZzZXRvZihX
S0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQsIGRpZExheW91dEZvckZyYW1lKSwKICAgICBvZmZzZXRv
ZihXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQsIGRpZEZpbmlzaFByb2dyZXNzKSwKKyAgICBvZmZz
ZXRvZihXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQsIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSks
CiAgICAgc2l6ZW9mKFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCkKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUElDbGllbnRUcmFpdHMuaAppbmRleCA3MzUyYjU2NjdhZDJjNDlmNDE0OTYyY2I1
NWIwODI5YzUzYzg4ZWM2Li40ODFmOTVmMzdiYTI2M2Q0NWU5NzEzZTk5NjBlNzhhNDc5ZDBjYjQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmgKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5oCkBAIC00Myw3ICs0Myw3
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFQSUNsaWVudFRyYWl0czxXS0J1bmRsZUNsaWVudD4gewog
fTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUxvYWRl
ckNsaWVudD4gewotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW50ZXJmYWNlU2l6ZXNCeVZlcnNp
b25bNF07CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbnRlcmZhY2VTaXplc0J5VmVyc2lvbls1
XTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFQSUNsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VS
ZXNvdXJjZUxvYWRDbGllbnQ+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCmluZGV4IDhiYzc2
NzBjZjU5MzEyYmNlMDU5NWEyMTBmMTY2NDFmNzUyYzlmM2IuLjI1ZDk2Y2VhZTg3MDRkNzM2Yzhj
OTI5N2U3MDcwMmI4MDZmNTBkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaApAQCAtMTEx
LDYgKzExMSw3IEBAIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVdpbGxEZXN0cm95R2xvYmFs
T2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uQ2FsbGJhY2spCiB0eXBlZGVmIGJvb2wgKCpXS0J1
bmRsZVBhZ2VTaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTENhbGxiYWNrKShX
S0J1bmRsZVBhZ2VSZWYsIFdLU3RyaW5nUmVmIHVybCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWVDYWxs
YmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLQnVu
ZGxlSW50ZW50UmVxdWVzdFJlZiBpbnRlbnRSZXF1ZXN0LCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVJlZ2lz
dGVySW50ZW50U2VydmljZUZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0ludGVudFNlcnZpY2VJbmZvUmVmIHNlcnZpY2VJbmZv
LCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYg
Ym9vbCAoKldLQnVuZGxlUGFnZVNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlckNhbGxiYWNr
KShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAKIHN0cnVj
dCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQgewogICAgIGludCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247
CkBAIC0xNTMsMTAgKzE1NCwxMyBAQCBzdHJ1Y3QgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IHsK
ICAgICAvLyBWZXJzaW9uIDMKICAgICBXS0J1bmRsZVBhZ2VEaWRSZWNlaXZlSW50ZW50Rm9yRnJh
bWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlSW50ZW50Rm9y
RnJhbWU7CiAgICAgV0tCdW5kbGVQYWdlUmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWVDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWU7
CisKKyAgICAvLyBWZXJzaW9uIDQKKyAgICBXS0J1bmRsZVBhZ2VTaG91bGRTZW5kRG9Ob3RUcmFj
a0hUVFBIZWFkZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICBzaG91bGRTZW5kRG9Ob3RU
cmFja0hUVFBIZWFkZXI7CiB9OwogdHlwZWRlZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudDsKIAotZW51bSB7IGtXS0J1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnRDdXJyZW50VmVyc2lvbiA9IDMgfTsKK2VudW0geyBrV0tCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50Q3VycmVudFZlcnNpb24gPSA0IH07CiAKIGVudW0gewogICAgIFdLQnVuZGxlUGFnZVBv
bGljeUFjdGlvblBhc3NUaHJvdWdoLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuY3BwCmluZGV4IGE2YTA2MTIzZjY2ODVhNmMzNDFhYzE4MWVkY2E2NjFl
MGUzYzlhYjYuLjg1YTFhZGU3OTBiZWVhZTc2NWZjZGJkYzBlMmUwNTkyNGEwNDFjZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAgLTMz
NSw0ICszMzUsMTIgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OnNob3Vs
ZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKFdlYlAKICAgICByZXR1cm4gbV9jbGll
bnQuc2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwodG9BUEkocGFnZSksIHRv
QVBJKHVybC5pbXBsKCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAorYm9vbCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OnNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcihX
ZWJQYWdlKiBwYWdlKQoreworICAgIGlmICghbV9jbGllbnQuc2hvdWxkU2VuZERvTm90VHJhY2tI
VFRQSGVhZGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9jbGllbnQu
c2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5jbGll
bnRJbmZvKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRleCA4MWQ5YmU0NGQ0ZTgwODRlNjdlMjJl
NGJiMTkzYWZiNDY2Mzc2MTcwLi5jZGY4Yjg4MzUxMTJjMmZlYjQzYTE4ODI0MWQ1MmNjYjFjZGEx
ZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgK
QEAgLTk0LDYgKzk0LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbERlc3Ryb3lHbG9iYWxPYmpl
Y3RGb3JET01XaW5kb3dFeHRlbnNpb24oV2ViUGFnZSosIFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVu
c2lvbiopOwogCiAgICAgYm9vbCBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVS
TChXZWJQYWdlKiwgY29uc3QgU3RyaW5nJiB1cmwpOworICAgIGJvb2wgc2hvdWxkU2VuZERvTm90
VHJhY2tIVFRQSGVhZGVyKFdlYlBhZ2UqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBhM2MwY2MxNGE4MDZiMjI2Y2Mx
YWQ4OGJjOGIzMDMxNzIzMGZmMjM4Li5iMTUzYjE5ZjgzZjgzYmM2MzUyMDdkNjQzOGQ3ZDJkNThk
OWY1MDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTYyMSw2ICsx
NjIxLDE1IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEZvcmNlVW5pdmVyc2Fs
QWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6CiAgICAgcmV0dXJuIHdlYlBhZ2UtPmlu
amVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuc2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9t
TG9jYWxVUkwod2ViUGFnZSwgdXJsLnN0cmluZygpKTsKIH0KIAorYm9vbCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6c2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKCkgY29uc3QKK3sKKyAgICBX
ZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghd2ViUGFnZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxl
TG9hZGVyQ2xpZW50KCkuc2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKHdlYlBhZ2UpOwor
fQorCiBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpCiB7CiAgICAgUmVmUHRyPFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQ+IGNvbnRleHQgPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVh
dGUobV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMjA3ZTQ0MjY2
ZDQ3Y2FlMWJiZTg3MzQ2MzQ4NjUzMjJlMDE0Njc5OC4uMTFjOWIzYWE5NmRhMzMxYjMyYTRmOTI5
MTlkYTk5NWU2NjE3MGE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjQx
LDYgKzI0MSw4IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRm9yY2VVbml2
ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwog
CisgICAgdmlydHVhbCBib29sIHNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcigpIGNvbnN0
IE9WRVJSSURFOworCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCkgT1ZFUlJJREU7CiAKICAgICBX
ZWJGcmFtZSogbV9mcmFtZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCAwZDEyMjczNDg0MjZmMjgyOGViNTE3N2U1MjRlYTU1YTMyNDU2ODVhLi5j
YTRiYjljMWQ0ZTg4MmIxN2UwMmExM2I4YTVhOWMzNmI1YzA0ODMzIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTIt
MDktMDcgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgPGF1ZGlv
PiBhbmQgPHZpZGVvPiBzaG91bGQgc2VuZCBEbyBOb3QgVHJhY2sgd2hlbiBhcHByb3ByaWF0ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYxMzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0
UnVubmVyIEpTIEFQSSBmb3IgY2FsbGluZyBzZXRTaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFk
ZXIgdG8gRFJUIGFuZCAKKyAgICAgICAgV1RSLiBBZGQgRnJhbWVMb2FkZXJDbGllbnQgY2xpZW50
IG1ldGhvZHMgZm9yIHJldHJpZXZpbmcgdGhhdCB2YWx1ZS4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoc2V0U2hvdWxkU2VuZERvTm90VHJhY2tI
VFRQSGVhZGVyQ2FsbGJhY2spOiBQYXNzIHRocm91Z2ggdG8gdGhlIFRlc3RSdW5uZXIuCisgICAg
ICAgIChUZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMpOiBBZGQgdGhlIHNldFNob3VsZFNlbmRE
b05vdFRyYWNrSFRUUEhlYWRlciBmdW5jdGlvbi4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmg6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRTaG91bGRTZW5kRG9Ob3RUcmFj
a0hUVFBIZWFkZXIpOiBTaW1wbGUgc2V0dGVyLgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2hvdWxk
U2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKTogU2ltcGxlIGdldHRlci4KKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW06CisgICAgICAgICgtW0ZyYW1lTG9h
ZERlbGVnYXRlIHdlYlZpZXdTaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXI6XSk6IAorICAg
ICAgICAgICAgUGFzcyB0aGUgcXVlc3Rpb24gb24gdG8gdGhlIFRlc3RSdW5uZXIuCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0ZWRC
dW5kbGVQYWdlKToKKyAgICAgICAgICAgIEFkZCB0aGUgc2V0U2hvdWxkU2VuZERvTm90VHJhY2tI
VFRQSGVhZGVyIGNsaWVudCBmdW5jdGlvbi4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQ
YWdlOjpzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIpOgorICAgICAgICAgICAgUGFzcyB0
aGUgcXVlc3Rpb24gb24gdG8gdGhlIFRlc3RSdW5uZXIuCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjpzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIpOiBTaW1wbGUgZ2V0
dGVyLgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRTaG91bGRTZW5kRG9Ob3RUcmFja0hU
VFBIZWFkZXIpOiBTaW1wbGUgU2V0dGVyLgorCiAyMDEyLTA4LTMwICBNaWtoYWlsIFBvemRueWFr
b3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIFtXSzJdW1dUUl0g
QWRkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIGR1
bXBpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZDVlNzk5ZDhmZDEzNGFi
MGRiOWQ5ZDYwNzRkMGJmMWU5YTA4ZDIzZi4uZWE3NzYzYWE4NmRiZjY5ZGZhYWU2ZjM5YTQxNDE4
MGM4NWJhYWQ3NCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKQEAgLTkzLDcgKzkz
LDggQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcihjb25zdCBzdGQ6OnN0cmluZyYgdGVzdFBhdGhP
clVSTCwgY29uc3Qgc3RkOjpzdHJpbmcmIGV4cGUKICAgICAsIG1fc2hvdWxkUGFpbnRCcm9rZW5J
bWFnZSh0cnVlKQogICAgICwgbV9zaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVu
bG9hZChmYWxzZSkKICAgICAsIG1fYXJlTGVnYWN5V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RzSWdub3JlZChmYWxzZSkKLSAgICAsIG1fY3VzdG9tRnVsbFNjcmVlbkJlaGF2aW9yKGZh
bHNlKSAKKyAgICAsIG1fY3VzdG9tRnVsbFNjcmVlbkJlaGF2aW9yKGZhbHNlKQorICAgICwgbV9z
aG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoZmFsc2UpCiAgICAgLCBtX3Rlc3RQYXRoT3JV
UkwodGVzdFBhdGhPclVSTCkKICAgICAsIG1fZXhwZWN0ZWRQaXhlbEhhc2goZXhwZWN0ZWRQaXhl
bEhhc2gpCiAgICAgLCBtX3RpdGxlVGV4dERpcmVjdGlvbigibHRyIikKQEAgLTcxNCw2ICs3MTUs
MTYgQEAgc3RhdGljIEpTVmFsdWVSZWYgbm90aWZ5RG9uZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldFNob3VsZFNlbmREb05v
dFRyYWNrSFRUUEhlYWRlckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sK
KyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKKworICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNf
Y2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBj
b250cm9sbGVyLT5zZXRTaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoSlNWYWx1ZVRvQm9v
bGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBib29sIHBhcnNlUGFnZVBhcmFtZXRlcnMoSlND
b250ZXh0UmVmIGNvbnRleHQsIGludCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmKiBh
cmd1bWVudHMsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbiwgZmxvYXQmIHBhZ2VXaWR0aEluUGl4ZWxz
LCBmbG9hdCYgcGFnZUhlaWdodEluUGl4ZWxzKQogewogICAgIHBhZ2VXaWR0aEluUGl4ZWxzID0g
VGVzdFJ1bm5lcjo6bWF4Vmlld1dpZHRoOwpAQCAtMjQ2MCw2ICsyNDcxLDcgQEAgSlNTdGF0aWNG
dW5jdGlvbiogVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAiZGVueVdl
Yk5vdGlmaWNhdGlvblBlcm1pc3Npb24iLCBkZW55V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbkNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1p
c3Npb25zIiwgcmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnNDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrIiwgc2ltdWxhdGVX
ZWJOb3RpZmljYXRpb25DbGlja0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNldFNob3Vs
ZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlciIsIHNldFNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhl
YWRlckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgMCwgMCwgMCB9CiAgICAgfTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdFJ1bm5lci5oCmluZGV4IGI2NjM3YzZhZmQxMzgxNzYwOGQxMWM3YTMwZGQw
ZWNhYWUyNDczYTQuLjAwYWJmN2Y3ZTdmNzM1MWMzYmRhNTg1MWE4OTg2NzY5ZTcwZmQzYTQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKQEAgLTM2OCw2ICszNjgsOSBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbChkb3VibGUpOwogCisgICAg
dm9pZCBzZXRTaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoYm9vbCB2YWx1ZSkgeyBtX3No
b3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlciA9IHZhbHVlOyB9CisgICAgYm9vbCBzaG91bGRT
ZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFNlbmREb05v
dFRyYWNrSFRUUEhlYWRlcjsgfQorCiBwcml2YXRlOgogICAgIFRlc3RSdW5uZXIoY29uc3Qgc3Rk
OjpzdHJpbmcmIHRlc3RQYXRoT3JVUkwsIGNvbnN0IHN0ZDo6c3RyaW5nJiBleHBlY3RlZFBpeGVs
SGFzaCk7CiAKQEAgLTQyMyw2ICs0MjYsNyBAQCBwcml2YXRlOgogICAgIC8vIEZJWE1FIDgxNjk3
OiBUaGlzIHZhcmlhYmxlIG1vc3QgbGlrZWx5IHdpbGwgYmUgcmVtb3ZlZCBvbmNlIHdlIGhhdmUg
bWlncmF0ZWQgdGhlIHRlc3RzIGZyb20gZmFzdC9ub3RpZmljYXRpb25zIHRvIGh0dHAvdGVzdHMv
bm90aWZpY2F0aW9ucy4KICAgICBib29sIG1fYXJlTGVnYWN5V2ViTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RzSWdub3JlZDsKICAgICBib29sIG1fY3VzdG9tRnVsbFNjcmVlbkJlaGF2aW9y
OworICAgIGJvb2wgbV9zaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXI7CiAKICAgICBzdGQ6
OnN0cmluZyBtX2F1dGhlbnRpY2F0aW9uVXNlcm5hbWU7CiAgICAgc3RkOjpzdHJpbmcgbV9hdXRo
ZW50aWNhdGlvblBhc3N3b3JkOyAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9GcmFtZUxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxv
YWREZWxlZ2F0ZS5tbQppbmRleCA4OGNjN2M5MjBjMGZkZmRiMzIxN2M5NjEyNWY3YWJiZmNlNTBm
NDU5Li41ZGY1MDc1Nzg5OWVhMDMzOTdmMzBlNzVkZTc0NDA2YTEwMWFjODFiIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0KKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tCkBAIC00MzAsNCArNDMw
LDkgQEAKICAgICAgICAgcHJpbnRmICgicG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb25c
biIpOwogfQogCistIChCT09MKXdlYlZpZXdTaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXI6
KFdlYlZpZXcqKXNlbmRlcgoreworICAgIHJldHVybiBnVGVzdFJ1bm5lci0+c2hvdWxkU2VuZERv
Tm90VHJhY2tIVFRQSGVhZGVyKCk7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRs
CmluZGV4IDA3YTM1YTJmZWNjZmFhNGI2Yzc3ZTRjMTAxZjhiOGRiZjJjYzcwODguLmY5MzI2ZTI5
NDE5NmM2YmZhZThmZDYzZjkxNTBjNWRmN2Y0NGRjMGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbApAQCAtMTY2LDYgKzE2Niw5IEBAIG1vZHVsZSBXVFIgewogICAgICAgICB2b2lkIGRlbnlX
ZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKGluIERPTVN0cmluZyBvcmlnaW4pOwogICAgICAgICB2
b2lkIHJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CiAgICAgICAgIHZvaWQg
c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhpbiBvYmplY3Qgbm90aWZpY2F0aW9uKTsKKwor
ICAgICAgICAvLyBEbyBOb3QgVHJhY2sgc3VwcG9ydAorICAgICAgICB2b2lkIHNldFNob3VsZFNl
bmREb05vdFRyYWNrSFRUUEhlYWRlcihpbiBib29sZWFuIGZsYWcpOwogICAgIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCBjMDc5YmYyMjlmMzhkMjBhZTAyMjA3M2ViOTBiYTA2
NGI5YmI2OGU2Li5lMjE2NjhmOGJhMWEzNDY0OTNhYTg1ODMzOGIwN2UyMjk1NjQyYmQxIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC0zMDQsNyArMzA0LDggQEAgSW5qZWN0ZWRCdW5kbGVQ
YWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCiAgICAgICAgIGRp
ZEZpbmlzaFByb2dyZXNzLCAvLyBkaWRGaW5pc2hQcm9ncmVzcwogICAgICAgICAwLCAvLyBzaG91
bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTAogICAgICAgICBkaWRSZWNlaXZlSW50
ZW50Rm9yRnJhbWUsIC8vIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZQotICAgICAgICByZWdpc3Rl
ckludGVudFNlcnZpY2VGb3JGcmFtZSAvLyByZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZQor
ICAgICAgICByZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZSwgLy8gcmVnaXN0ZXJJbnRlbnRT
ZXJ2aWNlRm9yRnJhbWUKKyAgICAgICAgc2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyCiAg
ICAgfTsKICAgICBXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KG1fcGFnZSwgJmxvYWRl
ckNsaWVudCk7CiAKQEAgLTYyMSw2ICs2MjIsMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6
OnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0IK
ICNlbmRpZgogfQogCitib29sIEluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkU2VuZERvTm90VHJh
Y2tIVFRQSGVhZGVyKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZVBhZ2UqPihjb25zdF9j
YXN0PHZvaWQqPihjbGllbnRJbmZvKSktPnNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcigp
OworfQorCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9y
RnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlw
ZVJlZiosIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgc3RhdGljX2Nhc3Q8SW5qZWN0
ZWRCdW5kbGVQYWdlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRGaW5pc2hE
b2N1bWVudExvYWRGb3JGcmFtZShmcmFtZSk7CkBAIC03NzEsNiArNzc3LDExIEBAIHZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlOjpkaWRGaW5pc2hQcm9ncmVzcygpCiAgICAgSW5qZWN0ZWRCdW5kbGU6
OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5v
dGlmaWNhdGlvblxuIik7CiB9CiAKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlOjpzaG91bGRTZW5k
RG9Ob3RUcmFja0hUVFBIZWFkZXIoKQoreworICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkudGVzdFJ1bm5lcigpLT5zaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoKTsKK30K
KwogZW51bSBGcmFtZU5hbWVQb2xpY3kgeyBTaG91bGROb3RJbmNsdWRlRnJhbWVOYW1lLCBTaG91
bGRJbmNsdWRlRnJhbWVOYW1lIH07CiAKIHN0YXRpYyB2b2lkIGR1bXBGcmFtZVNjcm9sbFBvc2l0
aW9uKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIEZyYW1lTmFtZVBvbGljeSBzaG91bGRJbmNsdWRl
RnJhbWVOYW1lID0gU2hvdWxkTm90SW5jbHVkZUZyYW1lTmFtZSkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5o
CmluZGV4IDA3NDMxNGU2NGM0NzgwNDI2NDkzZDRiYTQyOGQyZmFlYmQ1YjAzMzcuLjcwYzQ2OTI3
MWQ1MjUzNTJlNWViNGVhNzMzZmI3NTliOGUyZjk3NjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaApA
QCAtNzksNiArNzksNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkRm9y
UmVzb3VyY2UoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NjRfdCBpZGVu
dGlmaWVyLCBXS0Vycm9yUmVmLCBjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVj
ZWl2ZUludGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgV0tC
dW5kbGVJbnRlbnRSZXF1ZXN0UmVmLCBXS1R5cGVSZWYqLCBjb25zdCB2b2lkKik7CiAgICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBX
S0J1bmRsZUZyYW1lUmVmLCBXS0ludGVudFNlcnZpY2VJbmZvUmVmLCBXS1R5cGVSZWYqLCBjb25z
dCB2b2lkKik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVy
KFdLQnVuZGxlUGFnZVJlZiwgY29uc3Qgdm9pZCopOwogCiAgICAgdm9pZCBkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJl
Zik7CkBAIC0xNjYsNiArMTY3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGR1bXBBbGxGcmFtZXNU
ZXh0KCk7CiAgICAgdm9pZCBkdW1wQWxsRnJhbWVTY3JvbGxQb3NpdGlvbnMoKTsKIAorICAgIGJv
b2wgc2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKCk7CisKICAgICBXS0J1bmRsZVBhZ2VS
ZWYgbV9wYWdlOwogICAgIFdLUmV0YWluUHRyPFdLQnVuZGxlU2NyaXB0V29ybGRSZWY+IG1fd29y
bGQ7CiAgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmPiBtX3By
ZXZpb3VzVGVzdEJhY2tGb3J3YXJkTGlzdEl0ZW07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCAxYWRjZGFjYmFhYmZj
MjgwZWJiOWYxZTI0MTVlY2U5NWZmNTMzZDY2Li44NWM0YjQzMGMwNTU5ZGVlMWViODQ1ZDRiMzg5
MzY1OTM5NTg5YzAyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTg5LDYgKzg5LDcgQEAgVGVzdFJ1bm5lcjo6VGVz
dFJ1bm5lcigpCiAgICAgLCBtX2N1c3RvbUZ1bGxTY3JlZW5CZWhhdmlvcihmYWxzZSkKICAgICAs
IG1fdXNlclN0eWxlU2hlZXRFbmFibGVkKGZhbHNlKQogICAgICwgbV91c2VyU3R5bGVTaGVldExv
Y2F0aW9uKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIiIpKSkKKyAgICAs
IG1fc2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKGZhbHNlKQogewogICAgIHBsYXRmb3Jt
SW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCA4YzQwNDJlZWQ3N2MyY2I4ZjdjNDJiNzRmMWIxNzI1
NjhhMTE2YTcwLi45YTJhZDJmZjUzYmYyMDY4MDdmZTUxNzEyNDhkOWRhMmVkZDhjZTkwIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aApAQCAtMjM1LDYgKzIzNSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhZ2VWaXNpYmlsaXR5
KEpTU3RyaW5nUmVmIHN0YXRlKTsKICAgICB2b2lkIHJlc2V0UGFnZVZpc2liaWxpdHkoKTsKIAor
ICAgIGJvb2wgc2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKCkgY29uc3QgeyByZXR1cm4g
bV9zaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXI7IH0KKyAgICB2b2lkIHNldFNob3VsZFNl
bmREb05vdFRyYWNrSFRUUEhlYWRlcihib29sIGZsYWcpIHsgbV9zaG91bGRTZW5kRG9Ob3RUcmFj
a0hUVFBIZWFkZXIgPSBmbGFnOyB9CisKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJs
ZSB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckludGVydmFsOwogCkBAIC0yNzUsNiArMjc4LDggQEAg
cHJpdmF0ZToKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbV91c2VyU3R5bGVTaGVldExv
Y2F0aW9uOwogCiAgICAgUGxhdGZvcm1UaW1lclJlZiBtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVy
OworCisgICAgYm9vbCBtX3Nob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdkYmJjNzA3YzhlMjQzYWZjNjQxNDE5MzZkMTZmYThk
ZDQ5ZmM3MTUuLjA1ZjJjNDczZTYyMDg5YmU2MmEzZjVjMDgyNjY1Yjg4ODlhYmZmNWYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOS0wNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICA8YXVkaW8+IGFuZCA8dmlkZW8+IHNob3VsZCBzZW5kIERvIE5vdCBU
cmFjayB3aGVuIGFwcHJvcHJpYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NjEzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhIG5ldyBIVFRQIHRlc3QgZW5zdXJpbmcgdGhlIEROVCBoZWFkZXIg
aXMgcGFzc2VkIGNvcnJlY3RseSBkdXJpbmcgdmlkZW8gdGVzdHMuCisKKyAgICAgICAgKiBodHRw
L3Rlc3RzL21lZGlhL3Jlc291cmNlcy92aWRlby1kb25vdHRyYWNrLWNoZWNrLWRvbm90dHJhY2su
cGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWRvbm90dHJhY2st
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWRv
bm90dHJhY2suaHRtbDogQWRkZWQuCisKIDIwMTItMDgtMzAgIFhpYW56aHUgV2FuZyAgPHdhbmd4
aWFuemh1QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW0tQW5kcm9pZF0gVXBzdHJl
YW0gbGF5b3V0IHRlc3QgcmViYXNlbGluZWQgZXhwZWN0YXRpb25zCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3Jlc291cmNlcy92aWRlby1kb25vdHRyYWNrLWNoZWNr
LWRvbm90dHJhY2sucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS9yZXNvdXJjZXMv
dmlkZW8tZG9ub3R0cmFjay1jaGVjay1kb25vdHRyYWNrLnBocApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZmU3OTZj
YzIyZmQxMjQwMDkyOWIxYzk5MmU5NGZkMjVlNWRhZDliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS9yZXNvdXJjZXMvdmlkZW8tZG9ub3R0cmFjay1jaGVj
ay1kb25vdHRyYWNrLnBocApAQCAtMCwwICsxLDIxIEBACis8P3BocAorIGVycm9yX2xvZyh2YXJf
ZXhwb3J0KCRfU0VSVkVSLHRydWUpKTsKKworICAgICRkbnQgPSAkX1NFUlZFUlsiSFRUUF9ETlQi
XTsKKyAgICBpZiAoIWlzc2V0KCRkbnQpIHx8IHN0cmlwb3MoJGRudCwgIjEiKSA9PT0gZmFsc2Up
CisgICAgICAgIGRpZTsKKworCisgICAgJGZpbGVOYW1lID0gJF9HRVRbIm5hbWUiXTsKKyAgICAk
dHlwZSA9ICRfR0VUWyJ0eXBlIl07CisKKyAgICAkX0dFVCA9IGFycmF5KCk7CisgICAgJF9HRVRb
J25hbWUnXSA9ICRmaWxlTmFtZTsKKyAgICAkX0dFVFsndHlwZSddID0gJHR5cGU7CisgICAgQGlu
Y2x1ZGUoIi4vc2VydmUtdmlkZW8ucGhwIik7IAorCisgICAgCisgICAgZXJyb3JfbG9nKHZhcl9l
eHBvcnQoaGVhZGVyc19saXN0KCksIHRydWUpKTsKKyAgICAKKworPz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdmlkZW8tZG9ub3R0cmFjay1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWRvbm90dHJhY2stZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY0ZDliY2JlZTgyMmE0NzVlMzUyZmI4ZDI5NTUyZjE5MjRmNThiOTEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWRv
bm90dHJhY2stZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorRVZFTlQoY2FucGxheSkKK0VO
RCBPRiBURVNUCitUZXN0cyB0aGF0IHRoZSBtZWRpYSBwbGF5ZXIgd2lsbCBzZW5kIHRoZSByZWxl
dmFudCByZWZlcmVyIHdoZW4gcmVxdWVzdGluZyB0aGUgbWVkaWEgZmlsZS4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS92aWRlby1kb25vdHRyYWNrLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWRvbm90dHJhY2suaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kZTA5ZGM0OTBiZTU1ZWQ0ODliNDA1NDdiMDhiNTc0Mzc4ZDMxZTRlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS92aWRlby1kb25vdHRyYWNrLmh0
bWwKQEAgLTAsMCArMSwzNyBAQAorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKzx2aWRlbyBpZD0idmlkZW8iPgorICAgIDxzb3VyY2UgaWQ9InNvdXJj
ZSI+Cis8L3ZpZGVvPgorPHNjcmlwdCBzcmM9Li4vLi4vbWVkaWEtcmVzb3VyY2VzL3ZpZGVvLXRl
c3QuanM+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0uLi8uLi9tZWRpYS1yZXNvdXJjZXMvbWVkaWEt
ZmlsZS5qcz48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgZnVuY3Rpb24gcnVuVGVzdCAoKSB7Cisg
ICAgICAgIHZhciBtb3ZpZSA9IGZpbmRNZWRpYUZpbGUoJ3ZpZGVvJywgJ3Rlc3QnKTsKKyAgICAg
ICAgdmFyIHR5cGUgPSBtaW1lVHlwZUZvckV4dGVuc2lvbihtb3ZpZS5zcGxpdCgnLicpLnBvcCgp
KTsKKyAgICAgICAgdmFyIGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7
CisgICAgICAgIGZyYW1lLndpZHRoID0gMDsKKyAgICAgICAgZnJhbWUuaGVpZ2h0ID0gMDsKKyAg
ICAgICAgZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIHdhaXRGb3JFdmVudEFuZEZhaWwoJ2Vycm9yJyk7CisgICAgICAgICAgICB3YWl0Rm9y
RXZlbnRBbmRFbmQoJ2NhbnBsYXknKTsKKworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLnNldFNob3VsZFNlbmREb05v
dFRyYWNrSFRUUEhlYWRlcih0cnVlKTsKKworICAgICAgICAgICAgICAgIHNvdXJjZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdzb3VyY2UnKTsKKyAgICAgICAgICAgICAgICBzb3VyY2Uuc3Jj
ID0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9tZWRpYS9yZXNvdXJjZXMvdmlkZW8tZG9ub3R0cmFj
ay1jaGVjay1kb25vdHRyYWNrLnBocD9uYW1lPScgKyBtb3ZpZSArICcmdHlwZT0nICsgdHlwZTsK
KyAgICAgICAgICAgICAgICBzb3VyY2UudHlwZSA9IHR5cGU7CisKKyAgICAgICAgICAgICAgICB2
aWRlby5sb2FkKCk7CisgICAgICAgIH0pOworCisgICAgICAgIGZyYW1lLnNyYyA9ICJkYXRhOnRl
eHQvaHRtbCw8Yj50ZXN0PC9iPiI7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
ZnJhbWUpOworICAgIH0KKzwvc2NyaXB0PgorVGVzdHMgdGhhdCB0aGUgbWVkaWEgcGxheWVyIHdp
bGwgc2VuZCB0aGUgcmVsZXZhbnQgcmVmZXJlciB3aGVuIHJlcXVlc3RpbmcgdGhlIG1lZGlhIGZp
bGUuPGJyLz4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162852</attachid>
            <date>2012-09-07 13:18:35 -0700</date>
            <delta_ts>2012-09-07 15:49:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96134-20120907131814.patch</filename>
            <type>text/plain</type>
            <size>34971</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjM1ZTE3NjM0M2U3MDIw
NmY5NmZlYTQ4ZmExZDcyNGJjOGM3MTJlMy4uNWU2ZWM4OWU4ZDUwNDk1YzZlYmNkODkwNWZjNmE1
N2FlYWFhNmI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTA3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIDxhdWRpbz4gYW5kIDx2aWRl
bz4gc2hvdWxkIHNlbmQgRG8gTm90IFRyYWNrIHdoZW4gYXBwcm9wcmlhdGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MTM0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgRnJhbWVMb2FkZXJDbGll
bnQgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIEROVCBoZWFkZXIgc2hvdWxkIGJl
IHNlbnQsCisgICAgICAgIGFuZCBwbHVtYiB0aGF0IG5ldyBmdW5jdGlvbiBkb3duIGludG8gdGhl
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMgY2xhc3MuCisKKyAgICAgICAgVGVz
dDogaHR0cC90ZXN0cy9tZWRpYS92aWRlby1kb25vdHRyYWNrLmh0bWwKKworICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllclNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcik6CisgICAgICAg
ICAgICBQYXNzIHRoZSBxdWVzdGlvbiBvbiB0aHJvdWdoIHRvIHRoZSBGcmFtZUxvYWRlckNsaWVu
dC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
OjpzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIpOgorICAgICAgICAgICAgQ2FsbCB0aHJv
dWdoIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBXZWJLaXQgb3IgV2ViS2l0Mi4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyU2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVy
KToKKyAgICAgICAgICAgIFBhc3MgdGhlIHF1ZXN0aW9uIG9uIHRvIHRoZSBIVE1MTWVkaWFFbGVt
ZW50LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKToKKyAg
ICAgICAgICAgIElmIHdlIHNob3VsZCBzZW5kIHRoZSBETlQgaGVhZGVyLCBhZGQgaXQgdG8gdGhl
IGhlYWRlciBvcHRpb25zIGFycmF5CisgICAgICAgICAgICB3aGVuIGNyZWF0aW5nIHRoZSBBVkFz
c2V0LgorCiAyMDEyLTA5LTA3ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBSZW5kZXJQYXNzIGlkcyBob2xkIGJvdGggZ2VuZXJh
dGluZyBsYXllciBpZCBhbmQgYW4gaW5kZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBlOGE1NzI3NzAz
ZDAyMzg2ODE3ODdlOGU4YzE1ZGQ3MzAwMTllZTQ1Li5mNzA4ODQ4YzlmYzJlZWNjZTk4MzcxNzRl
YjY3NDZlN2E2YTM1NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTIt
MDktMDcgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgPGF1ZGlv
PiBhbmQgPHZpZGVvPiBzaG91bGQgc2VuZCBEbyBOb3QgVHJhY2sgd2hlbiBhcHByb3ByaWF0ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYxMzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgdGhlIHNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlciBieSBwYXNzaW5nIHRoZSBy
ZXF1ZXN0CisgICAgICAgIG9uIHRvIHRoZSBXZWJGcmFtZUxvYWREZWxlZ2F0ZS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxv
YWRlckNsaWVudDo6c2hvdWxkU2VuZERvTm90VHJhY2tIZWFkZXIpOgorICAgICAgICAgICAgUGFz
cyB0aGUgcXVlc3Rpb24gb24gdG8gdGhlIFdlYkZyYW1lTG9hZERlbGVnYXRlLgorICAgICAgICAq
IFdlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaDoKKyAgICAgICAgKFdl
YkZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSk6CisgICAgICAgICAgICBBZGQg
YW4gZW50cnkgZm9yIHRoZSBkZWxlZ2F0ZSdzIHdlYlZpZXdTaG91bGRTZW5kRG9Ob3RUcmFja0hl
YWRlciBtZXRob2QuCisgICAgICAgICogV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9u
Q2FjaGluZy5tbToKKyAgICAgICAgKENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZVJldHVybmluZ0Jv
b2xlYW4pOiBBZGRlZCBhIDAtcGFyYW1ldGVyIG92ZXJsb2FkZWQgZnVuY3Rpb24uCisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jYWNoZUZyYW1lTG9h
ZERlbGVnYXRlSW1wbGVtZW50YXRpb25zXSk6IGluaXRpYWxpemUgdGhlIAorICAgICAgICAgICAg
Y2FjaGVkIHZhbHVlIGZvciBzaG91bGRTZW5kRG9Ob3RUcmFja0hlYWRlckZ1bmMuCisKIDIwMTIt
MDktMDcgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CiAK
ICAgICAgICAgU2ltcGxpZnkgaGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3Qg
QVBJcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDVlYTdmYTYxYTRlMThiYjY4MzZjOGIxY2FjMTAyNzYzMGM5ZGU4
OTAuLmEwZTczZDY5MWM1YmQwZGVlNTM0NjZkYjQ5YzdlYjRlY2E3OWRiNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNyBAQAorMjAxMi0wOS0wNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICA8YXVkaW8+IGFuZCA8dmlkZW8+IHNob3VsZCBzZW5kIERvIE5vdCBU
cmFjayB3aGVuIGFwcHJvcHJpYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NjEzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgc2hvdWxkU2VuZERvTm90VHJhY2tIVFRQ
SGVhZGVyIGJ5IHBhc3NpbmcgdGhlIHJlcXVlc3QKKyAgICAgICAgb24gdG8gdGhlIFdlYkZyYW1l
TG9hZERlbGVnYXRlLgorCisgICAgICAgICogU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHA6IElu
Y3JlbWVudCB0aGUgaW50ZXJmYWNlU2l6ZXMgZm9yIAorICAgICAgICAgICAgV0tCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50IGJ5IHRoZSB2YWx1ZSBvZiB0aGUgbmV3IGZ1bmN0aW9ucy4KKyAgICAgICAg
KiBTaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmg6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmg6IEFkZCBhIG5ldyBBUEkgdG8gCisg
ICAgICAgICAgICBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQgYW5kIGJ1bXAgdGhlIHZlcnNpb24g
bnVtYmVyLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50OjpzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIpOgorICAgICAg
ICAgICAgUGFzcyB0aGUgcXVlc3Rpb24gb24gdG8gdGhlIGNsaWVudC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkU2VuZERv
Tm90VHJhY2tIVFRQSGVhZGVyKToKKyAgICAgICAgICAgIFBhc3MgdGhlIHF1ZXN0aW9uIG9uIHRv
IHRoZSBidW5kbGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oOgorCiAyMDEyLTA5LTA3ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxh
bGxhbi5qZW5zZW5Abm9raWEuY29tPgogCiAgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRB
dFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCmluZGV4IGNkMDBmNDFkOThlODNmZGYxMDE4MTJiOTUwYzI1NzNjMTJiZGEw
MzMuLjdhOGQwM2RjMmE2ZmVkNzMxMGJkZjMwN2E4ODU3MGIzOTA3YThiZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDQ3OSw2ICs0NDc5LDE5IEBAIElu
dFJlY3QgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJXaW5kb3dDbGlwUmVjdCgpCiAgICAg
cmV0dXJuIG1lZGlhUGxheWVyT3duaW5nRG9jdW1lbnQoKS0+dmlldygpLT53aW5kb3dDbGlwUmVj
dCgpOwogfQogCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2hvdWxkU2VuZERv
Tm90VHJhY2tIVFRQSGVhZGVyKCkgY29uc3QKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVu
dCgpLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIEZyYW1lTG9hZGVyQ2xpZW50KiBjbGllbnQgPSBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgp
OworICAgIGlmICghY2xpZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
Y2xpZW50LT5zaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoKTsKK30KKwogdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpyZW1vdmVCZWhhdmlvcnNSZXN0cmljdGlvbnNBZnRlckZpcnN0VXNlckdl
c3R1cmUoKQogewogICAgIG1fcmVzdHJpY3Rpb25zID0gTm9SZXN0cmljdGlvbnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDFmMzBiMjk2ZTY0NzJmYzUzYjk1M2Y0
MjliNDZlMjExMDZmOTE1OTIuLjk1YmRhZjM1NTRkYjcyMmY1YzA3MWUyYzRlODM4MGUyYjU1Yjlh
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC00MzMsNiArNDMz
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc1BhdXNlZCgpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgSG9zdFdpbmRvdyogbWVkaWFQbGF5ZXJIb3N0V2lu
ZG93KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnRSZWN0IG1lZGlhUGxheWVyV2luZG93Q2xp
cFJlY3QoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJTaG91bGRTZW5k
RG9Ob3RUcmFja0hUVFBIZWFkZXIoKSBjb25zdCBPVkVSUklERTsKIAogI2lmIFBMQVRGT1JNKFdJ
TikgJiYgVVNFKEFWRk9VTkRBVElPTikKICAgICB2aXJ0dWFsIEdyYXBoaWNzRGV2aWNlQWRhcHRl
ciogbWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29uc3QgTWVkaWFQbGF5ZXIqKSBj
b25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
aW5kZXggYmU4MTAyODdhNzBkNTVlOGU2NTZiZmYzZDY0MGFhZmE1MzNiMTA2YS4uYzFiMmY3ZGE0
MDRlNjRmMDdjZGJhMTQxMDhhNTczNDg1NzJjMjFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTM0Myw2ICszNDMsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxEaXNjb25uZWN0RE9NV2luZG93
RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdChET01XaW5kb3dFeHRlbnNpb24qKSB7IH0KICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9H
bG9iYWxPYmplY3QoRE9NV2luZG93RXh0ZW5zaW9uKikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaFdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKERP
TVdpbmRvd0V4dGVuc2lvbiopIHsgfQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTZW5k
RG9Ob3RUcmFja0hUVFBIZWFkZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oCmluZGV4IDlhMmM2Yjc4NmJiZGIwM2FlNzk4YzIwZDUxOThjMTZh
MjIwMzY1ZmQuLjU4ZThkYTg5M2M4MjQ5ZWZkNGMxN2IzYzVlZjQ5ZDc0YTY3YzhkOGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMjAy
LDYgKzIwMiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc1BhdXNl
ZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIEhvc3RXaW5kb3cqIG1lZGlh
UGxheWVySG9zdFdpbmRvdygpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIEludFJlY3QgbWVk
aWFQbGF5ZXJXaW5kb3dDbGlwUmVjdCgpIHsgcmV0dXJuIEludFJlY3QoKTsgfQorCisgICAgdmly
dHVhbCBib29sIG1lZGlhUGxheWVyU2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKIGNsYXNzIE1lZGlhUGxheWVyU3VwcG9ydHNUeXBl
Q2xpZW50IHsKQEAgLTQxOSw2ICs0MjEsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgZW5naW5l
RGVzY3JpcHRpb24oKSBjb25zdDsKIAorICAgIGJvb2wgc2hvdWxkU2VuZERvTm90VHJhY2tIVFRQ
SGVhZGVyKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJD
bGllbnQqKTsKICAgICB2b2lkIGxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKE1lZGlhUGxheWVyRmFj
dG9yeSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggY2Y3NWQwY2Y2Y2ZkNzYwOGFkNzFk
Njc3ZjQ2ZjFlNzY5ODc4YTM2Ni4uOTEzY2EyYjUxY2I5OTk1YzQyYjdkZGViYzEyNDVjZDk5NjU1
MDE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yOTcsNiArMjk3LDkgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKGNv
bnN0IFN0cmluZyYgdXJsKQogICAgIGlmICghdXNlckFnZW50LmlzRW1wdHkoKSkKICAgICAgICAg
W2hlYWRlckZpZWxkcy5nZXQoKSBzZXRPYmplY3Q6dXNlckFnZW50IGZvcktleTpAIlVzZXItQWdl
bnQiXTsKIAorICAgIGlmIChwbGF5ZXIoKS0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5
ZXJTaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoKSkKKyAgICAgICAgW2hlYWRlckZpZWxk
cy5nZXQoKSBzZXRPYmplY3Q6QCIxIiBmb3JLZXk6QCJETlQiXTsKKwogICAgIGlmIChbaGVhZGVy
RmllbGRzLmdldCgpIGNvdW50XSkKICAgICAgICAgW29wdGlvbnMuZ2V0KCkgc2V0T2JqZWN0Omhl
YWRlckZpZWxkcy5nZXQoKSBmb3JLZXk6QCJBVlVSTEFzc2V0SFRUUEhlYWRlckZpZWxkc0tleSJd
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAzYzFhNDA1OTBmNWU4YzZkMmViNjdlOTAxMGM1
MzcxN2QyMTQwNTQ3Li5mMjJhNjlhYzk5NzZjZWRmOGZlNDkzNWRjMWE5ZDY2ZDI0MWM2MGZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKQEAgLTIyNyw2ICsyMjcsOCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JN
KE1BQykKICAgICB2aXJ0dWFsIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVP
YmplY3QoKSBPVkVSUklERSB7IHJldHVybiAwOyB9CiAjZW5kaWYKKworICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoKSBjb25zdCBPVkVSUklERTsKICAgICAK
ICAgICBSZXRhaW5QdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcj4gc2V0VXBQb2xpY3lMaXN0ZW5l
cihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA1
YjY4YTFmNWZmZTZjODkzZTk5MzJmN2I5ZjQ4NjZjMWE2MDBmYmJjLi4zNDIyNGMyY2M2YjNkMDg2
NWIxYWNjODcyZjk3MjZkMGRiZTA5NzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTk4MCw2ICsx
OTgwLDE2IEBAIGpvYmplY3QgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmphdmFBcHBsZXQoTlNWaWV3
KiB2aWV3KQogfQogI2VuZGlmCiAKK2Jvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFNl
bmREb05vdFRyYWNrSFRUUEhlYWRlcigpIGNvbnN0Cit7CisgICAgV2ViVmlldyAqd2ViVmlldyA9
IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CisgICAgV2ViRnJhbWVMb2FkRGVsZWdhdGVJ
bXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0RnJhbWVMb2Fk
RGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CisKKyAgICBpZiAoaW1wbGVtZW50YXRp
b25zLT5zaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXJGdW5jKQorICAgICAgICByZXR1cm4g
Q2FsbFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihZRVMsIGltcGxlbWVudGF0
aW9ucy0+c2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyRnVuYywgd2ViVmlldywgQHNlbGVj
dG9yKHdlYlZpZXdTaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXI6KSk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCiBAaW1wbGVtZW50YXRpb24gV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcgogKyAo
dm9pZClpbml0aWFsaXplCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgKaW5kZXggNjU2OGNjOTZi
MDFiNzlkYmZjNjJjNTlmOGU3ZDM4M2U0YTQ1ZDdjOC4uMDcyZThmZTk0ZjNjMTc4Mjg3MTE2YTg4
NTk1MTdkMGRiNmJjNDJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaApAQCAtNzgsNiArNzgs
NyBAQCBzdHJ1Y3QgV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlIHsKICAg
ICBJTVAgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZ1bmM7CiAgICAgSU1QIGRpZFJ1bkluc2Vj
dXJlQ29udGVudEZ1bmM7CiAgICAgSU1QIGRpZERldGVjdFhTU0Z1bmM7CisgICAgSU1QIHNob3Vs
ZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlckZ1bmM7CiB9OwogCiBzdHJ1Y3QgV2ViU2NyaXB0RGVi
dWdEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUgewpAQCAtMTM1LDYgKzEzNiw3IEBAIGlkIENh
bGxSZXNvdXJjZUxvYWREZWxlZ2F0ZShJTVAsIFdlYlZpZXcgKiwgU0VMLCBpZCwgaWQsIGlkLCBp
ZCk7CiBpZCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGUoSU1QLCBXZWJWaWV3ICosIFNFTCwgaWQs
IE5TSW50ZWdlciwgaWQpOwogaWQgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlKElNUCwgV2ViVmll
dyAqLCBTRUwsIGlkLCBpZCwgTlNJbnRlZ2VyLCBpZCk7CiAKK0JPT0wgQ2FsbFJlc291cmNlTG9h
ZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MLCBJTVAsIFdlYlZpZXcgKiwgU0VMKTsKIEJP
T0wgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MLCBJTVAsIFdl
YlZpZXcgKiwgU0VMLCBpZCk7CiBCT09MIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZVJldHVybmlu
Z0Jvb2xlYW4oQk9PTCwgSU1QLCBXZWJWaWV3ICosIFNFTCwgaWQsIGlkKTsKIEJPT0wgQ2FsbFJl
c291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MLCBJTVAsIFdlYlZpZXcgKiwg
U0VMLCBpZCwgaWQsIGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLm1tCmluZGV4IDg0NzBmNWYy
YmM1M2Q4NmMzN2Y1YWFhMzhjZWY2NDY5NDQ4N2E0YmMuLjA3MWIyODA4ZmZhZDJjMGM0YWJhOTFj
N2U5MThjMjk2MDhkNTMxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5tbQpAQCAtNTAwLDYg
KzUwMCwxNiBAQCBpZCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9u
LCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkCiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0
ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZhdGUtPnJlc291cmNlUHJvZ3Jlc3NE
ZWxlZ2F0ZSwgc2VsZWN0b3IsIG9iamVjdDEsIG9iamVjdDIsIGludGVnZXIsIG9iamVjdDMpOwog
fQogCitCT09MIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9PTCBy
ZXN1bHQsIElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9yKQor
eworICAgIEB0cnkgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxCT09MICgqKShp
ZCwgU0VMLCBXZWJWaWV3ICopPihvYmpjX21zZ1NlbmQpKHNlbGYtPl9wcml2YXRlLT5yZXNvdXJj
ZVByb2dyZXNzRGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmKTsKKyAgICB9IEBjYXRjaChpZCBleGNl
cHRpb24pIHsKKyAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2VsZWN0
b3IsIGV4Y2VwdGlvbik7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIEJPT0wgQ2Fs
bFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MIHJlc3VsdCwgSU1QIGlt
cGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEpCiB7
CiAgICAgQHRyeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggN2I4NDEy
Y2ZlOWU5YjZiYjhhZjNiMzUzNWMxNGUxNDBhZTYwNTQwYy4uNGZkOTUwOWRjODI3NmE5YWJlZWM1
Y2NkYWI0OWQwZGFlNWY1MDQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpA
QCAtMTYyOSw2ICsxNjI5LDcgQEAgc3RhdGljIGlubGluZSBJTVAgZ2V0TWV0aG9kKGlkIG8sIFNF
TCBzKQogICAgIGNhY2hlLT5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50RnVuYyA9IGdldE1ldGhv
ZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXdEaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Oikp
OwogICAgIGNhY2hlLT5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGdW5jID0gZ2V0TWV0aG9kKGRlbGVn
YXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSdW5JbnNlY3VyZUNvbnRlbnQ6KSk7CiAgICAgY2Fj
aGUtPmRpZERldGVjdFhTU0Z1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJW
aWV3OmRpZERldGVjdFhTUzopKTsKKyAgICBjYWNoZS0+c2hvdWxkU2VuZERvTm90VHJhY2tIVFRQ
SGVhZGVyRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXdTaG91bGRT
ZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXI6KSk7CiB9CiAKIC0gKHZvaWQpX2NhY2hlU2NyaXB0RGVi
dWdEZWxlZ2F0ZUltcGxlbWVudGF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSUNsaWVudFRyYWl0cy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRy
YWl0cy5oCmluZGV4IDczNTJiNTY2N2FkMmM0OWY0MTQ5NjJjYjU1YjA4MjljNTNjODhlYzYuLjQ4
MWY5NWYzN2JhMjYzZDQ1ZTk3MTNlOTk2MGU3OGE0NzlkMGNiNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJQ2xpZW50VHJhaXRzLmgKQEAgLTQzLDcgKzQzLDcgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlQ2xpZW50PiB7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50PiB7Ci0gICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBpbnRlcmZhY2VTaXplc0J5VmVyc2lvbls0XTsKKyAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IGludGVyZmFjZVNpemVzQnlWZXJzaW9uWzVdOwogfTsKIAogdGVtcGxhdGU8
PiBzdHJ1Y3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudD4g
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKaW5kZXggOGJjNzY3MGNmNTkzMTJiY2UwNTk1YTIx
MGYxNjY0MWY3NTJjOWYzYi4uMjVkOTZjZWFlODcwNGQ3MzZjOGM5Mjk3ZTcwNzAyYjgwNmY1MGQ1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCkBAIC0xMTEsNiArMTExLDcgQEAgdHlwZWRl
ZiB2b2lkICgqV0tCdW5kbGVQYWdlV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dF
eHRlbnNpb25DYWxsYmFjaykKIHR5cGVkZWYgYm9vbCAoKldLQnVuZGxlUGFnZVNob3VsZEZvcmNl
VW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiwgV0tT
dHJpbmdSZWYgdXJsLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldL
QnVuZGxlUGFnZURpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVm
IGludGVudFJlcXVlc3QsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlUmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9y
RnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJh
bWUsIFdLSW50ZW50U2VydmljZUluZm9SZWYgc2VydmljZUluZm8sIFdLVHlwZVJlZiogdXNlckRh
dGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdl
U2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogc3RydWN0IFdLQnVuZGxlUGFnZUxvYWRl
ckNsaWVudCB7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKQEAgLTE1MywxMCArMTU0LDEz
IEBAIHN0cnVjdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQgewogICAgIC8vIFZlcnNpb24gMwog
ICAgIFdLQnVuZGxlUGFnZURpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZUNhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZTsKICAgICBXS0J1bmRs
ZVBhZ2VSZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICByZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZTsKKworICAgIC8vIFZlcnNpb24g
NAorICAgIFdLQnVuZGxlUGFnZVNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlckNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgIHNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcjsKIH07
CiB0eXBlZGVmIHN0cnVjdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQgV0tCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50OwogCi1lbnVtIHsga1dLQnVuZGxlUGFnZUxvYWRlckNsaWVudEN1cnJlbnRWZXJz
aW9uID0gMyB9OworZW51bSB7IGtXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRDdXJyZW50VmVyc2lv
biA9IDQgfTsKIAogZW51bSB7CiAgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uUGFzc1Rocm91
Z2gsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAK
aW5kZXggYTZhMDYxMjNmNjY4NWE2YzM0MWFjMTgxZWRjYTY2MWUwZTNjOWFiNi4uODVhMWFkZTc5
MGJlZWFlNzY1ZmNkYmRjMGUyZTA1OTI0YTA0MWNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAtMzM1LDQgKzMzNSwxMiBAQCBib29s
IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6c2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nl
c3NGcm9tTG9jYWxVUkwoV2ViUAogICAgIHJldHVybiBtX2NsaWVudC5zaG91bGRGb3JjZVVuaXZl
cnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTCh0b0FQSShwYWdlKSwgdG9BUEkodXJsLmltcGwoKSksIG1f
Y2xpZW50LmNsaWVudEluZm8pOwogfQogCitib29sIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudDo6c2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKFdlYlBhZ2UqIHBhZ2UpCit7Cisg
ICAgaWYgKCFtX2NsaWVudC5zaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2NsaWVudC5zaG91bGRTZW5kRG9Ob3RUcmFj
a0hUVFBIZWFkZXIodG9BUEkocGFnZSksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5oCmluZGV4IDgxZDliZTQ0ZDRlODA4NGU2N2UyMmU0YmIxOTNhZmI0NjYzNzYxNzAu
LmNkZjhiODgzNTExMmMyZmViNDNhMTg4MjQxZDUyY2NiMWNkYTFmOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtOTQsNiArOTQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVu
c2lvbihXZWJQYWdlKiwgV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKik7CiAKICAgICBib29s
IHNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKFdlYlBhZ2UqLCBjb25zdCBT
dHJpbmcmIHVybCk7CisgICAgYm9vbCBzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoV2Vi
UGFnZSopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCmluZGV4IDZhODAxOTMwNjFmNTkwMjIyMmMwMDZmMDhhMWQ0MDYxZWRhMzQz
N2EuLjQxNzQyNjZhMzM0NDA1NTg4YjhjMzk3NjQ5YmJjMjA3MDU3ZjNmYzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNjIyLDYgKzE2MjIsMTUgQEAgYm9vbCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwo
Y29uc3QgV2ViQ29yZToKICAgICByZXR1cm4gd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJD
bGllbnQoKS5zaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTCh3ZWJQYWdlLCB1
cmwuc3RyaW5nKCkpOwogfQogCitib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRTZW5k
RG9Ob3RUcmFja0hUVFBIZWFkZXIoKSBjb25zdAoreworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBt
X2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5zaG91
bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIod2ViUGFnZSk7Cit9CisKIFBhc3NSZWZQdHI8RnJh
bWVOZXR3b3JraW5nQ29udGV4dD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZU5ldHdvcmtp
bmdDb250ZXh0KCkKIHsKICAgICBSZWZQdHI8V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY29u
dGV4dCA9IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShtX2ZyYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAyMDdlNDQyNjZkNDdjYWUxYmJlODczNDYzNDg2
NTMyMmUwMTQ2Nzk4Li4xMWM5YjNhYTk2ZGEzMzFiMzJhNGY5MjkxOWRhOTk1ZTY2MTcwYTk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yNDEsNiArMjQxLDggQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2Nh
bFVSTChjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKCkgY29uc3QgT1ZFUlJJREU7CisKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRl
TmV0d29ya2luZ0NvbnRleHQoKSBPVkVSUklERTsKIAogICAgIFdlYkZyYW1lKiBtX2ZyYW1lOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGM1MTU5
NjE2ZjlkZmIxMjI1NjQ2Y2QzZDAwOWUxZWNkOTYwOGM5OTAuLjVlNzUyN2Y5OWVlN2IxZWZjY2Iw
OTQ1ZTE2YjRiMjM4ZTkxY2NjYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMi0wOS0wNyAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICA8YXVkaW8+IGFuZCA8dmlkZW8+IHNob3Vs
ZCBzZW5kIERvIE5vdCBUcmFjayB3aGVuIGFwcHJvcHJpYXRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjEzNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHRlc3RSdW5uZXIgSlMgQVBJIGZvciBj
YWxsaW5nIHNldFNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlciB0byBEUlQgYW5kIAorICAg
ICAgICBXVFIuIEFkZCBGcmFtZUxvYWRlckNsaWVudCBjbGllbnQgbWV0aG9kcyBmb3IgcmV0cmll
dmluZyB0aGF0IHZhbHVlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5j
cHA6CisgICAgICAgIChzZXRTaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXJDYWxsYmFjayk6
IFBhc3MgdGhyb3VnaCB0byB0aGUgVGVzdFJ1bm5lci4KKyAgICAgICAgKFRlc3RSdW5uZXI6OnN0
YXRpY0Z1bmN0aW9ucyk6IEFkZCB0aGUgc2V0U2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVy
IGZ1bmN0aW9uLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaDoKKyAgICAg
ICAgKFRlc3RSdW5uZXI6OnNldFNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcik6IFNpbXBs
ZSBzZXR0ZXIuCisgICAgICAgIChUZXN0UnVubmVyOjpzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBI
ZWFkZXIpOiBTaW1wbGUgZ2V0dGVyLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9GcmFt
ZUxvYWREZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bRnJhbWVMb2FkRGVsZWdhdGUgd2ViVmlld1No
b3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcjpdKTogCisgICAgICAgICAgICBQYXNzIHRoZSBx
dWVzdGlvbiBvbiB0byB0aGUgVGVzdFJ1bm5lci4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAg
ICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UpOgorICAgICAg
ICAgICAgQWRkIHRoZSBzZXRTaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIgY2xpZW50IGZ1
bmN0aW9uLgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZFNlbmREb05v
dFRyYWNrSFRUUEhlYWRlcik6CisgICAgICAgICAgICBQYXNzIHRoZSBxdWVzdGlvbiBvbiB0byB0
aGUgVGVzdFJ1bm5lci4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZS5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNob3Vs
ZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcik6IFNpbXBsZSBnZXR0ZXIuCisgICAgICAgIChXVFI6
OlRlc3RSdW5uZXI6OnNldFNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcik6IFNpbXBsZSBT
ZXR0ZXIuCisKIDIwMTItMDktMDcgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5j
b20+CiAKICAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBhZGQgUlRDUGVlckNvbm5lY3Rpb246OmNy
ZWF0ZUFuc3dlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCAxZDAwYzUwYTM1
YTM3ZWMwZmFkYzE4YWQ4NGUzMGRiNzE4YzhhMGQ0Li44ZGE2YWViODVhNDkxNWM0Zjk2MjczMWUw
OWRlOTlmZDRhMTdlOTZmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVu
bmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtOTMs
OCArOTMsOSBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVyKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0
UGF0aE9yVVJMLCBjb25zdCBzdGQ6OnN0cmluZyYgZXhwZQogICAgICwgbV9zaG91bGRQYWludEJy
b2tlbkltYWdlKHRydWUpCiAgICAgLCBtX3Nob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVm
b3JlVW5sb2FkKGZhbHNlKQogICAgICwgbV9hcmVMZWdhY3lXZWJOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdHNJZ25vcmVkKGZhbHNlKQotICAgICwgbV9jdXN0b21GdWxsU2NyZWVuQmVoYXZp
b3IoZmFsc2UpIAorICAgICwgbV9jdXN0b21GdWxsU2NyZWVuQmVoYXZpb3IoZmFsc2UpCiAgICAg
LCBtX2hhc1BlbmRpbmdXZWJOb3RpZmljYXRpb25DbGljayhmYWxzZSkKKyAgICAsIG1fc2hvdWxk
U2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKGZhbHNlKQogICAgICwgbV90ZXN0UGF0aE9yVVJMKHRl
c3RQYXRoT3JVUkwpCiAgICAgLCBtX2V4cGVjdGVkUGl4ZWxIYXNoKGV4cGVjdGVkUGl4ZWxIYXNo
KQogICAgICwgbV90aXRsZVRleHREaXJlY3Rpb24oImx0ciIpCkBAIC03MTUsNiArNzE2LDE2IEBA
IHN0YXRpYyBKU1ZhbHVlUmVmIG5vdGlmeURvbmVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTaG91bGRTZW5kRG9Ob3RUcmFj
a0hUVFBIZWFkZXJDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAg
aWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7CisKKyAgICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8
VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJv
bGxlci0+c2V0U2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKEpTVmFsdWVUb0Jvb2xlYW4o
Y29udGV4dCwgYXJndW1lbnRzWzBdKSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBudW1iZXJPZlBlbmRpbmdHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0c0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKIHsKICAgICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5l
cio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CkBAIC0yMzI3LDYgKzIzMzgsNyBA
QCBKU1N0YXRpY0Z1bmN0aW9uKiBUZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAg
ICB7ICJkZW55V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbiIsIGRlbnlXZWJOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicmVtb3ZlQWxsV2ViTm90aWZp
Y2F0aW9uUGVybWlzc2lvbnMiLCByZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uc0Nh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2si
LCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAg
eyAic2V0U2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyIiwgc2V0U2hvdWxkU2VuZERvTm90
VHJhY2tIVFRQSGVhZGVyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAwLCAwLCAwIH0KICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKaW5kZXggOWJjYzk1YmM5MmQzMjk2MWU1
MWM0YTMzNzliMzc4Mzk0MjI3ZjI1OS4uNGM0YTI3NjJjMWI2N2E4NmZkZGZmYTAzZTgwMzM5ODMw
ZWY5M2RjYSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaApAQCAtMzY3LDYgKzM2Nyw5IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgaGFzUGVuZGluZ1dlYk5vdGlmaWNhdGlvbkNsaWNrKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNQZW5kaW5nV2ViTm90aWZpY2F0aW9uQ2xpY2s7IH0KIAorICAgIHZv
aWQgc2V0U2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKGJvb2wgdmFsdWUpIHsgbV9zaG91
bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIgPSB2YWx1ZTsgfQorICAgIGJvb2wgc2hvdWxkU2Vu
ZERvTm90VHJhY2tIVFRQSGVhZGVyKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTZW5kRG9Ob3RU
cmFja0hUVFBIZWFkZXI7IH0KKwogcHJpdmF0ZToKICAgICBUZXN0UnVubmVyKGNvbnN0IHN0ZDo6
c3RyaW5nJiB0ZXN0UGF0aE9yVVJMLCBjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRQaXhlbEhh
c2gpOwogCkBAIC00MjMsNiArNDI2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYXJlTGVnYWN5
V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzSWdub3JlZDsKICAgICBib29sIG1fY3Vz
dG9tRnVsbFNjcmVlbkJlaGF2aW9yOwogICAgIGJvb2wgbV9oYXNQZW5kaW5nV2ViTm90aWZpY2F0
aW9uQ2xpY2s7CisgICAgYm9vbCBtX3Nob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcjsKIAog
ICAgIHN0ZDo6c3RyaW5nIG1fYXV0aGVudGljYXRpb25Vc2VybmFtZTsKICAgICBzdGQ6OnN0cmlu
ZyBtX2F1dGhlbnRpY2F0aW9uUGFzc3dvcmQ7IApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0ZyYW1lTG9hZERlbGVnYXRlLm1tCmluZGV4IDg4Y2M3YzkyMGMwZmRmZGIzMjE3Yzk2MTI1Zjdh
YmJmY2U1MGY0NTkuLjVkZjUwNzU3ODk5ZWEwMzM5N2YzMGU3NWRlNzQ0MDZhMTAxYWM4MWIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0KQEAgLTQz
MCw0ICs0MzAsOSBAQAogICAgICAgICBwcmludGYgKCJwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlm
aWNhdGlvblxuIik7CiB9CiAKKy0gKEJPT0wpd2ViVmlld1Nob3VsZFNlbmREb05vdFRyYWNrSFRU
UEhlYWRlcjooV2ViVmlldyopc2VuZGVyCit7CisgICAgcmV0dXJuIGdUZXN0UnVubmVyLT5zaG91
bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoKTsKK30KKwogQGVuZApkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwKaW5kZXggZjJhOGI4MWNlNzJiNDlhNjczODAyMjU0ZDM4MjhkNDYyNWM1YWNmNC4u
MmEzNTQ4YjdiNzQwZjc1OTZjOTE5YWY1YmY2ZDRkMmZhNDZiNTRkMCAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsCkBAIC0xNjUsNiArMTY1LDkgQEAgbW9kdWxlIFdUUiB7CiAgICAgICAgIHZv
aWQgZGVueVdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oaW4gRE9NU3RyaW5nIG9yaWdpbik7CiAg
ICAgICAgIHZvaWQgcmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKTsKICAgICAg
ICAgdm9pZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKGluIG9iamVjdCBub3RpZmljYXRp
b24pOworCisgICAgICAgIC8vIERvIE5vdCBUcmFjayBzdXBwb3J0CisgICAgICAgIHZvaWQgc2V0
U2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKGluIGJvb2xlYW4gZmxhZyk7CiAgICAgfTsK
IAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IDY3NDZhNzBhODc2MzQ3ZTFkMWFiODFh
MDM5NDQ1NjdmYTVmYzA2MDMuLmQ1ZmNlOTcxYzRkNTViZDc0MTA1ZjE4ZGNiZjc5NGNlMTQ2ZjEy
OTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAgLTMwNCw3ICszMDQsOCBAQCBJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKICAg
ICAgICAgZGlkRmluaXNoUHJvZ3Jlc3MsIC8vIGRpZEZpbmlzaFByb2dyZXNzCiAgICAgICAgIDAs
IC8vIHNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMCiAgICAgICAgIGRpZFJl
Y2VpdmVJbnRlbnRGb3JGcmFtZSwgLy8gZGlkUmVjZWl2ZUludGVudEZvckZyYW1lCi0gICAgICAg
IHJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lIC8vIHJlZ2lzdGVySW50ZW50U2VydmljZUZv
ckZyYW1lCisgICAgICAgIHJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lLCAvLyByZWdpc3Rl
ckludGVudFNlcnZpY2VGb3JGcmFtZQorICAgICAgICBzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBI
ZWFkZXIKICAgICB9OwogICAgIFdLQnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQobV9wYWdl
LCAmbG9hZGVyQ2xpZW50KTsKIApAQCAtNjIxLDYgKzYyMiwxMSBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZTo6cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBh
Z2UsIFdLQgogI2VuZGlmCiB9CiAKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlOjpzaG91bGRTZW5k
RG9Ob3RUcmFja0hUVFBIZWFkZXIoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxlUGFnZSo+
KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+c2hvdWxkU2VuZERvTm90VHJhY2tIVFRQ
SGVhZGVyKCk7Cit9CisKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGaW5pc2hEb2N1bWVu
dExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFt
ZSwgV0tUeXBlUmVmKiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICBzdGF0aWNfY2Fz
dDxJbmplY3RlZEJ1bmRsZVBhZ2UqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRp
ZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKGZyYW1lKTsKQEAgLTc3Niw2ICs3ODIsMTEgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEZpbmlzaFByb2dyZXNzKCkKICAgICBJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoInBvc3RQcm9ncmVzc0Zp
bmlzaGVkTm90aWZpY2F0aW9uXG4iKTsKIH0KIAorYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnNo
b3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcigpCit7CisgICAgcmV0dXJuIEluamVjdGVkQnVu
ZGxlOjpzaGFyZWQoKS50ZXN0UnVubmVyKCktPnNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRl
cigpOworfQorCiBlbnVtIEZyYW1lTmFtZVBvbGljeSB7IFNob3VsZE5vdEluY2x1ZGVGcmFtZU5h
bWUsIFNob3VsZEluY2x1ZGVGcmFtZU5hbWUgfTsKIAogc3RhdGljIHZvaWQgZHVtcEZyYW1lU2Ny
b2xsUG9zaXRpb24oV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgRnJhbWVOYW1lUG9saWN5IHNob3Vs
ZEluY2x1ZGVGcmFtZU5hbWUgPSBTaG91bGROb3RJbmNsdWRlRnJhbWVOYW1lKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlLmgKaW5kZXggM2FkMjAzZDEzYTE2YmQ0YzJlOGY1YjczNmViYzNlZDgzZjE1YmYzYy4u
MmRiY2ExYzU4ZDdlMDNhMzc1OTM2MDJmZDkxYTc1YzhkMzU1Yjk0YyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZS5oCkBAIC04MCw2ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxk
Q2FjaGVSZXNwb25zZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIHVpbnQ2NF90
IGlkZW50aWZpZXIsIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlSW50
ZW50Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCBXS0J1bmRsZUlu
dGVudFJlcXVlc3RSZWYsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgdm9p
ZCByZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxl
RnJhbWVSZWYsIFdLSW50ZW50U2VydmljZUluZm9SZWYsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQq
KTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoV0tCdW5k
bGVQYWdlUmVmLCBjb25zdCB2b2lkKik7CiAKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmVmKTsKQEAg
LTE2OCw2ICsxNjksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZHVtcEFsbEZyYW1lc1RleHQoKTsK
ICAgICB2b2lkIGR1bXBBbGxGcmFtZVNjcm9sbFBvc2l0aW9ucygpOwogCisgICAgYm9vbCBzaG91
bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoKTsKKwogICAgIFdLQnVuZGxlUGFnZVJlZiBtX3Bh
Z2U7CiAgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVTY3JpcHRXb3JsZFJlZj4gbV93b3JsZDsKICAg
ICBXS1JldGFpblB0cjxXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWY+IG1fcHJldmlvdXNU
ZXN0QmFja0ZvcndhcmRMaXN0SXRlbTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDJkNDc4YWI2OGU5ZDRjZTA1NmVi
ODYzMDAyZTM4OTdjMGNjMDk2NGEuLmJlM2RjOGI4YmM2N2JmYjYyY2NiMzcyYmQ2MDc5OGZlNzBh
MzI3NWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcApAQCAtOTAsNiArOTAsNyBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVy
KCkKICAgICAsIG1fY3VzdG9tRnVsbFNjcmVlbkJlaGF2aW9yKGZhbHNlKQogICAgICwgbV91c2Vy
U3R5bGVTaGVldEVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb24o
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiIikpKQorICAgICwgbV9zaG91
bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoZmFsc2UpCiB7CiAgICAgcGxhdGZvcm1Jbml0aWFs
aXplKCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oCmluZGV4IDA4MGU1MTllYWRiZDRhOGQyMGZjMWZmMWY4YmFlNjczNTYyMjRk
OTYuLjY1YWEwOTc0ZjFmM2EwNWZiODczZWIyOGQyYTAzY2FiMDczODFmYWYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC0y
MzUsNiArMjM1LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFnZVZpc2liaWxpdHkoSlNTdHJp
bmdSZWYgc3RhdGUpOwogICAgIHZvaWQgcmVzZXRQYWdlVmlzaWJpbGl0eSgpOwogCisgICAgYm9v
bCBzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoKSBjb25zdCB7IHJldHVybiBtX3Nob3Vs
ZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcjsgfQorICAgIHZvaWQgc2V0U2hvdWxkU2VuZERvTm90
VHJhY2tIVFRQSGVhZGVyKGJvb2wgZmxhZykgeyBtX3Nob3VsZFNlbmREb05vdFRyYWNrSFRUUEhl
YWRlciA9IGZsYWc7IH0KKwogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIHdhaXRU
b0R1bXBXYXRjaGRvZ1RpbWVySW50ZXJ2YWw7CiAKQEAgLTI3Niw2ICsyNzksOCBAQCBwcml2YXRl
OgogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb247
CiAKICAgICBQbGF0Zm9ybVRpbWVyUmVmIG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXI7CisKKyAg
ICBib29sIG1fc2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV1RSCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNTY5MzY5MDRkMzYzMmJmNzY5MWUxMDQ1ZDNlMjQxOGQ1ZjM1MzVl
MS4uNTkxZWQ0NDM2MTJkMzg4MjM1N2JjNDU1NjE3MzU3NTAxOTdmMTA0MiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDEyLTA5LTA3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIDxhdWRpbz4gYW5kIDx2aWRlbz4gc2hvdWxkIHNlbmQgRG8gTm90IFRyYWNrIHdo
ZW4gYXBwcm9wcmlhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk2MTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGEgbmV3IEhUVFAgdGVzdCBlbnN1cmluZyB0aGUgRE5UIGhlYWRlciBpcyBwYXNz
ZWQgY29ycmVjdGx5IGR1cmluZyB2aWRlbyB0ZXN0cy4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
bWVkaWEvcmVzb3VyY2VzL3ZpZGVvLWRvbm90dHJhY2stY2hlY2stZG9ub3R0cmFjay5waHA6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tZG9ub3R0cmFjay1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tZG9ub3R0cmFj
ay5odG1sOiBBZGRlZC4KKwogMjAxMi0wOS0wNyAgU2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGdv
b2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBEeW5hbWljYWxseSByZW1vdmluZyBwcmVz
ZXJ2ZS0zZCBmcm9tIGEgbGF5ZXIgaGFzIG5vIGVmZmVjdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9tZWRpYS9yZXNvdXJjZXMvdmlkZW8tZG9ub3R0cmFjay1jaGVjay1kb25v
dHRyYWNrLnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvcmVzb3VyY2VzL3ZpZGVv
LWRvbm90dHJhY2stY2hlY2stZG9ub3R0cmFjay5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjJjNzY5MTQxNmJh
MTFmYzY3ZjMyM2NkN2U0MWNlZmZlNjQ3ZDY5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvbWVkaWEvcmVzb3VyY2VzL3ZpZGVvLWRvbm90dHJhY2stY2hlY2stZG9u
b3R0cmFjay5waHAKQEAgLTAsMCArMSwxMyBAQAorPD9waHAKKyAgICAkZG50ID0gJF9TRVJWRVJb
IkhUVFBfRE5UIl07CisgICAgaWYgKCFpc3NldCgkZG50KSB8fCBzdHJpcG9zKCRkbnQsICIxIikg
PT09IGZhbHNlKQorICAgICAgICBkaWU7CisKKyAgICAkZmlsZU5hbWUgPSAkX0dFVFsibmFtZSJd
OworICAgICR0eXBlID0gJF9HRVRbInR5cGUiXTsKKworICAgICRfR0VUID0gYXJyYXkoKTsKKyAg
ICAkX0dFVFsnbmFtZSddID0gJGZpbGVOYW1lOworICAgICRfR0VUWyd0eXBlJ10gPSAkdHlwZTsK
KyAgICBAaW5jbHVkZSgiLi9zZXJ2ZS12aWRlby5waHAiKTsKKz8+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWRvbm90dHJhY2stZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS92aWRlby1kb25vdHRyYWNrLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NGQ5YmNiZWU4MjJhNDc1ZTM1MmZiOGQyOTU1MmYxOTI0ZjU4YjkxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS92aWRlby1kb25v
dHRyYWNrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK0VWRU5UKGNhbnBsYXkpCitFTkQg
T0YgVEVTVAorVGVzdHMgdGhhdCB0aGUgbWVkaWEgcGxheWVyIHdpbGwgc2VuZCB0aGUgcmVsZXZh
bnQgcmVmZXJlciB3aGVuIHJlcXVlc3RpbmcgdGhlIG1lZGlhIGZpbGUuCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdmlkZW8tZG9ub3R0cmFjay5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS92aWRlby1kb25vdHRyYWNrLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWZlZWI3ZWUyODY3NzA3NDFkNzEyODI0MmZkYjY4MjNjODUxZTBiZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdmlkZW8tZG9ub3R0cmFjay5odG1s
CkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPS4uLy4uL21lZGlhLXJlc291cmNlcy92aWRlby10ZXN0LmpzPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0uLi8uLi9tZWRpYS1yZXNvdXJjZXMvbWVkaWEt
ZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGZ1bmN0aW9u
IHJ1blRlc3QgKCkgeworICAgICAgICAgICAgICAgIHZhciBtb3ZpZSA9IGZpbmRNZWRpYUZpbGUo
J3ZpZGVvJywgJ3Rlc3QnKTsKKyAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IG1pbWVUeXBlRm9y
RXh0ZW5zaW9uKG1vdmllLnNwbGl0KCcuJykucG9wKCkpOworICAgICAgICAgICAgICAgIHZhciBm
cmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgICAgICAgICAgICAg
IGZyYW1lLndpZHRoID0gMDsKKyAgICAgICAgICAgICAgICBmcmFtZS5oZWlnaHQgPSAwOworICAg
ICAgICAgICAgICAgIGZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudEFuZEZhaWwoJ2Vycm9yJyk7CisgICAg
ICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudEFuZEVuZCgnY2FucGxheScpOworCisgICAgICAg
ICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHdpbmRvdy50ZXN0UnVubmVyLnNldFNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcih0
cnVlKTsKKworICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnc291cmNlJyk7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5zcmMgPSAnaHR0cDov
LzEyNy4wLjAuMTo4MDAwL21lZGlhL3Jlc291cmNlcy92aWRlby1kb25vdHRyYWNrLWNoZWNrLWRv
bm90dHJhY2sucGhwP25hbWU9JyArIG1vdmllICsgJyZ0eXBlPScgKyB0eXBlOworICAgICAgICAg
ICAgICAgICAgICBzb3VyY2UudHlwZSA9IHR5cGU7CisKKyAgICAgICAgICAgICAgICAgICAgdmlk
ZW8ubG9hZCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgZnJhbWUu
c3JjID0gImRhdGE6dGV4dC9odG1sLDxiPnRlc3Q8L2I+IjsKKyAgICAgICAgICAgICAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICAg
ICAgPHZpZGVvIGlkPSJ2aWRlbyI+CisgICAgICAgICAgICA8c291cmNlIGlkPSJzb3VyY2UiPgor
ICAgICAgICA8L3ZpZGVvPgorICAgICAgICBUZXN0cyB0aGF0IHRoZSBtZWRpYSBwbGF5ZXIgd2ls
bCBzZW5kIHRoZSByZWxldmFudCByZWZlcmVyIHdoZW4gcmVxdWVzdGluZyB0aGUgbWVkaWEgZmls
ZS48YnIvPgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162889</attachid>
            <date>2012-09-07 15:49:15 -0700</date>
            <delta_ts>2012-09-08 05:34:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96134-20120907154854.patch</filename>
            <type>text/plain</type>
            <size>35524</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjM1ZTE3NjM0M2U3MDIw
NmY5NmZlYTQ4ZmExZDcyNGJjOGM3MTJlMy4uNWU2ZWM4OWU4ZDUwNDk1YzZlYmNkODkwNWZjNmE1
N2FlYWFhNmI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTA3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIDxhdWRpbz4gYW5kIDx2aWRl
bz4gc2hvdWxkIHNlbmQgRG8gTm90IFRyYWNrIHdoZW4gYXBwcm9wcmlhdGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MTM0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgRnJhbWVMb2FkZXJDbGll
bnQgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIEROVCBoZWFkZXIgc2hvdWxkIGJl
IHNlbnQsCisgICAgICAgIGFuZCBwbHVtYiB0aGF0IG5ldyBmdW5jdGlvbiBkb3duIGludG8gdGhl
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMgY2xhc3MuCisKKyAgICAgICAgVGVz
dDogaHR0cC90ZXN0cy9tZWRpYS92aWRlby1kb25vdHRyYWNrLmh0bWwKKworICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllclNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcik6CisgICAgICAg
ICAgICBQYXNzIHRoZSBxdWVzdGlvbiBvbiB0aHJvdWdoIHRvIHRoZSBGcmFtZUxvYWRlckNsaWVu
dC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
OjpzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIpOgorICAgICAgICAgICAgQ2FsbCB0aHJv
dWdoIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBXZWJLaXQgb3IgV2ViS2l0Mi4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyU2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVy
KToKKyAgICAgICAgICAgIFBhc3MgdGhlIHF1ZXN0aW9uIG9uIHRvIHRoZSBIVE1MTWVkaWFFbGVt
ZW50LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKToKKyAg
ICAgICAgICAgIElmIHdlIHNob3VsZCBzZW5kIHRoZSBETlQgaGVhZGVyLCBhZGQgaXQgdG8gdGhl
IGhlYWRlciBvcHRpb25zIGFycmF5CisgICAgICAgICAgICB3aGVuIGNyZWF0aW5nIHRoZSBBVkFz
c2V0LgorCiAyMDEyLTA5LTA3ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBSZW5kZXJQYXNzIGlkcyBob2xkIGJvdGggZ2VuZXJh
dGluZyBsYXllciBpZCBhbmQgYW4gaW5kZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBlOGE1NzI3NzAz
ZDAyMzg2ODE3ODdlOGU4YzE1ZGQ3MzAwMTllZTQ1Li5mNzA4ODQ4YzlmYzJlZWNjZTk4MzcxNzRl
YjY3NDZlN2E2YTM1NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTIt
MDktMDcgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgPGF1ZGlv
PiBhbmQgPHZpZGVvPiBzaG91bGQgc2VuZCBEbyBOb3QgVHJhY2sgd2hlbiBhcHByb3ByaWF0ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYxMzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgdGhlIHNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlciBieSBwYXNzaW5nIHRoZSBy
ZXF1ZXN0CisgICAgICAgIG9uIHRvIHRoZSBXZWJGcmFtZUxvYWREZWxlZ2F0ZS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxv
YWRlckNsaWVudDo6c2hvdWxkU2VuZERvTm90VHJhY2tIZWFkZXIpOgorICAgICAgICAgICAgUGFz
cyB0aGUgcXVlc3Rpb24gb24gdG8gdGhlIFdlYkZyYW1lTG9hZERlbGVnYXRlLgorICAgICAgICAq
IFdlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaDoKKyAgICAgICAgKFdl
YkZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSk6CisgICAgICAgICAgICBBZGQg
YW4gZW50cnkgZm9yIHRoZSBkZWxlZ2F0ZSdzIHdlYlZpZXdTaG91bGRTZW5kRG9Ob3RUcmFja0hl
YWRlciBtZXRob2QuCisgICAgICAgICogV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9u
Q2FjaGluZy5tbToKKyAgICAgICAgKENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZVJldHVybmluZ0Jv
b2xlYW4pOiBBZGRlZCBhIDAtcGFyYW1ldGVyIG92ZXJsb2FkZWQgZnVuY3Rpb24uCisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jYWNoZUZyYW1lTG9h
ZERlbGVnYXRlSW1wbGVtZW50YXRpb25zXSk6IGluaXRpYWxpemUgdGhlIAorICAgICAgICAgICAg
Y2FjaGVkIHZhbHVlIGZvciBzaG91bGRTZW5kRG9Ob3RUcmFja0hlYWRlckZ1bmMuCisKIDIwMTIt
MDktMDcgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CiAK
ICAgICAgICAgU2ltcGxpZnkgaGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3Qg
QVBJcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDVlYTdmYTYxYTRlMThiYjY4MzZjOGIxY2FjMTAyNzYzMGM5ZGU4
OTAuLjcwZDE0ZGE5NmZhYzcxYTRlZThhNDdkZGU1OGU1NzgxNWFhNmE2OTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMCBAQAorMjAxMi0wOS0wNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICA8YXVkaW8+IGFuZCA8dmlkZW8+IHNob3VsZCBzZW5kIERvIE5vdCBU
cmFjayB3aGVuIGFwcHJvcHJpYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NjEzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgc2hvdWxkU2VuZERvTm90VHJhY2tIVFRQ
SGVhZGVyIGJ5IHBhc3NpbmcgdGhlIHJlcXVlc3QKKyAgICAgICAgb24gdG8gdGhlIFdlYkZyYW1l
TG9hZERlbGVnYXRlLgorCisgICAgICAgICogU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHA6IElu
Y3JlbWVudCB0aGUgaW50ZXJmYWNlU2l6ZXMgZm9yIAorICAgICAgICAgICAgV0tCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50IGJ5IHRoZSB2YWx1ZSBvZiB0aGUgbmV3IGZ1bmN0aW9ucy4KKyAgICAgICAg
KiBTaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmg6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmg6IEFkZCBhIG5ldyBBUEkgdG8gCisg
ICAgICAgICAgICBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQgYW5kIGJ1bXAgdGhlIHZlcnNpb24g
bnVtYmVyLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50OjpzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIpOgorICAgICAg
ICAgICAgUGFzcyB0aGUgcXVlc3Rpb24gb24gdG8gdGhlIGNsaWVudC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkU2VuZERv
Tm90VHJhY2tIVFRQSGVhZGVyKToKKyAgICAgICAgICAgIFBhc3MgdGhlIHF1ZXN0aW9uIG9uIHRv
IHRoZSBidW5kbGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvcXQvUXRCdWlsdGluQnVuZGxl
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0QnVpbHRpbkJ1bmRsZVBhZ2U6OlF0QnVpbHRp
bkJ1bmRsZVBhZ2UpOgorICAgICAgICAgICAgQWRkIGFuIGVudHJ5IGZvciB0aGUgbmV3IGZ1bmN0
aW9uIGluIHRoZSBRdCBsb2FkZXIgY2xpZW50LgorCiAyMDEyLTA5LTA3ICBBbGxhbiBTYW5kZmVs
ZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgogCiAgICAgICAgIFNpbXBsaWZ5IGhp
dFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGNkMDBmNDFkOThlODNmZGYxMDE4MTJiOTUw
YzI1NzNjMTJiZGEwMzMuLjdhOGQwM2RjMmE2ZmVkNzMxMGJkZjMwN2E4ODU3MGIzOTA3YThiZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDQ3OSw2ICs0
NDc5LDE5IEBAIEludFJlY3QgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJXaW5kb3dDbGlw
UmVjdCgpCiAgICAgcmV0dXJuIG1lZGlhUGxheWVyT3duaW5nRG9jdW1lbnQoKS0+dmlldygpLT53
aW5kb3dDbGlwUmVjdCgpOwogfQogCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
U2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKCkgY29uc3QKK3sKKyAgICBGcmFtZSogZnJh
bWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIEZyYW1lTG9hZGVyQ2xpZW50KiBjbGllbnQgPSBmcmFtZS0+bG9hZGVy
KCktPmNsaWVudCgpOworICAgIGlmICghY2xpZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gY2xpZW50LT5zaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoKTsKK30K
Kwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVCZWhhdmlvcnNSZXN0cmljdGlvbnNBZnRl
ckZpcnN0VXNlckdlc3R1cmUoKQogewogICAgIG1fcmVzdHJpY3Rpb25zID0gTm9SZXN0cmljdGlv
bnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDFmMzBiMjk2ZTY0
NzJmYzUzYjk1M2Y0MjliNDZlMjExMDZmOTE1OTIuLjk1YmRhZjM1NTRkYjcyMmY1YzA3MWUyYzRl
ODM4MGUyYjU1YjlhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBA
IC00MzMsNiArNDMzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJJ
c1BhdXNlZCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgSG9zdFdpbmRvdyogbWVkaWFQ
bGF5ZXJIb3N0V2luZG93KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnRSZWN0IG1lZGlhUGxh
eWVyV2luZG93Q2xpcFJlY3QoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5
ZXJTaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoKSBjb25zdCBPVkVSUklERTsKIAogI2lm
IFBMQVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElPTikKICAgICB2aXJ0dWFsIEdyYXBoaWNz
RGV2aWNlQWRhcHRlciogbWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29uc3QgTWVk
aWFQbGF5ZXIqKSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgKaW5kZXggYmU4MTAyODdhNzBkNTVlOGU2NTZiZmYzZDY0MGFhZmE1MzNiMTA2
YS4uYzFiMmY3ZGE0MDRlNjRmMDdjZGJhMTQxMDhhNTczNDg1NzJjMjFlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTM0Myw2ICszNDMsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxEaXNjb25u
ZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdChET01XaW5kb3dFeHRlbnNpb24q
KSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjb25uZWN0RE9NV2luZG93
RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QoRE9NV2luZG93RXh0ZW5zaW9uKikgeyB9CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93
RXh0ZW5zaW9uKERPTVdpbmRvd0V4dGVuc2lvbiopIHsgfQorCisgICAgICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDlhMmM2Yjc4NmJiZGIwM2FlNzk4
YzIwZDUxOThjMTZhMjIwMzY1ZmQuLjU4ZThkYTg5M2M4MjQ5ZWZkNGMxN2IzYzVlZjQ5ZDc0YTY3
YzhkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaApAQCAtMjAyLDYgKzIwMiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQ
bGF5ZXJJc1BhdXNlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIEhvc3RX
aW5kb3cqIG1lZGlhUGxheWVySG9zdFdpbmRvdygpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFs
IEludFJlY3QgbWVkaWFQbGF5ZXJXaW5kb3dDbGlwUmVjdCgpIHsgcmV0dXJuIEludFJlY3QoKTsg
fQorCisgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyU2hvdWxkU2VuZERvTm90VHJhY2tIVFRQ
SGVhZGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKIGNsYXNzIE1lZGlhUGxheWVy
U3VwcG9ydHNUeXBlQ2xpZW50IHsKQEAgLTQxOSw2ICs0MjEsOCBAQCBwdWJsaWM6CiAKICAgICBT
dHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdDsKIAorICAgIGJvb2wgc2hvdWxkU2VuZERv
Tm90VHJhY2tIVFRQSGVhZGVyKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5ZXIo
TWVkaWFQbGF5ZXJDbGllbnQqKTsKICAgICB2b2lkIGxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKE1l
ZGlhUGxheWVyRmFjdG9yeSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggY2Y3NWQwY2Y2
Y2ZkNzYwOGFkNzFkNjc3ZjQ2ZjFlNzY5ODc4YTM2Ni4uOTEzY2EyYjUxY2I5OTk1YzQyYjdkZGVi
YzEyNDVjZDk5NjU1MDE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yOTcsNiArMjk3
LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFz
c2V0Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIGlmICghdXNlckFnZW50LmlzRW1wdHko
KSkKICAgICAgICAgW2hlYWRlckZpZWxkcy5nZXQoKSBzZXRPYmplY3Q6dXNlckFnZW50IGZvcktl
eTpAIlVzZXItQWdlbnQiXTsKIAorICAgIGlmIChwbGF5ZXIoKS0+bWVkaWFQbGF5ZXJDbGllbnQo
KS0+bWVkaWFQbGF5ZXJTaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoKSkKKyAgICAgICAg
W2hlYWRlckZpZWxkcy5nZXQoKSBzZXRPYmplY3Q6QCIxIiBmb3JLZXk6QCJETlQiXTsKKwogICAg
IGlmIChbaGVhZGVyRmllbGRzLmdldCgpIGNvdW50XSkKICAgICAgICAgW29wdGlvbnMuZ2V0KCkg
c2V0T2JqZWN0OmhlYWRlckZpZWxkcy5nZXQoKSBmb3JLZXk6QCJBVlVSTEFzc2V0SFRUUEhlYWRl
ckZpZWxkc0tleSJdOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAzYzFhNDA1OTBmNWU4YzZk
MmViNjdlOTAxMGM1MzcxN2QyMTQwNTQ3Li5mMjJhNjlhYzk5NzZjZWRmOGZlNDkzNWRjMWE5ZDY2
ZDI0MWM2MGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTIyNyw2ICsyMjcsOCBAQCBwcml2YXRlOgog
I2lmIFBMQVRGT1JNKE1BQykKICAgICB2aXJ0dWFsIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2li
aWxpdHlSZW1vdGVPYmplY3QoKSBPVkVSUklERSB7IHJldHVybiAwOyB9CiAjZW5kaWYKKworICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoKSBjb25zdCBPVkVS
UklERTsKICAgICAKICAgICBSZXRhaW5QdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcj4gc2V0VXBQ
b2xpY3lMaXN0ZW5lcihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQppbmRleCA1YjY4YTFmNWZmZTZjODkzZTk5MzJmN2I5ZjQ4NjZjMWE2MDBmYmJjLi4zNDIy
NGMyY2M2YjNkMDg2NWIxYWNjODcyZjk3MjZkMGRiZTA5NzA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpA
QCAtMTk4MCw2ICsxOTgwLDE2IEBAIGpvYmplY3QgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmphdmFB
cHBsZXQoTlNWaWV3KiB2aWV3KQogfQogI2VuZGlmCiAKK2Jvb2wgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcigpIGNvbnN0Cit7CisgICAgV2ViVmll
dyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CisgICAgV2ViRnJhbWVM
b2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3
R2V0RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CisKKyAgICBpZiAo
aW1wbGVtZW50YXRpb25zLT5zaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXJGdW5jKQorICAg
ICAgICByZXR1cm4gQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihZRVMs
IGltcGxlbWVudGF0aW9ucy0+c2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyRnVuYywgd2Vi
VmlldywgQHNlbGVjdG9yKHdlYlZpZXdTaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXI6KSk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBAaW1wbGVtZW50YXRpb24gV2ViRnJhbWVQb2xpY3lM
aXN0ZW5lcgogKyAodm9pZClpbml0aWFsaXplCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmggYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgKaW5k
ZXggNjU2OGNjOTZiMDFiNzlkYmZjNjJjNTlmOGU3ZDM4M2U0YTQ1ZDdjOC4uMDcyZThmZTk0ZjNj
MTc4Mjg3MTE2YTg4NTk1MTdkMGRiNmJjNDJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaApA
QCAtNzgsNiArNzgsNyBAQCBzdHJ1Y3QgV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlv
bkNhY2hlIHsKICAgICBJTVAgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZ1bmM7CiAgICAgSU1Q
IGRpZFJ1bkluc2VjdXJlQ29udGVudEZ1bmM7CiAgICAgSU1QIGRpZERldGVjdFhTU0Z1bmM7Cisg
ICAgSU1QIHNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlckZ1bmM7CiB9OwogCiBzdHJ1Y3Qg
V2ViU2NyaXB0RGVidWdEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUgewpAQCAtMTM1LDYgKzEz
Niw3IEBAIGlkIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZShJTVAsIFdlYlZpZXcgKiwgU0VMLCBp
ZCwgaWQsIGlkLCBpZCk7CiBpZCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGUoSU1QLCBXZWJWaWV3
ICosIFNFTCwgaWQsIE5TSW50ZWdlciwgaWQpOwogaWQgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRl
KElNUCwgV2ViVmlldyAqLCBTRUwsIGlkLCBpZCwgTlNJbnRlZ2VyLCBpZCk7CiAKK0JPT0wgQ2Fs
bFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MLCBJTVAsIFdlYlZpZXcg
KiwgU0VMKTsKIEJPT0wgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihC
T09MLCBJTVAsIFdlYlZpZXcgKiwgU0VMLCBpZCk7CiBCT09MIENhbGxSZXNvdXJjZUxvYWREZWxl
Z2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9PTCwgSU1QLCBXZWJWaWV3ICosIFNFTCwgaWQsIGlkKTsK
IEJPT0wgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MLCBJTVAs
IFdlYlZpZXcgKiwgU0VMLCBpZCwgaWQsIGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLm1tCmlu
ZGV4IDg0NzBmNWYyYmM1M2Q4NmMzN2Y1YWFhMzhjZWY2NDY5NDQ4N2E0YmMuLjA3MWIyODA4ZmZh
ZDJjMGM0YWJhOTFjN2U5MThjMjk2MDhkNTMxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5t
bQpAQCAtNTAwLDYgKzUwMCwxNiBAQCBpZCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGUoSU1QIGlt
cGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkCiAgICAgcmV0dXJu
IENhbGxEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZhdGUtPnJlc291
cmNlUHJvZ3Jlc3NEZWxlZ2F0ZSwgc2VsZWN0b3IsIG9iamVjdDEsIG9iamVjdDIsIGludGVnZXIs
IG9iamVjdDMpOwogfQogCitCT09MIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZVJldHVybmluZ0Jv
b2xlYW4oQk9PTCByZXN1bHQsIElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgU0VM
IHNlbGVjdG9yKQoreworICAgIEB0cnkgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxCT09MICgqKShpZCwgU0VMLCBXZWJWaWV3ICopPihvYmpjX21zZ1NlbmQpKHNlbGYtPl9wcml2
YXRlLT5yZXNvdXJjZVByb2dyZXNzRGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmKTsKKyAgICB9IEBj
YXRjaChpZCBleGNlcHRpb24pIHsKKyAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNl
cHRpb24oc2VsZWN0b3IsIGV4Y2VwdGlvbik7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9
CisKIEJPT0wgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MIHJl
c3VsdCwgSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlk
IG9iamVjdDEpCiB7CiAgICAgQHRyeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
aW5kZXggN2I4NDEyY2ZlOWU5YjZiYjhhZjNiMzUzNWMxNGUxNDBhZTYwNTQwYy4uNGZkOTUwOWRj
ODI3NmE5YWJlZWM1Y2NkYWI0OWQwZGFlNWY1MDQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQpAQCAtMTYyOSw2ICsxNjI5LDcgQEAgc3RhdGljIGlubGluZSBJTVAgZ2V0TWV0
aG9kKGlkIG8sIFNFTCBzKQogICAgIGNhY2hlLT5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50RnVu
YyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXdEaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50OikpOwogICAgIGNhY2hlLT5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGdW5jID0gZ2V0
TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSdW5JbnNlY3VyZUNvbnRlbnQ6
KSk7CiAgICAgY2FjaGUtPmRpZERldGVjdFhTU0Z1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBz
ZWxlY3Rvcih3ZWJWaWV3OmRpZERldGVjdFhTUzopKTsKKyAgICBjYWNoZS0+c2hvdWxkU2VuZERv
Tm90VHJhY2tIVFRQSGVhZGVyRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdl
YlZpZXdTaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXI6KSk7CiB9CiAKIC0gKHZvaWQpX2Nh
Y2hlU2NyaXB0RGVidWdEZWxlZ2F0ZUltcGxlbWVudGF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSUNsaWVudFRyYWl0cy5oCmluZGV4IDczNTJiNTY2N2FkMmM0OWY0MTQ5NjJjYjU1YjA4Mjlj
NTNjODhlYzYuLjQ4MWY5NWYzN2JhMjYzZDQ1ZTk3MTNlOTk2MGU3OGE0NzlkMGNiNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmgKQEAgLTQzLDcgKzQzLDcgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlQ2xpZW50PiB7CiB9OwogCiB0
ZW1wbGF0ZTw+IHN0cnVjdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
PiB7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbnRlcmZhY2VTaXplc0J5VmVyc2lvbls0XTsK
KyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGludGVyZmFjZVNpemVzQnlWZXJzaW9uWzVdOwogfTsK
IAogdGVtcGxhdGU8PiBzdHJ1Y3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZVJlc291cmNl
TG9hZENsaWVudD4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKaW5kZXggOGJjNzY3MGNmNTkz
MTJiY2UwNTk1YTIxMGYxNjY0MWY3NTJjOWYzYi4uMjVkOTZjZWFlODcwNGQ3MzZjOGM5Mjk3ZTcw
NzAyYjgwNmY1MGQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCkBAIC0xMTEsNiArMTEx
LDcgQEAgdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RG
b3JET01XaW5kb3dFeHRlbnNpb25DYWxsYmFjaykKIHR5cGVkZWYgYm9vbCAoKldLQnVuZGxlUGFn
ZVNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMQ2FsbGJhY2spKFdLQnVuZGxl
UGFnZVJlZiwgV0tTdHJpbmdSZWYgdXJsLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVk
ZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZUNhbGxiYWNrKShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0UmVmIGludGVudFJlcXVlc3QsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlUmVnaXN0ZXJJbnRl
bnRTZXJ2aWNlRm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxl
RnJhbWVSZWYgZnJhbWUsIFdLSW50ZW50U2VydmljZUluZm9SZWYgc2VydmljZUluZm8sIFdLVHlw
ZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiBib29sICgq
V0tCdW5kbGVQYWdlU2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyQ2FsbGJhY2spKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogc3RydWN0IFdLQnVu
ZGxlUGFnZUxvYWRlckNsaWVudCB7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKQEAgLTE1
MywxMCArMTU0LDEzIEBAIHN0cnVjdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQgewogICAgIC8v
IFZlcnNpb24gMwogICAgIFdLQnVuZGxlUGFnZURpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZTsK
ICAgICBXS0J1bmRsZVBhZ2VSZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZUNhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICByZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZTsKKworICAg
IC8vIFZlcnNpb24gNAorICAgIFdLQnVuZGxlUGFnZVNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhl
YWRlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgIHNob3VsZFNlbmREb05vdFRyYWNrSFRU
UEhlYWRlcjsKIH07CiB0eXBlZGVmIHN0cnVjdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQgV0tC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50OwogCi1lbnVtIHsga1dLQnVuZGxlUGFnZUxvYWRlckNsaWVu
dEN1cnJlbnRWZXJzaW9uID0gMyB9OworZW51bSB7IGtXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRD
dXJyZW50VmVyc2lvbiA9IDQgfTsKIAogZW51bSB7CiAgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0
aW9uUGFzc1Rocm91Z2gsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5jcHAKaW5kZXggYTZhMDYxMjNmNjY4NWE2YzM0MWFjMTgxZWRjYTY2MWUwZTNjOWFi
Ni4uODVhMWFkZTc5MGJlZWFlNzY1ZmNkYmRjMGUyZTA1OTI0YTA0MWNkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAtMzM1LDQgKzMz
NSwxMiBAQCBib29sIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6c2hvdWxkRm9yY2VV
bml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwoV2ViUAogICAgIHJldHVybiBtX2NsaWVudC5zaG91
bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTCh0b0FQSShwYWdlKSwgdG9BUEkodXJs
LmltcGwoKSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCitib29sIEluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudDo6c2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKFdlYlBhZ2Uq
IHBhZ2UpCit7CisgICAgaWYgKCFtX2NsaWVudC5zaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFk
ZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2NsaWVudC5zaG91bGRT
ZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIodG9BUEkocGFnZSksIG1fY2xpZW50LmNsaWVudEluZm8p
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5oCmluZGV4IDgxZDliZTQ0ZDRlODA4NGU2N2UyMmU0YmIxOTNh
ZmI0NjYzNzYxNzAuLmNkZjhiODgzNTExMmMyZmViNDNhMTg4MjQxZDUyY2NiMWNkYTFmOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtOTQs
NiArOTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRP
TVdpbmRvd0V4dGVuc2lvbihXZWJQYWdlKiwgV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKik7
CiAKICAgICBib29sIHNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKFdlYlBh
Z2UqLCBjb25zdCBTdHJpbmcmIHVybCk7CisgICAgYm9vbCBzaG91bGRTZW5kRG9Ob3RUcmFja0hU
VFBIZWFkZXIoV2ViUGFnZSopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDZhODAxOTMwNjFmNTkwMjIyMmMwMDZmMDhh
MWQ0MDYxZWRhMzQzN2EuLjQxNzQyNjZhMzM0NDA1NTg4YjhjMzk3NjQ5YmJjMjA3MDU3ZjNmYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNjIyLDYgKzE2MjIsMTUg
QEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NG
cm9tTG9jYWxVUkwoY29uc3QgV2ViQ29yZToKICAgICByZXR1cm4gd2ViUGFnZS0+aW5qZWN0ZWRC
dW5kbGVMb2FkZXJDbGllbnQoKS5zaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVS
TCh3ZWJQYWdlLCB1cmwuc3RyaW5nKCkpOwogfQogCitib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoKSBjb25zdAoreworICAgIFdlYlBhZ2Uq
IHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJD
bGllbnQoKS5zaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIod2ViUGFnZSk7Cit9CisKIFBh
c3NSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNy
ZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCkKIHsKICAgICBSZWZQdHI8V2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dD4gY29udGV4dCA9IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShtX2Zy
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAyMDdlNDQyNjZkNDdjYWUx
YmJlODczNDYzNDg2NTMyMmUwMTQ2Nzk4Li4xMWM5YjNhYTk2ZGEzMzFiMzJhNGY5MjkxOWRhOTk1
ZTY2MTcwYTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yNDEsNiArMjQx
LDggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGb3JjZVVuaXZlcnNhbEFj
Y2Vzc0Zyb21Mb2NhbFVSTChjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CiAKKyAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKCkgY29uc3QgT1ZFUlJJ
REU7CisKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29u
dGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKSBPVkVSUklERTsKIAogICAgIFdlYkZyYW1l
KiBtX2ZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9RdEJ1
aWx0aW5CdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvUXRCdWls
dGluQnVuZGxlUGFnZS5jcHAKaW5kZXggZDVjNjBmY2MwZTZiNTY1ZjM2MjlkNjdiZDEzYzMyZDU3
MWZhNWY0NS4uYTE0M2ViN2ZiZjhiYzMxY2JkN2YzNzI4ZjBjZTdlODI0OWRlNjIzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9RdEJ1aWx0aW5CdW5kbGVQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0L1F0QnVpbHRpbkJ1bmRsZVBhZ2Uu
Y3BwCkBAIC03OCw2ICs3OCw3IEBAIFF0QnVpbHRpbkJ1bmRsZVBhZ2U6OlF0QnVpbHRpbkJ1bmRs
ZVBhZ2UoUXRCdWlsdGluQnVuZGxlKiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlCiAgICAgICAgIDAs
IC8vIHNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMCiAgICAgICAgIDAsIC8v
IGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZQogICAgICAgICAwLCAvLyByZWdpc3RlckludGVudFNl
cnZpY2VGb3JGcmFtZQorICAgICAgICAwLCAvLyBzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFk
ZXIKICAgICB9OwogICAgIFdLQnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQobV9wYWdlLCAm
bG9hZGVyQ2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCBjNTE1OTYxNmY5ZGZiMTIyNTY0NmNkM2QwMDllMWVjZDk2MDhjOTkwLi41
ZTc1MjdmOTllZTdiMWVmY2NiMDk0NWUxNmI0YjIzOGU5MWNjY2M2IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTIt
MDktMDcgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgPGF1ZGlv
PiBhbmQgPHZpZGVvPiBzaG91bGQgc2VuZCBEbyBOb3QgVHJhY2sgd2hlbiBhcHByb3ByaWF0ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYxMzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0
UnVubmVyIEpTIEFQSSBmb3IgY2FsbGluZyBzZXRTaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFk
ZXIgdG8gRFJUIGFuZCAKKyAgICAgICAgV1RSLiBBZGQgRnJhbWVMb2FkZXJDbGllbnQgY2xpZW50
IG1ldGhvZHMgZm9yIHJldHJpZXZpbmcgdGhhdCB2YWx1ZS4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoc2V0U2hvdWxkU2VuZERvTm90VHJhY2tI
VFRQSGVhZGVyQ2FsbGJhY2spOiBQYXNzIHRocm91Z2ggdG8gdGhlIFRlc3RSdW5uZXIuCisgICAg
ICAgIChUZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMpOiBBZGQgdGhlIHNldFNob3VsZFNlbmRE
b05vdFRyYWNrSFRUUEhlYWRlciBmdW5jdGlvbi4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmg6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRTaG91bGRTZW5kRG9Ob3RUcmFj
a0hUVFBIZWFkZXIpOiBTaW1wbGUgc2V0dGVyLgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2hvdWxk
U2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKTogU2ltcGxlIGdldHRlci4KKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW06CisgICAgICAgICgtW0ZyYW1lTG9h
ZERlbGVnYXRlIHdlYlZpZXdTaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXI6XSk6IAorICAg
ICAgICAgICAgUGFzcyB0aGUgcXVlc3Rpb24gb24gdG8gdGhlIFRlc3RSdW5uZXIuCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0ZWRC
dW5kbGVQYWdlKToKKyAgICAgICAgICAgIEFkZCB0aGUgc2V0U2hvdWxkU2VuZERvTm90VHJhY2tI
VFRQSGVhZGVyIGNsaWVudCBmdW5jdGlvbi4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQ
YWdlOjpzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIpOgorICAgICAgICAgICAgUGFzcyB0
aGUgcXVlc3Rpb24gb24gdG8gdGhlIFRlc3RSdW5uZXIuCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjpzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIpOiBTaW1wbGUgZ2V0
dGVyLgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRTaG91bGRTZW5kRG9Ob3RUcmFja0hU
VFBIZWFkZXIpOiBTaW1wbGUgU2V0dGVyLgorCiAyMDEyLTA5LTA3ICBUb21teSBXaWRlbmZseWNo
dCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogYWRkIFJU
Q1BlZXJDb25uZWN0aW9uOjpjcmVhdGVBbnN3ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5j
cHAKaW5kZXggMWQwMGM1MGEzNWEzN2VjMGZhZGMxOGFkODRlMzBkYjcxOGM4YTBkNC4uOGRhNmFl
Yjg1YTQ5MTVjNGY5NjI3MzFlMDlkZTk5ZmQ0YTE3ZTk2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVz
dFJ1bm5lci5jcHAKQEAgLTkzLDggKzkzLDkgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcihjb25z
dCBzdGQ6OnN0cmluZyYgdGVzdFBhdGhPclVSTCwgY29uc3Qgc3RkOjpzdHJpbmcmIGV4cGUKICAg
ICAsIG1fc2hvdWxkUGFpbnRCcm9rZW5JbWFnZSh0cnVlKQogICAgICwgbV9zaG91bGRTdGF5T25Q
YWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZChmYWxzZSkKICAgICAsIG1fYXJlTGVnYWN5V2Vi
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzSWdub3JlZChmYWxzZSkKLSAgICAsIG1fY3Vz
dG9tRnVsbFNjcmVlbkJlaGF2aW9yKGZhbHNlKSAKKyAgICAsIG1fY3VzdG9tRnVsbFNjcmVlbkJl
aGF2aW9yKGZhbHNlKQogICAgICwgbV9oYXNQZW5kaW5nV2ViTm90aWZpY2F0aW9uQ2xpY2soZmFs
c2UpCisgICAgLCBtX3Nob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcihmYWxzZSkKICAgICAs
IG1fdGVzdFBhdGhPclVSTCh0ZXN0UGF0aE9yVVJMKQogICAgICwgbV9leHBlY3RlZFBpeGVsSGFz
aChleHBlY3RlZFBpeGVsSGFzaCkKICAgICAsIG1fdGl0bGVUZXh0RGlyZWN0aW9uKCJsdHIiKQpA
QCAtNzE1LDYgKzcxNiwxNiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBub3RpZnlEb25lQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLAogICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2V0
U2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3Qg
YXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgVGVzdFJ1bm5lciogY29udHJv
bGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09i
amVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldFNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRl
cihKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1swXSkpOworICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgbnVt
YmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHNDYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0
YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwpA
QCAtMjMyNyw2ICsyMzM4LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogVGVzdFJ1bm5lcjo6c3RhdGlj
RnVuY3Rpb25zKCkKICAgICAgICAgeyAiZGVueVdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24iLCBk
ZW55V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
InJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zIiwgcmVtb3ZlQWxsV2ViTm90aWZp
Y2F0aW9uUGVybWlzc2lvbnNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzaW11bGF0ZVdl
Yk5vdGlmaWNhdGlvbkNsaWNrIiwgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0NhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCisgICAgICAgIHsgInNldFNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlciIs
IHNldFNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgMCwgMCwgMCB9CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCmluZGV4
IDliY2M5NWJjOTJkMzI5NjFlNTFjNGEzMzc5YjM3ODM5NDIyN2YyNTkuLjRjNGEyNzYyYzFiNjdh
ODZmZGRmZmEwM2U4MDMzOTgzMGVmOTNkY2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgK
QEAgLTM2Nyw2ICszNjcsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1BlbmRpbmdXZWJOb3Rp
ZmljYXRpb25DbGljaygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUGVuZGluZ1dlYk5vdGlmaWNhdGlv
bkNsaWNrOyB9CiAKKyAgICB2b2lkIHNldFNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcihi
b29sIHZhbHVlKSB7IG1fc2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyID0gdmFsdWU7IH0K
KyAgICBib29sIHNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcigpIGNvbnN0IHsgcmV0dXJu
IG1fc2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyOyB9CisKIHByaXZhdGU6CiAgICAgVGVz
dFJ1bm5lcihjb25zdCBzdGQ6OnN0cmluZyYgdGVzdFBhdGhPclVSTCwgY29uc3Qgc3RkOjpzdHJp
bmcmIGV4cGVjdGVkUGl4ZWxIYXNoKTsKIApAQCAtNDIzLDYgKzQyNiw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2FyZUxlZ2FjeVdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0c0lnbm9y
ZWQ7CiAgICAgYm9vbCBtX2N1c3RvbUZ1bGxTY3JlZW5CZWhhdmlvcjsKICAgICBib29sIG1faGFz
UGVuZGluZ1dlYk5vdGlmaWNhdGlvbkNsaWNrOworICAgIGJvb2wgbV9zaG91bGRTZW5kRG9Ob3RU
cmFja0hUVFBIZWFkZXI7CiAKICAgICBzdGQ6OnN0cmluZyBtX2F1dGhlbnRpY2F0aW9uVXNlcm5h
bWU7CiAgICAgc3RkOjpzdHJpbmcgbV9hdXRoZW50aWNhdGlvblBhc3N3b3JkOyAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQppbmRleCA4OGNjN2M5MjBj
MGZkZmRiMzIxN2M5NjEyNWY3YWJiZmNlNTBmNDU5Li41ZGY1MDc1Nzg5OWVhMDMzOTdmMzBlNzVk
ZTc0NDA2YTEwMWFjODFiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJh
bWVMb2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9h
ZERlbGVnYXRlLm1tCkBAIC00MzAsNCArNDMwLDkgQEAKICAgICAgICAgcHJpbnRmICgicG9zdFBy
b2dyZXNzRmluaXNoZWROb3RpZmljYXRpb25cbiIpOwogfQogCistIChCT09MKXdlYlZpZXdTaG91
bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXI6KFdlYlZpZXcqKXNlbmRlcgoreworICAgIHJldHVy
biBnVGVzdFJ1bm5lci0+c2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKCk7Cit9CisKIEBl
bmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IGYyYThiODFjZTcyYjQ5YTY3MzgwMjI1
NGQzODI4ZDQ2MjVjNWFjZjQuLjJhMzU0OGI3Yjc0MGY3NTk2YzkxOWFmNWJmNmQ0ZDJmYTQ2YjU0
ZDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMTY1LDYgKzE2NSw5IEBAIG1vZHVs
ZSBXVFIgewogICAgICAgICB2b2lkIGRlbnlXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKGluIERP
TVN0cmluZyBvcmlnaW4pOwogICAgICAgICB2b2lkIHJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBl
cm1pc3Npb25zKCk7CiAgICAgICAgIHZvaWQgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhp
biBvYmplY3Qgbm90aWZpY2F0aW9uKTsKKworICAgICAgICAvLyBEbyBOb3QgVHJhY2sgc3VwcG9y
dAorICAgICAgICB2b2lkIHNldFNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcihpbiBib29s
ZWFuIGZsYWcpOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCA2NzQ2
YTcwYTg3NjM0N2UxZDFhYjgxYTAzOTQ0NTY3ZmE1ZmMwNjAzLi5kNWZjZTk3MWM0ZDU1YmQ3NDEw
NWYxOGRjYmY3OTRjZTE0NmYxMjkxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC0zMDQs
NyArMzA0LDggQEAgSW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UoV0tCdW5k
bGVQYWdlUmVmIHBhZ2UpCiAgICAgICAgIGRpZEZpbmlzaFByb2dyZXNzLCAvLyBkaWRGaW5pc2hQ
cm9ncmVzcwogICAgICAgICAwLCAvLyBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2Nh
bFVSTAogICAgICAgICBkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUsIC8vIGRpZFJlY2VpdmVJbnRl
bnRGb3JGcmFtZQotICAgICAgICByZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZSAvLyByZWdp
c3RlckludGVudFNlcnZpY2VGb3JGcmFtZQorICAgICAgICByZWdpc3RlckludGVudFNlcnZpY2VG
b3JGcmFtZSwgLy8gcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUKKyAgICAgICAgc2hvdWxk
U2VuZERvTm90VHJhY2tIVFRQSGVhZGVyCiAgICAgfTsKICAgICBXS0J1bmRsZVBhZ2VTZXRQYWdl
TG9hZGVyQ2xpZW50KG1fcGFnZSwgJmxvYWRlckNsaWVudCk7CiAKQEAgLTYyMSw2ICs2MjIsMTEg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1l
KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0IKICNlbmRpZgogfQogCitib29sIEluamVjdGVkQnVu
ZGxlUGFnZTo6c2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxJ
bmplY3RlZEJ1bmRsZVBhZ2UqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPnNob3Vs
ZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcigpOworfQorCiB2b2lkIEluamVjdGVkQnVuZGxlUGFn
ZTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
CiB7CiAgICAgc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQYWdlKj4oY29uc3RfY2FzdDx2b2lk
Kj4oY2xpZW50SW5mbykpLT5kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShmcmFtZSk7CkBA
IC03NzYsNiArNzgyLDExIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGaW5pc2hQcm9n
cmVzcygpCiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBw
ZW5kKCJwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvblxuIik7CiB9CiAKK2Jvb2wgSW5q
ZWN0ZWRCdW5kbGVQYWdlOjpzaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIoKQoreworICAg
IHJldHVybiBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkudGVzdFJ1bm5lcigpLT5zaG91bGRTZW5k
RG9Ob3RUcmFja0hUVFBIZWFkZXIoKTsKK30KKwogZW51bSBGcmFtZU5hbWVQb2xpY3kgeyBTaG91
bGROb3RJbmNsdWRlRnJhbWVOYW1lLCBTaG91bGRJbmNsdWRlRnJhbWVOYW1lIH07CiAKIHN0YXRp
YyB2b2lkIGR1bXBGcmFtZVNjcm9sbFBvc2l0aW9uKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIEZy
YW1lTmFtZVBvbGljeSBzaG91bGRJbmNsdWRlRnJhbWVOYW1lID0gU2hvdWxkTm90SW5jbHVkZUZy
YW1lTmFtZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCmluZGV4IDNhZDIwM2QxM2ExNmJkNGMyZThmNWI3
MzZlYmMzZWQ4M2YxNWJmM2MuLjJkYmNhMWM1OGQ3ZTAzYTM3NTkzNjAyZmQ5MWE3NWM4ZDM1NWI5
NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaApAQCAtODAsNiArODAsNyBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRs
ZUZyYW1lUmVmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCB2b2lkKik7CiAgICAgc3RhdGlj
IHZvaWQgZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVG
cmFtZVJlZiwgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmLCBXS1R5cGVSZWYqLCBjb25zdCB2b2lk
Kik7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUoV0tCdW5k
bGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCBXS0ludGVudFNlcnZpY2VJbmZvUmVmLCBXS1R5
cGVSZWYqLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkU2VuZERvTm90VHJh
Y2tIVFRQSGVhZGVyKFdLQnVuZGxlUGFnZVJlZiwgY29uc3Qgdm9pZCopOwogCiAgICAgdm9pZCBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tC
dW5kbGVGcmFtZVJlZik7CkBAIC0xNjgsNiArMTY5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGR1
bXBBbGxGcmFtZXNUZXh0KCk7CiAgICAgdm9pZCBkdW1wQWxsRnJhbWVTY3JvbGxQb3NpdGlvbnMo
KTsKIAorICAgIGJvb2wgc2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKCk7CisKICAgICBX
S0J1bmRsZVBhZ2VSZWYgbV9wYWdlOwogICAgIFdLUmV0YWluUHRyPFdLQnVuZGxlU2NyaXB0V29y
bGRSZWY+IG1fd29ybGQ7CiAgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJ
dGVtUmVmPiBtX3ByZXZpb3VzVGVzdEJhY2tGb3J3YXJkTGlzdEl0ZW07CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCAy
ZDQ3OGFiNjhlOWQ0Y2UwNTZlYjg2MzAwMmUzODk3YzBjYzA5NjRhLi5iZTNkYzhiOGJjNjdiZmI2
MmNjYjM3MmJkNjA3OThmZTcwYTMyNzVmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTkwLDYgKzkwLDcgQEAgVGVz
dFJ1bm5lcjo6VGVzdFJ1bm5lcigpCiAgICAgLCBtX2N1c3RvbUZ1bGxTY3JlZW5CZWhhdmlvcihm
YWxzZSkKICAgICAsIG1fdXNlclN0eWxlU2hlZXRFbmFibGVkKGZhbHNlKQogICAgICwgbV91c2Vy
U3R5bGVTaGVldExvY2F0aW9uKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IiIpKSkKKyAgICAsIG1fc2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKGZhbHNlKQogewog
ICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAwODBlNTE5ZWFkYmQ0YThkMjBm
YzFmZjFmOGJhZTY3MzU2MjI0ZDk2Li42NWFhMDk3NGYxZjNhMDVmYjg3M2ViMjhkMmEwM2NhYjA3
MzgxZmFmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaApAQCAtMjM1LDYgKzIzNSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBh
Z2VWaXNpYmlsaXR5KEpTU3RyaW5nUmVmIHN0YXRlKTsKICAgICB2b2lkIHJlc2V0UGFnZVZpc2li
aWxpdHkoKTsKIAorICAgIGJvb2wgc2hvdWxkU2VuZERvTm90VHJhY2tIVFRQSGVhZGVyKCkgY29u
c3QgeyByZXR1cm4gbV9zaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXI7IH0KKyAgICB2b2lk
IHNldFNob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRlcihib29sIGZsYWcpIHsgbV9zaG91bGRT
ZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIgPSBmbGFnOyB9CisKIHByaXZhdGU6CiAgICAgc3RhdGlj
IGNvbnN0IGRvdWJsZSB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckludGVydmFsOwogCkBAIC0yNzYs
NiArMjc5LDggQEAgcHJpdmF0ZToKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbV91c2Vy
U3R5bGVTaGVldExvY2F0aW9uOwogCiAgICAgUGxhdGZvcm1UaW1lclJlZiBtX3dhaXRUb0R1bXBX
YXRjaGRvZ1RpbWVyOworCisgICAgYm9vbCBtX3Nob3VsZFNlbmREb05vdFRyYWNrSFRUUEhlYWRl
cjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU2OTM2OTA0ZDM2MzJiZjc2OTFl
MTA0NWQzZTI0MThkNWYzNTM1ZTEuLjU5MWVkNDQzNjEyZDM4ODIzNTdiYzQ1NTYxNzM1NzUwMTk3
ZjEwNDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOS0wNyAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICA8YXVkaW8+IGFuZCA8dmlkZW8+IHNob3VsZCBz
ZW5kIERvIE5vdCBUcmFjayB3aGVuIGFwcHJvcHJpYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjEzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBIVFRQIHRlc3QgZW5zdXJpbmcgdGhl
IEROVCBoZWFkZXIgaXMgcGFzc2VkIGNvcnJlY3RseSBkdXJpbmcgdmlkZW8gdGVzdHMuCisKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL21lZGlhL3Jlc291cmNlcy92aWRlby1kb25vdHRyYWNrLWNoZWNr
LWRvbm90dHJhY2sucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21lZGlhL3ZpZGVv
LWRvbm90dHJhY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21l
ZGlhL3ZpZGVvLWRvbm90dHJhY2suaHRtbDogQWRkZWQuCisKIDIwMTItMDktMDcgIFNhbWkgS3lv
c3RpbGEgIDxza3lvc3RpbEBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRHluYW1p
Y2FsbHkgcmVtb3ZpbmcgcHJlc2VydmUtM2QgZnJvbSBhIGxheWVyIGhhcyBubyBlZmZlY3QKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvcmVzb3VyY2VzL3ZpZGVvLWRv
bm90dHJhY2stY2hlY2stZG9ub3R0cmFjay5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21l
ZGlhL3Jlc291cmNlcy92aWRlby1kb25vdHRyYWNrLWNoZWNrLWRvbm90dHJhY2sucGhwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIyYzc2OTE0MTZiYTExZmM2N2YzMjNjZDdlNDFjZWZmZTY0N2Q2OTQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3Jlc291cmNlcy92aWRlby1k
b25vdHRyYWNrLWNoZWNrLWRvbm90dHJhY2sucGhwCkBAIC0wLDAgKzEsMTMgQEAKKzw/cGhwCisg
ICAgJGRudCA9ICRfU0VSVkVSWyJIVFRQX0ROVCJdOworICAgIGlmICghaXNzZXQoJGRudCkgfHwg
c3RyaXBvcygkZG50LCAiMSIpID09PSBmYWxzZSkKKyAgICAgICAgZGllOworCisgICAgJGZpbGVO
YW1lID0gJF9HRVRbIm5hbWUiXTsKKyAgICAkdHlwZSA9ICRfR0VUWyJ0eXBlIl07CisKKyAgICAk
X0dFVCA9IGFycmF5KCk7CisgICAgJF9HRVRbJ25hbWUnXSA9ICRmaWxlTmFtZTsKKyAgICAkX0dF
VFsndHlwZSddID0gJHR5cGU7CisgICAgQGluY2x1ZGUoIi4vc2VydmUtdmlkZW8ucGhwIik7Cis/
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS92aWRlby1kb25vdHRy
YWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdmlkZW8tZG9u
b3R0cmFjay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTVlODQzMmEyYWM0NDQxZGFlYzk2YTA0
MDQyNjllOGFkMWE3MGZkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWVkaWEvdmlkZW8tZG9ub3R0cmFjay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisg
VGVzdHMgdGhhdCB0aGUgbWVkaWEgcGxheWVyIHdpbGwgc2VuZCB0aGUgcmVsZXZhbnQgcmVmZXJl
ciB3aGVuIHJlcXVlc3RpbmcgdGhlIG1lZGlhIGZpbGUuCitFVkVOVChjYW5wbGF5KQorRU5EIE9G
IFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS92aWRlby1k
b25vdHRyYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWRvbm90
dHJhY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMWQwOTA3ZWIwZDNiYzUxMzc1NTg0OGMwZThkNWEwYjYz
NjFmMTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS92
aWRlby1kb25vdHRyYWNrLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vLi4vbWVkaWEtcmVzb3Vy
Y2VzL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPS4uLy4uL21l
ZGlhLXJlc291cmNlcy9tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCAoKSB7CisgICAgICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5z
ZXRTaG91bGRTZW5kRG9Ob3RUcmFja0hUVFBIZWFkZXIodHJ1ZSk7CisKKyAgICAgICAgICAgICAg
ICBmaW5kTWVkaWFFbGVtZW50KCk7CisgICAgICAgICAgICAgICAgdmFyIG1vdmllID0gZmluZE1l
ZGlhRmlsZSgndmlkZW8nLCAndGVzdCcpOworICAgICAgICAgICAgICAgIHZhciB0eXBlID0gbWlt
ZVR5cGVGb3JFeHRlbnNpb24obW92aWUuc3BsaXQoJy4nKS5wb3AoKSk7CisKKyAgICAgICAgICAg
ICAgICBzb3VyY2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc291cmNlJyk7CisgICAgICAg
ICAgICAgICAgc291cmNlLnNyYyA9ICdodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWVkaWEvcmVzb3Vy
Y2VzL3ZpZGVvLWRvbm90dHJhY2stY2hlY2stZG9ub3R0cmFjay5waHA/bmFtZT0nICsgbW92aWUg
KyAnJnR5cGU9JyArIHR5cGU7CisgICAgICAgICAgICAgICAgc291cmNlLnR5cGUgPSB0eXBlOwor
CisgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50QW5kRmFpbCgnZXJyb3InKTsKKyAgICAgICAg
ICAgICAgICB3YWl0Rm9yRXZlbnRBbmRFbmQoJ2NhbnBsYXknKTsKKyAgICAgICAgICAgICAgICB2
aWRlby5sb2FkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgICAgIDx2aWRlbyBpZD0idmlk
ZW8iPgorICAgICAgICAgICAgPHNvdXJjZSBpZD0ic291cmNlIj4KKyAgICAgICAgPC92aWRlbz4K
KyAgICAgICAgVGVzdHMgdGhhdCB0aGUgbWVkaWEgcGxheWVyIHdpbGwgc2VuZCB0aGUgcmVsZXZh
bnQgcmVmZXJlciB3aGVuIHJlcXVlc3RpbmcgdGhlIG1lZGlhIGZpbGUuPGJyLz4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="174142"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
    <flag name="commit-queue"
          id="174230"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>