<?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>63310</bug_id>
          
          <creation_ts>2011-06-23 21:40:11 -0700</creation_ts>
          <short_desc>MHTML archive loader should support binary parts</short_desc>
          <delta_ts>2011-06-27 15:18:37 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jay Civelli">jcivelli</reporter>
          <assigned_to name="Jay Civelli">jcivelli</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>fishd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>426721</commentid>
    <comment_count>0</comment_count>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-06-23 21:40:11 -0700</bug_when>
    <thetext>The MHTML archive loader only supports the following encodings:
QuotedPrintable, Base64 and and 7bit.
It should also support binary for writing/reading archives, as it provides more compact files that are faster to load.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427538</commentid>
    <comment_count>1</comment_count>
      <attachid>98629</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-06-26 10:00:18 -0700</bug_when>
    <thetext>Created attachment 98629
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427581</commentid>
    <comment_count>2</comment_count>
      <attachid>98629</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-26 15:48:15 -0700</bug_when>
    <thetext>Comment on attachment 98629
Patch

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

&gt; Source/WebCore/loader/archive/mhtml/MHTMLParser.cpp:168
&gt; +         endOfArchiveReached = (nextChars[0] == &apos;-&apos; &amp;&amp; nextChars[1] == &apos;-&apos;);

Do you want to ASSERT(nextChars.size() == 2) before this line (to help the casual reader)?

