<?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>25916</bug_id>
          
          <creation_ts>2009-05-21 01:24:55 -0700</creation_ts>
          <short_desc>WebKit should expose files from the pasteboard in drop events</short_desc>
          <delta_ts>2010-12-04 02:37:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>25915</dependson>
    
    <dependson>25924</dependson>
    
    <dependson>25907</dependson>
          <blocked>26711</blocked>
    
    <blocked>26712</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>adele</cc>
    
    <cc>aroben</cc>
    
    <cc>darin</cc>
    
    <cc>ian</cc>
    
    <cc>michaeln</cc>
    
    <cc>mike</cc>
    
    <cc>mjs</cc>
    
    <cc>noel.gordon</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>122284</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-21 01:24:55 -0700</bug_when>
    <thetext>WebKit should expose files from the pasteboard in drop events

This would make it possible for applications like gmail to implement
drag and drop of attachments onto email messages.

We will need to follow the HTML5 drag and drop security model:
http://www.w3.org/TR/html5/editing.html#security-risks-in-the-drag-and-drop-model

Internet Explorer shows historical documentation of supporting
getData(&apos;File&apos;) as a way of exposing files on the pasteboard.  The current version of their docs:
http://msdn.microsoft.com/en-us/library/ms537658(VS.85).aspx
has removed this reference (likely IE never implemented it)
I have a printed copy on my desk from 2008 describing getData(&apos;File&apos;) in IE.

Mozilla has equivalent file access:
event.dataTransfer.mozGetDataAt(&quot;application/x-moz-file&quot;, 0);
which also does not return a typed value.
https://developer.mozilla.org/En/DragDrop/Recommended_Drag_Types#Dragging_Files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122293</commentid>
    <comment_count>1</comment_count>
      <attachid>30530</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-21 01:40:53 -0700</bug_when>
    <thetext>Created attachment 30530
Expose files in the clipboard in ondrop events

 12 files changed, 314 insertions(+), 3 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122617</commentid>
    <comment_count>2</comment_count>
      <attachid>30530</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-05-22 02:13:30 -0700</bug_when>
    <thetext>Comment on attachment 30530
Expose files in the clipboard in ondrop events

Conceptually, I think this is awesome. It would be great to have this feature. And the Mac implementation looks fine. r- for the following reasons:

1) Implementations for other platforms are missing, in fact it looks like it will break all other builds as-is.

2) I think we should bring this up on the whatwg list ASAP, maybe even before comitting anything, to make sure we end up aligned with other browsers on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124810</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-08 14:25:31 -0700</bug_when>
    <thetext>Ok. Happy to update this to not break other builds.  I also of course will watch the bots when it lands and fix any errors I missed.  Since WebKit doesn&apos;t have try-servers I wont know until I land if this will break things like wx or gtk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124811</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-08 14:26:37 -0700</bug_when>
    <thetext>Ian is aware of the intent to add this.  I don&apos;t personally participate in the what-wg list, but I&apos;m sure others concerned about this issue do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124812</commentid>
    <comment_count>5</comment_count>
      <attachid>31064</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-08 14:26:44 -0700</bug_when>
    <thetext>Created attachment 31064
Updated patch to not break other builds.

 22 files changed, 381 insertions(+), 9 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124991</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-09 12:33:12 -0700</bug_when>
    <thetext>What&apos;s the status of this bug?  Do we need to talk more with whatwg or should we review this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124993</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-09 12:40:06 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; What&apos;s the status of this bug?  Do we need to talk more with whatwg or should
&gt; we review this patch?

For the record, I think we should go ahead with this patch.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125108</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-10 01:26:37 -0700</bug_when>
    <thetext>Btw, HTMLInputElement.files was added in http://trac.webkit.org/changeset/34702.  input.files does not seem to be covered by any spec:
http://www.w3.org/TR/file-upload/
http://www.w3.org/TR/html5/forms.html#the-input-element

But I&apos;m glad we have it all the same. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125109</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-10 01:30:49 -0700</bug_when>
    <thetext>Actually  input.files is a moz invention:
https://developer.mozilla.org/En/NsIDOMFileList</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125111</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-10 01:44:17 -0700</bug_when>
    <thetext>Adam has kindly posted to the WhatWG:
http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2009-June/020302.html

Still looking for content review... (Although my sense from before was that the patch was fine it just was gonna break builds).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125127</commentid>
    <comment_count>11</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-06-10 05:21:49 -0700</bug_when>
    <thetext>To be clear, we don&apos;t need a full official draft spec to land this. I brought it up mainly to make sure we didn&apos;t skip that step, and that developers of other browser engines had a chance to bring up concerns with the specifics of the API. Seems like that was done sufficiently.

What&apos;s the behavior on platforms where the API is not implemented? Will 0 get safely turned into null? The code looks ok to me on quick overview but since I&apos;m on vacation it&apos;s probably best to have someone give the official stamp of approval. I would suggest Sam, Adele or Oliver as a good reviewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125144</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-10 09:57:37 -0700</bug_when>
    <thetext>Yes, 0 is safely turned into null. (This is only ever called from the wrapping bindings.)  The Mac code used to return 0 on permission failure until I changed it to return an empty list.  (I can change all the others to return an empty list instead of 0 as well.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126990</commentid>
    <comment_count>13</comment_count>
      <attachid>31064</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-06-19 11:57:47 -0700</bug_when>
    <thetext>Comment on attachment 31064
Updated patch to not break other builds.

I&apos;m going to say r=me with the following caveats:

1) Please file follow-up bugs for platforms that don&apos;t implement the back end for this yet, at least for ports that have a public buildbot.

2) I think for platforms that don&apos;t support file drop yet, it might be better to avoid having a &quot;files&quot; property at all on the Clipboard object, instead of having the property and always returning null. So I think it would be good to give the feature an ENABLE define.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128109</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-24 23:53:02 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 31064 [review])
&gt; I&apos;m going to say r=me with the following caveats:
&gt; 
&gt; 1) Please file follow-up bugs for platforms that don&apos;t implement the back end
&gt; for this yet, at least for ports that have a public buildbot.

Sure thing!  I&apos;ve filed bug 25916 bug 25917 and bug 25918 for the necessary ports.

&gt; 2) I think for platforms that don&apos;t support file drop yet, it might be better
&gt; to avoid having a &quot;files&quot; property at all on the Clipboard object, instead of
&gt; having the property and always returning null. So I think it would be good to
&gt; give the feature an ENABLE define.

Hum.  I disagree.  I don&apos;t think this should be guarded by ENABLE defines.  That&apos;s a lot of extra work to hide this property while the other ports implement the necessary plumbing.

Returning null makes it pretty clear that files are not available.  It doesn&apos;t make it clear that it&apos;s due to a missing feature of those ports, but I think that given this is an experimental DOM feature of WebKit to begin with, it&apos;s OK that the null is ambiguous.  We can add ENABLE defines if it becomes clear later that some port wants to ship with this disabled.  Our current build system potpourri makes it very heavy-weight to add ENABLEs w/o good cause. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128110</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-24 23:54:11 -0700</bug_when>
    <thetext>Sorry.  Bug 26710 bug 26711 and bug 26712</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128136</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-25 02:06:13 -0700</bug_when>
    <thetext>s/without good cause/without strong need/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128138</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-25 02:24:39 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	A	LayoutTests/http/tests/security/clipboard/clipboard-file-access-expected.txt
	A	LayoutTests/http/tests/security/clipboard/clipboard-file-access.html
	A	LayoutTests/http/tests/security/clipboard/resources/TEMPLATE.html
	A	LayoutTests/http/tests/security/clipboard/resources/apple.gif
	A	LayoutTests/http/tests/security/clipboard/resources/clipboard-file-access.js
	A	LayoutTests/http/tests/security/clipboard/resources/mozilla.gif
	M	WebCore/ChangeLog
	M	WebCore/dom/Clipboard.h
	M	WebCore/dom/Clipboard.idl
	M	WebCore/platform/chromium/ClipboardChromium.cpp
	M	WebCore/platform/chromium/ClipboardChromium.h
	M	WebCore/platform/gtk/ClipboardGtk.cpp
	M	WebCore/platform/gtk/ClipboardGtk.h
	M	WebCore/platform/mac/ClipboardMac.h
	M	WebCore/platform/mac/ClipboardMac.mm
	M	WebCore/platform/qt/ClipboardQt.cpp
	M	WebCore/platform/qt/ClipboardQt.h
	M	WebCore/platform/win/ClipboardWin.cpp
	M	WebCore/platform/win/ClipboardWin.h
	M	WebCore/platform/wx/ClipboardWx.cpp
	M	WebCore/platform/wx/ClipboardWx.h
Committed r45168
http://trac.webkit.org/changeset/45168</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128195</commentid>
    <comment_count>18</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-06-25 08:52:25 -0700</bug_when>
    <thetext>Chromium build fix landed as http://trac.webkit.org/changeset/45176.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30530</attachid>
            <date>2009-05-21 01:40:53 -0700</date>
            <delta_ts>2009-06-08 14:26:58 -0700</delta_ts>
            <desc>Expose files in the clipboard in ondrop events</desc>
            <filename>Expose-files-in-the-clipboard-in-ondrop-events.patch</filename>
            <type>text/plain</type>
            <size>18848</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">NDk0ZDEwZGYyNDNlMWU4ZTI1NGYzYTJjYzVjZjg4MzYyNTZkZjViYQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYxMTk3NzIu
