<?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>80719</bug_id>
          
          <creation_ts>2012-03-09 12:41:24 -0800</creation_ts>
          <short_desc>Allow WebFileChooser to return extra file info (like displayName) in addition to mere file paths</short_desc>
          <delta_ts>2012-03-13 07:07:13 -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="Kinuko Yasuda">kinuko</reporter>
          <assigned_to name="Kinuko Yasuda">kinuko</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>michaeln</cc>
    
    <cc>satorux</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>575089</commentid>
    <comment_count>0</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-09 12:41:24 -0800</bug_when>
    <thetext>Allow WebFileChooser to return extra file info (like displayName) in addition to mere file paths.

On some filesystems/platforms we want to use a separate display name from the base part of the given platform file path.

E.g. we may want to keep a snapshot file of the selected file in a temporary directory with a cryptic name while it&apos;s being processed, but want to use a different human-readable display name for the name that is exposed as File.name or as filename= field in the content disposition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575102</commentid>
    <comment_count>1</comment_count>
      <attachid>131078</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-09 12:52:08 -0800</bug_when>
    <thetext>Created attachment 131078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575105</commentid>
    <comment_count>2</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-09 12:52:50 -0800</bug_when>
    <thetext>This is only for WebKit API changes-- the callsites and WebCore part also need to be changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575117</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-09 12:59:57 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575231</commentid>
    <comment_count>4</comment_count>
      <attachid>131078</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-03-09 14:30:34 -0800</bug_when>
    <thetext>Comment on attachment 131078
Patch

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

&gt; Source/WebKit/chromium/public/WebFileChooserCompletion.h:55
&gt;      virtual void didChooseFile(const WebVector&lt;WebString&gt;&amp; fileNames) = 0;