&gt; Source/WebCore/loader/archive/mhtml/MHTMLParser.cpp:180
&gt; +            if (checkBoundary &amp;&amp; (line == endOfPartBoundary || line == endOfDocumentBoundary)) {
&gt; +                endOfArchiveReached = (line == endOfDocumentBoundary);

nit: Can we avoid doing this strcmp twice?

&gt; Source/WebCore/platform/SharedBuffer.cpp:171
&gt; +    if (!data.isEmpty())
&gt; +        append(data.data(), data.size());

It looks like append(const char*, unsigned) might already understand length == 0, so this branch might not be needed.

&gt; Source/WebKit/chromium/public/WebPageSerializer.h:64
&gt;      // Serializes the WebView contents to a MHTML representation.
&gt; -    WEBKIT_API static WebCString serializeToMHTML(WebView*);
&gt; +    // Passing true for |useBinaryEncoding| will result in a smaller HTML file,
&gt; +    // but it might not work on other browsers.
&gt; +    WEBKIT_API static WebCString serializeToMHTML(WebView*, bool useBinaryEncoding = false);

Should this be an enum for the various supported encodings (even if we just support two today)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427582</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-26 15:48:34 -0700</bug_when>
    <thetext>+fishd for WebKit API review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427643</commentid>
    <comment_count>4</comment_count>
      <attachid>98629</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-06-26 21:18:47 -0700</bug_when>
    <thetext>Comment on attachment 98629
Patch

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

&gt;&gt; Source/WebCore/loader/archive/mhtml/MHTMLParser.cpp:168
&gt;&gt; +         endOfArchiveReached = (nextChars[0] == &apos;-&apos; &amp;&amp; nextChars[1] == &apos;-&apos;);
&gt; 
&gt; Do you want to ASSERT(nextChars.size() == 2) before this line (to help the casual reader)?

Done.

&gt;&gt; Source/WebCore/loader/archive/mhtml/MHTMLParser.cpp:180
&gt;&gt; +                endOfArchiveReached = (line == endOfDocumentBoundary);
&gt; 
&gt; nit: Can we avoid doing this strcmp twice?

Good idea, done.

&gt;&gt; Source/WebCore/platform/SharedBuffer.cpp:171
&gt;&gt; +        append(data.data(), data.size());
&gt; 
&gt; It looks like append(const char*, unsigned) might already understand length == 0, so this branch might not be needed.

Removed if.

&gt;&gt; Source/WebKit/chromium/public/WebPageSerializer.h:64
&gt;&gt; +    WEBKIT_API static WebCString serializeToMHTML(WebView*, bool useBinaryEncoding = false);
&gt; 
&gt; Should this be an enum for the various supported encodings (even if we just support two today)?

I don&apos;t expect any other encodings. We could change to an enum in the future in the unlikely event that we need an extra encoding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427644</commentid>
    <comment_count>5</comment_count>
      <attachid>98660</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-06-26 21:19:43 -0700</bug_when>
    <thetext>Created attachment 98660
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427646</commentid>
    <comment_count>6</comment_count>
      <attachid>98660</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-26 21:23:04 -0700</bug_when>
    <thetext>Comment on attachment 98660
Patch

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

&gt; Source/WebKit/chromium/public/WebPageSerializer.h:64
&gt;      // Serializes the WebView contents to a MHTML representation.
&gt; -    WEBKIT_API static WebCString serializeToMHTML(WebView*);
&gt; +    // Passing true for |useBinaryEncoding| will result in a smaller HTML file,
&gt; +    // but it might not work on other browsers.
&gt; +    WEBKIT_API static WebCString serializeToMHTML(WebView*, bool useBinaryEncoding = false);

Ok.  I&apos;m going to let fishd do the final review.  (Changing the WebKit API is a PITA, which is why I suggested an enum.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428047</commentid>
    <comment_count>7</comment_count>
      <attachid>98660</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-06-27 10:18:00 -0700</bug_when>
    <thetext>Comment on attachment 98660
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebPageSerializer.h:64
&gt;&gt; +    WEBKIT_API static WebCString serializeToMHTML(WebView*, bool useBinaryEncoding = false);
&gt; 
&gt; Ok.  I&apos;m going to let fishd do the final review.  (Changing the WebKit API is a PITA, which is why I suggested an enum.)

Ordinarily, raw bool parameters like this don&apos;t help much with readability at the
callsite.  It would make the callsites more self-documenting if you passed an
enum value, or if you created a separate function:  serializeToMHTMLUsingBinaryEncoding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428188</commentid>
    <comment_count>8</comment_count>
      <attachid>98766</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-06-27 12:31:14 -0700</bug_when>
    <thetext>Created attachment 98766
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428189</commentid>
    <comment_count>9</comment_count>
      <attachid>98660</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-06-27 12:32:43 -0700</bug_when>
    <thetext>Comment on attachment 98660
Patch

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

&gt;&gt;&gt; Source/WebKit/chromium/public/WebPageSerializer.h:64
&gt;&gt;&gt; +    WEBKIT_API static WebCString serializeToMHTML(WebView*, bool useBinaryEncoding = false);
&gt;&gt; 
&gt;&gt; Ok.  I&apos;m going to let fishd do the final review.  (Changing the WebKit API is a PITA, which is why I suggested an enum.)
&gt; 
&gt; Ordinarily, raw bool parameters like this don&apos;t help much with readability at the
&gt; callsite.  It would make the callsites more self-documenting if you passed an
&gt; enum value, or if you created a separate function:  serializeToMHTMLUsingBinaryEncoding.

OK, I created a separate function as I don&apos;t expect any other encoding in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428194</commentid>
    <comment_count>10</comment_count>
      <attachid>98766</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-06-27 12:41:21 -0700</bug_when>
    <thetext>Comment on attachment 98766
Patch

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

&gt; Source/WebKit/chromium/src/WebPageSerializer.cpp:211
&gt; +WebCString WebPageSerializer::serializeToMHTMLUsingBinaryEncoding(WebView* view)

why don&apos;t you make this method return WebData?  (that addresses the FIXME)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428201</commentid>
    <comment_count>11</comment_count>
      <attachid>98766</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-06-27 12:55:24 -0700</bug_when>
    <thetext>Comment on attachment 98766
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebPageSerializer.cpp:211
&gt;&gt; +WebCString WebPageSerializer::serializeToMHTMLUsingBinaryEncoding(WebView* view)
&gt; 
&gt; why don&apos;t you make this method return WebData?  (that addresses the FIXME)

I have that in another patch, that got r+ed, landed and broke a test and got rolled back.
In the meantime I landed a patch in Chromium that uses the API.
So my plan is to go the &quot;#ifdef   bug_1234_fixed&quot; road to address that in an upcoming patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428299</commentid>
    <comment_count>12</comment_count>
      <attachid>98766</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-06-27 14:22:53 -0700</bug_when>
    <thetext>Comment on attachment 98766
Patch

OK, LGTM for WebKit API change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428303</commentid>
    <comment_count>13</comment_count>
      <attachid>98766</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-06-27 14:25:05 -0700</bug_when>
    <thetext>Comment on attachment 98766
Patch

Based on Adam&apos;s previous comments that this was just waiting for me to give final review, I&apos;m marking this R=me.  I did not review the WebCore portions of this patch carefully, but I defer to Adam for that part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428307</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-27 14:26:59 -0700</bug_when>
    <thetext>I&apos;m happy to take responsibility for the WebCore parts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428368</commentid>
    <comment_count>15</comment_count>
      <attachid>98766</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-27 15:18:31 -0700</bug_when>
    <thetext>Comment on attachment 98766
Patch

Clearing flags on attachment: 98766

Committed r89869: &lt;http://trac.webkit.org/changeset/89869&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428370</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-27 15:18:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98629</attachid>
            <date>2011-06-26 10:00:18 -0700</date>
            <delta_ts>2011-06-26 21:19:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63310-20110626100017.patch</filename>
            <type>text/plain</type>
            <size>18119</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODk2MDYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YzUzNTkyZjcwOTAxMjgxNGE4ZmVm
NzI3NDcwNzU5MWY0M2FiY2VkLi5mOWIwYWExMTEwZmY0N2QyYzRlM2Y3MzEwNDAyM2I5ZWFkYjhj
ZjBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDYtMjYgIEpheSBDaXZlbGxpICA8amNp
dmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGluZyBiaW5hcnkgcGFydCBzdXBwb3J0IHRvIE1IVE1MLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMzMTAKKworICAgICAg
ICAqIG1odG1sL211bHRpX2ZyYW1lc19iaW5hcnkubWh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9taHRtbC9tdWx0aV9mcmFtZXNfYmluYXJ5LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisKIDIwMTEtMDYtMjMgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGRlZCBleHBlY3RlZCByZXN1bHRzIGZvciBTbm93IExlb3BhcmQgYW5kIGVhcmxpZXIu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9taHRtbC9tdWx0aV9mcmFtZXNfYmluYXJ5Lm1odCBi
L0xheW91dFRlc3RzL21odG1sL211bHRpX2ZyYW1lc19iaW5hcnkubWh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3
ZWMzMDJiYWFlMWQ1MTM0ZTA4OWIwZWIxM2M5YTIxOGM4MjJlOWUKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDI3MzQKemNtZFRgWkQ8QHQ3ezEwMitMYTRJRFRzPHBSPj1xUGNLMVN9bSZATURVRzk9
UStlPEBwN3peVGM/c2pySnZiU14yCnolcTJPWlJIX3N6dj80fFFDJCp4YEI5Wj1ZckdmcXZEfk4k
bTFPQGQrTUUmRFdoNUdKcCh5T3RrO1pucTVLVzFtJQp6Y2pvPGctZS0xX3Z3OU1sdnZgNW5zTTEx
bnE7aH50RTJfKmtEPSg2Jk9ya1Z1OzJKXkYhNGclT0NvJU58c3lBSXAKejgha1p9NWZVYCNJaiQy
Q1JrQiE7QnF9b1Iye2ltOWRaeXsyVkl2KyMjI3F3Nzt3V1kkMz9yJSgzJm1YUVM7N1RuCnpVSn1K
TTdAQn5raTY+KkZScyZXRCpULUR5b1ZjKjJKc3dyfE50akJoa31PSHhrIyQkfiQxMUdwKl9nTGRZ
N0FQYwp6SlBvcm1walMyd3FueVlOISgkP3dve1RAMChHdDFRKyhkZTBSRTtXOCNoM248XjRvMkBY
fX5RTDlEOEQoQEwwflAKekdNanB9QiZ0dmsleGE0cVdLfUUhY081QWtObkxrZ3o7JjNBZGY7cTE0
NTgrRzx7TjFHOW17a0d3a0AreEJ0fSZTCnpiM3RURUV6Qk5AQkAmfSF2QUFqfSZgZTNDT1JPQ3Yl
RzUmQCY9cGxxOGA0dGZKUWBTfXAzTjNEN3E/aGJtTFJpIQp6UWFFIzYhVXhmXmczIz98R2BtQEVx
KHVuPUtRSzd7Y1J+e21iP3dPakRRKT56NmpSQF8wbEp+VDY9dF9BclF9YyUKemc2fTVvMVgmOyl5
UEo1XiVuRypAbExuemZmPiU+MkN4U0ozbD9YaTtFRV8+VVJtOz52RGVJcUE7eVlJdnpPNzJ5Cnp2
a151ZCUwcy09I0dFOElfcGFCcitYXnp9UCkyS2JINUQ8QmFMI3kyd09PQFVocUJPV01DTSVMY1Fk
Vm1KPHVQXwp6X1laMisxSlFoYGN5Szd5S1omVWVuQE5VVGhIWFVhUGBBRFBmRHpOQzN5OWgmSFBH
XmQwUnNSWFF4NV9TUVRNVWQKekt9aUgjPjBvKnJAMT40UHFNZ1AraHNManJsUVl2KFFSTntlNXtY
MCRgUnJrTUtrRENtP31ne012MnFTeGQmSj9YCnpPbDBOU0JPQ0I+Y1AoOF5NPE4mQnl6aDU+NH05
LXk8ZDI5KnIyREZXP3xGTnVgKFlTLXledXxwQCZ8cj9DKkorNAp6dXtYRTZlKH1yKXJ7N3kkeTdC
cWF7IzRpNTxwKndiWCY/VWojaiVZY2B0OTxPUV4heEE+XlhuYHlJPU80S3okejwKempuZW5+Xkpf
Mms7WEBacnltNmBQe1BvV3N8RWFKeF5WWnppcmBLTENpdUU1UyZlPFEwZTBCWCYmKHRyXmZBe0kt
CnpxbVBZVUpHTlNXWlQqfFo1MnIzJGVkfWl+eXN2KDg8KncmNDR7bShAK3V8Sjk2RGoxVHZuIWRT
JDImO050fXw2VAp6RXdAKEo0KE11b2ZmRj1PeHNZSyFfWGNGUFRiUjcjJldBa0ZrQEpFOHZ1JlE5
fDE8QUglSW5CYD19XkFxZF9hdT4KejtSRS16fDEoLWRCSjQ1ZzVGVFBnTHYjTCoydTU7fDNmY1F0
SFY9VjB2WW44OVhoR1hHIz1HT18zTyhvYHpIb05KClg2JntUdlRZK2pISl4jc3AoQDYkbXY4ZUl+
S2o0YjcKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL21odG1sL211bHRpX2ZyYW1lc19iaW5hcnktZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vbWh0bWwvbXVsdGlfZnJhbWVzX2JpbmFyeS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDliYTQ2MTI4ODEyMWU0NzdkNzQ4YTNkZjZjNzEyNGIy
ZDA1NzdjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L21odG1sL211bHRpX2ZyYW1lc19iaW5hcnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzEgQEAK
K1RoaXMgcGFnZSBjb250YWlucyBzZXZlcmFsIGZyYW1lcy4KKworCisKK0FuZCBhIHJlZCBzcXVh
cmU6CisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0t
Pi0tPicKKy0tLS0tLS0tCitUaGUgZmlyc3QgZnJhbWUhCisKKy0tLS0tLS0tCitGcmFtZTogJzwh
LS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+JworLS0tLS0tLS0KK1RoZSBzZWNvbmQgZnJh
bWUhCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUyLS0+LS0+
JworLS0tLS0tLS0KK1RoZSB0aGlyZCBmcmFtZSEKK1RoaXMgb25lIGNvbnRhaW5zIHlldCBhbm90
aGVyIGZyYW1lLiBXaGF0IGEgdHdpc3QhCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1l
UGF0aCAvLzwhLS1mcmFtZTItLT4vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitUaGlzIGlz
IGZyYW1lIDQhCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDBjYTk4YzZmNDEyNGEyNzJjNzU3OWI2NDFkMjk5
ZmZiYmI2NTEwMmEuLmFmZDM5MDU1ODJhNTUzZDBjMWI2ZDJmZTBkNjZlN2E1NzI4ZDgyNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMS0wNi0yNiAgSmF5IENpdmVsbGkgIDxqY2l2
ZWxsaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkaW5nIGJpbmFyeSBwYXJ0IHN1cHBvcnQgdG8gTUhUTUwuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzMxMAorCisgICAgICAg
ICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEpOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJz
ZU5leHRQYXJ0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpyZXRyaWV2ZUtleVZhbHVlUGFpcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6TUlNRUhlYWRlcjo6cGFyc2VDb250ZW50VHJhbnNmZXJFbmNvZGluZyk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmg6CisKIDIwMTEtMDYtMjMgIEFuZHJlYXMg
S2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWlu
IFBvdWxhaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxBcmNoaXZlLmNwcAppbmRleCBjY2VmNjQ0ZDliOTA5YjFlODA2MDgyZTMyNzI1YTg1YWQw
MDQ5MDM3Li41YWQ4NDg3Y2IxNjg4ZDFkZWIzYWM3ZmMxNzMyOGVlM2EyMDk1NjM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5j
cHAKQEAgLTU3LDYgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBjaGFyKiBj
b25zdCBxdW90ZWRQcmludGFibGUgPSAicXVvdGVkLXByaW50YWJsZSI7CiBjb25zdCBjaGFyKiBj
b25zdCBiYXNlNjQgPSAiYmFzZTY0IjsKK2NvbnN0IGNoYXIqIGNvbnN0IGJpbmFyeSA9ICJiaW5h
cnkiOwogCiBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlUmFuZG9tQm91bmRhcnkoKQogewpAQCAtMTIy
LDcgKzEyMyw3IEBAIFBhc3NSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0
ZShjb25zdCBLVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciogZGF0CiAgICAgcmV0dXJuIG1haW5BcmNo
aXZlLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2
ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKK1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UsIGJvb2wgdXNlQmlu
YXJ5RW5jb2RpbmcpCiB7CiAgICAgVmVjdG9yPFBhZ2VTZXJpYWxpemVyOjpSZXNvdXJjZT4gcmVz
b3VyY2VzOwogICAgIFBhZ2VTZXJpYWxpemVyIHBhZ2VTZXJpYWxpemVyKCZyZXNvdXJjZXMpOwpA
QCAtMTY3LDcgKzE2OCw3IEBAIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6
OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCJDb250ZW50LVR5cGU6ICIpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyZXNv
dXJjZS5taW1lVHlwZSk7CiAKLSAgICAgICAgY29uc3QgY2hhciogY29udGVudEVuY29kaW5nID0g
TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUocmVzb3VyY2Uu
bWltZVR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlw
ZShyZXNvdXJjZS5taW1lVHlwZSkgPyBxdW90ZWRQcmludGFibGUgOiBiYXNlNjQ7CisgICAgICAg
IGNvbnN0IGNoYXIqIGNvbnRlbnRFbmNvZGluZyA9IHVzZUJpbmFyeUVuY29kaW5nID8gYmluYXJ5
IDogYmFzZTY0OwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXHJcbkNvbnRlbnQtVHJh
bnNmZXItRW5jb2Rpbmc6ICIpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChjb250ZW50
RW5jb2RpbmcpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXHJcbkNvbnRlbnQtTG9j
YXRpb246ICIpOwpAQCAtMTc3LDI3ICsxNzgsMzYgQEAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgYXNj
aWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwogICAgICAgICBtaHRt
bERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsK
IAotICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNvbnRlbnQg
YXMgYSBzdHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgotICAgICAgICBjb25z
dCBjaGFyKiBkYXRhID0gcmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwotICAgICAgICBzaXplX3QgZGF0
YUxlbmd0aCA9IHJlc291cmNlLmRhdGEtPnNpemUoKTsKLSAgICAgICAgVmVjdG9yPGNoYXI+IGVu
Y29kZWREYXRhOwotICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIHF1b3RlZFBy
aW50YWJsZSkpIHsKLSAgICAgICAgICAgIHF1b3RlZFByaW50YWJsZUVuY29kZShkYXRhLCBkYXRh
TGVuZ3RoLCBlbmNvZGVkRGF0YSk7Ci0gICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChlbmNv
ZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7Ci0gICAgICAgICAgICBtaHRtbERh
dGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2Rp
bmcsIGJpbmFyeSkpIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGE7CisgICAgICAgICAg
ICBzaXplX3QgcG9zaXRpb24gPSAwOworICAgICAgICAgICAgd2hpbGUgKHNpemVfdCBsZW5ndGgg
PSByZXNvdXJjZS5kYXRhLT5nZXRTb21lRGF0YShkYXRhLCBwb3NpdGlvbikpIHsKKyAgICAgICAg
ICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgICAgICAgICAgICAg
IHBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIEFTU0VSVCghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgYmFzZTY0KSk7Ci0gICAg
ICAgICAgICAvLyBXZSBhcmUgbm90IHNwZWNpZnlpbmcgaW5zZXJ0TEZzID0gdHJ1ZSBiZWxvdyBh
cyBpdCB3b3VsZCBjdXQgdGhlIGxpbmVzIHdpdGggTEZzIGFuZCBNSFRNTCByZXF1aXJlcyBDUkxG
cy4KLSAgICAgICAgICAgIGJhc2U2NEVuY29kZShkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0
YSk7Ci0gICAgICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUxpbmVMZW5ndGggPSA3NjsKLSAg
ICAgICAgICAgIHNpemVfdCBpbmRleCA9IDA7Ci0gICAgICAgICAgICBzaXplX3QgZW5jb2RlZERh
dGFMZW5ndGggPSBlbmNvZGVkRGF0YS5zaXplKCk7Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAg
ICAgICAgICAgc2l6ZV90IGxpbmVMZW5ndGggPSBzdGQ6Om1pbihlbmNvZGVkRGF0YUxlbmd0aCAt
IGluZGV4LCBtYXhpbXVtTGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRhLT5h
cHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOworICAgICAgICAg
ICAgLy8gRklYTUU6IGlkZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50IGFzIGEgc3Ry
ZWFtIHdpdGhvdXQgaGF2aW5nIHRvIGZldGNoIGl0IGFsbC4KKyAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGRhdGEgPSByZXNvdXJjZS5kYXRhLT5kYXRhKCk7CisgICAgICAgICAgICBzaXplX3QgZGF0
YUxlbmd0aCA9IHJlc291cmNlLmRhdGEtPnNpemUoKTsKKyAgICAgICAgICAgIFZlY3RvcjxjaGFy
PiBlbmNvZGVkRGF0YTsKKyAgICAgICAgICAgIGlmICghc3RyY21wKGNvbnRlbnRFbmNvZGluZywg
cXVvdGVkUHJpbnRhYmxlKSkgeworICAgICAgICAgICAgICAgIHF1b3RlZFByaW50YWJsZUVuY29k
ZShkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YSk7CisgICAgICAgICAgICAgICAgbWh0bWxE
YXRhLT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOwogICAg
ICAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7Ci0gICAgICAgICAgICAg
ICAgaW5kZXggKz0gbWF4aW11bUxpbmVMZW5ndGg7Ci0gICAgICAgICAgICB9IHdoaWxlIChpbmRl
eCA8IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBiYXNlNjQpKTsKKyAgICAgICAg
ICAgICAgICAvLyBXZSBhcmUgbm90IHNwZWNpZnlpbmcgaW5zZXJ0TEZzID0gdHJ1ZSBiZWxvdyBh
cyBpdCB3b3VsZCBjdXQgdGhlIGxpbmVzIHdpdGggTEZzIGFuZCBNSFRNTCByZXF1aXJlcyBDUkxG
cy4KKyAgICAgICAgICAgICAgICBiYXNlNjRFbmNvZGUoZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2Rl
ZERhdGEpOworICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtTGluZUxlbmd0aCA9
IDc2OworICAgICAgICAgICAgICAgIHNpemVfdCBpbmRleCA9IDA7CisgICAgICAgICAgICAgICAg
c2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6ZSgpOworICAgICAgICAg
ICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxpbmVMZW5ndGggPSBzdGQ6
Om1pbihlbmNvZGVkRGF0YUxlbmd0aCAtIGluZGV4LCBtYXhpbXVtTGluZUxlbmd0aCk7CisgICAg
ICAgICAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGlu
ZGV4LCBsaW5lTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQo
IlxyXG4iLCAyKTsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXggKz0gbWF4aW11bUxpbmVMZW5n
dGg7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoaW5kZXggPCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKaW5kZXggODZmZTFjNzVmYWZh
OWE2OTY1ODg4OGIxYmQ3MmU2NzhmZGFhYWMyYy4uMjg0MGIxYTZiM2I2NTM0MGMxZThhNzUwOWMz
NjlhZDZlYzQwOWJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxBcmNoaXZlLmgKQEAgLTQ4LDcgKzQ4LDkgQEAgcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8TUhUTUxBcmNoaXZlPiBjcmVhdGUoY29uc3QgS1VSTCYsIFNoYXJlZEJ1ZmZlciopOwogCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdl
Kik7CisgICAgLy8gSWYgdXNlQmluYXJ5RW5jb2RpbmcgaXMgdHJ1ZSwgYmluYXJ5IHJlc291cmNl
cyBhcmUgZW5jb2RlZCBhcyBiaW5hcnkgd2hpY2ggbWFrZXMgZm9yIG1vcmUgY29tcGFjdAorICAg
IC8vIGZpbGVzIGJ1dCB0aGV5IG1pZ2h0IG5vdCBiZSBvcGVuYWJsZSBpbiBvdGhlciBicm93c2Vy
cy4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRh
KFBhZ2UqLCBib29sIHVzZUJpbmFyeUVuY29kaW5nKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgTUhUTUxQYXJzZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggYWNmOWE1YTBiMTc1ZjVkZDFiZmQ1NmMyNWI2
N2RkOWIyYTA4ZTQ5ZC4uMDc5MTIyNDI2Y2EzYTQ2MjJjY2ZiMjc4MDEwOWJiODYwZjA5NTk3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcApAQCAtMTQ2LDE4ICsxNDYsNDcgQEAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWEKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
ICAgICBjb25zdCBib29sIGNoZWNrQm91bmRhcnkgPSAhZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0
eSgpOwogICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hlZCA9IGZhbHNlOwotICAgIFN0cmluZyBsaW5l
OwotICAgIHdoaWxlICghKGxpbmUgPSBtX2xpbmVSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5n
V2l0aExhdGluMUZhbGxiYWNrKCkpLmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmIChjaGVja0JvdW5k
YXJ5ICYmIChsaW5lID09IGVuZE9mUGFydEJvdW5kYXJ5IHx8IGxpbmUgPT0gZW5kT2ZEb2N1bWVu
dEJvdW5kYXJ5KSkgewotICAgICAgICAgICAgZW5kT2ZBcmNoaXZlUmVhY2hlZCA9IChsaW5lID09
IGVuZE9mRG9jdW1lbnRCb3VuZGFyeSk7Ci0gICAgICAgICAgICBlbmRPZlBhcnRSZWFjaGVkID0g
dHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFu
c2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6QmluYXJ5KSB7CisgICAgICAgIGlmICghY2hl
Y2tCb3VuZGFyeSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJCaW5hcnkgY29udGVudHMgcmVx
dWlyZXMgZW5kIG9mIHBhcnQiKTsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0g
ICAgICAgIC8vIE5vdGUgdGhhdCB3ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lp
KCkgYXMgYXNjaWkgdHVybnMgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1m
ZWVkLi4uKSBpbnRvICc/Jy4KLSAgICAgICAgY29udGVudC0+YXBwZW5kKGxpbmUudXRmOCgpLmRh
dGEoKSwgbGluZS5sZW5ndGgoKSk7Ci0gICAgICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFu
c2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7Ci0gICAgICAg
ICAgICAvLyBUaGUgbGluZSByZWFkZXIgcmVtb3ZlcyB0aGUgXHJcbiwgYnV0IHdlIG5lZWQgdGhl
bSBmb3IgdGhlIGNvbnRlbnQgaW4gdGhpcyBjYXNlIGFzIHRoZSBRdW90ZWRQcmludGFibGUgZGVj
b2RlciBleHBlY3RzIENSLUxGIHRlcm1pbmF0ZWQgbGluZXMuCi0gICAgICAgICAgICBjb250ZW50
LT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgbV9saW5lUmVhZGVyLnNldFNlcGFyYXRvcihl
bmRPZlBhcnRCb3VuZGFyeS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgVmVjdG9yPGNoYXI+IHBh
cnQ7CisgICAgICAgIGlmICghbV9saW5lUmVhZGVyLm5leHRDaHVuayhwYXJ0KSkgeworICAgICAg
ICAgICAgTE9HX0VSUk9SKCJCaW5hcnkgY29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsK
KyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgfQorICAgICAgICAgY29udGVudC0+YXBw
ZW5kKHBhcnQpOworICAgICAgICAgbV9saW5lUmVhZGVyLnNldFNlcGFyYXRvcigiXHJcbiIpOwor
ICAgICAgICAgVmVjdG9yPGNoYXI+IG5leHRDaGFyczsKKyAgICAgICAgIGlmIChtX2xpbmVSZWFk
ZXIucGVlayhuZXh0Q2hhcnMsIDIpICE9IDIpIHsKKyAgICAgICAgICAgICBMT0dfRVJST1IoIklu
dmFsaWQgc2VwZXJhdG9yLiIpOworICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgfQor
ICAgICAgICAgZW5kT2ZQYXJ0UmVhY2hlZCA9IHRydWU7CisgICAgICAgICBlbmRPZkFyY2hpdmVS
ZWFjaGVkID0gKG5leHRDaGFyc1swXSA9PSAnLScgJiYgbmV4dENoYXJzWzFdID09ICctJyk7Cisg
ICAgICAgICBpZiAoIWVuZE9mQXJjaGl2ZVJlYWNoZWQpIHsKKyAgICAgICAgICAgICBTdHJpbmcg
bGluZSA9IG1fbGluZVJlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJh
Y2soKTsKKyAgICAgICAgICAgICBpZiAoIWxpbmUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAg
ICAgIExPR19FUlJPUigiTm8gQ1JMRiBhdCBlbmQgb2YgYmluYXJ5IHNlY3Rpb24uIik7CisgICAg
ICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICB9
IGVsc2UgeworICAgICAgICBTdHJpbmcgbGluZTsKKyAgICAgICAgd2hpbGUgKCEobGluZSA9IG1f
bGluZVJlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soKSkuaXNO
dWxsKCkpIHsKKyAgICAgICAgICAgIGlmIChjaGVja0JvdW5kYXJ5ICYmIChsaW5lID09IGVuZE9m
UGFydEJvdW5kYXJ5IHx8IGxpbmUgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5KSkgeworICAgICAg
ICAgICAgICAgIGVuZE9mQXJjaGl2ZVJlYWNoZWQgPSAobGluZSA9PSBlbmRPZkRvY3VtZW50Qm91
bmRhcnkpOworICAgICAgICAgICAgICAgIGVuZE9mUGFydFJlYWNoZWQgPSB0cnVlOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gTm90ZSB0aGF0
IHdlIHVzZSBsaW5lLnV0ZjgoKSBhbmQgbm90IGxpbmUuYXNjaWkoKSBhcyBhc2NpaSB0dXJucyBz
cGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgdGFiLCBsaW5lLWZlZWQuLi4pIGludG8gJz8nLgor
ICAgICAgICAgICAgY29udGVudC0+YXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5n
dGgoKSk7CisgICAgICAgICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGlu
ZygpID09IE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZSkgeworICAgICAgICAgICAgICAgIC8v
IFRoZSBsaW5lIHJlYWRlciByZW1vdmVzIHRoZSBcclxuLCBidXQgd2UgbmVlZCB0aGVtIGZvciB0
aGUgY29udGVudCBpbiB0aGlzIGNhc2UgYXMgdGhlIFF1b3RlZFByaW50YWJsZSBkZWNvZGVyIGV4
cGVjdHMgQ1ItTEYgdGVybWluYXRlZCBsaW5lcy4KKyAgICAgICAgICAgICAgICBjb250ZW50LT5h
cHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBp
ZiAoIWVuZE9mUGFydFJlYWNoZWQgJiYgY2hlY2tCb3VuZGFyeSkgewpAQCAtMTc3LDYgKzIwNiw3
IEBAIFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFy
dChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhCiAgICAgICAgIHF1b3RlZFByaW50YWJsZURlY29k
ZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSwgZGF0YSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CisgICAgY2FzZSBNSU1FSGVhZGVyOjpC
aW5hcnk6CiAgICAgICAgIGRhdGEuYXBwZW5kKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6
ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGFkODYxOGViNGM5M2NhODk4YWQxMTJjY2U0MzIyMDY4
MjAzNzRlYTQuLmVlOTQ5NjRlMzBiYjY3NWYxYmU2NmEyNTZiZDE0MjllMGYyMjFjMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMTY1LDYgKzE2NSwxMiBA
QCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCkKICAgICB9CiB9CiAKK3ZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgVmVjdG9y
PGNoYXI+JiBkYXRhKQoreworICAgIGlmICghZGF0YS5pc0VtcHR5KCkpCisgICAgICAgIGFwcGVu
ZChkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xl
YXIoKQogewogICAgIGNsZWFyUGxhdGZvcm1EYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCmluZGV4IDY4ZDk5M2EzMDc1NGE3OWYzZDhiNTg0YWQzODk0OGJiZGYwMzQ0
MjUuLmMzNzgxOGVkZGIyZWYwY2MxZDc5ZDEyNmY3YjY4ZjJlZDYxZWY1NDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC04Niw2ICs4Niw4IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgYXBwZW5kKFNoYXJlZEJ1ZmZlciopOwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNo
YXIqLCB1bnNpZ25lZCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgVmVjdG9yPGNoYXI+Jik7CisK
ICAgICB2b2lkIGNsZWFyKCk7CiAgICAgY29uc3QgY2hhciogcGxhdGZvcm1EYXRhKCkgY29uc3Q7
CiAgICAgdW5zaWduZWQgcGxhdGZvcm1EYXRhU2l6ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKaW5kZXggZGZiMTdmOWJkODQwNGM0
MmNjZTcwNjQxNmJlNjg2OGJiZjZiZmNlMC4uNWQ2Yjg1OGY0NmU0MzgzZmNiMmZlYTYyODU4YWY3
NTMyZDQzYTVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9N
SU1FSGVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVI
ZWFkZXIuY3BwCkBAIC0xMjMsNiArMTIzLDggQEAgTUlNRUhlYWRlcjo6RW5jb2RpbmcgTUlNRUhl
YWRlcjo6cGFyc2VDb250ZW50VHJhbnNmZXJFbmNvZGluZyhjb25zdCBTdHJpbmcmIHRleHQKICAg
ICAgICAgcmV0dXJuIFF1b3RlZFByaW50YWJsZTsKICAgICBpZiAoZW5jb2RpbmcgPT0gIjdiaXQi
KQogICAgICAgICByZXR1cm4gU2V2ZW5CaXQ7CisgICAgaWYgKGVuY29kaW5nID09ICJiaW5hcnki
KQorICAgICAgICByZXR1cm4gQmluYXJ5OwogICAgIExPR19FUlJPUigiVW5rbm93biBlbmNvZGlu
ZyAnJXMnIGZvdW5kIGluIE1JTUUgaGVhZGVyLiIsIHRleHQuYXNjaWkoKS5kYXRhKCkpOwogICAg
IHJldHVybiBVbmtub3duOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9NSU1FSGVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuaAppbmRleCBmNGE0NTU2MDQ5ODVhNzk1ZGE5OTRmZDA2NmRhNDNkYmE0N2E5MGZk
Li4wZTAyYTZmZDc4MmE3MDczYjI0ZTNjMjZlOWU3NjFlMGQ2OTU1OGE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuaApAQCAtNDYsNiArNDYsNyBAQCBw
dWJsaWM6CiAgICAgICAgIFF1b3RlZFByaW50YWJsZSwKICAgICAgICAgQmFzZTY0LAogICAgICAg
ICBTZXZlbkJpdCwKKyAgICAgICAgQmluYXJ5LAogICAgICAgICBVbmtub3duCiAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBkMjJkNDEzYWM3YWVjMWNiMGQyNmRjYjhhYzk5
Y2UyNGYwNjI4YjlhLi45YjhjZWRiYjFkMjYyOTY5MWY5OGVkZmM1N2NjZGJjOWM1NWNmZDhiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTA2LTI2ICBK
YXkgQ2l2ZWxsaSAgPGpjaXZlbGxpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgYmluYXJ5IHBhcnQgc3VwcG9ydCB0
byBNSFRNTC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYzMzEwCisKKyAgICAgICAgKiBwdWJsaWMvV2ViUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAg
KiBzcmMvV2ViUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlU2Vy
aWFsaXplcjo6c2VyaWFsaXplVG9NSFRNTCk6CisKIDIwMTEtMDYtMjMgIEpvaG4gQWJkLUVsLU1h
bGVrICA8amFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5n
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUGFnZVNlcmlh
bGl6ZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBhZ2VTZXJpYWxpemVy
LmgKaW5kZXggZTJkYjA3YmU0MTgwNTdiMGU4NmQyYTVjODA2ODc4N2RkMGJjZmU3OS4uNmRkYjNi
ZTU1ZGEzMDMzYWY3OGExODU0NzA0NjY1MzU0OGVmNjYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQYWdlU2VyaWFsaXplci5oCkBAIC01OSw3ICs1OSw5IEBA
IHB1YmxpYzoKICAgICBXRUJLSVRfQVBJIHN0YXRpYyB2b2lkIHNlcmlhbGl6ZShXZWJWaWV3Kiwg
V2ViVmVjdG9yPFJlc291cmNlPiopOwogCiAgICAgLy8gU2VyaWFsaXplcyB0aGUgV2ViVmlldyBj
b250ZW50cyB0byBhIE1IVE1MIHJlcHJlc2VudGF0aW9uLgotICAgIFdFQktJVF9BUEkgc3RhdGlj
IFdlYkNTdHJpbmcgc2VyaWFsaXplVG9NSFRNTChXZWJWaWV3Kik7CisgICAgLy8gUGFzc2luZyB0
cnVlIGZvciB8dXNlQmluYXJ5RW5jb2Rpbmd8IHdpbGwgcmVzdWx0IGluIGEgc21hbGxlciBIVE1M
IGZpbGUsCisgICAgLy8gYnV0IGl0IG1pZ2h0IG5vdCB3b3JrIG9uIG90aGVyIGJyb3dzZXJzLgor
ICAgIFdFQktJVF9BUEkgc3RhdGljIFdlYkNTdHJpbmcgc2VyaWFsaXplVG9NSFRNTChXZWJWaWV3
KiwgYm9vbCB1c2VCaW5hcnlFbmNvZGluZyA9IGZhbHNlKTsKIAogICAgIC8vIElNUE9SVEFOVDoK
ICAgICAvLyBUaGUgQVBJIGJlbG93IGlzIGFuIG9sZGVyIGltcGxlbWVudGF0aW9uIG9mIGEgcGFn
ZXNlcmlhbGl6YXRpb24gdGhhdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
UGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDZkZjg0YmI2Yjk2YThkZDM0YzI2ODZlMjA2NjEyOGQ3
ZTBmZjViYmQuLjhjODYxOGFmM2I4Njc5YWQ4Njc5MTJmZGM1NGY4N2UxYWU2ZDNjMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlU2VyaWFsaXplci5jcHAKQEAg
LTIwMSw5ICsyMDEsOSBAQCB2b2lkIFdlYlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemUoV2ViVmll
dyogdmlldywgV2ViVmVjdG9yPFdlYlBhZ2VTZXJpYWxpemVyOjpSZQogICAgICpyZXNvdXJjZXNQ
YXJhbSA9IHJlc3VsdDsgICAgICAgICAKIH0KIAotV2ViQ1N0cmluZyBXZWJQYWdlU2VyaWFsaXpl
cjo6c2VyaWFsaXplVG9NSFRNTChXZWJWaWV3KiB2aWV3KQorV2ViQ1N0cmluZyBXZWJQYWdlU2Vy
aWFsaXplcjo6c2VyaWFsaXplVG9NSFRNTChXZWJWaWV3KiB2aWV3LCBib29sIHVzZUJpbmFyeUVu
Y29kaW5nKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1odG1sID0gTUhUTUxBcmNoaXZl
OjpnZW5lcmF0ZU1IVE1MRGF0YShzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KHZpZXcpLT5wYWdl
KCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1odG1sID0gTUhUTUxBcmNoaXZlOjpnZW5l
cmF0ZU1IVE1MRGF0YShzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KHZpZXcpLT5wYWdlKCksIHVz
ZUJpbmFyeUVuY29kaW5nKTsKICAgICAvLyBGSVhNRTogd2UgYXJlIGNvcHlpbmcgYWxsIHRoZSBk
YXRhIGhlcmUuIElkZWFseSB3ZSB3b3VsZCBoYXZlIGEgV2ViU2hhcmVkRGF0YSgpLgogICAgIHJl
dHVybiBXZWJDU3RyaW5nKG1odG1sLT5kYXRhKCksIG1odG1sLT5zaXplKCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98660</attachid>
            <date>2011-06-26 21:19:43 -0700</date>
            <delta_ts>2011-06-27 12:32:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63310-20110626211942.patch</filename>
            <type>text/plain</type>
            <size>18116</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODk2MDYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YzUzNTkyZjcwOTAxMjgxNGE4ZmVm
NzI3NDcwNzU5MWY0M2FiY2VkLi5mOWIwYWExMTEwZmY0N2QyYzRlM2Y3MzEwNDAyM2I5ZWFkYjhj
ZjBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDYtMjYgIEpheSBDaXZlbGxpICA8amNp
dmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGluZyBiaW5hcnkgcGFydCBzdXBwb3J0IHRvIE1IVE1MLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMzMTAKKworICAgICAg
ICAqIG1odG1sL211bHRpX2ZyYW1lc19iaW5hcnkubWh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9taHRtbC9tdWx0aV9mcmFtZXNfYmluYXJ5LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisKIDIwMTEtMDYtMjMgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGRlZCBleHBlY3RlZCByZXN1bHRzIGZvciBTbm93IExlb3BhcmQgYW5kIGVhcmxpZXIu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9taHRtbC9tdWx0aV9mcmFtZXNfYmluYXJ5Lm1odCBi
L0xheW91dFRlc3RzL21odG1sL211bHRpX2ZyYW1lc19iaW5hcnkubWh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3
ZWMzMDJiYWFlMWQ1MTM0ZTA4OWIwZWIxM2M5YTIxOGM4MjJlOWUKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDI3MzQKemNtZFRgWkQ8QHQ3ezEwMitMYTRJRFRzPHBSPj1xUGNLMVN9bSZATURVRzk9
UStlPEBwN3peVGM/c2pySnZiU14yCnolcTJPWlJIX3N6dj80fFFDJCp4YEI5Wj1ZckdmcXZEfk4k
bTFPQGQrTUUmRFdoNUdKcCh5T3RrO1pucTVLVzFtJQp6Y2pvPGctZS0xX3Z3OU1sdnZgNW5zTTEx
bnE7aH50RTJfKmtEPSg2Jk9ya1Z1OzJKXkYhNGclT0NvJU58c3lBSXAKejgha1p9NWZVYCNJaiQy
Q1JrQiE7QnF9b1Iye2ltOWRaeXsyVkl2KyMjI3F3Nzt3V1kkMz9yJSgzJm1YUVM7N1RuCnpVSn1K
TTdAQn5raTY+KkZScyZXRCpULUR5b1ZjKjJKc3dyfE50akJoa31PSHhrIyQkfiQxMUdwKl9nTGRZ
N0FQYwp6SlBvcm1walMyd3FueVlOISgkP3dve1RAMChHdDFRKyhkZTBSRTtXOCNoM248XjRvMkBY
fX5RTDlEOEQoQEwwflAKekdNanB9QiZ0dmsleGE0cVdLfUUhY081QWtObkxrZ3o7JjNBZGY7cTE0
NTgrRzx7TjFHOW17a0d3a0AreEJ0fSZTCnpiM3RURUV6Qk5AQkAmfSF2QUFqfSZgZTNDT1JPQ3Yl
RzUmQCY9cGxxOGA0dGZKUWBTfXAzTjNEN3E/aGJtTFJpIQp6UWFFIzYhVXhmXmczIz98R2BtQEVx
KHVuPUtRSzd7Y1J+e21iP3dPakRRKT56NmpSQF8wbEp+VDY9dF9BclF9YyUKemc2fTVvMVgmOyl5
UEo1XiVuRypAbExuemZmPiU+MkN4U0ozbD9YaTtFRV8+VVJtOz52RGVJcUE7eVlJdnpPNzJ5Cnp2
a151ZCUwcy09I0dFOElfcGFCcitYXnp9UCkyS2JINUQ8QmFMI3kyd09PQFVocUJPV01DTSVMY1Fk
Vm1KPHVQXwp6X1laMisxSlFoYGN5Szd5S1omVWVuQE5VVGhIWFVhUGBBRFBmRHpOQzN5OWgmSFBH
XmQwUnNSWFF4NV9TUVRNVWQKekt9aUgjPjBvKnJAMT40UHFNZ1AraHNManJsUVl2KFFSTntlNXtY
MCRgUnJrTUtrRENtP31ne012MnFTeGQmSj9YCnpPbDBOU0JPQ0I+Y1AoOF5NPE4mQnl6aDU+NH05
LXk8ZDI5KnIyREZXP3xGTnVgKFlTLXledXxwQCZ8cj9DKkorNAp6dXtYRTZlKH1yKXJ7N3kkeTdC
cWF7IzRpNTxwKndiWCY/VWojaiVZY2B0OTxPUV4heEE+XlhuYHlJPU80S3okejwKempuZW5+Xkpf
Mms7WEBacnltNmBQe1BvV3N8RWFKeF5WWnppcmBLTENpdUU1UyZlPFEwZTBCWCYmKHRyXmZBe0kt
CnpxbVBZVUpHTlNXWlQqfFo1MnIzJGVkfWl+eXN2KDg8KncmNDR7bShAK3V8Sjk2RGoxVHZuIWRT
JDImO050fXw2VAp6RXdAKEo0KE11b2ZmRj1PeHNZSyFfWGNGUFRiUjcjJldBa0ZrQEpFOHZ1JlE5
fDE8QUglSW5CYD19XkFxZF9hdT4KejtSRS16fDEoLWRCSjQ1ZzVGVFBnTHYjTCoydTU7fDNmY1F0
SFY9VjB2WW44OVhoR1hHIz1HT18zTyhvYHpIb05KClg2JntUdlRZK2pISl4jc3AoQDYkbXY4ZUl+
S2o0YjcKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL21odG1sL211bHRpX2ZyYW1lc19iaW5hcnktZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vbWh0bWwvbXVsdGlfZnJhbWVzX2JpbmFyeS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDliYTQ2MTI4ODEyMWU0NzdkNzQ4YTNkZjZjNzEyNGIy
ZDA1NzdjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L21odG1sL211bHRpX2ZyYW1lc19iaW5hcnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzEgQEAK
K1RoaXMgcGFnZSBjb250YWlucyBzZXZlcmFsIGZyYW1lcy4KKworCisKK0FuZCBhIHJlZCBzcXVh
cmU6CisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0t
Pi0tPicKKy0tLS0tLS0tCitUaGUgZmlyc3QgZnJhbWUhCisKKy0tLS0tLS0tCitGcmFtZTogJzwh
LS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+JworLS0tLS0tLS0KK1RoZSBzZWNvbmQgZnJh
bWUhCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUyLS0+LS0+
JworLS0tLS0tLS0KK1RoZSB0aGlyZCBmcmFtZSEKK1RoaXMgb25lIGNvbnRhaW5zIHlldCBhbm90
aGVyIGZyYW1lLiBXaGF0IGEgdHdpc3QhCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1l
UGF0aCAvLzwhLS1mcmFtZTItLT4vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitUaGlzIGlz
IGZyYW1lIDQhCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDBjYTk4YzZmNDEyNGEyNzJjNzU3OWI2NDFkMjk5
ZmZiYmI2NTEwMmEuLmFmZDM5MDU1ODJhNTUzZDBjMWI2ZDJmZTBkNjZlN2E1NzI4ZDgyNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMS0wNi0yNiAgSmF5IENpdmVsbGkgIDxqY2l2
ZWxsaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkaW5nIGJpbmFyeSBwYXJ0IHN1cHBvcnQgdG8gTUhUTUwuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzMxMAorCisgICAgICAg
ICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEpOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJz
ZU5leHRQYXJ0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpyZXRyaWV2ZUtleVZhbHVlUGFpcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6TUlNRUhlYWRlcjo6cGFyc2VDb250ZW50VHJhbnNmZXJFbmNvZGluZyk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmg6CisKIDIwMTEtMDYtMjMgIEFuZHJlYXMg
S2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWlu
IFBvdWxhaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxBcmNoaXZlLmNwcAppbmRleCBjY2VmNjQ0ZDliOTA5YjFlODA2MDgyZTMyNzI1YTg1YWQw
MDQ5MDM3Li41YWQ4NDg3Y2IxNjg4ZDFkZWIzYWM3ZmMxNzMyOGVlM2EyMDk1NjM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5j
cHAKQEAgLTU3LDYgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBjaGFyKiBj
b25zdCBxdW90ZWRQcmludGFibGUgPSAicXVvdGVkLXByaW50YWJsZSI7CiBjb25zdCBjaGFyKiBj
b25zdCBiYXNlNjQgPSAiYmFzZTY0IjsKK2NvbnN0IGNoYXIqIGNvbnN0IGJpbmFyeSA9ICJiaW5h
cnkiOwogCiBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlUmFuZG9tQm91bmRhcnkoKQogewpAQCAtMTIy
LDcgKzEyMyw3IEBAIFBhc3NSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0
ZShjb25zdCBLVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciogZGF0CiAgICAgcmV0dXJuIG1haW5BcmNo
aXZlLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2
ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKK1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UsIGJvb2wgdXNlQmlu
YXJ5RW5jb2RpbmcpCiB7CiAgICAgVmVjdG9yPFBhZ2VTZXJpYWxpemVyOjpSZXNvdXJjZT4gcmVz
b3VyY2VzOwogICAgIFBhZ2VTZXJpYWxpemVyIHBhZ2VTZXJpYWxpemVyKCZyZXNvdXJjZXMpOwpA
QCAtMTY3LDcgKzE2OCw3IEBAIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6
OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCJDb250ZW50LVR5cGU6ICIpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyZXNv
dXJjZS5taW1lVHlwZSk7CiAKLSAgICAgICAgY29uc3QgY2hhciogY29udGVudEVuY29kaW5nID0g
TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUocmVzb3VyY2Uu
bWltZVR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlw
ZShyZXNvdXJjZS5taW1lVHlwZSkgPyBxdW90ZWRQcmludGFibGUgOiBiYXNlNjQ7CisgICAgICAg
IGNvbnN0IGNoYXIqIGNvbnRlbnRFbmNvZGluZyA9IHVzZUJpbmFyeUVuY29kaW5nID8gYmluYXJ5
IDogYmFzZTY0OwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXHJcbkNvbnRlbnQtVHJh
bnNmZXItRW5jb2Rpbmc6ICIpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChjb250ZW50
RW5jb2RpbmcpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXHJcbkNvbnRlbnQtTG9j
YXRpb246ICIpOwpAQCAtMTc3LDI3ICsxNzgsMzYgQEAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgYXNj
aWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwogICAgICAgICBtaHRt
bERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsK
IAotICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNvbnRlbnQg
YXMgYSBzdHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgotICAgICAgICBjb25z
dCBjaGFyKiBkYXRhID0gcmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwotICAgICAgICBzaXplX3QgZGF0
YUxlbmd0aCA9IHJlc291cmNlLmRhdGEtPnNpemUoKTsKLSAgICAgICAgVmVjdG9yPGNoYXI+IGVu
Y29kZWREYXRhOwotICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIHF1b3RlZFBy
aW50YWJsZSkpIHsKLSAgICAgICAgICAgIHF1b3RlZFByaW50YWJsZUVuY29kZShkYXRhLCBkYXRh
TGVuZ3RoLCBlbmNvZGVkRGF0YSk7Ci0gICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChlbmNv
ZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7Ci0gICAgICAgICAgICBtaHRtbERh
dGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2Rp
bmcsIGJpbmFyeSkpIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGE7CisgICAgICAgICAg
ICBzaXplX3QgcG9zaXRpb24gPSAwOworICAgICAgICAgICAgd2hpbGUgKHNpemVfdCBsZW5ndGgg
PSByZXNvdXJjZS5kYXRhLT5nZXRTb21lRGF0YShkYXRhLCBwb3NpdGlvbikpIHsKKyAgICAgICAg
ICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgICAgICAgICAgICAg
IHBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIEFTU0VSVCghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgYmFzZTY0KSk7Ci0gICAg
ICAgICAgICAvLyBXZSBhcmUgbm90IHNwZWNpZnlpbmcgaW5zZXJ0TEZzID0gdHJ1ZSBiZWxvdyBh
cyBpdCB3b3VsZCBjdXQgdGhlIGxpbmVzIHdpdGggTEZzIGFuZCBNSFRNTCByZXF1aXJlcyBDUkxG
cy4KLSAgICAgICAgICAgIGJhc2U2NEVuY29kZShkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0
YSk7Ci0gICAgICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUxpbmVMZW5ndGggPSA3NjsKLSAg
ICAgICAgICAgIHNpemVfdCBpbmRleCA9IDA7Ci0gICAgICAgICAgICBzaXplX3QgZW5jb2RlZERh
dGFMZW5ndGggPSBlbmNvZGVkRGF0YS5zaXplKCk7Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAg
ICAgICAgICAgc2l6ZV90IGxpbmVMZW5ndGggPSBzdGQ6Om1pbihlbmNvZGVkRGF0YUxlbmd0aCAt
IGluZGV4LCBtYXhpbXVtTGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRhLT5h
cHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOworICAgICAgICAg
ICAgLy8gRklYTUU6IGlkZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50IGFzIGEgc3Ry
ZWFtIHdpdGhvdXQgaGF2aW5nIHRvIGZldGNoIGl0IGFsbC4KKyAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGRhdGEgPSByZXNvdXJjZS5kYXRhLT5kYXRhKCk7CisgICAgICAgICAgICBzaXplX3QgZGF0
YUxlbmd0aCA9IHJlc291cmNlLmRhdGEtPnNpemUoKTsKKyAgICAgICAgICAgIFZlY3RvcjxjaGFy
PiBlbmNvZGVkRGF0YTsKKyAgICAgICAgICAgIGlmICghc3RyY21wKGNvbnRlbnRFbmNvZGluZywg
cXVvdGVkUHJpbnRhYmxlKSkgeworICAgICAgICAgICAgICAgIHF1b3RlZFByaW50YWJsZUVuY29k
ZShkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YSk7CisgICAgICAgICAgICAgICAgbWh0bWxE
YXRhLT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOwogICAg
ICAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7Ci0gICAgICAgICAgICAg
ICAgaW5kZXggKz0gbWF4aW11bUxpbmVMZW5ndGg7Ci0gICAgICAgICAgICB9IHdoaWxlIChpbmRl
eCA8IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBiYXNlNjQpKTsKKyAgICAgICAg
ICAgICAgICAvLyBXZSBhcmUgbm90IHNwZWNpZnlpbmcgaW5zZXJ0TEZzID0gdHJ1ZSBiZWxvdyBh
cyBpdCB3b3VsZCBjdXQgdGhlIGxpbmVzIHdpdGggTEZzIGFuZCBNSFRNTCByZXF1aXJlcyBDUkxG
cy4KKyAgICAgICAgICAgICAgICBiYXNlNjRFbmNvZGUoZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2Rl
ZERhdGEpOworICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtTGluZUxlbmd0aCA9
IDc2OworICAgICAgICAgICAgICAgIHNpemVfdCBpbmRleCA9IDA7CisgICAgICAgICAgICAgICAg
c2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6ZSgpOworICAgICAgICAg
ICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxpbmVMZW5ndGggPSBzdGQ6
Om1pbihlbmNvZGVkRGF0YUxlbmd0aCAtIGluZGV4LCBtYXhpbXVtTGluZUxlbmd0aCk7CisgICAg
ICAgICAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGlu
ZGV4LCBsaW5lTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQo
IlxyXG4iLCAyKTsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXggKz0gbWF4aW11bUxpbmVMZW5n
dGg7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoaW5kZXggPCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKaW5kZXggODZmZTFjNzVmYWZh
OWE2OTY1ODg4OGIxYmQ3MmU2NzhmZGFhYWMyYy4uMjg0MGIxYTZiM2I2NTM0MGMxZThhNzUwOWMz
NjlhZDZlYzQwOWJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxBcmNoaXZlLmgKQEAgLTQ4LDcgKzQ4LDkgQEAgcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8TUhUTUxBcmNoaXZlPiBjcmVhdGUoY29uc3QgS1VSTCYsIFNoYXJlZEJ1ZmZlciopOwogCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdl
Kik7CisgICAgLy8gSWYgdXNlQmluYXJ5RW5jb2RpbmcgaXMgdHJ1ZSwgYmluYXJ5IHJlc291cmNl
cyBhcmUgZW5jb2RlZCBhcyBiaW5hcnkgd2hpY2ggbWFrZXMgZm9yIG1vcmUgY29tcGFjdAorICAg
IC8vIGZpbGVzIGJ1dCB0aGV5IG1pZ2h0IG5vdCBiZSBvcGVuYWJsZSBpbiBvdGhlciBicm93c2Vy
cy4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRh
KFBhZ2UqLCBib29sIHVzZUJpbmFyeUVuY29kaW5nKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgTUhUTUxQYXJzZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggYWNmOWE1YTBiMTc1ZjVkZDFiZmQ1NmMyNWI2
N2RkOWIyYTA4ZTQ5ZC4uZGJiMGM4MzM1MGI2ZTA2NWY1OWFiNzE1YmU1YjBiMGZiYjA3MWZhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcApAQCAtMTQ2LDE4ICsxNDYsNDggQEAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWEKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
ICAgICBjb25zdCBib29sIGNoZWNrQm91bmRhcnkgPSAhZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0
eSgpOwogICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hlZCA9IGZhbHNlOwotICAgIFN0cmluZyBsaW5l
OwotICAgIHdoaWxlICghKGxpbmUgPSBtX2xpbmVSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5n
V2l0aExhdGluMUZhbGxiYWNrKCkpLmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmIChjaGVja0JvdW5k
YXJ5ICYmIChsaW5lID09IGVuZE9mUGFydEJvdW5kYXJ5IHx8IGxpbmUgPT0gZW5kT2ZEb2N1bWVu
dEJvdW5kYXJ5KSkgewotICAgICAgICAgICAgZW5kT2ZBcmNoaXZlUmVhY2hlZCA9IChsaW5lID09
IGVuZE9mRG9jdW1lbnRCb3VuZGFyeSk7Ci0gICAgICAgICAgICBlbmRPZlBhcnRSZWFjaGVkID0g
dHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFu
c2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6QmluYXJ5KSB7CisgICAgICAgIGlmICghY2hl
Y2tCb3VuZGFyeSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJCaW5hcnkgY29udGVudHMgcmVx
dWlyZXMgZW5kIG9mIHBhcnQiKTsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0g
ICAgICAgIC8vIE5vdGUgdGhhdCB3ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lp
KCkgYXMgYXNjaWkgdHVybnMgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1m
ZWVkLi4uKSBpbnRvICc/Jy4KLSAgICAgICAgY29udGVudC0+YXBwZW5kKGxpbmUudXRmOCgpLmRh
dGEoKSwgbGluZS5sZW5ndGgoKSk7Ci0gICAgICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFu
c2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7Ci0gICAgICAg
ICAgICAvLyBUaGUgbGluZSByZWFkZXIgcmVtb3ZlcyB0aGUgXHJcbiwgYnV0IHdlIG5lZWQgdGhl
bSBmb3IgdGhlIGNvbnRlbnQgaW4gdGhpcyBjYXNlIGFzIHRoZSBRdW90ZWRQcmludGFibGUgZGVj
b2RlciBleHBlY3RzIENSLUxGIHRlcm1pbmF0ZWQgbGluZXMuCi0gICAgICAgICAgICBjb250ZW50
LT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgbV9saW5lUmVhZGVyLnNldFNlcGFyYXRvcihl
bmRPZlBhcnRCb3VuZGFyeS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgVmVjdG9yPGNoYXI+IHBh
cnQ7CisgICAgICAgIGlmICghbV9saW5lUmVhZGVyLm5leHRDaHVuayhwYXJ0KSkgeworICAgICAg
ICAgICAgTE9HX0VSUk9SKCJCaW5hcnkgY29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsK
KyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgfQorICAgICAgICAgY29udGVudC0+YXBw
ZW5kKHBhcnQpOworICAgICAgICAgbV9saW5lUmVhZGVyLnNldFNlcGFyYXRvcigiXHJcbiIpOwor
ICAgICAgICAgVmVjdG9yPGNoYXI+IG5leHRDaGFyczsKKyAgICAgICAgIGlmIChtX2xpbmVSZWFk
ZXIucGVlayhuZXh0Q2hhcnMsIDIpICE9IDIpIHsKKyAgICAgICAgICAgICBMT0dfRVJST1IoIklu
dmFsaWQgc2VwZXJhdG9yLiIpOworICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgfQor
ICAgICAgICAgZW5kT2ZQYXJ0UmVhY2hlZCA9IHRydWU7CisgICAgICAgICBBU1NFUlQobmV4dENo
YXJzLnNpemUoKSA9PSAyKTsKKyAgICAgICAgIGVuZE9mQXJjaGl2ZVJlYWNoZWQgPSAobmV4dENo
YXJzWzBdID09ICctJyAmJiBuZXh0Q2hhcnNbMV0gPT0gJy0nKTsKKyAgICAgICAgIGlmICghZW5k
T2ZBcmNoaXZlUmVhY2hlZCkgeworICAgICAgICAgICAgIFN0cmluZyBsaW5lID0gbV9saW5lUmVh
ZGVyLm5leHRDaHVua0FzVVRGOFN0cmluZ1dpdGhMYXRpbjFGYWxsYmFjaygpOworICAgICAgICAg
ICAgIGlmICghbGluZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJO
byBDUkxGIGF0IGVuZCBvZiBiaW5hcnkgc2VjdGlvbi4iKTsKKyAgICAgICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAg
IFN0cmluZyBsaW5lOworICAgICAgICB3aGlsZSAoIShsaW5lID0gbV9saW5lUmVhZGVyLm5leHRD
aHVua0FzVVRGOFN0cmluZ1dpdGhMYXRpbjFGYWxsYmFjaygpKS5pc051bGwoKSkgeworICAgICAg
ICAgICAgZW5kT2ZBcmNoaXZlUmVhY2hlZCA9IChsaW5lID09IGVuZE9mRG9jdW1lbnRCb3VuZGFy
eSk7CisgICAgICAgICAgICBpZiAoY2hlY2tCb3VuZGFyeSAmJiAobGluZSA9PSBlbmRPZlBhcnRC
b3VuZGFyeSB8fCBlbmRPZkFyY2hpdmVSZWFjaGVkKSkgeworICAgICAgICAgICAgICAgIGVuZE9m
UGFydFJlYWNoZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIHVzZSBsaW5lLnV0ZjgoKSBhbmQgbm90IGxp
bmUuYXNjaWkoKSBhcyBhc2NpaSB0dXJucyBzcGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgdGFi
LCBsaW5lLWZlZWQuLi4pIGludG8gJz8nLgorICAgICAgICAgICAgY29udGVudC0+YXBwZW5kKGxp
bmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CisgICAgICAgICAgICBpZiAobWltZUhl
YWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OlF1b3RlZFByaW50
YWJsZSkgeworICAgICAgICAgICAgICAgIC8vIFRoZSBsaW5lIHJlYWRlciByZW1vdmVzIHRoZSBc
clxuLCBidXQgd2UgbmVlZCB0aGVtIGZvciB0aGUgY29udGVudCBpbiB0aGlzIGNhc2UgYXMgdGhl
IFF1b3RlZFByaW50YWJsZSBkZWNvZGVyIGV4cGVjdHMgQ1ItTEYgdGVybWluYXRlZCBsaW5lcy4K
KyAgICAgICAgICAgICAgICBjb250ZW50LT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KICAgICBpZiAoIWVuZE9mUGFydFJlYWNoZWQgJiYgY2hlY2tC
b3VuZGFyeSkgewpAQCAtMTc3LDYgKzIwNyw3IEBAIFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNl
PiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhCiAg
ICAgICAgIHF1b3RlZFByaW50YWJsZURlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNp
emUoKSwgZGF0YSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5C
aXQ6CisgICAgY2FzZSBNSU1FSGVhZGVyOjpCaW5hcnk6CiAgICAgICAgIGRhdGEuYXBwZW5kKGNv
bnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVm
YXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGFkODYx
OGViNGM5M2NhODk4YWQxMTJjY2U0MzIyMDY4MjAzNzRlYTQuLmZkNDFjOWQ1Y2JkMTVmMTU5NjFh
YTQ3MjQxYWU3YTQ3NmUzMzVlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcApAQCAtMTY1LDYgKzE2NSwxMSBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICB9CiB9CiAKK3ZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhKQoreworICAgIGFwcGVuZChk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIo
KQogewogICAgIGNsZWFyUGxhdGZvcm1EYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oCmluZGV4IDY4ZDk5M2EzMDc1NGE3OWYzZDhiNTg0YWQzODk0OGJiZGYwMzQ0MjUu
LmMzNzgxOGVkZGIyZWYwY2MxZDc5ZDEyNmY3YjY4ZjJlZDYxZWY1NDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC04Niw2ICs4Niw4IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgYXBwZW5kKFNoYXJlZEJ1ZmZlciopOwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIq
LCB1bnNpZ25lZCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgVmVjdG9yPGNoYXI+Jik7CisKICAg
ICB2b2lkIGNsZWFyKCk7CiAgICAgY29uc3QgY2hhciogcGxhdGZvcm1EYXRhKCkgY29uc3Q7CiAg
ICAgdW5zaWduZWQgcGxhdGZvcm1EYXRhU2l6ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKaW5kZXggZGZiMTdmOWJkODQwNGM0MmNj
ZTcwNjQxNmJlNjg2OGJiZjZiZmNlMC4uNWQ2Yjg1OGY0NmU0MzgzZmNiMmZlYTYyODU4YWY3NTMy
ZDQzYTVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1F
SGVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFk
ZXIuY3BwCkBAIC0xMjMsNiArMTIzLDggQEAgTUlNRUhlYWRlcjo6RW5jb2RpbmcgTUlNRUhlYWRl
cjo6cGFyc2VDb250ZW50VHJhbnNmZXJFbmNvZGluZyhjb25zdCBTdHJpbmcmIHRleHQKICAgICAg
ICAgcmV0dXJuIFF1b3RlZFByaW50YWJsZTsKICAgICBpZiAoZW5jb2RpbmcgPT0gIjdiaXQiKQog
ICAgICAgICByZXR1cm4gU2V2ZW5CaXQ7CisgICAgaWYgKGVuY29kaW5nID09ICJiaW5hcnkiKQor
ICAgICAgICByZXR1cm4gQmluYXJ5OwogICAgIExPR19FUlJPUigiVW5rbm93biBlbmNvZGluZyAn
JXMnIGZvdW5kIGluIE1JTUUgaGVhZGVyLiIsIHRleHQuYXNjaWkoKS5kYXRhKCkpOwogICAgIHJl
dHVybiBVbmtub3duOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9NSU1FSGVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVI
ZWFkZXIuaAppbmRleCBmNGE0NTU2MDQ5ODVhNzk1ZGE5OTRmZDA2NmRhNDNkYmE0N2E5MGZkLi4w
ZTAyYTZmZDc4MmE3MDczYjI0ZTNjMjZlOWU3NjFlMGQ2OTU1OGE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuaApAQCAtNDYsNiArNDYsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFF1b3RlZFByaW50YWJsZSwKICAgICAgICAgQmFzZTY0LAogICAgICAgICBT
ZXZlbkJpdCwKKyAgICAgICAgQmluYXJ5LAogICAgICAgICBVbmtub3duCiAgICAgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBkMjJkNDEzYWM3YWVjMWNiMGQyNmRjYjhhYzk5Y2Uy
NGYwNjI4YjlhLi45YjhjZWRiYjFkMjYyOTY5MWY5OGVkZmM1N2NjZGJjOWM1NWNmZDhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTA2LTI2ICBKYXkg
Q2l2ZWxsaSAgPGpjaXZlbGxpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgYmluYXJ5IHBhcnQgc3VwcG9ydCB0byBN
SFRNTC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYz
MzEwCisKKyAgICAgICAgKiBwdWJsaWMvV2ViUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBz
cmMvV2ViUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlU2VyaWFs
aXplcjo6c2VyaWFsaXplVG9NSFRNTCk6CisKIDIwMTEtMDYtMjMgIEpvaG4gQWJkLUVsLU1hbGVr
ICA8amFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUGFnZVNlcmlhbGl6
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBhZ2VTZXJpYWxpemVyLmgK
aW5kZXggZTJkYjA3YmU0MTgwNTdiMGU4NmQyYTVjODA2ODc4N2RkMGJjZmU3OS4uNmRkYjNiZTU1
ZGEzMDMzYWY3OGExODU0NzA0NjY1MzU0OGVmNjYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJQYWdlU2VyaWFsaXplci5oCkBAIC01OSw3ICs1OSw5IEBAIHB1
YmxpYzoKICAgICBXRUJLSVRfQVBJIHN0YXRpYyB2b2lkIHNlcmlhbGl6ZShXZWJWaWV3KiwgV2Vi
VmVjdG9yPFJlc291cmNlPiopOwogCiAgICAgLy8gU2VyaWFsaXplcyB0aGUgV2ViVmlldyBjb250
ZW50cyB0byBhIE1IVE1MIHJlcHJlc2VudGF0aW9uLgotICAgIFdFQktJVF9BUEkgc3RhdGljIFdl
YkNTdHJpbmcgc2VyaWFsaXplVG9NSFRNTChXZWJWaWV3Kik7CisgICAgLy8gUGFzc2luZyB0cnVl
IGZvciB8dXNlQmluYXJ5RW5jb2Rpbmd8IHdpbGwgcmVzdWx0IGluIGEgc21hbGxlciBIVE1MIGZp
bGUsCisgICAgLy8gYnV0IGl0IG1pZ2h0IG5vdCB3b3JrIG9uIG90aGVyIGJyb3dzZXJzLgorICAg
IFdFQktJVF9BUEkgc3RhdGljIFdlYkNTdHJpbmcgc2VyaWFsaXplVG9NSFRNTChXZWJWaWV3Kiwg
Ym9vbCB1c2VCaW5hcnlFbmNvZGluZyA9IGZhbHNlKTsKIAogICAgIC8vIElNUE9SVEFOVDoKICAg
ICAvLyBUaGUgQVBJIGJlbG93IGlzIGFuIG9sZGVyIGltcGxlbWVudGF0aW9uIG9mIGEgcGFnZXNl
cmlhbGl6YXRpb24gdGhhdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFn
ZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDZkZjg0YmI2Yjk2YThkZDM0YzI2ODZlMjA2NjEyOGQ3ZTBm
ZjViYmQuLjhjODYxOGFmM2I4Njc5YWQ4Njc5MTJmZGM1NGY4N2UxYWU2ZDNjMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlU2VyaWFsaXplci5jcHAKQEAgLTIw
MSw5ICsyMDEsOSBAQCB2b2lkIFdlYlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemUoV2ViVmlldyog
dmlldywgV2ViVmVjdG9yPFdlYlBhZ2VTZXJpYWxpemVyOjpSZQogICAgICpyZXNvdXJjZXNQYXJh
bSA9IHJlc3VsdDsgICAgICAgICAKIH0KIAotV2ViQ1N0cmluZyBXZWJQYWdlU2VyaWFsaXplcjo6
c2VyaWFsaXplVG9NSFRNTChXZWJWaWV3KiB2aWV3KQorV2ViQ1N0cmluZyBXZWJQYWdlU2VyaWFs
aXplcjo6c2VyaWFsaXplVG9NSFRNTChXZWJWaWV3KiB2aWV3LCBib29sIHVzZUJpbmFyeUVuY29k
aW5nKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1odG1sID0gTUhUTUxBcmNoaXZlOjpn
ZW5lcmF0ZU1IVE1MRGF0YShzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KHZpZXcpLT5wYWdlKCkp
OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1odG1sID0gTUhUTUxBcmNoaXZlOjpnZW5lcmF0
ZU1IVE1MRGF0YShzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KHZpZXcpLT5wYWdlKCksIHVzZUJp
bmFyeUVuY29kaW5nKTsKICAgICAvLyBGSVhNRTogd2UgYXJlIGNvcHlpbmcgYWxsIHRoZSBkYXRh
IGhlcmUuIElkZWFseSB3ZSB3b3VsZCBoYXZlIGEgV2ViU2hhcmVkRGF0YSgpLgogICAgIHJldHVy
biBXZWJDU3RyaW5nKG1odG1sLT5kYXRhKCksIG1odG1sLT5zaXplKCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98766</attachid>
            <date>2011-06-27 12:31:14 -0700</date>
            <delta_ts>2011-06-27 15:18:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63310-20110627123113.patch</filename>
            <type>text/plain</type>
            <size>18389</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODk2MDYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YzUzNTkyZjcwOTAxMjgxNGE4ZmVm
NzI3NDcwNzU5MWY0M2FiY2VkLi5lZGU3OGQ5YWMzOTIwZWE3YzA1MmViMWNkZjE1YjA4ZWE2MzQ2
MzYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDYtMjcgIEpheSBDaXZlbGxpICA8amNp
dmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGluZyBiaW5hcnkgcGFydCBzdXBwb3J0IHRvIE1IVE1MLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMzMTAKKworICAgICAg
ICAqIG1odG1sL211bHRpX2ZyYW1lc19iaW5hcnkubWh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9taHRtbC9tdWx0aV9mcmFtZXNfYmluYXJ5LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisKIDIwMTEtMDYtMjMgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGRlZCBleHBlY3RlZCByZXN1bHRzIGZvciBTbm93IExlb3BhcmQgYW5kIGVhcmxpZXIu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9taHRtbC9tdWx0aV9mcmFtZXNfYmluYXJ5Lm1odCBi
L0xheW91dFRlc3RzL21odG1sL211bHRpX2ZyYW1lc19iaW5hcnkubWh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3
ZWMzMDJiYWFlMWQ1MTM0ZTA4OWIwZWIxM2M5YTIxOGM4MjJlOWUKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDI3MzQKemNtZFRgWkQ8QHQ3ezEwMitMYTRJRFRzPHBSPj1xUGNLMVN9bSZATURVRzk9
UStlPEBwN3peVGM/c2pySnZiU14yCnolcTJPWlJIX3N6dj80fFFDJCp4YEI5Wj1ZckdmcXZEfk4k
bTFPQGQrTUUmRFdoNUdKcCh5T3RrO1pucTVLVzFtJQp6Y2pvPGctZS0xX3Z3OU1sdnZgNW5zTTEx
bnE7aH50RTJfKmtEPSg2Jk9ya1Z1OzJKXkYhNGclT0NvJU58c3lBSXAKejgha1p9NWZVYCNJaiQy
Q1JrQiE7QnF9b1Iye2ltOWRaeXsyVkl2KyMjI3F3Nzt3V1kkMz9yJSgzJm1YUVM7N1RuCnpVSn1K
TTdAQn5raTY+KkZScyZXRCpULUR5b1ZjKjJKc3dyfE50akJoa31PSHhrIyQkfiQxMUdwKl9nTGRZ
N0FQYwp6SlBvcm1walMyd3FueVlOISgkP3dve1RAMChHdDFRKyhkZTBSRTtXOCNoM248XjRvMkBY
fX5RTDlEOEQoQEwwflAKekdNanB9QiZ0dmsleGE0cVdLfUUhY081QWtObkxrZ3o7JjNBZGY7cTE0
NTgrRzx7TjFHOW17a0d3a0AreEJ0fSZTCnpiM3RURUV6Qk5AQkAmfSF2QUFqfSZgZTNDT1JPQ3Yl
RzUmQCY9cGxxOGA0dGZKUWBTfXAzTjNEN3E/aGJtTFJpIQp6UWFFIzYhVXhmXmczIz98R2BtQEVx
KHVuPUtRSzd7Y1J+e21iP3dPakRRKT56NmpSQF8wbEp+VDY9dF9BclF9YyUKemc2fTVvMVgmOyl5
UEo1XiVuRypAbExuemZmPiU+MkN4U0ozbD9YaTtFRV8+VVJtOz52RGVJcUE7eVlJdnpPNzJ5Cnp2
a151ZCUwcy09I0dFOElfcGFCcitYXnp9UCkyS2JINUQ8QmFMI3kyd09PQFVocUJPV01DTSVMY1Fk
Vm1KPHVQXwp6X1laMisxSlFoYGN5Szd5S1omVWVuQE5VVGhIWFVhUGBBRFBmRHpOQzN5OWgmSFBH
XmQwUnNSWFF4NV9TUVRNVWQKekt9aUgjPjBvKnJAMT40UHFNZ1AraHNManJsUVl2KFFSTntlNXtY
MCRgUnJrTUtrRENtP31ne012MnFTeGQmSj9YCnpPbDBOU0JPQ0I+Y1AoOF5NPE4mQnl6aDU+NH05
LXk8ZDI5KnIyREZXP3xGTnVgKFlTLXledXxwQCZ8cj9DKkorNAp6dXtYRTZlKH1yKXJ7N3kkeTdC
cWF7IzRpNTxwKndiWCY/VWojaiVZY2B0OTxPUV4heEE+XlhuYHlJPU80S3okejwKempuZW5+Xkpf
Mms7WEBacnltNmBQe1BvV3N8RWFKeF5WWnppcmBLTENpdUU1UyZlPFEwZTBCWCYmKHRyXmZBe0kt
CnpxbVBZVUpHTlNXWlQqfFo1MnIzJGVkfWl+eXN2KDg8KncmNDR7bShAK3V8Sjk2RGoxVHZuIWRT
JDImO050fXw2VAp6RXdAKEo0KE11b2ZmRj1PeHNZSyFfWGNGUFRiUjcjJldBa0ZrQEpFOHZ1JlE5
fDE8QUglSW5CYD19XkFxZF9hdT4KejtSRS16fDEoLWRCSjQ1ZzVGVFBnTHYjTCoydTU7fDNmY1F0
SFY9VjB2WW44OVhoR1hHIz1HT18zTyhvYHpIb05KClg2JntUdlRZK2pISl4jc3AoQDYkbXY4ZUl+
S2o0YjcKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL21odG1sL211bHRpX2ZyYW1lc19iaW5hcnktZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vbWh0bWwvbXVsdGlfZnJhbWVzX2JpbmFyeS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDliYTQ2MTI4ODEyMWU0NzdkNzQ4YTNkZjZjNzEyNGIy
ZDA1NzdjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L21odG1sL211bHRpX2ZyYW1lc19iaW5hcnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzEgQEAK
K1RoaXMgcGFnZSBjb250YWlucyBzZXZlcmFsIGZyYW1lcy4KKworCisKK0FuZCBhIHJlZCBzcXVh
cmU6CisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0t
Pi0tPicKKy0tLS0tLS0tCitUaGUgZmlyc3QgZnJhbWUhCisKKy0tLS0tLS0tCitGcmFtZTogJzwh
LS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+JworLS0tLS0tLS0KK1RoZSBzZWNvbmQgZnJh
bWUhCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUyLS0+LS0+
JworLS0tLS0tLS0KK1RoZSB0aGlyZCBmcmFtZSEKK1RoaXMgb25lIGNvbnRhaW5zIHlldCBhbm90
aGVyIGZyYW1lLiBXaGF0IGEgdHdpc3QhCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1l
UGF0aCAvLzwhLS1mcmFtZTItLT4vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitUaGlzIGlz
IGZyYW1lIDQhCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDBjYTk4YzZmNDEyNGEyNzJjNzU3OWI2NDFkMjk5
ZmZiYmI2NTEwMmEuLjg1OTVmODBhY2M0N2YxOGI5MGE2NWQ2ZWJjOTNkYTVmYzAzYmQyNjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMS0wNi0yNyAgSmF5IENpdmVsbGkgIDxqY2l2
ZWxsaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkaW5nIGJpbmFyeSBwYXJ0IHN1cHBvcnQgdG8gTUhUTUwuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzMxMAorCisgICAgICAg
ICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
TUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YVVzaW5nQmluYXJ5RW5jb2RpbmcpOgorICAg
ICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oOgorICAgICAgICAqIGxv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1I
VE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAg
ICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
TUlNRUhlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSU1FSGVhZGVyOjpwYXJzZUNvbnRl
bnRUcmFuc2ZlckVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFk
ZXIuaDoKKwogMjAxMS0wNi0yMyAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4IGNjZWY2
NDRkOWI5MDliMWU4MDYwODJlMzI3MjVhODVhZDAwNDkwMzcuLjI5M2M5MjcxMTY0MmVkOWI3ODc1
YzkyMTM4MTNkNWFkMDVkN2JlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtNTcsNiArNTcsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNvbnN0IGNoYXIqIGNvbnN0IHF1b3RlZFByaW50YWJsZSA9ICJxdW90
ZWQtcHJpbnRhYmxlIjsKIGNvbnN0IGNoYXIqIGNvbnN0IGJhc2U2NCA9ICJiYXNlNjQiOworY29u
c3QgY2hhciogY29uc3QgYmluYXJ5ID0gImJpbmFyeSI7CiAKIHN0YXRpYyBTdHJpbmcgZ2VuZXJh
dGVSYW5kb21Cb3VuZGFyeSgpCiB7CkBAIC0xMjQsNiArMTI1LDE2IEBAIFBhc3NSZWZQdHI8TUhU
TUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIFNoYXJlZEJ1
ZmZlciogZGF0CiAKIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVy
YXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiB7CisgICAgcmV0dXJuIGdlbmVyYXRlTUhUTUxEYXRh
KHBhZ2UsIGZhbHNlKTsKK30KKworUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2
ZTo6Z2VuZXJhdGVNSFRNTERhdGFVc2luZ0JpbmFyeUVuY29kaW5nKFBhZ2UqIHBhZ2UpCit7Cisg
ICAgcmV0dXJuIGdlbmVyYXRlTUhUTUxEYXRhKHBhZ2UsIHRydWUpOworfQorCitQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdl
LCBib29sIHVzZUJpbmFyeUVuY29kaW5nKQorewogICAgIFZlY3RvcjxQYWdlU2VyaWFsaXplcjo6
UmVzb3VyY2U+IHJlc291cmNlczsKICAgICBQYWdlU2VyaWFsaXplciBwYWdlU2VyaWFsaXplcigm
cmVzb3VyY2VzKTsKICAgICBwYWdlU2VyaWFsaXplci5zZXJpYWxpemUocGFnZSk7CkBAIC0xNjcs
NyArMTc4LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJh
dGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIkNv
bnRlbnQtVHlwZTogIik7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJlc291cmNlLm1p
bWVUeXBlKTsKIAotICAgICAgICBjb25zdCBjaGFyKiBjb250ZW50RW5jb2RpbmcgPSBNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShyZXNvdXJjZS5taW1lVHlw
ZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlKHJlc291
cmNlLm1pbWVUeXBlKSA/IHF1b3RlZFByaW50YWJsZSA6IGJhc2U2NDsKKyAgICAgICAgY29uc3Qg
Y2hhciogY29udGVudEVuY29kaW5nID0gdXNlQmluYXJ5RW5jb2RpbmcgPyBiaW5hcnkgOiBiYXNl
NjQ7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxuQ29udGVudC1UcmFuc2Zlci1F
bmNvZGluZzogIik7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGNvbnRlbnRFbmNvZGlu
Zyk7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxuQ29udGVudC1Mb2NhdGlvbjog
Iik7CkBAIC0xNzcsMjcgKzE4OCwzNiBAQCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTUhUTUxB
cmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICBhc2NpaVN0cmlu
ZyA9IHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7CiAgICAgICAgIG1odG1sRGF0YS0+
YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCi0gICAg
ICAgIC8vIEZJWE1FOiBpZGVhbGx5IHdlIHdvdWxkIGVuY29kZSB0aGUgY29udGVudCBhcyBhIHN0
cmVhbSB3aXRob3V0IGhhdmluZyB0byBmZXRjaCBpdCBhbGwuCi0gICAgICAgIGNvbnN0IGNoYXIq
IGRhdGEgPSByZXNvdXJjZS5kYXRhLT5kYXRhKCk7Ci0gICAgICAgIHNpemVfdCBkYXRhTGVuZ3Ro
ID0gcmVzb3VyY2UuZGF0YS0+c2l6ZSgpOwotICAgICAgICBWZWN0b3I8Y2hhcj4gZW5jb2RlZERh
dGE7Ci0gICAgICAgIGlmICghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgcXVvdGVkUHJpbnRhYmxl
KSkgewotICAgICAgICAgICAgcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFMZW5ndGgs
IGVuY29kZWREYXRhKTsKLSAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRh
LmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsKLSAgICAgICAgICAgIG1odG1sRGF0YS0+YXBw
ZW5kKCJcclxuIiwgMik7CisgICAgICAgIGlmICghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgYmlu
YXJ5KSkgeworICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YTsKKyAgICAgICAgICAgIHNpemVf
dCBwb3NpdGlvbiA9IDA7CisgICAgICAgICAgICB3aGlsZSAoc2l6ZV90IGxlbmd0aCA9IHJlc291
cmNlLmRhdGEtPmdldFNvbWVEYXRhKGRhdGEsIHBvc2l0aW9uKSkgeworICAgICAgICAgICAgICAg
IG1odG1sRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24gKz0gbGVuZ3RoOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgQVNTRVJUKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBiYXNlNjQpKTsKLSAgICAgICAgICAg
IC8vIFdlIGFyZSBub3Qgc3BlY2lmeWluZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93IGFzIGl0IHdv
dWxkIGN1dCB0aGUgbGluZXMgd2l0aCBMRnMgYW5kIE1IVE1MIHJlcXVpcmVzIENSTEZzLgotICAg
ICAgICAgICAgYmFzZTY0RW5jb2RlKGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhKTsKLSAg
ICAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtTGluZUxlbmd0aCA9IDc2OwotICAgICAgICAg
ICAgc2l6ZV90IGluZGV4ID0gMDsKLSAgICAgICAgICAgIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0
aCA9IGVuY29kZWREYXRhLnNpemUoKTsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAg
ICBzaXplX3QgbGluZUxlbmd0aCA9IHN0ZDo6bWluKGVuY29kZWREYXRhTGVuZ3RoIC0gaW5kZXgs
IG1heGltdW1MaW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChl
bmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7CisgICAgICAgICAgICAvLyBG
SVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJlYW0gd2l0
aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgorICAgICAgICAgICAgY29uc3QgY2hhciogZGF0
YSA9IHJlc291cmNlLmRhdGEtPmRhdGEoKTsKKyAgICAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3Ro
ID0gcmVzb3VyY2UuZGF0YS0+c2l6ZSgpOworICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGVuY29k
ZWREYXRhOworICAgICAgICAgICAgaWYgKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBxdW90ZWRQ
cmludGFibGUpKSB7CisgICAgICAgICAgICAgICAgcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGRhdGEs
IGRhdGFMZW5ndGgsIGVuY29kZWREYXRhKTsKKyAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFw
cGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7CiAgICAgICAgICAg
ICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKLSAgICAgICAgICAgICAgICBpbmRl
eCArPSBtYXhpbXVtTGluZUxlbmd0aDsKLSAgICAgICAgICAgIH0gd2hpbGUgKGluZGV4IDwgZW5j
b2RlZERhdGFMZW5ndGgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIGJhc2U2NCkpOworICAgICAgICAgICAgICAg
IC8vIFdlIGFyZSBub3Qgc3BlY2lmeWluZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93IGFzIGl0IHdv
dWxkIGN1dCB0aGUgbGluZXMgd2l0aCBMRnMgYW5kIE1IVE1MIHJlcXVpcmVzIENSTEZzLgorICAg
ICAgICAgICAgICAgIGJhc2U2NEVuY29kZShkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YSk7
CisgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1MaW5lTGVuZ3RoID0gNzY7Cisg
ICAgICAgICAgICAgICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICAgICAgICAgICAgICBzaXplX3Qg
ZW5jb2RlZERhdGFMZW5ndGggPSBlbmNvZGVkRGF0YS5zaXplKCk7CisgICAgICAgICAgICAgICAg
ZG8geworICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGluZUxlbmd0aCA9IHN0ZDo6bWluKGVu
Y29kZWREYXRhTGVuZ3RoIC0gaW5kZXgsIG1heGltdW1MaW5lTGVuZ3RoKTsKKyAgICAgICAgICAg
ICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxp
bmVMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIs
IDIpOworICAgICAgICAgICAgICAgICAgICBpbmRleCArPSBtYXhpbXVtTGluZUxlbmd0aDsKKyAg
ICAgICAgICAgICAgICB9IHdoaWxlIChpbmRleCA8IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCA4NmZlMWM3NWZhZmE5YTY5NjU4
ODg4YjFiZDcyZTY3OGZkYWFhYzJjLi4wMzcxNTM2NjY0ZTVmOTg4NjZkNjkzZWNjNjFlZTI4ODEy
Yzk5MWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTEFyY2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTEFyY2hpdmUuaApAQCAtNDksOCArNDksMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IEtVUkwmLCBTaGFyZWRCdWZmZXIqKTsK
IAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERhdGEo
UGFnZSopOworICAgIC8vIEJpbmFyeSBlbmNvZGluZyByZXN1bHRzIGluIHNtYWxsZXIgTUhUTUwg
ZmlsZXMgYnV0IHRoZXkgbWlnaHQgbm90IHdvcmsgaW4gb3RoZXIgYnJvd3NlcnMuCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YVVzaW5nQmluYXJ5
RW5jb2RpbmcoUGFnZSopOwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERhdGEoUGFnZSosIGJvb2wgdXNlQmluYXJ5RW5jb2Rpbmcp
OworCiAgICAgZnJpZW5kIGNsYXNzIE1IVE1MUGFyc2VyOwogICAgIE1IVE1MQXJjaGl2ZSgpOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcAppbmRleCBhY2Y5YTVhMGIxNzVmNWRkMWJmZDU2YzI1YjY3ZGQ5YjJhMDhlNDlkLi5k
YmIwYzgzMzUwYjZlMDY1ZjU5YWI3MTViZTViMGIwZmJiMDcxZmFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xNDYs
MTggKzE0Niw0OCBAQCBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBh
cnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYQogICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGNvbnN0IGJvb2wg
Y2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9vbCBl
bmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7Ci0gICAgU3RyaW5nIGxpbmU7Ci0gICAgd2hpbGUgKCEo
bGluZSA9IG1fbGluZVJlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJh
Y2soKSkuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKGNoZWNrQm91bmRhcnkgJiYgKGxpbmUgPT0g
ZW5kT2ZQYXJ0Qm91bmRhcnkgfHwgbGluZSA9PSBlbmRPZkRvY3VtZW50Qm91bmRhcnkpKSB7Ci0g
ICAgICAgICAgICBlbmRPZkFyY2hpdmVSZWFjaGVkID0gKGxpbmUgPT0gZW5kT2ZEb2N1bWVudEJv
dW5kYXJ5KTsKLSAgICAgICAgICAgIGVuZE9mUGFydFJlYWNoZWQgPSB0cnVlOwotICAgICAgICAg
ICAgYnJlYWs7CisgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSA9
PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKKyAgICAgICAgaWYgKCFjaGVja0JvdW5kYXJ5KSB7Cisg
ICAgICAgICAgICBMT0dfRVJST1IoIkJpbmFyeSBjb250ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFy
dCIpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgLy8gTm90ZSB0
aGF0IHdlIHVzZSBsaW5lLnV0ZjgoKSBhbmQgbm90IGxpbmUuYXNjaWkoKSBhcyBhc2NpaSB0dXJu
cyBzcGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgdGFiLCBsaW5lLWZlZWQuLi4pIGludG8gJz8n
LgotICAgICAgICBjb250ZW50LT5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0
aCgpKTsKLSAgICAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSA9
PSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGUpIHsKLSAgICAgICAgICAgIC8vIFRoZSBsaW5l
IHJlYWRlciByZW1vdmVzIHRoZSBcclxuLCBidXQgd2UgbmVlZCB0aGVtIGZvciB0aGUgY29udGVu
dCBpbiB0aGlzIGNhc2UgYXMgdGhlIFF1b3RlZFByaW50YWJsZSBkZWNvZGVyIGV4cGVjdHMgQ1It
TEYgdGVybWluYXRlZCBsaW5lcy4KLSAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZCgiXHJcbiIs
IDIpOworICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9yKGVuZE9mUGFydEJvdW5kYXJ5
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBWZWN0b3I8Y2hhcj4gcGFydDsKKyAgICAgICAgaWYg
KCFtX2xpbmVSZWFkZXIubmV4dENodW5rKHBhcnQpKSB7CisgICAgICAgICAgICBMT0dfRVJST1Io
IkJpbmFyeSBjb250ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIpOworICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICB9CisgICAgICAgICBjb250ZW50LT5hcHBlbmQocGFydCk7CisgICAg
ICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7CisgICAgICAgICBWZWN0b3I8
Y2hhcj4gbmV4dENoYXJzOworICAgICAgICAgaWYgKG1fbGluZVJlYWRlci5wZWVrKG5leHRDaGFy
cywgMikgIT0gMikgeworICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBzZXBlcmF0b3Iu
Iik7CisgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICB9CisgICAgICAgICBlbmRPZlBh
cnRSZWFjaGVkID0gdHJ1ZTsKKyAgICAgICAgIEFTU0VSVChuZXh0Q2hhcnMuc2l6ZSgpID09IDIp
OworICAgICAgICAgZW5kT2ZBcmNoaXZlUmVhY2hlZCA9IChuZXh0Q2hhcnNbMF0gPT0gJy0nICYm
IG5leHRDaGFyc1sxXSA9PSAnLScpOworICAgICAgICAgaWYgKCFlbmRPZkFyY2hpdmVSZWFjaGVk
KSB7CisgICAgICAgICAgICAgU3RyaW5nIGxpbmUgPSBtX2xpbmVSZWFkZXIubmV4dENodW5rQXNV
VEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKCk7CisgICAgICAgICAgICAgaWYgKCFsaW5lLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIk5vIENSTEYgYXQgZW5kIG9m
IGJpbmFyeSBzZWN0aW9uLiIpOworICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
ICAgICB9CisgICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgU3RyaW5nIGxpbmU7Cisg
ICAgICAgIHdoaWxlICghKGxpbmUgPSBtX2xpbmVSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5n
V2l0aExhdGluMUZhbGxiYWNrKCkpLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBlbmRPZkFyY2hp
dmVSZWFjaGVkID0gKGxpbmUgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5KTsKKyAgICAgICAgICAg
IGlmIChjaGVja0JvdW5kYXJ5ICYmIChsaW5lID09IGVuZE9mUGFydEJvdW5kYXJ5IHx8IGVuZE9m
QXJjaGl2ZVJlYWNoZWQpKSB7CisgICAgICAgICAgICAgICAgZW5kT2ZQYXJ0UmVhY2hlZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAv
LyBOb3RlIHRoYXQgd2UgdXNlIGxpbmUudXRmOCgpIGFuZCBub3QgbGluZS5hc2NpaSgpIGFzIGFz
Y2lpIHR1cm5zIHNwZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyB0YWIsIGxpbmUtZmVlZC4uLikg
aW50byAnPycuCisgICAgICAgICAgICBjb250ZW50LT5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgp
LCBsaW5lLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFu
c2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7CisgICAgICAg
ICAgICAgICAgLy8gVGhlIGxpbmUgcmVhZGVyIHJlbW92ZXMgdGhlIFxyXG4sIGJ1dCB3ZSBuZWVk
IHRoZW0gZm9yIHRoZSBjb250ZW50IGluIHRoaXMgY2FzZSBhcyB0aGUgUXVvdGVkUHJpbnRhYmxl
IGRlY29kZXIgZXhwZWN0cyBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVzLgorICAgICAgICAgICAgICAg
IGNvbnRlbnQtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQogICAgIGlmICghZW5kT2ZQYXJ0UmVhY2hlZCAmJiBjaGVja0JvdW5kYXJ5KSB7CkBAIC0x
NzcsNiArMjA3LDcgQEAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWEKICAgICAgICAgcXVvdGVkUHJp
bnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpLCBkYXRhKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoKKyAgICBjYXNlIE1J
TUVIZWFkZXI6OkJpbmFyeToKICAgICAgICAgZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgpLCBj
b250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggYWQ4NjE4ZWI0YzkzY2E4OThhZDEx
MmNjZTQzMjIwNjgyMDM3NGVhNC4uZmQ0MWM5ZDVjYmQxNWYxNTk2MWFhNDcyNDFhZTdhNDc2ZTMz
NWVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xNjUs
NiArMTY1LDExIEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKQogICAgIH0KIH0KIAordm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChj
b25zdCBWZWN0b3I8Y2hhcj4mIGRhdGEpCit7CisgICAgYXBwZW5kKGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSk7Cit9CisKIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhcigpCiB7CiAgICAgY2xlYXJQ
bGF0Zm9ybURhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXgg
NjhkOTkzYTMwNzU0YTc5ZjNkOGI1ODRhZDM4OTQ4YmJkZjAzNDQyNS4uYzM3ODE4ZWRkYjJlZjBj
YzFkNzlkMTI2ZjdiNjhmMmVkNjFlZjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmgKQEAgLTg2LDYgKzg2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBlbmQoU2hh
cmVkQnVmZmVyKik7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciosIHVuc2lnbmVkKTsKKyAg
ICB2b2lkIGFwcGVuZChjb25zdCBWZWN0b3I8Y2hhcj4mKTsKKwogICAgIHZvaWQgY2xlYXIoKTsK
ICAgICBjb25zdCBjaGFyKiBwbGF0Zm9ybURhdGEoKSBjb25zdDsKICAgICB1bnNpZ25lZCBwbGF0
Zm9ybURhdGFTaXplKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9NSU1FSGVhZGVyLmNwcAppbmRleCBkZmIxN2Y5YmQ4NDA0YzQyY2NlNzA2NDE2YmU2ODY4YmJm
NmJmY2UwLi41ZDZiODU4ZjQ2ZTQzODNmY2IyZmVhNjI4NThhZjc1MzJkNDNhNWFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKQEAgLTEyMyw2
ICsxMjMsOCBAQCBNSU1FSGVhZGVyOjpFbmNvZGluZyBNSU1FSGVhZGVyOjpwYXJzZUNvbnRlbnRU
cmFuc2ZlckVuY29kaW5nKGNvbnN0IFN0cmluZyYgdGV4dAogICAgICAgICByZXR1cm4gUXVvdGVk
UHJpbnRhYmxlOwogICAgIGlmIChlbmNvZGluZyA9PSAiN2JpdCIpCiAgICAgICAgIHJldHVybiBT
ZXZlbkJpdDsKKyAgICBpZiAoZW5jb2RpbmcgPT0gImJpbmFyeSIpCisgICAgICAgIHJldHVybiBC
aW5hcnk7CiAgICAgTE9HX0VSUk9SKCJVbmtub3duIGVuY29kaW5nICclcycgZm91bmQgaW4gTUlN
RSBoZWFkZXIuIiwgdGV4dC5hc2NpaSgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIFVua25vd247CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5oCmluZGV4IGY0
YTQ1NTYwNDk4NWE3OTVkYTk5NGZkMDY2ZGE0M2RiYTQ3YTkwZmQuLjBlMDJhNmZkNzgyYTcwNzNi
MjRlM2MyNmU5ZTc2MWUwZDY5NTU4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTUlNRUhlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTUlNRUhlYWRlci5oCkBAIC00Niw2ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgUXVv
dGVkUHJpbnRhYmxlLAogICAgICAgICBCYXNlNjQsCiAgICAgICAgIFNldmVuQml0LAorICAgICAg
ICBCaW5hcnksCiAgICAgICAgIFVua25vd24KICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IGQyMmQ0MTNhYzdhZWMxY2IwZDI2ZGNiOGFjOTljZTI0ZjA2MjhiOWEuLjYwNjFk
ZDI3YmM0NDhlNjJlMDM3MDdiZDNiMGJmMjU1MDFmNTdhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDYtMjcgIEpheSBDaXZlbGxpICA8amNpdmVs
bGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZGluZyBiaW5hcnkgcGFydCBzdXBwb3J0IHRvIE1IVE1MLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMzMTAKKworICAgICAgICAq
IHB1YmxpYy9XZWJQYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHNyYy9XZWJQYWdlU2VyaWFs
aXplci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVU
b01IVE1MKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZVRv
TUhUTUxVc2luZ0JpbmFyeUVuY29kaW5nKToKKwogMjAxMS0wNi0yMyAgSm9obiBBYmQtRWwtTWFs
ZWsgIDxqYW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQYWdlU2VyaWFs
aXplci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUGFnZVNlcmlhbGl6ZXIu
aAppbmRleCBlMmRiMDdiZTQxODA1N2IwZTg2ZDJhNWM4MDY4Nzg3ZGQwYmNmZTc5Li5iMWI0Y2Mz
N2NiNTgwYTQyYWZlMjkwYTZmNzA0NzE4YmVlNmQxNDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQYWdlU2VyaWFsaXplci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlBhZ2VTZXJpYWxpemVyLmgKQEAgLTYxLDYgKzYxLDEwIEBA
IHB1YmxpYzoKICAgICAvLyBTZXJpYWxpemVzIHRoZSBXZWJWaWV3IGNvbnRlbnRzIHRvIGEgTUhU
TUwgcmVwcmVzZW50YXRpb24uCiAgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViQ1N0cmluZyBzZXJp
YWxpemVUb01IVE1MKFdlYlZpZXcqKTsKIAorICAgIC8vIFNpbWlsYXIgdG8gc2VyaWFsaXplVG9N
SFRNTCBidXQgdXNlcyBiaW5hcnkgZW5jb2RpbmcgZm9yIHRoZSBNSFRNTCBwYXJ0cy4KKyAgICAv
LyBUaGlzIHJlc3VsdHMgaW4gYSBzbWFsbGVyIE1IVE1MIGZpbGUgYnV0IGl0IG1pZ2h0IG5vdCBi
ZSBzdXBwb3J0ZWQgYnkgb3RoZXIgYnJvd3NlcnMuCisgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2Vi
Q1N0cmluZyBzZXJpYWxpemVUb01IVE1MVXNpbmdCaW5hcnlFbmNvZGluZyhXZWJWaWV3Kik7CisK
ICAgICAvLyBJTVBPUlRBTlQ6CiAgICAgLy8gVGhlIEFQSSBiZWxvdyBpcyBhbiBvbGRlciBpbXBs
ZW1lbnRhdGlvbiBvZiBhIHBhZ2VzZXJpYWxpemF0aW9uIHRoYXQKICAgICAvLyB3aWxsIGJlIHJl
bW92ZWQgc29vbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBh
Z2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJp
YWxpemVyLmNwcAppbmRleCA2ZGY4NGJiNmI5NmE4ZGQzNGMyNjg2ZTIwNjYxMjhkN2UwZmY1YmJk
Li5kYTQ5MDUyNDdmOWFlNTZmODQ4M2MyNmEwY2I1ZDlhYjQzNDE5ZTY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0yMDgsNiAr
MjA4LDEzIEBAIFdlYkNTdHJpbmcgV2ViUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZVRvTUhUTUwo
V2ViVmlldyogdmlldykKICAgICByZXR1cm4gV2ViQ1N0cmluZyhtaHRtbC0+ZGF0YSgpLCBtaHRt
bC0+c2l6ZSgpKTsKIH0KIAorV2ViQ1N0cmluZyBXZWJQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXpl
VG9NSFRNTFVzaW5nQmluYXJ5RW5jb2RpbmcoV2ViVmlldyogdmlldykKK3sKKyAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtaHRtbCA9IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGFVc2lu
Z0JpbmFyeUVuY29kaW5nKHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4odmlldyktPnBhZ2UoKSk7
CisgICAgLy8gRklYTUU6IHdlIGFyZSBjb3B5aW5nIGFsbCB0aGUgZGF0YSBoZXJlLiBJZGVhbHkg
d2Ugd291bGQgaGF2ZSBhIFdlYlNoYXJlZERhdGEoKS4KKyAgICByZXR1cm4gV2ViQ1N0cmluZyht
aHRtbC0+ZGF0YSgpLCBtaHRtbC0+c2l6ZSgpKTsKK30KKwogYm9vbCBXZWJQYWdlU2VyaWFsaXpl
cjo6c2VyaWFsaXplKFdlYkZyYW1lKiBmcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIHJlY3Vyc2l2ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJQYWdlU2VyaWFsaXplckNsaWVudCogY2xpZW50LAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>