LmFlZDI2YjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNSBAQAogMjAwOS0wNS0yMSAgRXJpYyBTZWlkZWwg
IDxlcmljQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRXhwb3NlIGZpbGVzIGluIHRoZSBjbGlwYm9hcmQgaW4gb25kcm9wIGV2ZW50
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1OTE2
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9jbGlwYm9hcmQtZmls
ZS1hY2Nlc3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2NsaXBib2FyZC9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL3Jlc291cmNl
cy9hcHBsZS5naWY6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9y
ZXNvdXJjZXMvYXBwbGUuZ2lmLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJv
YXJkL3Jlc291cmNlcy9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MuanM6IEFkZGVkLgorICAgICAgICAo
dmFyKToKKyAgICAgICAgKG1vdmVNb3VzZVRvQ2VudGVyT2ZFbGVtZW50KToKKyAgICAgICAgKGRy
YWdGaWxlc09udG9EcmFnVGFyZ2V0KToKKyAgICAgICAgKGZpbGVMaXN0U2hvdWxkQmUpOgorICAg
ICAgICAoZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMpOgorICAgICAgICAocnVuVGVz
dCk6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvcmVzb3VyY2VzL21v
emlsbGEuZ2lmOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcmVz
b3VyY2VzL21vemlsbGEuZ2lmLgorCisyMDA5LTA1LTIxICBFcmljIFNlaWRlbCAgPGVyaWNAd2Vi
a2l0Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgogCiAg
ICAgICAgIEZpeCBmaWxlLWlucHV0LWZpbGVzLWFjY2VzcyB3aGljaCB3YXMgcGFzc2luZyBmb3Ig
dGhlIHdyb25nIHJlYXNvbnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NsaXBib2FyZC9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUtYWNj
ZXNzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzM3
NTJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9j
bGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDc3
IEBACitUZXN0cyBhY2Nlc3MgdG8gZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitEcmFnZ2luZyBubyBmaWxlcyBzaG91bGQgcmV0dXJuIGFu
IGVtcHR5IGZpbGUgbGlzdCAoYXJiaXRyYXJ5IGltcGxlbWVudGF0aW9uIGRldGFpbCk6CitPbiBk
cmFnb3ZlcjoKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aCBpcyAwCitPbiBk
cm9wOgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoIGlzIDAKK0RyYWdnaW5n
IGEgc2luZ2xlIChub24tZXhpc3RhbnQpIGZpbGUgb250byBhbiBlbGVtZW50OgorT24gZHJhZ292
ZXI6CitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggaXMgMAorT24gZHJhZ292
ZXI6CitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggaXMgMAorT24gZHJvcDoK
K1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aCBpcyAxCitQQVNTIGV2ZW50LmRh
dGFUcmFuc2Zlci5maWxlc1swXS5maWxlTmFtZSBpcyAiRFJURmFrZUZpbGUiCitQQVNTIGV2ZW50
LmRhdGFUcmFuc2Zlci5maWxlc1swXS5maWxlU2l6ZSBpcyAwCitGSVhNRTogRmlsZS5maWxlU2l6
ZSBhbHdheXMgcmV0dXJucyAwIGZvciBmaWxlcyBkcm9wcGVkIGJ5IGV2ZW50U2VuZGVyLmJlZ2lu
RHJhZ1dpdGhGaWxlcyBmcm9tIGh0dHAgdGVzdHM6ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjU5MDkKK0RyYWdnaW5nIGEgcmVhbCBmaWxlIG9udG8gYW4gZWxlbWVu
dDoKK09uIGRyYWdvdmVyOgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoIGlz
IDAKK09uIGRyYWdvdmVyOgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoIGlz
IDAKK09uIGRyb3A6CitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggaXMgMQor
UEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0uZmlsZU5hbWUgaXMgImFwcGxlLmdpZiIK
K0ZBSUwgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzBdLmZpbGVTaXplIHNob3VsZCBiZSAxNDc2
LiBXYXMgMC4KK0RyYWdnaW5nIHR3byBmaWxlcyBvbnRvIGFuIGVsZW1lbnQ6CitPbiBkcmFnb3Zl
cjoKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aCBpcyAwCitPbiBkcmFnb3Zl
cjoKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aCBpcyAwCitPbiBkcm9wOgor
UEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoIGlzIDIKK1BBU1MgZXZlbnQuZGF0
YVRyYW5zZmVyLmZpbGVzWzBdLmZpbGVOYW1lIGlzICJhcHBsZS5naWYiCitGQUlMIGV2ZW50LmRh
dGFUcmFuc2Zlci5maWxlc1swXS5maWxlU2l6ZSBzaG91bGQgYmUgMTQ3Ni4gV2FzIDAuCitQQVNT
IGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc1sxXS5maWxlTmFtZSBpcyAibW96aWxsYS5naWYiCitG
QUlMIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc1sxXS5maWxlU2l6ZSBzaG91bGQgYmUgMjU5My4g
V2FzIDAuCitEcmFnZ2luZyB0d28gZmlsZXMgaW4gcmV2ZXJzZSBhbHBoYWJldGljYWwgb3JkZXIg
b250byBhbiBlbGVtZW50OgorT24gZHJhZ292ZXI6CitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5m
aWxlcy5sZW5ndGggaXMgMAorT24gZHJhZ292ZXI6CitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5m
aWxlcy5sZW5ndGggaXMgMAorT24gZHJvcDoKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVz
Lmxlbmd0aCBpcyAyCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc1swXS5maWxlTmFtZSBp
cyAibW96aWxsYS5naWYiCitGQUlMIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc1swXS5maWxlU2l6
ZSBzaG91bGQgYmUgMjU5My4gV2FzIDAuCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc1sx
XS5maWxlTmFtZSBpcyAiYXBwbGUuZ2lmIgorRkFJTCBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNb
MV0uZmlsZVNpemUgc2hvdWxkIGJlIDE0NzYuIFdhcyAwLgorRklYTUU6IFdlIHNob3VsZCBub3Qg
YWxsb3cgZWxlbWVudCB0byBhY2NlcHQgZHJvcHMgaW5jbHVkaW5nIGRpcmVjdG9yaWVzIHVubGVz
cyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4NzkgaXMgZml4ZWQg
dG8gbWFrZSBkaXJlY3RvcnkgRmlsZSBvYmplY3RzIHVzZWZ1bCBmcm9tIEphdmFTY3JpcHQuICBU
aGUgcGFnZSBpcyBnaXZlbiBGaWxlIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byBkaXJlY3Rvcmll
cywgYnV0IGZvcm0gc3VibWlzc2lvbiBhbmQgeGhyLnNlbmQoKSB3aWxsIGZhaWwuCitEcmFnZ2lu
ZyBhIGRpcmVjdG9yeSBvbnRvIGFuIGVsZW1lbnQ6CitPbiBkcmFnb3ZlcjoKK1BBU1MgZXZlbnQu
ZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aCBpcyAwCitPbiBkcmFnb3ZlcjoKK1BBU1MgZXZlbnQu
ZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aCBpcyAwCitPbiBkcm9wOgorRkFJTCBldmVudC5kYXRh
VHJhbnNmZXIuZmlsZXMubGVuZ3RoIHNob3VsZCBiZSAwLiBXYXMgMS4KK0RyYWdnaW5nIGEgZmls
ZSBhbmQgYSBkaXJlY3Rvcnkgb250byBhbiBlbGVtZW50OgorT24gZHJhZ292ZXI6CitQQVNTIGV2
ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggaXMgMAorT24gZHJhZ292ZXI6CitQQVNTIGV2
ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggaXMgMAorT24gZHJvcDoKK0ZBSUwgZXZlbnQu
ZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aCBzaG91bGQgYmUgMC4gV2FzIDIuCitEcmFnZ2luZyBh
IGRpcmVjdG9yeSBhbmQgYSBmaWxlIG9udG8gYW4gZWxlbWVudDoKK09uIGRyYWdvdmVyOgorUEFT
UyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoIGlzIDAKK09uIGRyYWdvdmVyOgorUEFT
UyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoIGlzIDAKK09uIGRyb3A6CitGQUlMIGV2
ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggc2hvdWxkIGJlIDAuIFdhcyAyLgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL2NsaXBib2FyZC1maWxl
LWFjY2Vzcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQv
Y2xpcGJvYXJkLWZpbGUtYWNjZXNzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMWUzMjVhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY2xpcGJvYXJkL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5odG1sCkBAIC0wLDAgKzEs
MTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzLXRlc3Qt
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxw
IGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY2xpcGJvYXJkL3Jlc291cmNlcy9URU1QTEFURS5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MyZTQwOQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL3Jlc291cmNlcy9U
RU1QTEFURS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iWU9VUl9KU19GSUxFX0hFUkUiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9yZXNvdXJjZXMvYXBwbGUuZ2lmIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvcmVzb3VyY2VzL2FwcGxlLmdpZgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTg0NGM4CkJpbmFyeSBmaWxlcyAvZGV2
L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvcmVz
b3VyY2VzL2FwcGxlLmdpZiBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvY2xpcGJvYXJkL3Jlc291cmNlcy9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MuanMg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9yZXNvdXJjZXMvY2xp
cGJvYXJkLWZpbGUtYWNjZXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjA2ZDQzNWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2NsaXBib2FyZC9yZXNvdXJjZXMvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLmpzCkBAIC0wLDAg
KzEsMTE4IEBACitkZXNjcmlwdGlvbigiVGVzdHMgYWNjZXNzIHRvIGV2ZW50LmRhdGFUcmFuc2Zl
ci5maWxlcyIpOworCit2YXIgZHJhZ1RhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworZHJhZ1RhcmdldC5pbm5lckhUTUwgPSAiRHJhZyBoZXJlIgorZHJhZ1RhcmdldC5zdHls
ZS5iYWNrZ3JvdW5kQ29sb3IgPSAiYmx1ZSI7CitkcmFnVGFyZ2V0LnN0eWxlLndpZHRoID0gIjEw
MHB4IjsKK2RyYWdUYXJnZXQuc3R5bGUuaGVpZ2h0ID0gIjEwMHB4IjsKKy8vIEltcG9ydGFudCB0
aGF0IHdlIHB1dCB0aGlzIGF0IHRoZSB0b3Agb2YgdGhlIGRvYyBzbyB0aGF0IGxvZ2dpbmcgZG9l
cyBub3QgY2F1c2UgaXQgdG8gZ28gb3V0IG9mIHZpZXcgKGFuZCBiZSB1bmRyYWdhYmxlKQorZG9j
dW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZHJhZ1RhcmdldCwgZG9jdW1lbnQuYm9keS5maXJzdENo
aWxkKTsKKworZHJhZ1RhcmdldC5hZGRFdmVudExpc3RlbmVyKCJkcmFnZW50ZXJlZCIsIGZ1bmN0
aW9uKCkgeworICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gImNvcHkiOworICAg
IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cit9LCBmYWxzZSk7CisKK2RyYWdUYXJnZXQuYWRkRXZl
bnRMaXN0ZW5lcigiZHJhZ292ZXIiLCBmdW5jdGlvbigpIHsKKyAgICBkZWJ1ZygiT24gZHJhZ292
ZXI6IikKKyAgICBmaWxlTGlzdFNob3VsZEJlKCJldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMiLCBb
XSk7CisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK30sIGZhbHNlKTsKKwordmFyIGV4cGVj
dGVkRmlsZXNPbkRyb3A7CitkcmFnVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoImRyb3AiLCBmdW5j
dGlvbigpIHsKKyAgICBkZWJ1ZygiT24gZHJvcDoiKQorICAgIGZpbGVMaXN0U2hvdWxkQmUoImV2
ZW50LmRhdGFUcmFuc2Zlci5maWxlcyIsIGV4cGVjdGVkRmlsZXNPbkRyb3ApOworICAgIGV2ZW50
LnByZXZlbnREZWZhdWx0KCk7Cit9LCBmYWxzZSk7CisKK2Z1bmN0aW9uIG1vdmVNb3VzZVRvQ2Vu
dGVyT2ZFbGVtZW50KGVsZW1lbnQpCit7CisgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNl
dExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICB2YXIgY2VudGVyWSA9IGVsZW1l
bnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKGNlbnRlclgsIGNlbnRlclkpOworfQorCitmdW5jdGlvbiBkcmFnRmlsZXNP
bnRvRHJhZ1RhcmdldChmaWxlcykgeworICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxl
cyhmaWxlcyk7CisgICAgbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZHJhZ1RhcmdldCk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiBmaWxlTGlzdFNob3VsZEJl
KGZpbGVMaXN0U3RyaW5nLCBmaWxlc0FycmF5KQoreworICAgIHNob3VsZEJlKGZpbGVMaXN0U3Ry
aW5nICsgIi5sZW5ndGgiLCAiIiArIGZpbGVzQXJyYXkubGVuZ3RoKTsKKyAgICBmb3IgKHZhciB4
ID0gMDsgeCA8IGZpbGVzQXJyYXkubGVuZ3RoOyB4KyspIHsKKyAgICAgICAgdmFyIGZpbGVWYWx1
ZVN0cmluZyA9IGZpbGVMaXN0U3RyaW5nICsgIlsiICsgeCArICJdIjsKKyAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKGZpbGVWYWx1ZVN0cmluZyArICIuZmlsZU5hbWUiLCBmaWxlc0FycmF5
W3hdWyduYW1lJ10pOworICAgICAgICBzaG91bGRCZShmaWxlVmFsdWVTdHJpbmcgKyAiLmZpbGVT
aXplIiwgIiIgKyBmaWxlc0FycmF5W3hdWydzaXplJ10pOworICAgIH0KK30KKworZnVuY3Rpb24g
ZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMocGF0aHNBcnJheSwgZmlsZXNBcnJheSkK
K3sKKyAgICBleHBlY3RlZEZpbGVzT25Ecm9wID0gZmlsZXNBcnJheTsKKyAgICBkcmFnRmlsZXNP
bnRvRHJhZ1RhcmdldChwYXRoc0FycmF5KTsKK30KKworZnVuY3Rpb24gdGVzdERyYWdnaW5nRmls
ZXMoZmlsZXNBcnJheSkKK3sKKyAgICAvLyBXZSBjb3VsZCBtYWtlIGEgd2F5IHRvIHBhcnNlIHRo
ZSBmaWxlbmFtZSBmcm9tIHRoZSBwYXRoLCBhbmQgdGhlbiBvbmx5IG5lZWQgdG8gcGFzcworICAg
IC8vIHRoZSBwYXRoIGluIHRoZSBmaWxlc0FycmF5LgorICAgIHZhciBwYXRoc09ubHkgPSBmaWxl
c0FycmF5Lm1hcChmdW5jdGlvbihmaWxlU3BlYykgeyByZXR1cm4gZmlsZVNwZWNbJ3BhdGgnXTsg
fSk7CisgICAgZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMocGF0aHNPbmx5LCBmaWxl
c0FycmF5KTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgZGVidWcoIkRyYWdnaW5n
IG5vIGZpbGVzIHNob3VsZCByZXR1cm4gYW4gZW1wdHkgZmlsZSBsaXN0IChhcmJpdHJhcnkgaW1w
bGVtZW50YXRpb24gZGV0YWlsKToiKTsKKyAgICB0ZXN0RHJhZ2dpbmdGaWxlcyhbXSk7CisKKyAg
ICBkZWJ1ZygiRHJhZ2dpbmcgYSBzaW5nbGUgKG5vbi1leGlzdGFudCkgZmlsZSBvbnRvIGFuIGVs
ZW1lbnQ6Iik7CisgICAgdGVzdERyYWdnaW5nRmlsZXMoWworICAgICAgICB7ICdwYXRoJzogJ0RS
VEZha2VGaWxlJywgJ25hbWUnIDogJ0RSVEZha2VGaWxlJywgJ3NpemUnIDogMCB9CisgICAgXSk7
CisKKyAgICBkZWJ1ZygiRklYTUU6IEZpbGUuZmlsZVNpemUgYWx3YXlzIHJldHVybnMgMCBmb3Ig
ZmlsZXMgZHJvcHBlZCBieSBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMgZnJvbSBodHRw
IHRlc3RzOiAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1OTA5Iik7
CisKKyAgICBkZWJ1ZygiRHJhZ2dpbmcgYSByZWFsIGZpbGUgb250byBhbiBlbGVtZW50OiIpOwor
ICAgIHRlc3REcmFnZ2luZ0ZpbGVzKFsKKyAgICAgICAgeyAncGF0aCc6ICdyZXNvdXJjZXMvYXBw
bGUuZ2lmJywgJ25hbWUnIDogJ2FwcGxlLmdpZicsICdzaXplJyA6IDE0NzYgfQorICAgIF0pOwor
CisgICAgZGVidWcoIkRyYWdnaW5nIHR3byBmaWxlcyBvbnRvIGFuIGVsZW1lbnQ6Iik7CisgICAg
dGVzdERyYWdnaW5nRmlsZXMoWworICAgICAgICB7ICdwYXRoJzogJ3Jlc291cmNlcy9hcHBsZS5n
aWYnLCAnbmFtZScgOiAnYXBwbGUuZ2lmJywgJ3NpemUnIDogMTQ3NiB9LAorICAgICAgICB7ICdw
YXRoJzogJ3Jlc291cmNlcy9tb3ppbGxhLmdpZicsICduYW1lJyA6ICdtb3ppbGxhLmdpZicsICdz
aXplJyA6IDI1OTMgfQorICAgIF0pOworCisgICAgZGVidWcoIkRyYWdnaW5nIHR3byBmaWxlcyBp
biByZXZlcnNlIGFscGhhYmV0aWNhbCBvcmRlciBvbnRvIGFuIGVsZW1lbnQ6Iik7CisgICAgdGVz
dERyYWdnaW5nRmlsZXMoWworICAgICAgICB7ICdwYXRoJzogJ3Jlc291cmNlcy9tb3ppbGxhLmdp
ZicsICduYW1lJyA6ICdtb3ppbGxhLmdpZicsICdzaXplJyA6IDI1OTMgfSwKKyAgICAgICAgeyAn
cGF0aCc6ICdyZXNvdXJjZXMvYXBwbGUuZ2lmJywgJ25hbWUnIDogJ2FwcGxlLmdpZicsICdzaXpl
JyA6IDE0NzYgfQorICAgIF0pOworCisgICAgLy8gRGlyZWN0b3J5IGRyYWdnaW5nIGJlaGF2aW9y
IGlzIGNvdmVyZWQgYnkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1
ODUyIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4NzkKKyAg
ICBkZWJ1ZygiRklYTUU6IFdlIHNob3VsZCBub3QgYWxsb3cgZWxlbWVudCB0byBhY2NlcHQgZHJv
cHMgaW5jbHVkaW5nIGRpcmVjdG9yaWVzIHVubGVzcyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjU4NzkgaXMgZml4ZWQgdG8gbWFrZSBkaXJlY3RvcnkgRmlsZSBvYmpl
Y3RzIHVzZWZ1bCBmcm9tIEphdmFTY3JpcHQuICBUaGUgcGFnZSBpcyBnaXZlbiBGaWxlIG9iamVj
dHMgY29ycmVzcG9uZGluZyB0byBkaXJlY3RvcmllcywgYnV0IGZvcm0gc3VibWlzc2lvbiBhbmQg
eGhyLnNlbmQoKSB3aWxsIGZhaWwuIik7CisgICAgZGVidWcoIkRyYWdnaW5nIGEgZGlyZWN0b3J5
IG9udG8gYW4gZWxlbWVudDoiKTsKKyAgICBkcmFnZ2luZ1BhdGhzU2hvdWxkUmVzdWx0SW5GaWxl
cyhbJ3Jlc291cmNlcy9kaXJlY3RvcnktZm9yLWRyYWdnaW5nJ10sIFtdKTsKKworICAgIC8vIE5v
dGU6IFRoZSBvcmRlciBvZiBzZWxlY3Rpb24gaW4gdGhlIEZpbmRlciBjaGFuZ2VzIHRoZSBvcmRl
ciBvZiBmaWxlIHBhdGhzIGluIHRoZSBwYXN0ZWJvYXJkCisgICAgLy8gdGh1cyBpdCdzIGltcG9y
dGFudCB0aGF0IHdlIHRlc3QgZGlmZmVyZW50IG9yZGVycyBoZXJlIGFzIHdlbGwgKGF0IGxlYXN0
IG9uIHRoZSBNYWMpCisgICAgLy8gQm90aCBkcm9wcyBzaG91bGQgYmUgcmVmdXNlZCBvciBzdWNj
ZWVkIGJhc2VkIG9uIGhvdyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjU4NzkgaXMgcmVzb2x2ZWQuICBDdXJyZW50bHkgd2UgZXhwZWN0IGRyb3BzIHRvIGJlIHJlZnVz
ZWQuCisgICAgZGVidWcoIkRyYWdnaW5nIGEgZmlsZSBhbmQgYSBkaXJlY3Rvcnkgb250byBhbiBl
bGVtZW50OiIpOworICAgIGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJbkZpbGVzKFsncmVzb3Vy
Y2VzL2FwcGxlLmdpZicsICdyZXNvdXJjZXMvZGlyZWN0b3J5LWZvci1kcmFnZ2luZyddLCBbXSk7
CisKKyAgICBkZWJ1ZygiRHJhZ2dpbmcgYSBkaXJlY3RvcnkgYW5kIGEgZmlsZSBvbnRvIGFuIGVs
ZW1lbnQ6IikKKyAgICBkcmFnZ2luZ1BhdGhzU2hvdWxkUmVzdWx0SW5GaWxlcyhbJ3Jlc291cmNl
cy9kaXJlY3RvcnktZm9yLWRyYWdnaW5nJywgJ3Jlc291cmNlcy9hcHBsZS5naWYnXSwgW10pOwor
fQorCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgcnVuVGVzdCgpOworICAgIC8vIENs
ZWFuIHVwIGFmdGVyIG91cnNlbHZlcworICAgIGRyYWdUYXJnZXQucGFyZW50Tm9kZS5yZW1vdmVD
aGlsZChkcmFnVGFyZ2V0KTsKK30gZWxzZSB7CisgICAgdGVzdEZhaWxlZCgiVGhpcyB0ZXN0IGlz
IG5vdCBpbnRlcmFjdGl2ZSwgcGxlYXNlIHJ1biB1c2luZyBEdW1wUmVuZGVyVHJlZSIpOworfQor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL3Jlc291cmNlcy9tb3ppbGxhLmdpZiBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL3Jlc291cmNlcy9tb3ppbGxh
LmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDliMzBlCkJpbmFyeSBm
aWxlcyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlw
Ym9hcmQvcmVzb3VyY2VzL21vemlsbGEuZ2lmIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1YmUyNzM4Li4xMTdlNjgxIDEwMDY0
NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ2IEBACisyMDA5LTA1LTIxICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgZmls
ZXMgaW4gdGhlIGNsaXBib2FyZCBpbiBvbmRyb3AgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTkxNgorCisgICAgICAgIE1ha2UgaXQgcG9z
c2libGUgZm9yIGFwcGxpY2F0aW9ucyBsaWtlIGdtYWlsIHRvIGltcGxlbWVudAorICAgICAgICBk
cmFnIGFuZCBkcm9wIG9mIGF0dGFjaG1lbnRzIG9udG8gZW1haWwgbWVzc2FnZXMuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBleHBvc2VzIGFuIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyBhY2Nlc3Nv
cgorICAgICAgICBvbiB0aGUgZHJvcCBldmVudC4gIE5vIGluZm9ybWF0aW9uIGlzIGV4cG9zZWQg
ZHVyaW5nIGRyYWdvdmVyLgorICAgICAgICBUaGlzIGZvbGxvd3MgdGhlIEhUTUwgNSBkcmFnIGFu
ZCBkcm9wIHNlY3VyaXR5IG1vZGVsOgorICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1s
NS9lZGl0aW5nLmh0bWwjc2VjdXJpdHktcmlza3MtaW4tdGhlLWRyYWctYW5kLWRyb3AtbW9kZWwK
KyAgICAgICAgVGhlIHRlc3QgaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvY2xpcGJvYXJk
LWZpbGUtYWNjZXNzLmh0bWwKKyAgICAgICAgdmVyaWZpZXMgdGhpcyBiZWhhdmlvci4KKworICAg
ICAgICBJbnRlcm5ldCBFeHBsb3JlciBzaG93cyBoaXN0b3JpY2FsIGRvY3VtZW50YXRpb24gb2Yg
c3VwcG9ydGluZworICAgICAgICBnZXREYXRhKCdGaWxlJykgYXMgYSB3YXkgb2YgZXhwb3Npbmcg
ZmlsZXMgb24gdGhlIHBhc3RlYm9hcmQuICBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZWlyIGRv
Y3M6CisgICAgICAgIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczUz
NzY1OChWUy44NSkuYXNweAorICAgICAgICBoYXMgcmVtb3ZlZCB0aGlzIHJlZmVyZW5jZSAoYXMg
ZmFyIGFzIEkgY2FuIHRlbGwgSUUgbmV2ZXIgaW1wbGVtZW50ZWQgaXQpCisgICAgICAgIEkgaGF2
ZSBhIHByaW50ZWQgY29weSBvZiB0aGF0IFVSTCBmcm9tIDIwMDggb24gbXkgZGVzayBkZXNjcmli
aW5nIGdldERhdGEoJ0ZpbGUnKSBpbiBJRS4KKyAgICAgICAgSUUgZG9lcyBub3QgZm9sbG93IHRo
ZSBIVE1MNSBjbGlwYm9hcmQgc2VjdXJpdHkgbW9kZWwgYW5kIGFsd2F5cyBhbGxvd3MgYWNjZXNz
IHRvIHRoZSBmdWxsIGNsaXBib2FyZCwgZXZlbiBvbiBkcmFnb3Zlci4KKworICAgICAgICBJIGNo
b29zZSBub3QgdG8gdXNlIElFJ3MgZ2V0RGF0YSgnRmlsZScpIGFuZCBpbnN0ZWFkIGFkZGVkIC5m
aWxlcworICAgICAgICBzbyB0aGF0IHRoZSBhY2Nlc3NvciBjb3VsZCBoYXZlIGEgdHlwZSwgbWF0
Y2hpbmcgV2ViS2l0J3MgZXhpc3RpbmcKKyAgICAgICAgLmZpbGVzIGFjY2Vzc29yIG9uIEhUTUxJ
bnB1dEVsZW1lbnQuCisKKyAgICAgICAgTW96aWxsYSBoYXMgZXF1aXZhbGVudCBmaWxlIGFjY2Vz
czoKKyAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLm1vekdldERhdGFBdCgiYXBwbGljYXRpb24v
eC1tb3otZmlsZSIsIDApOworICAgICAgICB3aGljaCBhbHNvIGRvZXMgbm90IHJldHVybiBhIHR5
cGVkIHZhbHVlLgorICAgICAgICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9Fbi9EcmFn
RHJvcC9SZWNvbW1lbmRlZF9EcmFnX1R5cGVzI0RyYWdnaW5nX0ZpbGVzCisKKyAgICAgICAgVGVz
dDogaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLmh0
bWwKKworICAgICAgICAqIGRvbS9DbGlwYm9hcmQuaDoKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJk
LmlkbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFic29sdXRl
VVJMc0Zyb21QYXN0ZWJvYXJkRmlsZW5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmFic29sdXRl
VVJMc0Zyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZE1hYzo6Zmls
ZXMpOgorCiAyMDA5LTA1LTIwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vQ2xpcGJvYXJkLmggYi9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuaAppbmRleCA1OWFlMDI2Li5i
ZDkyNDUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuaAorKysgYi9XZWJDb3Jl
L2RvbS9DbGlwYm9hcmQuaApAQCAtMzMsNiArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKKyAgICBjbGFzcyBGaWxlTGlzdDsKKwogICAgIC8vIFN0YXRlIGF2YWlsYWJsZSBkdXJpbmcg
SUUncyBldmVudHMgZm9yIGRyYWcgYW5kIGRyb3AgYW5kIGNvcHkvcGFzdGUKICAgICBjbGFzcyBD
bGlwYm9hcmQgOiBwdWJsaWMgUmVmQ291bnRlZDxDbGlwYm9hcmQ+IHsKICAgICBwdWJsaWM6CkBA
IC01Myw3ICs1NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKICAgICAgICAgLy8gZXh0
ZW5zaW9ucyBiZXlvbmQgSUUncyBBUEkKICAgICAgICAgdmlydHVhbCBIYXNoU2V0PFN0cmluZz4g
dHlwZXMoKSBjb25zdCA9IDA7Ci0gICAgCisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWxl
TGlzdD4gZmlsZXMoKSBjb25zdCA9IDA7CisKICAgICAgICAgSW50UG9pbnQgZHJhZ0xvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9kcmFnTG9jOyB9CiAgICAgICAgIENhY2hlZEltYWdlKiBkcmFn
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2RyYWdJbWFnZS5nZXQoKTsgfQogICAgICAgICB2aXJ0
dWFsIHZvaWQgc2V0RHJhZ0ltYWdlKENhY2hlZEltYWdlKiwgY29uc3QgSW50UG9pbnQmKSA9IDA7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuaWRsIGIvV2ViQ29yZS9kb20vQ2xp
cGJvYXJkLmlkbAppbmRleCA2ZmU4M2Y3Li5kYzg2NzdlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Rv
bS9DbGlwYm9hcmQuaWRsCisrKyBiL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5pZGwKQEAgLTM0LDYg
KzM0LDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZl
cnROdWxsU3RyaW5nVG89VW5kZWZpbmVkXSBET01TdHJpbmcgZHJvcEVmZmVjdDsKICAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZF0gRE9NU3Ry
aW5nIGVmZmVjdEFsbG93ZWQ7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ3VzdG9tR2V0
dGVyXSBBcnJheSB0eXBlczsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEZpbGVMaXN0IGZp
bGVzOwogCiAgICAgICAgIFtDdXN0b21dIHZvaWQgY2xlYXJEYXRhKGluIFtPcHRpb25hbF0gRE9N
U3RyaW5nIHR5cGUpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5oIGIvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvQ2xpcGJvYXJkTWFjLmgKaW5kZXggZGI2ZWNiNi4uOWJkZDI3NiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvQ2xpcGJvYXJkTWFjLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgTlNQYXN0ZWJvYXJk
OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKK2NsYXNzIEZpbGVMaXN0Owog
CiBjbGFzcyBDbGlwYm9hcmRNYWMgOiBwdWJsaWMgQ2xpcGJvYXJkLCBwdWJsaWMgQ2FjaGVkUmVz
b3VyY2VDbGllbnQgewogcHVibGljOgpAQCAtNjAsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgLy8gZXh0ZW5zaW9ucyBiZXlvbmQgSUUncyBBUEkKICAgICB2aXJ0dWFsIEhhc2hTZXQ8U3Ry
aW5nPiB0eXBlcygpIGNvbnN0OworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWxlTGlzdD4gZmls
ZXMoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0RHJhZ0ltYWdlKENhY2hlZEltYWdlKiwgY29uc3Qg
SW50UG9pbnQmKTsKICAgICB2b2lkIHNldERyYWdJbWFnZUVsZW1lbnQoTm9kZSAqLCBjb25zdCBJ
bnRQb2ludCYpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFj
Lm1tIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCmluZGV4IGQxYjY2YTcu
LjUyYmM5NTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5t
bQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KQEAgLTMxLDYgKzMx
LDcgQEAKICNpbXBvcnQgIkRyYWdDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJFZGl0b3IuaCIKICNp
bXBvcnQgIkZvdW5kYXRpb25FeHRyYXMuaCIKKyNpbXBvcnQgIkZpbGVMaXN0LmgiCiAjaW1wb3J0
ICJGcmFtZS5oIgogI2ltcG9ydCAiSW1hZ2UuaCIKICNpbXBvcnQgIlBhZ2UuaCIKQEAgLTEzOSw3
ICsxNDAsNyBAQCB2b2lkIENsaXBib2FyZE1hYzo6Y2xlYXJBbGxEYXRhKCkKICAgICBbbV9wYXN0
ZWJvYXJkLmdldCgpIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheV0gb3duZXI6bmlsXTsKIH0K
IAotc3RhdGljIE5TQXJyYXkgKmFic29sdXRlVVJMc0Zyb21QYXN0ZWJvYXJkRmlsZW5hbWVzKE5T
UGFzdGVib2FyZCogcGFzdGVib2FyZCwgYm9vbCBvbmx5Rmlyc3RVUkwpCitzdGF0aWMgTlNBcnJh
eSAqYWJzb2x1dGVVUkxzRnJvbVBhc3RlYm9hcmRGaWxlbmFtZXMoTlNQYXN0ZWJvYXJkKiBwYXN0
ZWJvYXJkLCBib29sIG9ubHlGaXJzdFVSTCA9IGZhbHNlKQogewogICAgIE5TQXJyYXkgKmZpbGVM
aXN0ID0gW3Bhc3RlYm9hcmQgcHJvcGVydHlMaXN0Rm9yVHlwZTpOU0ZpbGVuYW1lc1Bib2FyZFR5
cGVdOwogCkBAIC0xNjMsNyArMTY0LDcgQEAgc3RhdGljIE5TQXJyYXkgKmFic29sdXRlVVJMc0Zy
b21QYXN0ZWJvYXJkRmlsZW5hbWVzKE5TUGFzdGVib2FyZCogcGFzdGVib2FyZCwgYm8KICAgICBy
ZXR1cm4gdXJsczsKIH0KIAotc3RhdGljIE5TQXJyYXkgKmFic29sdXRlVVJMc0Zyb21QYXN0ZWJv
YXJkKE5TUGFzdGVib2FyZCogcGFzdGVib2FyZCwgYm9vbCBvbmx5Rmlyc3RVUkwpCitzdGF0aWMg
TlNBcnJheSAqYWJzb2x1dGVVUkxzRnJvbVBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkKiBwYXN0ZWJv
YXJkLCBib29sIG9ubHlGaXJzdFVSTCA9IGZhbHNlKQogewogICAgIC8vIE5PVEU6IFdlIG11c3Qg
YWx3YXlzIGNoZWNrIFthdmFpbGFibGVUeXBlcyBjb250YWluc09iamVjdDpdIGJlZm9yZSBhY2Nl
c3NpbmcgcGFzdGVib2FyZCBkYXRhCiAgICAgLy8gb3IgQ29yZUZvdW5kYXRpb24gd2lsbCBwcmlu
dGYgd2hlbiB0aGVyZSBpcyBub3QgZGF0YSBvZiB0aGUgY29ycmVzcG9uZGluZyB0eXBlLgpAQCAt
Mjc0LDYgKzI3NSwyNiBAQCBIYXNoU2V0PFN0cmluZz4gQ2xpcGJvYXJkTWFjOjp0eXBlcygpIGNv
bnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLy8gRklYTUU6IFdlIGNvdWxkIGNhY2hlIHRo
ZSBjb21wdXRlZCBmaWxlTGlzdCBpZiBuZWNlc3NhcnkKKy8vIEN1cnJlbnRseSBlYWNoIGFjY2Vz
cyBnZXRzIGEgbmV3IGNvcHksIHNldERhdGEoKSBtb2RpZmljYXRpb25zIHRvIHRoZQorLy8gY2xp
cGJvYXJkIGFyZSBub3QgcmVmbGVjdGVkIGluIGFueSBGaWxlTGlzdCBvYmplY3RzIHRoZSBwYWdl
IGhhcyBhY2Nlc3NlZCBhbmQgc3RvcmVkCitQYXNzUmVmUHRyPEZpbGVMaXN0PiBDbGlwYm9hcmRN
YWM6OmZpbGVzKCkgY29uc3QKK3sKKyAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFi
bGUpCisgICAgICAgIHJldHVybiBGaWxlTGlzdDo6Y3JlYXRlKCk7CisKKyAgICBOU0FycmF5ICph
YnNvbHV0ZVVSTHMgPSBhYnNvbHV0ZVVSTHNGcm9tUGFzdGVib2FyZChtX3Bhc3RlYm9hcmQuZ2V0
KCkpOworICAgIE5TVUludGVnZXIgY291bnQgPSBbYWJzb2x1dGVVUkxzIGNvdW50XTsKKworICAg
IFJlZlB0cjxGaWxlTGlzdD4gZmlsZUxpc3QgPSBGaWxlTGlzdDo6Y3JlYXRlKCk7CisgICAgZm9y
IChOU1VJbnRlZ2VyIHggPSAwOyB4IDwgY291bnQ7IHgrKykgeworICAgICAgICBOU1VSTCAqYWJz
b2x1dGVVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpbYWJzb2x1dGVVUkxzIG9iamVjdEF0SW5k
ZXg6eF1dOworICAgICAgICBBU1NFUlQoW2Fic29sdXRlVVJMIGlzRmlsZVVSTF0pOworICAgICAg
ICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZShbYWJzb2x1dGVVUkwgcGF0aF0pKTsKKyAg
ICB9CisgICAgcmV0dXJuIGZpbGVMaXN0LnJlbGVhc2UoKTsgLy8gV2Ugd2lsbCBhbHdheXMgcmV0
dXJuIGEgRmlsZUxpc3QsIHNvbWV0aW1lcyBlbXB0eQorfQorCiAvLyBUaGUgcmVzdCBvZiB0aGVz
ZSBnZXR0ZXJzIGRvbid0IHJlYWxseSBoYXZlIGFueSBpbXBhY3Qgb24gc2VjdXJpdHksIHNvIGZv
ciBub3cgbWFrZSBubyBjaGVja3MKIAogdm9pZCBDbGlwYm9hcmRNYWM6OnNldERyYWdJbWFnZShD
YWNoZWRJbWFnZSogaW1nLCBjb25zdCBJbnRQb2ludCAmbG9jKQo=
</data>
<flag name="review"
          id="15423"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31064</attachid>
            <date>2009-06-08 14:26:44 -0700</date>
            <delta_ts>2009-06-19 11:57:47 -0700</delta_ts>
            <desc>Updated patch to not break other builds.</desc>
            <filename>Updated-patch-to-not-break-other-builds..patch</filename>
            <type>text/plain</type>
            <size>25753</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">MWY4ZDRjZmU4MTI4YWEwZTA4NTk1MWRlY2M0MDc4MmExOWI3ZDVhYgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg1Y2M5N2Yu