is the idea that didChooseFile will be deprecated and removed?  assuming that is the
case, then you might just want to use the same name for the new method.  (although,
perhaps it should be &quot;didChooseFiles&quot; instead of &quot;didChooseFile&quot;!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575300</commentid>
    <comment_count>5</comment_count>
      <attachid>131125</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-09 15:30:42 -0800</bug_when>
    <thetext>Created attachment 131125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575303</commentid>
    <comment_count>6</comment_count>
      <attachid>131078</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-09 15:38:50 -0800</bug_when>
    <thetext>Comment on attachment 131078
Patch

Thanks.  I added corresponding WebCore changes with some FIXME comments.  The change may feel a bit noisy as we need to keep the existing methods as well not to break other ports.

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

&gt; Source/WebKit/chromium/public/WebFileChooserCompletion.h:55
&gt;      virtual void didChooseFile(const WebVector&lt;WebString&gt;&amp; fileNames) = 0;

Either one of the method should be deprecated.  I think probably we should eventually just rewind what we&apos;re doing now... I added FIXME comment about that, renamed it to didChooseFile, and also added another comment that we should consider renaming it to &quot;didChooseFiles&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575330</commentid>
    <comment_count>7</comment_count>
      <attachid>131125</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-09 16:25:51 -0800</bug_when>
    <thetext>Comment on attachment 131125
Patch

Attachment 131125 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/11901024</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575346</commentid>
    <comment_count>8</comment_count>
      <attachid>131125</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-09 16:51:55 -0800</bug_when>
    <thetext>Comment on attachment 131125
Patch

Attachment 131125 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11892795</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575371</commentid>
    <comment_count>9</comment_count>
      <attachid>131125</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-09 17:30:39 -0800</bug_when>
    <thetext>Comment on attachment 131125
Patch

Attachment 131125 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11904828</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575387</commentid>
    <comment_count>10</comment_count>
      <attachid>131125</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-09 18:06:51 -0800</bug_when>
    <thetext>Comment on attachment 131125
Patch

Attachment 131125 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11911900</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575862</commentid>
    <comment_count>11</comment_count>
      <attachid>131125</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-11 17:55:15 -0700</bug_when>
    <thetext>Comment on attachment 131125
Patch

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

&gt; Source/WebCore/html/FileInputType.cpp:364
&gt; +    for (unsigned i = 0; i &lt; paths.size(); ++i) {
&gt; +      FileChooserFileInfo file;
&gt; +      file.path = paths[i];
&gt; +      files.append(file);
&gt; +    }

Wrong indentation.

I recommend to add constructors to FileChooserFileInfo, and make FileChooserFileInfo immutable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576983</commentid>
    <comment_count>12</comment_count>
      <attachid>131504</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-12 21:00:04 -0700</bug_when>
    <thetext>Created attachment 131504
build fix (for EWS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576989</commentid>
    <comment_count>13</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-12 21:13:34 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 131125 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131125&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/FileInputType.cpp:364
&gt; &gt; +    for (unsigned i = 0; i &lt; paths.size(); ++i) {
&gt; &gt; +      FileChooserFileInfo file;
&gt; &gt; +      file.path = paths[i];
&gt; &gt; +      files.append(file);
&gt; &gt; +    }
&gt; 
&gt; Wrong indentation.
&gt; 
&gt; I recommend to add constructors to FileChooserFileInfo, and make FileChooserFileInfo immutable.

Will fix this and re-upload the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576990</commentid>
    <comment_count>14</comment_count>
      <attachid>131507</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-12 21:20:54 -0700</bug_when>
    <thetext>Created attachment 131507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577027</commentid>
    <comment_count>15</comment_count>
      <attachid>131507</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-12 21:58:40 -0700</bug_when>
    <thetext>Comment on attachment 131507
Patch

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

&gt; Source/WebCore/html/FileInputType.cpp:127
&gt; +    Vector&lt;FileChooserFileInfo&gt; files;
&gt; +    Vector&lt;String&gt; pathAndNames;
&gt; +    state.split(&apos;\0&apos;, pathAndNames);
&gt; +    for (unsigned i = 0; i &lt; pathAndNames.size();) {
&gt; +        ASSERT(i + 1 &lt; pathAndNames.size());
&gt; +        String path = pathAndNames[i++];
&gt; +        String name = pathAndNames[i++];
&gt; +        files.append(FileChooserFileInfo(path, name));
&gt; +    }

We can&apos;t do this.
It&apos;s possible that a form control state saved by a browser without this patch, and it is restored by a browser with this patch.

&gt; Source/WebKit/chromium/src/WebFileChooserCompletionImpl.cpp:51
&gt; +    for (unsigned i = 0; i &lt; fileNames.size(); ++i) {
&gt; +      SelectedFileInfo file;
&gt; +      file.path = fileNames[i];
&gt; +      files.append(file);

Wrong indentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577038</commentid>
    <comment_count>16</comment_count>
      <attachid>131546</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-12 22:28:51 -0700</bug_when>
    <thetext>Created attachment 131546
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577054</commentid>
    <comment_count>17</comment_count>
      <attachid>131546</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-12 22:40:21 -0700</bug_when>
    <thetext>Comment on attachment 131546
Patch

Attachment 131546 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11949267</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577055</commentid>
    <comment_count>18</comment_count>
      <attachid>131546</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-12 22:40:56 -0700</bug_when>
    <thetext>Comment on attachment 131546
Patch

Oops, sorry this has wrong change...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577062</commentid>
    <comment_count>19</comment_count>
      <attachid>131549</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-12 22:49:31 -0700</bug_when>
    <thetext>Created attachment 131549
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577080</commentid>
    <comment_count>20</comment_count>
      <attachid>131549</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-12 23:18:39 -0700</bug_when>
    <thetext>Comment on attachment 131549
Patch

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

&gt; Source/WebCore/html/FileInputType.cpp:110
&gt; +        result.append(&quot;\xFF\xFE&quot;);

This is interpreted as ISO-8859-1, and U+00FF and U+00FE are valid characters.
I recommend to use U+FFFF.

String::fromUTF8(&quot;\xEF\xBF\xBF&quot;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577083</commentid>
    <comment_count>21</comment_count>
      <attachid>131555</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-12 23:25:58 -0700</bug_when>
    <thetext>Created attachment 131555
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577086</commentid>
    <comment_count>22</comment_count>
      <attachid>131549</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-12 23:28:30 -0700</bug_when>
    <thetext>Comment on attachment 131549
Patch

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

&gt;&gt; Source/WebCore/html/FileInputType.cpp:110
&gt;&gt; +        result.append(&quot;\xFF\xFE&quot;);
&gt; 
&gt; This is interpreted as ISO-8859-1, and U+00FF and U+00FE are valid characters.
&gt; I recommend to use U+FFFF.
&gt; 
&gt; String::fromUTF8(&quot;\xEF\xBF\xBF&quot;)

Great, thanks for the comment!!  Updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577090</commentid>
    <comment_count>23</comment_count>
      <attachid>131555</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-12 23:35:59 -0700</bug_when>
    <thetext>Comment on attachment 131555
Patch

Attachment 131555 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/11949280</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577096</commentid>
    <comment_count>24</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-12 23:44:19 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 131549 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131549&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/html/FileInputType.cpp:110
&gt; &gt;&gt; +        result.append(&quot;\xFF\xFE&quot;);
&gt; &gt; 
&gt; &gt; This is interpreted as ISO-8859-1, and U+00FF and U+00FE are valid characters.
&gt; &gt; I recommend to use U+FFFF.
&gt; &gt; 
&gt; &gt; String::fromUTF8(&quot;\xEF\xBF\xBF&quot;)
&gt; 
&gt; Great, thanks for the comment!!  Updated.

I&apos;m sorry that U+FFFF is also a wrong choice because it is an invalid character according to the standard.  Some string conversion code might break this characters.
I recommend another control characters such as \1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577118</commentid>
    <comment_count>25</comment_count>
      <attachid>131555</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2012-03-13 00:06:41 -0700</bug_when>
    <thetext>Comment on attachment 131555
Patch

Attachment 131555 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11944405</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577120</commentid>
    <comment_count>26</comment_count>
      <attachid>131562</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-13 00:22:09 -0700</bug_when>
    <thetext>Created attachment 131562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577129</commentid>
    <comment_count>27</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-13 00:35:10 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #22)
&gt; &gt; (From update of attachment 131549 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131549&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/html/FileInputType.cpp:110
&gt; &gt; &gt;&gt; +        result.append(&quot;\xFF\xFE&quot;);
&gt; &gt; &gt; 
&gt; &gt; &gt; This is interpreted as ISO-8859-1, and U+00FF and U+00FE are valid characters.
&gt; &gt; &gt; I recommend to use U+FFFF.
&gt; &gt; &gt; 
&gt; &gt; &gt; String::fromUTF8(&quot;\xEF\xBF\xBF&quot;)
&gt; &gt; 
&gt; &gt; Great, thanks for the comment!!  Updated.
&gt; 
&gt; I&apos;m sorry that U+FFFF is also a wrong choice because it is an invalid character according to the standard.  Some string conversion code might break this characters.
&gt; I recommend another control characters such as \1.

Thanks, character handling is difficult.  Updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577155</commentid>
    <comment_count>28</comment_count>
      <attachid>131562</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-13 01:29:51 -0700</bug_when>
    <thetext>Comment on attachment 131562
Patch

Looks ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577277</commentid>
    <comment_count>29</comment_count>
      <attachid>131562</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-13 07:07:06 -0700</bug_when>
    <thetext>Comment on attachment 131562
Patch

Clearing flags on attachment: 131562

Committed r110557: &lt;http://trac.webkit.org/changeset/110557&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577278</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-13 07:07:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131078</attachid>
            <date>2012-03-09 12:52:08 -0800</date>
            <delta_ts>2012-03-09 15:38:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80719-20120310055207.patch</filename>
            <type>text/plain</type>
            <size>4860</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDc2MDczYWYyZmU1YTBkMmNiZTllMTdmYTk1MDRjZWFkY2FmYTZhOGUuLmE4YTM0YTg5NjNlZTQx
NzdhZWRhOGFlYjU1YWY2ZjU2NDBkYjQwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTItMDMtMDkgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWxsb3cgV2ViRmlsZUNob29zZXIgdG8gcmV0
dXJuIGV4dHJhIGZpbGUgaW5mbyAobGlrZSBkaXNwbGF5TmFtZSkgaW4gYWRkaXRpb24gdG8gbWVy
ZSBmaWxlIHBhdGhzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MDcxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogcHVibGljL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbi5oOgorICAgICAgICAoV2ViRmls
ZUNob29zZXJDb21wbGV0aW9uKToKKyAgICAgICAgKFNlbGVjdGVkRmlsZUluZm8pOiBBZGRlZC4K
KyAgICAgICAgKiBzcmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGw6OmRpZENob29zZUZpbGVXaXRo
RXh0cmFJbmZvKTogQWRkZWQuCisgICAgICAgICogc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlv
bkltcGwuaDoKKyAgICAgICAgKFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwpOgorCiAyMDEy
LTAzLTA3ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1v
dmUgbWVhbmluZ2xlc3MgY29kZSBpbiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnByZWZl
cnJlZENvbnRlbnRXaWR0aCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbi5oCmluZGV4IDE0YmFjZTRjMmRiM2I5MTU2
MTIxZWQxYjZmNzIzZGI4NWNhY2Y4MzAuLjFjMmUzZjFiNjk1Y2E5ZGFmNDgyMWMxNGM1ZGMwYTJm
MDBjY2FmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZp
bGVDaG9vc2VyQ29tcGxldGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbi5oCkBAIC0zMSwxOCArMzEsMzQgQEAKICNpZm5kZWYg
V2ViRmlsZUNob29zZXJDb21wbGV0aW9uX2gKICNkZWZpbmUgV2ViRmlsZUNob29zZXJDb21wbGV0
aW9uX2gKIAorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotY2xhc3MgV2ViU3RyaW5nOwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdl
YlZlY3RvcjsKIAogLy8gR2V0cyBjYWxsZWQgYmFjayB3aGVuIFdlYlZpZXdDbGllbnQgZmluaXNo
ZWQgY2hvb3NpbmcgYSBmaWxlLgogY2xhc3MgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uIHsKIHB1
YmxpYzoKKyAgICBzdHJ1Y3QgU2VsZWN0ZWRGaWxlSW5mbyB7CisgICAgICAgIC8vIFRoZSBhY3R1
YWwgcGF0aCBvZiB0aGUgc2VsZWN0ZWQgZmlsZS4KKyAgICAgICAgV2ViU3RyaW5nIHBhdGg7CisK
KyAgICAgICAgLy8gVGhlIGRpc3BsYXkgbmFtZSBvZiB0aGUgZmlsZSB0aGF0IGlzIHRvIGJlIGV4
cG9zZWQgYXMgRmlsZS5uYW1lIGluCisgICAgICAgIC8vIHRoZSBET00gbGF5ZXIuIElmIGl0IGlz
IGVtcHR5IHRoZSBiYXNlIHBhcnQgb2YgdGhlIHxwYXRofCBpcyB1c2VkLgorICAgICAgICBXZWJT
dHJpbmcgZGlzcGxheU5hbWU7CisgICAgfTsKKwogICAgIC8vIENhbGxlZCB3aXRoIHplcm8gb3Ig
bW9yZSBmaWxlIG5hbWVzLiBaZXJvLWxlbmd0aGVkIHZlY3RvciBtZWFucyB0aGF0CiAgICAgLy8g
dGhlIHVzZXIgY2FuY2VsbGVkIG9yIHRoYXQgZmlsZSBjaG9vc2luZyBmYWlsZWQuIFRoZSBjYWxs
YmFjayBpbnN0YW5jZQogICAgIC8vIGlzIGRlc3Ryb3llZCB3aGVuIHRoaXMgbWV0aG9kIGlzIGNh
bGxlZC4KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlRmlsZShjb25zdCBXZWJWZWN0b3I8V2Vi
U3RyaW5nPiYgZmlsZU5hbWVzKSA9IDA7CisKKyAgICAvLyBDYWxsZWQgd2l0aCB6ZXJvIG9yIG1v
cmUgZmlsZXMsIGdpdmVuIGFzIGEgdmVjdG9yIG9mIFNlbGVjdGVkRmlsZUluZm8uCisgICAgLy8g
WmVyby1sZW5ndGhlZCB2ZWN0b3IgbWVhbnMgdGhhdCB0aGUgdXNlciBjYW5jZWxsZWQgb3IgdGhh
dCBmaWxlCisgICAgLy8gY2hvb3NpbmcgZmFpbGVkLiBUaGUgY2FsbGJhY2sgaW5zdGFuY2UgaXMg
ZGVzdHJveWVkIHdoZW4gdGhpcyBtZXRob2QKKyAgICAvLyBpcyBjYWxsZWQuCisgICAgdmlydHVh
bCB2b2lkIGRpZENob29zZUZpbGVXaXRoRXh0cmFJbmZvKGNvbnN0IFdlYlZlY3RvcjxTZWxlY3Rl
ZEZpbGVJbmZvPiYpIHsgfQogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfldlYkZpbGVDaG9vc2Vy
Q29tcGxldGlvbigpIHt9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmNwcAppbmRleCBkNzU4M2M1ZGRh
NmMwMmJlYWM0Nzc4YTQxYWQ2MTAyYTFkNGQ5ZjYyLi5hOGEyYjkxYjdjNTI2NDA3ZWMyZWQ5YTBm
OTUyZTM2ZWUzYmRiN2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmNwcApAQCAtNDQsNiArNDQsNyBA
QCBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsOjp+V2ViRmlsZUNob29zZXJDb21wbGV0aW9u
SW1wbCgpCiAKIHZvaWQgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbDo6ZGlkQ2hvb3NlRmls
ZShjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgZmlsZU5hbWVzKQogeworICAgIC8vIFRPRE8o
a2ludWtvKTogTWVyZ2UgaW1wbGVtZW50YXRpb24gd2l0aCBkaWRDaG9vc2VGaWxlV2l0aEV4dHJh
SW5mby4KICAgICBpZiAoZmlsZU5hbWVzLnNpemUoKSA9PSAxKQogICAgICAgICBtX2ZpbGVDaG9v
c2VyLT5jaG9vc2VGaWxlKGZpbGVOYW1lc1swXSk7CiAgICAgZWxzZSBpZiAoZmlsZU5hbWVzLnNp
emUoKSA+IDApIHsKQEAgLTU2LDQgKzU3LDE5IEBAIHZvaWQgV2ViRmlsZUNob29zZXJDb21wbGV0
aW9uSW1wbDo6ZGlkQ2hvb3NlRmlsZShjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgZmlsCiAg
ICAgZGVsZXRlIHRoaXM7CiB9CiAKK3ZvaWQgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbDo6
ZGlkQ2hvb3NlRmlsZVdpdGhFeHRyYUluZm8oY29uc3QgV2ViVmVjdG9yPFNlbGVjdGVkRmlsZUlu
Zm8+JiBmaWxlcykKK3sKKyAgICAvLyBUT0RPKGtpbnVrbyk6IFByb3BhZ2F0ZSB0aGUgZXh0cmEg
aW5mb3JtYXRpb24gKGUuZy4gZGlzcGxheU5hbWUpIHRvIFdlYkNvcmU6OkZpbGVDaG9vc2VyLgor
ICAgIGlmIChmaWxlcy5zaXplKCkgPT0gMSkKKyAgICAgICAgbV9maWxlQ2hvb3Nlci0+Y2hvb3Nl
RmlsZShmaWxlc1swXS5wYXRoKTsKKyAgICBlbHNlIGlmIChmaWxlcy5zaXplKCkgPiAwKSB7Cisg
ICAgICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gcGF0aHM7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZmlsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBwYXRocy5hcHBlbmQoZmls
ZXNbaV0ucGF0aCk7CisgICAgICAgIG1fZmlsZUNob29zZXItPmNob29zZUZpbGVzKHBhdGhzKTsK
KyAgICB9CisgICAgLy8gVGhpcyBvYmplY3QgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KKyAgICBkZWxl
dGUgdGhpczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmgKaW5k
ZXggMDZhMDU3N2IwOThiMzliOTlhNTBjZGRmNTQ1ZWRhZjQ5NGQ0OGExMy4uNjdhMWFlMDBlMzQy
NzM4ZWQ2NDQ0YzlhYWU4MTg0MDZiYzgxZWFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuaApAQCAtNDks
NiArNDksNyBAQCBwdWJsaWM6CiAgICAgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbChQYXNz
UmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPiBjaG9vc2VyKTsKICAgICB+V2ViRmlsZUNob29z
ZXJDb21wbGV0aW9uSW1wbCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VGaWxlKGNvbnN0
IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBmaWxlTmFtZXMpOworICAgIHZpcnR1YWwgdm9pZCBkaWRD
aG9vc2VGaWxlV2l0aEV4dHJhSW5mbyhjb25zdCBXZWJWZWN0b3I8U2VsZWN0ZWRGaWxlSW5mbz4m
IGZpbGVzKTsKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPiBtX2Zp
bGVDaG9vc2VyOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131125</attachid>
            <date>2012-03-09 15:30:42 -0800</date>
            <delta_ts>2012-03-12 21:20:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80719-20120310083040.patch</filename>
            <type>text/plain</type>
            <size>16758</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzVjYjhkYWVjMjViNDA2
OTZhZDA2YTEyNGI0NTYxZjM5YzQ4YzMyNy4uN2M4YzZkODk3ZGFlZTYyZWQ5MjFjMDYyZGE4MmYw
YTExNzc1NmYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAzLTA5ICBLaW51
a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBBbGxvdyBXZWJGaWxl
Q2hvb3NlciB0byByZXR1cm4gZXh0cmEgZmlsZSBpbmZvIChsaWtlIGRpc3BsYXlOYW1lKSBpbiBh
ZGRpdGlvbiB0byBtZXJlIGZpbGUgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgwNzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiB0aGlzIGNoYW5nZSBpdHNlbGYgc2hvdWxk
bid0IGNoYW5nZSBleGlzdGluZyBiZWhhdmlvci4KKworICAgICAgICAqIGZpbGVhcGkvRmlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoTmFtZSk6IFJl
bmFtZWQgZnJvbSBjcmVhdGVCbG9iRGF0YUZvckZpbGVTeXN0ZW1GaWxlLgorICAgICAgICAqIGZp
bGVhcGkvRmlsZS5oOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpzZXRGaWxlTGlzdCk6IENoYW5nZWQgdGhlIHNpZ25h
dHVyZSB0byB0YWtlCisgICAgICAgIEZpbGVDaG9vc2VyRmlsZUluZm8uCisgICAgICAgIChXZWJD
b3JlOjpGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbik6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZUlucHV0VHlwZTo6cmVjZWl2ZURyb3BwZWRGaWxlcyk6CisgICAgICAgICogaHRtbC9G
aWxlSW5wdXRUeXBlLmg6CisgICAgICAgIChGaWxlSW5wdXRUeXBlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9GaWxlQ2hvb3Nlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlQ2hvb3Nlcjo6Y2hv
b3NlRmlsZXMpOiBBZGRlZCBhbiBvdmVybG9hZGVkIG1ldGhvZCB0aGF0CisgICAgICAgIHRha2Vz
IEZpbGVDaG9vc2VyRmlsZUluZm8uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9GaWxlQ2hvb3Nlci5oOgorICAgICAgICAoRmlsZUNob29zZXJGaWxlSW5mbyk6IEFkZGVk
LgorCiAyMDEyLTAzLTA4ICBSb2JpbiBDYW8gIDxyb2Jpbi5jYW9AdG9yY2htb2JpbGUuY29tLmNu
PgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBVcHN0cmVhbSBHcmFwaGljc0xheWVyQmxhY2tCZXJy
eS57aCwgY3BwfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3NjA3M2FmMmZlNWEwZDJj
YmU5ZTE3ZmE5NTA0Y2VhZGNhZmE2YThlLi43YzJiYjljYWYwNWNkZGFmMzBkN2E4YmUzZGM1MjBj
OTBjMGZhMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDEyLTAzLTA5ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBBbGxvdyBXZWJGaWxlQ2hvb3NlciB0byByZXR1cm4gZXh0cmEgZmlsZSBpbmZvIChsaWtlIGRp
c3BsYXlOYW1lKSBpbiBhZGRpdGlvbiB0byBtZXJlIGZpbGUgcGF0aHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNzE5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZUNob29zZXJD
b21wbGV0aW9uLmg6CisgICAgICAgIChTZWxlY3RlZEZpbGVJbmZvKTogQWRkZWQuCisgICAgICAg
IChXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlQ2hv
b3NlckNvbXBsZXRpb246OmRpZENob29zZUZpbGUpOiBBZGRlZCBhbiBvdmVybG9hZGVkCisgICAg
ICAgIG1ldGhvZCB0aGF0IHRha2VzIFNlbGVjdGVkRmlsZUluZm8uCisgICAgICAgICogc3JjL1dl
YkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxl
Q2hvb3NlckNvbXBsZXRpb25JbXBsOjpkaWRDaG9vc2VGaWxlKTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmg6Cisg
ICAgICAgIChXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsKToKKwogMjAxMi0wMy0wNyAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIG1lYW5pbmds
ZXNzIGNvZGUgaW4gUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpwcmVmZXJyZWRDb250ZW50
V2lkdGgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKaW5kZXggZDQwOWI5NzE5MzM1OTUxOWUzMDBh
MDMyOTQ5NzA0ZmFlZjVmM2U4Mi4uOTA1MjkxYjJkZDc1OTNlNWM2MDgwOTg2MTg0ZjhjNDNlMTZl
OWY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCkBAIC01MCw4ICs1MCw3IEBAIHN0YXRpYyBQ
YXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoKQogICAgIHJldHVybiBjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoVHlwZShwYXRoLCB0eXBl
KTsKIH0KIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLXN0YXRpYyBQYXNzT3duUHRyPEJsb2JE
YXRhPiBjcmVhdGVCbG9iRGF0YUZvckZpbGVTeXN0ZW1GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBmaWxlU3lzdGVtTmFtZSkKK3N0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRh
PiBjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoTmFtZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgZmlsZVN5c3RlbU5hbWUpCiB7CiAgICAgU3RyaW5nIHR5cGU7CiAgICAgaW50IGlu
ZGV4ID0gZmlsZVN5c3RlbU5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKQEAgLTU5LDcgKzU4LDYgQEAg
c3RhdGljIFBhc3NPd25QdHI8QmxvYkRhdGE+IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVN5c3RlbUZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoLAogICAgICAgICB0eXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6
Z2V0V2VsbEtub3duTUlNRVR5cGVGb3JFeHRlbnNpb24oZmlsZVN5c3RlbU5hbWUuc3Vic3RyaW5n
KGluZGV4ICsgMSkpOwogICAgIHJldHVybiBjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoVHlwZShw
YXRoLCB0eXBlKTsKIH0KLSNlbmRpZgogCiAjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCiBQ
YXNzUmVmUHRyPEZpbGU+IEZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCkKQEAgLTg3LDE0ICs4NSwxMiBAQCBG
aWxlOjpGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHR5cGUpCiAgICAgLy8gU2VlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgZm9yIGpzIGFu
ZCB2OC4KIH0KIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIEZpbGU6OkZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgOiBCbG9iKGNyZWF0ZUJsb2JEYXRh
Rm9yRmlsZVN5c3RlbUZpbGUocGF0aCwgbmFtZSksIC0xKQorICAgIDogQmxvYihjcmVhdGVCbG9i
RGF0YUZvckZpbGVXaXRoTmFtZShwYXRoLCBuYW1lKSwgLTEpCiAgICAgLCBtX3BhdGgocGF0aCkK
ICAgICAsIG1fbmFtZShuYW1lKQogewogfQotI2VuZGlmCiAKIGRvdWJsZSBGaWxlOjpsYXN0TW9k
aWZpZWREYXRlKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKaW5kZXggMTNhOTFmZTNlNDFm
OTVmYjliMjNhY2Q2YjBlZWJkYzE1NDQzZDRlMy4uZTZhZDJhOTgyYzEyYzhmYTFjYTdhNGZjZDMy
ZTUyMGQ0YmFkNjhkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKQEAgLTUyLDEzICs1MiwxMyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZT4gY3JlYXRlV2l0aFJlbGF0aXZlUGF0
aChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKTsKICNlbmRp
ZgogCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgIC8vIENyZWF0ZSBhIGZpbGUgd2l0aCBh
IG5hbWUgZXhwb3NlZCB0byB0aGUgYXV0aG9yICh2aWEgRmlsZS5uYW1lIGFuZCBhc3NvY2lhdGVk
IERPTSBwcm9wZXJ0aWVzKSB0aGF0IGRpZmZlcnMgZnJvbSB0aGUgb25lIHByb3ZpZGVkIGluIHRo
ZSBwYXRoLgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZVdpdGhOYW1lKGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHsKKyAgICAgICAgaWYgKG5h
bWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlKHBhdGgp
KTsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlKHBhdGgsIG5hbWUpKTsKICAgICB9
Ci0jZW5kaWYKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIHNpemUoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNGaWxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtODMs
MTAgKzgzLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEZvciBkZXNlcmlhbGl6YXRpb24uCiAgICAg
RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEtVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5n
JiB0eXBlKTsKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICBGaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSNlbmRpZgogCiAgICAgU3RyaW5nIG1fcGF0
aDsKICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAK
aW5kZXggNzRiMWQ3ZmEyZGQ5NmE5MDNhY2I4ZjRiODI4OTM0MWI4ZGI5MjgzOC4uOTNjMWE4YjIz
N2FjMWJmY2Y2ZWZhMmQwNjZjYWE1MmYyYWVjNTFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJ
bnB1dFR5cGUuY3BwCkBAIC0yMjAsMTAgKzIyMCwxMCBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnNl
dFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpCiAgICAg
ZWxlbWVudCgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9CiAKLXZvaWQgRmlsZUlucHV0VHlw
ZTo6c2V0RmlsZUxpc3QoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQordm9pZCBGaWxlSW5w
dXRUeXBlOjpzZXRGaWxlTGlzdChjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIGZp
bGVzKQogewogICAgIG1fZmlsZUxpc3QtPmNsZWFyKCk7Ci0gICAgc2l6ZV90IHNpemUgPSBwYXRo
cy5zaXplKCk7CisgICAgc2l6ZV90IHNpemUgPSBmaWxlcy5zaXplKCk7CiAKICNpZiBFTkFCTEUo
RElSRUNUT1JZX1VQTE9BRCkKICAgICAvLyBJZiBhIGRpcmVjdG9yeSBpcyBiZWluZyBzZWxlY3Rl
ZCwgdGhlIFVJIGFsbG93cyBhIGRpcmVjdG9yeSB0byBiZSBjaG9zZW4KQEAgLTIzMSw5ICsyMzEs
OSBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnNldEZpbGVMaXN0KGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXRocykKICAgICAvLyB3ZSB3YW50IHRvIHN0b3JlIG9ubHkgdGhlIHJlbGF0aXZlIHBhdGhz
IGZyb20gdGhhdCBwb2ludC4KICAgICBpZiAoc2l6ZSAmJiBlbGVtZW50KCktPmZhc3RIYXNBdHRy
aWJ1dGUod2Via2l0ZGlyZWN0b3J5QXR0cikpIHsKICAgICAgICAgLy8gRmluZCB0aGUgY29tbW9u
IHJvb3QgcGF0aC4KLSAgICAgICAgU3RyaW5nIHJvb3RQYXRoID0gZGlyZWN0b3J5TmFtZShwYXRo
c1swXSk7CisgICAgICAgIFN0cmluZyByb290UGF0aCA9IGRpcmVjdG9yeU5hbWUoZmlsZXNbMF0u
cGF0aCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAg
ICAgICAgICB3aGlsZSAoIXBhdGhzW2ldLnN0YXJ0c1dpdGgocm9vdFBhdGgpKQorICAgICAgICAg
ICAgd2hpbGUgKCFmaWxlc1tpXS5wYXRoLnN0YXJ0c1dpdGgocm9vdFBhdGgpKQogICAgICAgICAg
ICAgICAgIHJvb3RQYXRoID0gZGlyZWN0b3J5TmFtZShyb290UGF0aCk7CiAgICAgICAgIH0KICAg
ICAgICAgcm9vdFBhdGggPSBkaXJlY3RvcnlOYW1lKHJvb3RQYXRoKTsKQEAgLTI0MywxNSArMjQz
LDE1IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6c2V0RmlsZUxpc3QoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhdGhzKQogICAgICAgICAgICAgcm9vdExlbmd0aCArPSAxOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICAgICAgLy8gTm9ybWFsaXplIGJh
Y2tzbGFzaGVzIHRvIHNsYXNoZXMgYmVmb3JlIGV4cG9zaW5nIHRoZSByZWxhdGl2ZSBwYXRoIHRv
IHNjcmlwdC4KLSAgICAgICAgICAgIFN0cmluZyByZWxhdGl2ZVBhdGggPSBwYXRoc1tpXS5zdWJz
dHJpbmcocm9vdExlbmd0aCkucmVwbGFjZSgnXFwnLCAnLycpOwotICAgICAgICAgICAgbV9maWxl
TGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgocGF0aHNbaV0sIHJlbGF0
aXZlUGF0aCkpOworICAgICAgICAgICAgU3RyaW5nIHJlbGF0aXZlUGF0aCA9IGZpbGVzW2ldLnBh
dGguc3Vic3RyaW5nKHJvb3RMZW5ndGgpLnJlcGxhY2UoJ1xcJywgJy8nKTsKKyAgICAgICAgICAg
IG1fZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGZpbGVzW2ld
LnBhdGgsIHJlbGF0aXZlUGF0aCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAjZW5kaWYKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQotICAgICAg
ICBtX2ZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHBhdGhzW2ldKSk7CisgICAgICAgIG1f
ZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGVXaXRoTmFtZShmaWxlc1tpXS5wYXRoLCBmaWxl
c1tpXS5kaXNwbGF5TmFtZSkpOwogfQogCiBib29sIEZpbGVJbnB1dFR5cGU6OmlzRmlsZVVwbG9h
ZCgpIGNvbnN0CkBAIC0yODMsMjggKzI4MywzMSBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnJlcXVl
c3RJY29uKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKICAgICAgICAgY2hyb21lLT5sb2Fk
SWNvbkZvckZpbGVzKHBhdGhzLCBuZXdGaWxlSWNvbkxvYWRlcigpKTsKIH0KIAotdm9pZCBGaWxl
SW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCit2b2lk
IEZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJ
bmZvPiYgZmlsZXMpCiB7CiAgICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IGlucHV0ID0gZWxl
bWVudCgpOwogCiAgICAgYm9vbCBwYXRoc0NoYW5nZWQgPSBmYWxzZTsKLSAgICBpZiAocGF0aHMu
c2l6ZSgpICE9IG1fZmlsZUxpc3QtPmxlbmd0aCgpKQorICAgIGlmIChmaWxlcy5zaXplKCkgIT0g
bV9maWxlTGlzdC0+bGVuZ3RoKCkpCiAgICAgICAgIHBhdGhzQ2hhbmdlZCA9IHRydWU7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRocy5zaXplKCk7ICsr
aSkgewotICAgICAgICAgICAgaWYgKHBhdGhzW2ldICE9IG1fZmlsZUxpc3QtPml0ZW0oaSktPnBh
dGgoKSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmlsZXMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgICAgIGlmIChmaWxlc1tpXS5wYXRoICE9IG1fZmlsZUxpc3QtPml0ZW0o
aSktPnBhdGgoKSkgewogICAgICAgICAgICAgICAgIHBhdGhzQ2hhbmdlZCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBzZXRGaWxlTGlzdChwYXRocyk7CisgICAgc2V0RmlsZUxpc3QoZmlsZXMpOwogCiAgICAgaW5w
dXQtPnNldEZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIodHJ1ZSk7CiAgICAgaW5wdXQt
Pm5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQoKTsKICAgICBpbnB1dC0+c2V0TmVlZHNWYWxpZGl0eUNo
ZWNrKCk7CiAKKyAgICBWZWN0b3I8U3RyaW5nPiBwYXRoczsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZmlsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHBhdGhzLmFwcGVuZChmaWxlc1tp
XS5wYXRoKTsKICAgICByZXF1ZXN0SWNvbihwYXRocyk7CiAKICAgICBpZiAoaW5wdXQtPnJlbmRl
cmVyKCkpCkBAIC0zNTMsMTIgKzM1NiwxOSBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnJlY2VpdmVE
cm9wcGVkRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQogICAgIH0KICNlbmRpZgog
CisgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZpbGVzOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwYXRocy5zaXplKCk7ICsraSkgeworICAgICAgRmlsZUNob29zZXJGaWxl
SW5mbyBmaWxlOworICAgICAgZmlsZS5wYXRoID0gcGF0aHNbaV07CisgICAgICBmaWxlcy5hcHBl
bmQoZmlsZSk7CisgICAgfQorCiAgICAgaWYgKGlucHV0LT5mYXN0SGFzQXR0cmlidXRlKG11bHRp
cGxlQXR0cikpCi0gICAgICAgIGZpbGVzQ2hvc2VuKHBhdGhzKTsKKyAgICAgICAgZmlsZXNDaG9z
ZW4oZmlsZXMpOwogICAgIGVsc2UgewotICAgICAgICBWZWN0b3I8U3RyaW5nPiBmaXJzdFBhdGhP
bmx5OwotICAgICAgICBmaXJzdFBhdGhPbmx5LmFwcGVuZChwYXRoc1swXSk7Ci0gICAgICAgIGZp
bGVzQ2hvc2VuKGZpcnN0UGF0aE9ubHkpOworICAgICAgICBWZWN0b3I8RmlsZUNob29zZXJGaWxl
SW5mbz4gZmlyc3RGaWxlT25seTsKKyAgICAgICAgZmlyc3RGaWxlT25seS5hcHBlbmQoZmlsZXNb
MF0pOworICAgICAgICBmaWxlc0Nob3NlbihmaXJzdEZpbGVPbmx5KTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKaW5kZXggYzI2ZTFmZTA5MjZmNWEyYjZkNTMzYTM3
OWY0MDhjNDNiMDNlMTI2MS4uMGRiNjA3NzVkYTMwNmI4NzIxYjZjNmYzNzQ0MmM3ODIwOTMyZmNk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKQEAgLTY3LDEyICs2NywxMiBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIGRlZmF1bHRUb29sVGlwKCkgY29uc3QgT1ZFUlJJ
REU7CiAKICAgICAvLyBGaWxlQ2hvb3NlckNsaWVudCBpbXBsZW1lbnRhdGlvbi4KLSAgICB2aXJ0
dWFsIHZvaWQgZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPFN0cmluZz4mKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUlu
Zm8+JikgT1ZFUlJJREU7CiAKICAgICAvLyBGaWxlSWNvbkxvYWRlckNsaWVudCBpbXBsZW1lbnRh
dGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVuZGVyaW5nKFBhc3NSZWZQdHI8SWNvbj4p
IE9WRVJSSURFOwogCi0gICAgdm9pZCBzZXRGaWxlTGlzdChjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGF0aHMpOworICAgIHZvaWQgc2V0RmlsZUxpc3QoY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmls
ZUluZm8+Jik7CiAjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCiAgICAgdm9pZCByZWNlaXZl
RHJvcEZvckRpcmVjdG9yeVVwbG9hZChjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKaW5kZXggYTk3OTJhYTZhZjU3YjUy
ZmZmZWY1NjdiYjRjYmVlYzM2YzcxMWI5My4uMDM4ZGExZGI3MDRmNGE3Nzg2OTdjNzFiMDUyNjM0
NGMwYzg3MjNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29z
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcApAQCAt
NzgsOCArNzgsMjkgQEAgdm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGZpbGVuYW1lcykKICAgICBpZiAobV9zZXR0aW5ncy5zZWxlY3RlZEZpbGVzID09
IGZpbGVuYW1lcykKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fY2xpZW50KSB7CisgICAg
ICAgIFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiBmaWxlczsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGZpbGVuYW1lcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgRmls
ZUNob29zZXJGaWxlSW5mbyBmaWxlOworICAgICAgICAgICAgZmlsZS5wYXRoID0gZmlsZW5hbWVz
W2ldOworICAgICAgICAgICAgZmlsZXMuYXBwZW5kKGZpbGUpOworICAgICAgICB9CisKKyAgICAg
ICAgbV9jbGllbnQtPmZpbGVzQ2hvc2VuKGZpbGVzKTsKKyAgICB9Cit9CisKK3ZvaWQgRmlsZUNo
b29zZXI6OmNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgZmls
ZXMpCit7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lbGVnYW50LiBXZSBzaG91bGQgbm90IGJl
IGxvb2tpbmcgYXQgc2V0dGluZ3MgaGVyZS4KKyAgICBWZWN0b3I8U3RyaW5nPiBwYXRoczsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmlsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHBh
dGhzLmFwcGVuZChmaWxlc1tpXS5wYXRoKTsKKyAgICBpZiAobV9zZXR0aW5ncy5zZWxlY3RlZEZp
bGVzID09IHBhdGhzKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAobV9jbGllbnQpCi0gICAg
ICAgIG1fY2xpZW50LT5maWxlc0Nob3NlbihmaWxlbmFtZXMpOworICAgICAgICBtX2NsaWVudC0+
ZmlsZXNDaG9zZW4oZmlsZXMpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlQ2hvb3Nlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29z
ZXIuaAppbmRleCBjYzIwYmUyODFiODQyNGNiZWJlMDE1YTcyN2E1NGY4NmIwZTNlYTMxLi4zOTA3
ZDMzZGRmNzNmZjZiODczMjJkNTBmZjA4YWU0NDJiMzkzMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVDaG9vc2VyLmgKQEAgLTM4LDYgKzM4LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRmlsZUNob29zZXI7CiAKK3N0cnVjdCBGaWxlQ2hvb3NlckZpbGVJbmZvIHsKKyAg
ICBTdHJpbmcgcGF0aDsKKyAgICBTdHJpbmcgZGlzcGxheU5hbWU7Cit9OworCiBzdHJ1Y3QgRmls
ZUNob29zZXJTZXR0aW5ncyB7CiAgICAgYm9vbCBhbGxvd3NNdWx0aXBsZUZpbGVzOwogI2lmIEVO
QUJMRShESVJFQ1RPUllfVVBMT0FEKQpAQCAtNDksNyArNTQsNyBAQCBzdHJ1Y3QgRmlsZUNob29z
ZXJTZXR0aW5ncyB7CiAKIGNsYXNzIEZpbGVDaG9vc2VyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB2
aXJ0dWFsIHZvaWQgZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZv
PiYpID0gMDsKICAgICB2aXJ0dWFsIH5GaWxlQ2hvb3NlckNsaWVudCgpOwogCiBwcm90ZWN0ZWQ6
CkBAIC02OCw4ICs3MywxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpc2Nvbm5lY3RDbGllbnQo
KSB7IG1fY2xpZW50ID0gMDsgfQogCi0gICAgdm9pZCBjaG9vc2VGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCk7Ci0gICAgdm9pZCBjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMp
OworICAgIHZvaWQgY2hvb3NlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKTsKKyAgICB2b2lk
IGNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpOworCisgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSBqdXN0IHBhc3MgZmlsZSBwYXRocyB0aGF0IGNvdWxk
IGJlIHZpcnR1YWwgcGF0aHMgd2l0aCBwcm9wZXIgZGlzcGxheSBuYW1lcyByYXRoZXIgdGhhbiBw
YXNzaW5nIHN0cnVjdHMuCisgICAgdm9pZCBjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8RmlsZUNo
b29zZXJGaWxlSW5mbz4mIGZpbGVzKTsKIAogICAgIGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3Mm
IHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24uaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbi5o
CmluZGV4IDE0YmFjZTRjMmRiM2I5MTU2MTIxZWQxYjZmNzIzZGI4NWNhY2Y4MzAuLjliMDFkMGU0
MTAzOTdjNDg0MDZlMDUzYTgwYjQxZDIzNzFmY2NjOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbi5oCkBAIC0z
MSwxOCArMzEsMzYgQEAKICNpZm5kZWYgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uX2gKICNkZWZp
bmUgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uX2gKIAorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0
cmluZy5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViU3RyaW5nOwogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYlZlY3RvcjsKIAogLy8gR2V0cyBjYWxsZWQgYmFjayB3
aGVuIFdlYlZpZXdDbGllbnQgZmluaXNoZWQgY2hvb3NpbmcgYSBmaWxlLgogY2xhc3MgV2ViRmls
ZUNob29zZXJDb21wbGV0aW9uIHsKIHB1YmxpYzoKKyAgICBzdHJ1Y3QgU2VsZWN0ZWRGaWxlSW5m
byB7CisgICAgICAgIC8vIFRoZSBhY3R1YWwgcGF0aCBvZiB0aGUgc2VsZWN0ZWQgZmlsZS4KKyAg
ICAgICAgV2ViU3RyaW5nIHBhdGg7CisKKyAgICAgICAgLy8gVGhlIGRpc3BsYXkgbmFtZSBvZiB0
aGUgZmlsZSB0aGF0IGlzIHRvIGJlIGV4cG9zZWQgYXMgRmlsZS5uYW1lIGluCisgICAgICAgIC8v
IHRoZSBET00gbGF5ZXIuIElmIGl0IGlzIGVtcHR5IHRoZSBiYXNlIHBhcnQgb2YgdGhlIHxwYXRo
fCBpcyB1c2VkLgorICAgICAgICBXZWJTdHJpbmcgZGlzcGxheU5hbWU7CisgICAgfTsKKwogICAg
IC8vIENhbGxlZCB3aXRoIHplcm8gb3IgbW9yZSBmaWxlIG5hbWVzLiBaZXJvLWxlbmd0aGVkIHZl
Y3RvciBtZWFucyB0aGF0CiAgICAgLy8gdGhlIHVzZXIgY2FuY2VsbGVkIG9yIHRoYXQgZmlsZSBj
aG9vc2luZyBmYWlsZWQuIFRoZSBjYWxsYmFjayBpbnN0YW5jZQogICAgIC8vIGlzIGRlc3Ryb3ll
ZCB3aGVuIHRoaXMgbWV0aG9kIGlzIGNhbGxlZC4KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3Nl
RmlsZShjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgZmlsZU5hbWVzKSA9IDA7CisKKyAgICAv
LyBDYWxsZWQgd2l0aCB6ZXJvIG9yIG1vcmUgZmlsZXMsIGdpdmVuIGFzIGEgdmVjdG9yIG9mIFNl
bGVjdGVkRmlsZUluZm8uCisgICAgLy8gWmVyby1sZW5ndGhlZCB2ZWN0b3IgbWVhbnMgdGhhdCB0
aGUgdXNlciBjYW5jZWxsZWQgb3IgdGhhdCBmaWxlCisgICAgLy8gY2hvb3NpbmcgZmFpbGVkLiBU
aGUgY2FsbGJhY2sgaW5zdGFuY2UgaXMgZGVzdHJveWVkIHdoZW4gdGhpcyBtZXRob2QKKyAgICAv
LyBpcyBjYWxsZWQuCisgICAgLy8gRklYTUU6IERlcHJlY2F0ZSBlaXRoZXIgb25lIG9mIHRoZSBk
aWRDaG9vc2VGaWxlIChhbmQgcmVuYW1lIGl0IHRvCisgICAgLy8gZGlkQ2hvb3NlRmlsZSpzKiku
CisgICAgdmlydHVhbCB2b2lkIGRpZENob29zZUZpbGUoY29uc3QgV2ViVmVjdG9yPFNlbGVjdGVk
RmlsZUluZm8+JikgeyB9CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+V2ViRmlsZUNob29zZXJD
b21wbGV0aW9uKCkge30KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuY3BwCmluZGV4IGQ3NTgzYzVkZGE2
YzAyYmVhYzQ3NzhhNDFhZDYxMDJhMWQ0ZDlmNjIuLjM0NzExNDFhZDAyYTBiNTIzZmRiMjI3MDcx
ZWRmNzRjNmU0NjFlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuY3BwCkBAIC00NCwxNCArNDQsMjUg
QEAgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbDo6fldlYkZpbGVDaG9vc2VyQ29tcGxldGlv
bkltcGwoKQogCiB2b2lkIFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGw6OmRpZENob29zZUZp
bGUoY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGZpbGVOYW1lcykKIHsKLSAgICBpZiAoZmls
ZU5hbWVzLnNpemUoKSA9PSAxKQotICAgICAgICBtX2ZpbGVDaG9vc2VyLT5jaG9vc2VGaWxlKGZp
bGVOYW1lc1swXSk7Ci0gICAgZWxzZSBpZiAoZmlsZU5hbWVzLnNpemUoKSA+IDApIHsKLSAgICAg
ICAgVmVjdG9yPFdURjo6U3RyaW5nPiBwYXRoczsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBmaWxlTmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBwYXRocy5hcHBlbmQoZmls
ZU5hbWVzW2ldKTsKLSAgICAgICAgbV9maWxlQ2hvb3Nlci0+Y2hvb3NlRmlsZXMocGF0aHMpOwor
ICAgIFZlY3RvcjxTZWxlY3RlZEZpbGVJbmZvPiBmaWxlczsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZmlsZU5hbWVzLnNpemUoKTsgKytpKSB7CisgICAgICBTZWxlY3RlZEZpbGVJbmZv
IGZpbGU7CisgICAgICBmaWxlLnBhdGggPSBmaWxlTmFtZXNbaV07CisgICAgICBmaWxlcy5hcHBl
bmQoZmlsZSk7CiAgICAgfQorICAgIGRpZENob29zZUZpbGUoV2ViVmVjdG9yPFNlbGVjdGVkRmls
ZUluZm8+KGZpbGVzKSk7Cit9CisKK3ZvaWQgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbDo6
ZGlkQ2hvb3NlRmlsZShjb25zdCBXZWJWZWN0b3I8U2VsZWN0ZWRGaWxlSW5mbz4mIGZpbGVzKQor
eworICAgIFZlY3RvcjxXZWJDb3JlOjpGaWxlQ2hvb3NlckZpbGVJbmZvPiBmaWxlSW5mbzsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFdl
YkNvcmU6OkZpbGVDaG9vc2VyRmlsZUluZm8gZmlsZTsKKyAgICAgICAgZmlsZS5wYXRoID0gZmls
ZXNbaV0ucGF0aDsKKyAgICAgICAgZmlsZS5kaXNwbGF5TmFtZSA9IGZpbGVzW2ldLmRpc3BsYXlO
YW1lOworICAgICAgICBmaWxlSW5mby5hcHBlbmQoZmlsZSk7CisgICAgfQorICAgIG1fZmlsZUNo
b29zZXItPmNob29zZUZpbGVzKGZpbGVJbmZvKTsKICAgICAvLyBUaGlzIG9iamVjdCBpcyBubyBs
b25nZXIgbmVlZGVkLgogICAgIGRlbGV0ZSB0aGlzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5oCmluZGV4
IDA2YTA1NzdiMDk4YjM5Yjk5YTUwY2RkZjU0NWVkYWY0OTRkNDhhMTMuLjNhYzYzYTVlODkzMTE1
ZTNmZTNjNTUxNmIzYTYxYjM1ZTZkMDllMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmgKQEAgLTQ5LDYg
KzQ5LDcgQEAgcHVibGljOgogICAgIFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwoUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4gY2hvb3Nlcik7CiAgICAgfldlYkZpbGVDaG9vc2Vy
Q29tcGxldGlvbkltcGwoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlRmlsZShjb25zdCBX
ZWJWZWN0b3I8V2ViU3RyaW5nPiYgZmlsZU5hbWVzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hv
b3NlRmlsZShjb25zdCBXZWJWZWN0b3I8U2VsZWN0ZWRGaWxlSW5mbz4mIGZpbGVzKTsKIHByaXZh
dGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPiBtX2ZpbGVDaG9vc2VyOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131504</attachid>
            <date>2012-03-12 21:00:04 -0700</date>
            <delta_ts>2012-03-12 21:20:35 -0700</delta_ts>
            <desc>build fix (for EWS)</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>16802</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">Y29tbWl0IGFlMDFjYTk0NzdiMDhhZTllYmYyM2ZlOWJmYjU5NmZlYzQ3OTRlMzMKQXV0aG9yOiBL
aW51a28gWWFzdWRhIDxraW51a29AY2hyb21pdW0ub3JnPgpEYXRlOiAgIFNhdCBNYXIgMTAgMDU6
NDM6MTEgMjAxMiArMDkwMAoKICAgIGFkZCBmaWxlY2hvb3NlciBleHRyYSBpbmZvCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDEwZTk3M2EuLjk1ZjNkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAx
Mi0wMy0wOSAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
QWxsb3cgV2ViRmlsZUNob29zZXIgdG8gcmV0dXJuIGV4dHJhIGZpbGUgaW5mbyAobGlrZSBkaXNw
bGF5TmFtZSkgaW4gYWRkaXRpb24gdG8gbWVyZSBmaWxlIHBhdGhzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDcxOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0czogdGhpcyBjaGFuZ2Ug
aXRzZWxmIHNob3VsZG4ndCBjaGFuZ2UgZXhpc3RpbmcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBm
aWxlYXBpL0ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQmxvYkRhdGFGb3JGaWxl
V2l0aE5hbWUpOiBSZW5hbWVkIGZyb20gY3JlYXRlQmxvYkRhdGFGb3JGaWxlU3lzdGVtRmlsZS4K
KyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6c2V0RmlsZUxpc3QpOiBDaGFu
Z2VkIHRoZSBzaWduYXR1cmUgdG8gdGFrZQorICAgICAgICBGaWxlQ2hvb3NlckZpbGVJbmZvLgor
ICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4pOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OnJlY2VpdmVEcm9wcGVkRmlsZXMpOgorICAg
ICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5oOgorICAgICAgICAoRmlsZUlucHV0VHlwZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rmls
ZUNob29zZXI6OmNob29zZUZpbGVzKTogQWRkZWQgYW4gb3ZlcmxvYWRlZCBtZXRob2QgdGhhdAor
ICAgICAgICB0YWtlcyBGaWxlQ2hvb3NlckZpbGVJbmZvLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXIuaDoKKyAgICAgICAgKEZpbGVDaG9vc2VyRmls
ZUluZm8pOiBBZGRlZC4KKwogMjAxMi0wMy0xMCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBTaGFkb3dUcmVlIHVzZXMgd2VhayBpdGVyYXRpb24gcGF0dGVy
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4IGQ0MDliOTcuLjkwNTI5MWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlLmNwcApAQCAtNTAsOCArNTAsNyBAQCBzdGF0aWMgUGFzc093blB0cjxCbG9i
RGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1
cm4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aFR5cGUocGF0aCwgdHlwZSk7CiB9CiAKLSNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCi1zdGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxv
YkRhdGFGb3JGaWxlU3lzdGVtRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
ZmlsZVN5c3RlbU5hbWUpCitzdGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRh
dGFGb3JGaWxlV2l0aE5hbWUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVT
eXN0ZW1OYW1lKQogewogICAgIFN0cmluZyB0eXBlOwogICAgIGludCBpbmRleCA9IGZpbGVTeXN0
ZW1OYW1lLnJldmVyc2VGaW5kKCcuJyk7CkBAIC01OSw3ICs1OCw2IEBAIHN0YXRpYyBQYXNzT3du
UHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZpbGVTeXN0ZW1GaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwKICAgICAgICAgdHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldFdlbGxLbm93bk1J
TUVUeXBlRm9yRXh0ZW5zaW9uKGZpbGVTeXN0ZW1OYW1lLnN1YnN0cmluZyhpbmRleCArIDEpKTsK
ICAgICByZXR1cm4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aFR5cGUocGF0aCwgdHlwZSk7CiB9
Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQogUGFzc1JlZlB0cjxGaWxl
PiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiByZWxhdGl2ZVBhdGgpCkBAIC04NywxNCArODUsMTIgQEAgRmlsZTo6RmlsZShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAg
IC8vIFNlZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGZvciBqcyBhbmQgdjguCiB9CiAKLSNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCiBGaWxlOjpGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBuYW1lKQotICAgIDogQmxvYihjcmVhdGVCbG9iRGF0YUZvckZpbGVTeXN0ZW1G
aWxlKHBhdGgsIG5hbWUpLCAtMSkKKyAgICA6IEJsb2IoY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0
aE5hbWUocGF0aCwgbmFtZSksIC0xKQogICAgICwgbV9wYXRoKHBhdGgpCiAgICAgLCBtX25hbWUo
bmFtZSkKIHsKIH0KLSNlbmRpZgogCiBkb3VibGUgRmlsZTo6bGFzdE1vZGlmaWVkRGF0ZSgpIGNv
bnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCmluZGV4IDEzYTkxZmUuLmU2YWQyYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZS5oCkBAIC01MiwxMyArNTIsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEZpbGU+IGNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKICAgICAvLyBDcmVhdGUgYSBmaWxlIHdpdGggYSBuYW1lIGV4cG9zZWQgdG8gdGhlIGF1
dGhvciAodmlhIEZpbGUubmFtZSBhbmQgYXNzb2NpYXRlZCBET00gcHJvcGVydGllcykgdGhhdCBk
aWZmZXJzIGZyb20gdGhlIG9uZSBwcm92aWRlZCBpbiB0aGUgcGF0aC4KICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxGaWxlPiBjcmVhdGVXaXRoTmFtZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgbmFtZSkKICAgICB7CisgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZShwYXRoKSk7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgRmlsZShwYXRoLCBuYW1lKSk7CiAgICAgfQotI2VuZGlmCiAKICAgICB2aXJ0dWFs
IHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzRmls
ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTgzLDEwICs4Myw3IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBGb3IgZGVzZXJpYWxpemF0aW9uLgogICAgIEZpbGUoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBLVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0KLSNpZiBFTkFCTEUo
RklMRV9TWVNURU0pCiAgICAgRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
bmFtZSk7Ci0jZW5kaWYKIAogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgU3RyaW5nIG1fbmFtZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IDljYjM5YjYuLjU2ZTAxNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMjQwLDEwICsyNDAsMTAg
QEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBib29sLCBUZXh0
RmllbGRFdmVudEJlaGF2aW9yKQogICAgIGVsZW1lbnQoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYygp
OwogfQogCi12b2lkIEZpbGVJbnB1dFR5cGU6OnNldEZpbGVMaXN0KGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXRocykKK3ZvaWQgRmlsZUlucHV0VHlwZTo6c2V0RmlsZUxpc3QoY29uc3QgVmVjdG9y
PEZpbGVDaG9vc2VyRmlsZUluZm8+JiBmaWxlcykKIHsKICAgICBtX2ZpbGVMaXN0LT5jbGVhcigp
OwotICAgIHNpemVfdCBzaXplID0gcGF0aHMuc2l6ZSgpOworICAgIHNpemVfdCBzaXplID0gZmls
ZXMuc2l6ZSgpOwogCiAjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCiAgICAgLy8gSWYgYSBk
aXJlY3RvcnkgaXMgYmVpbmcgc2VsZWN0ZWQsIHRoZSBVSSBhbGxvd3MgYSBkaXJlY3RvcnkgdG8g
YmUgY2hvc2VuCkBAIC0yNTEsOSArMjUxLDkgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpzZXRGaWxl
TGlzdChjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiAgICAgLy8gd2Ugd2FudCB0byBzdG9y
ZSBvbmx5IHRoZSByZWxhdGl2ZSBwYXRocyBmcm9tIHRoYXQgcG9pbnQuCiAgICAgaWYgKHNpemUg
JiYgZWxlbWVudCgpLT5mYXN0SGFzQXR0cmlidXRlKHdlYmtpdGRpcmVjdG9yeUF0dHIpKSB7CiAg
ICAgICAgIC8vIEZpbmQgdGhlIGNvbW1vbiByb290IHBhdGguCi0gICAgICAgIFN0cmluZyByb290
UGF0aCA9IGRpcmVjdG9yeU5hbWUocGF0aHNbMF0pOworICAgICAgICBTdHJpbmcgcm9vdFBhdGgg
PSBkaXJlY3RvcnlOYW1lKGZpbGVzWzBdLnBhdGgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MTsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgd2hpbGUgKCFwYXRoc1tpXS5zdGFydHNX
aXRoKHJvb3RQYXRoKSkKKyAgICAgICAgICAgIHdoaWxlICghZmlsZXNbaV0ucGF0aC5zdGFydHNX
aXRoKHJvb3RQYXRoKSkKICAgICAgICAgICAgICAgICByb290UGF0aCA9IGRpcmVjdG9yeU5hbWUo
cm9vdFBhdGgpOwogICAgICAgICB9CiAgICAgICAgIHJvb3RQYXRoID0gZGlyZWN0b3J5TmFtZShy
b290UGF0aCk7CkBAIC0yNjMsMTUgKzI2MywxNSBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnNldEZp
bGVMaXN0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKICAgICAgICAgICAgIHJvb3RMZW5n
dGggKz0gMTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAg
ICAgICAgICAgIC8vIE5vcm1hbGl6ZSBiYWNrc2xhc2hlcyB0byBzbGFzaGVzIGJlZm9yZSBleHBv
c2luZyB0aGUgcmVsYXRpdmUgcGF0aCB0byBzY3JpcHQuCi0gICAgICAgICAgICBTdHJpbmcgcmVs
YXRpdmVQYXRoID0gcGF0aHNbaV0uc3Vic3RyaW5nKHJvb3RMZW5ndGgpLnJlcGxhY2UoJ1xcJywg
Jy8nKTsKLSAgICAgICAgICAgIG1fZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGVXaXRoUmVs
YXRpdmVQYXRoKHBhdGhzW2ldLCByZWxhdGl2ZVBhdGgpKTsKKyAgICAgICAgICAgIFN0cmluZyBy
ZWxhdGl2ZVBhdGggPSBmaWxlc1tpXS5wYXRoLnN1YnN0cmluZyhyb290TGVuZ3RoKS5yZXBsYWNl
KCdcXCcsICcvJyk7CisgICAgICAgICAgICBtX2ZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRl
V2l0aFJlbGF0aXZlUGF0aChmaWxlc1tpXS5wYXRoLCByZWxhdGl2ZVBhdGgpKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7IGkrKykKLSAgICAgICAgbV9maWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0
ZShwYXRoc1tpXSkpOworICAgICAgICBtX2ZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlV2l0
aE5hbWUoZmlsZXNbaV0ucGF0aCwgZmlsZXNbaV0uZGlzcGxheU5hbWUpKTsKIH0KIAogYm9vbCBG
aWxlSW5wdXRUeXBlOjppc0ZpbGVVcGxvYWQoKSBjb25zdApAQCAtMzAzLDI4ICszMDMsNDIgQEAg
dm9pZCBGaWxlSW5wdXRUeXBlOjpyZXF1ZXN0SWNvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0
aHMpCiAgICAgICAgIGNocm9tZS0+bG9hZEljb25Gb3JGaWxlcyhwYXRocywgbmV3RmlsZUljb25M
b2FkZXIoKSk7CiB9CiAKLXZvaWQgRmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhdGhzKQordm9pZCBGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQoreworICAgIFZlY3RvcjxGaWxlQ2hvb3NlckZp
bGVJbmZvPiBmaWxlczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmlsZW5hbWVzLnNp
emUoKTsgKytpKSB7CisgICAgICAgIEZpbGVDaG9vc2VyRmlsZUluZm8gZmlsZTsKKyAgICAgICAg
ZmlsZS5wYXRoID0gZmlsZW5hbWVzW2ldOworICAgICAgICBmaWxlcy5hcHBlbmQoZmlsZSk7Cisg
ICAgfQorICAgIGZpbGVzQ2hvc2VuKGZpbGVzKTsKK30KKwordm9pZCBGaWxlSW5wdXRUeXBlOjpm
aWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIGZpbGVzKQogewog
ICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1dCA9IGVsZW1lbnQoKTsKIAogICAgIGJv
b2wgcGF0aHNDaGFuZ2VkID0gZmFsc2U7Ci0gICAgaWYgKHBhdGhzLnNpemUoKSAhPSBtX2ZpbGVM
aXN0LT5sZW5ndGgoKSkKKyAgICBpZiAoZmlsZXMuc2l6ZSgpICE9IG1fZmlsZUxpc3QtPmxlbmd0
aCgpKQogICAgICAgICBwYXRoc0NoYW5nZWQgPSB0cnVlOwogICAgIGVsc2UgewotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAg
IGlmIChwYXRoc1tpXSAhPSBtX2ZpbGVMaXN0LT5pdGVtKGkpLT5wYXRoKCkpIHsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZpbGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAg
ICBpZiAoZmlsZXNbaV0ucGF0aCAhPSBtX2ZpbGVMaXN0LT5pdGVtKGkpLT5wYXRoKCkpIHsKICAg
ICAgICAgICAgICAgICBwYXRoc0NoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgc2V0RmlsZUxpc3QocGF0
aHMpOworICAgIHNldEZpbGVMaXN0KGZpbGVzKTsKIAogICAgIGlucHV0LT5zZXRGb3JtQ29udHJv
bFZhbHVlTWF0Y2hlc1JlbmRlcmVyKHRydWUpOwogICAgIGlucHV0LT5ub3RpZnlGb3JtU3RhdGVD
aGFuZ2VkKCk7CiAgICAgaW5wdXQtPnNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwogCisgICAgVmVj
dG9yPFN0cmluZz4gcGF0aHM7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZpbGVzLnNp
emUoKTsgKytpKQorICAgICAgICBwYXRocy5hcHBlbmQoZmlsZXNbaV0ucGF0aCk7CiAgICAgcmVx
dWVzdEljb24ocGF0aHMpOwogCiAgICAgaWYgKGlucHV0LT5yZW5kZXJlcigpKQpAQCAtMzczLDEy
ICszODcsMTkgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpyZWNlaXZlRHJvcHBlZEZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKICAgICB9CiAjZW5kaWYKIAorICAgIFZlY3RvcjxGaWxl
Q2hvb3NlckZpbGVJbmZvPiBmaWxlczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0
aHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgIEZpbGVDaG9vc2VyRmlsZUluZm8gZmlsZTsKKyAgICAg
IGZpbGUucGF0aCA9IHBhdGhzW2ldOworICAgICAgZmlsZXMuYXBwZW5kKGZpbGUpOworICAgIH0K
KwogICAgIGlmIChpbnB1dC0+ZmFzdEhhc0F0dHJpYnV0ZShtdWx0aXBsZUF0dHIpKQotICAgICAg
ICBmaWxlc0Nob3NlbihwYXRocyk7CisgICAgICAgIGZpbGVzQ2hvc2VuKGZpbGVzKTsKICAgICBl
bHNlIHsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gZmlyc3RQYXRoT25seTsKLSAgICAgICAgZmly
c3RQYXRoT25seS5hcHBlbmQocGF0aHNbMF0pOwotICAgICAgICBmaWxlc0Nob3NlbihmaXJzdFBh
dGhPbmx5KTsKKyAgICAgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZpcnN0RmlsZU9u
bHk7CisgICAgICAgIGZpcnN0RmlsZU9ubHkuYXBwZW5kKGZpbGVzWzBdKTsKKyAgICAgICAgZmls
ZXNDaG9zZW4oZmlyc3RGaWxlT25seSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlu
cHV0VHlwZS5oCmluZGV4IDAwZDM2MmIuLjY1ZjY2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlu
cHV0VHlwZS5oCkBAIC02OSwxMiArNjksMTMgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmlu
ZyBkZWZhdWx0VG9vbFRpcCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8gRmlsZUNob29zZXJD
bGllbnQgaW1wbGVtZW50YXRpb24uCi0gICAgdmlydHVhbCB2b2lkIGZpbGVzQ2hvc2VuKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGZpbGVzQ2hvc2Vu
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocyk7CisgICAgdmlydHVhbCB2b2lkIGZpbGVzQ2hv
c2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYpIE9WRVJSSURFOwogCiAgICAg
Ly8gRmlsZUljb25Mb2FkZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVJlbmRlcmluZyhQYXNzUmVmUHRyPEljb24+KSBPVkVSUklERTsKIAotICAgIHZvaWQg
c2V0RmlsZUxpc3QoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKTsKKyAgICB2b2lkIHNldEZp
bGVMaXN0KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYpOwogI2lmIEVOQUJMRShE
SVJFQ1RPUllfVVBMT0FEKQogICAgIHZvaWQgcmVjZWl2ZURyb3BGb3JEaXJlY3RvcnlVcGxvYWQo
Y29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUNob29zZXIuY3BwCmluZGV4IGE5NzkyYWEuLjE3OWU4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKQEAgLTgyLDQgKzgyLDE3IEBAIHZvaWQgRmlsZUNob29zZXI6
OmNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCiAgICAgICAgIG1f
Y2xpZW50LT5maWxlc0Nob3NlbihmaWxlbmFtZXMpOwogfQogCit2b2lkIEZpbGVDaG9vc2VyOjpj
aG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIGZpbGVzKQorewor
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluZWxlZ2FudC4gV2Ugc2hvdWxkIG5vdCBiZSBsb29raW5n
IGF0IHNldHRpbmdzIGhlcmUuCisgICAgVmVjdG9yPFN0cmluZz4gcGF0aHM7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGZpbGVzLnNpemUoKTsgKytpKQorICAgICAgICBwYXRocy5hcHBl
bmQoZmlsZXNbaV0ucGF0aCk7CisgICAgaWYgKG1fc2V0dGluZ3Muc2VsZWN0ZWRGaWxlcyA9PSBw
YXRocykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2Ns
aWVudC0+ZmlsZXNDaG9zZW4oZmlsZXMpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUNob29zZXIuaAppbmRleCBjYzIwYmUyLi5kZTIzYTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVDaG9vc2VyLmgKQEAgLTM4LDYgKzM4LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRmlsZUNob29zZXI7CiAKK3N0cnVjdCBGaWxlQ2hvb3NlckZpbGVJbmZvIHsKKyAgICBT
dHJpbmcgcGF0aDsKKyAgICBTdHJpbmcgZGlzcGxheU5hbWU7Cit9OworCiBzdHJ1Y3QgRmlsZUNo
b29zZXJTZXR0aW5ncyB7CiAgICAgYm9vbCBhbGxvd3NNdWx0aXBsZUZpbGVzOwogI2lmIEVOQUJM
RShESVJFQ1RPUllfVVBMT0FEKQpAQCAtNDksNyArNTQsOCBAQCBzdHJ1Y3QgRmlsZUNob29zZXJT
ZXR0aW5ncyB7CiAKIGNsYXNzIEZpbGVDaG9vc2VyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0
dWFsIHZvaWQgZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhdGhzKSA9IDA7CiAgICAgdmlydHVhbCB+RmlsZUNob29zZXJDbGllbnQoKTsKIAogcHJvdGVj
dGVkOgpAQCAtNjgsOCArNzQsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaXNjb25uZWN0Q2xp
ZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KIAotICAgIHZvaWQgY2hvb3NlRmlsZShjb25zdCBTdHJp
bmcmIHBhdGgpOwotICAgIHZvaWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
dGhzKTsKKyAgICB2b2lkIGNob29zZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSk7CisgICAg
dm9pZCBjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKTsKKworICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkganVzdCBwYXNzIGZpbGUgcGF0aHMgdGhhdCBj
b3VsZCBiZSB2aXJ0dWFsIHBhdGhzIHdpdGggcHJvcGVyIGRpc3BsYXkgbmFtZXMgcmF0aGVyIHRo
YW4gcGFzc2luZyBzdHJ1Y3RzLgorICAgIHZvaWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPEZp
bGVDaG9vc2VyRmlsZUluZm8+JiBmaWxlcyk7CiAKICAgICBjb25zdCBGaWxlQ2hvb3NlclNldHRp
bmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCmluZGV4IGQyYzM3NTIuLjdmYTZkYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKQEAgLTM2LDkg
KzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTUlNRVR5cGVSZWdpc3RyeSB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBT
dHJpbmcmIGV4dGVuc2lvbik7Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgIHN0YXRpYyBT
dHJpbmcgZ2V0V2VsbEtub3duTUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRl
bnNpb24pOwotI2VuZGlmCiAKICAgICBzdGF0aWMgVmVjdG9yPFN0cmluZz4gZ2V0RXh0ZW5zaW9u
c0Zvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgc3RhdGljIFN0cmluZyBnZXRQ
cmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAwYTAyM2JmLi41ZTRjY2Q3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAzLTA5ICBLaW51a28gWWFzdWRhICA8
a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBBbGxvdyBXZWJGaWxlQ2hvb3NlciB0byBy
ZXR1cm4gZXh0cmEgZmlsZSBpbmZvIChsaWtlIGRpc3BsYXlOYW1lKSBpbiBhZGRpdGlvbiB0byBt
ZXJlIGZpbGUgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgwNzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBwdWJsaWMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uLmg6CisgICAgICAgIChTZWxl
Y3RlZEZpbGVJbmZvKTogQWRkZWQuCisgICAgICAgIChXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb246OmRpZENob29zZUZp
bGUpOiBBZGRlZCBhbiBvdmVybG9hZGVkCisgICAgICAgIG1ldGhvZCB0aGF0IHRha2VzIFNlbGVj
dGVkRmlsZUluZm8uCisgICAgICAgICogc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsOjpkaWRD
aG9vc2VGaWxlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJG
aWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmg6CisgICAgICAgIChXZWJGaWxlQ2hvb3NlckNvbXBs
ZXRpb25JbXBsKToKKwogMjAxMi0wMy0xMCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJv
dEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjExMDM2My4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVDaG9vc2Vy
Q29tcGxldGlvbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUNob29z
ZXJDb21wbGV0aW9uLmgKaW5kZXggMTRiYWNlNC4uOWIwMWQwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uLmgK
QEAgLTMxLDE4ICszMSwzNiBAQAogI2lmbmRlZiBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25faAog
I2RlZmluZSBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25faAogCisjaW5jbHVkZSAicGxhdGZvcm0v
V2ViU3RyaW5nLmgiCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJTdHJpbmc7CiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV2ViVmVjdG9yOwogCiAvLyBHZXRzIGNhbGxlZCBi
YWNrIHdoZW4gV2ViVmlld0NsaWVudCBmaW5pc2hlZCBjaG9vc2luZyBhIGZpbGUuCiBjbGFzcyBX
ZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24gewogcHVibGljOgorICAgIHN0cnVjdCBTZWxlY3RlZEZp
bGVJbmZvIHsKKyAgICAgICAgLy8gVGhlIGFjdHVhbCBwYXRoIG9mIHRoZSBzZWxlY3RlZCBmaWxl
LgorICAgICAgICBXZWJTdHJpbmcgcGF0aDsKKworICAgICAgICAvLyBUaGUgZGlzcGxheSBuYW1l
IG9mIHRoZSBmaWxlIHRoYXQgaXMgdG8gYmUgZXhwb3NlZCBhcyBGaWxlLm5hbWUgaW4KKyAgICAg
ICAgLy8gdGhlIERPTSBsYXllci4gSWYgaXQgaXMgZW1wdHkgdGhlIGJhc2UgcGFydCBvZiB0aGUg
fHBhdGh8IGlzIHVzZWQuCisgICAgICAgIFdlYlN0cmluZyBkaXNwbGF5TmFtZTsKKyAgICB9Owor
CiAgICAgLy8gQ2FsbGVkIHdpdGggemVybyBvciBtb3JlIGZpbGUgbmFtZXMuIFplcm8tbGVuZ3Ro
ZWQgdmVjdG9yIG1lYW5zIHRoYXQKICAgICAvLyB0aGUgdXNlciBjYW5jZWxsZWQgb3IgdGhhdCBm
aWxlIGNob29zaW5nIGZhaWxlZC4gVGhlIGNhbGxiYWNrIGluc3RhbmNlCiAgICAgLy8gaXMgZGVz
dHJveWVkIHdoZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkLgogICAgIHZpcnR1YWwgdm9pZCBkaWRD
aG9vc2VGaWxlKGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBmaWxlTmFtZXMpID0gMDsKKwor
ICAgIC8vIENhbGxlZCB3aXRoIHplcm8gb3IgbW9yZSBmaWxlcywgZ2l2ZW4gYXMgYSB2ZWN0b3Ig
b2YgU2VsZWN0ZWRGaWxlSW5mby4KKyAgICAvLyBaZXJvLWxlbmd0aGVkIHZlY3RvciBtZWFucyB0
aGF0IHRoZSB1c2VyIGNhbmNlbGxlZCBvciB0aGF0IGZpbGUKKyAgICAvLyBjaG9vc2luZyBmYWls
ZWQuIFRoZSBjYWxsYmFjayBpbnN0YW5jZSBpcyBkZXN0cm95ZWQgd2hlbiB0aGlzIG1ldGhvZAor
ICAgIC8vIGlzIGNhbGxlZC4KKyAgICAvLyBGSVhNRTogRGVwcmVjYXRlIGVpdGhlciBvbmUgb2Yg
dGhlIGRpZENob29zZUZpbGUgKGFuZCByZW5hbWUgaXQgdG8KKyAgICAvLyBkaWRDaG9vc2VGaWxl
KnMqKS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlRmlsZShjb25zdCBXZWJWZWN0b3I8U2Vs
ZWN0ZWRGaWxlSW5mbz4mKSB7IH0KIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5XZWJGaWxlQ2hv
b3NlckNvbXBsZXRpb24oKSB7fQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5jcHAKaW5kZXggZDc1ODNj
NS4uMzQ3MTE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmls
ZUNob29zZXJDb21wbGV0aW9uSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5jcHAKQEAgLTQ0LDE0ICs0NCwyNSBAQCBX
ZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsOjp+V2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1w
bCgpCiAKIHZvaWQgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbDo6ZGlkQ2hvb3NlRmlsZShj
b25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgZmlsZU5hbWVzKQogewotICAgIGlmIChmaWxlTmFt
ZXMuc2l6ZSgpID09IDEpCi0gICAgICAgIG1fZmlsZUNob29zZXItPmNob29zZUZpbGUoZmlsZU5h
bWVzWzBdKTsKLSAgICBlbHNlIGlmIChmaWxlTmFtZXMuc2l6ZSgpID4gMCkgewotICAgICAgICBW
ZWN0b3I8V1RGOjpTdHJpbmc+IHBhdGhzOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGZpbGVOYW1lcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHBhdGhzLmFwcGVuZChmaWxlTmFt
ZXNbaV0pOwotICAgICAgICBtX2ZpbGVDaG9vc2VyLT5jaG9vc2VGaWxlcyhwYXRocyk7CisgICAg
VmVjdG9yPFNlbGVjdGVkRmlsZUluZm8+IGZpbGVzOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBmaWxlTmFtZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgIFNlbGVjdGVkRmlsZUluZm8gZmls
ZTsKKyAgICAgIGZpbGUucGF0aCA9IGZpbGVOYW1lc1tpXTsKKyAgICAgIGZpbGVzLmFwcGVuZChm
aWxlKTsKICAgICB9CisgICAgZGlkQ2hvb3NlRmlsZShXZWJWZWN0b3I8U2VsZWN0ZWRGaWxlSW5m
bz4oZmlsZXMpKTsKK30KKwordm9pZCBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsOjpkaWRD
aG9vc2VGaWxlKGNvbnN0IFdlYlZlY3RvcjxTZWxlY3RlZEZpbGVJbmZvPiYgZmlsZXMpCit7Cisg
ICAgVmVjdG9yPFdlYkNvcmU6OkZpbGVDaG9vc2VyRmlsZUluZm8+IGZpbGVJbmZvOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgV2ViQ29y
ZTo6RmlsZUNob29zZXJGaWxlSW5mbyBmaWxlOworICAgICAgICBmaWxlLnBhdGggPSBmaWxlc1tp
XS5wYXRoOworICAgICAgICBmaWxlLmRpc3BsYXlOYW1lID0gZmlsZXNbaV0uZGlzcGxheU5hbWU7
CisgICAgICAgIGZpbGVJbmZvLmFwcGVuZChmaWxlKTsKKyAgICB9CisgICAgbV9maWxlQ2hvb3Nl
ci0+Y2hvb3NlRmlsZXMoZmlsZUluZm8pOwogICAgIC8vIFRoaXMgb2JqZWN0IGlzIG5vIGxvbmdl
ciBuZWVkZWQuCiAgICAgZGVsZXRlIHRoaXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmgKaW5kZXggMDZh
MDU3Ny4uM2FjNjNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuaApAQCAtNDksNiArNDksNyBAQCBwdWJs
aWM6CiAgICAgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6
OkZpbGVDaG9vc2VyPiBjaG9vc2VyKTsKICAgICB+V2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1w
bCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VGaWxlKGNvbnN0IFdlYlZlY3RvcjxXZWJT
dHJpbmc+JiBmaWxlTmFtZXMpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VGaWxlKGNvbnN0
IFdlYlZlY3RvcjxTZWxlY3RlZEZpbGVJbmZvPiYgZmlsZXMpOwogcHJpdmF0ZToKICAgICBSZWZQ
dHI8V2ViQ29yZTo6RmlsZUNob29zZXI+IG1fZmlsZUNob29zZXI7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131507</attachid>
            <date>2012-03-12 21:20:54 -0700</date>
            <delta_ts>2012-03-12 22:27:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80719-20120313132053.patch</filename>
            <type>text/plain</type>
            <size>18222</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBlOTczYTRhZGE1MDZh
NmQ0Y2Y5Yzk3M2E5NGZlYTdlYjNkMDgyNC4uOTVmM2Q4NTM2YTMwNTUzMWQ0NTAxNGZmNzFhZTc0
Y2ViNDA1NTkxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAzLTA5ICBLaW51
a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBBbGxvdyBXZWJGaWxl
Q2hvb3NlciB0byByZXR1cm4gZXh0cmEgZmlsZSBpbmZvIChsaWtlIGRpc3BsYXlOYW1lKSBpbiBh
ZGRpdGlvbiB0byBtZXJlIGZpbGUgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgwNzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiB0aGlzIGNoYW5nZSBpdHNlbGYgc2hvdWxk
bid0IGNoYW5nZSBleGlzdGluZyBiZWhhdmlvci4KKworICAgICAgICAqIGZpbGVhcGkvRmlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoTmFtZSk6IFJl
bmFtZWQgZnJvbSBjcmVhdGVCbG9iRGF0YUZvckZpbGVTeXN0ZW1GaWxlLgorICAgICAgICAqIGZp
bGVhcGkvRmlsZS5oOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpzZXRGaWxlTGlzdCk6IENoYW5nZWQgdGhlIHNpZ25h
dHVyZSB0byB0YWtlCisgICAgICAgIEZpbGVDaG9vc2VyRmlsZUluZm8uCisgICAgICAgIChXZWJD
b3JlOjpGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbik6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZUlucHV0VHlwZTo6cmVjZWl2ZURyb3BwZWRGaWxlcyk6CisgICAgICAgICogaHRtbC9G
aWxlSW5wdXRUeXBlLmg6CisgICAgICAgIChGaWxlSW5wdXRUeXBlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9GaWxlQ2hvb3Nlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlQ2hvb3Nlcjo6Y2hv
b3NlRmlsZXMpOiBBZGRlZCBhbiBvdmVybG9hZGVkIG1ldGhvZCB0aGF0CisgICAgICAgIHRha2Vz
IEZpbGVDaG9vc2VyRmlsZUluZm8uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9GaWxlQ2hvb3Nlci5oOgorICAgICAgICAoRmlsZUNob29zZXJGaWxlSW5mbyk6IEFkZGVk
LgorCiAyMDEyLTAzLTEwICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAg
ICAgICAgIFNoYWRvd1RyZWUgdXNlcyB3ZWFrIGl0ZXJhdGlvbiBwYXR0ZXJucwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCAwYTAyM2JmZGY0NmQ3NjkyZWY1NzA1MWQ5ZGQ0YTRkYTEzZjVi
NzdiLi41ZTRjY2Q3NDVjZGM5YTljYjM3MjFiOWFjM2Y2ZjE5NWQyZDM1MzM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAzLTA5ICBLaW51a28gWWFz
dWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBBbGxvdyBXZWJGaWxlQ2hvb3Nl
ciB0byByZXR1cm4gZXh0cmEgZmlsZSBpbmZvIChsaWtlIGRpc3BsYXlOYW1lKSBpbiBhZGRpdGlv
biB0byBtZXJlIGZpbGUgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgwNzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uLmg6CisgICAgICAg
IChTZWxlY3RlZEZpbGVJbmZvKTogQWRkZWQuCisgICAgICAgIChXZWJGaWxlQ2hvb3NlckNvbXBs
ZXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb246OmRpZENo
b29zZUZpbGUpOiBBZGRlZCBhbiBvdmVybG9hZGVkCisgICAgICAgIG1ldGhvZCB0aGF0IHRha2Vz
IFNlbGVjdGVkRmlsZUluZm8uCisgICAgICAgICogc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlv
bkltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBs
OjpkaWRDaG9vc2VGaWxlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNy
Yy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmg6CisgICAgICAgIChXZWJGaWxlQ2hvb3Nl
ckNvbXBsZXRpb25JbXBsKToKKwogMjAxMi0wMy0xMCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEx
MDM2My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4IGQ0MDliOTcxOTMzNTk1MTllMzAwYTAz
Mjk0OTcwNGZhZWY1ZjNlODIuLjkwNTI5MWIyZGQ3NTkzZTVjNjA4MDk4NjE4NGY4YzQzZTE2ZTlm
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApAQCAtNTAsOCArNTAsNyBAQCBzdGF0aWMgUGFz
c093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCkKICAgICByZXR1cm4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aFR5cGUocGF0aCwgdHlwZSk7
CiB9CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi1zdGF0aWMgUGFzc093blB0cjxCbG9iRGF0
YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlU3lzdGVtRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgZmlsZVN5c3RlbU5hbWUpCitzdGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4g
Y3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aE5hbWUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIGZpbGVTeXN0ZW1OYW1lKQogewogICAgIFN0cmluZyB0eXBlOwogICAgIGludCBpbmRl
eCA9IGZpbGVTeXN0ZW1OYW1lLnJldmVyc2VGaW5kKCcuJyk7CkBAIC01OSw3ICs1OCw2IEBAIHN0
YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZpbGVTeXN0ZW1GaWxl
KGNvbnN0IFN0cmluZyYgcGF0aCwKICAgICAgICAgdHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6Omdl
dFdlbGxLbm93bk1JTUVUeXBlRm9yRXh0ZW5zaW9uKGZpbGVTeXN0ZW1OYW1lLnN1YnN0cmluZyhp
bmRleCArIDEpKTsKICAgICByZXR1cm4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aFR5cGUocGF0
aCwgdHlwZSk7CiB9Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQogUGFz
c1JlZlB0cjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpCkBAIC04NywxNCArODUsMTIgQEAgRmls
ZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB0eXBlKQogICAgIC8vIFNlZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGZvciBqcyBhbmQg
djguCiB9CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiBGaWxlOjpGaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lKQotICAgIDogQmxvYihjcmVhdGVCbG9iRGF0YUZv
ckZpbGVTeXN0ZW1GaWxlKHBhdGgsIG5hbWUpLCAtMSkKKyAgICA6IEJsb2IoY3JlYXRlQmxvYkRh
dGFGb3JGaWxlV2l0aE5hbWUocGF0aCwgbmFtZSksIC0xKQogICAgICwgbV9wYXRoKHBhdGgpCiAg
ICAgLCBtX25hbWUobmFtZSkKIHsKIH0KLSNlbmRpZgogCiBkb3VibGUgRmlsZTo6bGFzdE1vZGlm
aWVkRGF0ZSgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCmluZGV4IDEzYTkxZmUzZTQxZjk1
ZmI5YjIzYWNkNmIwZWViZGMxNTQ0M2Q0ZTMuLmU2YWQyYTk4MmMxMmM4ZmExY2E3YTRmY2QzMmU1
MjBkNGJhZDY4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCkBAIC01MiwxMyArNTIsMTMgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCk7CiAjZW5kaWYK
IAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICAvLyBDcmVhdGUgYSBmaWxlIHdpdGggYSBu
YW1lIGV4cG9zZWQgdG8gdGhlIGF1dGhvciAodmlhIEZpbGUubmFtZSBhbmQgYXNzb2NpYXRlZCBE
T00gcHJvcGVydGllcykgdGhhdCBkaWZmZXJzIGZyb20gdGhlIG9uZSBwcm92aWRlZCBpbiB0aGUg
cGF0aC4KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVhdGVXaXRoTmFtZShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB7CisgICAgICAgIGlmIChuYW1l
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZShwYXRoKSk7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZShwYXRoLCBuYW1lKSk7CiAgICAgfQot
I2VuZGlmCiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIGlzRmlsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTgzLDEw
ICs4Myw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBGb3IgZGVzZXJpYWxpemF0aW9uLgogICAgIEZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBLVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYg
dHlwZSk7Ci0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0jZW5kaWYKIAogICAgIFN0cmluZyBtX3BhdGg7
CiAgICAgU3RyaW5nIG1fbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmlu
ZGV4IDljYjM5YjY2N2Q5NzQxZmZiYWE2MGY0MjcxMDEzOWE4N2Y5YjA2YmUuLmYwYzZjMmE3Yzhh
MTZjNjdlMDQyYzRmOTU5OThhOTVjMTRhMDMyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5w
dXRUeXBlLmNwcApAQCAtMTA4LDE0ICsxMDgsMjMgQEAgYm9vbCBGaWxlSW5wdXRUeXBlOjpzYXZl
Rm9ybUNvbnRyb2xTdGF0ZShTdHJpbmcmIHJlc3VsdCkgY29uc3QKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbnVtRmlsZXM7ICsraSkgewogICAgICAgICByZXN1bHQuYXBwZW5kKG1fZmls
ZUxpc3QtPml0ZW0oaSktPnBhdGgoKSk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1wwJyk7Cisg
ICAgICAgIHJlc3VsdC5hcHBlbmQobV9maWxlTGlzdC0+aXRlbShpKS0+bmFtZSgpKTsKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnXDAnKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZv
aWQgRmlsZUlucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgU3RyaW5nJiBz
dGF0ZSkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBmaWxlczsKLSAgICBzdGF0ZS5zcGxpdCgnXDAn
LCBmaWxlcyk7CisgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZpbGVzOworICAgIFZl
Y3RvcjxTdHJpbmc+IHBhdGhBbmROYW1lczsKKyAgICBzdGF0ZS5zcGxpdCgnXDAnLCBwYXRoQW5k
TmFtZXMpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRoQW5kTmFtZXMuc2l6ZSgp
OykgeworICAgICAgICBBU1NFUlQoaSArIDEgPCBwYXRoQW5kTmFtZXMuc2l6ZSgpKTsKKyAgICAg
ICAgU3RyaW5nIHBhdGggPSBwYXRoQW5kTmFtZXNbaSsrXTsKKyAgICAgICAgU3RyaW5nIG5hbWUg
PSBwYXRoQW5kTmFtZXNbaSsrXTsKKyAgICAgICAgZmlsZXMuYXBwZW5kKEZpbGVDaG9vc2VyRmls
ZUluZm8ocGF0aCwgbmFtZSkpOworICAgIH0KICAgICBmaWxlc0Nob3NlbihmaWxlcyk7CiB9CiAK
QEAgLTI0MCwxMCArMjQ5LDEwIEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6c2V0VmFsdWUoY29uc3Qg
U3RyaW5nJiwgYm9vbCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvcikKICAgICBlbGVtZW50KCktPnNl
dE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIAotdm9pZCBGaWxlSW5wdXRUeXBlOjpzZXRGaWxlTGlz
dChjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCit2b2lkIEZpbGVJbnB1dFR5cGU6OnNldEZp
bGVMaXN0KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgZmlsZXMpCiB7CiAgICAg
bV9maWxlTGlzdC0+Y2xlYXIoKTsKLSAgICBzaXplX3Qgc2l6ZSA9IHBhdGhzLnNpemUoKTsKKyAg
ICBzaXplX3Qgc2l6ZSA9IGZpbGVzLnNpemUoKTsKIAogI2lmIEVOQUJMRShESVJFQ1RPUllfVVBM
T0FEKQogICAgIC8vIElmIGEgZGlyZWN0b3J5IGlzIGJlaW5nIHNlbGVjdGVkLCB0aGUgVUkgYWxs
b3dzIGEgZGlyZWN0b3J5IHRvIGJlIGNob3NlbgpAQCAtMjUxLDkgKzI2MCw5IEBAIHZvaWQgRmls
ZUlucHV0VHlwZTo6c2V0RmlsZUxpc3QoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQogICAg
IC8vIHdlIHdhbnQgdG8gc3RvcmUgb25seSB0aGUgcmVsYXRpdmUgcGF0aHMgZnJvbSB0aGF0IHBv
aW50LgogICAgIGlmIChzaXplICYmIGVsZW1lbnQoKS0+ZmFzdEhhc0F0dHJpYnV0ZSh3ZWJraXRk
aXJlY3RvcnlBdHRyKSkgewogICAgICAgICAvLyBGaW5kIHRoZSBjb21tb24gcm9vdCBwYXRoLgot
ICAgICAgICBTdHJpbmcgcm9vdFBhdGggPSBkaXJlY3RvcnlOYW1lKHBhdGhzWzBdKTsKKyAgICAg
ICAgU3RyaW5nIHJvb3RQYXRoID0gZGlyZWN0b3J5TmFtZShmaWxlc1swXS5wYXRoKTsKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgIHdoaWxl
ICghcGF0aHNbaV0uc3RhcnRzV2l0aChyb290UGF0aCkpCisgICAgICAgICAgICB3aGlsZSAoIWZp
bGVzW2ldLnBhdGguc3RhcnRzV2l0aChyb290UGF0aCkpCiAgICAgICAgICAgICAgICAgcm9vdFBh
dGggPSBkaXJlY3RvcnlOYW1lKHJvb3RQYXRoKTsKICAgICAgICAgfQogICAgICAgICByb290UGF0
aCA9IGRpcmVjdG9yeU5hbWUocm9vdFBhdGgpOwpAQCAtMjYzLDE1ICsyNzIsMTUgQEAgdm9pZCBG
aWxlSW5wdXRUeXBlOjpzZXRGaWxlTGlzdChjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiAg
ICAgICAgICAgICByb290TGVuZ3RoICs9IDE7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAvLyBOb3JtYWxpemUgYmFja3NsYXNoZXMgdG8g
c2xhc2hlcyBiZWZvcmUgZXhwb3NpbmcgdGhlIHJlbGF0aXZlIHBhdGggdG8gc2NyaXB0LgotICAg
ICAgICAgICAgU3RyaW5nIHJlbGF0aXZlUGF0aCA9IHBhdGhzW2ldLnN1YnN0cmluZyhyb290TGVu
Z3RoKS5yZXBsYWNlKCdcXCcsICcvJyk7Ci0gICAgICAgICAgICBtX2ZpbGVMaXN0LT5hcHBlbmQo
RmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChwYXRoc1tpXSwgcmVsYXRpdmVQYXRoKSk7Cisg
ICAgICAgICAgICBTdHJpbmcgcmVsYXRpdmVQYXRoID0gZmlsZXNbaV0ucGF0aC5zdWJzdHJpbmco
cm9vdExlbmd0aCkucmVwbGFjZSgnXFwnLCAnLycpOworICAgICAgICAgICAgbV9maWxlTGlzdC0+
YXBwZW5kKEZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoZmlsZXNbaV0ucGF0aCwgcmVsYXRp
dmVQYXRoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspCi0gICAgICAgIG1fZmlsZUxpc3Qt
PmFwcGVuZChGaWxlOjpjcmVhdGUocGF0aHNbaV0pKTsKKyAgICAgICAgbV9maWxlTGlzdC0+YXBw
ZW5kKEZpbGU6OmNyZWF0ZVdpdGhOYW1lKGZpbGVzW2ldLnBhdGgsIGZpbGVzW2ldLmRpc3BsYXlO
YW1lKSk7CiB9CiAKIGJvb2wgRmlsZUlucHV0VHlwZTo6aXNGaWxlVXBsb2FkKCkgY29uc3QKQEAg
LTMwMywyOCArMzEyLDMxIEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6cmVxdWVzdEljb24oY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhdGhzKQogICAgICAgICBjaHJvbWUtPmxvYWRJY29uRm9yRmlsZXMo
cGF0aHMsIG5ld0ZpbGVJY29uTG9hZGVyKCkpOwogfQogCi12b2lkIEZpbGVJbnB1dFR5cGU6OmZp
bGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKK3ZvaWQgRmlsZUlucHV0VHlw
ZTo6ZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBmaWxlcykK
IHsKICAgICBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gaW5wdXQgPSBlbGVtZW50KCk7CiAKICAg
ICBib29sIHBhdGhzQ2hhbmdlZCA9IGZhbHNlOwotICAgIGlmIChwYXRocy5zaXplKCkgIT0gbV9m
aWxlTGlzdC0+bGVuZ3RoKCkpCisgICAgaWYgKGZpbGVzLnNpemUoKSAhPSBtX2ZpbGVMaXN0LT5s
ZW5ndGgoKSkKICAgICAgICAgcGF0aHNDaGFuZ2VkID0gdHJ1ZTsKICAgICBlbHNlIHsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhdGhzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
ICAgICBpZiAocGF0aHNbaV0gIT0gbV9maWxlTGlzdC0+aXRlbShpKS0+cGF0aCgpKSB7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmaWxlcy5zaXplKCk7ICsraSkgeworICAgICAg
ICAgICAgaWYgKGZpbGVzW2ldLnBhdGggIT0gbV9maWxlTGlzdC0+aXRlbShpKS0+cGF0aCgpKSB7
CiAgICAgICAgICAgICAgICAgcGF0aHNDaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIHNldEZpbGVMaXN0
KHBhdGhzKTsKKyAgICBzZXRGaWxlTGlzdChmaWxlcyk7CiAKICAgICBpbnB1dC0+c2V0Rm9ybUNv
bnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcih0cnVlKTsKICAgICBpbnB1dC0+bm90aWZ5Rm9ybVN0
YXRlQ2hhbmdlZCgpOwogICAgIGlucHV0LT5zZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKIAorICAg
IFZlY3RvcjxTdHJpbmc+IHBhdGhzOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmaWxl
cy5zaXplKCk7ICsraSkKKyAgICAgICAgcGF0aHMuYXBwZW5kKGZpbGVzW2ldLnBhdGgpOwogICAg
IHJlcXVlc3RJY29uKHBhdGhzKTsKIAogICAgIGlmIChpbnB1dC0+cmVuZGVyZXIoKSkKQEAgLTM3
MywxMiArMzg1LDE2IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6cmVjZWl2ZURyb3BwZWRGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiAgICAgfQogI2VuZGlmCiAKKyAgICBWZWN0b3I8
RmlsZUNob29zZXJGaWxlSW5mbz4gZmlsZXM7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHBhdGhzLnNpemUoKTsgKytpKQorICAgICAgICBmaWxlcy5hcHBlbmQoRmlsZUNob29zZXJGaWxl
SW5mbyhwYXRoc1tpXSkpOworCiAgICAgaWYgKGlucHV0LT5mYXN0SGFzQXR0cmlidXRlKG11bHRp
cGxlQXR0cikpCi0gICAgICAgIGZpbGVzQ2hvc2VuKHBhdGhzKTsKKyAgICAgICAgZmlsZXNDaG9z
ZW4oZmlsZXMpOwogICAgIGVsc2UgewotICAgICAgICBWZWN0b3I8U3RyaW5nPiBmaXJzdFBhdGhP
bmx5OwotICAgICAgICBmaXJzdFBhdGhPbmx5LmFwcGVuZChwYXRoc1swXSk7Ci0gICAgICAgIGZp
bGVzQ2hvc2VuKGZpcnN0UGF0aE9ubHkpOworICAgICAgICBWZWN0b3I8RmlsZUNob29zZXJGaWxl
SW5mbz4gZmlyc3RGaWxlT25seTsKKyAgICAgICAgZmlyc3RGaWxlT25seS5hcHBlbmQoZmlsZXNb
MF0pOworICAgICAgICBmaWxlc0Nob3NlbihmaXJzdEZpbGVPbmx5KTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKaW5kZXggMDBkMzYyYmRhOTA1ODg1NzM3NmFlMTVk
NWMyOWM4YjZhMjc5Y2M3OS4uYmQ2YTAwYTY3ZmM4MmFiMGZkNzI4NzBhMjZmMzI1YmNmZWU2ZWJh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKQEAgLTY5LDEyICs2OSwxMiBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIGRlZmF1bHRUb29sVGlwKCkgY29uc3QgT1ZFUlJJ
REU7CiAKICAgICAvLyBGaWxlQ2hvb3NlckNsaWVudCBpbXBsZW1lbnRhdGlvbi4KLSAgICB2aXJ0
dWFsIHZvaWQgZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPFN0cmluZz4mKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUlu
Zm8+JikgT1ZFUlJJREU7CiAKICAgICAvLyBGaWxlSWNvbkxvYWRlckNsaWVudCBpbXBsZW1lbnRh
dGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVuZGVyaW5nKFBhc3NSZWZQdHI8SWNvbj4p
IE9WRVJSSURFOwogCi0gICAgdm9pZCBzZXRGaWxlTGlzdChjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGF0aHMpOworICAgIHZvaWQgc2V0RmlsZUxpc3QoY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmls
ZUluZm8+Jik7CiAjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCiAgICAgdm9pZCByZWNlaXZl
RHJvcEZvckRpcmVjdG9yeVVwbG9hZChjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKaW5kZXggYTk3OTJhYTZhZjU3YjUy
ZmZmZWY1NjdiYjRjYmVlYzM2YzcxMWI5My4uNTBlNGM2MDExZTU1MTM1MDQ3ODgyY2UzMDI0MjUw
ZmZmZDJjNDE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29z
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcApAQCAt
NzgsOCArNzgsMjUgQEAgdm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGZpbGVuYW1lcykKICAgICBpZiAobV9zZXR0aW5ncy5zZWxlY3RlZEZpbGVzID09
IGZpbGVuYW1lcykKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fY2xpZW50KSB7CisgICAg
ICAgIFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiBmaWxlczsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGZpbGVuYW1lcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGZpbGVz
LmFwcGVuZChGaWxlQ2hvb3NlckZpbGVJbmZvKGZpbGVuYW1lc1tpXSkpOworICAgICAgICBtX2Ns
aWVudC0+ZmlsZXNDaG9zZW4oZmlsZXMpOworICAgIH0KK30KKwordm9pZCBGaWxlQ2hvb3Nlcjo6
Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBmaWxlcykKK3sK
KyAgICAvLyBGSVhNRTogVGhpcyBpcyBpbmVsZWdhbnQuIFdlIHNob3VsZCBub3QgYmUgbG9va2lu
ZyBhdCBzZXR0aW5ncyBoZXJlLgorICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBmaWxlcy5zaXplKCk7ICsraSkKKyAgICAgICAgcGF0aHMuYXBw
ZW5kKGZpbGVzW2ldLnBhdGgpOworICAgIGlmIChtX3NldHRpbmdzLnNlbGVjdGVkRmlsZXMgPT0g
cGF0aHMpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9j
bGllbnQtPmZpbGVzQ2hvc2VuKGZpbGVuYW1lcyk7CisgICAgICAgIG1fY2xpZW50LT5maWxlc0No
b3NlbihmaWxlcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVDaG9vc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCmlu
ZGV4IGNjMjBiZTI4MWI4NDI0Y2JlYmUwMTVhNzI3YTU0Zjg2YjBlM2VhMzEuLjI0YTg0ZTQzNzk4
ZWI3YzM2ODU0ZmU1ZTkxMzVlYzY0YzU0OGVlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUNob29zZXIuaApAQCAtMzgsNiArMzgsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBGaWxlQ2hvb3NlcjsKIAorc3RydWN0IEZpbGVDaG9vc2VyRmlsZUluZm8geworICAgIEZpbGVD
aG9vc2VyRmlsZUluZm8oY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lID0gU3RyaW5nKCkpCisgICAgICAgIDogcGF0aChwYXRoKQorICAgICAgICAsIGRpc3BsYXlO
YW1lKGRpc3BsYXlOYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBTdHJpbmcgcGF0aDsK
KyAgICBjb25zdCBTdHJpbmcgZGlzcGxheU5hbWU7Cit9OworCiBzdHJ1Y3QgRmlsZUNob29zZXJT
ZXR0aW5ncyB7CiAgICAgYm9vbCBhbGxvd3NNdWx0aXBsZUZpbGVzOwogI2lmIEVOQUJMRShESVJF
Q1RPUllfVVBMT0FEKQpAQCAtNDksNyArNjAsNyBAQCBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5n
cyB7CiAKIGNsYXNzIEZpbGVDaG9vc2VyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZv
aWQgZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYpID0gMDsK
ICAgICB2aXJ0dWFsIH5GaWxlQ2hvb3NlckNsaWVudCgpOwogCiBwcm90ZWN0ZWQ6CkBAIC02OCw4
ICs3OSwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpc2Nvbm5lY3RDbGllbnQoKSB7IG1fY2xp
ZW50ID0gMDsgfQogCi0gICAgdm9pZCBjaG9vc2VGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0g
ICAgdm9pZCBjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpOworICAgIHZv
aWQgY2hvb3NlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKTsKKyAgICB2b2lkIGNob29zZUZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpOworCisgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBwcm9iYWJseSBqdXN0IHBhc3MgZmlsZSBwYXRocyB0aGF0IGNvdWxkIGJlIHZpcnR1
YWwgcGF0aHMgd2l0aCBwcm9wZXIgZGlzcGxheSBuYW1lcyByYXRoZXIgdGhhbiBwYXNzaW5nIHN0
cnVjdHMuCisgICAgdm9pZCBjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxl
SW5mbz4mIGZpbGVzKTsKIAogICAgIGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmIHNldHRpbmdz
KCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NSU1FVHlwZVJlZ2lzdHJ5LmgKaW5kZXggZDJjMzc1MjE0YTFhODQwMDQxZTFjNmQ1ZGI3NDcw
ZmI2YTUxNGYyYy4uN2ZhNmRiNmQ3YzQ1OWVkYTc2ZjQ5NGNkNDU0YzdiNjMzMDYxNzAwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaApAQCAtMzYsOSArMzYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNSU1FVHlwZVJlZ2lzdHJ5IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgU3RyaW5nIGdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgZXh0ZW5zaW9uKTsKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgc3RhdGljIFN0cmlu
ZyBnZXRXZWxsS25vd25NSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lv
bik7Ci0jZW5kaWYKIAogICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBnZXRFeHRlbnNpb25zRm9y
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBzdGF0aWMgU3RyaW5nIGdldFByZWZl
cnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24u
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlv
bi5oCmluZGV4IDE0YmFjZTRjMmRiM2I5MTU2MTIxZWQxYjZmNzIzZGI4NWNhY2Y4MzAuLjliMDFk
MGU0MTAzOTdjNDg0MDZlMDUzYTgwYjQxZDIzNzFmY2NjOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbi5oCkBA
IC0zMSwxOCArMzEsMzYgQEAKICNpZm5kZWYgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uX2gKICNk
ZWZpbmUgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uX2gKIAorI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlN0cmluZy5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViU3RyaW5nOwogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYlZlY3RvcjsKIAogLy8gR2V0cyBjYWxsZWQgYmFj
ayB3aGVuIFdlYlZpZXdDbGllbnQgZmluaXNoZWQgY2hvb3NpbmcgYSBmaWxlLgogY2xhc3MgV2Vi
RmlsZUNob29zZXJDb21wbGV0aW9uIHsKIHB1YmxpYzoKKyAgICBzdHJ1Y3QgU2VsZWN0ZWRGaWxl
SW5mbyB7CisgICAgICAgIC8vIFRoZSBhY3R1YWwgcGF0aCBvZiB0aGUgc2VsZWN0ZWQgZmlsZS4K
KyAgICAgICAgV2ViU3RyaW5nIHBhdGg7CisKKyAgICAgICAgLy8gVGhlIGRpc3BsYXkgbmFtZSBv
ZiB0aGUgZmlsZSB0aGF0IGlzIHRvIGJlIGV4cG9zZWQgYXMgRmlsZS5uYW1lIGluCisgICAgICAg
IC8vIHRoZSBET00gbGF5ZXIuIElmIGl0IGlzIGVtcHR5IHRoZSBiYXNlIHBhcnQgb2YgdGhlIHxw
YXRofCBpcyB1c2VkLgorICAgICAgICBXZWJTdHJpbmcgZGlzcGxheU5hbWU7CisgICAgfTsKKwog
ICAgIC8vIENhbGxlZCB3aXRoIHplcm8gb3IgbW9yZSBmaWxlIG5hbWVzLiBaZXJvLWxlbmd0aGVk
IHZlY3RvciBtZWFucyB0aGF0CiAgICAgLy8gdGhlIHVzZXIgY2FuY2VsbGVkIG9yIHRoYXQgZmls
ZSBjaG9vc2luZyBmYWlsZWQuIFRoZSBjYWxsYmFjayBpbnN0YW5jZQogICAgIC8vIGlzIGRlc3Ry
b3llZCB3aGVuIHRoaXMgbWV0aG9kIGlzIGNhbGxlZC4KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hv
b3NlRmlsZShjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgZmlsZU5hbWVzKSA9IDA7CisKKyAg
ICAvLyBDYWxsZWQgd2l0aCB6ZXJvIG9yIG1vcmUgZmlsZXMsIGdpdmVuIGFzIGEgdmVjdG9yIG9m
IFNlbGVjdGVkRmlsZUluZm8uCisgICAgLy8gWmVyby1sZW5ndGhlZCB2ZWN0b3IgbWVhbnMgdGhh
dCB0aGUgdXNlciBjYW5jZWxsZWQgb3IgdGhhdCBmaWxlCisgICAgLy8gY2hvb3NpbmcgZmFpbGVk
LiBUaGUgY2FsbGJhY2sgaW5zdGFuY2UgaXMgZGVzdHJveWVkIHdoZW4gdGhpcyBtZXRob2QKKyAg
ICAvLyBpcyBjYWxsZWQuCisgICAgLy8gRklYTUU6IERlcHJlY2F0ZSBlaXRoZXIgb25lIG9mIHRo
ZSBkaWRDaG9vc2VGaWxlIChhbmQgcmVuYW1lIGl0IHRvCisgICAgLy8gZGlkQ2hvb3NlRmlsZSpz
KikuCisgICAgdmlydHVhbCB2b2lkIGRpZENob29zZUZpbGUoY29uc3QgV2ViVmVjdG9yPFNlbGVj
dGVkRmlsZUluZm8+JikgeyB9CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+V2ViRmlsZUNob29z
ZXJDb21wbGV0aW9uKCkge30KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuY3BwCmluZGV4IGQ3NTgzYzVk
ZGE2YzAyYmVhYzQ3NzhhNDFhZDYxMDJhMWQ0ZDlmNjIuLjQ3NTFkMzgyZDdkYmYxYTdkYmIyMTA1
MTU2MGY4Nzg0YzY0MTVkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuY3BwCkBAIC00NCwxNCArNDQs
MjEgQEAgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbDo6fldlYkZpbGVDaG9vc2VyQ29tcGxl
dGlvbkltcGwoKQogCiB2b2lkIFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGw6OmRpZENob29z
ZUZpbGUoY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGZpbGVOYW1lcykKIHsKLSAgICBpZiAo
ZmlsZU5hbWVzLnNpemUoKSA9PSAxKQotICAgICAgICBtX2ZpbGVDaG9vc2VyLT5jaG9vc2VGaWxl
KGZpbGVOYW1lc1swXSk7Ci0gICAgZWxzZSBpZiAoZmlsZU5hbWVzLnNpemUoKSA+IDApIHsKLSAg
ICAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBwYXRoczsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBmaWxlTmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBwYXRocy5hcHBlbmQo
ZmlsZU5hbWVzW2ldKTsKLSAgICAgICAgbV9maWxlQ2hvb3Nlci0+Y2hvb3NlRmlsZXMocGF0aHMp
OworICAgIFZlY3RvcjxTZWxlY3RlZEZpbGVJbmZvPiBmaWxlczsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZmlsZU5hbWVzLnNpemUoKTsgKytpKSB7CisgICAgICBTZWxlY3RlZEZpbGVJ
bmZvIGZpbGU7CisgICAgICBmaWxlLnBhdGggPSBmaWxlTmFtZXNbaV07CisgICAgICBmaWxlcy5h
cHBlbmQoZmlsZSk7CiAgICAgfQorICAgIGRpZENob29zZUZpbGUoV2ViVmVjdG9yPFNlbGVjdGVk
RmlsZUluZm8+KGZpbGVzKSk7Cit9CisKK3ZvaWQgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1w
bDo6ZGlkQ2hvb3NlRmlsZShjb25zdCBXZWJWZWN0b3I8U2VsZWN0ZWRGaWxlSW5mbz4mIGZpbGVz
KQoreworICAgIFZlY3RvcjxXZWJDb3JlOjpGaWxlQ2hvb3NlckZpbGVJbmZvPiBmaWxlSW5mbzsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVzLnNpemUoKTsgKytpKQorICAgICAgICBm
aWxlSW5mby5hcHBlbmQoV2ViQ29yZTo6RmlsZUNob29zZXJGaWxlSW5mbyhmaWxlc1tpXS5wYXRo
LCBmaWxlc1tpXS5kaXNwbGF5TmFtZSkpOworICAgIG1fZmlsZUNob29zZXItPmNob29zZUZpbGVz
KGZpbGVJbmZvKTsKICAgICAvLyBUaGlzIG9iamVjdCBpcyBubyBsb25nZXIgbmVlZGVkLgogICAg
IGRlbGV0ZSB0aGlzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5oCmluZGV4IDA2YTA1NzdiMDk4YjM5Yjk5
YTUwY2RkZjU0NWVkYWY0OTRkNDhhMTMuLjNhYzYzYTVlODkzMTE1ZTNmZTNjNTUxNmIzYTYxYjM1
ZTZkMDllMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZpbGVD
aG9vc2VyQ29tcGxldGlvbkltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgog
ICAgIFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxl
Q2hvb3Nlcj4gY2hvb3Nlcik7CiAgICAgfldlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlRmlsZShjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5n
PiYgZmlsZU5hbWVzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlRmlsZShjb25zdCBXZWJW
ZWN0b3I8U2VsZWN0ZWRGaWxlSW5mbz4mIGZpbGVzKTsKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdl
YkNvcmU6OkZpbGVDaG9vc2VyPiBtX2ZpbGVDaG9vc2VyOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131546</attachid>
            <date>2012-03-12 22:28:51 -0700</date>
            <delta_ts>2012-03-12 22:49:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80719-20120313142847.patch</filename>
            <type>text/plain</type>
            <size>18446</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBlOTczYTRhZGE1MDZh
NmQ0Y2Y5Yzk3M2E5NGZlYTdlYjNkMDgyNC4uOTVmM2Q4NTM2YTMwNTUzMWQ0NTAxNGZmNzFhZTc0
Y2ViNDA1NTkxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAzLTA5ICBLaW51
a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBBbGxvdyBXZWJGaWxl
Q2hvb3NlciB0byByZXR1cm4gZXh0cmEgZmlsZSBpbmZvIChsaWtlIGRpc3BsYXlOYW1lKSBpbiBh
ZGRpdGlvbiB0byBtZXJlIGZpbGUgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgwNzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiB0aGlzIGNoYW5nZSBpdHNlbGYgc2hvdWxk
bid0IGNoYW5nZSBleGlzdGluZyBiZWhhdmlvci4KKworICAgICAgICAqIGZpbGVhcGkvRmlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoTmFtZSk6IFJl
bmFtZWQgZnJvbSBjcmVhdGVCbG9iRGF0YUZvckZpbGVTeXN0ZW1GaWxlLgorICAgICAgICAqIGZp
bGVhcGkvRmlsZS5oOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpzZXRGaWxlTGlzdCk6IENoYW5nZWQgdGhlIHNpZ25h
dHVyZSB0byB0YWtlCisgICAgICAgIEZpbGVDaG9vc2VyRmlsZUluZm8uCisgICAgICAgIChXZWJD
b3JlOjpGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbik6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZUlucHV0VHlwZTo6cmVjZWl2ZURyb3BwZWRGaWxlcyk6CisgICAgICAgICogaHRtbC9G
aWxlSW5wdXRUeXBlLmg6CisgICAgICAgIChGaWxlSW5wdXRUeXBlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9GaWxlQ2hvb3Nlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlQ2hvb3Nlcjo6Y2hv
b3NlRmlsZXMpOiBBZGRlZCBhbiBvdmVybG9hZGVkIG1ldGhvZCB0aGF0CisgICAgICAgIHRha2Vz
IEZpbGVDaG9vc2VyRmlsZUluZm8uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9GaWxlQ2hvb3Nlci5oOgorICAgICAgICAoRmlsZUNob29zZXJGaWxlSW5mbyk6IEFkZGVk
LgorCiAyMDEyLTAzLTEwICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAg
ICAgICAgIFNoYWRvd1RyZWUgdXNlcyB3ZWFrIGl0ZXJhdGlvbiBwYXR0ZXJucwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCAwYTAyM2JmZGY0NmQ3NjkyZWY1NzA1MWQ5ZGQ0YTRkYTEzZjVi
NzdiLi41ZTRjY2Q3NDVjZGM5YTljYjM3MjFiOWFjM2Y2ZjE5NWQyZDM1MzM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAzLTA5ICBLaW51a28gWWFz
dWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBBbGxvdyBXZWJGaWxlQ2hvb3Nl
ciB0byByZXR1cm4gZXh0cmEgZmlsZSBpbmZvIChsaWtlIGRpc3BsYXlOYW1lKSBpbiBhZGRpdGlv
biB0byBtZXJlIGZpbGUgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgwNzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uLmg6CisgICAgICAg
IChTZWxlY3RlZEZpbGVJbmZvKTogQWRkZWQuCisgICAgICAgIChXZWJGaWxlQ2hvb3NlckNvbXBs
ZXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb246OmRpZENo
b29zZUZpbGUpOiBBZGRlZCBhbiBvdmVybG9hZGVkCisgICAgICAgIG1ldGhvZCB0aGF0IHRha2Vz
IFNlbGVjdGVkRmlsZUluZm8uCisgICAgICAgICogc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlv
bkltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBs
OjpkaWRDaG9vc2VGaWxlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNy
Yy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmg6CisgICAgICAgIChXZWJGaWxlQ2hvb3Nl
ckNvbXBsZXRpb25JbXBsKToKKwogMjAxMi0wMy0xMCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEx
MDM2My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4IGQ0MDliOTcxOTMzNTk1MTllMzAwYTAz
Mjk0OTcwNGZhZWY1ZjNlODIuLjkwNTI5MWIyZGQ3NTkzZTVjNjA4MDk4NjE4NGY4YzQzZTE2ZTlm
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApAQCAtNTAsOCArNTAsNyBAQCBzdGF0aWMgUGFz
c093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCkKICAgICByZXR1cm4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aFR5cGUocGF0aCwgdHlwZSk7
CiB9CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi1zdGF0aWMgUGFzc093blB0cjxCbG9iRGF0
YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlU3lzdGVtRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgZmlsZVN5c3RlbU5hbWUpCitzdGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4g
Y3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aE5hbWUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIGZpbGVTeXN0ZW1OYW1lKQogewogICAgIFN0cmluZyB0eXBlOwogICAgIGludCBpbmRl
eCA9IGZpbGVTeXN0ZW1OYW1lLnJldmVyc2VGaW5kKCcuJyk7CkBAIC01OSw3ICs1OCw2IEBAIHN0
YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZpbGVTeXN0ZW1GaWxl
KGNvbnN0IFN0cmluZyYgcGF0aCwKICAgICAgICAgdHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6Omdl
dFdlbGxLbm93bk1JTUVUeXBlRm9yRXh0ZW5zaW9uKGZpbGVTeXN0ZW1OYW1lLnN1YnN0cmluZyhp
bmRleCArIDEpKTsKICAgICByZXR1cm4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aFR5cGUocGF0
aCwgdHlwZSk7CiB9Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQogUGFz
c1JlZlB0cjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpCkBAIC04NywxNCArODUsMTIgQEAgRmls
ZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB0eXBlKQogICAgIC8vIFNlZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGZvciBqcyBhbmQg
djguCiB9CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiBGaWxlOjpGaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lKQotICAgIDogQmxvYihjcmVhdGVCbG9iRGF0YUZv
ckZpbGVTeXN0ZW1GaWxlKHBhdGgsIG5hbWUpLCAtMSkKKyAgICA6IEJsb2IoY3JlYXRlQmxvYkRh
dGFGb3JGaWxlV2l0aE5hbWUocGF0aCwgbmFtZSksIC0xKQogICAgICwgbV9wYXRoKHBhdGgpCiAg
ICAgLCBtX25hbWUobmFtZSkKIHsKIH0KLSNlbmRpZgogCiBkb3VibGUgRmlsZTo6bGFzdE1vZGlm
aWVkRGF0ZSgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCmluZGV4IDEzYTkxZmUzZTQxZjk1
ZmI5YjIzYWNkNmIwZWViZGMxNTQ0M2Q0ZTMuLmU2YWQyYTk4MmMxMmM4ZmExY2E3YTRmY2QzMmU1
MjBkNGJhZDY4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCkBAIC01MiwxMyArNTIsMTMgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCk7CiAjZW5kaWYK
IAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICAvLyBDcmVhdGUgYSBmaWxlIHdpdGggYSBu
YW1lIGV4cG9zZWQgdG8gdGhlIGF1dGhvciAodmlhIEZpbGUubmFtZSBhbmQgYXNzb2NpYXRlZCBE
T00gcHJvcGVydGllcykgdGhhdCBkaWZmZXJzIGZyb20gdGhlIG9uZSBwcm92aWRlZCBpbiB0aGUg
cGF0aC4KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVhdGVXaXRoTmFtZShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB7CisgICAgICAgIGlmIChuYW1l
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZShwYXRoKSk7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZShwYXRoLCBuYW1lKSk7CiAgICAgfQot
I2VuZGlmCiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIGlzRmlsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTgzLDEw
ICs4Myw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBGb3IgZGVzZXJpYWxpemF0aW9uLgogICAgIEZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBLVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYg
dHlwZSk7Ci0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0jZW5kaWYKIAogICAgIFN0cmluZyBtX3BhdGg7
CiAgICAgU3RyaW5nIG1fbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmlu
ZGV4IDljYjM5YjY2N2Q5NzQxZmZiYWE2MGY0MjcxMDEzOWE4N2Y5YjA2YmUuLmQzNjEyNGEwNjM4
MTQ2ZjIwYTQzZjczYWM5N2UyYjU0ZGM5NzdjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5w
dXRUeXBlLmNwcApAQCAtMTA3LDYgKzEwNyw4IEBAIGJvb2wgRmlsZUlucHV0VHlwZTo6c2F2ZUZv
cm1Db250cm9sU3RhdGUoU3RyaW5nJiByZXN1bHQpIGNvbnN0CiAgICAgdW5zaWduZWQgbnVtRmls
ZXMgPSBtX2ZpbGVMaXN0LT5sZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtRmlsZXM7ICsraSkgewogICAgICAgICByZXN1bHQuYXBwZW5kKG1fZmlsZUxpc3QtPml0ZW0o
aSktPnBhdGgoKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIlx4RkZceEZFIik7CisgICAgICAg
IHJlc3VsdC5hcHBlbmQobV9maWxlTGlzdC0+aXRlbShpKS0+bmFtZSgpKTsKICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnXDAnKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTQsOCArMTE2
LDE2IEBAIGJvb2wgRmlsZUlucHV0VHlwZTo6c2F2ZUZvcm1Db250cm9sU3RhdGUoU3RyaW5nJiBy
ZXN1bHQpIGNvbnN0CiAKIHZvaWQgRmlsZUlucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3Rh
dGUoY29uc3QgU3RyaW5nJiBzdGF0ZSkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBmaWxlczsKLSAg
ICBzdGF0ZS5zcGxpdCgnXDAnLCBmaWxlcyk7CisgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUlu
Zm8+IGZpbGVzOworICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOworICAgIHN0YXRlLnNwbGl0KCdc
MCcsIHBhdGhzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aHMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF0aEFuZE5hbWU7CisgICAgICAgIHBhdGhz
W2ldLnNwbGl0KCJceEZGXHhGRSIsIHBhdGhBbmROYW1lKTsKKyAgICAgICAgaWYgKHBhdGhBbmRO
YW1lLnNpemUoKSA+IDEpCisgICAgICAgICAgICBmaWxlcy5hcHBlbmQoRmlsZUNob29zZXJGaWxl
SW5mbyhwYXRoQW5kTmFtZVswXSwgcGF0aEFuZE5hbWVbMV0pKTsKKyAgICAgICAgZmlsZXMuYXBw
ZW5kKEZpbGVDaG9vc2VyRmlsZUluZm8ocGF0aHNbaV0pKTsKKyAgICB9CiAgICAgZmlsZXNDaG9z
ZW4oZmlsZXMpOwogfQogCkBAIC0yNDAsMTAgKzI1MCwxMCBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6
OnNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpCiAg
ICAgZWxlbWVudCgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9CiAKLXZvaWQgRmlsZUlucHV0
VHlwZTo6c2V0RmlsZUxpc3QoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQordm9pZCBGaWxl
SW5wdXRUeXBlOjpzZXRGaWxlTGlzdChjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4m
IGZpbGVzKQogewogICAgIG1fZmlsZUxpc3QtPmNsZWFyKCk7Ci0gICAgc2l6ZV90IHNpemUgPSBw
YXRocy5zaXplKCk7CisgICAgc2l6ZV90IHNpemUgPSBmaWxlcy5zaXplKCk7CiAKICNpZiBFTkFC
TEUoRElSRUNUT1JZX1VQTE9BRCkKICAgICAvLyBJZiBhIGRpcmVjdG9yeSBpcyBiZWluZyBzZWxl
Y3RlZCwgdGhlIFVJIGFsbG93cyBhIGRpcmVjdG9yeSB0byBiZSBjaG9zZW4KQEAgLTI1MSw5ICsy
NjEsOSBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnNldEZpbGVMaXN0KGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXRocykKICAgICAvLyB3ZSB3YW50IHRvIHN0b3JlIG9ubHkgdGhlIHJlbGF0aXZlIHBh
dGhzIGZyb20gdGhhdCBwb2ludC4KICAgICBpZiAoc2l6ZSAmJiBlbGVtZW50KCktPmZhc3RIYXNB
dHRyaWJ1dGUod2Via2l0ZGlyZWN0b3J5QXR0cikpIHsKICAgICAgICAgLy8gRmluZCB0aGUgY29t
bW9uIHJvb3QgcGF0aC4KLSAgICAgICAgU3RyaW5nIHJvb3RQYXRoID0gZGlyZWN0b3J5TmFtZShw
YXRoc1swXSk7CisgICAgICAgIFN0cmluZyByb290UGF0aCA9IGRpcmVjdG9yeU5hbWUoZmlsZXNb
MF0ucGF0aCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgc2l6ZTsgaSsrKSB7Ci0g
ICAgICAgICAgICB3aGlsZSAoIXBhdGhzW2ldLnN0YXJ0c1dpdGgocm9vdFBhdGgpKQorICAgICAg
ICAgICAgd2hpbGUgKCFmaWxlc1tpXS5wYXRoLnN0YXJ0c1dpdGgocm9vdFBhdGgpKQogICAgICAg
ICAgICAgICAgIHJvb3RQYXRoID0gZGlyZWN0b3J5TmFtZShyb290UGF0aCk7CiAgICAgICAgIH0K
ICAgICAgICAgcm9vdFBhdGggPSBkaXJlY3RvcnlOYW1lKHJvb3RQYXRoKTsKQEAgLTI2MywxNSAr
MjczLDE1IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6c2V0RmlsZUxpc3QoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhdGhzKQogICAgICAgICAgICAgcm9vdExlbmd0aCArPSAxOwogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICAgICAgLy8gTm9ybWFsaXpl
IGJhY2tzbGFzaGVzIHRvIHNsYXNoZXMgYmVmb3JlIGV4cG9zaW5nIHRoZSByZWxhdGl2ZSBwYXRo
IHRvIHNjcmlwdC4KLSAgICAgICAgICAgIFN0cmluZyByZWxhdGl2ZVBhdGggPSBwYXRoc1tpXS5z
dWJzdHJpbmcocm9vdExlbmd0aCkucmVwbGFjZSgnXFwnLCAnLycpOwotICAgICAgICAgICAgbV9m
aWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgocGF0aHNbaV0sIHJl
bGF0aXZlUGF0aCkpOworICAgICAgICAgICAgU3RyaW5nIHJlbGF0aXZlUGF0aCA9IGZpbGVzW2ld
LnBhdGguc3Vic3RyaW5nKHJvb3RMZW5ndGgpLnJlcGxhY2UoJ1xcJywgJy8nKTsKKyAgICAgICAg
ICAgIG1fZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGZpbGVz
W2ldLnBhdGgsIHJlbGF0aXZlUGF0aCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAjZW5kaWYKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQotICAg
ICAgICBtX2ZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHBhdGhzW2ldKSk7CisgICAgICAg
IG1fZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGVXaXRoTmFtZShmaWxlc1tpXS5wYXRoLCBm
aWxlc1tpXS5kaXNwbGF5TmFtZSkpOwogfQogCiBib29sIEZpbGVJbnB1dFR5cGU6OmlzRmlsZVVw
bG9hZCgpIGNvbnN0CkBAIC0zMDMsMjggKzMxMywzMSBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnJl
cXVlc3RJY29uKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKICAgICAgICAgY2hyb21lLT5s
b2FkSWNvbkZvckZpbGVzKHBhdGhzLCBuZXdGaWxlSWNvbkxvYWRlcigpKTsKIH0KIAotdm9pZCBG
aWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCit2
b2lkIEZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZp
bGVJbmZvPiYgZmlsZXMpCiB7CiAgICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IGlucHV0ID0g
ZWxlbWVudCgpOwogCiAgICAgYm9vbCBwYXRoc0NoYW5nZWQgPSBmYWxzZTsKLSAgICBpZiAocGF0
aHMuc2l6ZSgpICE9IG1fZmlsZUxpc3QtPmxlbmd0aCgpKQorICAgIGlmIChmaWxlcy5zaXplKCkg
IT0gbV9maWxlTGlzdC0+bGVuZ3RoKCkpCiAgICAgICAgIHBhdGhzQ2hhbmdlZCA9IHRydWU7CiAg
ICAgZWxzZSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRocy5zaXplKCk7
ICsraSkgewotICAgICAgICAgICAgaWYgKHBhdGhzW2ldICE9IG1fZmlsZUxpc3QtPml0ZW0oaSkt
PnBhdGgoKSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmlsZXMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgICAgIGlmIChmaWxlc1tpXS5wYXRoICE9IG1fZmlsZUxpc3QtPml0
ZW0oaSktPnBhdGgoKSkgewogICAgICAgICAgICAgICAgIHBhdGhzQ2hhbmdlZCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBzZXRGaWxlTGlzdChwYXRocyk7CisgICAgc2V0RmlsZUxpc3QoZmlsZXMpOwogCiAgICAg
aW5wdXQtPnNldEZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIodHJ1ZSk7CiAgICAgaW5w
dXQtPm5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQoKTsKICAgICBpbnB1dC0+c2V0TmVlZHNWYWxpZGl0
eUNoZWNrKCk7CiAKKyAgICBWZWN0b3I8U3RyaW5nPiBwYXRoczsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZmlsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHBhdGhzLmFwcGVuZChmaWxl
c1tpXS5wYXRoKTsKICAgICByZXF1ZXN0SWNvbihwYXRocyk7CiAKICAgICBpZiAoaW5wdXQtPnJl
bmRlcmVyKCkpCkBAIC0zNzMsMTIgKzM4NiwxNiBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnJlY2Vp
dmVEcm9wcGVkRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQogICAgIH0KICNlbmRp
ZgogCisgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZpbGVzOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBwYXRocy5zaXplKCk7ICsraSkKKyAgICAgICAgZmlsZXMuYXBwZW5k
KEZpbGVDaG9vc2VyRmlsZUluZm8ocGF0aHNbaV0pKTsKKwogICAgIGlmIChpbnB1dC0+ZmFzdEhh
c0F0dHJpYnV0ZShtdWx0aXBsZUF0dHIpKQotICAgICAgICBmaWxlc0Nob3NlbihwYXRocyk7Cisg
ICAgICAgIGZpbGVzQ2hvc2VuKGZpbGVzKTsKICAgICBlbHNlIHsKLSAgICAgICAgVmVjdG9yPFN0
cmluZz4gZmlyc3RQYXRoT25seTsKLSAgICAgICAgZmlyc3RQYXRoT25seS5hcHBlbmQocGF0aHNb
MF0pOwotICAgICAgICBmaWxlc0Nob3NlbihmaXJzdFBhdGhPbmx5KTsKKyAgICAgICAgVmVjdG9y
PEZpbGVDaG9vc2VyRmlsZUluZm8+IGZpcnN0RmlsZU9ubHk7CisgICAgICAgIGZpcnN0RmlsZU9u
bHkuYXBwZW5kKGZpbGVzWzBdKTsKKyAgICAgICAgZmlsZXNDaG9zZW4oZmlyc3RGaWxlT25seSk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCmluZGV4IDAwZDM2MmJk
YTkwNTg4NTczNzZhZTE1ZDVjMjljOGI2YTI3OWNjNzkuLmJkNmEwMGE2N2ZjODJhYjBmZDcyODcw
YTI2ZjMyNWJjZmVlNmViYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlu
cHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCkBAIC02
OSwxMiArNjksMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyBkZWZhdWx0VG9vbFRp
cCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8gRmlsZUNob29zZXJDbGllbnQgaW1wbGVtZW50
YXRpb24uCi0gICAgdmlydHVhbCB2b2lkIGZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxG
aWxlQ2hvb3NlckZpbGVJbmZvPiYpIE9WRVJSSURFOwogCiAgICAgLy8gRmlsZUljb25Mb2FkZXJD
bGllbnQgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlbmRlcmluZyhQ
YXNzUmVmUHRyPEljb24+KSBPVkVSUklERTsKIAotICAgIHZvaWQgc2V0RmlsZUxpc3QoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhdGhzKTsKKyAgICB2b2lkIHNldEZpbGVMaXN0KGNvbnN0IFZlY3Rv
cjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYpOwogI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQog
ICAgIHZvaWQgcmVjZWl2ZURyb3BGb3JEaXJlY3RvcnlVcGxvYWQoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNo
b29zZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCmluZGV4
IGE5NzkyYWE2YWY1N2I1MmZmZmVmNTY3YmI0Y2JlZWMzNmM3MTFiOTMuLjUwZTRjNjAxMWU1NTEz
NTA0Nzg4MmNlMzAyNDI1MGZmZmQyYzQxODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxl
Q2hvb3Nlci5jcHAKQEAgLTc4LDggKzc4LDI1IEBAIHZvaWQgRmlsZUNob29zZXI6OmNob29zZUZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCiAgICAgaWYgKG1fc2V0dGluZ3Mu
c2VsZWN0ZWRGaWxlcyA9PSBmaWxlbmFtZXMpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICht
X2NsaWVudCkgeworICAgICAgICBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4gZmlsZXM7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmaWxlbmFtZXMuc2l6ZSgpOyArK2kpCisg
ICAgICAgICAgICBmaWxlcy5hcHBlbmQoRmlsZUNob29zZXJGaWxlSW5mbyhmaWxlbmFtZXNbaV0p
KTsKKyAgICAgICAgbV9jbGllbnQtPmZpbGVzQ2hvc2VuKGZpbGVzKTsKKyAgICB9Cit9CisKK3Zv
aWQgRmlsZUNob29zZXI6OmNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJ
bmZvPiYgZmlsZXMpCit7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lbGVnYW50LiBXZSBzaG91
bGQgbm90IGJlIGxvb2tpbmcgYXQgc2V0dGluZ3MgaGVyZS4KKyAgICBWZWN0b3I8U3RyaW5nPiBw
YXRoczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmlsZXMuc2l6ZSgpOyArK2kpCisg
ICAgICAgIHBhdGhzLmFwcGVuZChmaWxlc1tpXS5wYXRoKTsKKyAgICBpZiAobV9zZXR0aW5ncy5z
ZWxlY3RlZEZpbGVzID09IHBhdGhzKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAobV9jbGll
bnQpCi0gICAgICAgIG1fY2xpZW50LT5maWxlc0Nob3NlbihmaWxlbmFtZXMpOworICAgICAgICBt
X2NsaWVudC0+ZmlsZXNDaG9zZW4oZmlsZXMpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZUNob29zZXIuaAppbmRleCBjYzIwYmUyODFiODQyNGNiZWJlMDE1YTcyN2E1NGY4NmIwZTNl
YTMxLi4yNGE4NGU0Mzc5OGViN2MzNjg1NGZlNWU5MTM1ZWM2NGM1NDhlZWE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKQEAgLTM4LDYgKzM4LDE3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRmlsZUNob29zZXI7CiAKK3N0cnVjdCBGaWxlQ2hvb3NlckZpbGVJ
bmZvIHsKKyAgICBGaWxlQ2hvb3NlckZpbGVJbmZvKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBkaXNwbGF5TmFtZSA9IFN0cmluZygpKQorICAgICAgICA6IHBhdGgocGF0aCkKKyAg
ICAgICAgLCBkaXNwbGF5TmFtZShkaXNwbGF5TmFtZSkKKyAgICB7CisgICAgfQorCisgICAgY29u
c3QgU3RyaW5nIHBhdGg7CisgICAgY29uc3QgU3RyaW5nIGRpc3BsYXlOYW1lOworfTsKKwogc3Ry
dWN0IEZpbGVDaG9vc2VyU2V0dGluZ3MgewogICAgIGJvb2wgYWxsb3dzTXVsdGlwbGVGaWxlczsK
ICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKQEAgLTQ5LDcgKzYwLDcgQEAgc3RydWN0IEZp
bGVDaG9vc2VyU2V0dGluZ3MgewogCiBjbGFzcyBGaWxlQ2hvb3NlckNsaWVudCB7CiBwdWJsaWM6
Ci0gICAgdmlydHVhbCB2b2lkIGZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJG
aWxlSW5mbz4mKSA9IDA7CiAgICAgdmlydHVhbCB+RmlsZUNob29zZXJDbGllbnQoKTsKIAogcHJv
dGVjdGVkOgpAQCAtNjgsOCArNzksMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaXNjb25uZWN0
Q2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KIAotICAgIHZvaWQgY2hvb3NlRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgpOwotICAgIHZvaWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhdGhzKTsKKyAgICB2b2lkIGNob29zZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSk7Cisg
ICAgdm9pZCBjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKTsKKwor
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkganVzdCBwYXNzIGZpbGUgcGF0aHMgdGhh
dCBjb3VsZCBiZSB2aXJ0dWFsIHBhdGhzIHdpdGggcHJvcGVyIGRpc3BsYXkgbmFtZXMgcmF0aGVy
IHRoYW4gcGFzc2luZyBzdHJ1Y3RzLgorICAgIHZvaWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9y
PEZpbGVDaG9vc2VyRmlsZUluZm8+JiBmaWxlcyk7CiAKICAgICBjb25zdCBGaWxlQ2hvb3NlclNl
dHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCmluZGV4IGQyYzM3NTIxNGExYTg0
MDA0MWUxYzZkNWRiNzQ3MGZiNmE1MTRmMmMuLjdmYTZkYjZkN2M0NTllZGE3NmY0OTRjZDQ1NGM3
YjYzMzA2MTcwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5
LmgKQEAgLTM2LDkgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTUlNRVR5cGVS
ZWdpc3RyeSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBnZXRNSU1FVHlwZUZvckV4dGVu
c2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbik7Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQog
ICAgIHN0YXRpYyBTdHJpbmcgZ2V0V2VsbEtub3duTUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3Qg
U3RyaW5nJiBleHRlbnNpb24pOwotI2VuZGlmCiAKICAgICBzdGF0aWMgVmVjdG9yPFN0cmluZz4g
Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgc3RhdGlj
IFN0cmluZyBnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUNo
b29zZXJDb21wbGV0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxl
Q2hvb3NlckNvbXBsZXRpb24uaAppbmRleCAxNGJhY2U0YzJkYjNiOTE1NjEyMWVkMWI2ZjcyM2Ri
ODVjYWNmODMwLi45YjAxZDBlNDEwMzk3YzQ4NDA2ZTA1M2E4MGI0MWQyMzcxZmNjYzkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlQ2hvb3NlckNvbXBs
ZXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlQ2hvb3Nl
ckNvbXBsZXRpb24uaApAQCAtMzEsMTggKzMxLDM2IEBACiAjaWZuZGVmIFdlYkZpbGVDaG9vc2Vy
Q29tcGxldGlvbl9oCiAjZGVmaW5lIFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbl9oCiAKKyNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNz
IFdlYlN0cmluZzsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWJWZWN0b3I7CiAKIC8v
IEdldHMgY2FsbGVkIGJhY2sgd2hlbiBXZWJWaWV3Q2xpZW50IGZpbmlzaGVkIGNob29zaW5nIGEg
ZmlsZS4KIGNsYXNzIFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbiB7CiBwdWJsaWM6CisgICAgc3Ry
dWN0IFNlbGVjdGVkRmlsZUluZm8geworICAgICAgICAvLyBUaGUgYWN0dWFsIHBhdGggb2YgdGhl
IHNlbGVjdGVkIGZpbGUuCisgICAgICAgIFdlYlN0cmluZyBwYXRoOworCisgICAgICAgIC8vIFRo
ZSBkaXNwbGF5IG5hbWUgb2YgdGhlIGZpbGUgdGhhdCBpcyB0byBiZSBleHBvc2VkIGFzIEZpbGUu
bmFtZSBpbgorICAgICAgICAvLyB0aGUgRE9NIGxheWVyLiBJZiBpdCBpcyBlbXB0eSB0aGUgYmFz
ZSBwYXJ0IG9mIHRoZSB8cGF0aHwgaXMgdXNlZC4KKyAgICAgICAgV2ViU3RyaW5nIGRpc3BsYXlO
YW1lOworICAgIH07CisKICAgICAvLyBDYWxsZWQgd2l0aCB6ZXJvIG9yIG1vcmUgZmlsZSBuYW1l
cy4gWmVyby1sZW5ndGhlZCB2ZWN0b3IgbWVhbnMgdGhhdAogICAgIC8vIHRoZSB1c2VyIGNhbmNl
bGxlZCBvciB0aGF0IGZpbGUgY2hvb3NpbmcgZmFpbGVkLiBUaGUgY2FsbGJhY2sgaW5zdGFuY2UK
ICAgICAvLyBpcyBkZXN0cm95ZWQgd2hlbiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQuCiAgICAgdmly
dHVhbCB2b2lkIGRpZENob29zZUZpbGUoY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGZpbGVO
YW1lcykgPSAwOworCisgICAgLy8gQ2FsbGVkIHdpdGggemVybyBvciBtb3JlIGZpbGVzLCBnaXZl
biBhcyBhIHZlY3RvciBvZiBTZWxlY3RlZEZpbGVJbmZvLgorICAgIC8vIFplcm8tbGVuZ3RoZWQg
dmVjdG9yIG1lYW5zIHRoYXQgdGhlIHVzZXIgY2FuY2VsbGVkIG9yIHRoYXQgZmlsZQorICAgIC8v
IGNob29zaW5nIGZhaWxlZC4gVGhlIGNhbGxiYWNrIGluc3RhbmNlIGlzIGRlc3Ryb3llZCB3aGVu
IHRoaXMgbWV0aG9kCisgICAgLy8gaXMgY2FsbGVkLgorICAgIC8vIEZJWE1FOiBEZXByZWNhdGUg
ZWl0aGVyIG9uZSBvZiB0aGUgZGlkQ2hvb3NlRmlsZSAoYW5kIHJlbmFtZSBpdCB0bworICAgIC8v
IGRpZENob29zZUZpbGUqcyopLgorICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VGaWxlKGNvbnN0
IFdlYlZlY3RvcjxTZWxlY3RlZEZpbGVJbmZvPiYpIHsgfQogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgfldlYkZpbGVDaG9vc2VyQ29tcGxldGlvbigpIHt9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmNw
cAppbmRleCBkNzU4M2M1ZGRhNmMwMmJlYWM0Nzc4YTQxYWQ2MTAyYTFkNGQ5ZjYyLi43MzQ1MmQw
ZDA0OGNhMzgwZTUwZGU1YTZmMjdjZDliODQ3N2FlODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmNw
cApAQCAtNDQsMTQgKzQ0LDIwIEBAIFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGw6On5XZWJG
aWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsKCkKIAogdm9pZCBXZWJGaWxlQ2hvb3NlckNvbXBsZXRp
b25JbXBsOjpkaWRDaG9vc2VGaWxlKGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBmaWxlTmFt
ZXMpCiB7Ci0gICAgaWYgKGZpbGVOYW1lcy5zaXplKCkgPT0gMSkKLSAgICAgICAgbV9maWxlQ2hv
b3Nlci0+Y2hvb3NlRmlsZShmaWxlTmFtZXNbMF0pOwotICAgIGVsc2UgaWYgKGZpbGVOYW1lcy5z
aXplKCkgPiAwKSB7Ci0gICAgICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gcGF0aHM7Ci0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZU5hbWVzLnNpemUoKTsgKytpKQotICAgICAgICAg
ICAgcGF0aHMuYXBwZW5kKGZpbGVOYW1lc1tpXSk7Ci0gICAgICAgIG1fZmlsZUNob29zZXItPmNo
b29zZUZpbGVzKHBhdGhzKTsKLSAgICB9CisgICAgVmVjdG9yPFdlYkNvcmU6OkZpbGVDaG9vc2Vy
RmlsZUluZm8+IGZpbGVJbmZvOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZU5hbWVz
LnNpemUoKTsgKytpKQorICAgICAgICBmaWxlSW5mby5hcHBlbmQoV2ViQ29yZTo6RmlsZUNob29z
ZXJGaWxlSW5mbyhmaWxlTmFtZXNbaV0pKTsKKyAgICBtX2ZpbGVDaG9vc2VyLT5jaG9vc2VGaWxl
cyhmaWxlSW5mbyk7CisgICAgLy8gVGhpcyBvYmplY3QgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KKyAg
ICBkZWxldGUgdGhpczsKK30KKwordm9pZCBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsOjpk
aWRDaG9vc2VGaWxlKGNvbnN0IFdlYlZlY3RvcjxTZWxlY3RlZEZpbGVJbmZvPiYgZmlsZXMpCit7
CisgICAgVmVjdG9yPFdlYkNvcmU6OkZpbGVDaG9vc2VyRmlsZUluZm8+IGZpbGVJbmZvOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIGZpbGVJ
bmZvLmFwcGVuZChXZWJDb3JlOjpGaWxlQ2hvb3NlckZpbGVJbmZvKGZpbGVzW2ldLnBhdGgsIGZp
bGVzW2ldLmRpc3BsYXlOYW1lKSk7CisgICAgbV9maWxlQ2hvb3Nlci0+Y2hvb3NlRmlsZXMoZmls
ZUluZm8pOwogICAgIC8vIFRoaXMgb2JqZWN0IGlzIG5vIGxvbmdlciBuZWVkZWQuCiAgICAgZGVs
ZXRlIHRoaXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
aWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmgKaW5kZXggMDZhMDU3N2IwOThiMzliOTlhNTBj
ZGRmNTQ1ZWRhZjQ5NGQ0OGExMy4uM2FjNjNhNWU4OTMxMTVlM2ZlM2M1NTE2YjNhNjFiMzVlNmQw
OWUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZUNob29z
ZXJDb21wbGV0aW9uSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZp
bGVDaG9vc2VyQ29tcGxldGlvbkltcGwuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAg
V2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9v
c2VyPiBjaG9vc2VyKTsKICAgICB+V2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbCgpOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VGaWxlKGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBm
aWxlTmFtZXMpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VGaWxlKGNvbnN0IFdlYlZlY3Rv
cjxTZWxlY3RlZEZpbGVJbmZvPiYgZmlsZXMpOwogcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29y
ZTo6RmlsZUNob29zZXI+IG1fZmlsZUNob29zZXI7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131549</attachid>
            <date>2012-03-12 22:49:31 -0700</date>
            <delta_ts>2012-03-12 23:28:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80719-20120313144930.patch</filename>
            <type>text/plain</type>
            <size>19816</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBlOTczYTRhZGE1MDZh
NmQ0Y2Y5Yzk3M2E5NGZlYTdlYjNkMDgyNC4uNzQ4MWU4NjhkMzY2ZDQ3NDFhZDlhZmMwOThjZmQ5
MWY2NTY5MWYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAzLTA5ICBLaW51
a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBBbGxvdyBXZWJGaWxl
Q2hvb3NlciB0byByZXR1cm4gZXh0cmEgZmlsZSBpbmZvIChsaWtlIGRpc3BsYXlOYW1lKSBpbiBh
ZGRpdGlvbiB0byBtZXJlIGZpbGUgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgwNzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiB0aGlzIGNoYW5nZSBpdHNlbGYgc2hvdWxk
bid0IGNoYW5nZSBleGlzdGluZyBiZWhhdmlvci4KKworICAgICAgICAqIGZpbGVhcGkvRmlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoTmFtZSk6IFJl
bmFtZWQgZnJvbSBjcmVhdGVCbG9iRGF0YUZvckZpbGVTeXN0ZW1GaWxlLgorICAgICAgICAqIGZp
bGVhcGkvRmlsZS5oOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpzYXZlRm9ybUNvbnRyb2xTdGF0ZSk6IFVwZGF0ZWQg
dG8gaGFuZGxlIEZpbGUubmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OnJl
c3RvcmVGb3JtQ29udHJvbFN0YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5w
dXRUeXBlOjpzZXRGaWxlTGlzdCk6IENoYW5nZWQgdGhlIHNpZ25hdHVyZSB0byB0YWtlCisgICAg
ICAgIEZpbGVDaG9vc2VyRmlsZUluZm8uCisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBl
OjpmaWxlc0Nob3Nlbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6
cmVjZWl2ZURyb3BwZWRGaWxlcyk6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmg6Cisg
ICAgICAgIChGaWxlSW5wdXRUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMpOiBBZGRlZCBh
biBvdmVybG9hZGVkIG1ldGhvZCB0aGF0CisgICAgICAgIHRha2VzIEZpbGVDaG9vc2VyRmlsZUlu
Zm8uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5o
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJGaWxlSW5mbzo6RmlsZUNob29zZXJGaWxl
SW5mbyk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0V2VsbEtub3duTUlNRVR5cGVG
b3JFeHRlbnNpb24pOiBSZW1vdmVkIHN1cnJvdW9uZGluZyBpZmRlZnMgYXMgdGhpcyBmdW5jdGlv
biBpcyBub3cgdXNlZCBldmVuIGlmIEZJTEVfU1lTVEVNIGlzIG5vdCBlbmFibGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKyAgICAgICAgKE1JTUVUeXBlUmVnaXN0
cnkpOgorCiAyMDEyLTAzLTEwICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgog
CiAgICAgICAgIFNoYWRvd1RyZWUgdXNlcyB3ZWFrIGl0ZXJhdGlvbiBwYXR0ZXJucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAwYTAyM2JmZGY0NmQ3NjkyZWY1NzA1MWQ5ZGQ0YTRkYTEz
ZjViNzdiLi41ZTRjY2Q3NDVjZGM5YTljYjM3MjFiOWFjM2Y2ZjE5NWQyZDM1MzM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAzLTA5ICBLaW51a28g
WWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBBbGxvdyBXZWJGaWxlQ2hv
b3NlciB0byByZXR1cm4gZXh0cmEgZmlsZSBpbmZvIChsaWtlIGRpc3BsYXlOYW1lKSBpbiBhZGRp
dGlvbiB0byBtZXJlIGZpbGUgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgwNzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uLmg6CisgICAg
ICAgIChTZWxlY3RlZEZpbGVJbmZvKTogQWRkZWQuCisgICAgICAgIChXZWJGaWxlQ2hvb3NlckNv
bXBsZXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb246OmRp
ZENob29zZUZpbGUpOiBBZGRlZCBhbiBvdmVybG9hZGVkCisgICAgICAgIG1ldGhvZCB0aGF0IHRh
a2VzIFNlbGVjdGVkRmlsZUluZm8uCisgICAgICAgICogc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxl
dGlvbkltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25J
bXBsOjpkaWRDaG9vc2VGaWxlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IHNyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmg6CisgICAgICAgIChXZWJGaWxlQ2hv
b3NlckNvbXBsZXRpb25JbXBsKToKKwogMjAxMi0wMy0xMCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjExMDM2My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4IGQ0MDliOTcxOTMzNTk1MTllMzAw
YTAzMjk0OTcwNGZhZWY1ZjNlODIuLjkwNTI5MWIyZGQ3NTkzZTVjNjA4MDk4NjE4NGY4YzQzZTE2
ZTlmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApAQCAtNTAsOCArNTAsNyBAQCBzdGF0aWMg
UGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCkKICAgICByZXR1cm4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aFR5cGUocGF0aCwgdHlw
ZSk7CiB9CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi1zdGF0aWMgUGFzc093blB0cjxCbG9i
RGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlU3lzdGVtRmlsZShjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgZmlsZVN5c3RlbU5hbWUpCitzdGF0aWMgUGFzc093blB0cjxCbG9iRGF0
YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aE5hbWUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIGZpbGVTeXN0ZW1OYW1lKQogewogICAgIFN0cmluZyB0eXBlOwogICAgIGludCBp
bmRleCA9IGZpbGVTeXN0ZW1OYW1lLnJldmVyc2VGaW5kKCcuJyk7CkBAIC01OSw3ICs1OCw2IEBA
IHN0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZpbGVTeXN0ZW1G
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCwKICAgICAgICAgdHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6
OmdldFdlbGxLbm93bk1JTUVUeXBlRm9yRXh0ZW5zaW9uKGZpbGVTeXN0ZW1OYW1lLnN1YnN0cmlu
ZyhpbmRleCArIDEpKTsKICAgICByZXR1cm4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aFR5cGUo
cGF0aCwgdHlwZSk7CiB9Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQog
UGFzc1JlZlB0cjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpCkBAIC04NywxNCArODUsMTIgQEAg
RmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB0eXBlKQogICAgIC8vIFNlZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGZvciBqcyBh
bmQgdjguCiB9CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiBGaWxlOjpGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lKQotICAgIDogQmxvYihjcmVhdGVCbG9iRGF0
YUZvckZpbGVTeXN0ZW1GaWxlKHBhdGgsIG5hbWUpLCAtMSkKKyAgICA6IEJsb2IoY3JlYXRlQmxv
YkRhdGFGb3JGaWxlV2l0aE5hbWUocGF0aCwgbmFtZSksIC0xKQogICAgICwgbV9wYXRoKHBhdGgp
CiAgICAgLCBtX25hbWUobmFtZSkKIHsKIH0KLSNlbmRpZgogCiBkb3VibGUgRmlsZTo6bGFzdE1v
ZGlmaWVkRGF0ZSgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCmluZGV4IDEzYTkxZmUzZTQx
Zjk1ZmI5YjIzYWNkNmIwZWViZGMxNTQ0M2Q0ZTMuLmU2YWQyYTk4MmMxMmM4ZmExY2E3YTRmY2Qz
MmU1MjBkNGJhZDY4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCkBAIC01MiwxMyArNTIsMTMgQEAg
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZVdpdGhSZWxhdGl2ZVBh
dGgoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCk7CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICAvLyBDcmVhdGUgYSBmaWxlIHdpdGgg
YSBuYW1lIGV4cG9zZWQgdG8gdGhlIGF1dGhvciAodmlhIEZpbGUubmFtZSBhbmQgYXNzb2NpYXRl
ZCBET00gcHJvcGVydGllcykgdGhhdCBkaWZmZXJzIGZyb20gdGhlIG9uZSBwcm92aWRlZCBpbiB0
aGUgcGF0aC4KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVhdGVXaXRoTmFtZShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB7CisgICAgICAgIGlmIChu
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZShwYXRo
KSk7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZShwYXRoLCBuYW1lKSk7CiAgICAg
fQotI2VuZGlmCiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBib29sIGlzRmlsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTgz
LDEwICs4Myw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBGb3IgZGVzZXJpYWxpemF0aW9uLgogICAg
IEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBLVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmlu
ZyYgdHlwZSk7Ci0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgRmlsZShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0jZW5kaWYKIAogICAgIFN0cmluZyBtX3Bh
dGg7CiAgICAgU3RyaW5nIG1fbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3Bw
CmluZGV4IDljYjM5YjY2N2Q5NzQxZmZiYWE2MGY0MjcxMDEzOWE4N2Y5YjA2YmUuLmI3NDFiNzBh
NzA2NDcyZjViNDkyY2VhMTNlNjg2ZThiYjNjOGJmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxl
SW5wdXRUeXBlLmNwcApAQCAtMTA3LDYgKzEwNyw4IEBAIGJvb2wgRmlsZUlucHV0VHlwZTo6c2F2
ZUZvcm1Db250cm9sU3RhdGUoU3RyaW5nJiByZXN1bHQpIGNvbnN0CiAgICAgdW5zaWduZWQgbnVt
RmlsZXMgPSBtX2ZpbGVMaXN0LT5sZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtRmlsZXM7ICsraSkgewogICAgICAgICByZXN1bHQuYXBwZW5kKG1fZmlsZUxpc3QtPml0
ZW0oaSktPnBhdGgoKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIlx4RkZceEZFIik7CisgICAg
ICAgIHJlc3VsdC5hcHBlbmQobV9maWxlTGlzdC0+aXRlbShpKS0+bmFtZSgpKTsKICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnXDAnKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTQsOCAr
MTE2LDE3IEBAIGJvb2wgRmlsZUlucHV0VHlwZTo6c2F2ZUZvcm1Db250cm9sU3RhdGUoU3RyaW5n
JiByZXN1bHQpIGNvbnN0CiAKIHZvaWQgRmlsZUlucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9s
U3RhdGUoY29uc3QgU3RyaW5nJiBzdGF0ZSkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBmaWxlczsK
LSAgICBzdGF0ZS5zcGxpdCgnXDAnLCBmaWxlcyk7CisgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmls
ZUluZm8+IGZpbGVzOworICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOworICAgIHN0YXRlLnNwbGl0
KCdcMCcsIHBhdGhzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aHMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF0aEFuZE5hbWU7CisgICAgICAgIHBh
dGhzW2ldLnNwbGl0KCJceEZGXHhGRSIsIHBhdGhBbmROYW1lKTsKKyAgICAgICAgaWYgKHBhdGhB
bmROYW1lLnNpemUoKSA+IDEpCisgICAgICAgICAgICBmaWxlcy5hcHBlbmQoRmlsZUNob29zZXJG
aWxlSW5mbyhwYXRoQW5kTmFtZVswXSwgcGF0aEFuZE5hbWVbMV0pKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgZmlsZXMuYXBwZW5kKEZpbGVDaG9vc2VyRmlsZUluZm8ocGF0aHNbaV0pKTsK
KyAgICB9CiAgICAgZmlsZXNDaG9zZW4oZmlsZXMpOwogfQogCkBAIC0yNDAsMTAgKzI1MSwxMCBA
QCB2b2lkIEZpbGVJbnB1dFR5cGU6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wsIFRleHRG
aWVsZEV2ZW50QmVoYXZpb3IpCiAgICAgZWxlbWVudCgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7
CiB9CiAKLXZvaWQgRmlsZUlucHV0VHlwZTo6c2V0RmlsZUxpc3QoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhdGhzKQordm9pZCBGaWxlSW5wdXRUeXBlOjpzZXRGaWxlTGlzdChjb25zdCBWZWN0b3I8
RmlsZUNob29zZXJGaWxlSW5mbz4mIGZpbGVzKQogewogICAgIG1fZmlsZUxpc3QtPmNsZWFyKCk7
Ci0gICAgc2l6ZV90IHNpemUgPSBwYXRocy5zaXplKCk7CisgICAgc2l6ZV90IHNpemUgPSBmaWxl
cy5zaXplKCk7CiAKICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKICAgICAvLyBJZiBhIGRp
cmVjdG9yeSBpcyBiZWluZyBzZWxlY3RlZCwgdGhlIFVJIGFsbG93cyBhIGRpcmVjdG9yeSB0byBi
ZSBjaG9zZW4KQEAgLTI1MSw5ICsyNjIsOSBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnNldEZpbGVM
aXN0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKICAgICAvLyB3ZSB3YW50IHRvIHN0b3Jl
IG9ubHkgdGhlIHJlbGF0aXZlIHBhdGhzIGZyb20gdGhhdCBwb2ludC4KICAgICBpZiAoc2l6ZSAm
JiBlbGVtZW50KCktPmZhc3RIYXNBdHRyaWJ1dGUod2Via2l0ZGlyZWN0b3J5QXR0cikpIHsKICAg
ICAgICAgLy8gRmluZCB0aGUgY29tbW9uIHJvb3QgcGF0aC4KLSAgICAgICAgU3RyaW5nIHJvb3RQ
YXRoID0gZGlyZWN0b3J5TmFtZShwYXRoc1swXSk7CisgICAgICAgIFN0cmluZyByb290UGF0aCA9
IGRpcmVjdG9yeU5hbWUoZmlsZXNbMF0ucGF0aCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAx
OyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICB3aGlsZSAoIXBhdGhzW2ldLnN0YXJ0c1dp
dGgocm9vdFBhdGgpKQorICAgICAgICAgICAgd2hpbGUgKCFmaWxlc1tpXS5wYXRoLnN0YXJ0c1dp
dGgocm9vdFBhdGgpKQogICAgICAgICAgICAgICAgIHJvb3RQYXRoID0gZGlyZWN0b3J5TmFtZShy
b290UGF0aCk7CiAgICAgICAgIH0KICAgICAgICAgcm9vdFBhdGggPSBkaXJlY3RvcnlOYW1lKHJv
b3RQYXRoKTsKQEAgLTI2MywxNSArMjc0LDE1IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6c2V0Rmls
ZUxpc3QoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQogICAgICAgICAgICAgcm9vdExlbmd0
aCArPSAxOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewogICAg
ICAgICAgICAgLy8gTm9ybWFsaXplIGJhY2tzbGFzaGVzIHRvIHNsYXNoZXMgYmVmb3JlIGV4cG9z
aW5nIHRoZSByZWxhdGl2ZSBwYXRoIHRvIHNjcmlwdC4KLSAgICAgICAgICAgIFN0cmluZyByZWxh
dGl2ZVBhdGggPSBwYXRoc1tpXS5zdWJzdHJpbmcocm9vdExlbmd0aCkucmVwbGFjZSgnXFwnLCAn
LycpOwotICAgICAgICAgICAgbV9maWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZVdpdGhSZWxh
dGl2ZVBhdGgocGF0aHNbaV0sIHJlbGF0aXZlUGF0aCkpOworICAgICAgICAgICAgU3RyaW5nIHJl
bGF0aXZlUGF0aCA9IGZpbGVzW2ldLnBhdGguc3Vic3RyaW5nKHJvb3RMZW5ndGgpLnJlcGxhY2Uo
J1xcJywgJy8nKTsKKyAgICAgICAgICAgIG1fZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGVX
aXRoUmVsYXRpdmVQYXRoKGZpbGVzW2ldLnBhdGgsIHJlbGF0aXZlUGF0aCkpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIAogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgaSsrKQotICAgICAgICBtX2ZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRl
KHBhdGhzW2ldKSk7CisgICAgICAgIG1fZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGVXaXRo
TmFtZShmaWxlc1tpXS5wYXRoLCBmaWxlc1tpXS5kaXNwbGF5TmFtZSkpOwogfQogCiBib29sIEZp
bGVJbnB1dFR5cGU6OmlzRmlsZVVwbG9hZCgpIGNvbnN0CkBAIC0zMDMsMjggKzMxNCwzMSBAQCB2
b2lkIEZpbGVJbnB1dFR5cGU6OnJlcXVlc3RJY29uKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRo
cykKICAgICAgICAgY2hyb21lLT5sb2FkSWNvbkZvckZpbGVzKHBhdGhzLCBuZXdGaWxlSWNvbkxv
YWRlcigpKTsKIH0KIAotdm9pZCBGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGF0aHMpCit2b2lkIEZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKGNvbnN0
IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgZmlsZXMpCiB7CiAgICAgUmVmUHRyPEhUTUxJ
bnB1dEVsZW1lbnQ+IGlucHV0ID0gZWxlbWVudCgpOwogCiAgICAgYm9vbCBwYXRoc0NoYW5nZWQg
PSBmYWxzZTsKLSAgICBpZiAocGF0aHMuc2l6ZSgpICE9IG1fZmlsZUxpc3QtPmxlbmd0aCgpKQor
ICAgIGlmIChmaWxlcy5zaXplKCkgIT0gbV9maWxlTGlzdC0+bGVuZ3RoKCkpCiAgICAgICAgIHBh
dGhzQ2hhbmdlZCA9IHRydWU7CiAgICAgZWxzZSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBwYXRocy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKHBhdGhzW2ldICE9
IG1fZmlsZUxpc3QtPml0ZW0oaSktPnBhdGgoKSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZmlsZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChmaWxlc1tpXS5w
YXRoICE9IG1fZmlsZUxpc3QtPml0ZW0oaSktPnBhdGgoKSkgewogICAgICAgICAgICAgICAgIHBh
dGhzQ2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzZXRGaWxlTGlzdChwYXRocyk7CisgICAgc2V0Rmls
ZUxpc3QoZmlsZXMpOwogCiAgICAgaW5wdXQtPnNldEZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVu
ZGVyZXIodHJ1ZSk7CiAgICAgaW5wdXQtPm5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQoKTsKICAgICBp
bnB1dC0+c2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CiAKKyAgICBWZWN0b3I8U3RyaW5nPiBwYXRo
czsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmlsZXMuc2l6ZSgpOyArK2kpCisgICAg
ICAgIHBhdGhzLmFwcGVuZChmaWxlc1tpXS5wYXRoKTsKICAgICByZXF1ZXN0SWNvbihwYXRocyk7
CiAKICAgICBpZiAoaW5wdXQtPnJlbmRlcmVyKCkpCkBAIC0zNzMsMTIgKzM4NywxNiBAQCB2b2lk
IEZpbGVJbnB1dFR5cGU6OnJlY2VpdmVEcm9wcGVkRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhdGhzKQogICAgIH0KICNlbmRpZgogCisgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+
IGZpbGVzOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRocy5zaXplKCk7ICsraSkK
KyAgICAgICAgZmlsZXMuYXBwZW5kKEZpbGVDaG9vc2VyRmlsZUluZm8ocGF0aHNbaV0pKTsKKwog
ICAgIGlmIChpbnB1dC0+ZmFzdEhhc0F0dHJpYnV0ZShtdWx0aXBsZUF0dHIpKQotICAgICAgICBm
aWxlc0Nob3NlbihwYXRocyk7CisgICAgICAgIGZpbGVzQ2hvc2VuKGZpbGVzKTsKICAgICBlbHNl
IHsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gZmlyc3RQYXRoT25seTsKLSAgICAgICAgZmlyc3RQ
YXRoT25seS5hcHBlbmQocGF0aHNbMF0pOwotICAgICAgICBmaWxlc0Nob3NlbihmaXJzdFBhdGhP
bmx5KTsKKyAgICAgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZpcnN0RmlsZU9ubHk7
CisgICAgICAgIGZpcnN0RmlsZU9ubHkuYXBwZW5kKGZpbGVzWzBdKTsKKyAgICAgICAgZmlsZXND
aG9zZW4oZmlyc3RGaWxlT25seSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0
VHlwZS5oCmluZGV4IDAwZDM2MmJkYTkwNTg4NTczNzZhZTE1ZDVjMjljOGI2YTI3OWNjNzkuLmJk
NmEwMGE2N2ZjODJhYjBmZDcyODcwYTI2ZjMyNWJjZmVlNmViYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUlucHV0VHlwZS5oCkBAIC02OSwxMiArNjksMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IFN0cmluZyBkZWZhdWx0VG9vbFRpcCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8gRmlsZUNo
b29zZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCi0gICAgdmlydHVhbCB2b2lkIGZpbGVzQ2hvc2Vu
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGZpbGVz
Q2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYpIE9WRVJSSURFOwogCiAg
ICAgLy8gRmlsZUljb25Mb2FkZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVJlbmRlcmluZyhQYXNzUmVmUHRyPEljb24+KSBPVkVSUklERTsKIAotICAgIHZv
aWQgc2V0RmlsZUxpc3QoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKTsKKyAgICB2b2lkIHNl
dEZpbGVMaXN0KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYpOwogI2lmIEVOQUJM
RShESVJFQ1RPUllfVVBMT0FEKQogICAgIHZvaWQgcmVjZWl2ZURyb3BGb3JEaXJlY3RvcnlVcGxv
YWQoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZUNob29zZXIuY3BwCmluZGV4IGE5NzkyYWE2YWY1N2I1MmZmZmVmNTY3YmI0Y2JlZWMzNmM3
MTFiOTMuLjUwZTRjNjAxMWU1NTEzNTA0Nzg4MmNlMzAyNDI1MGZmZmQyYzQxODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKQEAgLTc4LDggKzc4LDI1IEBAIHZvaWQg
RmlsZUNob29zZXI6OmNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMp
CiAgICAgaWYgKG1fc2V0dGluZ3Muc2VsZWN0ZWRGaWxlcyA9PSBmaWxlbmFtZXMpCiAgICAgICAg
IHJldHVybjsKIAorICAgIGlmIChtX2NsaWVudCkgeworICAgICAgICBWZWN0b3I8RmlsZUNob29z
ZXJGaWxlSW5mbz4gZmlsZXM7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmaWxl
bmFtZXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBmaWxlcy5hcHBlbmQoRmlsZUNob29zZXJG
aWxlSW5mbyhmaWxlbmFtZXNbaV0pKTsKKyAgICAgICAgbV9jbGllbnQtPmZpbGVzQ2hvc2VuKGZp
bGVzKTsKKyAgICB9Cit9CisKK3ZvaWQgRmlsZUNob29zZXI6OmNob29zZUZpbGVzKGNvbnN0IFZl
Y3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgZmlsZXMpCit7CisgICAgLy8gRklYTUU6IFRoaXMg
aXMgaW5lbGVnYW50LiBXZSBzaG91bGQgbm90IGJlIGxvb2tpbmcgYXQgc2V0dGluZ3MgaGVyZS4K
KyAgICBWZWN0b3I8U3RyaW5nPiBwYXRoczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZmlsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHBhdGhzLmFwcGVuZChmaWxlc1tpXS5wYXRoKTsK
KyAgICBpZiAobV9zZXR0aW5ncy5zZWxlY3RlZEZpbGVzID09IHBhdGhzKQorICAgICAgICByZXR1
cm47CisKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5maWxlc0Nob3Nlbihm
aWxlbmFtZXMpOworICAgICAgICBtX2NsaWVudC0+ZmlsZXNDaG9zZW4oZmlsZXMpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaAppbmRleCBjYzIwYmUyODFiODQyNGNi
ZWJlMDE1YTcyN2E1NGY4NmIwZTNlYTMxLi4yNGE4NGU0Mzc5OGViN2MzNjg1NGZlNWU5MTM1ZWM2
NGM1NDhlZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKQEAgLTM4LDYg
KzM4LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmlsZUNob29zZXI7CiAKK3N0
cnVjdCBGaWxlQ2hvb3NlckZpbGVJbmZvIHsKKyAgICBGaWxlQ2hvb3NlckZpbGVJbmZvKGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSA9IFN0cmluZygpKQorICAg
ICAgICA6IHBhdGgocGF0aCkKKyAgICAgICAgLCBkaXNwbGF5TmFtZShkaXNwbGF5TmFtZSkKKyAg
ICB7CisgICAgfQorCisgICAgY29uc3QgU3RyaW5nIHBhdGg7CisgICAgY29uc3QgU3RyaW5nIGRp
c3BsYXlOYW1lOworfTsKKwogc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3MgewogICAgIGJvb2wg
YWxsb3dzTXVsdGlwbGVGaWxlczsKICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKQEAgLTQ5
LDcgKzYwLDcgQEAgc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3MgewogCiBjbGFzcyBGaWxlQ2hv
b3NlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGZpbGVzQ2hvc2VuKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmaWxlc0Nob3Nlbihjb25z
dCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mKSA9IDA7CiAgICAgdmlydHVhbCB+RmlsZUNo
b29zZXJDbGllbnQoKTsKIAogcHJvdGVjdGVkOgpAQCAtNjgsOCArNzksMTEgQEAgcHVibGljOgog
CiAgICAgdm9pZCBkaXNjb25uZWN0Q2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KIAotICAgIHZv
aWQgY2hvb3NlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpOwotICAgIHZvaWQgY2hvb3NlRmlsZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKTsKKyAgICB2b2lkIGNob29zZUZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSk7CisgICAgdm9pZCBjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZmlsZW5hbWVzKTsKKworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkganVz
dCBwYXNzIGZpbGUgcGF0aHMgdGhhdCBjb3VsZCBiZSB2aXJ0dWFsIHBhdGhzIHdpdGggcHJvcGVy
IGRpc3BsYXkgbmFtZXMgcmF0aGVyIHRoYW4gcGFzc2luZyBzdHJ1Y3RzLgorICAgIHZvaWQgY2hv
b3NlRmlsZXMoY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBmaWxlcyk7CiAKICAg
ICBjb25zdCBGaWxlQ2hvb3NlclNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1f
c2V0dGluZ3M7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5
cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5
LmNwcAppbmRleCA4ZTFlOGU4YWE3ZTg5Njk0Y2Y4MjQxMjc3ZTMyZDFhOTFhZmIwNzkzLi5mY2My
YjViYzcyNWNhYjZiNjM2ZGIwZmRkMGVlOTI0ZjkxMTMxYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtNDc0LDcgKzQ3NCw2IEBAIHN0YXRp
YyB2b2lkIGluaXRpYWxpemVNSU1FVHlwZVJlZ2lzdHJ5KCkKICAgICBpbml0aWFsaXplVW5zdXBw
b3J0ZWRUZXh0TUlNRVR5cGVzKCk7CiB9CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiBzdGF0
aWMgU3RyaW5nIGZpbmRNaW1lVHlwZShjb25zdCBUeXBlRXh0ZW5zaW9uUGFpciogcGFpcnMsIHVu
c2lnbmVkIG51bVBhaXJzLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAgICBpZiAoIWV4
dGVuc2lvbi5pc0VtcHR5KCkpIHsKQEAgLTQ5NCw3ICs0OTMsNiBAQCBTdHJpbmcgTUlNRVR5cGVS
ZWdpc3RyeTo6Z2V0V2VsbEtub3duTUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBl
eHRlbnNpbwogICAgICAgICByZXR1cm4gZm91bmQ7CiAgICAgcmV0dXJuIGZpbmRNaW1lVHlwZShj
b21tb25NZWRpYVR5cGVzLCBzaXplb2YoY29tbW9uTWVkaWFUeXBlcykgLyBzaXplb2YoY29tbW9u
TWVkaWFUeXBlc1swXSksIGV4dGVuc2lvbik7CiB9Ci0jZW5kaWYKIAogU3RyaW5nIE1JTUVUeXBl
UmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKaW5kZXggZDJjMzc1MjE0YTFh
ODQwMDQxZTFjNmQ1ZGI3NDcwZmI2YTUxNGYyYy4uN2ZhNmRiNmQ3YzQ1OWVkYTc2ZjQ5NGNkNDU0
YzdiNjMzMDYxNzAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5
cGVSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuaApAQCAtMzYsOSArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNSU1FVHlw
ZVJlZ2lzdHJ5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGdldE1JTUVUeXBlRm9yRXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKTsKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0p
CiAgICAgc3RhdGljIFN0cmluZyBnZXRXZWxsS25vd25NSU1FVHlwZUZvckV4dGVuc2lvbihjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbik7Ci0jZW5kaWYKIAogICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5n
PiBnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBzdGF0
aWMgU3RyaW5nIGdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxl
Q2hvb3NlckNvbXBsZXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZp
bGVDaG9vc2VyQ29tcGxldGlvbi5oCmluZGV4IDE0YmFjZTRjMmRiM2I5MTU2MTIxZWQxYjZmNzIz
ZGI4NWNhY2Y4MzAuLjliMDFkMGU0MTAzOTdjNDg0MDZlMDUzYTgwYjQxZDIzNzFmY2NjOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVDaG9vc2VyQ29t
cGxldGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVDaG9v
c2VyQ29tcGxldGlvbi5oCkBAIC0zMSwxOCArMzEsMzYgQEAKICNpZm5kZWYgV2ViRmlsZUNob29z
ZXJDb21wbGV0aW9uX2gKICNkZWZpbmUgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uX2gKIAorI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xh
c3MgV2ViU3RyaW5nOwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYlZlY3RvcjsKIAog
Ly8gR2V0cyBjYWxsZWQgYmFjayB3aGVuIFdlYlZpZXdDbGllbnQgZmluaXNoZWQgY2hvb3Npbmcg
YSBmaWxlLgogY2xhc3MgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uIHsKIHB1YmxpYzoKKyAgICBz
dHJ1Y3QgU2VsZWN0ZWRGaWxlSW5mbyB7CisgICAgICAgIC8vIFRoZSBhY3R1YWwgcGF0aCBvZiB0
aGUgc2VsZWN0ZWQgZmlsZS4KKyAgICAgICAgV2ViU3RyaW5nIHBhdGg7CisKKyAgICAgICAgLy8g
VGhlIGRpc3BsYXkgbmFtZSBvZiB0aGUgZmlsZSB0aGF0IGlzIHRvIGJlIGV4cG9zZWQgYXMgRmls
ZS5uYW1lIGluCisgICAgICAgIC8vIHRoZSBET00gbGF5ZXIuIElmIGl0IGlzIGVtcHR5IHRoZSBi
YXNlIHBhcnQgb2YgdGhlIHxwYXRofCBpcyB1c2VkLgorICAgICAgICBXZWJTdHJpbmcgZGlzcGxh
eU5hbWU7CisgICAgfTsKKwogICAgIC8vIENhbGxlZCB3aXRoIHplcm8gb3IgbW9yZSBmaWxlIG5h
bWVzLiBaZXJvLWxlbmd0aGVkIHZlY3RvciBtZWFucyB0aGF0CiAgICAgLy8gdGhlIHVzZXIgY2Fu
Y2VsbGVkIG9yIHRoYXQgZmlsZSBjaG9vc2luZyBmYWlsZWQuIFRoZSBjYWxsYmFjayBpbnN0YW5j
ZQogICAgIC8vIGlzIGRlc3Ryb3llZCB3aGVuIHRoaXMgbWV0aG9kIGlzIGNhbGxlZC4KICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlRmlsZShjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgZmls
ZU5hbWVzKSA9IDA7CisKKyAgICAvLyBDYWxsZWQgd2l0aCB6ZXJvIG9yIG1vcmUgZmlsZXMsIGdp
dmVuIGFzIGEgdmVjdG9yIG9mIFNlbGVjdGVkRmlsZUluZm8uCisgICAgLy8gWmVyby1sZW5ndGhl
ZCB2ZWN0b3IgbWVhbnMgdGhhdCB0aGUgdXNlciBjYW5jZWxsZWQgb3IgdGhhdCBmaWxlCisgICAg
Ly8gY2hvb3NpbmcgZmFpbGVkLiBUaGUgY2FsbGJhY2sgaW5zdGFuY2UgaXMgZGVzdHJveWVkIHdo
ZW4gdGhpcyBtZXRob2QKKyAgICAvLyBpcyBjYWxsZWQuCisgICAgLy8gRklYTUU6IERlcHJlY2F0
ZSBlaXRoZXIgb25lIG9mIHRoZSBkaWRDaG9vc2VGaWxlIChhbmQgcmVuYW1lIGl0IHRvCisgICAg
Ly8gZGlkQ2hvb3NlRmlsZSpzKikuCisgICAgdmlydHVhbCB2b2lkIGRpZENob29zZUZpbGUoY29u
c3QgV2ViVmVjdG9yPFNlbGVjdGVkRmlsZUluZm8+JikgeyB9CiBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCB+V2ViRmlsZUNob29zZXJDb21wbGV0aW9uKCkge30KIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwu
Y3BwCmluZGV4IGQ3NTgzYzVkZGE2YzAyYmVhYzQ3NzhhNDFhZDYxMDJhMWQ0ZDlmNjIuLjczNDUy
ZDBkMDQ4Y2EzODBlNTBkZTVhNmYyN2NkOWI4NDc3YWU4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwu
Y3BwCkBAIC00NCwxNCArNDQsMjAgQEAgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbDo6fldl
YkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwoKQogCiB2b2lkIFdlYkZpbGVDaG9vc2VyQ29tcGxl
dGlvbkltcGw6OmRpZENob29zZUZpbGUoY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGZpbGVO
YW1lcykKIHsKLSAgICBpZiAoZmlsZU5hbWVzLnNpemUoKSA9PSAxKQotICAgICAgICBtX2ZpbGVD
aG9vc2VyLT5jaG9vc2VGaWxlKGZpbGVOYW1lc1swXSk7Ci0gICAgZWxzZSBpZiAoZmlsZU5hbWVz
LnNpemUoKSA+IDApIHsKLSAgICAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBwYXRoczsKLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlTmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAg
ICAgICBwYXRocy5hcHBlbmQoZmlsZU5hbWVzW2ldKTsKLSAgICAgICAgbV9maWxlQ2hvb3Nlci0+
Y2hvb3NlRmlsZXMocGF0aHMpOwotICAgIH0KKyAgICBWZWN0b3I8V2ViQ29yZTo6RmlsZUNob29z
ZXJGaWxlSW5mbz4gZmlsZUluZm87CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlTmFt
ZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIGZpbGVJbmZvLmFwcGVuZChXZWJDb3JlOjpGaWxlQ2hv
b3NlckZpbGVJbmZvKGZpbGVOYW1lc1tpXSkpOworICAgIG1fZmlsZUNob29zZXItPmNob29zZUZp
bGVzKGZpbGVJbmZvKTsKKyAgICAvLyBUaGlzIG9iamVjdCBpcyBubyBsb25nZXIgbmVlZGVkLgor
ICAgIGRlbGV0ZSB0aGlzOworfQorCit2b2lkIFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGw6
OmRpZENob29zZUZpbGUoY29uc3QgV2ViVmVjdG9yPFNlbGVjdGVkRmlsZUluZm8+JiBmaWxlcykK
K3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6RmlsZUNob29zZXJGaWxlSW5mbz4gZmlsZUluZm87Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlcy5zaXplKCk7ICsraSkKKyAgICAgICAgZmls
ZUluZm8uYXBwZW5kKFdlYkNvcmU6OkZpbGVDaG9vc2VyRmlsZUluZm8oZmlsZXNbaV0ucGF0aCwg
ZmlsZXNbaV0uZGlzcGxheU5hbWUpKTsKKyAgICBtX2ZpbGVDaG9vc2VyLT5jaG9vc2VGaWxlcyhm
aWxlSW5mbyk7CiAgICAgLy8gVGhpcyBvYmplY3QgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KICAgICBk
ZWxldGUgdGhpczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuaAppbmRleCAwNmEwNTc3YjA5OGIzOWI5OWE1
MGNkZGY1NDVlZGFmNDk0ZDQ4YTEzLi4zYWM2M2E1ZTg5MzExNWUzZmUzYzU1MTZiM2E2MWIzNWU2
ZDA5ZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlQ2hv
b3NlckNvbXBsZXRpb25JbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAg
ICBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6RmlsZUNo
b29zZXI+IGNob29zZXIpOwogICAgIH5XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENob29zZUZpbGUoY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4m
IGZpbGVOYW1lcyk7CisgICAgdmlydHVhbCB2b2lkIGRpZENob29zZUZpbGUoY29uc3QgV2ViVmVj
dG9yPFNlbGVjdGVkRmlsZUluZm8+JiBmaWxlcyk7CiBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJD
b3JlOjpGaWxlQ2hvb3Nlcj4gbV9maWxlQ2hvb3NlcjsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131555</attachid>
            <date>2012-03-12 23:25:58 -0700</date>
            <delta_ts>2012-03-13 00:21:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80719-20120313152555.patch</filename>
            <type>text/plain</type>
            <size>19716</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBlOTczYTRhZGE1MDZh
NmQ0Y2Y5Yzk3M2E5NGZlYTdlYjNkMDgyNC4uNzQ4MWU4NjhkMzY2ZDQ3NDFhZDlhZmMwOThjZmQ5
MWY2NTY5MWYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAzLTA5ICBLaW51
a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBBbGxvdyBXZWJGaWxl
Q2hvb3NlciB0byByZXR1cm4gZXh0cmEgZmlsZSBpbmZvIChsaWtlIGRpc3BsYXlOYW1lKSBpbiBh
ZGRpdGlvbiB0byBtZXJlIGZpbGUgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgwNzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiB0aGlzIGNoYW5nZSBpdHNlbGYgc2hvdWxk
bid0IGNoYW5nZSBleGlzdGluZyBiZWhhdmlvci4KKworICAgICAgICAqIGZpbGVhcGkvRmlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoTmFtZSk6IFJl
bmFtZWQgZnJvbSBjcmVhdGVCbG9iRGF0YUZvckZpbGVTeXN0ZW1GaWxlLgorICAgICAgICAqIGZp
bGVhcGkvRmlsZS5oOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpzYXZlRm9ybUNvbnRyb2xTdGF0ZSk6IFVwZGF0ZWQg
dG8gaGFuZGxlIEZpbGUubmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OnJl
c3RvcmVGb3JtQ29udHJvbFN0YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5w
dXRUeXBlOjpzZXRGaWxlTGlzdCk6IENoYW5nZWQgdGhlIHNpZ25hdHVyZSB0byB0YWtlCisgICAg
ICAgIEZpbGVDaG9vc2VyRmlsZUluZm8uCisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBl
OjpmaWxlc0Nob3Nlbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6
cmVjZWl2ZURyb3BwZWRGaWxlcyk6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmg6Cisg
ICAgICAgIChGaWxlSW5wdXRUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMpOiBBZGRlZCBh
biBvdmVybG9hZGVkIG1ldGhvZCB0aGF0CisgICAgICAgIHRha2VzIEZpbGVDaG9vc2VyRmlsZUlu
Zm8uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5o
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJGaWxlSW5mbzo6RmlsZUNob29zZXJGaWxl
SW5mbyk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0V2VsbEtub3duTUlNRVR5cGVG
b3JFeHRlbnNpb24pOiBSZW1vdmVkIHN1cnJvdW9uZGluZyBpZmRlZnMgYXMgdGhpcyBmdW5jdGlv
biBpcyBub3cgdXNlZCBldmVuIGlmIEZJTEVfU1lTVEVNIGlzIG5vdCBlbmFibGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKyAgICAgICAgKE1JTUVUeXBlUmVnaXN0
cnkpOgorCiAyMDEyLTAzLTEwICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgog
CiAgICAgICAgIFNoYWRvd1RyZWUgdXNlcyB3ZWFrIGl0ZXJhdGlvbiBwYXR0ZXJucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAwYTAyM2JmZGY0NmQ3NjkyZWY1NzA1MWQ5ZGQ0YTRkYTEz
ZjViNzdiLi41ZTRjY2Q3NDVjZGM5YTljYjM3MjFiOWFjM2Y2ZjE5NWQyZDM1MzM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAzLTA5ICBLaW51a28g
WWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBBbGxvdyBXZWJGaWxlQ2hv
b3NlciB0byByZXR1cm4gZXh0cmEgZmlsZSBpbmZvIChsaWtlIGRpc3BsYXlOYW1lKSBpbiBhZGRp
dGlvbiB0byBtZXJlIGZpbGUgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgwNzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uLmg6CisgICAg
ICAgIChTZWxlY3RlZEZpbGVJbmZvKTogQWRkZWQuCisgICAgICAgIChXZWJGaWxlQ2hvb3NlckNv
bXBsZXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb246OmRp
ZENob29zZUZpbGUpOiBBZGRlZCBhbiBvdmVybG9hZGVkCisgICAgICAgIG1ldGhvZCB0aGF0IHRh
a2VzIFNlbGVjdGVkRmlsZUluZm8uCisgICAgICAgICogc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxl
dGlvbkltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25J
bXBsOjpkaWRDaG9vc2VGaWxlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IHNyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmg6CisgICAgICAgIChXZWJGaWxlQ2hv
b3NlckNvbXBsZXRpb25JbXBsKToKKwogMjAxMi0wMy0xMCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjExMDM2My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4IGQ0MDliOTcxOTMzNTk1MTllMzAw
YTAzMjk0OTcwNGZhZWY1ZjNlODIuLjkwNTI5MWIyZGQ3NTkzZTVjNjA4MDk4NjE4NGY4YzQzZTE2
ZTlmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApAQCAtNTAsOCArNTAsNyBAQCBzdGF0aWMg
UGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCkKICAgICByZXR1cm4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aFR5cGUocGF0aCwgdHlw
ZSk7CiB9CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi1zdGF0aWMgUGFzc093blB0cjxCbG9i
RGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlU3lzdGVtRmlsZShjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgZmlsZVN5c3RlbU5hbWUpCitzdGF0aWMgUGFzc093blB0cjxCbG9iRGF0
YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aE5hbWUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIGZpbGVTeXN0ZW1OYW1lKQogewogICAgIFN0cmluZyB0eXBlOwogICAgIGludCBp
bmRleCA9IGZpbGVTeXN0ZW1OYW1lLnJldmVyc2VGaW5kKCcuJyk7CkBAIC01OSw3ICs1OCw2IEBA
IHN0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZpbGVTeXN0ZW1G
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCwKICAgICAgICAgdHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6
OmdldFdlbGxLbm93bk1JTUVUeXBlRm9yRXh0ZW5zaW9uKGZpbGVTeXN0ZW1OYW1lLnN1YnN0cmlu
ZyhpbmRleCArIDEpKTsKICAgICByZXR1cm4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aFR5cGUo
cGF0aCwgdHlwZSk7CiB9Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQog
UGFzc1JlZlB0cjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpCkBAIC04NywxNCArODUsMTIgQEAg
RmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB0eXBlKQogICAgIC8vIFNlZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGZvciBqcyBh
bmQgdjguCiB9CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiBGaWxlOjpGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lKQotICAgIDogQmxvYihjcmVhdGVCbG9iRGF0
YUZvckZpbGVTeXN0ZW1GaWxlKHBhdGgsIG5hbWUpLCAtMSkKKyAgICA6IEJsb2IoY3JlYXRlQmxv
YkRhdGFGb3JGaWxlV2l0aE5hbWUocGF0aCwgbmFtZSksIC0xKQogICAgICwgbV9wYXRoKHBhdGgp
CiAgICAgLCBtX25hbWUobmFtZSkKIHsKIH0KLSNlbmRpZgogCiBkb3VibGUgRmlsZTo6bGFzdE1v
ZGlmaWVkRGF0ZSgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCmluZGV4IDEzYTkxZmUzZTQx
Zjk1ZmI5YjIzYWNkNmIwZWViZGMxNTQ0M2Q0ZTMuLmU2YWQyYTk4MmMxMmM4ZmExY2E3YTRmY2Qz
MmU1MjBkNGJhZDY4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCkBAIC01MiwxMyArNTIsMTMgQEAg
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZVdpdGhSZWxhdGl2ZVBh
dGgoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCk7CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICAvLyBDcmVhdGUgYSBmaWxlIHdpdGgg
YSBuYW1lIGV4cG9zZWQgdG8gdGhlIGF1dGhvciAodmlhIEZpbGUubmFtZSBhbmQgYXNzb2NpYXRl
ZCBET00gcHJvcGVydGllcykgdGhhdCBkaWZmZXJzIGZyb20gdGhlIG9uZSBwcm92aWRlZCBpbiB0
aGUgcGF0aC4KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVhdGVXaXRoTmFtZShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB7CisgICAgICAgIGlmIChu
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZShwYXRo
KSk7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZShwYXRoLCBuYW1lKSk7CiAgICAg
fQotI2VuZGlmCiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBib29sIGlzRmlsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTgz
LDEwICs4Myw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBGb3IgZGVzZXJpYWxpemF0aW9uLgogICAg
IEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBLVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmlu
ZyYgdHlwZSk7Ci0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgRmlsZShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0jZW5kaWYKIAogICAgIFN0cmluZyBtX3Bh
dGg7CiAgICAgU3RyaW5nIG1fbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3Bw
CmluZGV4IDljYjM5YjY2N2Q5NzQxZmZiYWE2MGY0MjcxMDEzOWE4N2Y5YjA2YmUuLjZiNzk3MDcx
ZGRkNzFjYTA3YTYxNGJhOTM3ZWI2ODVlYTAyYTNkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxl
SW5wdXRUeXBlLmNwcApAQCAtMTA3LDYgKzEwNyw4IEBAIGJvb2wgRmlsZUlucHV0VHlwZTo6c2F2
ZUZvcm1Db250cm9sU3RhdGUoU3RyaW5nJiByZXN1bHQpIGNvbnN0CiAgICAgdW5zaWduZWQgbnVt
RmlsZXMgPSBtX2ZpbGVMaXN0LT5sZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtRmlsZXM7ICsraSkgewogICAgICAgICByZXN1bHQuYXBwZW5kKG1fZmlsZUxpc3QtPml0
ZW0oaSktPnBhdGgoKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOCgi
XHhFRlx4QkZceEJGIikpOworICAgICAgICByZXN1bHQuYXBwZW5kKG1fZmlsZUxpc3QtPml0ZW0o
aSktPm5hbWUoKSk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1wwJyk7CiAgICAgfQogICAgIHJl
dHVybiB0cnVlOwpAQCAtMTE0LDggKzExNiwxNyBAQCBib29sIEZpbGVJbnB1dFR5cGU6OnNhdmVG
b3JtQ29udHJvbFN0YXRlKFN0cmluZyYgcmVzdWx0KSBjb25zdAogCiB2b2lkIEZpbGVJbnB1dFR5
cGU6OnJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKGNvbnN0IFN0cmluZyYgc3RhdGUpCiB7Ci0gICAg
VmVjdG9yPFN0cmluZz4gZmlsZXM7Ci0gICAgc3RhdGUuc3BsaXQoJ1wwJywgZmlsZXMpOworICAg
IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiBmaWxlczsKKyAgICBWZWN0b3I8U3RyaW5nPiBw
YXRoczsKKyAgICBzdGF0ZS5zcGxpdCgnXDAnLCBwYXRocyk7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHBhdGhzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBh
dGhBbmROYW1lOworICAgICAgICBwYXRoc1tpXS5zcGxpdChTdHJpbmc6OmZyb21VVEY4KCJceEVG
XHhCRlx4QkYiKSwgcGF0aEFuZE5hbWUpOworICAgICAgICBpZiAocGF0aEFuZE5hbWUuc2l6ZSgp
ID4gMSkKKyAgICAgICAgICAgIGZpbGVzLmFwcGVuZChGaWxlQ2hvb3NlckZpbGVJbmZvKHBhdGhB
bmROYW1lWzBdLCBwYXRoQW5kTmFtZVsxXSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBm
aWxlcy5hcHBlbmQoRmlsZUNob29zZXJGaWxlSW5mbyhwYXRoc1tpXSkpOworICAgIH0KICAgICBm
aWxlc0Nob3NlbihmaWxlcyk7CiB9CiAKQEAgLTI0MCwxMCArMjUxLDEwIEBAIHZvaWQgRmlsZUlu
cHV0VHlwZTo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiwgYm9vbCwgVGV4dEZpZWxkRXZlbnRCZWhh
dmlvcikKICAgICBlbGVtZW50KCktPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIAotdm9pZCBG
aWxlSW5wdXRUeXBlOjpzZXRGaWxlTGlzdChjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCit2
b2lkIEZpbGVJbnB1dFR5cGU6OnNldEZpbGVMaXN0KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZp
bGVJbmZvPiYgZmlsZXMpCiB7CiAgICAgbV9maWxlTGlzdC0+Y2xlYXIoKTsKLSAgICBzaXplX3Qg
c2l6ZSA9IHBhdGhzLnNpemUoKTsKKyAgICBzaXplX3Qgc2l6ZSA9IGZpbGVzLnNpemUoKTsKIAog
I2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQogICAgIC8vIElmIGEgZGlyZWN0b3J5IGlzIGJl
aW5nIHNlbGVjdGVkLCB0aGUgVUkgYWxsb3dzIGEgZGlyZWN0b3J5IHRvIGJlIGNob3NlbgpAQCAt
MjUxLDkgKzI2Miw5IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6c2V0RmlsZUxpc3QoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhdGhzKQogICAgIC8vIHdlIHdhbnQgdG8gc3RvcmUgb25seSB0aGUgcmVs
YXRpdmUgcGF0aHMgZnJvbSB0aGF0IHBvaW50LgogICAgIGlmIChzaXplICYmIGVsZW1lbnQoKS0+
ZmFzdEhhc0F0dHJpYnV0ZSh3ZWJraXRkaXJlY3RvcnlBdHRyKSkgewogICAgICAgICAvLyBGaW5k
IHRoZSBjb21tb24gcm9vdCBwYXRoLgotICAgICAgICBTdHJpbmcgcm9vdFBhdGggPSBkaXJlY3Rv
cnlOYW1lKHBhdGhzWzBdKTsKKyAgICAgICAgU3RyaW5nIHJvb3RQYXRoID0gZGlyZWN0b3J5TmFt
ZShmaWxlc1swXS5wYXRoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBzaXplOyBp
KyspIHsKLSAgICAgICAgICAgIHdoaWxlICghcGF0aHNbaV0uc3RhcnRzV2l0aChyb290UGF0aCkp
CisgICAgICAgICAgICB3aGlsZSAoIWZpbGVzW2ldLnBhdGguc3RhcnRzV2l0aChyb290UGF0aCkp
CiAgICAgICAgICAgICAgICAgcm9vdFBhdGggPSBkaXJlY3RvcnlOYW1lKHJvb3RQYXRoKTsKICAg
ICAgICAgfQogICAgICAgICByb290UGF0aCA9IGRpcmVjdG9yeU5hbWUocm9vdFBhdGgpOwpAQCAt
MjYzLDE1ICsyNzQsMTUgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpzZXRGaWxlTGlzdChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiAgICAgICAgICAgICByb290TGVuZ3RoICs9IDE7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAvLyBO
b3JtYWxpemUgYmFja3NsYXNoZXMgdG8gc2xhc2hlcyBiZWZvcmUgZXhwb3NpbmcgdGhlIHJlbGF0
aXZlIHBhdGggdG8gc2NyaXB0LgotICAgICAgICAgICAgU3RyaW5nIHJlbGF0aXZlUGF0aCA9IHBh
dGhzW2ldLnN1YnN0cmluZyhyb290TGVuZ3RoKS5yZXBsYWNlKCdcXCcsICcvJyk7Ci0gICAgICAg
ICAgICBtX2ZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChwYXRo
c1tpXSwgcmVsYXRpdmVQYXRoKSk7CisgICAgICAgICAgICBTdHJpbmcgcmVsYXRpdmVQYXRoID0g
ZmlsZXNbaV0ucGF0aC5zdWJzdHJpbmcocm9vdExlbmd0aCkucmVwbGFjZSgnXFwnLCAnLycpOwor
ICAgICAgICAgICAgbV9maWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBh
dGgoZmlsZXNbaV0ucGF0aCwgcmVsYXRpdmVQYXRoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuOwogICAgIH0KICNlbmRpZgogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBp
KyspCi0gICAgICAgIG1fZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGUocGF0aHNbaV0pKTsK
KyAgICAgICAgbV9maWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZVdpdGhOYW1lKGZpbGVzW2ld
LnBhdGgsIGZpbGVzW2ldLmRpc3BsYXlOYW1lKSk7CiB9CiAKIGJvb2wgRmlsZUlucHV0VHlwZTo6
aXNGaWxlVXBsb2FkKCkgY29uc3QKQEAgLTMwMywyOCArMzE0LDMxIEBAIHZvaWQgRmlsZUlucHV0
VHlwZTo6cmVxdWVzdEljb24oY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQogICAgICAgICBj
aHJvbWUtPmxvYWRJY29uRm9yRmlsZXMocGF0aHMsIG5ld0ZpbGVJY29uTG9hZGVyKCkpOwogfQog
Ci12b2lkIEZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXRocykKK3ZvaWQgRmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVD
aG9vc2VyRmlsZUluZm8+JiBmaWxlcykKIHsKICAgICBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4g
aW5wdXQgPSBlbGVtZW50KCk7CiAKICAgICBib29sIHBhdGhzQ2hhbmdlZCA9IGZhbHNlOwotICAg
IGlmIChwYXRocy5zaXplKCkgIT0gbV9maWxlTGlzdC0+bGVuZ3RoKCkpCisgICAgaWYgKGZpbGVz
LnNpemUoKSAhPSBtX2ZpbGVMaXN0LT5sZW5ndGgoKSkKICAgICAgICAgcGF0aHNDaGFuZ2VkID0g
dHJ1ZTsKICAgICBlbHNlIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhdGhz
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAocGF0aHNbaV0gIT0gbV9maWxlTGlzdC0+
aXRlbShpKS0+cGF0aCgpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmaWxl
cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGZpbGVzW2ldLnBhdGggIT0gbV9maWxl
TGlzdC0+aXRlbShpKS0+cGF0aCgpKSB7CiAgICAgICAgICAgICAgICAgcGF0aHNDaGFuZ2VkID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KIAotICAgIHNldEZpbGVMaXN0KHBhdGhzKTsKKyAgICBzZXRGaWxlTGlzdChmaWxlcyk7
CiAKICAgICBpbnB1dC0+c2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcih0cnVlKTsK
ICAgICBpbnB1dC0+bm90aWZ5Rm9ybVN0YXRlQ2hhbmdlZCgpOwogICAgIGlucHV0LT5zZXROZWVk
c1ZhbGlkaXR5Q2hlY2soKTsKIAorICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBmaWxlcy5zaXplKCk7ICsraSkKKyAgICAgICAgcGF0aHMuYXBw
ZW5kKGZpbGVzW2ldLnBhdGgpOwogICAgIHJlcXVlc3RJY29uKHBhdGhzKTsKIAogICAgIGlmIChp
bnB1dC0+cmVuZGVyZXIoKSkKQEAgLTM3MywxMiArMzg3LDE2IEBAIHZvaWQgRmlsZUlucHV0VHlw
ZTo6cmVjZWl2ZURyb3BwZWRGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiAgICAg
fQogI2VuZGlmCiAKKyAgICBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4gZmlsZXM7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhdGhzLnNpemUoKTsgKytpKQorICAgICAgICBmaWxl
cy5hcHBlbmQoRmlsZUNob29zZXJGaWxlSW5mbyhwYXRoc1tpXSkpOworCiAgICAgaWYgKGlucHV0
LT5mYXN0SGFzQXR0cmlidXRlKG11bHRpcGxlQXR0cikpCi0gICAgICAgIGZpbGVzQ2hvc2VuKHBh
dGhzKTsKKyAgICAgICAgZmlsZXNDaG9zZW4oZmlsZXMpOwogICAgIGVsc2UgewotICAgICAgICBW
ZWN0b3I8U3RyaW5nPiBmaXJzdFBhdGhPbmx5OwotICAgICAgICBmaXJzdFBhdGhPbmx5LmFwcGVu
ZChwYXRoc1swXSk7Ci0gICAgICAgIGZpbGVzQ2hvc2VuKGZpcnN0UGF0aE9ubHkpOworICAgICAg
ICBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4gZmlyc3RGaWxlT25seTsKKyAgICAgICAgZmly
c3RGaWxlT25seS5hcHBlbmQoZmlsZXNbMF0pOworICAgICAgICBmaWxlc0Nob3NlbihmaXJzdEZp
bGVPbmx5KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKaW5kZXgg
MDBkMzYyYmRhOTA1ODg1NzM3NmFlMTVkNWMyOWM4YjZhMjc5Y2M3OS4uYmQ2YTAwYTY3ZmM4MmFi
MGZkNzI4NzBhMjZmMzI1YmNmZWU2ZWJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9GaWxlSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBl
LmgKQEAgLTY5LDEyICs2OSwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIGRlZmF1
bHRUb29sVGlwKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICAvLyBGaWxlQ2hvb3NlckNsaWVudCBp
bXBsZW1lbnRhdGlvbi4KLSAgICB2aXJ0dWFsIHZvaWQgZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9y
PFN0cmluZz4mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsZXNDaG9zZW4oY29uc3Qg
VmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JikgT1ZFUlJJREU7CiAKICAgICAvLyBGaWxlSWNv
bkxvYWRlckNsaWVudCBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVu
ZGVyaW5nKFBhc3NSZWZQdHI8SWNvbj4pIE9WRVJSSURFOwogCi0gICAgdm9pZCBzZXRGaWxlTGlz
dChjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpOworICAgIHZvaWQgc2V0RmlsZUxpc3QoY29u
c3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+Jik7CiAjaWYgRU5BQkxFKERJUkVDVE9SWV9V
UExPQUQpCiAgICAgdm9pZCByZWNlaXZlRHJvcEZvckRpcmVjdG9yeVVwbG9hZChjb25zdCBWZWN0
b3I8U3RyaW5nPiYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlQ2hvb3Nlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5j
cHAKaW5kZXggYTk3OTJhYTZhZjU3YjUyZmZmZWY1NjdiYjRjYmVlYzM2YzcxMWI5My4uNTBlNGM2
MDExZTU1MTM1MDQ3ODgyY2UzMDI0MjUwZmZmZDJjNDE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVDaG9vc2VyLmNwcApAQCAtNzgsOCArNzgsMjUgQEAgdm9pZCBGaWxlQ2hvb3Nlcjo6
Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKICAgICBpZiAobV9z
ZXR0aW5ncy5zZWxlY3RlZEZpbGVzID09IGZpbGVuYW1lcykKICAgICAgICAgcmV0dXJuOwogCisg
ICAgaWYgKG1fY2xpZW50KSB7CisgICAgICAgIFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiBm
aWxlczsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZpbGVuYW1lcy5zaXplKCk7
ICsraSkKKyAgICAgICAgICAgIGZpbGVzLmFwcGVuZChGaWxlQ2hvb3NlckZpbGVJbmZvKGZpbGVu
YW1lc1tpXSkpOworICAgICAgICBtX2NsaWVudC0+ZmlsZXNDaG9zZW4oZmlsZXMpOworICAgIH0K
K30KKwordm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPEZpbGVDaG9v
c2VyRmlsZUluZm8+JiBmaWxlcykKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBpbmVsZWdhbnQu
IFdlIHNob3VsZCBub3QgYmUgbG9va2luZyBhdCBzZXR0aW5ncyBoZXJlLgorICAgIFZlY3RvcjxT
dHJpbmc+IHBhdGhzOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmaWxlcy5zaXplKCk7
ICsraSkKKyAgICAgICAgcGF0aHMuYXBwZW5kKGZpbGVzW2ldLnBhdGgpOworICAgIGlmIChtX3Nl
dHRpbmdzLnNlbGVjdGVkRmlsZXMgPT0gcGF0aHMpCisgICAgICAgIHJldHVybjsKKwogICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmZpbGVzQ2hvc2VuKGZpbGVuYW1lcyk7Cisg
ICAgICAgIG1fY2xpZW50LT5maWxlc0Nob3NlbihmaWxlcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCmluZGV4IGNjMjBiZTI4MWI4NDI0Y2JlYmUwMTVhNzI3YTU0
Zjg2YjBlM2VhMzEuLjk4ZGM5OWNjODQwMzZlYzVlMTI2YzIzZGI3ZWE3YWJkZGI1NzEzNmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaApAQCAtMzgsNiArMzgsMTcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGaWxlQ2hvb3NlcjsKIAorc3RydWN0IEZpbGVDaG9v
c2VyRmlsZUluZm8geworICAgIEZpbGVDaG9vc2VyRmlsZUluZm8oY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lID0gU3RyaW5nKCkpCisgICAgICAgIDogcGF0aChw
YXRoKQorICAgICAgICAsIGRpc3BsYXlOYW1lKGRpc3BsYXlOYW1lKQorICAgIHsKKyAgICB9CisK
KyAgICBjb25zdCBTdHJpbmcgcGF0aDsKKyAgICBjb25zdCBTdHJpbmcgZGlzcGxheU5hbWU7Cit9
OworCiBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5ncyB7CiAgICAgYm9vbCBhbGxvd3NNdWx0aXBs
ZUZpbGVzOwogI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQpAQCAtNDksNyArNjAsNyBAQCBz
dHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5ncyB7CiAKIGNsYXNzIEZpbGVDaG9vc2VyQ2xpZW50IHsK
IHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxl
Q2hvb3NlckZpbGVJbmZvPiYpID0gMDsKICAgICB2aXJ0dWFsIH5GaWxlQ2hvb3NlckNsaWVudCgp
OwogCiBwcm90ZWN0ZWQ6CkBAIC03MSw2ICs4Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNob29z
ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICB2b2lkIGNob29zZUZpbGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXRocyk7CiAKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5
IGp1c3QgcGFzcyBmaWxlIHBhdGhzIHRoYXQgY291bGQgYmUgdmlydHVhbCBwYXRocyB3aXRoIHBy
b3BlciBkaXNwbGF5IG5hbWVzIHJhdGhlciB0aGFuIHBhc3Npbmcgc3RydWN0cy4KKyAgICB2b2lk
IGNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgZmlsZXMpOwor
CiAgICAgY29uc3QgRmlsZUNob29zZXJTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCB7IHJldHVy
biBtX3NldHRpbmdzOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuY3BwCmluZGV4IDhlMWU4ZThhYTdlODk2OTRjZjgyNDEyNzdlMzJkMWE5
MWFmYjA3OTMuLmZjYzJiNWJjNzI1Y2FiNmI2MzZkYjBmZGQwZWU5MjRmOTExMzFhYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCkBAIC00NzQsNyAr
NDc0LDYgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU1JTUVUeXBlUmVnaXN0cnkoKQogICAgIGlu
aXRpYWxpemVVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKTsKIH0KIAotI2lmIEVOQUJMRShGSUxF
X1NZU1RFTSkKIHN0YXRpYyBTdHJpbmcgZmluZE1pbWVUeXBlKGNvbnN0IFR5cGVFeHRlbnNpb25Q
YWlyKiBwYWlycywgdW5zaWduZWQgbnVtUGFpcnMsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQog
ewogICAgIGlmICghZXh0ZW5zaW9uLmlzRW1wdHkoKSkgewpAQCAtNDk0LDcgKzQ5Myw2IEBAIFN0
cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRXZWxsS25vd25NSU1FVHlwZUZvckV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIGV4dGVuc2lvCiAgICAgICAgIHJldHVybiBmb3VuZDsKICAgICByZXR1cm4g
ZmluZE1pbWVUeXBlKGNvbW1vbk1lZGlhVHlwZXMsIHNpemVvZihjb21tb25NZWRpYVR5cGVzKSAv
IHNpemVvZihjb21tb25NZWRpYVR5cGVzWzBdKSwgZXh0ZW5zaW9uKTsKIH0KLSNlbmRpZgogCiBT
dHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVn
aXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRl
eCBkMmMzNzUyMTRhMWE4NDAwNDFlMWM2ZDVkYjc0NzBmYjZhNTE0ZjJjLi43ZmE2ZGI2ZDdjNDU5
ZWRhNzZmNDk0Y2Q0NTRjN2I2MzMwNjE3MDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5oCkBAIC0zNiw5ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIE1JTUVUeXBlUmVnaXN0cnkgewogcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgZ2V0
TUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pOwotI2lmIEVOQUJM
RShGSUxFX1NZU1RFTSkKICAgICBzdGF0aWMgU3RyaW5nIGdldFdlbGxLbm93bk1JTUVUeXBlRm9y
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKTsKLSNlbmRpZgogCiAgICAgc3RhdGlj
IFZlY3RvcjxTdHJpbmc+IGdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUpOwogICAgIHN0YXRpYyBTdHJpbmcgZ2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uLmgKaW5kZXggMTRiYWNlNGMyZGIzYjkx
NTYxMjFlZDFiNmY3MjNkYjg1Y2FjZjgzMC4uOWIwMWQwZTQxMDM5N2M0ODQwNmUwNTNhODBiNDFk
MjM3MWZjY2M5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RmlsZUNob29zZXJDb21wbGV0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uLmgKQEAgLTMxLDE4ICszMSwzNiBAQAogI2lmbmRl
ZiBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25faAogI2RlZmluZSBXZWJGaWxlQ2hvb3NlckNvbXBs
ZXRpb25faAogCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1jbGFzcyBXZWJTdHJpbmc7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3Mg
V2ViVmVjdG9yOwogCiAvLyBHZXRzIGNhbGxlZCBiYWNrIHdoZW4gV2ViVmlld0NsaWVudCBmaW5p
c2hlZCBjaG9vc2luZyBhIGZpbGUuCiBjbGFzcyBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24gewog
cHVibGljOgorICAgIHN0cnVjdCBTZWxlY3RlZEZpbGVJbmZvIHsKKyAgICAgICAgLy8gVGhlIGFj
dHVhbCBwYXRoIG9mIHRoZSBzZWxlY3RlZCBmaWxlLgorICAgICAgICBXZWJTdHJpbmcgcGF0aDsK
KworICAgICAgICAvLyBUaGUgZGlzcGxheSBuYW1lIG9mIHRoZSBmaWxlIHRoYXQgaXMgdG8gYmUg
ZXhwb3NlZCBhcyBGaWxlLm5hbWUgaW4KKyAgICAgICAgLy8gdGhlIERPTSBsYXllci4gSWYgaXQg
aXMgZW1wdHkgdGhlIGJhc2UgcGFydCBvZiB0aGUgfHBhdGh8IGlzIHVzZWQuCisgICAgICAgIFdl
YlN0cmluZyBkaXNwbGF5TmFtZTsKKyAgICB9OworCiAgICAgLy8gQ2FsbGVkIHdpdGggemVybyBv
ciBtb3JlIGZpbGUgbmFtZXMuIFplcm8tbGVuZ3RoZWQgdmVjdG9yIG1lYW5zIHRoYXQKICAgICAv
LyB0aGUgdXNlciBjYW5jZWxsZWQgb3IgdGhhdCBmaWxlIGNob29zaW5nIGZhaWxlZC4gVGhlIGNh
bGxiYWNrIGluc3RhbmNlCiAgICAgLy8gaXMgZGVzdHJveWVkIHdoZW4gdGhpcyBtZXRob2QgaXMg
Y2FsbGVkLgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VGaWxlKGNvbnN0IFdlYlZlY3RvcjxX
ZWJTdHJpbmc+JiBmaWxlTmFtZXMpID0gMDsKKworICAgIC8vIENhbGxlZCB3aXRoIHplcm8gb3Ig
bW9yZSBmaWxlcywgZ2l2ZW4gYXMgYSB2ZWN0b3Igb2YgU2VsZWN0ZWRGaWxlSW5mby4KKyAgICAv
LyBaZXJvLWxlbmd0aGVkIHZlY3RvciBtZWFucyB0aGF0IHRoZSB1c2VyIGNhbmNlbGxlZCBvciB0
aGF0IGZpbGUKKyAgICAvLyBjaG9vc2luZyBmYWlsZWQuIFRoZSBjYWxsYmFjayBpbnN0YW5jZSBp
cyBkZXN0cm95ZWQgd2hlbiB0aGlzIG1ldGhvZAorICAgIC8vIGlzIGNhbGxlZC4KKyAgICAvLyBG
SVhNRTogRGVwcmVjYXRlIGVpdGhlciBvbmUgb2YgdGhlIGRpZENob29zZUZpbGUgKGFuZCByZW5h
bWUgaXQgdG8KKyAgICAvLyBkaWRDaG9vc2VGaWxlKnMqKS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hvb3NlRmlsZShjb25zdCBXZWJWZWN0b3I8U2VsZWN0ZWRGaWxlSW5mbz4mKSB7IH0KIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIH5XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24oKSB7fQogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxl
dGlvbkltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZUNob29zZXJD
b21wbGV0aW9uSW1wbC5jcHAKaW5kZXggZDc1ODNjNWRkYTZjMDJiZWFjNDc3OGE0MWFkNjEwMmEx
ZDRkOWY2Mi4uNzM0NTJkMGQwNDhjYTM4MGU1MGRlNWE2ZjI3Y2Q5Yjg0NzdhZTg1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9u
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZUNob29zZXJD
b21wbGV0aW9uSW1wbC5jcHAKQEAgLTQ0LDE0ICs0NCwyMCBAQCBXZWJGaWxlQ2hvb3NlckNvbXBs
ZXRpb25JbXBsOjp+V2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbCgpCiAKIHZvaWQgV2ViRmls
ZUNob29zZXJDb21wbGV0aW9uSW1wbDo6ZGlkQ2hvb3NlRmlsZShjb25zdCBXZWJWZWN0b3I8V2Vi
U3RyaW5nPiYgZmlsZU5hbWVzKQogewotICAgIGlmIChmaWxlTmFtZXMuc2l6ZSgpID09IDEpCi0g
ICAgICAgIG1fZmlsZUNob29zZXItPmNob29zZUZpbGUoZmlsZU5hbWVzWzBdKTsKLSAgICBlbHNl
IGlmIChmaWxlTmFtZXMuc2l6ZSgpID4gMCkgewotICAgICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+
IHBhdGhzOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVOYW1lcy5zaXplKCk7
ICsraSkKLSAgICAgICAgICAgIHBhdGhzLmFwcGVuZChmaWxlTmFtZXNbaV0pOwotICAgICAgICBt
X2ZpbGVDaG9vc2VyLT5jaG9vc2VGaWxlcyhwYXRocyk7Ci0gICAgfQorICAgIFZlY3RvcjxXZWJD
b3JlOjpGaWxlQ2hvb3NlckZpbGVJbmZvPiBmaWxlSW5mbzsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGZpbGVOYW1lcy5zaXplKCk7ICsraSkKKyAgICAgICAgZmlsZUluZm8uYXBwZW5kKFdl
YkNvcmU6OkZpbGVDaG9vc2VyRmlsZUluZm8oZmlsZU5hbWVzW2ldKSk7CisgICAgbV9maWxlQ2hv
b3Nlci0+Y2hvb3NlRmlsZXMoZmlsZUluZm8pOworICAgIC8vIFRoaXMgb2JqZWN0IGlzIG5vIGxv
bmdlciBuZWVkZWQuCisgICAgZGVsZXRlIHRoaXM7Cit9CisKK3ZvaWQgV2ViRmlsZUNob29zZXJD
b21wbGV0aW9uSW1wbDo6ZGlkQ2hvb3NlRmlsZShjb25zdCBXZWJWZWN0b3I8U2VsZWN0ZWRGaWxl
SW5mbz4mIGZpbGVzKQoreworICAgIFZlY3RvcjxXZWJDb3JlOjpGaWxlQ2hvb3NlckZpbGVJbmZv
PiBmaWxlSW5mbzsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVzLnNpemUoKTsgKytp
KQorICAgICAgICBmaWxlSW5mby5hcHBlbmQoV2ViQ29yZTo6RmlsZUNob29zZXJGaWxlSW5mbyhm
aWxlc1tpXS5wYXRoLCBmaWxlc1tpXS5kaXNwbGF5TmFtZSkpOworICAgIG1fZmlsZUNob29zZXIt
PmNob29zZUZpbGVzKGZpbGVJbmZvKTsKICAgICAvLyBUaGlzIG9iamVjdCBpcyBubyBsb25nZXIg
bmVlZGVkLgogICAgIGRlbGV0ZSB0aGlzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5oCmluZGV4IDA2YTA1
NzdiMDk4YjM5Yjk5YTUwY2RkZjU0NWVkYWY0OTRkNDhhMTMuLjNhYzYzYTVlODkzMTE1ZTNmZTNj
NTUxNmIzYTYxYjM1ZTZkMDllMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmgKQEAgLTQ5LDYgKzQ5LDcg
QEAgcHVibGljOgogICAgIFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpGaWxlQ2hvb3Nlcj4gY2hvb3Nlcik7CiAgICAgfldlYkZpbGVDaG9vc2VyQ29tcGxl
dGlvbkltcGwoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlRmlsZShjb25zdCBXZWJWZWN0
b3I8V2ViU3RyaW5nPiYgZmlsZU5hbWVzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlRmls
ZShjb25zdCBXZWJWZWN0b3I8U2VsZWN0ZWRGaWxlSW5mbz4mIGZpbGVzKTsKIHByaXZhdGU6CiAg
ICAgUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPiBtX2ZpbGVDaG9vc2VyOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131562</attachid>
            <date>2012-03-13 00:22:09 -0700</date>
            <delta_ts>2012-03-13 07:07:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80719-20120313162208.patch</filename>
            <type>text/plain</type>
            <size>20220</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBlOTczYTRhZGE1MDZh
NmQ0Y2Y5Yzk3M2E5NGZlYTdlYjNkMDgyNC4uNzQ4MWU4NjhkMzY2ZDQ3NDFhZDlhZmMwOThjZmQ5
MWY2NTY5MWYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAzLTA5ICBLaW51
a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBBbGxvdyBXZWJGaWxl
Q2hvb3NlciB0byByZXR1cm4gZXh0cmEgZmlsZSBpbmZvIChsaWtlIGRpc3BsYXlOYW1lKSBpbiBh
ZGRpdGlvbiB0byBtZXJlIGZpbGUgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgwNzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiB0aGlzIGNoYW5nZSBpdHNlbGYgc2hvdWxk
bid0IGNoYW5nZSBleGlzdGluZyBiZWhhdmlvci4KKworICAgICAgICAqIGZpbGVhcGkvRmlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoTmFtZSk6IFJl
bmFtZWQgZnJvbSBjcmVhdGVCbG9iRGF0YUZvckZpbGVTeXN0ZW1GaWxlLgorICAgICAgICAqIGZp
bGVhcGkvRmlsZS5oOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpzYXZlRm9ybUNvbnRyb2xTdGF0ZSk6IFVwZGF0ZWQg
dG8gaGFuZGxlIEZpbGUubmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OnJl
c3RvcmVGb3JtQ29udHJvbFN0YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5w
dXRUeXBlOjpzZXRGaWxlTGlzdCk6IENoYW5nZWQgdGhlIHNpZ25hdHVyZSB0byB0YWtlCisgICAg
ICAgIEZpbGVDaG9vc2VyRmlsZUluZm8uCisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBl
OjpmaWxlc0Nob3Nlbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6
cmVjZWl2ZURyb3BwZWRGaWxlcyk6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmg6Cisg
ICAgICAgIChGaWxlSW5wdXRUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMpOiBBZGRlZCBh
biBvdmVybG9hZGVkIG1ldGhvZCB0aGF0CisgICAgICAgIHRha2VzIEZpbGVDaG9vc2VyRmlsZUlu
Zm8uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5o
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJGaWxlSW5mbzo6RmlsZUNob29zZXJGaWxl
SW5mbyk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0V2VsbEtub3duTUlNRVR5cGVG
b3JFeHRlbnNpb24pOiBSZW1vdmVkIHN1cnJvdW9uZGluZyBpZmRlZnMgYXMgdGhpcyBmdW5jdGlv
biBpcyBub3cgdXNlZCBldmVuIGlmIEZJTEVfU1lTVEVNIGlzIG5vdCBlbmFibGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKyAgICAgICAgKE1JTUVUeXBlUmVnaXN0
cnkpOgorCiAyMDEyLTAzLTEwICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgog
CiAgICAgICAgIFNoYWRvd1RyZWUgdXNlcyB3ZWFrIGl0ZXJhdGlvbiBwYXR0ZXJucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAwYTAyM2JmZGY0NmQ3NjkyZWY1NzA1MWQ5ZGQ0YTRkYTEz
ZjViNzdiLi41ZTRjY2Q3NDVjZGM5YTljYjM3MjFiOWFjM2Y2ZjE5NWQyZDM1MzM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAzLTA5ICBLaW51a28g
WWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBBbGxvdyBXZWJGaWxlQ2hv
b3NlciB0byByZXR1cm4gZXh0cmEgZmlsZSBpbmZvIChsaWtlIGRpc3BsYXlOYW1lKSBpbiBhZGRp
dGlvbiB0byBtZXJlIGZpbGUgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgwNzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uLmg6CisgICAg
ICAgIChTZWxlY3RlZEZpbGVJbmZvKTogQWRkZWQuCisgICAgICAgIChXZWJGaWxlQ2hvb3NlckNv
bXBsZXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb246OmRp
ZENob29zZUZpbGUpOiBBZGRlZCBhbiBvdmVybG9hZGVkCisgICAgICAgIG1ldGhvZCB0aGF0IHRh
a2VzIFNlbGVjdGVkRmlsZUluZm8uCisgICAgICAgICogc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxl
dGlvbkltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25J
bXBsOjpkaWRDaG9vc2VGaWxlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IHNyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmg6CisgICAgICAgIChXZWJGaWxlQ2hv
b3NlckNvbXBsZXRpb25JbXBsKToKKwogMjAxMi0wMy0xMCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjExMDM2My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4IGQ0MDliOTcxOTMzNTk1MTllMzAw
YTAzMjk0OTcwNGZhZWY1ZjNlODIuLjkwNTI5MWIyZGQ3NTkzZTVjNjA4MDk4NjE4NGY4YzQzZTE2
ZTlmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApAQCAtNTAsOCArNTAsNyBAQCBzdGF0aWMg
UGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCkKICAgICByZXR1cm4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aFR5cGUocGF0aCwgdHlw
ZSk7CiB9CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi1zdGF0aWMgUGFzc093blB0cjxCbG9i
RGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlU3lzdGVtRmlsZShjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgZmlsZVN5c3RlbU5hbWUpCitzdGF0aWMgUGFzc093blB0cjxCbG9iRGF0
YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aE5hbWUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIGZpbGVTeXN0ZW1OYW1lKQogewogICAgIFN0cmluZyB0eXBlOwogICAgIGludCBp
bmRleCA9IGZpbGVTeXN0ZW1OYW1lLnJldmVyc2VGaW5kKCcuJyk7CkBAIC01OSw3ICs1OCw2IEBA
IHN0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZpbGVTeXN0ZW1G
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCwKICAgICAgICAgdHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6
OmdldFdlbGxLbm93bk1JTUVUeXBlRm9yRXh0ZW5zaW9uKGZpbGVTeXN0ZW1OYW1lLnN1YnN0cmlu
ZyhpbmRleCArIDEpKTsKICAgICByZXR1cm4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aFR5cGUo
cGF0aCwgdHlwZSk7CiB9Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQog
UGFzc1JlZlB0cjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpCkBAIC04NywxNCArODUsMTIgQEAg
RmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB0eXBlKQogICAgIC8vIFNlZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGZvciBqcyBh
bmQgdjguCiB9CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiBGaWxlOjpGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lKQotICAgIDogQmxvYihjcmVhdGVCbG9iRGF0
YUZvckZpbGVTeXN0ZW1GaWxlKHBhdGgsIG5hbWUpLCAtMSkKKyAgICA6IEJsb2IoY3JlYXRlQmxv
YkRhdGFGb3JGaWxlV2l0aE5hbWUocGF0aCwgbmFtZSksIC0xKQogICAgICwgbV9wYXRoKHBhdGgp
CiAgICAgLCBtX25hbWUobmFtZSkKIHsKIH0KLSNlbmRpZgogCiBkb3VibGUgRmlsZTo6bGFzdE1v
ZGlmaWVkRGF0ZSgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCmluZGV4IDEzYTkxZmUzZTQx
Zjk1ZmI5YjIzYWNkNmIwZWViZGMxNTQ0M2Q0ZTMuLmU2YWQyYTk4MmMxMmM4ZmExY2E3YTRmY2Qz
MmU1MjBkNGJhZDY4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCkBAIC01MiwxMyArNTIsMTMgQEAg
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZVdpdGhSZWxhdGl2ZVBh
dGgoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCk7CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICAvLyBDcmVhdGUgYSBmaWxlIHdpdGgg
YSBuYW1lIGV4cG9zZWQgdG8gdGhlIGF1dGhvciAodmlhIEZpbGUubmFtZSBhbmQgYXNzb2NpYXRl
ZCBET00gcHJvcGVydGllcykgdGhhdCBkaWZmZXJzIGZyb20gdGhlIG9uZSBwcm92aWRlZCBpbiB0
aGUgcGF0aC4KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVhdGVXaXRoTmFtZShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB7CisgICAgICAgIGlmIChu
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZShwYXRo
KSk7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZShwYXRoLCBuYW1lKSk7CiAgICAg
fQotI2VuZGlmCiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBib29sIGlzRmlsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTgz
LDEwICs4Myw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBGb3IgZGVzZXJpYWxpemF0aW9uLgogICAg
IEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBLVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmlu
ZyYgdHlwZSk7Ci0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgRmlsZShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0jZW5kaWYKIAogICAgIFN0cmluZyBtX3Bh
dGg7CiAgICAgU3RyaW5nIG1fbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3Bw
CmluZGV4IDljYjM5YjY2N2Q5NzQxZmZiYWE2MGY0MjcxMDEzOWE4N2Y5YjA2YmUuLjYwNjA2ZTI5
ZTAwNDEzYTg2NjU0ZDY3MTJkODkxNWY3ZTg4OGNiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxl
SW5wdXRUeXBlLmNwcApAQCAtMTA3LDYgKzEwNyw4IEBAIGJvb2wgRmlsZUlucHV0VHlwZTo6c2F2
ZUZvcm1Db250cm9sU3RhdGUoU3RyaW5nJiByZXN1bHQpIGNvbnN0CiAgICAgdW5zaWduZWQgbnVt
RmlsZXMgPSBtX2ZpbGVMaXN0LT5sZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtRmlsZXM7ICsraSkgewogICAgICAgICByZXN1bHQuYXBwZW5kKG1fZmlsZUxpc3QtPml0
ZW0oaSktPnBhdGgoKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1wxJyk7CisgICAgICAgIHJl
c3VsdC5hcHBlbmQobV9maWxlTGlzdC0+aXRlbShpKS0+bmFtZSgpKTsKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnXDAnKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTQsOCArMTE2LDE3
IEBAIGJvb2wgRmlsZUlucHV0VHlwZTo6c2F2ZUZvcm1Db250cm9sU3RhdGUoU3RyaW5nJiByZXN1
bHQpIGNvbnN0CiAKIHZvaWQgRmlsZUlucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUo
Y29uc3QgU3RyaW5nJiBzdGF0ZSkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBmaWxlczsKLSAgICBz
dGF0ZS5zcGxpdCgnXDAnLCBmaWxlcyk7CisgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+
IGZpbGVzOworICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOworICAgIHN0YXRlLnNwbGl0KCdcMCcs
IHBhdGhzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aHMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF0aEFuZE5hbWU7CisgICAgICAgIHBhdGhzW2ld
LnNwbGl0KCdcMScsIHBhdGhBbmROYW1lKTsKKyAgICAgICAgaWYgKHBhdGhBbmROYW1lLnNpemUo
KSA+IDEpCisgICAgICAgICAgICBmaWxlcy5hcHBlbmQoRmlsZUNob29zZXJGaWxlSW5mbyhwYXRo
QW5kTmFtZVswXSwgcGF0aEFuZE5hbWVbMV0pKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
ZmlsZXMuYXBwZW5kKEZpbGVDaG9vc2VyRmlsZUluZm8ocGF0aHNbaV0pKTsKKyAgICB9CiAgICAg
ZmlsZXNDaG9zZW4oZmlsZXMpOwogfQogCkBAIC0yNDAsMTAgKzI1MSwxMCBAQCB2b2lkIEZpbGVJ
bnB1dFR5cGU6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wsIFRleHRGaWVsZEV2ZW50QmVo
YXZpb3IpCiAgICAgZWxlbWVudCgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9CiAKLXZvaWQg
RmlsZUlucHV0VHlwZTo6c2V0RmlsZUxpc3QoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQor
dm9pZCBGaWxlSW5wdXRUeXBlOjpzZXRGaWxlTGlzdChjb25zdCBWZWN0b3I8RmlsZUNob29zZXJG
aWxlSW5mbz4mIGZpbGVzKQogewogICAgIG1fZmlsZUxpc3QtPmNsZWFyKCk7Ci0gICAgc2l6ZV90
IHNpemUgPSBwYXRocy5zaXplKCk7CisgICAgc2l6ZV90IHNpemUgPSBmaWxlcy5zaXplKCk7CiAK
ICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKICAgICAvLyBJZiBhIGRpcmVjdG9yeSBpcyBi
ZWluZyBzZWxlY3RlZCwgdGhlIFVJIGFsbG93cyBhIGRpcmVjdG9yeSB0byBiZSBjaG9zZW4KQEAg
LTI1MSw5ICsyNjIsOSBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnNldEZpbGVMaXN0KGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXRocykKICAgICAvLyB3ZSB3YW50IHRvIHN0b3JlIG9ubHkgdGhlIHJl
bGF0aXZlIHBhdGhzIGZyb20gdGhhdCBwb2ludC4KICAgICBpZiAoc2l6ZSAmJiBlbGVtZW50KCkt
PmZhc3RIYXNBdHRyaWJ1dGUod2Via2l0ZGlyZWN0b3J5QXR0cikpIHsKICAgICAgICAgLy8gRmlu
ZCB0aGUgY29tbW9uIHJvb3QgcGF0aC4KLSAgICAgICAgU3RyaW5nIHJvb3RQYXRoID0gZGlyZWN0
b3J5TmFtZShwYXRoc1swXSk7CisgICAgICAgIFN0cmluZyByb290UGF0aCA9IGRpcmVjdG9yeU5h
bWUoZmlsZXNbMF0ucGF0aCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgc2l6ZTsg
aSsrKSB7Ci0gICAgICAgICAgICB3aGlsZSAoIXBhdGhzW2ldLnN0YXJ0c1dpdGgocm9vdFBhdGgp
KQorICAgICAgICAgICAgd2hpbGUgKCFmaWxlc1tpXS5wYXRoLnN0YXJ0c1dpdGgocm9vdFBhdGgp
KQogICAgICAgICAgICAgICAgIHJvb3RQYXRoID0gZGlyZWN0b3J5TmFtZShyb290UGF0aCk7CiAg
ICAgICAgIH0KICAgICAgICAgcm9vdFBhdGggPSBkaXJlY3RvcnlOYW1lKHJvb3RQYXRoKTsKQEAg
LTI2MywxNSArMjc0LDE1IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6c2V0RmlsZUxpc3QoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhdGhzKQogICAgICAgICAgICAgcm9vdExlbmd0aCArPSAxOwogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICAgICAgLy8g
Tm9ybWFsaXplIGJhY2tzbGFzaGVzIHRvIHNsYXNoZXMgYmVmb3JlIGV4cG9zaW5nIHRoZSByZWxh
dGl2ZSBwYXRoIHRvIHNjcmlwdC4KLSAgICAgICAgICAgIFN0cmluZyByZWxhdGl2ZVBhdGggPSBw
YXRoc1tpXS5zdWJzdHJpbmcocm9vdExlbmd0aCkucmVwbGFjZSgnXFwnLCAnLycpOwotICAgICAg
ICAgICAgbV9maWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgocGF0
aHNbaV0sIHJlbGF0aXZlUGF0aCkpOworICAgICAgICAgICAgU3RyaW5nIHJlbGF0aXZlUGF0aCA9
IGZpbGVzW2ldLnBhdGguc3Vic3RyaW5nKHJvb3RMZW5ndGgpLnJlcGxhY2UoJ1xcJywgJy8nKTsK
KyAgICAgICAgICAgIG1fZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQ
YXRoKGZpbGVzW2ldLnBhdGgsIHJlbGF0aXZlUGF0aCkpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAjZW5kaWYKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsg
aSsrKQotICAgICAgICBtX2ZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHBhdGhzW2ldKSk7
CisgICAgICAgIG1fZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGVXaXRoTmFtZShmaWxlc1tp
XS5wYXRoLCBmaWxlc1tpXS5kaXNwbGF5TmFtZSkpOwogfQogCiBib29sIEZpbGVJbnB1dFR5cGU6
OmlzRmlsZVVwbG9hZCgpIGNvbnN0CkBAIC0zMDMsMjggKzMxNCwzMSBAQCB2b2lkIEZpbGVJbnB1
dFR5cGU6OnJlcXVlc3RJY29uKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKICAgICAgICAg
Y2hyb21lLT5sb2FkSWNvbkZvckZpbGVzKHBhdGhzLCBuZXdGaWxlSWNvbkxvYWRlcigpKTsKIH0K
IAotdm9pZCBGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGF0aHMpCit2b2lkIEZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxl
Q2hvb3NlckZpbGVJbmZvPiYgZmlsZXMpCiB7CiAgICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+
IGlucHV0ID0gZWxlbWVudCgpOwogCiAgICAgYm9vbCBwYXRoc0NoYW5nZWQgPSBmYWxzZTsKLSAg
ICBpZiAocGF0aHMuc2l6ZSgpICE9IG1fZmlsZUxpc3QtPmxlbmd0aCgpKQorICAgIGlmIChmaWxl
cy5zaXplKCkgIT0gbV9maWxlTGlzdC0+bGVuZ3RoKCkpCiAgICAgICAgIHBhdGhzQ2hhbmdlZCA9
IHRydWU7CiAgICAgZWxzZSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRo
cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKHBhdGhzW2ldICE9IG1fZmlsZUxpc3Qt
Pml0ZW0oaSktPnBhdGgoKSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmls
ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChmaWxlc1tpXS5wYXRoICE9IG1fZmls
ZUxpc3QtPml0ZW0oaSktPnBhdGgoKSkgewogICAgICAgICAgICAgICAgIHBhdGhzQ2hhbmdlZCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBzZXRGaWxlTGlzdChwYXRocyk7CisgICAgc2V0RmlsZUxpc3QoZmlsZXMp
OwogCiAgICAgaW5wdXQtPnNldEZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIodHJ1ZSk7
CiAgICAgaW5wdXQtPm5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQoKTsKICAgICBpbnB1dC0+c2V0TmVl
ZHNWYWxpZGl0eUNoZWNrKCk7CiAKKyAgICBWZWN0b3I8U3RyaW5nPiBwYXRoczsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZmlsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHBhdGhzLmFw
cGVuZChmaWxlc1tpXS5wYXRoKTsKICAgICByZXF1ZXN0SWNvbihwYXRocyk7CiAKICAgICBpZiAo
aW5wdXQtPnJlbmRlcmVyKCkpCkBAIC0zNzMsMTIgKzM4NywxNiBAQCB2b2lkIEZpbGVJbnB1dFR5
cGU6OnJlY2VpdmVEcm9wcGVkRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQogICAg
IH0KICNlbmRpZgogCisgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZpbGVzOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRocy5zaXplKCk7ICsraSkKKyAgICAgICAgZmls
ZXMuYXBwZW5kKEZpbGVDaG9vc2VyRmlsZUluZm8ocGF0aHNbaV0pKTsKKwogICAgIGlmIChpbnB1
dC0+ZmFzdEhhc0F0dHJpYnV0ZShtdWx0aXBsZUF0dHIpKQotICAgICAgICBmaWxlc0Nob3Nlbihw
YXRocyk7CisgICAgICAgIGZpbGVzQ2hvc2VuKGZpbGVzKTsKICAgICBlbHNlIHsKLSAgICAgICAg
VmVjdG9yPFN0cmluZz4gZmlyc3RQYXRoT25seTsKLSAgICAgICAgZmlyc3RQYXRoT25seS5hcHBl
bmQocGF0aHNbMF0pOwotICAgICAgICBmaWxlc0Nob3NlbihmaXJzdFBhdGhPbmx5KTsKKyAgICAg
ICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZpcnN0RmlsZU9ubHk7CisgICAgICAgIGZp
cnN0RmlsZU9ubHkuYXBwZW5kKGZpbGVzWzBdKTsKKyAgICAgICAgZmlsZXNDaG9zZW4oZmlyc3RG
aWxlT25seSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCmluZGV4
IDAwZDM2MmJkYTkwNTg4NTczNzZhZTE1ZDVjMjljOGI2YTI3OWNjNzkuLmJkNmEwMGE2N2ZjODJh
YjBmZDcyODcwYTI2ZjMyNWJjZmVlNmViYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRmlsZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5oCkBAIC02OSwxMiArNjksMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyBkZWZh
dWx0VG9vbFRpcCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8gRmlsZUNob29zZXJDbGllbnQg
aW1wbGVtZW50YXRpb24uCi0gICAgdmlydHVhbCB2b2lkIGZpbGVzQ2hvc2VuKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGZpbGVzQ2hvc2VuKGNvbnN0
IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYpIE9WRVJSSURFOwogCiAgICAgLy8gRmlsZUlj
b25Mb2FkZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJl
bmRlcmluZyhQYXNzUmVmUHRyPEljb24+KSBPVkVSUklERTsKIAotICAgIHZvaWQgc2V0RmlsZUxp
c3QoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKTsKKyAgICB2b2lkIHNldEZpbGVMaXN0KGNv
bnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYpOwogI2lmIEVOQUJMRShESVJFQ1RPUllf
VVBMT0FEKQogICAgIHZvaWQgcmVjZWl2ZURyb3BGb3JEaXJlY3RvcnlVcGxvYWQoY29uc3QgVmVj
dG9yPFN0cmluZz4mKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZUNob29zZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIu
Y3BwCmluZGV4IGE5NzkyYWE2YWY1N2I1MmZmZmVmNTY3YmI0Y2JlZWMzNmM3MTFiOTMuLjUwZTRj
NjAxMWU1NTEzNTA0Nzg4MmNlMzAyNDI1MGZmZmQyYzQxODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKQEAgLTc4LDggKzc4LDI1IEBAIHZvaWQgRmlsZUNob29zZXI6
OmNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCiAgICAgaWYgKG1f
c2V0dGluZ3Muc2VsZWN0ZWRGaWxlcyA9PSBmaWxlbmFtZXMpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIGlmIChtX2NsaWVudCkgeworICAgICAgICBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4g
ZmlsZXM7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmaWxlbmFtZXMuc2l6ZSgp
OyArK2kpCisgICAgICAgICAgICBmaWxlcy5hcHBlbmQoRmlsZUNob29zZXJGaWxlSW5mbyhmaWxl
bmFtZXNbaV0pKTsKKyAgICAgICAgbV9jbGllbnQtPmZpbGVzQ2hvc2VuKGZpbGVzKTsKKyAgICB9
Cit9CisKK3ZvaWQgRmlsZUNob29zZXI6OmNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxGaWxlQ2hv
b3NlckZpbGVJbmZvPiYgZmlsZXMpCit7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lbGVnYW50
LiBXZSBzaG91bGQgbm90IGJlIGxvb2tpbmcgYXQgc2V0dGluZ3MgaGVyZS4KKyAgICBWZWN0b3I8
U3RyaW5nPiBwYXRoczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmlsZXMuc2l6ZSgp
OyArK2kpCisgICAgICAgIHBhdGhzLmFwcGVuZChmaWxlc1tpXS5wYXRoKTsKKyAgICBpZiAobV9z
ZXR0aW5ncy5zZWxlY3RlZEZpbGVzID09IHBhdGhzKQorICAgICAgICByZXR1cm47CisKICAgICBp
ZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5maWxlc0Nob3NlbihmaWxlbmFtZXMpOwor
ICAgICAgICBtX2NsaWVudC0+ZmlsZXNDaG9zZW4oZmlsZXMpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZUNob29zZXIuaAppbmRleCBjYzIwYmUyODFiODQyNGNiZWJlMDE1YTcyN2E1
NGY4NmIwZTNlYTMxLi45OGRjOTljYzg0MDM2ZWM1ZTEyNmMyM2RiN2VhN2FiZGRiNTcxMzZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKQEAgLTM4LDYgKzM4LDE3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmlsZUNob29zZXI7CiAKK3N0cnVjdCBGaWxlQ2hv
b3NlckZpbGVJbmZvIHsKKyAgICBGaWxlQ2hvb3NlckZpbGVJbmZvKGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSA9IFN0cmluZygpKQorICAgICAgICA6IHBhdGgo
cGF0aCkKKyAgICAgICAgLCBkaXNwbGF5TmFtZShkaXNwbGF5TmFtZSkKKyAgICB7CisgICAgfQor
CisgICAgY29uc3QgU3RyaW5nIHBhdGg7CisgICAgY29uc3QgU3RyaW5nIGRpc3BsYXlOYW1lOwor
fTsKKwogc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3MgewogICAgIGJvb2wgYWxsb3dzTXVsdGlw
bGVGaWxlczsKICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKQEAgLTQ5LDcgKzYwLDcgQEAg
c3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3MgewogCiBjbGFzcyBGaWxlQ2hvb3NlckNsaWVudCB7
CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8Rmls
ZUNob29zZXJGaWxlSW5mbz4mKSA9IDA7CiAgICAgdmlydHVhbCB+RmlsZUNob29zZXJDbGllbnQo
KTsKIAogcHJvdGVjdGVkOgpAQCAtNzEsNiArODIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaG9v
c2VGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgdm9pZCBjaG9vc2VGaWxlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGF0aHMpOwogCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJs
eSBqdXN0IHBhc3MgZmlsZSBwYXRocyB0aGF0IGNvdWxkIGJlIHZpcnR1YWwgcGF0aHMgd2l0aCBw
cm9wZXIgZGlzcGxheSBuYW1lcyByYXRoZXIgdGhhbiBwYXNzaW5nIHN0cnVjdHMuCisgICAgdm9p
ZCBjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIGZpbGVzKTsK
KwogICAgIGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1
cm4gbV9zZXR0aW5nczsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRleCA4ZTFlOGU4YWE3ZTg5Njk0Y2Y4MjQxMjc3ZTMyZDFh
OTFhZmIwNzkzLi40ODY0NDUzZDhhODRhNzZhZjA4YWM0ZjZkYzU2ZTZiYWRmYzE4MzA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtMTM5LDcg
KzEzOSw2IEBAIHN0YXRpYyBjb25zdCBUeXBlRXh0ZW5zaW9uUGFpciBjb21tb25NZWRpYVR5cGVz
W10gPSB7CiAgICAgeyAiYXVkaW8veC13YXYiLCAid2F2IiB9CiB9OwogCi0jaWYgRU5BQkxFKEZJ
TEVfU1lTVEVNKQogc3RhdGljIGNvbnN0IGNoYXIgdGV4dFBsYWluW10gPSAidGV4dC9wbGFpbiI7
CiBzdGF0aWMgY29uc3QgY2hhciB0ZXh0SHRtbFtdID0gInRleHQvaHRtbCI7CiBzdGF0aWMgY29u
c3QgY2hhciBpbWFnZUpwZWdbXSA9ICJpbWFnZS9qcGVnIjsKQEAgLTE4MSw3ICsxODAsNiBAQCBz
dGF0aWMgY29uc3QgVHlwZUV4dGVuc2lvblBhaXIgd2VsbEtub3duTWltZVR5cGVzW10gPSB7CiAg
ICAgeyAiYXBwbGljYXRpb24vcmRmK3htbCIsICJyZGYiIH0sCiAgICAgeyAiYXBwbGljYXRpb24v
eC1zaG9ja3dhdmUtZmxhc2giLCAic3dmIiB9LAogfTsKLSNlbmRpZgogCiBzdGF0aWMgSGFzaFNl
dDxTdHJpbmc+KiBzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzOwogc3RhdGljIEhhc2hT
ZXQ8U3RyaW5nPiogc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXM7CkBAIC00NzQsNyArNDcyLDYgQEAg
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZU1JTUVUeXBlUmVnaXN0cnkoKQogICAgIGluaXRpYWxpemVV
bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKTsKIH0KIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkK
IHN0YXRpYyBTdHJpbmcgZmluZE1pbWVUeXBlKGNvbnN0IFR5cGVFeHRlbnNpb25QYWlyKiBwYWly
cywgdW5zaWduZWQgbnVtUGFpcnMsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQogewogICAgIGlm
ICghZXh0ZW5zaW9uLmlzRW1wdHkoKSkgewpAQCAtNDk0LDcgKzQ5MSw2IEBAIFN0cmluZyBNSU1F
VHlwZVJlZ2lzdHJ5OjpnZXRXZWxsS25vd25NSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJp
bmcmIGV4dGVuc2lvCiAgICAgICAgIHJldHVybiBmb3VuZDsKICAgICByZXR1cm4gZmluZE1pbWVU
eXBlKGNvbW1vbk1lZGlhVHlwZXMsIHNpemVvZihjb21tb25NZWRpYVR5cGVzKSAvIHNpemVvZihj
b21tb25NZWRpYVR5cGVzWzBdKSwgZXh0ZW5zaW9uKTsKIH0KLSNlbmRpZgogCiBTdHJpbmcgTUlN
RVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCBkMmMzNzUy
MTRhMWE4NDAwNDFlMWM2ZDVkYjc0NzBmYjZhNTE0ZjJjLi43ZmE2ZGI2ZDdjNDU5ZWRhNzZmNDk0
Y2Q0NTRjN2I2MzMwNjE3MDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5oCkBAIC0zNiw5ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1J
TUVUeXBlUmVnaXN0cnkgewogcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgZ2V0TUlNRVR5cGVG
b3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pOwotI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKICAgICBzdGF0aWMgU3RyaW5nIGdldFdlbGxLbm93bk1JTUVUeXBlRm9yRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKTsKLSNlbmRpZgogCiAgICAgc3RhdGljIFZlY3RvcjxT
dHJpbmc+IGdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpOwogICAg
IHN0YXRpYyBTdHJpbmcgZ2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkZpbGVDaG9vc2VyQ29tcGxldGlvbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRmlsZUNob29zZXJDb21wbGV0aW9uLmgKaW5kZXggMTRiYWNlNGMyZGIzYjkxNTYxMjFlZDFi
NmY3MjNkYjg1Y2FjZjgzMC4uOWIwMWQwZTQxMDM5N2M0ODQwNmUwNTNhODBiNDFkMjM3MWZjY2M5
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUNob29z
ZXJDb21wbGV0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmls
ZUNob29zZXJDb21wbGV0aW9uLmgKQEAgLTMxLDE4ICszMSwzNiBAQAogI2lmbmRlZiBXZWJGaWxl
Q2hvb3NlckNvbXBsZXRpb25faAogI2RlZmluZSBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25faAog
CisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1jbGFzcyBXZWJTdHJpbmc7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV2ViVmVjdG9y
OwogCiAvLyBHZXRzIGNhbGxlZCBiYWNrIHdoZW4gV2ViVmlld0NsaWVudCBmaW5pc2hlZCBjaG9v
c2luZyBhIGZpbGUuCiBjbGFzcyBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24gewogcHVibGljOgor
ICAgIHN0cnVjdCBTZWxlY3RlZEZpbGVJbmZvIHsKKyAgICAgICAgLy8gVGhlIGFjdHVhbCBwYXRo
IG9mIHRoZSBzZWxlY3RlZCBmaWxlLgorICAgICAgICBXZWJTdHJpbmcgcGF0aDsKKworICAgICAg
ICAvLyBUaGUgZGlzcGxheSBuYW1lIG9mIHRoZSBmaWxlIHRoYXQgaXMgdG8gYmUgZXhwb3NlZCBh
cyBGaWxlLm5hbWUgaW4KKyAgICAgICAgLy8gdGhlIERPTSBsYXllci4gSWYgaXQgaXMgZW1wdHkg
dGhlIGJhc2UgcGFydCBvZiB0aGUgfHBhdGh8IGlzIHVzZWQuCisgICAgICAgIFdlYlN0cmluZyBk
aXNwbGF5TmFtZTsKKyAgICB9OworCiAgICAgLy8gQ2FsbGVkIHdpdGggemVybyBvciBtb3JlIGZp
bGUgbmFtZXMuIFplcm8tbGVuZ3RoZWQgdmVjdG9yIG1lYW5zIHRoYXQKICAgICAvLyB0aGUgdXNl
ciBjYW5jZWxsZWQgb3IgdGhhdCBmaWxlIGNob29zaW5nIGZhaWxlZC4gVGhlIGNhbGxiYWNrIGlu
c3RhbmNlCiAgICAgLy8gaXMgZGVzdHJveWVkIHdoZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkLgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VGaWxlKGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+
JiBmaWxlTmFtZXMpID0gMDsKKworICAgIC8vIENhbGxlZCB3aXRoIHplcm8gb3IgbW9yZSBmaWxl
cywgZ2l2ZW4gYXMgYSB2ZWN0b3Igb2YgU2VsZWN0ZWRGaWxlSW5mby4KKyAgICAvLyBaZXJvLWxl
bmd0aGVkIHZlY3RvciBtZWFucyB0aGF0IHRoZSB1c2VyIGNhbmNlbGxlZCBvciB0aGF0IGZpbGUK
KyAgICAvLyBjaG9vc2luZyBmYWlsZWQuIFRoZSBjYWxsYmFjayBpbnN0YW5jZSBpcyBkZXN0cm95
ZWQgd2hlbiB0aGlzIG1ldGhvZAorICAgIC8vIGlzIGNhbGxlZC4KKyAgICAvLyBGSVhNRTogRGVw
cmVjYXRlIGVpdGhlciBvbmUgb2YgdGhlIGRpZENob29zZUZpbGUgKGFuZCByZW5hbWUgaXQgdG8K
KyAgICAvLyBkaWRDaG9vc2VGaWxlKnMqKS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlRmls
ZShjb25zdCBXZWJWZWN0b3I8U2VsZWN0ZWRGaWxlSW5mbz4mKSB7IH0KIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIH5XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24oKSB7fQogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9u
SW1wbC5jcHAKaW5kZXggZDc1ODNjNWRkYTZjMDJiZWFjNDc3OGE0MWFkNjEwMmExZDRkOWY2Mi4u
NzM0NTJkMGQwNDhjYTM4MGU1MGRlNWE2ZjI3Y2Q5Yjg0NzdhZTg1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9u
SW1wbC5jcHAKQEAgLTQ0LDE0ICs0NCwyMCBAQCBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBs
Ojp+V2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbCgpCiAKIHZvaWQgV2ViRmlsZUNob29zZXJD
b21wbGV0aW9uSW1wbDo6ZGlkQ2hvb3NlRmlsZShjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYg
ZmlsZU5hbWVzKQogewotICAgIGlmIChmaWxlTmFtZXMuc2l6ZSgpID09IDEpCi0gICAgICAgIG1f
ZmlsZUNob29zZXItPmNob29zZUZpbGUoZmlsZU5hbWVzWzBdKTsKLSAgICBlbHNlIGlmIChmaWxl
TmFtZXMuc2l6ZSgpID4gMCkgewotICAgICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IHBhdGhzOwot
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVOYW1lcy5zaXplKCk7ICsraSkKLSAg
ICAgICAgICAgIHBhdGhzLmFwcGVuZChmaWxlTmFtZXNbaV0pOwotICAgICAgICBtX2ZpbGVDaG9v
c2VyLT5jaG9vc2VGaWxlcyhwYXRocyk7Ci0gICAgfQorICAgIFZlY3RvcjxXZWJDb3JlOjpGaWxl
Q2hvb3NlckZpbGVJbmZvPiBmaWxlSW5mbzsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZp
bGVOYW1lcy5zaXplKCk7ICsraSkKKyAgICAgICAgZmlsZUluZm8uYXBwZW5kKFdlYkNvcmU6OkZp
bGVDaG9vc2VyRmlsZUluZm8oZmlsZU5hbWVzW2ldKSk7CisgICAgbV9maWxlQ2hvb3Nlci0+Y2hv
b3NlRmlsZXMoZmlsZUluZm8pOworICAgIC8vIFRoaXMgb2JqZWN0IGlzIG5vIGxvbmdlciBuZWVk
ZWQuCisgICAgZGVsZXRlIHRoaXM7Cit9CisKK3ZvaWQgV2ViRmlsZUNob29zZXJDb21wbGV0aW9u
SW1wbDo6ZGlkQ2hvb3NlRmlsZShjb25zdCBXZWJWZWN0b3I8U2VsZWN0ZWRGaWxlSW5mbz4mIGZp
bGVzKQoreworICAgIFZlY3RvcjxXZWJDb3JlOjpGaWxlQ2hvb3NlckZpbGVJbmZvPiBmaWxlSW5m
bzsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVzLnNpemUoKTsgKytpKQorICAgICAg
ICBmaWxlSW5mby5hcHBlbmQoV2ViQ29yZTo6RmlsZUNob29zZXJGaWxlSW5mbyhmaWxlc1tpXS5w
YXRoLCBmaWxlc1tpXS5kaXNwbGF5TmFtZSkpOworICAgIG1fZmlsZUNob29zZXItPmNob29zZUZp
bGVzKGZpbGVJbmZvKTsKICAgICAvLyBUaGlzIG9iamVjdCBpcyBubyBsb25nZXIgbmVlZGVkLgog
ICAgIGRlbGV0ZSB0aGlzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5oCmluZGV4IDA2YTA1NzdiMDk4YjM5
Yjk5YTUwY2RkZjU0NWVkYWY0OTRkNDhhMTMuLjNhYzYzYTVlODkzMTE1ZTNmZTNjNTUxNmIzYTYx
YjM1ZTZkMDllMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZp
bGVDaG9vc2VyQ29tcGxldGlvbkltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGlj
OgogICAgIFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpG
aWxlQ2hvb3Nlcj4gY2hvb3Nlcik7CiAgICAgfldlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlRmlsZShjb25zdCBXZWJWZWN0b3I8V2ViU3Ry
aW5nPiYgZmlsZU5hbWVzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlRmlsZShjb25zdCBX
ZWJWZWN0b3I8U2VsZWN0ZWRGaWxlSW5mbz4mIGZpbGVzKTsKIHByaXZhdGU6CiAgICAgUmVmUHRy
PFdlYkNvcmU6OkZpbGVDaG9vc2VyPiBtX2ZpbGVDaG9vc2VyOwogfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>