LmM1NTJkM2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTkwMyw2ICs5MDMsMzIgQEAKIAogMjAwOS0wNS0yMSAgRXJpYyBT
ZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRXhwb3NlIGZpbGVzIGluIHRoZSBjbGlwYm9hcmQgaW4gb25kcm9w
IGV2ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1OTE2CisKKyAgICAgICAgRmlsZS5maWxlU2l6ZSBzdWJ0ZXN0cyBmYWlsIGR1ZSB0byBsaW1p
dGF0aW9ucyBvZiBEUlQgZHVyaW5nIGh0dHAgdGVzdHM6CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTkwOQorCisgICAgICAgIERpcmVjdG9yeSBzdWJ0
ZXN0cyBmYWlsIHVudGlsIGNvcnJlY3Qgb2YgZGlyZWN0b3J5IEZpbGUgdGVzdHMgaXMgZGVjaWRl
ZCBieToKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1
ODc5CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9jbGlwYm9hcmQt
ZmlsZS1hY2Nlc3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NsaXBib2FyZC9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvcmVzb3VyY2VzL1RFTVBMQVRFLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL3Jlc291
cmNlcy9hcHBsZS5naWY6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9yZXNvdXJjZXMvYXBwbGUuZ2lmLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY2xp
cGJvYXJkL3Jlc291cmNlcy9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MuanM6IEFkZGVkLgorICAgICAg
ICAodmFyKToKKyAgICAgICAgKG1vdmVNb3VzZVRvQ2VudGVyT2ZFbGVtZW50KToKKyAgICAgICAg
KGRyYWdGaWxlc09udG9EcmFnVGFyZ2V0KToKKyAgICAgICAgKGZpbGVMaXN0U2hvdWxkQmUpOgor
ICAgICAgICAoZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMpOgorICAgICAgICAocnVu
VGVzdCk6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvcmVzb3VyY2Vz
L21vemlsbGEuZ2lmOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
cmVzb3VyY2VzL21vemlsbGEuZ2lmLgorCisyMDA5LTA1LTIxICBFcmljIFNlaWRlbCAgPGVyaWNA
d2Via2l0Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292Lgog
CiAgICAgICAgIEZpeCBmaWxlLWlucHV0LWZpbGVzLWFjY2VzcyB3aGljaCB3YXMgcGFzc2luZyBm
b3IgdGhlIHdyb25nIHJlYXNvbnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2NsaXBib2FyZC9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUt
YWNjZXNzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43
MzM3NTJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9jbGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDc3IEBACitUZXN0cyBhY2Nlc3MgdG8gZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitEcmFnZ2luZyBubyBmaWxlcyBzaG91bGQgcmV0dXJu
IGFuIGVtcHR5IGZpbGUgbGlzdCAoYXJiaXRyYXJ5IGltcGxlbWVudGF0aW9uIGRldGFpbCk6CitP
biBkcmFnb3ZlcjoKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aCBpcyAwCitP
biBkcm9wOgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoIGlzIDAKK0RyYWdn
aW5nIGEgc2luZ2xlIChub24tZXhpc3RhbnQpIGZpbGUgb250byBhbiBlbGVtZW50OgorT24gZHJh
Z292ZXI6CitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggaXMgMAorT24gZHJh
Z292ZXI6CitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggaXMgMAorT24gZHJv
cDoKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aCBpcyAxCitQQVNTIGV2ZW50
LmRhdGFUcmFuc2Zlci5maWxlc1swXS5maWxlTmFtZSBpcyAiRFJURmFrZUZpbGUiCitQQVNTIGV2
ZW50LmRhdGFUcmFuc2Zlci5maWxlc1swXS5maWxlU2l6ZSBpcyAwCitGSVhNRTogRmlsZS5maWxl
U2l6ZSBhbHdheXMgcmV0dXJucyAwIGZvciBmaWxlcyBkcm9wcGVkIGJ5IGV2ZW50U2VuZGVyLmJl
Z2luRHJhZ1dpdGhGaWxlcyBmcm9tIGh0dHAgdGVzdHM6ICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjU5MDkKK0RyYWdnaW5nIGEgcmVhbCBmaWxlIG9udG8gYW4gZWxl
bWVudDoKK09uIGRyYWdvdmVyOgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3Ro
IGlzIDAKK09uIGRyYWdvdmVyOgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3Ro
IGlzIDAKK09uIGRyb3A6CitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggaXMg
MQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0uZmlsZU5hbWUgaXMgImFwcGxlLmdp
ZiIKK0ZBSUwgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzBdLmZpbGVTaXplIHNob3VsZCBiZSAx
NDc2LiBXYXMgMC4KK0RyYWdnaW5nIHR3byBmaWxlcyBvbnRvIGFuIGVsZW1lbnQ6CitPbiBkcmFn
b3ZlcjoKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aCBpcyAwCitPbiBkcmFn
b3ZlcjoKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aCBpcyAwCitPbiBkcm9w
OgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoIGlzIDIKK1BBU1MgZXZlbnQu
ZGF0YVRyYW5zZmVyLmZpbGVzWzBdLmZpbGVOYW1lIGlzICJhcHBsZS5naWYiCitGQUlMIGV2ZW50
LmRhdGFUcmFuc2Zlci5maWxlc1swXS5maWxlU2l6ZSBzaG91bGQgYmUgMTQ3Ni4gV2FzIDAuCitQ
QVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc1sxXS5maWxlTmFtZSBpcyAibW96aWxsYS5naWYi
CitGQUlMIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc1sxXS5maWxlU2l6ZSBzaG91bGQgYmUgMjU5
My4gV2FzIDAuCitEcmFnZ2luZyB0d28gZmlsZXMgaW4gcmV2ZXJzZSBhbHBoYWJldGljYWwgb3Jk
ZXIgb250byBhbiBlbGVtZW50OgorT24gZHJhZ292ZXI6CitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zl
ci5maWxlcy5sZW5ndGggaXMgMAorT24gZHJhZ292ZXI6CitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zl
ci5maWxlcy5sZW5ndGggaXMgMAorT24gZHJvcDoKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZp
bGVzLmxlbmd0aCBpcyAyCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc1swXS5maWxlTmFt
ZSBpcyAibW96aWxsYS5naWYiCitGQUlMIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc1swXS5maWxl
U2l6ZSBzaG91bGQgYmUgMjU5My4gV2FzIDAuCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxl
c1sxXS5maWxlTmFtZSBpcyAiYXBwbGUuZ2lmIgorRkFJTCBldmVudC5kYXRhVHJhbnNmZXIuZmls
ZXNbMV0uZmlsZVNpemUgc2hvdWxkIGJlIDE0NzYuIFdhcyAwLgorRklYTUU6IFdlIHNob3VsZCBu
b3QgYWxsb3cgZWxlbWVudCB0byBhY2NlcHQgZHJvcHMgaW5jbHVkaW5nIGRpcmVjdG9yaWVzIHVu
bGVzcyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4NzkgaXMgZml4
ZWQgdG8gbWFrZSBkaXJlY3RvcnkgRmlsZSBvYmplY3RzIHVzZWZ1bCBmcm9tIEphdmFTY3JpcHQu
ICBUaGUgcGFnZSBpcyBnaXZlbiBGaWxlIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byBkaXJlY3Rv
cmllcywgYnV0IGZvcm0gc3VibWlzc2lvbiBhbmQgeGhyLnNlbmQoKSB3aWxsIGZhaWwuCitEcmFn
Z2luZyBhIGRpcmVjdG9yeSBvbnRvIGFuIGVsZW1lbnQ6CitPbiBkcmFnb3ZlcjoKK1BBU1MgZXZl
bnQuZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aCBpcyAwCitPbiBkcmFnb3ZlcjoKK1BBU1MgZXZl
bnQuZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aCBpcyAwCitPbiBkcm9wOgorRkFJTCBldmVudC5k
YXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoIHNob3VsZCBiZSAwLiBXYXMgMS4KK0RyYWdnaW5nIGEg
ZmlsZSBhbmQgYSBkaXJlY3Rvcnkgb250byBhbiBlbGVtZW50OgorT24gZHJhZ292ZXI6CitQQVNT
IGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggaXMgMAorT24gZHJhZ292ZXI6CitQQVNT
IGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggaXMgMAorT24gZHJvcDoKK0ZBSUwgZXZl
bnQuZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aCBzaG91bGQgYmUgMC4gV2FzIDIuCitEcmFnZ2lu
ZyBhIGRpcmVjdG9yeSBhbmQgYSBmaWxlIG9udG8gYW4gZWxlbWVudDoKK09uIGRyYWdvdmVyOgor
UEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoIGlzIDAKK09uIGRyYWdvdmVyOgor
UEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoIGlzIDAKK09uIGRyb3A6CitGQUlM
IGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggc2hvdWxkIGJlIDAuIFdhcyAyLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL2NsaXBib2FyZC1m
aWxlLWFjY2Vzcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9h
cmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMWUzMjVhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvY2xpcGJvYXJkL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5odG1sCkBAIC0wLDAg
KzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzLXRl
c3QtcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy10
ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvY2xpcGJvYXJkL3Jlc291cmNlcy9URU1QTEFURS5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MyZTQwOQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL3Jlc291cmNl
cy9URU1QTEFURS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iWU9VUl9KU19GSUxFX0hFUkUiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9yZXNvdXJjZXMvYXBwbGUuZ2lmIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvcmVzb3VyY2VzL2FwcGxlLmdpZgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTg0NGM4CkJpbmFyeSBmaWxlcyAv
ZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQv
cmVzb3VyY2VzL2FwcGxlLmdpZiBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL3Jlc291cmNlcy9jbGlwYm9hcmQtZmlsZS1hY2Nlc3Mu
anMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9yZXNvdXJjZXMv
Y2xpcGJvYXJkLWZpbGUtYWNjZXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjA2ZDQzNWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NsaXBib2FyZC9yZXNvdXJjZXMvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLmpzCkBAIC0w
LDAgKzEsMTE4IEBACitkZXNjcmlwdGlvbigiVGVzdHMgYWNjZXNzIHRvIGV2ZW50LmRhdGFUcmFu
c2Zlci5maWxlcyIpOworCit2YXIgZHJhZ1RhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworZHJhZ1RhcmdldC5pbm5lckhUTUwgPSAiRHJhZyBoZXJlIgorZHJhZ1RhcmdldC5z
dHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAiYmx1ZSI7CitkcmFnVGFyZ2V0LnN0eWxlLndpZHRoID0g
IjEwMHB4IjsKK2RyYWdUYXJnZXQuc3R5bGUuaGVpZ2h0ID0gIjEwMHB4IjsKKy8vIEltcG9ydGFu
dCB0aGF0IHdlIHB1dCB0aGlzIGF0IHRoZSB0b3Agb2YgdGhlIGRvYyBzbyB0aGF0IGxvZ2dpbmcg
ZG9lcyBub3QgY2F1c2UgaXQgdG8gZ28gb3V0IG9mIHZpZXcgKGFuZCBiZSB1bmRyYWdhYmxlKQor
ZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZHJhZ1RhcmdldCwgZG9jdW1lbnQuYm9keS5maXJz
dENoaWxkKTsKKworZHJhZ1RhcmdldC5hZGRFdmVudExpc3RlbmVyKCJkcmFnZW50ZXJlZCIsIGZ1
bmN0aW9uKCkgeworICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gImNvcHkiOwor
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cit9LCBmYWxzZSk7CisKK2RyYWdUYXJnZXQuYWRk
RXZlbnRMaXN0ZW5lcigiZHJhZ292ZXIiLCBmdW5jdGlvbigpIHsKKyAgICBkZWJ1ZygiT24gZHJh
Z292ZXI6IikKKyAgICBmaWxlTGlzdFNob3VsZEJlKCJldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMi
LCBbXSk7CisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK30sIGZhbHNlKTsKKwordmFyIGV4
cGVjdGVkRmlsZXNPbkRyb3A7CitkcmFnVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoImRyb3AiLCBm
dW5jdGlvbigpIHsKKyAgICBkZWJ1ZygiT24gZHJvcDoiKQorICAgIGZpbGVMaXN0U2hvdWxkQmUo
ImV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyIsIGV4cGVjdGVkRmlsZXNPbkRyb3ApOworICAgIGV2
ZW50LnByZXZlbnREZWZhdWx0KCk7Cit9LCBmYWxzZSk7CisKK2Z1bmN0aW9uIG1vdmVNb3VzZVRv
Q2VudGVyT2ZFbGVtZW50KGVsZW1lbnQpCit7CisgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9m
ZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICB2YXIgY2VudGVyWSA9IGVs
ZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKGNlbnRlclgsIGNlbnRlclkpOworfQorCitmdW5jdGlvbiBkcmFnRmls
ZXNPbnRvRHJhZ1RhcmdldChmaWxlcykgeworICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhG
aWxlcyhmaWxlcyk7CisgICAgbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZHJhZ1RhcmdldCk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiBmaWxlTGlzdFNob3Vs
ZEJlKGZpbGVMaXN0U3RyaW5nLCBmaWxlc0FycmF5KQoreworICAgIHNob3VsZEJlKGZpbGVMaXN0
U3RyaW5nICsgIi5sZW5ndGgiLCAiIiArIGZpbGVzQXJyYXkubGVuZ3RoKTsKKyAgICBmb3IgKHZh
ciB4ID0gMDsgeCA8IGZpbGVzQXJyYXkubGVuZ3RoOyB4KyspIHsKKyAgICAgICAgdmFyIGZpbGVW
YWx1ZVN0cmluZyA9IGZpbGVMaXN0U3RyaW5nICsgIlsiICsgeCArICJdIjsKKyAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKGZpbGVWYWx1ZVN0cmluZyArICIuZmlsZU5hbWUiLCBmaWxlc0Fy
cmF5W3hdWyduYW1lJ10pOworICAgICAgICBzaG91bGRCZShmaWxlVmFsdWVTdHJpbmcgKyAiLmZp
bGVTaXplIiwgIiIgKyBmaWxlc0FycmF5W3hdWydzaXplJ10pOworICAgIH0KK30KKworZnVuY3Rp
b24gZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMocGF0aHNBcnJheSwgZmlsZXNBcnJh
eSkKK3sKKyAgICBleHBlY3RlZEZpbGVzT25Ecm9wID0gZmlsZXNBcnJheTsKKyAgICBkcmFnRmls
ZXNPbnRvRHJhZ1RhcmdldChwYXRoc0FycmF5KTsKK30KKworZnVuY3Rpb24gdGVzdERyYWdnaW5n
RmlsZXMoZmlsZXNBcnJheSkKK3sKKyAgICAvLyBXZSBjb3VsZCBtYWtlIGEgd2F5IHRvIHBhcnNl
IHRoZSBmaWxlbmFtZSBmcm9tIHRoZSBwYXRoLCBhbmQgdGhlbiBvbmx5IG5lZWQgdG8gcGFzcwor
ICAgIC8vIHRoZSBwYXRoIGluIHRoZSBmaWxlc0FycmF5LgorICAgIHZhciBwYXRoc09ubHkgPSBm
aWxlc0FycmF5Lm1hcChmdW5jdGlvbihmaWxlU3BlYykgeyByZXR1cm4gZmlsZVNwZWNbJ3BhdGgn
XTsgfSk7CisgICAgZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMocGF0aHNPbmx5LCBm
aWxlc0FycmF5KTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgZGVidWcoIkRyYWdn
aW5nIG5vIGZpbGVzIHNob3VsZCByZXR1cm4gYW4gZW1wdHkgZmlsZSBsaXN0IChhcmJpdHJhcnkg
aW1wbGVtZW50YXRpb24gZGV0YWlsKToiKTsKKyAgICB0ZXN0RHJhZ2dpbmdGaWxlcyhbXSk7CisK
KyAgICBkZWJ1ZygiRHJhZ2dpbmcgYSBzaW5nbGUgKG5vbi1leGlzdGFudCkgZmlsZSBvbnRvIGFu
IGVsZW1lbnQ6Iik7CisgICAgdGVzdERyYWdnaW5nRmlsZXMoWworICAgICAgICB7ICdwYXRoJzog
J0RSVEZha2VGaWxlJywgJ25hbWUnIDogJ0RSVEZha2VGaWxlJywgJ3NpemUnIDogMCB9CisgICAg
XSk7CisKKyAgICBkZWJ1ZygiRklYTUU6IEZpbGUuZmlsZVNpemUgYWx3YXlzIHJldHVybnMgMCBm
b3IgZmlsZXMgZHJvcHBlZCBieSBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMgZnJvbSBo
dHRwIHRlc3RzOiAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1OTA5
Iik7CisKKyAgICBkZWJ1ZygiRHJhZ2dpbmcgYSByZWFsIGZpbGUgb250byBhbiBlbGVtZW50OiIp
OworICAgIHRlc3REcmFnZ2luZ0ZpbGVzKFsKKyAgICAgICAgeyAncGF0aCc6ICdyZXNvdXJjZXMv
YXBwbGUuZ2lmJywgJ25hbWUnIDogJ2FwcGxlLmdpZicsICdzaXplJyA6IDE0NzYgfQorICAgIF0p
OworCisgICAgZGVidWcoIkRyYWdnaW5nIHR3byBmaWxlcyBvbnRvIGFuIGVsZW1lbnQ6Iik7Cisg
ICAgdGVzdERyYWdnaW5nRmlsZXMoWworICAgICAgICB7ICdwYXRoJzogJ3Jlc291cmNlcy9hcHBs
ZS5naWYnLCAnbmFtZScgOiAnYXBwbGUuZ2lmJywgJ3NpemUnIDogMTQ3NiB9LAorICAgICAgICB7
ICdwYXRoJzogJ3Jlc291cmNlcy9tb3ppbGxhLmdpZicsICduYW1lJyA6ICdtb3ppbGxhLmdpZics
ICdzaXplJyA6IDI1OTMgfQorICAgIF0pOworCisgICAgZGVidWcoIkRyYWdnaW5nIHR3byBmaWxl
cyBpbiByZXZlcnNlIGFscGhhYmV0aWNhbCBvcmRlciBvbnRvIGFuIGVsZW1lbnQ6Iik7CisgICAg
dGVzdERyYWdnaW5nRmlsZXMoWworICAgICAgICB7ICdwYXRoJzogJ3Jlc291cmNlcy9tb3ppbGxh
LmdpZicsICduYW1lJyA6ICdtb3ppbGxhLmdpZicsICdzaXplJyA6IDI1OTMgfSwKKyAgICAgICAg
eyAncGF0aCc6ICdyZXNvdXJjZXMvYXBwbGUuZ2lmJywgJ25hbWUnIDogJ2FwcGxlLmdpZicsICdz
aXplJyA6IDE0NzYgfQorICAgIF0pOworCisgICAgLy8gRGlyZWN0b3J5IGRyYWdnaW5nIGJlaGF2
aW9yIGlzIGNvdmVyZWQgYnkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1ODUyIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4NzkK
KyAgICBkZWJ1ZygiRklYTUU6IFdlIHNob3VsZCBub3QgYWxsb3cgZWxlbWVudCB0byBhY2NlcHQg
ZHJvcHMgaW5jbHVkaW5nIGRpcmVjdG9yaWVzIHVubGVzcyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjU4NzkgaXMgZml4ZWQgdG8gbWFrZSBkaXJlY3RvcnkgRmlsZSBv
YmplY3RzIHVzZWZ1bCBmcm9tIEphdmFTY3JpcHQuICBUaGUgcGFnZSBpcyBnaXZlbiBGaWxlIG9i
amVjdHMgY29ycmVzcG9uZGluZyB0byBkaXJlY3RvcmllcywgYnV0IGZvcm0gc3VibWlzc2lvbiBh
bmQgeGhyLnNlbmQoKSB3aWxsIGZhaWwuIik7CisgICAgZGVidWcoIkRyYWdnaW5nIGEgZGlyZWN0
b3J5IG9udG8gYW4gZWxlbWVudDoiKTsKKyAgICBkcmFnZ2luZ1BhdGhzU2hvdWxkUmVzdWx0SW5G
aWxlcyhbJ3Jlc291cmNlcy9kaXJlY3RvcnktZm9yLWRyYWdnaW5nJ10sIFtdKTsKKworICAgIC8v
IE5vdGU6IFRoZSBvcmRlciBvZiBzZWxlY3Rpb24gaW4gdGhlIEZpbmRlciBjaGFuZ2VzIHRoZSBv
cmRlciBvZiBmaWxlIHBhdGhzIGluIHRoZSBwYXN0ZWJvYXJkCisgICAgLy8gdGh1cyBpdCdzIGlt
cG9ydGFudCB0aGF0IHdlIHRlc3QgZGlmZmVyZW50IG9yZGVycyBoZXJlIGFzIHdlbGwgKGF0IGxl
YXN0IG9uIHRoZSBNYWMpCisgICAgLy8gQm90aCBkcm9wcyBzaG91bGQgYmUgcmVmdXNlZCBvciBz
dWNjZWVkIGJhc2VkIG9uIGhvdyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjU4NzkgaXMgcmVzb2x2ZWQuICBDdXJyZW50bHkgd2UgZXhwZWN0IGRyb3BzIHRvIGJlIHJl
ZnVzZWQuCisgICAgZGVidWcoIkRyYWdnaW5nIGEgZmlsZSBhbmQgYSBkaXJlY3Rvcnkgb250byBh
biBlbGVtZW50OiIpOworICAgIGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJbkZpbGVzKFsncmVz
b3VyY2VzL2FwcGxlLmdpZicsICdyZXNvdXJjZXMvZGlyZWN0b3J5LWZvci1kcmFnZ2luZyddLCBb
XSk7CisKKyAgICBkZWJ1ZygiRHJhZ2dpbmcgYSBkaXJlY3RvcnkgYW5kIGEgZmlsZSBvbnRvIGFu
IGVsZW1lbnQ6IikKKyAgICBkcmFnZ2luZ1BhdGhzU2hvdWxkUmVzdWx0SW5GaWxlcyhbJ3Jlc291
cmNlcy9kaXJlY3RvcnktZm9yLWRyYWdnaW5nJywgJ3Jlc291cmNlcy9hcHBsZS5naWYnXSwgW10p
OworfQorCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgcnVuVGVzdCgpOworICAgIC8v
IENsZWFuIHVwIGFmdGVyIG91cnNlbHZlcworICAgIGRyYWdUYXJnZXQucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZChkcmFnVGFyZ2V0KTsKK30gZWxzZSB7CisgICAgdGVzdEZhaWxlZCgiVGhpcyB0ZXN0
IGlzIG5vdCBpbnRlcmFjdGl2ZSwgcGxlYXNlIHJ1biB1c2luZyBEdW1wUmVuZGVyVHJlZSIpOwor
fQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL3Jlc291cmNlcy9tb3ppbGxhLmdpZiBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL3Jlc291cmNlcy9tb3pp
bGxhLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDliMzBlCkJpbmFy
eSBmaWxlcyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9j
bGlwYm9hcmQvcmVzb3VyY2VzL21vemlsbGEuZ2lmIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5Yjc3OTdmLi45NjQxMjRiIDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY1IEBACisyMDA5LTA1LTIxICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2Ug
ZmlsZXMgaW4gdGhlIGNsaXBib2FyZCBpbiBvbmRyb3AgZXZlbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTkxNgorCisgICAgICAgIE1ha2UgaXQg
cG9zc2libGUgZm9yIGFwcGxpY2F0aW9ucyBsaWtlIGdtYWlsIHRvIGltcGxlbWVudAorICAgICAg
ICBkcmFnIGFuZCBkcm9wIG9mIGF0dGFjaG1lbnRzIG9udG8gZW1haWwgbWVzc2FnZXMuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBleHBvc2VzIGFuIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyBhY2Nl
c3NvcgorICAgICAgICBvbiB0aGUgZHJvcCBldmVudC4gIE5vIGluZm9ybWF0aW9uIGlzIGV4cG9z
ZWQgZHVyaW5nIGRyYWdvdmVyLgorICAgICAgICBUaGlzIGZvbGxvd3MgdGhlIEhUTUwgNSBkcmFn
IGFuZCBkcm9wIHNlY3VyaXR5IG1vZGVsOgorICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9UUi9o
dG1sNS9lZGl0aW5nLmh0bWwjc2VjdXJpdHktcmlza3MtaW4tdGhlLWRyYWctYW5kLWRyb3AtbW9k
ZWwKKyAgICAgICAgVGhlIHRlc3QgaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvY2xpcGJv
YXJkLWZpbGUtYWNjZXNzLmh0bWwKKyAgICAgICAgdmVyaWZpZXMgdGhpcyBiZWhhdmlvci4KKwor
ICAgICAgICBJbnRlcm5ldCBFeHBsb3JlciBzaG93cyBoaXN0b3JpY2FsIGRvY3VtZW50YXRpb24g
b2Ygc3VwcG9ydGluZworICAgICAgICBnZXREYXRhKCdGaWxlJykgYXMgYSB3YXkgb2YgZXhwb3Np
bmcgZmlsZXMgb24gdGhlIHBhc3RlYm9hcmQuICBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZWly
IGRvY3M6CisgICAgICAgIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9t
czUzNzY1OChWUy44NSkuYXNweAorICAgICAgICBoYXMgcmVtb3ZlZCB0aGlzIHJlZmVyZW5jZSAo
YXMgZmFyIGFzIEkgY2FuIHRlbGwgSUUgbmV2ZXIgaW1wbGVtZW50ZWQgaXQpCisgICAgICAgIEkg
aGF2ZSBhIHByaW50ZWQgY29weSBvZiB0aGF0IFVSTCBmcm9tIDIwMDggb24gbXkgZGVzayBkZXNj
cmliaW5nIGdldERhdGEoJ0ZpbGUnKSBpbiBJRS4KKyAgICAgICAgSUUgZG9lcyBub3QgZm9sbG93
IHRoZSBIVE1MNSBjbGlwYm9hcmQgc2VjdXJpdHkgbW9kZWwgYW5kIGFsd2F5cyBhbGxvd3MgYWNj
ZXNzIHRvIHRoZSBmdWxsIGNsaXBib2FyZCwgZXZlbiBvbiBkcmFnb3Zlci4KKworICAgICAgICBJ
IGNob29zZSBub3QgdG8gdXNlIElFJ3MgZ2V0RGF0YSgnRmlsZScpIGFuZCBpbnN0ZWFkIGFkZGVk
IC5maWxlcworICAgICAgICBzbyB0aGF0IHRoZSBhY2Nlc3NvciBjb3VsZCBoYXZlIGEgdHlwZSwg
bWF0Y2hpbmcgV2ViS2l0J3MgZXhpc3RpbmcKKyAgICAgICAgLmZpbGVzIGFjY2Vzc29yIG9uIEhU
TUxJbnB1dEVsZW1lbnQuCisKKyAgICAgICAgTW96aWxsYSBoYXMgZXF1aXZhbGVudCBmaWxlIGFj
Y2VzczoKKyAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLm1vekdldERhdGFBdCgiYXBwbGljYXRp
b24veC1tb3otZmlsZSIsIDApOworICAgICAgICB3aGljaCBhbHNvIGRvZXMgbm90IHJldHVybiBh
IHR5cGVkIHZhbHVlLgorICAgICAgICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9Fbi9E
cmFnRHJvcC9SZWNvbW1lbmRlZF9EcmFnX1R5cGVzI0RyYWdnaW5nX0ZpbGVzCisKKyAgICAgICAg
VGhpcyBpcyBvbmx5IGltcGxlbWVudGVkIGZvciBNYWMgV2ViS2l0LiAgQWxsIG90aGVyIHBsYXRm
b3JtcyAoaW5jbHVkaW5nIEFwcGxlJ3MgV2luIFdlYktpdCkKKyAgICAgICAgaGF2ZSBpbmNvbXBs
ZXRlIENsaXBib2FyZCBpbXBsZW1lbnRhdGlvbnMgYW5kIHdpbGwgcmVxdWlyZSBleHBlcnRzIGZy
b20gdGhvc2UgcGxhdGZvcm1zCisgICAgICAgIHRvIGFkZCB0aGlzIGZ1bmN0aW9uYWxpdHkuICBS
aWdodCBub3cgdGhleSBhbGwgaGF2ZSBDbGlwYm9hcmQqOjpmaWxlcygpIG1ldGhvZHMgd2hpY2gg
Y2FsbCBub3RJbXBsZW1lbnRlZCgpOworCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvc2VjdXJp
dHkvY2xpcGJvYXJkL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5odG1sCisKKyAgICAgICAgKiBkb20v
Q2xpcGJvYXJkLmg6CisgICAgICAgICogZG9tL0NsaXBib2FyZC5pZGw6CisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2xpcGJvYXJkQ2hyb21pdW06OmZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9D
bGlwYm9hcmRDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpmaWxlcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9DbGlw
Ym9hcmRNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6YWJzb2x1dGVVUkxzRnJvbVBhc3RlYm9hcmRGaWxlbmFtZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6YWJzb2x1dGVVUkxzRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkTWFjOjpmaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vcXQvQ2xpcGJv
YXJkUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OmZpbGVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9D
bGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpmaWxlcyk6
CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL3d4L0NsaXBib2FyZFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFd4Ojpm
aWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guaDoKKwogMjAwOS0wNi0w
OCAgQWRhbSBMYW5nbGV5ICA8YWdsQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBTaWVkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuaCBiL1dlYkNv
cmUvZG9tL0NsaXBib2FyZC5oCmluZGV4IDU5YWUwMjYuLmJkOTI0NTAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL0NsaXBib2FyZC5oCisrKyBiL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5oCkBAIC0z
Myw2ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIEZpbGVMaXN0
OworCiAgICAgLy8gU3RhdGUgYXZhaWxhYmxlIGR1cmluZyBJRSdzIGV2ZW50cyBmb3IgZHJhZyBh
bmQgZHJvcCBhbmQgY29weS9wYXN0ZQogICAgIGNsYXNzIENsaXBib2FyZCA6IHB1YmxpYyBSZWZD
b3VudGVkPENsaXBib2FyZD4gewogICAgIHB1YmxpYzoKQEAgLTUzLDcgKzU1LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIAogICAgICAgICAvLyBleHRlbnNpb25zIGJleW9uZCBJRSdzIEFQ
SQogICAgICAgICB2aXJ0dWFsIEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0ID0gMDsKLSAg
ICAKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbGVMaXN0PiBmaWxlcygpIGNvbnN0ID0g
MDsKKwogICAgICAgICBJbnRQb2ludCBkcmFnTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Ry
YWdMb2M7IH0KICAgICAgICAgQ2FjaGVkSW1hZ2UqIGRyYWdJbWFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZHJhZ0ltYWdlLmdldCgpOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXREcmFnSW1hZ2Uo
Q2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRQb2ludCYpID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL0NsaXBib2FyZC5pZGwgYi9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuaWRsCmluZGV4IDZmZTgz
ZjcuLmRjODY3N2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5pZGwKKysrIGIv
V2ViQ29yZS9kb20vQ2xpcGJvYXJkLmlkbApAQCAtMzQsNiArMzQsNyBAQCBtb2R1bGUgY29yZSB7
CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxTdHJpbmdUbz1VbmRlZmlu
ZWRdIERPTVN0cmluZyBkcm9wRWZmZWN0OwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0Nv
bnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVkXSBET01TdHJpbmcgZWZmZWN0QWxsb3dlZDsKICAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDdXN0b21HZXR0ZXJdIEFycmF5IHR5cGVzOworICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRmlsZUxpc3QgZmlsZXM7CiAKICAgICAgICAgW0N1c3Rv
bV0gdm9pZCBjbGVhckRhdGEoaW4gW09wdGlvbmFsXSBET01TdHJpbmcgdHlwZSkKICAgICAgICAg
ICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0NsaXBib2FyZENocm9taXVtLmNwcAppbmRleCA4ZjlhYzdmLi41MzU1MTk5IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcApAQCAtMTc1LDYg
KzE3NSwxMiBAQCBIYXNoU2V0PFN0cmluZz4gQ2xpcGJvYXJkQ2hyb21pdW06OnR5cGVzKCkgY29u
c3QKICAgICByZXR1cm4gcmVzdWx0czsKIH0KIAorUGFzc1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJv
YXJkQ2hyb21pdW06OmZpbGVzKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiAwOworfQorCiB2b2lkIENsaXBib2FyZENocm9taXVtOjpzZXREcmFnSW1hZ2UoQ2Fj
aGVkSW1hZ2UqIGltYWdlLCBOb2RlKiBub2RlLCBjb25zdCBJbnRQb2ludCYgbG9jKQogewogICAg
IGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRJbWFnZVdyaXRhYmxlICYmIHBvbGljeSgpICE9IENs
aXBib2FyZFdyaXRhYmxlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9D
bGlwYm9hcmRDaHJvbWl1bS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRD
aHJvbWl1bS5oCmluZGV4IDBhODNmZDQuLmNmMmYwNDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmgKQEAgLTU5LDcgKzU5LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBib29sIHNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIGRhdGEpOwogCiAgICAgICAgIC8vIGV4dGVuc2lvbnMgYmV5b25kIElFJ3MgQVBJ
Ci0gICAgICAgIEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0OworICAgICAgICB2aXJ0dWFs
IEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8RmlsZUxpc3Q+IGZpbGVzKCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBzZXREcmFnSW1hZ2Uo
Q2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRQb2ludCYpOwogICAgICAgICB2b2lkIHNldERyYWdJbWFn
ZUVsZW1lbnQoTm9kZSosIGNvbnN0IEludFBvaW50Jik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJv
YXJkR3RrLmNwcAppbmRleCA0NGFhN2Y3Li44M2NlODI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Ns
aXBib2FyZEd0ay5jcHAKQEAgLTY5LDYgKzY5LDEyIEBAIEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9h
cmRHdGs6OnR5cGVzKCkgY29uc3QKICAgICByZXR1cm4gSGFzaFNldDxTdHJpbmc+KCk7CiB9CiAK
K1Bhc3NSZWZQdHI8RmlsZUxpc3Q+IENsaXBib2FyZEd0azo6ZmlsZXMoKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIEludFBvaW50IENsaXBib2Fy
ZEd0azo6ZHJhZ0xvY2F0aW9uKCkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmggYi9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaAppbmRleCBiOGI0ZGRmLi43MzE0YWU0IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaApAQCAtNDcsNyArNDcsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIFN0cmluZyBnZXREYXRhKGNvbnN0IFN0cmluZyYsIGJvb2wmKSBjb25z
dDsKICAgICAgICAgYm9vbCBzZXREYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwog
Ci0gICAgICAgIEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0OworICAgICAgICB2aXJ0dWFs
IEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8RmlsZUxpc3Q+IGZpbGVzKCkgY29uc3Q7CisKICAgICAgICAgSW50UG9pbnQgZHJhZ0xvY2F0
aW9uKCkgY29uc3Q7CiAgICAgICAgIENhY2hlZEltYWdlKiBkcmFnSW1hZ2UoKSBjb25zdDsKICAg
ICAgICAgdm9pZCBzZXREcmFnSW1hZ2UoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRQb2ludCYpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLmggYi9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMuaAppbmRleCBkYjZlY2I2Li45YmRkMjc2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMuaAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBOU1Bh
c3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOworY2xhc3MgRmls
ZUxpc3Q7CiAKIGNsYXNzIENsaXBib2FyZE1hYyA6IHB1YmxpYyBDbGlwYm9hcmQsIHB1YmxpYyBD
YWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CkBAIC02MCw2ICs2MSw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICAvLyBleHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSQogICAgIHZpcnR1YWwgSGFz
aFNldDxTdHJpbmc+IHR5cGVzKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbGVM
aXN0PiBmaWxlcygpIGNvbnN0OwogCiAgICAgdm9pZCBzZXREcmFnSW1hZ2UoQ2FjaGVkSW1hZ2Uq
LCBjb25zdCBJbnRQb2ludCYpOwogICAgIHZvaWQgc2V0RHJhZ0ltYWdlRWxlbWVudChOb2RlICos
IGNvbnN0IEludFBvaW50Jik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlw
Ym9hcmRNYWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KaW5kZXgg
ZDFiNjZhNy4uNTJiYzk1MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJv
YXJkTWFjLm1tCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQpAQCAt
MzEsNiArMzEsNyBAQAogI2ltcG9ydCAiRHJhZ0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIkVkaXRv
ci5oIgogI2ltcG9ydCAiRm91bmRhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCAiRmlsZUxpc3QuaCIK
ICNpbXBvcnQgIkZyYW1lLmgiCiAjaW1wb3J0ICJJbWFnZS5oIgogI2ltcG9ydCAiUGFnZS5oIgpA
QCAtMTM5LDcgKzE0MCw3IEBAIHZvaWQgQ2xpcGJvYXJkTWFjOjpjbGVhckFsbERhdGEoKQogICAg
IFttX3Bhc3RlYm9hcmQuZ2V0KCkgZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5XSBvd25lcjpu
aWxdOwogfQogCi1zdGF0aWMgTlNBcnJheSAqYWJzb2x1dGVVUkxzRnJvbVBhc3RlYm9hcmRGaWxl
bmFtZXMoTlNQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIG9ubHlGaXJzdFVSTCkKK3N0YXRp
YyBOU0FycmF5ICphYnNvbHV0ZVVSTHNGcm9tUGFzdGVib2FyZEZpbGVuYW1lcyhOU1Bhc3RlYm9h
cmQqIHBhc3RlYm9hcmQsIGJvb2wgb25seUZpcnN0VVJMID0gZmFsc2UpCiB7CiAgICAgTlNBcnJh
eSAqZmlsZUxpc3QgPSBbcGFzdGVib2FyZCBwcm9wZXJ0eUxpc3RGb3JUeXBlOk5TRmlsZW5hbWVz
UGJvYXJkVHlwZV07CiAKQEAgLTE2Myw3ICsxNjQsNyBAQCBzdGF0aWMgTlNBcnJheSAqYWJzb2x1
dGVVUkxzRnJvbVBhc3RlYm9hcmRGaWxlbmFtZXMoTlNQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBi
bwogICAgIHJldHVybiB1cmxzOwogfQogCi1zdGF0aWMgTlNBcnJheSAqYWJzb2x1dGVVUkxzRnJv
bVBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIG9ubHlGaXJzdFVSTCkK
K3N0YXRpYyBOU0FycmF5ICphYnNvbHV0ZVVSTHNGcm9tUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQq
IHBhc3RlYm9hcmQsIGJvb2wgb25seUZpcnN0VVJMID0gZmFsc2UpCiB7CiAgICAgLy8gTk9URTog
V2UgbXVzdCBhbHdheXMgY2hlY2sgW2F2YWlsYWJsZVR5cGVzIGNvbnRhaW5zT2JqZWN0Ol0gYmVm
b3JlIGFjY2Vzc2luZyBwYXN0ZWJvYXJkIGRhdGEKICAgICAvLyBvciBDb3JlRm91bmRhdGlvbiB3
aWxsIHByaW50ZiB3aGVuIHRoZXJlIGlzIG5vdCBkYXRhIG9mIHRoZSBjb3JyZXNwb25kaW5nIHR5
cGUuCkBAIC0yNzQsNiArMjc1LDI2IEBAIEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRNYWM6OnR5
cGVzKCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisvLyBGSVhNRTogV2UgY291bGQg
Y2FjaGUgdGhlIGNvbXB1dGVkIGZpbGVMaXN0IGlmIG5lY2Vzc2FyeQorLy8gQ3VycmVudGx5IGVh
Y2ggYWNjZXNzIGdldHMgYSBuZXcgY29weSwgc2V0RGF0YSgpIG1vZGlmaWNhdGlvbnMgdG8gdGhl
CisvLyBjbGlwYm9hcmQgYXJlIG5vdCByZWZsZWN0ZWQgaW4gYW55IEZpbGVMaXN0IG9iamVjdHMg
dGhlIHBhZ2UgaGFzIGFjY2Vzc2VkIGFuZCBzdG9yZWQKK1Bhc3NSZWZQdHI8RmlsZUxpc3Q+IENs
aXBib2FyZE1hYzo6ZmlsZXMoKSBjb25zdAoreworICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9h
cmRSZWFkYWJsZSkKKyAgICAgICAgcmV0dXJuIEZpbGVMaXN0OjpjcmVhdGUoKTsKKworICAgIE5T
QXJyYXkgKmFic29sdXRlVVJMcyA9IGFic29sdXRlVVJMc0Zyb21QYXN0ZWJvYXJkKG1fcGFzdGVi
b2FyZC5nZXQoKSk7CisgICAgTlNVSW50ZWdlciBjb3VudCA9IFthYnNvbHV0ZVVSTHMgY291bnRd
OworCisgICAgUmVmUHRyPEZpbGVMaXN0PiBmaWxlTGlzdCA9IEZpbGVMaXN0OjpjcmVhdGUoKTsK
KyAgICBmb3IgKE5TVUludGVnZXIgeCA9IDA7IHggPCBjb3VudDsgeCsrKSB7CisgICAgICAgIE5T
VVJMICphYnNvbHV0ZVVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOlthYnNvbHV0ZVVSTHMgb2Jq
ZWN0QXRJbmRleDp4XV07CisgICAgICAgIEFTU0VSVChbYWJzb2x1dGVVUkwgaXNGaWxlVVJMXSk7
CisgICAgICAgIGZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKFthYnNvbHV0ZVVSTCBwYXRo
XSkpOworICAgIH0KKyAgICByZXR1cm4gZmlsZUxpc3QucmVsZWFzZSgpOyAvLyBXZSB3aWxsIGFs
d2F5cyByZXR1cm4gYSBGaWxlTGlzdCwgc29tZXRpbWVzIGVtcHR5Cit9CisKIC8vIFRoZSByZXN0
IG9mIHRoZXNlIGdldHRlcnMgZG9uJ3QgcmVhbGx5IGhhdmUgYW55IGltcGFjdCBvbiBzZWN1cml0
eSwgc28gZm9yIG5vdyBtYWtlIG5vIGNoZWNrcwogCiB2b2lkIENsaXBib2FyZE1hYzo6c2V0RHJh
Z0ltYWdlKENhY2hlZEltYWdlKiBpbWcsIGNvbnN0IEludFBvaW50ICZsb2MpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
cXQvQ2xpcGJvYXJkUXQuY3BwCmluZGV4IDFiZGUxMGIuLjdlZTk0NjQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
cXQvQ2xpcGJvYXJkUXQuY3BwCkBAIC0xNzgsNiArMTc4LDEyIEBAIEhhc2hTZXQ8U3RyaW5nPiBD
bGlwYm9hcmRRdDo6dHlwZXMoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1Bhc3NS
ZWZQdHI8RmlsZUxpc3Q+IENsaXBib2FyZFF0OjpmaWxlcygpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBDbGlwYm9hcmRRdDo6c2V0RHJh
Z0ltYWdlKENhY2hlZEltYWdlKiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIHBvaW50KSAKIHsKICAg
ICBzZXREcmFnSW1hZ2UoaW1hZ2UsIDAsIHBvaW50KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vcXQvQ2xpcGJvYXJkUXQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQu
aAppbmRleCBjYWYwNDBmLi40NDMyNGYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0
L0NsaXBib2FyZFF0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oCkBA
IC01Niw4ICs1Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBzZXREYXRh
KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICAKICAgICAgICAg
Ly8gZXh0ZW5zaW9ucyBiZXlvbmQgSUUncyBBUEkKLSAgICAgICAgSGFzaFNldDxTdHJpbmc+IHR5
cGVzKCkgY29uc3Q7Ci0gICAgCisgICAgICAgIHZpcnR1YWwgSGFzaFNldDxTdHJpbmc+IHR5cGVz
KCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWxlTGlzdD4gZmlsZXMoKSBj
b25zdDsKKwogICAgICAgICB2b2lkIHNldERyYWdJbWFnZShDYWNoZWRJbWFnZSosIGNvbnN0IElu
dFBvaW50Jik7CiAgICAgICAgIHZvaWQgc2V0RHJhZ0ltYWdlRWxlbWVudChOb2RlKiwgY29uc3Qg
SW50UG9pbnQmKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJk
V2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKaW5kZXggN2E4
OGMzYS4uY2IwNzhiYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJk
V2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCkBAIC01
ODAsNiArNTgwLDEyIEBAIEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRXaW46OnR5cGVzKCkgY29u
c3QKICAgICByZXR1cm4gcmVzdWx0czsKIH0KIAorUGFzc1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJv
YXJkV2luOjpmaWxlcygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gMDsKK30KKwogdm9pZCBDbGlwYm9hcmRXaW46OnNldERyYWdJbWFnZShDYWNoZWRJbWFnZSog
aW1hZ2UsIE5vZGUgKm5vZGUsIGNvbnN0IEludFBvaW50ICZsb2MpCiB7CiAgICAgaWYgKHBvbGlj
eSgpICE9IENsaXBib2FyZEltYWdlV3JpdGFibGUgJiYgcG9saWN5KCkgIT0gQ2xpcGJvYXJkV3Jp
dGFibGUpIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uaAppbmRleCAwMWY3MzMyLi5hYmE1
OTk0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uaAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uaApAQCAtNTcsNyArNTcsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgc2V0RGF0YShjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAgICAgCiAgICAgICAgIC8vIGV4dGVuc2lvbnMgYmV5
b25kIElFJ3MgQVBJCi0gICAgICAgIEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0OworICAg
ICAgICB2aXJ0dWFsIEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0OworICAgICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8RmlsZUxpc3Q+IGZpbGVzKCkgY29uc3Q7CiAgICAgCiAgICAgICAgIHZv
aWQgc2V0RHJhZ0ltYWdlKENhY2hlZEltYWdlKiwgY29uc3QgSW50UG9pbnQmKTsKICAgICAgICAg
dm9pZCBzZXREcmFnSW1hZ2VFbGVtZW50KE5vZGUqLCBjb25zdCBJbnRQb2ludCYpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9DbGlwYm9hcmRXeC5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL3d4L0NsaXBib2FyZFd4LmNwcAppbmRleCA0NjFjYzY2Li4yMjBjN2I1IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL3d4L0NsaXBib2FyZFd4LmNwcApAQCAtNzAsNiArNzAsMTIgQEAgSGFzaFNldDxTdHJpbmc+
IENsaXBib2FyZFd4Ojp0eXBlcygpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorUGFz
c1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJvYXJkV3g6OmZpbGVzKCkgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCiBJbnRQb2ludCBDbGlwYm9hcmRXeDo6
ZHJhZ0xvY2F0aW9uKCkgY29uc3QgCiB7IAogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmggYi9XZWJDb3JlL3BsYXRmb3Jt
L3d4L0NsaXBib2FyZFd4LmgKaW5kZXggZGI1ZjdhOC4uNWUzYmE4NiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS93eC9DbGlwYm9hcmRXeC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd3gv
Q2xpcGJvYXJkV3guaApAQCAtNDYsNyArNDYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIGJvb2wgc2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk7
CiAgICAgCiAgICAgICAgIC8vIGV4dGVuc2lvbnMgYmV5b25kIElFJ3MgQVBJCi0gICAgICAgIEhh
c2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEhhc2hTZXQ8U3Ry
aW5nPiB0eXBlcygpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsZUxpc3Q+
IGZpbGVzKCkgY29uc3Q7CiAgICAgCiAgICAgICAgIEludFBvaW50IGRyYWdMb2NhdGlvbigpIGNv
bnN0OwogICAgICAgICBDYWNoZWRJbWFnZSogZHJhZ0ltYWdlKCkgY29uc3Q7Cg==
</data>
<flag name="review"
          id="15823"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>