<?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>100760</bug_id>
          
          <creation_ts>2012-10-30 07:35:33 -0700</creation_ts>
          <short_desc>[BlackBerry] Update BB10 form theme.</short_desc>
          <delta_ts>2013-05-29 10:41: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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</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>0</everconfirmed>
          <reporter name="Tiancheng Jiang">tijiang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>jonathan.dong.webkit</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>754357</commentid>
    <comment_count>0</comment_count>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-10-30 07:35:33 -0700</bug_when>
    <thetext>Upadte checkbox, radio, textfield, button, dropdown and range slider to meet cascade ux spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754379</commentid>
    <comment_count>1</comment_count>
      <attachid>171454</attachid>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-10-30 08:12:33 -0700</bug_when>
    <thetext>Created attachment 171454
webkit patch

Introduce slice function to update form theme.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754390</commentid>
    <comment_count>2</comment_count>
      <attachid>171454</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-10-30 08:38:45 -0700</bug_when>
    <thetext>Comment on attachment 171454
webkit patch

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

Don&apos;t forget that you need a ChangeLog! If you do one mention PR and internal reviewer.

&gt; Source/WebCore/platform/blackberry/RenderThemeBlackBerry.cpp:74
&gt; +// Slider Aura, caculated from UX spec

Typo caculated.

&gt; Source/WebCore/platform/blackberry/RenderThemeBlackBerry.cpp:77
&gt; +// Dropdown arrow position, caculated from UX spec

Ditto.

&gt; Source/WebCore/platform/blackberry/RenderThemeBlackBerry.cpp:478
&gt; +        if (!disabled || !background || !inactive || !pressed || !active || !activeMark || !disableMark)

You probably want to log something if this failed.

&gt; Source/WebCore/platform/blackberry/RenderThemeBlackBerry.cpp:486
&gt; +    float centerY = (float(inactive-&gt;height()) - float(activeMark-&gt;height())) / 2 / float(inactive-&gt;height()) * tmpRect.height() + tmpRect.y();

the double &apos;/&apos; looks weird, please try to add more parentheses.

&gt; Source/WebCore/platform/blackberry/RenderThemeBlackBerry.cpp:541
&gt; +    float centerY = (float(inactive-&gt;height()) - float(activeMark-&gt;height())) / 2 / float(inactive-&gt;height()) * tmpRect.height() + tmpRect.y();

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754574</commentid>
    <comment_count>3</comment_count>
      <attachid>171497</attachid>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-10-30 12:20:31 -0700</bug_when>
    <thetext>Created attachment 171497
webkit patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754585</commentid>
    <comment_count>4</comment_count>
      <attachid>171497</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-10-30 12:30:57 -0700</bug_when>
    <thetext>Comment on attachment 171497
webkit patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754625</commentid>
    <comment_count>5</comment_count>
      <attachid>171497</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-30 13:32:36 -0700</bug_when>
    <thetext>Comment on attachment 171497
webkit patch

Rejecting attachment 171497 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
succeeded at 514 (offset -14 lines).
Hunk #11 succeeded at 570 (offset -14 lines).
Hunk #12 succeeded at 618 (offset -14 lines).
Hunk #13 succeeded at 625 (offset -14 lines).
Hunk #14 succeeded at 716 (offset -14 lines).
patching file Source/WebCore/platform/blackberry/RenderThemeBlackBerry.h
Hunk #1 succeeded at 105 (offset -5 lines).

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Rob Buis&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/14620947</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754741</commentid>
    <comment_count>6</comment_count>
      <attachid>171540</attachid>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-10-30 15:46:25 -0700</bug_when>
    <thetext>Created attachment 171540
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754742</commentid>
    <comment_count>7</comment_count>
      <attachid>171540</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-10-30 15:47:50 -0700</bug_when>
    <thetext>Comment on attachment 171540
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754811</commentid>
    <comment_count>8</comment_count>
      <attachid>171540</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-30 17:13:05 -0700</bug_when>
    <thetext>Comment on attachment 171540
Patch

Clearing flags on attachment: 171540

Committed r132967: &lt;http://trac.webkit.org/changeset/132967&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754812</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-30 17:13:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756284</commentid>
    <comment_count>10</comment_count>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-11-01 08:35:01 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756285</commentid>
    <comment_count>11</comment_count>
      <attachid>171858</attachid>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-11-01 08:35:04 -0700</bug_when>
    <thetext>Created attachment 171858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756290</commentid>
    <comment_count>12</comment_count>
      <attachid>171858</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-11-01 08:37:28 -0700</bug_when>
    <thetext>Comment on attachment 171858
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Check img pointer is null, if so, do early return.

Bug title should go here.

&gt; Source/WebCore/ChangeLog:9
&gt; +

Fix description should go here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756301</commentid>
    <comment_count>13</comment_count>
      <attachid>171861</attachid>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-11-01 08:44:47 -0700</bug_when>
    <thetext>Created attachment 171861
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756336</commentid>
    <comment_count>14</comment_count>
      <attachid>171872</attachid>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-11-01 09:23:10 -0700</bug_when>
    <thetext>Created attachment 171872
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756341</commentid>
    <comment_count>15</comment_count>
      <attachid>171872</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-11-01 09:26:08 -0700</bug_when>
    <thetext>Comment on attachment 171872
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756360</commentid>
    <comment_count>16</comment_count>
      <attachid>171872</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-01 09:46:35 -0700</bug_when>
    <thetext>Comment on attachment 171872
Patch

Clearing flags on attachment: 171872

Committed r133186: &lt;http://trac.webkit.org/changeset/133186&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756361</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-01 09:46:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759701</commentid>
    <comment_count>18</comment_count>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-11-06 07:56:47 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759702</commentid>
    <comment_count>19</comment_count>
      <attachid>172589</attachid>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-11-06 07:56:49 -0800</bug_when>
    <thetext>Created attachment 172589
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759711</commentid>
    <comment_count>20</comment_count>
      <attachid>172591</attachid>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-11-06 08:07:10 -0800</bug_when>
    <thetext>Created attachment 172591
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759713</commentid>
    <comment_count>21</comment_count>
      <attachid>172591</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-11-06 08:08:55 -0800</bug_when>
    <thetext>Comment on attachment 172591
Patch

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759819</commentid>
    <comment_count>22</comment_count>
      <attachid>172591</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-06 10:18:02 -0800</bug_when>
    <thetext>Comment on attachment 172591
Patch

Clearing flags on attachment: 172591

Committed r133632: &lt;http://trac.webkit.org/changeset/133632&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759820</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-06 10:18:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760007</commentid>
    <comment_count>24</comment_count>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-11-06 13:40:21 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760008</commentid>
    <comment_count>25</comment_count>
      <attachid>172640</attachid>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-11-06 13:40:24 -0800</bug_when>
    <thetext>Created attachment 172640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760009</commentid>
    <comment_count>26</comment_count>
      <attachid>172640</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-11-06 13:41:54 -0800</bug_when>
    <thetext>Comment on attachment 172640
Patch

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760076</commentid>
    <comment_count>27</comment_count>
      <attachid>172640</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-06 14:50:58 -0800</bug_when>
    <thetext>Comment on attachment 172640
Patch

Clearing flags on attachment: 172640

Committed r133674: &lt;http://trac.webkit.org/changeset/133674&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760077</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-06 14:51:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761029</commentid>
    <comment_count>29</comment_count>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-11-07 13:49:58 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761030</commentid>
    <comment_count>30</comment_count>
      <attachid>172865</attachid>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-11-07 13:50:10 -0800</bug_when>
    <thetext>Created attachment 172865
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761034</commentid>
    <comment_count>31</comment_count>
      <attachid>172865</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-11-07 14:03:06 -0800</bug_when>
    <thetext>Comment on attachment 172865
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761072</commentid>
    <comment_count>32</comment_count>
      <attachid>172865</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-07 14:48:51 -0800</bug_when>
    <thetext>Comment on attachment 172865
Patch

Clearing flags on attachment: 172865

Committed r133808: &lt;http://trac.webkit.org/changeset/133808&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761073</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-07 14:48:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763869</commentid>
    <comment_count>34</comment_count>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-11-11 11:42:04 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763870</commentid>
    <comment_count>35</comment_count>
      <attachid>173511</attachid>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-11-11 11:42:07 -0800</bug_when>
    <thetext>Created attachment 173511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763873</commentid>
    <comment_count>36</comment_count>
      <attachid>173513</attachid>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-11-11 11:57:10 -0800</bug_when>
    <thetext>Created attachment 173513
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763879</commentid>
    <comment_count>37</comment_count>
      <attachid>173513</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-11-11 12:35:12 -0800</bug_when>
    <thetext>Comment on attachment 173513
Patch

The ChangeLog looks a bit strange but will hopefully work...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763880</commentid>
    <comment_count>38</comment_count>
      <attachid>173513</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-11 12:37:32 -0800</bug_when>
    <thetext>Comment on attachment 173513
Patch

Rejecting attachment 173513 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ILED at 739.
Hunk #5 succeeded at 973 (offset -14 lines).
Hunk #6 succeeded at 1007 (offset -14 lines).
Hunk #7 succeeded at 1031 (offset -14 lines).
2 out of 7 hunks FAILED -- saving rejects to file Source/WebCore/platform/blackberry/RenderThemeBlackBerry.cpp.rej
patching file Source/WebCore/platform/blackberry/RenderThemeBlackBerry.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Rob Buis&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/14689539</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764375</commentid>
    <comment_count>39</comment_count>
      <attachid>173511</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-11-12 07:00:44 -0800</bug_when>
    <thetext>Comment on attachment 173511
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764393</commentid>
    <comment_count>40</comment_count>
      <attachid>173511</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 07:20:43 -0800</bug_when>
    <thetext>Comment on attachment 173511
Patch

Clearing flags on attachment: 173511

Committed r134227: &lt;http://trac.webkit.org/changeset/134227&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764420</commentid>
    <comment_count>41</comment_count>
      <attachid>173513</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 07:44:24 -0800</bug_when>
    <thetext>Comment on attachment 173513
Patch

Clearing flags on attachment: 173513

Committed r134240: &lt;http://trac.webkit.org/changeset/134240&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764421</commentid>
    <comment_count>42</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 07:44:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764752</commentid>
    <comment_count>43</comment_count>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-11-12 13:32:08 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764753</commentid>
    <comment_count>44</comment_count>
      <attachid>173708</attachid>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-11-12 13:32:13 -0800</bug_when>
    <thetext>Created attachment 173708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764755</commentid>
    <comment_count>45</comment_count>
      <attachid>173708</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-11-12 13:34:34 -0800</bug_when>
    <thetext>Comment on attachment 173708
Patch

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765097</commentid>
    <comment_count>46</comment_count>
      <attachid>173708</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 18:29:29 -0800</bug_when>
    <thetext>Comment on attachment 173708
Patch

Clearing flags on attachment: 173708

Committed r134338: &lt;http://trac.webkit.org/changeset/134338&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765098</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 18:29:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767537</commentid>
    <comment_count>48</comment_count>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-11-14 18:01:23 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767538</commentid>
    <comment_count>49</comment_count>
      <attachid>174305</attachid>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-11-14 18:01:27 -0800</bug_when>
    <thetext>Created attachment 174305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767586</commentid>
    <comment_count>50</comment_count>
      <attachid>174305</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-11-14 18:44:41 -0800</bug_when>
    <thetext>Comment on attachment 174305
Patch

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767597</commentid>
    <comment_count>51</comment_count>
      <attachid>174305</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 18:59:54 -0800</bug_when>
    <thetext>Comment on attachment 174305
Patch

Clearing flags on attachment: 174305

Committed r134724: &lt;http://trac.webkit.org/changeset/134724&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767598</commentid>
    <comment_count>52</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 19:00:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778160</commentid>
    <comment_count>53</comment_count>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-11-28 12:07:30 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778161</commentid>
    <comment_count>54</comment_count>
      <attachid>176538</attachid>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-11-28 12:07:34 -0800</bug_when>
    <thetext>Created attachment 176538
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779020</commentid>
    <comment_count>55</comment_count>
      <attachid>176738</attachid>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2012-11-29 07:54:53 -0800</bug_when>
    <thetext>Created attachment 176738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779048</commentid>
    <comment_count>56</comment_count>
      <attachid>176738</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-11-29 08:55:14 -0800</bug_when>
    <thetext>Comment on attachment 176738
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779064</commentid>
    <comment_count>57</comment_count>
      <attachid>176738</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 09:10:47 -0800</bug_when>
    <thetext>Comment on attachment 176738
Patch

Clearing flags on attachment: 176738

Committed r136136: &lt;http://trac.webkit.org/changeset/136136&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779065</commentid>
    <comment_count>58</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 09:10:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892084</commentid>
    <comment_count>59</comment_count>
    <who name="Jeff Rogers">jrogers</who>
    <bug_when>2013-05-21 19:05:27 -0700</bug_when>
    <thetext>*** Bug 101924 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893108</commentid>
    <comment_count>60</comment_count>
      <attachid>176738</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-05-23 20:40:50 -0700</bug_when>
    <thetext>Comment on attachment 176738
Patch

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893476</commentid>
    <comment_count>61</comment_count>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2013-05-24 15:48:21 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893477</commentid>
    <comment_count>62</comment_count>
      <attachid>202858</attachid>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2013-05-24 15:48:26 -0700</bug_when>
    <thetext>Created attachment 202858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894019</commentid>
    <comment_count>63</comment_count>
      <attachid>202858</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-05-27 07:40:42 -0700</bug_when>
    <thetext>Comment on attachment 202858
Patch

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894027</commentid>
    <comment_count>64</comment_count>
      <attachid>202858</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-27 08:02:50 -0700</bug_when>
    <thetext>Comment on attachment 202858
Patch

Clearing flags on attachment: 202858

Committed r150754: &lt;http://trac.webkit.org/changeset/150754&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894028</commentid>
    <comment_count>65</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-27 08:02:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894489</commentid>
    <comment_count>66</comment_count>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2013-05-28 13:40:28 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894490</commentid>
    <comment_count>67</comment_count>
      <attachid>203083</attachid>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2013-05-28 13:40:33 -0700</bug_when>
    <thetext>Created attachment 203083
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895006</commentid>
    <comment_count>68</comment_count>
      <attachid>203083</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-05-29 10:19:22 -0700</bug_when>
    <thetext>Comment on attachment 203083
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895016</commentid>
    <comment_count>69</comment_count>
      <attachid>203083</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-29 10:41:07 -0700</bug_when>
    <thetext>Comment on attachment 203083
Patch

Clearing flags on attachment: 203083

Committed r150908: &lt;http://trac.webkit.org/changeset/150908&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895017</commentid>
    <comment_count>70</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-29 10:41:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171454</attachid>
            <date>2012-10-30 08:12:33 -0700</date>
            <delta_ts>2012-10-30 12:20:31 -0700</delta_ts>
            <desc>webkit patch</desc>
            <filename>0001-2012-10-22-Tiancheng-Jiang-tijiang-rim.com.patch</filename>
            <type>text/plain</type>
            <size>36812</size>
            <attacher name="Tiancheng Jiang">tijiang</attacher>
            
              <data encoding="base64">RnJvbSA5OGE0MDBkM2Q4NDgxMTgwM2MxNjMzYjA5ZDQ2MDY4OWFkNGJjZDNmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaWFuY2hlbmcgSmlhbmcgPHRpamlhbmdAcmltLmNvbT4KRGF0
ZTogTW9uLCAyMiBPY3QgMjAxMiAxMjoxNzozNyAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTIt
MTAtMjIgIFRpYW5jaGVuZyBKaWFuZyAgPHRpamlhbmdAcmltLmNvbT4KCiAgICAgICAgQ2hhbmdl
IGJsYWNrYmVycnkgcmVuZGVyIHRoZW1lIHRvIG1ha2Ugb3VyIGNvbnRyb2xzIG1lZXQgbmV3IFVY
IHNwZWN0cy4KICAgICAgICBOb3cgd2UgdXNlIGRyYXdJbWFnZSBmdW5jdGlvbiB0byBwYWludCBh
bGwgdGhlIGNvbnRyb2xzLgoKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAwNzYwCgogICAgICAgIFJldmlld2VkIGJ5IEplZmYgUm9nZXJzLgoKICAgICAg
ICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcDoKICAgICAg
ICAoV2ViQ29yZSk6CiAgICAgICAgKFdlYkNvcmU6OmRyYXdDb250cm9sKTogQWRkZWQuCiAgICAg
ICAgKFdlYkNvcmU6OmRyYXdOaW5lU2xpY2UpOiBBZGRlZC4KICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVCbGFja0JlcnJ5OjpzeXN0ZW1Gb250KTogTW9kaWZ5LgogICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50VGV4dEZpZWxkT3JUZXh0QXJlYU9yU2VhcmNo
RmllbGQpOiBNb2RpZnkuCiAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6
cGFpbnRSYWRpbyk6IE1vZGlmeS4KICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0Jl
cnJ5OjpwYWludEJ1dHRvbik6IE1vZGlmeS4KICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVC
bGFja0JlcnJ5OjpwYWludFNsaWRlclRyYWNrUmVjdCk6IE1vZGlmeS4KICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludFNsaWRlclRodW1iKTogTW9kaWZ5LgotLS0K
IFNvdXJjZS9XZWJDb3JlL2Nzcy90aGVtZUJsYWNrQmVycnkuY3NzICAgICAgICAgICAgIHwgICAy
NCArLQogLi4uL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcCAg
fCAgNTU4ICsrKysrKysrKystLS0tLS0tLS0tCiAuLi4vcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5k
ZXJUaGVtZUJsYWNrQmVycnkuaCAgICB8ICAgIDEgLQogMyBmaWxlcyBjaGFuZ2VkLCAyODUgaW5z
ZXJ0aW9ucygrKSwgMjk4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy90aGVtZUJsYWNrQmVycnkuY3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1lQmxhY2tC
ZXJyeS5jc3MKaW5kZXggYzYyODQ1Yy4uNDk2NmQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3RoZW1lQmxhY2tCZXJyeS5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1l
QmxhY2tCZXJyeS5jc3MKQEAgLTIwLDEwICsyMCw2IEBAIHRleHRhcmVhIHsKICAgICBmb250LWZh
bWlseTogbW9ub3NwYWNlOwogfQogCi1pbnB1dCwgdGV4dGFyZWEgewotICAgIC13ZWJraXQtYm9y
ZGVyLXJhZGl1czogM3B4OwotfQotCiBpbnB1dFt0eXBlPSJkYXRldGltZSJdLAogaW5wdXRbdHlw
ZT0iZGF0ZSJdLAogaW5wdXRbdHlwZT0id2VlayJdLApAQCAtMzUsMjIgKzMxLDYgQEAgaW5wdXRb
dHlwZT0iY29sb3IiXSB7CiAgICAgYm9yZGVyOiBzb2xpZCAycHggYmx1ZTsKIH0KIAotc2VsZWN0
OmZvY3VzIHsKLSAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKLSAgICBvdXRsaW5lOiBub25l
OwotfQotCi1zZWxlY3Rbc2l6ZV0sCi1zZWxlY3RbbXVsdGlwbGVdLAotc2VsZWN0W3NpemVdW211
bHRpcGxlXSB7Ci0gICAgcGFkZGluZzogNXB4OwotICAgIGJvcmRlci1yYWRpdXM6IDVweDsKLSAg
ICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMTM5LDEzOSwxMzkpOwotfQotCi1zZWxlY3Rbc2l6ZV06
Zm9jdXMsCi1zZWxlY3RbbXVsdGlwbGVdOmZvY3VzLAotc2VsZWN0W3NpemVdW211bHRpcGxlXTpm
b2N1cyB7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ci0gICAgb3V0bGluZTogbm9uZTsK
K3NlbGVjdCB7CisgICAgYm9yZGVyLXJhZGl1czogMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNw
cAppbmRleCBiYTk0YzczLi5lYjU1Yjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwCkBAIC02
Niw2ICs2NiwyMCBAQCBjb25zdCB1bnNpZ25lZCBwYWRkaW5nRGl2aXNvciA9IDU7CiBjb25zdCB1
bnNpZ25lZCBmdWxsU2NyZWVuRW5sYXJnZW1lbnRGYWN0b3IgPSAyOwogY29uc3QgZmxvYXQgc2Nh
bGVGYWN0b3JUaHJlc2hvbGQgPSAyLjA7CiAKKy8vIFNsaWNlIGxlbmd0aAorY29uc3QgaW50IHNt
YWxsU2xpY2UgPSA4OworY29uc3QgaW50IG1lZGl1bVNsaWNlID0gMTA7Citjb25zdCBpbnQgbGFy
Z2VTbGljZSA9IDEzOworCisvLyBTbGlkZXIgQXVyYSwgY2FjdWxhdGVkIGZyb20gVVggc3BlYwor
Y29uc3QgZmxvYXQgYXVyYVJhdGlvID0gMS42MjsKKworLy8gRHJvcGRvd24gYXJyb3cgcG9zaXRp
b24sIGNhY3VsYXRlZCBmcm9tIFVYIHNwZWMKK2NvbnN0IGZsb2F0IHhQb3NpdGlvblJhdGlvID0g
MzsKK2NvbnN0IGZsb2F0IHlQb3NpdGlvblJhdGlvID0gMC4zODsKK2NvbnN0IGZsb2F0IHdpZHRo
UmF0aW8gPSAzOworY29uc3QgZmxvYXQgaGVpZ2h0UmF0aW8gPSAwLjIzOworCiAvLyBDb2xvcnMK
IGNvbnN0IFJHQkEzMiBjYXJldEJvdHRvbSA9IDB4ZmYyMTYzYmY7CiBjb25zdCBSR0JBMzIgY2Fy
ZXRUb3AgPSAweGZmNjlhNWZhOwpAQCAtMTA5LDI0ICsxMjMsMTAgQEAgY29uc3QgUkdCQTMyIHNl
bGVjdGlvbiA9IDB4ZmYyYjhmZmY7CiAKIGNvbnN0IFJHQkEzMiBibGFja1BlbiA9IENvbG9yOjpi
bGFjazsKIGNvbnN0IFJHQkEzMiBmb2N1c1JpbmdQZW4gPSAweGZmYTNjOGZlOworY29uc3QgUkdC
QTMyIGFjdGl2ZVRleHRDb2xvciA9IDB4ZmZmYWZhZmE7CiAKIGZsb2F0IFJlbmRlclRoZW1lQmxh
Y2tCZXJyeTo6ZGVmYXVsdEZvbnRTaXplID0gMTY7CiAKLS8vIFdlIGFpbSB0byBtYXRjaCBJRSBo
ZXJlLgotLy8gLUlFIHVzZXMgYSBmb250IGJhc2VkIG9uIHRoZSBlbmNvZGluZyBhcyB0aGUgZGVm
YXVsdCBmb250IGZvciBmb3JtIGNvbnRyb2xzLgotLy8gLUdlY2tvIHVzZXMgTVMgU2hlbGwgRGxn
IChhY3R1YWxseSBjYWxscyBHZXRTdG9ja09iamVjdChERUZBVUxUX0dVSV9GT05UKSwKLS8vIHdo
aWNoIHJldHVybnMgTVMgU2hlbGwgRGxnKQotLy8gLVNhZmFyaSB1c2VzIEx1Y2lkYSBHcmFuZGUu
Ci0vLwotLy8gRklYTUU6IFRoZSBvbmx5IGNhc2Ugd2hlcmUgd2Uga25vdyB3ZSBkb24ndCBtYXRj
aCBJRSBpcyBmb3IgQU5TSSBlbmNvZGluZ3MuCi0vLyBJRSB1c2VzIE1TIFNoZWxsIERsZyB0aGVy
ZSwgd2hpY2ggd2UgcmVuZGVyIGluY29ycmVjdGx5IGF0IGNlcnRhaW4gcGl4ZWwKLS8vIHNpemVz
IChlLmcuIDE1cHgpLiBTbyB3ZSBqdXN0IHVzZSBBcmlhbCBmb3Igbm93LgotY29uc3QgU3RyaW5n
JiBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmRlZmF1bHRHVUlGb250KCkKLXsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgZm9udEZhY2UsIChBU0NJSUxpdGVyYWwoIkFyaWFsIikpKTsK
LSAgICByZXR1cm4gZm9udEZhY2U7Ci19Ci0KIHN0YXRpYyBQYXNzUmVmUHRyPEdyYWRpZW50PiBj
cmVhdGVMaW5lYXJHcmFkaWVudChSR0JBMzIgdG9wLCBSR0JBMzIgYm90dG9tLCBjb25zdCBJbnRQ
b2ludCYgYSwgY29uc3QgSW50UG9pbnQmIGIpCiB7CiAgICAgUmVmUHRyPEdyYWRpZW50PiBncmFk
aWVudCA9IEdyYWRpZW50OjpjcmVhdGUoYSwgYik7CkBAIC0xMzUsMjIgKzEzNSw2IEBAIHN0YXRp
YyBQYXNzUmVmUHRyPEdyYWRpZW50PiBjcmVhdGVMaW5lYXJHcmFkaWVudChSR0JBMzIgdG9wLCBS
R0JBMzIgYm90dG9tLCBjb25zCiAgICAgcmV0dXJuIGdyYWRpZW50LnJlbGVhc2UoKTsKIH0KIAot
c3RhdGljIFBhdGggcm91bmRlZFJlY3RGb3JCb3JkZXIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNv
bnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gb2JqZWN0LT5z
dHlsZSgpOwotICAgIExlbmd0aFNpemUgdG9wTGVmdFJhZGl1cyA9IHN0eWxlLT5ib3JkZXJUb3BM
ZWZ0UmFkaXVzKCk7Ci0gICAgTGVuZ3RoU2l6ZSB0b3BSaWdodFJhZGl1cyA9IHN0eWxlLT5ib3Jk
ZXJUb3BSaWdodFJhZGl1cygpOwotICAgIExlbmd0aFNpemUgYm90dG9tTGVmdFJhZGl1cyA9IHN0
eWxlLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCk7Ci0gICAgTGVuZ3RoU2l6ZSBib3R0b21SaWdo
dFJhZGl1cyA9IHN0eWxlLT5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpOwotCi0gICAgUGF0aCBy
b3VuZGVkUmVjdDsKLSAgICByb3VuZGVkUmVjdC5hZGRSb3VuZGVkUmVjdChyZWN0LCBJbnRTaXpl
KHRvcExlZnRSYWRpdXMud2lkdGgoKS52YWx1ZSgpLCB0b3BMZWZ0UmFkaXVzLmhlaWdodCgpLnZh
bHVlKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFNpemUodG9w
UmlnaHRSYWRpdXMud2lkdGgoKS52YWx1ZSgpLCB0b3BSaWdodFJhZGl1cy5oZWlnaHQoKS52YWx1
ZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRTaXplKGJvdHRv
bUxlZnRSYWRpdXMud2lkdGgoKS52YWx1ZSgpLCBib3R0b21MZWZ0UmFkaXVzLmhlaWdodCgpLnZh
bHVlKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFNpemUoYm90
dG9tUmlnaHRSYWRpdXMud2lkdGgoKS52YWx1ZSgpLCBib3R0b21SaWdodFJhZGl1cy5oZWlnaHQo
KS52YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIHJvdW5kZWRSZWN0OwotfQotCiBzdGF0aWMgUmVuZGVy
U2xpZGVyKiBkZXRlcm1pbmVSZW5kZXJTbGlkZXIoUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAg
ICAgQVNTRVJUKG9iamVjdC0+aXNTbGlkZXJUaHVtYigpKTsKQEAgLTE4Miw2ICsxNjYsNjUgQEAg
c3RhdGljIGZsb2F0IGRldGVybWluZUZ1bGxTY3JlZW5NdWx0aXBsaWVyKEVsZW1lbnQqIGVsZW1l
bnQpCiAgICAgcmV0dXJuIGZ1bGxTY3JlZW5NdWx0aXBsaWVyOwogfQogCitzdGF0aWMgdm9pZCBk
cmF3Q29udHJvbChHcmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIElt
YWdlKiBpbWcpCit7CisgICAgRmxvYXRSZWN0IHNyY1JlY3QoMCwgMCwgaW1nLT53aWR0aCgpLCBp
bWctPmhlaWdodCgpKTsKKyAgICBnYy0+ZHJhd0ltYWdlKGltZywgQ29sb3JTcGFjZURldmljZVJH
QiwgcmVjdCwgc3JjUmVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIGRyYXdUaHJlZVNsaWNlKEdyYXBo
aWNzQ29udGV4dCogZ2MsIGNvbnN0IEludFJlY3QmIHJlY3QsIEltYWdlKiBpbWcsIGludCBzbGlj
ZSkKK3sKKyAgICBGbG9hdFNpemUgZHN0U2xpY2UocmVjdC5oZWlnaHQoKSAvIDIsIHJlY3QuaGVp
Z2h0KCkpOworICAgIEZsb2F0UmVjdCBzcmNSZWN0KDAsIDAsIHNsaWNlLCBpbWctPmhlaWdodCgp
KTsKKyAgICBGbG9hdFJlY3QgZHN0UmVjdChyZWN0LmxvY2F0aW9uKCksIGRzdFNsaWNlKTsKKwor
ICAgIGdjLT5kcmF3SW1hZ2UoaW1nLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNS
ZWN0KTsKKyAgICBzcmNSZWN0Lm1vdmUoaW1nLT53aWR0aCgpIC0gc3JjUmVjdC53aWR0aCgpLCAw
KTsKKyAgICBkc3RSZWN0Lm1vdmUocmVjdC53aWR0aCgpIC0gZHN0UmVjdC53aWR0aCgpLCAwKTsK
KyAgICBnYy0+ZHJhd0ltYWdlKGltZywgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3Jj
UmVjdCk7CisKKyAgICBzcmNSZWN0ID0gRmxvYXRSZWN0KHNsaWNlLCAwLCBpbWctPndpZHRoKCkg
LSAyICogc2xpY2UsIGltZy0+aGVpZ2h0KCkpOworICAgIGRzdFJlY3QgPSBGbG9hdFJlY3QocmVj
dC54KCkgKyBkc3RTbGljZS53aWR0aCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpIC0gMiAqIGRz
dFNsaWNlLndpZHRoKCksIGRzdFNsaWNlLmhlaWdodCgpKTsKKyAgICBnYy0+ZHJhd0ltYWdlKGlt
ZywgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCk7Cit9CisKK3N0YXRpYyB2
b2lkIGRyYXdOaW5lU2xpY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgY29uc3QgSW50UmVjdCYgcmVj
dCwgZG91YmxlIHNjYWxlLCBJbWFnZSogaW1nLCBpbnQgc2xpY2UpCit7CisgICAgaWYgKHJlY3Qu
aGVpZ2h0KCkgKiBzY2FsZSA8IDEwMS4wKQorICAgICAgICBzY2FsZSA9IDEwMS4wIC8gcmVjdC5o
ZWlnaHQoKTsKKyAgICBGbG9hdFNpemUgZHN0U2xpY2Uoc2xpY2UgLyBzY2FsZSwgc2xpY2UgLyBz
Y2FsZSk7CisgICAgRmxvYXRSZWN0IHNyY1JlY3QoMCwgMCwgc2xpY2UsIHNsaWNlKTsKKyAgICBG
bG9hdFJlY3QgZHN0UmVjdChyZWN0LmxvY2F0aW9uKCksIGRzdFNsaWNlKTsKKyAgICBnYy0+ZHJh
d0ltYWdlKGltZywgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCk7CisgICAg
c3JjUmVjdC5tb3ZlKGltZy0+d2lkdGgoKSAtIHNyY1JlY3Qud2lkdGgoKSwgMCk7CisgICAgZHN0
UmVjdC5tb3ZlKHJlY3Qud2lkdGgoKSAtIGRzdFJlY3Qud2lkdGgoKSwgMCk7CisgICAgZ2MtPmRy
YXdJbWFnZShpbWcsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QpOworICAg
IHNyY1JlY3QubW92ZSgwLCBpbWctPmhlaWdodCgpIC0gc3JjUmVjdC5oZWlnaHQoKSk7CisgICAg
ZHN0UmVjdC5tb3ZlKDAsIHJlY3QuaGVpZ2h0KCkgLSBkc3RSZWN0LmhlaWdodCgpKTsKKyAgICBn
Yy0+ZHJhd0ltYWdlKGltZywgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCk7
CisgICAgc3JjUmVjdC5tb3ZlKC0oaW1nLT53aWR0aCgpIC0gc3JjUmVjdC53aWR0aCgpKSwgMCk7
CisgICAgZHN0UmVjdC5tb3ZlKC0ocmVjdC53aWR0aCgpIC0gZHN0UmVjdC53aWR0aCgpKSwgMCk7
CisgICAgZ2MtPmRyYXdJbWFnZShpbWcsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNy
Y1JlY3QpOworCisgICAgc3JjUmVjdCA9IEZsb2F0UmVjdChzbGljZSwgMCwgaW1nLT53aWR0aCgp
IC0gMiAqIHNsaWNlLCBzbGljZSk7CisgICAgZHN0UmVjdCA9IEZsb2F0UmVjdChyZWN0LngoKSAr
IGRzdFNsaWNlLndpZHRoKCksIHJlY3QueSgpLCByZWN0LndpZHRoKCkgLSAyICogZHN0U2xpY2Uu
d2lkdGgoKSwgZHN0U2xpY2UuaGVpZ2h0KCkpOworICAgIGdjLT5kcmF3SW1hZ2UoaW1nLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBzcmNSZWN0Lm1vdmUoMCwg
aW1nLT5oZWlnaHQoKSAtIHNyY1JlY3QuaGVpZ2h0KCkpOworICAgIGRzdFJlY3QubW92ZSgwLCBy
ZWN0LmhlaWdodCgpIC0gZHN0UmVjdC5oZWlnaHQoKSk7CisgICAgZ2MtPmRyYXdJbWFnZShpbWcs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QpOworCisgICAgc3JjUmVjdCA9
IEZsb2F0UmVjdCgwLCBzbGljZSwgc2xpY2UsIGltZy0+aGVpZ2h0KCkgLSAyICogc2xpY2UpOwor
ICAgIGRzdFJlY3QgPSBGbG9hdFJlY3QocmVjdC54KCksIHJlY3QueSgpICsgZHN0U2xpY2UuaGVp
Z2h0KCksIGRzdFNsaWNlLndpZHRoKCksIHJlY3QuaGVpZ2h0KCkgLSAyICogZHN0U2xpY2UuaGVp
Z2h0KCkpOworICAgIGdjLT5kcmF3SW1hZ2UoaW1nLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RS
ZWN0LCBzcmNSZWN0KTsKKyAgICBzcmNSZWN0Lm1vdmUoaW1nLT53aWR0aCgpIC0gc3JjUmVjdC53
aWR0aCgpLCAwKTsKKyAgICBkc3RSZWN0Lm1vdmUocmVjdC53aWR0aCgpIC0gZHN0UmVjdC53aWR0
aCgpLCAwKTsKKyAgICBnYy0+ZHJhd0ltYWdlKGltZywgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0
UmVjdCwgc3JjUmVjdCk7CisKKyAgICBzcmNSZWN0ID0gRmxvYXRSZWN0KHNsaWNlLCBzbGljZSwg
aW1nLT53aWR0aCgpIC0gMiAqIHNsaWNlLCBpbWctPmhlaWdodCgpIC0gMiAqIHNsaWNlKTsKKyAg
ICBkc3RSZWN0ID0gRmxvYXRSZWN0KHJlY3QueCgpICsgZHN0U2xpY2Uud2lkdGgoKSwgcmVjdC55
KCkgKyBkc3RTbGljZS5oZWlnaHQoKSwgcmVjdC53aWR0aCgpIC0gMiAqIGRzdFNsaWNlLndpZHRo
KCksIHJlY3QuaGVpZ2h0KCkgLSAyICogZHN0U2xpY2UuaGVpZ2h0KCkpOworICAgIGdjLT5kcmF3
SW1hZ2UoaW1nLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0KTsKK30KKwog
UGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKiBw
YWdlKQogewogICAgIHN0YXRpYyBSZW5kZXJUaGVtZSogdGhlbWUgPSBSZW5kZXJUaGVtZUJsYWNr
QmVycnk6OmNyZWF0ZSgpLmxlYWtSZWYoKTsKQEAgLTIyOSw3ICsyNzIsOCBAQCB2b2lkIFJlbmRl
clRoZW1lQmxhY2tCZXJyeTo6c3lzdGVtRm9udChpbnQgcHJvcElkLCBGb250RGVzY3JpcHRpb24m
IGZvbnREZXNjcmlwdAogewogICAgIGZsb2F0IGZvbnRTaXplID0gZGVmYXVsdEZvbnRTaXplOwog
Ci0gICAgaWYgKHByb3BJZCA9PSBDU1NWYWx1ZVdlYmtpdE1pbmlDb250cm9sIHx8IHByb3BJZCA9
PSAgQ1NTVmFsdWVXZWJraXRTbWFsbENvbnRyb2wgfHwgcHJvcElkID09IENTU1ZhbHVlV2Via2l0
Q29udHJvbCkgeworICAgIC8vIEJvdGggQ1NTVmFsdWVXZWJraXRDb250cm9sIGFuZCBDU1NWYWx1
ZVdlYmtpdFNtYWxsQ29udHJvbCBzaG91bGQgdXNlIGRlZmF1bHQgZm9udCBzaXplIHdoaWNoIGxv
b2tzIGJldHRlciBvbiB0aGUgY29udHJvbHMuCisgICAgaWYgKHByb3BJZCA9PSBDU1NWYWx1ZVdl
YmtpdE1pbmlDb250cm9sKSB7CiAgICAgICAgIC8vIFdoeSAyIHBvaW50cyBzbWFsbGVyPyBCZWNh
dXNlIHRoYXQncyB3aGF0IEdlY2tvIGRvZXMuIE5vdGUgdGhhdCB3ZQogICAgICAgICAvLyBhcmUg
YXNzdW1pbmcgYSA5NmRwaSBzY3JlZW4sIHdoaWNoIGlzIHRoZSBkZWZhdWx0IHZhbHVlIHdlIHVz
ZSBvbiBXaW5kb3dzLgogICAgICAgICBzdGF0aWMgY29uc3QgZmxvYXQgcG9pbnRzUGVySW5jaCA9
IDcyLjBmOwpAQCAtMjM3LDEwICsyODEsOSBAQCB2b2lkIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6
c3lzdGVtRm9udChpbnQgcHJvcElkLCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdAogICAg
ICAgICBmb250U2l6ZSAtPSAoMi4wZiAvIHBvaW50c1BlckluY2gpICogcGl4ZWxzUGVySW5jaDsK
ICAgICB9CiAKLSAgICBmb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKS5zZXRGYW1pbHkoZGVm
YXVsdEdVSUZvbnQoKSk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoZm9u
dFNpemUpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0Fic29sdXRlU2l6ZSh0cnVlKTsKLSAg
ICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246Ok5vRmFt
aWx5KTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRp
b246OlNhbnNTZXJpZkZhbWlseSk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250
V2VpZ2h0Tm9ybWFsKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0SXRhbGljKGZhbHNlKTsKIH0K
QEAgLTI3OCwyNyArMzIxLDI0IEBAIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludFRl
eHRGaWVsZE9yVGV4dEFyZWFPclNlYXJjaEZpZWxkKFJlbmRlck9iamVjdCoKICAgICBBU1NFUlQo
aW5mby5jb250ZXh0KTsKICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBpbmZvLmNvbnRl
eHQ7CiAKLSAgICBjb250ZXh0LT5zYXZlKCk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUo
U29saWRTdHJva2UpOwotICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhsaW5lV2lkdGgp
OwotICAgIGlmICghaXNFbmFibGVkKG9iamVjdCkpCi0gICAgICAgIGNvbnRleHQtPnNldFN0cm9r
ZUNvbG9yKGRpc2FibGVkT3V0bGluZSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgZWxzZSBp
ZiAoaXNQcmVzc2VkKG9iamVjdCkpCi0gICAgICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlR3Jh
ZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQoZGVwcmVzc2VkVG9wT3V0bGluZSwgZGVwcmVzc2Vk
Qm90dG9tT3V0bGluZSwgcmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0Lm1heFhNYXhZQ29ybmVy
KCkpKTsKLSAgICBlbHNlIGlmIChpc0hvdmVyZWQob2JqZWN0KSB8fCBpc0ZvY3VzZWQob2JqZWN0
KSkKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGll
bnQoaG92ZXJUb3BPdXRsaW5lLCBob3ZlckJvdHRvbU91dGxpbmUsIHJlY3QubWF4WE1pbllDb3Ju
ZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7Ci0gICAgZWxzZQotICAgICAgICBjb250ZXh0
LT5zZXRTdHJva2VHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChyZWd1bGFyVG9wT3V0bGlu
ZSwgcmVndWxhckJvdHRvbU91dGxpbmUsIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhY
TWF4WUNvcm5lcigpKSk7Ci0KLSAgICBQYXRoIHRleHRGaWVsZFJvdW5kZWRSZWN0YW5nbGUgPSBy
b3VuZGVkUmVjdEZvckJvcmRlcihvYmplY3QsIHJlY3QpOwotICAgIGlmIChvYmplY3QtPnN0eWxl
KCktPmFwcGVhcmFuY2UoKSA9PSBTZWFyY2hGaWVsZFBhcnQpIHsKLSAgICAgICAgLy8gV2UgZm9y
Y2UgdGhlIGZpbGwgY29sb3IgdG8gV2hpdGUgc28gYXMgdG8gbWF0Y2ggdGhlIGJhY2tncm91bmQg
Y29sb3Igb2YgdGhlIHNlYXJjaCBjYW5jZWwgYnV0dG9uIGdyYXBoaWMuCi0gICAgICAgIGNvbnRl
eHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAg
ICAgICBjb250ZXh0LT5maWxsUGF0aCh0ZXh0RmllbGRSb3VuZGVkUmVjdGFuZ2xlKTsKLSAgICAg
ICAgY29udGV4dC0+c3Ryb2tlUGF0aCh0ZXh0RmllbGRSb3VuZGVkUmVjdGFuZ2xlKTsKLSAgICB9
IGVsc2UKLSAgICAgICAgY29udGV4dC0+c3Ryb2tlUGF0aCh0ZXh0RmllbGRSb3VuZGVkUmVjdGFu
Z2xlKTsKLSAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZT4g
YmcsIGJnRGlzYWJsZWQsIGJnSGlnaGxpZ2h0OworICAgIGlmICghYmcpIHsKKyAgICAgICAgYmcg
PSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImNvcmVfdGV4dGlucHV0X2JnIikubGVha1Jl
ZigpOworICAgICAgICBiZ0Rpc2FibGVkID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJj
b3JlX3RleHRpbnB1dF9iZ19kaXNhYmxlZCIpLmxlYWtSZWYoKTsKKyAgICAgICAgYmdIaWdobGln
aHQgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImNvcmVfdGV4dGlucHV0X2JnX2hpZ2hs
aWdodCIpLmxlYWtSZWYoKTsKKyAgICAgICAgaWYgKCFiZyB8fCAhYmdEaXNhYmxlZCB8fCAhYmdI
aWdobGlnaHQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBBZmZpbmVU
cmFuc2Zvcm0gY3RtID0gY29udGV4dC0+Z2V0Q1RNKCk7CisgICAgaWYgKGlzRW5hYmxlZChvYmpl
Y3QpICYmIGJnKQorICAgICAgICBkcmF3TmluZVNsaWNlKGNvbnRleHQsIHJlY3QsIGN0bS54U2Nh
bGUoKSwgYmcuZ2V0KCksIHNtYWxsU2xpY2UpOworICAgIGlmICghaXNFbmFibGVkKG9iamVjdCkg
JiYgYmdEaXNhYmxlZCkKKyAgICAgICAgZHJhd05pbmVTbGljZShjb250ZXh0LCByZWN0LCBjdG0u
eFNjYWxlKCksIGJnRGlzYWJsZWQuZ2V0KCksIHNtYWxsU2xpY2UpOworCisgICAgaWYgKChpc0hv
dmVyZWQob2JqZWN0KSB8fCBpc0ZvY3VzZWQob2JqZWN0KSB8fCBpc1ByZXNzZWQob2JqZWN0KSkg
JiYgYmdIaWdobGlnaHQpCisgICAgICAgIGRyYXdOaW5lU2xpY2UoY29udGV4dCwgcmVjdCwgY3Rt
LnhTY2FsZSgpLCBiZ0hpZ2hsaWdodC5nZXQoKSwgc21hbGxTbGljZSk7CisKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKQEAgLTQyMyw3ICs0NjMsNTMgQEAgdm9pZCBSZW5kZXJUaGVtZUJsYWNrQmVy
cnk6OmNhbGN1bGF0ZUJ1dHRvblNpemUoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogCiBib29s
IFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRDaGVja2JveChSZW5kZXJPYmplY3QqIG9iamVj
dCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIHJl
dHVybiBwYWludEJ1dHRvbihvYmplY3QsIGluZm8sIHJlY3QpOworICAgIEFTU0VSVChpbmZvLmNv
bnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGluZm8uY29udGV4dDsKKwor
ICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGRpc2FibGVkLCBiYWNrZ3JvdW5kLCBpbmFjdGl2ZSwg
cHJlc3NlZCwgYWN0aXZlLCBhY3RpdmVNYXJrLCBkaXNhYmxlTWFyazsKKyAgICBpZiAoIWRpc2Fi
bGVkKSB7CisgICAgICAgIGRpc2FibGVkID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJj
b3JlX2NoZWNrYm94X2Rpc2FibGVkIikubGVha1JlZigpOworICAgICAgICBiYWNrZ3JvdW5kID0g
SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJjb3JlX2NoZWNrYm94X21vYXQiKS5sZWFrUmVm
KCk7CisgICAgICAgIGluYWN0aXZlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJjb3Jl
X2NoZWNrYm94X2luYWN0aXZlIikubGVha1JlZigpOworICAgICAgICBwcmVzc2VkID0gSW1hZ2U6
OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJjb3JlX2NoZWNrYm94X3ByZXNzZWQiKS5sZWFrUmVmKCk7
CisgICAgICAgIGFjdGl2ZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgiY29yZV9jaGVj
a2JveF9hY3RpdmUiKS5sZWFrUmVmKCk7CisgICAgICAgIGFjdGl2ZU1hcmsgPSBJbWFnZTo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UoImNvcmVfY2hlY2tib3hfYWN0aXZlX21hcmsiKS5sZWFrUmVmKCk7
CisgICAgICAgIGRpc2FibGVNYXJrID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJjb3Jl
X2NoZWNrYm94X2Rpc2FibGVkX21hcmsiKS5sZWFrUmVmKCk7CisgICAgICAgIGlmICghZGlzYWJs
ZWQgfHwgIWJhY2tncm91bmQgfHwgIWluYWN0aXZlIHx8ICFwcmVzc2VkIHx8ICFhY3RpdmUgfHwg
IWFjdGl2ZU1hcmsgfHwgIWRpc2FibGVNYXJrKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgLy8gQ2FjdWxhdGUgd2hlcmUgdG8gcHV0IGNlbnRlciBjaGVja21hcmsuCisg
ICAgRmxvYXRSZWN0IHRtcFJlY3QocmVjdCk7CisKKyAgICBmbG9hdCBjZW50ZXJYID0gKGZsb2F0
KGluYWN0aXZlLT53aWR0aCgpKSAtIGZsb2F0KGFjdGl2ZU1hcmstPndpZHRoKCkpKSAvIDIgLyBm
bG9hdChpbmFjdGl2ZS0+d2lkdGgoKSkgKiB0bXBSZWN0LndpZHRoKCkgKyB0bXBSZWN0LngoKTsK
KyAgICBmbG9hdCBjZW50ZXJZID0gKGZsb2F0KGluYWN0aXZlLT5oZWlnaHQoKSkgLSBmbG9hdChh
Y3RpdmVNYXJrLT5oZWlnaHQoKSkpIC8gMiAvIGZsb2F0KGluYWN0aXZlLT5oZWlnaHQoKSkgKiB0
bXBSZWN0LmhlaWdodCgpICsgdG1wUmVjdC55KCk7CisgICAgZmxvYXQgd2lkdGggPSBmbG9hdChh
Y3RpdmVNYXJrLT53aWR0aCgpKSAvIGZsb2F0KGluYWN0aXZlLT53aWR0aCgpKSAqIHRtcFJlY3Qu
d2lkdGgoKTsKKyAgICBmbG9hdCBoZWlnaHQgPSBmbG9hdChhY3RpdmVNYXJrLT5oZWlnaHQoKSkg
LyBmbG9hdChpbmFjdGl2ZS0+aGVpZ2h0KCkpICogdG1wUmVjdC5oZWlnaHQoKTsKKyAgICBGbG9h
dFJlY3QgY2VudGVyUmVjdChjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KTsKKworICAg
IGRyYXdDb250cm9sKGNvbnRleHQsIHJlY3QsIGJhY2tncm91bmQuZ2V0KCkpOworCisgICAgaWYg
KGlzRW5hYmxlZChvYmplY3QpKSB7CisgICAgICAgIGlmIChpc1ByZXNzZWQob2JqZWN0KSkgewor
ICAgICAgICAgICAgZHJhd0NvbnRyb2woY29udGV4dCwgcmVjdCwgcHJlc3NlZC5nZXQoKSk7Cisg
ICAgICAgICAgICBpZiAoaXNDaGVja2VkKG9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICAvLyBG
SVhNRTogbmVlZCBvcGFjaXR5IDMwJSBvbiBhY3RpdmVNYXJrCisgICAgICAgICAgICAgICAgZHJh
d0NvbnRyb2woY29udGV4dCwgY2VudGVyUmVjdCwgYWN0aXZlTWFyay5nZXQoKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkcmF3Q29udHJvbChjb250ZXh0
LCByZWN0LCBpbmFjdGl2ZS5nZXQoKSk7CisgICAgICAgICAgICBpZiAoaXNDaGVja2VkKG9iamVj
dCkpIHsKKyAgICAgICAgICAgICAgICBkcmF3Q29udHJvbChjb250ZXh0LCByZWN0LCBhY3RpdmUu
Z2V0KCkpOworICAgICAgICAgICAgICAgIGRyYXdDb250cm9sKGNvbnRleHQsIGNlbnRlclJlY3Qs
IGFjdGl2ZU1hcmsuZ2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNl
IHsKKyAgICAgICAgZHJhd0NvbnRyb2woY29udGV4dCwgcmVjdCwgZGlzYWJsZWQuZ2V0KCkpOwor
ICAgICAgICBpZiAoaXNDaGVja2VkKG9iamVjdCkpCisgICAgICAgICAgICBkcmF3Q29udHJvbChj
b250ZXh0LCByZWN0LCBkaXNhYmxlTWFyay5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKIH0KIAogdm9pZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnNldENoZWNrYm94U2l6ZShSZW5k
ZXJTdHlsZSogc3R5bGUpIGNvbnN0CkBAIC00MzMsNyArNTE5LDUyIEBAIHZvaWQgUmVuZGVyVGhl
bWVCbGFja0JlcnJ5OjpzZXRDaGVja2JveFNpemUoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAog
CiBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRSYWRpbyhSZW5kZXJPYmplY3QqIG9i
amVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAg
IHJldHVybiBwYWludEJ1dHRvbihvYmplY3QsIGluZm8sIHJlY3QpOworICAgIEFTU0VSVChpbmZv
LmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGluZm8uY29udGV4dDsK
KworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGRpc2FibGVkLCBkaXNhYmxlZEFjdGl2ZSwgaW5h
Y3RpdmUsIHByZXNzZWQsIGFjdGl2ZSwgYWN0aXZlTWFyazsKKyAgICBpZiAoIWRpc2FibGVkKSB7
CisgICAgICAgIGRpc2FibGVkID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJjb3JlX3Jh
ZGlvYnV0dG9uX2Rpc2FibGVkIikubGVha1JlZigpOworICAgICAgICBkaXNhYmxlZEFjdGl2ZSA9
IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgiY29yZV9yYWRpb2J1dHRvbl9kaXNhYmxlZF9h
Y3RpdmUiKS5sZWFrUmVmKCk7CisgICAgICAgIGluYWN0aXZlID0gSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKCJjb3JlX3JhZGlvYnV0dG9uX2luYWN0aXZlIikubGVha1JlZigpOworICAgICAg
ICBwcmVzc2VkID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJjb3JlX3JhZGlvYnV0dG9u
X3ByZXNzZWQiKS5sZWFrUmVmKCk7CisgICAgICAgIGFjdGl2ZSA9IEltYWdlOjpsb2FkUGxhdGZv
cm1SZXNvdXJjZSgiY29yZV9yYWRpb2J1dHRvbl9hY3RpdmUiKS5sZWFrUmVmKCk7CisgICAgICAg
IGFjdGl2ZU1hcmsgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImNvcmVfcmFkaW9idXR0
b25fYWN0aXZlX21hcmsiKS5sZWFrUmVmKCk7CisgICAgICAgIGlmICghZGlzYWJsZWQgfHwgIWRp
c2FibGVkQWN0aXZlIHx8ICFpbmFjdGl2ZSB8fCAhcHJlc3NlZCB8fCAhYWN0aXZlIHx8ICFhY3Rp
dmVNYXJrKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gQ2FjdWxh
dGUgd2hlcmUgdG8gcHV0IGNlbnRlciBjaXJjbGUuCisgICAgRmxvYXRSZWN0IHRtcFJlY3QocmVj
dCk7CisKKyAgICBmbG9hdCBjZW50ZXJYID0gKGZsb2F0KGluYWN0aXZlLT53aWR0aCgpKSAtIGZs
b2F0KGFjdGl2ZU1hcmstPndpZHRoKCkpKSAvIDIgLyBmbG9hdChpbmFjdGl2ZS0+d2lkdGgoKSkg
KiB0bXBSZWN0LndpZHRoKCkgKyB0bXBSZWN0LngoKTsKKyAgICBmbG9hdCBjZW50ZXJZID0gKGZs
b2F0KGluYWN0aXZlLT5oZWlnaHQoKSkgLSBmbG9hdChhY3RpdmVNYXJrLT5oZWlnaHQoKSkpIC8g
MiAvIGZsb2F0KGluYWN0aXZlLT5oZWlnaHQoKSkgKiB0bXBSZWN0LmhlaWdodCgpICsgdG1wUmVj
dC55KCk7CisgICAgZmxvYXQgd2lkdGggPSBmbG9hdChhY3RpdmVNYXJrLT53aWR0aCgpKSAvIGZs
b2F0KGluYWN0aXZlLT53aWR0aCgpKSAqIHRtcFJlY3Qud2lkdGgoKTsKKyAgICBmbG9hdCBoZWln
aHQgPSBmbG9hdChhY3RpdmVNYXJrLT5oZWlnaHQoKSkgLyBmbG9hdChpbmFjdGl2ZS0+aGVpZ2h0
KCkpICogdG1wUmVjdC5oZWlnaHQoKTsKKyAgICBGbG9hdFJlY3QgY2VudGVyUmVjdChjZW50ZXJY
LCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIGlmIChpc0VuYWJsZWQob2JqZWN0KSkg
eworICAgICAgICBpZiAoaXNQcmVzc2VkKG9iamVjdCkpIHsKKyAgICAgICAgICAgIGRyYXdDb250
cm9sKGNvbnRleHQsIHJlY3QsIHByZXNzZWQuZ2V0KCkpOworICAgICAgICAgICAgaWYgKGlzQ2hl
Y2tlZChvYmplY3QpKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IG5lZWQgb3BhY2l0eSAz
MCUgb24gYWN0aXZlTWFyaworICAgICAgICAgICAgICAgIGRyYXdDb250cm9sKGNvbnRleHQsIGNl
bnRlclJlY3QsIGFjdGl2ZU1hcmsuZ2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgZHJhd0NvbnRyb2woY29udGV4dCwgcmVjdCwgaW5hY3RpdmUuZ2V0
KCkpOworICAgICAgICAgICAgaWYgKGlzQ2hlY2tlZChvYmplY3QpKSB7CisgICAgICAgICAgICAg
ICAgZHJhd0NvbnRyb2woY29udGV4dCwgcmVjdCwgYWN0aXZlLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICBkcmF3Q29udHJvbChjb250ZXh0LCBjZW50ZXJSZWN0LCBhY3RpdmVNYXJrLmdldCgpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGRyYXdDb250
cm9sKGNvbnRleHQsIHJlY3QsIGluYWN0aXZlLmdldCgpKTsKKyAgICAgICAgaWYgKGlzQ2hlY2tl
ZChvYmplY3QpKQorICAgICAgICAgICAgZHJhd0NvbnRyb2woY29udGV4dCwgcmVjdCwgZGlzYWJs
ZWRBY3RpdmUuZ2V0KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkcmF3Q29udHJvbChj
b250ZXh0LCByZWN0LCBkaXNhYmxlZC5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
IH0KIAogdm9pZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnNldFJhZGlvU2l6ZShSZW5kZXJTdHls
ZSogc3R5bGUpIGNvbnN0CkBAIC00NDYsODEgKzU3NywyOCBAQCBib29sIFJlbmRlclRoZW1lQmxh
Y2tCZXJyeTo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5m
byYgaQogewogICAgIEFTU0VSVChpbmZvLmNvbnRleHQpOwogICAgIGluZm8uY29udGV4dC0+c2F2
ZSgpOworICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGluZm8uY29udGV4dDsKIAotICAg
IGluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGluZm8uY29u
dGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVXaWR0aCk7CisgICAgc3RhdGljIFJlZlB0cjxJ
bWFnZT4gZGlzYWJsZWQsIGluYWN0aXZlLCBwcmVzc2VkOworICAgIGlmICghZGlzYWJsZWQpIHsK
KyAgICAgICAgZGlzYWJsZWQgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImNvcmVfYnV0
dG9uX2Rpc2FibGVkIikubGVha1JlZigpOworICAgICAgICBpbmFjdGl2ZSA9IEltYWdlOjpsb2Fk
UGxhdGZvcm1SZXNvdXJjZSgiY29yZV9idXR0b25faW5hY3RpdmUiKS5sZWFrUmVmKCk7CisgICAg
ICAgIHByZXNzZWQgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImNvcmVfYnV0dG9uX3By
ZXNzZWQiKS5sZWFrUmVmKCk7CisgICAgICAgIGlmICghZGlzYWJsZWQgfHwgIWluYWN0aXZlIHx8
ICFwcmVzc2VkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCi0gICAgQ29sb3Ig
Y2hlY2soYmxhY2tQZW4pOworICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBjb250ZXh0LT5nZXRD
VE0oKTsKICAgICBpZiAoIWlzRW5hYmxlZChvYmplY3QpKSB7Ci0gICAgICAgIGluZm8uY29udGV4
dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KGRpc2FibGVkVG9wLCBkaXNh
YmxlZEJvdHRvbSwgcmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0Lm1heFhNYXhZQ29ybmVyKCkp
KTsKLSAgICAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihkaXNhYmxlZE91dGxpbmUs
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBkcmF3TmluZVNsaWNlKGNvbnRleHQsIHJl
Y3QsIGN0bS54U2NhbGUoKSwgaW5hY3RpdmUuZ2V0KCksIGxhcmdlU2xpY2UpOworICAgICAgICBk
cmF3TmluZVNsaWNlKGNvbnRleHQsIHJlY3QsIGN0bS54U2NhbGUoKSwgZGlzYWJsZWQuZ2V0KCks
IGxhcmdlU2xpY2UpOwogICAgIH0gZWxzZSBpZiAoaXNQcmVzc2VkKG9iamVjdCkpIHsKLSAgICAg
ICAgaW5mby5jb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQoZGVw
cmVzc2VkVG9wLCBkZXByZXNzZWRCb3R0b20sIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC5t
YXhYTWF4WUNvcm5lcigpKSk7Ci0gICAgICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlR3JhZGll
bnQoY3JlYXRlTGluZWFyR3JhZGllbnQoZGVwcmVzc2VkVG9wT3V0bGluZSwgZGVwcmVzc2VkQm90
dG9tT3V0bGluZSwgcmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0Lm1heFhNYXhZQ29ybmVyKCkp
KTsKLSAgICB9IGVsc2UgaWYgKGlzSG92ZXJlZChvYmplY3QpKSB7Ci0gICAgICAgIGluZm8uY29u
dGV4dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KGhvdmVyVG9wLCBob3Zl
ckJvdHRvbSwgcmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0Lm1heFhNYXhZQ29ybmVyKCkpKTsK
LSAgICAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFk
aWVudChob3ZlclRvcE91dGxpbmUsIGhvdmVyQm90dG9tT3V0bGluZSwgcmVjdC5tYXhYTWluWUNv
cm5lcigpLCByZWN0Lm1heFhNYXhZQ29ybmVyKCkpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBp
bmZvLmNvbnRleHQtPnNldEZpbGxHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChyZWd1bGFy
VG9wLCByZWd1bGFyQm90dG9tLCByZWN0Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4WE1heFlD
b3JuZXIoKSkpOwotICAgICAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KGNyZWF0
ZUxpbmVhckdyYWRpZW50KHJlZ3VsYXJUb3BPdXRsaW5lLCByZWd1bGFyQm90dG9tT3V0bGluZSwg
cmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0Lm1heFhNYXhZQ29ybmVyKCkpKTsKLSAgICB9Ci0K
LSAgICBDb250cm9sUGFydCBwYXJ0ID0gb2JqZWN0LT5zdHlsZSgpLT5hcHBlYXJhbmNlKCk7Ci0g
ICAgc3dpdGNoIChwYXJ0KSB7Ci0gICAgY2FzZSBDaGVja2JveFBhcnQ6IHsKLSAgICAgICAgRmxv
YXRTaXplIHNtYWxsQ29ybmVyKHNtYWxsUmFkaXVzLCBzbWFsbFJhZGl1cyk7Ci0gICAgICAgIFBh
dGggcGF0aDsKLSAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0LCBzbWFsbENvcm5lcik7
Ci0gICAgICAgIGluZm8uY29udGV4dC0+ZmlsbFBhdGgocGF0aCk7Ci0gICAgICAgIGluZm8uY29u
dGV4dC0+c3Ryb2tlUGF0aChwYXRoKTsKLQotICAgICAgICBpZiAoaXNDaGVja2VkKG9iamVjdCkp
IHsKLSAgICAgICAgICAgIFBhdGggY2hlY2tQYXRoOwotICAgICAgICAgICAgSW50UmVjdCByZWN0
MiA9IHJlY3Q7Ci0gICAgICAgICAgICByZWN0Mi5pbmZsYXRlKC0xKTsKLSAgICAgICAgICAgIGNo
ZWNrUGF0aC5tb3ZlVG8oRmxvYXRQb2ludChyZWN0Mi54KCkgKyByZWN0Mi53aWR0aCgpICogY2hl
Y2tib3hMZWZ0WCwgcmVjdDIueSgpICsgcmVjdDIuaGVpZ2h0KCkgKiBjaGVja2JveExlZnRZKSk7
Ci0gICAgICAgICAgICBjaGVja1BhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQocmVjdDIueCgpICsg
cmVjdDIud2lkdGgoKSAqIGNoZWNrYm94TWlkZGxlWCwgcmVjdDIubWF4WSgpIC0gcmVjdDIuaGVp
Z2h0KCkgKiBjaGVja2JveE1pZGRsZVkpKTsKLSAgICAgICAgICAgIGNoZWNrUGF0aC5hZGRMaW5l
VG8oRmxvYXRQb2ludChyZWN0Mi54KCkgKyByZWN0Mi53aWR0aCgpICogY2hlY2tib3hSaWdodFgs
IHJlY3QyLnkoKSArIHJlY3QyLmhlaWdodCgpICogY2hlY2tib3hSaWdodFkpKTsKLSAgICAgICAg
ICAgIGluZm8uY29udGV4dC0+c2V0TGluZUNhcChSb3VuZENhcCk7Ci0gICAgICAgICAgICBpbmZv
LmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGJsYWNrUGVuLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
LSAgICAgICAgICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKHJlY3QyLndpZHRo
KCkgLyBjaGVja2JveFN0cm9rZVRoaWNrbmVzcyk7Ci0gICAgICAgICAgICBpbmZvLmNvbnRleHQt
PmZpbGxQYXRoKGNoZWNrUGF0aCk7Ci0gICAgICAgICAgICBpbmZvLmNvbnRleHQtPnN0cm9rZVBh
dGgoY2hlY2tQYXRoKTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2Fz
ZSBSYWRpb1BhcnQ6Ci0gICAgICAgIGluZm8uY29udGV4dC0+ZHJhd0VsbGlwc2UocmVjdCk7Ci0g
ICAgICAgIGlmIChpc0NoZWNrZWQob2JqZWN0KSkgewotICAgICAgICAgICAgSW50UmVjdCByZWN0
MiA9IHJlY3Q7Ci0gICAgICAgICAgICByZWN0Mi5pbmZsYXRlKC1yZWN0LndpZHRoKCkgKiByYWRp
b0J1dHRvbkNoZWNrU3RhdGVTY2FsZXIpOwotICAgICAgICAgICAgaW5mby5jb250ZXh0LT5zZXRG
aWxsQ29sb3IoY2hlY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICAgICAgaW5mby5j
b250ZXh0LT5zZXRTdHJva2VDb2xvcihjaGVjaywgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAg
ICAgICAgICBpbmZvLmNvbnRleHQtPmRyYXdFbGxpcHNlKHJlY3QyKTsKLSAgICAgICAgfQotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEJ1dHRvblBhcnQ6Ci0gICAgY2FzZSBQdXNoQnV0dG9uUGFy
dDogewotICAgICAgICBGbG9hdFNpemUgbGFyZ2VDb3JuZXIobGFyZ2VSYWRpdXMsIGxhcmdlUmFk
aXVzKTsKLSAgICAgICAgUGF0aCBwYXRoOwotICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJl
Y3QsIGxhcmdlQ29ybmVyKTsKLSAgICAgICAgaW5mby5jb250ZXh0LT5maWxsUGF0aChwYXRoKTsK
LSAgICAgICAgaW5mby5jb250ZXh0LT5zdHJva2VQYXRoKHBhdGgpOwotICAgICAgICBicmVhazsK
LSAgICB9Ci0gICAgY2FzZSBTcXVhcmVCdXR0b25QYXJ0OiB7Ci0gICAgICAgIFBhdGggcGF0aDsK
LSAgICAgICAgcGF0aC5hZGRSZWN0KHJlY3QpOwotICAgICAgICBpbmZvLmNvbnRleHQtPmZpbGxQ
YXRoKHBhdGgpOwotICAgICAgICBpbmZvLmNvbnRleHQtPnN0cm9rZVBhdGgocGF0aCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgICBpbmZvLmNvbnRleHQtPnJl
c3RvcmUoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQorICAgICAgICBkcmF3TmluZVNs
aWNlKGNvbnRleHQsIHJlY3QsIGN0bS54U2NhbGUoKSwgcHJlc3NlZC5nZXQoKSwgbGFyZ2VTbGlj
ZSk7CisgICAgICAgIG9iamVjdC0+c3R5bGUoKS0+c2V0VGV4dEZpbGxDb2xvcihhY3RpdmVUZXh0
Q29sb3IpOworICAgIH0gZWxzZQorICAgICAgICBkcmF3TmluZVNsaWNlKGNvbnRleHQsIHJlY3Qs
IGN0bS54U2NhbGUoKSwgaW5hY3RpdmUuZ2V0KCksIGxhcmdlU2xpY2UpOwogCi0gICAgaW5mby5j
b250ZXh0LT5yZXN0b3JlKCk7CisgICAgY29udGV4dC0+cmVzdG9yZSgpOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIApAQCAtNTQ5LDQzICs2MjcsNiBAQCB2b2lkIFJlbmRlclRoZW1lQmxhY2tCZXJy
eTo6YWRqdXN0UmFkaW9TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLAog
ICAgIHN0eWxlLT5zZXRDdXJzb3IoQ1VSU09SX1dFQktJVF9HUkFCKTsKIH0KIAotdm9pZCBSZW5k
ZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudEFuZEFycm93KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgUmVuZGVyT2JqZWN0KiBvYmplY3QsIEludFJlY3QgYnV0
dG9uUmVjdCwgY29uc3QgUGF0aCYgY2xpcFBhdGgpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQpOwot
ICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICBpZiAoIWlzRW5hYmxlZChvYmplY3QpKQotICAgICAg
ICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQoZGlzYWJsZWRU
b3AsIGRpc2FibGVkQm90dG9tLCBidXR0b25SZWN0Lm1heFhNaW5ZQ29ybmVyKCksIGJ1dHRvblJl
Y3QubWF4WE1heFlDb3JuZXIoKSkpOwotICAgIGVsc2UgaWYgKGlzUHJlc3NlZChvYmplY3QpKQot
ICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQoZGVw
cmVzc2VkVG9wLCBkZXByZXNzZWRCb3R0b20sIGJ1dHRvblJlY3QubWF4WE1pbllDb3JuZXIoKSwg
YnV0dG9uUmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7Ci0gICAgZWxzZSBpZiAoaXNIb3ZlcmVkKG9i
amVjdCkpCi0gICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFk
aWVudChob3ZlclRvcCwgaG92ZXJCb3R0b20sIGJ1dHRvblJlY3QubWF4WE1pbllDb3JuZXIoKSwg
YnV0dG9uUmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7Ci0gICAgZWxzZQotICAgICAgICBjb250ZXh0
LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQocmVndWxhclRvcCwgcmVndWxh
ckJvdHRvbSwgYnV0dG9uUmVjdC5tYXhYTWluWUNvcm5lcigpLCBidXR0b25SZWN0Lm1heFhNYXhZ
Q29ybmVyKCkpKTsKLQotICAgIC8vIDEuIFBhaW50IHRoZSBiYWNrZ3JvdW5kIG9mIHRoZSBidXR0
b24uCi0gICAgY29udGV4dC0+Y2xpcChjbGlwUGF0aCk7Ci0gICAgY29udGV4dC0+ZHJhd1JlY3Qo
YnV0dG9uUmVjdCk7Ci0gICAgY29udGV4dC0+cmVzdG9yZSgpOwotCi0gICAgLy8gMi4gUGFpbnQg
dGhlIGJ1dHRvbiBhcnJvdy4KLSAgICBidXR0b25SZWN0LmluZmxhdGUoLWJ1dHRvblJlY3Qud2lk
dGgoKSAvIDMpOwotICAgIGJ1dHRvblJlY3QubW92ZSgwLCBidXR0b25SZWN0LmhlaWdodCgpICog
NyAvIDIwKTsKLSAgICBQYXRoIHBhdGg7Ci0gICAgcGF0aC5tb3ZlVG8oRmxvYXRQb2ludChidXR0
b25SZWN0LngoKSwgYnV0dG9uUmVjdC55KCkpKTsKLSAgICBwYXRoLmFkZExpbmVUbyhGbG9hdFBv
aW50KGJ1dHRvblJlY3QueCgpICsgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0b25SZWN0LnkoKSkp
OwotICAgIHBhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQoYnV0dG9uUmVjdC54KCkgKyBidXR0b25S
ZWN0LndpZHRoKCkgLyAyLjAsIGJ1dHRvblJlY3QueSgpICsgYnV0dG9uUmVjdC5oZWlnaHQoKSAv
IDIuMCkpOwotICAgIHBhdGguY2xvc2VTdWJwYXRoKCk7Ci0KLSAgICBjb250ZXh0LT5zYXZlKCk7
Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGNvbnRleHQt
PnNldFN0cm9rZVRoaWNrbmVzcyhsaW5lV2lkdGgpOwotICAgIGNvbnRleHQtPnNldFN0cm9rZUNv
bG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGV4dC0+c2V0
RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGV4
dC0+c2V0TGluZUpvaW4oQmV2ZWxKb2luKTsKLSAgICBjb250ZXh0LT5maWxsUGF0aChwYXRoKTsK
LSAgICBjb250ZXh0LT5yZXN0b3JlKCk7Ci19Ci0KIHN0YXRpYyBJbnRSZWN0IGNvbXB1dGVNZW51
TGlzdEFycm93QnV0dG9uUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIC8vIEZJWE1F
OiBUaGUgbWVudSBsaXN0IGFycm93IGJ1dHRvbiBzaG91bGQgaGF2ZSBhIG1pbmltdW0gYW5kIG1h
eGltdW0gd2lkdGggKHRvIGVuc3VyZSB1c2FiaWxpdHkpIG9yCkBAIC01OTMsNzcgKzYzNCw1MCBA
QCBzdGF0aWMgSW50UmVjdCBjb21wdXRlTWVudUxpc3RBcnJvd0J1dHRvblJlY3QoY29uc3QgSW50
UmVjdCYgcmVjdCkKICAgICByZXR1cm4gSW50UmVjdChJbnRQb2ludChyZWN0Lm1heFgoKSAtIHJl
Y3QuaGVpZ2h0KCksIHJlY3QueSgpKSwgSW50U2l6ZShyZWN0LmhlaWdodCgpLCByZWN0LmhlaWdo
dCgpKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50TWVudUxpc3RCYWNrZ3JvdW5kKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgUGF0aCYgbWVudUxpc3RQYXRoLCBjb25zdCBDb2xvciYg
YmFja2dyb3VuZENvbG9yKQotewotICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICBjb250ZXh0LT5z
YXZlKCk7Ci0gICAgY29udGV4dC0+c2V0RmlsbENvbG9yKGJhY2tncm91bmRDb2xvciwgQ29sb3JT
cGFjZURldmljZVJHQik7Ci0gICAgY29udGV4dC0+ZmlsbFBhdGgobWVudUxpc3RQYXRoKTsKLSAg
ICBjb250ZXh0LT5yZXN0b3JlKCk7Ci19Ci0KIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5Ojpw
YWludE1lbnVMaXN0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8s
IGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgLy8gTm90ZSwgdGhpcyBtZXRob2QgaXMgbm90
IGNhbGxlZCBpZiB0aGUgbWVudSBsaXN0IGV4cGxpY2l0bHkgc3BlY2lmaWVzIGVpdGhlciBhIGJv
cmRlciBvciBiYWNrZ3JvdW5kIGNvbG9yLgotICAgIC8vIEluc3RlYWQsIFJlbmRlclRoZW1lQmxh
Y2tCZXJyeTo6cGFpbnRNZW51TGlzdEJ1dHRvbiBpcyBjYWxsZWQuIFRoZXJlZm9yZSwgd2hlbiB0
aGlzIG1ldGhvZCBpcyBjYWxsZWQsIHdlIGRvbid0Ci0gICAgLy8gaGF2ZSB0byBhZGp1c3QgcmVj
dCB3aXRoIHJlc3BlY3QgdG8gdGhlIGJvcmRlciBkaW1lbnNpb25zLgotCiAgICAgQVNTRVJUKGlu
Zm8uY29udGV4dCk7CisgICAgaW5mby5jb250ZXh0LT5zYXZlKCk7CiAgICAgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0ID0gaW5mby5jb250ZXh0OwogCi0gICAgUGF0aCBtZW51TGlzdFJvdW5kZWRS
ZWN0YW5nbGUgPSByb3VuZGVkUmVjdEZvckJvcmRlcihvYmplY3QsIHJlY3QpOwotCi0gICAgLy8g
MS4gUGFpbnQgdGhlIGJhY2tncm91bmQgb2YgdGhlIGVudGlyZSBjb250cm9sLgotICAgIHBhaW50
TWVudUxpc3RCYWNrZ3JvdW5kKGNvbnRleHQsIG1lbnVMaXN0Um91bmRlZFJlY3RhbmdsZSwgQ29s
b3I6OndoaXRlKTsKLQotICAgIC8vIDIuIFBhaW50IHRoZSBiYWNrZ3JvdW5kIG9mIHRoZSBidXR0
b24gYW5kIGl0cyBhcnJvdy4KLSAgICBJbnRSZWN0IGFycm93QnV0dG9uUmVjdGFuZ2xlID0gY29t
cHV0ZU1lbnVMaXN0QXJyb3dCdXR0b25SZWN0KHJlY3QpOwotICAgIHBhaW50TWVudUxpc3RCdXR0
b25HcmFkaWVudEFuZEFycm93KGNvbnRleHQsIG9iamVjdCwgYXJyb3dCdXR0b25SZWN0YW5nbGUs
IG1lbnVMaXN0Um91bmRlZFJlY3RhbmdsZSk7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZT4gZGlz
YWJsZWQsIGluYWN0aXZlLCBwcmVzc2VkLCBhcnJvd1VwLCBhcnJvd1VwUHJlc3NlZDsKKyAgICBp
ZiAoIWRpc2FibGVkKSB7CisgICAgICAgIGRpc2FibGVkID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJl
c291cmNlKCJjb3JlX2J1dHRvbl9kaXNhYmxlZCIpLmxlYWtSZWYoKTsKKyAgICAgICAgaW5hY3Rp
dmUgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImNvcmVfYnV0dG9uX2luYWN0aXZlIiku
bGVha1JlZigpOworICAgICAgICBwcmVzc2VkID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNl
KCJjb3JlX2J1dHRvbl9wcmVzc2VkIikubGVha1JlZigpOworICAgICAgICBhcnJvd1VwID0gSW1h
Z2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJjb3JlX2Ryb3Bkb3duX2J1dHRvbl9hcnJvd3VwIiku
bGVha1JlZigpOworICAgICAgICBhcnJvd1VwUHJlc3NlZCA9IEltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZSgiY29yZV9kcm9wZG93bl9idXR0b25fYXJyb3d1cF9wcmVzc2VkIikubGVha1JlZigp
OworICAgICAgICBpZiAoIWRpc2FibGVkIHx8ICFpbmFjdGl2ZSB8fCAhcHJlc3NlZCB8fCAhYXJy
b3dVcCB8fCAhYXJyb3dVcFByZXNzZWQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CiAKLSAgICAvLyA0LiBTdHJva2UgYW4gb3V0bGluZSBhcm91bmQgdGhlIGVudGlyZSBjb250cm9s
LgotICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICBjb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xp
ZFN0cm9rZSk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVXaWR0aCk7Ci0g
ICAgaWYgKCFpc0VuYWJsZWQob2JqZWN0KSkKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29s
b3IoZGlzYWJsZWRPdXRsaW5lLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBlbHNlIGlmIChp
c1ByZXNzZWQob2JqZWN0KSkKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoY3Jl
YXRlTGluZWFyR3JhZGllbnQoZGVwcmVzc2VkVG9wT3V0bGluZSwgZGVwcmVzc2VkQm90dG9tT3V0
bGluZSwgcmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0Lm1heFhNYXhZQ29ybmVyKCkpKTsKLSAg
ICBlbHNlIGlmIChpc0hvdmVyZWQob2JqZWN0KSkKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tl
R3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQoaG92ZXJUb3BPdXRsaW5lLCBob3ZlckJvdHRv
bU91dGxpbmUsIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7
Ci0gICAgZWxzZQotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VHcmFkaWVudChjcmVhdGVMaW5l
YXJHcmFkaWVudChyZWd1bGFyVG9wT3V0bGluZSwgcmVndWxhckJvdHRvbU91dGxpbmUsIHJlY3Qu
bWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7CisgICAgRmxvYXRSZWN0
IGFycm93QnV0dG9uUmVjdGFuZ2xlKGNvbXB1dGVNZW51TGlzdEFycm93QnV0dG9uUmVjdChyZWN0
KSk7CisgICAgZmxvYXQgeCA9IGFycm93QnV0dG9uUmVjdGFuZ2xlLngoKSArIGFycm93QnV0dG9u
UmVjdGFuZ2xlLndpZHRoKCkgLyB4UG9zaXRpb25SYXRpbzsKKyAgICBmbG9hdCB5ID0gYXJyb3dC
dXR0b25SZWN0YW5nbGUueSgpICsgYXJyb3dCdXR0b25SZWN0YW5nbGUuaGVpZ2h0KCkgKiB5UG9z
aXRpb25SYXRpbzsKKyAgICBmbG9hdCB3aWR0aCA9IGFycm93QnV0dG9uUmVjdGFuZ2xlLndpZHRo
KCkgLyB3aWR0aFJhdGlvOworICAgIGZsb2F0IGhlaWdodCA9IGFycm93QnV0dG9uUmVjdGFuZ2xl
LmhlaWdodCgpICogaGVpZ2h0UmF0aW87CisgICAgRmxvYXRSZWN0IHRtcFJlY3QoeCwgeSwgd2lk
dGgsIGhlaWdodCk7CiAKLSAgICBjb250ZXh0LT5zdHJva2VQYXRoKG1lbnVMaXN0Um91bmRlZFJl
Y3RhbmdsZSk7CisgICAgQWZmaW5lVHJhbnNmb3JtIGN0bSA9IGNvbnRleHQtPmdldENUTSgpOwor
ICAgIGlmICghaXNFbmFibGVkKG9iamVjdCkpIHsKKyAgICAgICAgZHJhd05pbmVTbGljZShjb250
ZXh0LCByZWN0LCBjdG0ueFNjYWxlKCksIGluYWN0aXZlLmdldCgpLCBsYXJnZVNsaWNlKTsKKyAg
ICAgICAgZHJhd05pbmVTbGljZShjb250ZXh0LCByZWN0LCBjdG0ueFNjYWxlKCksIGRpc2FibGVk
LmdldCgpLCBsYXJnZVNsaWNlKTsKKyAgICAgICAgZHJhd0NvbnRyb2woY29udGV4dCwgdG1wUmVj
dCwgYXJyb3dVcC5nZXQoKSk7IC8vIEZJWE1FOiBzaG91bGQgaGF2ZSBhIGRpc2FibGVkIGltYWdl
LgorICAgIH0gZWxzZSBpZiAoaXNGb2N1c2VkKG9iamVjdCkpIHsKKyAgICAgICAgZHJhd05pbmVT
bGljZShjb250ZXh0LCByZWN0LCBjdG0ueFNjYWxlKCksIHByZXNzZWQuZ2V0KCksIGxhcmdlU2xp
Y2UpOworICAgICAgICBkcmF3Q29udHJvbChjb250ZXh0LCB0bXBSZWN0LCBhcnJvd1VwUHJlc3Nl
ZC5nZXQoKSk7CisgICAgICAgIG9iamVjdC0+c3R5bGUoKS0+c2V0VGV4dEZpbGxDb2xvcihhY3Rp
dmVUZXh0Q29sb3IpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRyYXdOaW5lU2xpY2UoY29udGV4
dCwgcmVjdCwgY3RtLnhTY2FsZSgpLCBpbmFjdGl2ZS5nZXQoKSwgbGFyZ2VTbGljZSk7CisgICAg
ICAgIGRyYXdDb250cm9sKGNvbnRleHQsIHRtcFJlY3QsIGFycm93VXAuZ2V0KCkpOworICAgIH0K
ICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIFJl
bmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZW51TGlzdEJ1dHRvbihSZW5kZXJPYmplY3QqIG9i
amVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAg
IC8vIE5vdGUsIHRoaXMgbWV0aG9kIGlzIG9ubHkgY2FsbGVkIGlmIHRoZSBtZW51IGxpc3QgZXhw
bGljaXRseSBzcGVjaWZpZXMgZWl0aGVyIGEgYm9yZGVyIG9yIGJhY2tncm91bmQgY29sb3IuCi0g
ICAgLy8gT3RoZXJ3aXNlLCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVudUxpc3QgaXMg
Y2FsbGVkLiBXZSBuZWVkIHRvIGZpdCB0aGUgYXJyb3cgYnV0dG9uIHdpdGggdGhlIGJvcmRlciBi
b3gKLSAgICAvLyBvZiB0aGUgbWVudS1saXN0IHNvIGFzIHRvIG5vdCBvY2NsdWRlIHRoZSBjdXN0
b20gYm9yZGVyLgotCi0gICAgLy8gV2UgY29tcHV0ZSBtZW51TGlzdFJvdW5kZWRSZWN0YW5nbGUg
d2l0aCByZXNwZWN0IHRvIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBlbnRpcmUgbWVudS1saXN0IGNv
bnRyb2wgKGkuZS4gcmVjdCkgYW5kCi0gICAgLy8gaXRzIGJvcmRlciByYWRpdXMgc28gdGhhdCB3
ZSBjbGlwIHRoZSBjb250b3VyIG9mIHRoZSBhcnJvdyBidXR0b24gKHdoZW4gd2UgcGFpbnQgaXQg
YmVsb3cpIHRvIG1hdGNoIHRoZSBjb250b3VyIG9mCi0gICAgLy8gdGhlIGNvbnRyb2wuCi0gICAg
UGF0aCBtZW51TGlzdFJvdW5kZWRSZWN0YW5nbGUgPSByb3VuZGVkUmVjdEZvckJvcmRlcihvYmpl
Y3QsIHJlY3QpOwotCi0gICAgLy8gMS4gUGFpbnQgdGhlIGJhY2tncm91bmQgb2YgdGhlIGVudGly
ZSBjb250cm9sLgotICAgIENvbG9yIGZpbGxDb2xvciA9IG9iamVjdC0+c3R5bGUoKS0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKLSAgICBpZiAoIWZp
bGxDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIGZpbGxDb2xvciA9IENvbG9yOjp3aGl0ZTsKLSAg
ICBwYWludE1lbnVMaXN0QmFja2dyb3VuZChpbmZvLmNvbnRleHQsIG1lbnVMaXN0Um91bmRlZFJl
Y3RhbmdsZSwgZmlsbENvbG9yKTsKLQotICAgIC8vIDIuIFBhaW50IHRoZSBiYWNrZ3JvdW5kIG9m
IHRoZSBidXR0b24gYW5kIGl0cyBhcnJvdy4KLSAgICBJbnRSZWN0IGJvdW5kcyA9IEludFJlY3Qo
cmVjdC54KCkgKyBvYmplY3QtPnN0eWxlKCktPmJvcmRlckxlZnRXaWR0aCgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlY3QueSgpICsgb2JqZWN0LT5zdHlsZSgpLT5ib3JkZXJUb3BXaWR0
aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Qud2lkdGgoKSAtIG9iamVjdC0+c3R5
bGUoKS0+Ym9yZGVyTGVmdFdpZHRoKCkgLSBvYmplY3QtPnN0eWxlKCktPmJvcmRlclJpZ2h0V2lk
dGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LmhlaWdodCgpIC0gb2JqZWN0LT5z
dHlsZSgpLT5ib3JkZXJUb3BXaWR0aCgpIC0gb2JqZWN0LT5zdHlsZSgpLT5ib3JkZXJCb3R0b21X
aWR0aCgpKTsKLQotICAgIEludFJlY3QgYXJyb3dCdXR0b25SZWN0YW5nbGUgPSBjb21wdXRlTWVu
dUxpc3RBcnJvd0J1dHRvblJlY3QoYm91bmRzKTsgLy8gRml0IHRoZSBhcnJvdyBidXR0b24gd2l0
aGluIHRoZSBib3JkZXIgYm94IG9mIHRoZSBtZW51LWxpc3QuCi0gICAgcGFpbnRNZW51TGlzdEJ1
dHRvbkdyYWRpZW50QW5kQXJyb3coaW5mby5jb250ZXh0LCBvYmplY3QsIGFycm93QnV0dG9uUmVj
dGFuZ2xlLCBtZW51TGlzdFJvdW5kZWRSZWN0YW5nbGUpOwotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gcGFpbnRNZW51TGlzdChvYmplY3QsIGluZm8sIHJlY3QpOwogfQogCiB2b2lkIFJl
bmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlKiBz
dHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKQEAgLTcxMyw3NyArNzI3LDcxIEBAIGJvb2wg
UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludFNsaWRlclRyYWNrUmVjdChSZW5kZXJPYmplY3Qq
IG9iamVjdCwgY29uc3QgUGFpCiBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRTbGlk
ZXJUcmFja1JlY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywg
Y29uc3QgSW50UmVjdCYgcmVjdCwKICAgICAgICAgUkdCQTMyIHN0cm9rZUNvbG9yU3RhcnQsIFJH
QkEzMiBzdHJva2VDb2xvckVuZCwgUkdCQTMyIGZpbGxDb2xvclN0YXJ0LCBSR0JBMzIgZmlsbENv
bG9yRW5kKQogewotICAgIEZsb2F0U2l6ZSBzbWFsbENvcm5lcihzbWFsbFJhZGl1cywgc21hbGxS
YWRpdXMpOwotCisgICAgQVNTRVJUKGluZm8uY29udGV4dCk7CiAgICAgaW5mby5jb250ZXh0LT5z
YXZlKCk7Ci0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0g
ICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MobGluZVdpZHRoKTsKKyAgICBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQgPSBpbmZvLmNvbnRleHQ7CiAKLSAgICBpbmZvLmNvbnRleHQt
PnNldFN0cm9rZUdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KHN0cm9rZUNvbG9yU3RhcnQs
IHN0cm9rZUNvbG9yRW5kLCByZWN0Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QuIG1heFhNYXhZQ29y
bmVyKCkpKTsKLSAgICBpbmZvLmNvbnRleHQtPnNldEZpbGxHcmFkaWVudChjcmVhdGVMaW5lYXJH
cmFkaWVudChmaWxsQ29sb3JTdGFydCwgZmlsbENvbG9yRW5kLCByZWN0Lm1heFhNaW5ZQ29ybmVy
KCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSkpOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGRp
c2FibGVkLCBpbmFjdGl2ZTsKKyAgICBpZiAoIWRpc2FibGVkKSB7CisgICAgICAgIGRpc2FibGVk
ID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJjb3JlX3NsaWRlcl9maWxsX2Rpc2FibGVk
IikubGVha1JlZigpOworICAgICAgICBpbmFjdGl2ZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZSgiY29yZV9zbGlkZXJfYmciKS5sZWFrUmVmKCk7CisgICAgICAgIGlmICghZGlzYWJsZWQg
fHwgIWluYWN0aXZlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCi0gICAgUGF0
aCBwYXRoOwotICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgc21hbGxDb3JuZXIpOwotICAg
IGluZm8uY29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CisgICAgaWYgKGlzRW5hYmxlZChvYmplY3Qp
KQorICAgICAgICBkcmF3VGhyZWVTbGljZShjb250ZXh0LCByZWN0LCBpbmFjdGl2ZS5nZXQoKSwg
bWVkaXVtU2xpY2UpOworICAgIGVsc2UKKyAgICAgICAgZHJhd1RocmVlU2xpY2UoY29udGV4dCwg
cmVjdCwgZGlzYWJsZWQuZ2V0KCksIChzbWFsbFNsaWNlIC0gMSkpOwogCi0gICAgaW5mby5jb250
ZXh0LT5yZXN0b3JlKCk7CisgICAgY29udGV4dC0+cmVzdG9yZSgpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50U2xpZGVyVGh1bWIoUmVu
ZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYg
cmVjdCkKIHsKLSAgICBGbG9hdFNpemUgbGFyZ2VDb3JuZXIobGFyZ2VSYWRpdXMsIGxhcmdlUmFk
aXVzKTsKLQorICAgIEFTU0VSVChpbmZvLmNvbnRleHQpOwogICAgIGluZm8uY29udGV4dC0+c2F2
ZSgpOwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAg
IGluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVXaWR0aCk7CisgICAgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0ID0gaW5mby5jb250ZXh0OwogCi0gICAgaWYgKGlzUHJlc3NlZChv
YmplY3QpIHx8IGlzSG92ZXJlZChvYmplY3QpKSB7Ci0gICAgICAgIGluZm8uY29udGV4dC0+c2V0
U3Ryb2tlR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQoaG92ZXJUb3BPdXRsaW5lLCBob3Zl
ckJvdHRvbU91dGxpbmUsIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC4gbWF4WE1heFlDb3Ju
ZXIoKSkpOwotICAgICAgICBpbmZvLmNvbnRleHQtPnNldEZpbGxHcmFkaWVudChjcmVhdGVMaW5l
YXJHcmFkaWVudChob3ZlclRvcCwgaG92ZXJCb3R0b20sIHJlY3QubWF4WE1pbllDb3JuZXIoKSwg
cmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaW5mby5jb250
ZXh0LT5zZXRTdHJva2VHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChyZWd1bGFyVG9wT3V0
bGluZSwgcmVndWxhckJvdHRvbU91dGxpbmUsIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC4g
bWF4WE1heFlDb3JuZXIoKSkpOwotICAgICAgICBpbmZvLmNvbnRleHQtPnNldEZpbGxHcmFkaWVu
dChjcmVhdGVMaW5lYXJHcmFkaWVudChyZWd1bGFyVG9wLCByZWd1bGFyQm90dG9tLCByZWN0Lm1h
eFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSkpOworICAgIHN0YXRpYyBSZWZQ
dHI8SW1hZ2U+IGRpc2FibGVkLCBpbmFjdGl2ZSwgcHJlc3NlZCwgYXVyYTsKKyAgICBpZiAoIWRp
c2FibGVkKSB7CisgICAgICAgIGRpc2FibGVkID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNl
KCJjb3JlX3NsaWRlcl9oYW5kbGVfZGlzYWJsZWQiKS5sZWFrUmVmKCk7CisgICAgICAgIGluYWN0
aXZlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJjb3JlX3NsaWRlcl9oYW5kbGUiKS5s
ZWFrUmVmKCk7CisgICAgICAgIHByZXNzZWQgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2Uo
ImNvcmVfc2xpZGVyX2hhbmRsZV9wcmVzc2VkIikubGVha1JlZigpOworICAgICAgICBhdXJhID0g
SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJjb3JlX3NsaWRlcl9hdXJhIikubGVha1JlZigp
OworICAgICAgICBpZiAoIWRpc2FibGVkIHx8ICFpbmFjdGl2ZSB8fCAhcHJlc3NlZCB8fCAhYXVy
YSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIFBhdGggcGF0aDsKLSAg
ICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIGxhcmdlQ29ybmVyKTsKLSAgICBpbmZvLmNvbnRl
eHQtPmZpbGxQYXRoKHBhdGgpOwotCi0gICAgYm9vbCBpc1ZlcnRpY2FsID0gcmVjdC53aWR0aCgp
ID4gcmVjdC5oZWlnaHQoKTsKLSAgICBJbnRQb2ludCBzdGFydFBvaW50KHJlY3QueCgpICsgKGlz
VmVydGljYWwgPyA1IDogMiksIHJlY3QueSgpICsgKGlzVmVydGljYWwgPyAyIDogNSkpOwotICAg
IEludFBvaW50IGVuZFBvaW50KHJlY3QueCgpICsgKGlzVmVydGljYWwgPyAyMCA6IDIpLCByZWN0
LnkoKSArIChpc1ZlcnRpY2FsID8gMiA6IDIwKSk7Ci0gICAgY29uc3QgaW50IGxpbmVPZmZzZXQg
PSAyOwotICAgIGNvbnN0IGludCBzaGFkb3dPZmZzZXQgPSAxOworICAgIEZsb2F0UmVjdCB0bXBS
ZWN0KHJlY3QpOworICAgIGZsb2F0IGxlbmd0aCA9IHN0ZDo6bWF4KHRtcFJlY3Qud2lkdGgoKSwg
dG1wUmVjdC5oZWlnaHQoKSk7CisgICAgaWYgKHRtcFJlY3Qud2lkdGgoKSA+IHRtcFJlY3QuaGVp
Z2h0KCkpIHsKKyAgICAgICAgdG1wUmVjdC5zZXRZKHRtcFJlY3QueSgpIC0gKGxlbmd0aCAtIHRt
cFJlY3QuaGVpZ2h0KCkpIC8gMik7CisgICAgICAgIHRtcFJlY3Quc2V0SGVpZ2h0KGxlbmd0aCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgdG1wUmVjdC5zZXRYKHRtcFJlY3QueCgpIC0gKGxlbmd0
aCAtIHRtcFJlY3Qud2lkdGgoKSkgLyAyKTsKKyAgICAgICAgdG1wUmVjdC5zZXRXaWR0aChsZW5n
dGgpOworICAgIH0KIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKSB7Ci0gICAgICAg
IGlmIChpc1ZlcnRpY2FsKSB7Ci0gICAgICAgICAgICBzdGFydFBvaW50LnNldFkoc3RhcnRQb2lu
dC55KCkgKyBsaW5lT2Zmc2V0KTsKLSAgICAgICAgICAgIGVuZFBvaW50LnNldFkoZW5kUG9pbnQu
eSgpICsgbGluZU9mZnNldCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdGFydFBv
aW50LnNldFgoc3RhcnRQb2ludC54KCkgKyBsaW5lT2Zmc2V0KTsKLSAgICAgICAgICAgIGVuZFBv
aW50LnNldFgoZW5kUG9pbnQueCgpICsgbGluZU9mZnNldCk7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKGlzUHJlc3NlZChvYmplY3QpIHx8IGlzSG92ZXJlZChvYmplY3QpKQotICAgICAgICAgICAg
aW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihkcmFnUm9sbExpZ2h0LCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJv
a2VDb2xvcihkcmFnUmVndWxhckxpZ2h0LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAg
aW5mby5jb250ZXh0LT5kcmF3TGluZShzdGFydFBvaW50LCBlbmRQb2ludCk7CisgICAgZmxvYXQg
YXVyYUhlaWdodCA9IGxlbmd0aCAqIGF1cmFSYXRpbzsKKyAgICBmbG9hdCBhdXJhV2lkdGggPSBh
dXJhSGVpZ2h0OworICAgIGZsb2F0IGF1cmFYID0gdG1wUmVjdC54KCkgLSAoYXVyYVdpZHRoIC0g
dG1wUmVjdC53aWR0aCgpKSAvIDI7CisgICAgZmxvYXQgYXVyYVkgPSB0bXBSZWN0LnkoKSAtIChh
dXJhSGVpZ2h0IC0gdG1wUmVjdC5oZWlnaHQoKSkgLyAyOworICAgIEZsb2F0UmVjdCBhdXJhUmVj
dChhdXJhWCwgYXVyYVksIGF1cmFXaWR0aCwgYXVyYUhlaWdodCk7CiAKLSAgICAgICAgaWYgKGlz
VmVydGljYWwpIHsKLSAgICAgICAgICAgIHN0YXJ0UG9pbnQuc2V0WShzdGFydFBvaW50LnkoKSAr
IHNoYWRvd09mZnNldCk7Ci0gICAgICAgICAgICBlbmRQb2ludC5zZXRZKGVuZFBvaW50LnkoKSAr
IHNoYWRvd09mZnNldCk7CisgICAgaWYgKCFpc0VuYWJsZWQob2JqZWN0KSkKKyAgICAgICAgZHJh
d0NvbnRyb2woY29udGV4dCwgdG1wUmVjdCwgZGlzYWJsZWQuZ2V0KCkpOworICAgIGVsc2Ugewor
ICAgICAgICBpZiAoaXNQcmVzc2VkKG9iamVjdCkgfHwgaXNIb3ZlcmVkKG9iamVjdCkgfHwgaXNG
b2N1c2VkKG9iamVjdCkpIHsKKyAgICAgICAgICAgIGRyYXdDb250cm9sKGNvbnRleHQsIHRtcFJl
Y3QsIHByZXNzZWQuZ2V0KCkpOworICAgICAgICAgICAgZHJhd0NvbnRyb2woY29udGV4dCwgYXVy
YVJlY3QsIGF1cmEuZ2V0KCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3RhcnRQ
b2ludC5zZXRYKHN0YXJ0UG9pbnQueCgpICsgc2hhZG93T2Zmc2V0KTsKLSAgICAgICAgICAgIGVu
ZFBvaW50LnNldFgoZW5kUG9pbnQueCgpICsgc2hhZG93T2Zmc2V0KTsKKyAgICAgICAgICAgIGRy
YXdDb250cm9sKGNvbnRleHQsIHRtcFJlY3QsIGluYWN0aXZlLmdldCgpKTsKICAgICAgICAgfQot
ICAgICAgICBpZiAoaXNQcmVzc2VkKG9iamVjdCkgfHwgaXNIb3ZlcmVkKG9iamVjdCkpCi0gICAg
ICAgICAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGRyYWdSb2xsRGFyaywgQ29sb3JT
cGFjZURldmljZVJHQik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGluZm8uY29udGV4dC0+
c2V0U3Ryb2tlQ29sb3IoZHJhZ1JlZ3VsYXJEYXJrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAg
ICAgICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShzdGFydFBvaW50LCBlbmRQb2ludCk7CiAgICAg
fQotICAgIGluZm8uY29udGV4dC0+cmVzdG9yZSgpOworCisgICAgY29udGV4dC0+cmVzdG9yZSgp
OwogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmgKaW5kZXggMWRiZDVk
OS4uZjZhOTM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oCkBAIC0xMTAsNyArMTEwLDYgQEAgcHJp
dmF0ZToKICAgICBSZW5kZXJUaGVtZUJsYWNrQmVycnkoKTsKICAgICB2b2lkIHNldEJ1dHRvblN0
eWxlKFJlbmRlclN0eWxlKikgY29uc3Q7CiAKLSAgICB2b2lkIHBhaW50TWVudUxpc3RCdXR0b25H
cmFkaWVudEFuZEFycm93KEdyYXBoaWNzQ29udGV4dCosIFJlbmRlck9iamVjdCosIEludFJlY3Qg
YnV0dG9uUmVjdCwgY29uc3QgUGF0aCYgY2xpcFBhdGgpOwogICAgIGJvb2wgcGFpbnRUZXh0Rmll
bGRPclRleHRBcmVhT3JTZWFyY2hGaWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8m
LCBjb25zdCBJbnRSZWN0Jik7CiAgICAgYm9vbCBwYWludFNsaWRlclRyYWNrUmVjdChSZW5kZXJP
YmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgYm9vbCBwYWlu
dFNsaWRlclRyYWNrUmVjdChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0JiwgUkdCQTMyIHN0cm9rZUNvbG9yU3RhcnQsCi0tIAoxLjcuNS40Cgo=
</data>
<flag name="review"
          id="185385"
          type_id="1"
          status="-"
          setter="rwlbuis"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171497</attachid>
            <date>2012-10-30 12:20:31 -0700</date>
            <delta_ts>2012-10-30 15:46:22 -0700</delta_ts>
            <desc>webkit patch</desc>
            <filename>0001-BlackBerry-update-form-theme-for-BB10.patch</filename>
            <type>text/plain</type>
            <size>37794</size>
            <attacher name="Tiancheng Jiang">tijiang</attacher>
            
              <data encoding="base64">RnJvbSAzZjY5ZGM3NjUzOTU0MTYyOTYwNDliYTFmZmI0NmRjMWVjMzgxZmE1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaWFuY2hlbmcgSmlhbmcgPHRpamlhbmdAcmltLmNvbT4KRGF0
ZTogVHVlLCAzMCBPY3QgMjAxMiAxNToxNToxMiAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIFtCbGFj
a0JlcnJ5XSB1cGRhdGUgZm9ybSB0aGVtZSBmb3IgQkIxMC4KIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3NjAKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoK
UklNIFBSOjIyMjEyNgpJbnRyb2R1Y2Ugc2xpZGUgZnVuY3Rpb24gdG8gcGFpbnQgbmV3IHRoZW1l
IGZvciB0aGUgZm9ybSBjb250cm9scy4KCk5vIG5ldyB0ZXN0cy4KCiogY3NzL3RoZW1lQmxhY2tC
ZXJyeS5jc3M6CihzZWxlY3QpOgoqIHBsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFj
a0JlcnJ5LmNwcDoKKFdlYkNvcmUpOgooV2ViQ29yZTo6ZHJhd0NvbnRyb2wpOiBBZGRlZC4KKFdl
YkNvcmU6OmRyYXdUaHJlZVNsaWNlKTogQWRkZWQuCihXZWJDb3JlOjpkcmF3TmluZVNsaWNlKTog
QWRkZWQuCihXZWJDb3JlOjpsb2FkSW1hZ2UpOiBBZGRlZC4KKFdlYkNvcmU6OlJlbmRlclRoZW1l
QmxhY2tCZXJyeTo6c3lzdGVtRm9udCk6IE1vZGlmaWVkLgooV2ViQ29yZTo6UmVuZGVyVGhlbWVC
bGFja0JlcnJ5OjpwYWludFRleHRGaWVsZE9yVGV4dEFyZWFPclNlYXJjaEZpZWxkKTogTW9kaWZp
ZWQuCihXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50Q2hlY2tib3gpOiBNb2Rp
ZmllZC4KKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRSYWRpbyk6IE1vZGlm
aWVkLgooV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludEJ1dHRvbik6IE1vZGlm
aWVkLgooV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lbnVMaXN0KTogTW9k
aWZpZWQuCihXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVudUxpc3RCdXR0
b24pOiBNb2RpZmllZC4KKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRTbGlk
ZXJUcmFja1JlY3QpOiBNb2RpZmllZC4KKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6
cGFpbnRTbGlkZXJUaHVtYik6IE1vZGlmaWVkLgoqIHBsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVy
VGhlbWVCbGFja0JlcnJ5Lmg6CihSZW5kZXJUaGVtZUJsYWNrQmVycnkpOgotLS0KIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzMiArKwogU291
cmNlL1dlYkNvcmUvY3NzL3RoZW1lQmxhY2tCZXJyeS5jc3MgICAgICAgICAgICAgfCAgIDI0ICst
CiAuLi4vcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwICB8ICA1
NTcgKysrKysrKysrKy0tLS0tLS0tLS0KIC4uLi9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRo
ZW1lQmxhY2tCZXJyeS5oICAgIHwgICAgMSAtCiA0IGZpbGVzIGNoYW5nZWQsIDMxNiBpbnNlcnRp
b25zKCspLCAyOTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgxM2NmNDIuLjRiNWUyZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMi0xMC0zMCAgVGlhbmNoZW5nIEppYW5n
ICA8dGlqaWFuZ0ByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSB1cGRhdGUgZm9ybSB0
aGVtZSBmb3IgQkIxMC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMDc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJJTSBQUjoyMjIxMjYKKyAgICAgICAgSW50cm9kdWNlIHNsaWRlIGZ1bmN0aW9uIHRv
IHBhaW50IG5ldyB0aGVtZSBmb3IgdGhlIGZvcm0gY29udHJvbHMuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLgorCisgICAgICAgICogY3NzL3RoZW1lQmxhY2tCZXJyeS5jc3M6CisgICAgICAgIChz
ZWxlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0Jl
cnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0NvbnRy
b2wpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRyYXdUaHJlZVNsaWNlKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpkcmF3TmluZVNsaWNlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
Ojpsb2FkSW1hZ2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tC
ZXJyeTo6c3lzdGVtRm9udCk6IE1vZGlmaWVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVCbGFja0JlcnJ5OjpwYWludFRleHRGaWVsZE9yVGV4dEFyZWFPclNlYXJjaEZpZWxkKTogTW9k
aWZpZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50Q2hl
Y2tib3gpOiBNb2RpZmllZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJy
eTo6cGFpbnRSYWRpbyk6IE1vZGlmaWVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVC
bGFja0JlcnJ5OjpwYWludEJ1dHRvbik6IE1vZGlmaWVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lbnVMaXN0KTogTW9kaWZpZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVudUxpc3RCdXR0b24pOiBNb2Rp
ZmllZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRTbGlk
ZXJUcmFja1JlY3QpOiBNb2RpZmllZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxh
Y2tCZXJyeTo6cGFpbnRTbGlkZXJUaHVtYik6IE1vZGlmaWVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5Lmg6CisgICAgICAgIChSZW5kZXJUaGVt
ZUJsYWNrQmVycnkpOgorCiAyMDEyLTEwLTE1ICBKb25hdGhhbiBEb25nICA8am9uYXRoYW4uZG9u
Z0B0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0JsYWNrQmVycnldIHJlcGxhY2UgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OmxvZygpIHdpdGggQkJMT0coKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL3RoZW1lQmxhY2tCZXJyeS5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdGhl
bWVCbGFja0JlcnJ5LmNzcwppbmRleCBjNjI4NDVjLi40OTY2ZDFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvdGhlbWVCbGFja0JlcnJ5LmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvdGhlbWVCbGFja0JlcnJ5LmNzcwpAQCAtMjAsMTAgKzIwLDYgQEAgdGV4dGFyZWEgewogICAg
IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiB9CiAKLWlucHV0LCB0ZXh0YXJlYSB7Ci0gICAgLXdl
YmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7Ci19Ci0KIGlucHV0W3R5cGU9ImRhdGV0aW1lIl0sCiBp
bnB1dFt0eXBlPSJkYXRlIl0sCiBpbnB1dFt0eXBlPSJ3ZWVrIl0sCkBAIC0zNSwyMiArMzEsNiBA
QCBpbnB1dFt0eXBlPSJjb2xvciJdIHsKICAgICBib3JkZXI6IHNvbGlkIDJweCBibHVlOwogfQog
Ci1zZWxlY3Q6Zm9jdXMgewotICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwotICAgIG91dGxp
bmU6IG5vbmU7Ci19Ci0KLXNlbGVjdFtzaXplXSwKLXNlbGVjdFttdWx0aXBsZV0sCi1zZWxlY3Rb
c2l6ZV1bbXVsdGlwbGVdIHsKLSAgICBwYWRkaW5nOiA1cHg7Ci0gICAgYm9yZGVyLXJhZGl1czog
NXB4OwotICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYigxMzksMTM5LDEzOSk7Ci19Ci0KLXNlbGVj
dFtzaXplXTpmb2N1cywKLXNlbGVjdFttdWx0aXBsZV06Zm9jdXMsCi1zZWxlY3Rbc2l6ZV1bbXVs
dGlwbGVdOmZvY3VzIHsKLSAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKLSAgICBvdXRsaW5l
OiBub25lOworc2VsZWN0IHsKKyAgICBib3JkZXItcmFkaXVzOiAwOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNr
QmVycnkuY3BwCmluZGV4IGJhOTRjNzMuLjEwYzY0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5j
cHAKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAi
VXNlckFnZW50U3R5bGVTaGVldHMuaCIKIAorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUxv
Zy5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFNpemVzICh1bml0IHB4KQpAQCAtNjYs
NiArNjgsMjAgQEAgY29uc3QgdW5zaWduZWQgcGFkZGluZ0Rpdmlzb3IgPSA1OwogY29uc3QgdW5z
aWduZWQgZnVsbFNjcmVlbkVubGFyZ2VtZW50RmFjdG9yID0gMjsKIGNvbnN0IGZsb2F0IHNjYWxl
RmFjdG9yVGhyZXNob2xkID0gMi4wOwogCisvLyBTbGljZSBsZW5ndGgKK2NvbnN0IGludCBzbWFs
bFNsaWNlID0gODsKK2NvbnN0IGludCBtZWRpdW1TbGljZSA9IDEwOworY29uc3QgaW50IGxhcmdl
U2xpY2UgPSAxMzsKKworLy8gU2xpZGVyIEF1cmEsIGNhbGN1bGF0ZWQgZnJvbSBVWCBzcGVjCitj
b25zdCBmbG9hdCBhdXJhUmF0aW8gPSAxLjYyOworCisvLyBEcm9wZG93biBhcnJvdyBwb3NpdGlv
biwgY2FsY3VsYXRlZCBmcm9tIFVYIHNwZWMKK2NvbnN0IGZsb2F0IHhQb3NpdGlvblJhdGlvID0g
MzsKK2NvbnN0IGZsb2F0IHlQb3NpdGlvblJhdGlvID0gMC4zODsKK2NvbnN0IGZsb2F0IHdpZHRo
UmF0aW8gPSAzOworY29uc3QgZmxvYXQgaGVpZ2h0UmF0aW8gPSAwLjIzOworCiAvLyBDb2xvcnMK
IGNvbnN0IFJHQkEzMiBjYXJldEJvdHRvbSA9IDB4ZmYyMTYzYmY7CiBjb25zdCBSR0JBMzIgY2Fy
ZXRUb3AgPSAweGZmNjlhNWZhOwpAQCAtMTA5LDI0ICsxMjUsMTAgQEAgY29uc3QgUkdCQTMyIHNl
bGVjdGlvbiA9IDB4ZmYyYjhmZmY7CiAKIGNvbnN0IFJHQkEzMiBibGFja1BlbiA9IENvbG9yOjpi
bGFjazsKIGNvbnN0IFJHQkEzMiBmb2N1c1JpbmdQZW4gPSAweGZmYTNjOGZlOworY29uc3QgUkdC
QTMyIGFjdGl2ZVRleHRDb2xvciA9IDB4ZmZmYWZhZmE7CiAKIGZsb2F0IFJlbmRlclRoZW1lQmxh
Y2tCZXJyeTo6ZGVmYXVsdEZvbnRTaXplID0gMTY7CiAKLS8vIFdlIGFpbSB0byBtYXRjaCBJRSBo
ZXJlLgotLy8gLUlFIHVzZXMgYSBmb250IGJhc2VkIG9uIHRoZSBlbmNvZGluZyBhcyB0aGUgZGVm
YXVsdCBmb250IGZvciBmb3JtIGNvbnRyb2xzLgotLy8gLUdlY2tvIHVzZXMgTVMgU2hlbGwgRGxn
IChhY3R1YWxseSBjYWxscyBHZXRTdG9ja09iamVjdChERUZBVUxUX0dVSV9GT05UKSwKLS8vIHdo
aWNoIHJldHVybnMgTVMgU2hlbGwgRGxnKQotLy8gLVNhZmFyaSB1c2VzIEx1Y2lkYSBHcmFuZGUu
Ci0vLwotLy8gRklYTUU6IFRoZSBvbmx5IGNhc2Ugd2hlcmUgd2Uga25vdyB3ZSBkb24ndCBtYXRj
aCBJRSBpcyBmb3IgQU5TSSBlbmNvZGluZ3MuCi0vLyBJRSB1c2VzIE1TIFNoZWxsIERsZyB0aGVy
ZSwgd2hpY2ggd2UgcmVuZGVyIGluY29ycmVjdGx5IGF0IGNlcnRhaW4gcGl4ZWwKLS8vIHNpemVz
IChlLmcuIDE1cHgpLiBTbyB3ZSBqdXN0IHVzZSBBcmlhbCBmb3Igbm93LgotY29uc3QgU3RyaW5n
JiBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmRlZmF1bHRHVUlGb250KCkKLXsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgZm9udEZhY2UsIChBU0NJSUxpdGVyYWwoIkFyaWFsIikpKTsK
LSAgICByZXR1cm4gZm9udEZhY2U7Ci19Ci0KIHN0YXRpYyBQYXNzUmVmUHRyPEdyYWRpZW50PiBj
cmVhdGVMaW5lYXJHcmFkaWVudChSR0JBMzIgdG9wLCBSR0JBMzIgYm90dG9tLCBjb25zdCBJbnRQ
b2ludCYgYSwgY29uc3QgSW50UG9pbnQmIGIpCiB7CiAgICAgUmVmUHRyPEdyYWRpZW50PiBncmFk
aWVudCA9IEdyYWRpZW50OjpjcmVhdGUoYSwgYik7CkBAIC0xMzUsMjIgKzEzNyw2IEBAIHN0YXRp
YyBQYXNzUmVmUHRyPEdyYWRpZW50PiBjcmVhdGVMaW5lYXJHcmFkaWVudChSR0JBMzIgdG9wLCBS
R0JBMzIgYm90dG9tLCBjb25zCiAgICAgcmV0dXJuIGdyYWRpZW50LnJlbGVhc2UoKTsKIH0KIAot
c3RhdGljIFBhdGggcm91bmRlZFJlY3RGb3JCb3JkZXIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNv
bnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gb2JqZWN0LT5z
dHlsZSgpOwotICAgIExlbmd0aFNpemUgdG9wTGVmdFJhZGl1cyA9IHN0eWxlLT5ib3JkZXJUb3BM
ZWZ0UmFkaXVzKCk7Ci0gICAgTGVuZ3RoU2l6ZSB0b3BSaWdodFJhZGl1cyA9IHN0eWxlLT5ib3Jk
ZXJUb3BSaWdodFJhZGl1cygpOwotICAgIExlbmd0aFNpemUgYm90dG9tTGVmdFJhZGl1cyA9IHN0
eWxlLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCk7Ci0gICAgTGVuZ3RoU2l6ZSBib3R0b21SaWdo
dFJhZGl1cyA9IHN0eWxlLT5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpOwotCi0gICAgUGF0aCBy
b3VuZGVkUmVjdDsKLSAgICByb3VuZGVkUmVjdC5hZGRSb3VuZGVkUmVjdChyZWN0LCBJbnRTaXpl
KHRvcExlZnRSYWRpdXMud2lkdGgoKS52YWx1ZSgpLCB0b3BMZWZ0UmFkaXVzLmhlaWdodCgpLnZh
bHVlKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFNpemUodG9w
UmlnaHRSYWRpdXMud2lkdGgoKS52YWx1ZSgpLCB0b3BSaWdodFJhZGl1cy5oZWlnaHQoKS52YWx1
ZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRTaXplKGJvdHRv
bUxlZnRSYWRpdXMud2lkdGgoKS52YWx1ZSgpLCBib3R0b21MZWZ0UmFkaXVzLmhlaWdodCgpLnZh
bHVlKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFNpemUoYm90
dG9tUmlnaHRSYWRpdXMud2lkdGgoKS52YWx1ZSgpLCBib3R0b21SaWdodFJhZGl1cy5oZWlnaHQo
KS52YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIHJvdW5kZWRSZWN0OwotfQotCiBzdGF0aWMgUmVuZGVy
U2xpZGVyKiBkZXRlcm1pbmVSZW5kZXJTbGlkZXIoUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAg
ICAgQVNTRVJUKG9iamVjdC0+aXNTbGlkZXJUaHVtYigpKTsKQEAgLTE4Miw2ICsxNjgsNzYgQEAg
c3RhdGljIGZsb2F0IGRldGVybWluZUZ1bGxTY3JlZW5NdWx0aXBsaWVyKEVsZW1lbnQqIGVsZW1l
bnQpCiAgICAgcmV0dXJuIGZ1bGxTY3JlZW5NdWx0aXBsaWVyOwogfQogCitzdGF0aWMgdm9pZCBk
cmF3Q29udHJvbChHcmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIElt
YWdlKiBpbWcpCit7CisgICAgRmxvYXRSZWN0IHNyY1JlY3QoMCwgMCwgaW1nLT53aWR0aCgpLCBp
bWctPmhlaWdodCgpKTsKKyAgICBnYy0+ZHJhd0ltYWdlKGltZywgQ29sb3JTcGFjZURldmljZVJH
QiwgcmVjdCwgc3JjUmVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIGRyYXdUaHJlZVNsaWNlKEdyYXBo
aWNzQ29udGV4dCogZ2MsIGNvbnN0IEludFJlY3QmIHJlY3QsIEltYWdlKiBpbWcsIGludCBzbGlj
ZSkKK3sKKyAgICBGbG9hdFNpemUgZHN0U2xpY2UocmVjdC5oZWlnaHQoKSAvIDIsIHJlY3QuaGVp
Z2h0KCkpOworICAgIEZsb2F0UmVjdCBzcmNSZWN0KDAsIDAsIHNsaWNlLCBpbWctPmhlaWdodCgp
KTsKKyAgICBGbG9hdFJlY3QgZHN0UmVjdChyZWN0LmxvY2F0aW9uKCksIGRzdFNsaWNlKTsKKwor
ICAgIGdjLT5kcmF3SW1hZ2UoaW1nLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNS
ZWN0KTsKKyAgICBzcmNSZWN0Lm1vdmUoaW1nLT53aWR0aCgpIC0gc3JjUmVjdC53aWR0aCgpLCAw
KTsKKyAgICBkc3RSZWN0Lm1vdmUocmVjdC53aWR0aCgpIC0gZHN0UmVjdC53aWR0aCgpLCAwKTsK
KyAgICBnYy0+ZHJhd0ltYWdlKGltZywgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3Jj
UmVjdCk7CisKKyAgICBzcmNSZWN0ID0gRmxvYXRSZWN0KHNsaWNlLCAwLCBpbWctPndpZHRoKCkg
LSAyICogc2xpY2UsIGltZy0+aGVpZ2h0KCkpOworICAgIGRzdFJlY3QgPSBGbG9hdFJlY3QocmVj
dC54KCkgKyBkc3RTbGljZS53aWR0aCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpIC0gMiAqIGRz
dFNsaWNlLndpZHRoKCksIGRzdFNsaWNlLmhlaWdodCgpKTsKKyAgICBnYy0+ZHJhd0ltYWdlKGlt
ZywgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCk7Cit9CisKK3N0YXRpYyB2
b2lkIGRyYXdOaW5lU2xpY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgY29uc3QgSW50UmVjdCYgcmVj
dCwgZG91YmxlIHNjYWxlLCBJbWFnZSogaW1nLCBpbnQgc2xpY2UpCit7CisgICAgaWYgKHJlY3Qu
aGVpZ2h0KCkgKiBzY2FsZSA8IDEwMS4wKQorICAgICAgICBzY2FsZSA9IDEwMS4wIC8gcmVjdC5o
ZWlnaHQoKTsKKyAgICBGbG9hdFNpemUgZHN0U2xpY2Uoc2xpY2UgLyBzY2FsZSwgc2xpY2UgLyBz
Y2FsZSk7CisgICAgRmxvYXRSZWN0IHNyY1JlY3QoMCwgMCwgc2xpY2UsIHNsaWNlKTsKKyAgICBG
bG9hdFJlY3QgZHN0UmVjdChyZWN0LmxvY2F0aW9uKCksIGRzdFNsaWNlKTsKKyAgICBnYy0+ZHJh
d0ltYWdlKGltZywgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCk7CisgICAg
c3JjUmVjdC5tb3ZlKGltZy0+d2lkdGgoKSAtIHNyY1JlY3Qud2lkdGgoKSwgMCk7CisgICAgZHN0
UmVjdC5tb3ZlKHJlY3Qud2lkdGgoKSAtIGRzdFJlY3Qud2lkdGgoKSwgMCk7CisgICAgZ2MtPmRy
YXdJbWFnZShpbWcsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QpOworICAg
IHNyY1JlY3QubW92ZSgwLCBpbWctPmhlaWdodCgpIC0gc3JjUmVjdC5oZWlnaHQoKSk7CisgICAg
ZHN0UmVjdC5tb3ZlKDAsIHJlY3QuaGVpZ2h0KCkgLSBkc3RSZWN0LmhlaWdodCgpKTsKKyAgICBn
Yy0+ZHJhd0ltYWdlKGltZywgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCk7
CisgICAgc3JjUmVjdC5tb3ZlKC0oaW1nLT53aWR0aCgpIC0gc3JjUmVjdC53aWR0aCgpKSwgMCk7
CisgICAgZHN0UmVjdC5tb3ZlKC0ocmVjdC53aWR0aCgpIC0gZHN0UmVjdC53aWR0aCgpKSwgMCk7
CisgICAgZ2MtPmRyYXdJbWFnZShpbWcsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNy
Y1JlY3QpOworCisgICAgc3JjUmVjdCA9IEZsb2F0UmVjdChzbGljZSwgMCwgaW1nLT53aWR0aCgp
IC0gMiAqIHNsaWNlLCBzbGljZSk7CisgICAgZHN0UmVjdCA9IEZsb2F0UmVjdChyZWN0LngoKSAr
IGRzdFNsaWNlLndpZHRoKCksIHJlY3QueSgpLCByZWN0LndpZHRoKCkgLSAyICogZHN0U2xpY2Uu
d2lkdGgoKSwgZHN0U2xpY2UuaGVpZ2h0KCkpOworICAgIGdjLT5kcmF3SW1hZ2UoaW1nLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBzcmNSZWN0Lm1vdmUoMCwg
aW1nLT5oZWlnaHQoKSAtIHNyY1JlY3QuaGVpZ2h0KCkpOworICAgIGRzdFJlY3QubW92ZSgwLCBy
ZWN0LmhlaWdodCgpIC0gZHN0UmVjdC5oZWlnaHQoKSk7CisgICAgZ2MtPmRyYXdJbWFnZShpbWcs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QpOworCisgICAgc3JjUmVjdCA9
IEZsb2F0UmVjdCgwLCBzbGljZSwgc2xpY2UsIGltZy0+aGVpZ2h0KCkgLSAyICogc2xpY2UpOwor
ICAgIGRzdFJlY3QgPSBGbG9hdFJlY3QocmVjdC54KCksIHJlY3QueSgpICsgZHN0U2xpY2UuaGVp
Z2h0KCksIGRzdFNsaWNlLndpZHRoKCksIHJlY3QuaGVpZ2h0KCkgLSAyICogZHN0U2xpY2UuaGVp
Z2h0KCkpOworICAgIGdjLT5kcmF3SW1hZ2UoaW1nLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RS
ZWN0LCBzcmNSZWN0KTsKKyAgICBzcmNSZWN0Lm1vdmUoaW1nLT53aWR0aCgpIC0gc3JjUmVjdC53
aWR0aCgpLCAwKTsKKyAgICBkc3RSZWN0Lm1vdmUocmVjdC53aWR0aCgpIC0gZHN0UmVjdC53aWR0
aCgpLCAwKTsKKyAgICBnYy0+ZHJhd0ltYWdlKGltZywgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0
UmVjdCwgc3JjUmVjdCk7CisKKyAgICBzcmNSZWN0ID0gRmxvYXRSZWN0KHNsaWNlLCBzbGljZSwg
aW1nLT53aWR0aCgpIC0gMiAqIHNsaWNlLCBpbWctPmhlaWdodCgpIC0gMiAqIHNsaWNlKTsKKyAg
ICBkc3RSZWN0ID0gRmxvYXRSZWN0KHJlY3QueCgpICsgZHN0U2xpY2Uud2lkdGgoKSwgcmVjdC55
KCkgKyBkc3RTbGljZS5oZWlnaHQoKSwgcmVjdC53aWR0aCgpIC0gMiAqIGRzdFNsaWNlLndpZHRo
KCksIHJlY3QuaGVpZ2h0KCkgLSAyICogZHN0U2xpY2UuaGVpZ2h0KCkpOworICAgIGdjLT5kcmF3
SW1hZ2UoaW1nLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0KTsKK30KKwor
c3RhdGljIFJlZlB0cjxJbWFnZT4gbG9hZEltYWdlKGNvbnN0IGNoYXIqIGZpbGVuYW1lKQorewor
ICAgIFJlZlB0cjxJbWFnZT4gcmVzb3VyY2U7CisgICAgcmVzb3VyY2UgPSBJbWFnZTo6bG9hZFBs
YXRmb3JtUmVzb3VyY2UoZmlsZW5hbWUpLmxlYWtSZWYoKTsKKyAgICBpZiAoIXJlc291cmNlKSB7
CisgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpsb2dBbHdheXMoQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkxvZ0xldmVsV2FybiwgIlJlbmRlclRoZW1lQmxhY2tCZXJyeSBmYWlsZWQgdG8gbG9h
ZCAlcy5wbmciLCBmaWxlbmFtZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1
cm4gcmVzb3VyY2U7Cit9CisKIFBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0
aGVtZUZvclBhZ2UoUGFnZSogcGFnZSkKIHsKICAgICBzdGF0aWMgUmVuZGVyVGhlbWUqIHRoZW1l
ID0gUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpjcmVhdGUoKS5sZWFrUmVmKCk7CkBAIC0yMjksNyAr
Mjg1LDggQEAgdm9pZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnN5c3RlbUZvbnQoaW50IHByb3BJ
ZCwgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHQKIHsKICAgICBmbG9hdCBmb250U2l6ZSA9
IGRlZmF1bHRGb250U2l6ZTsKIAotICAgIGlmIChwcm9wSWQgPT0gQ1NTVmFsdWVXZWJraXRNaW5p
Q29udHJvbCB8fCBwcm9wSWQgPT0gIENTU1ZhbHVlV2Via2l0U21hbGxDb250cm9sIHx8IHByb3BJ
ZCA9PSBDU1NWYWx1ZVdlYmtpdENvbnRyb2wpIHsKKyAgICAvLyBCb3RoIENTU1ZhbHVlV2Via2l0
Q29udHJvbCBhbmQgQ1NTVmFsdWVXZWJraXRTbWFsbENvbnRyb2wgc2hvdWxkIHVzZSBkZWZhdWx0
IGZvbnQgc2l6ZSB3aGljaCBsb29rcyBiZXR0ZXIgb24gdGhlIGNvbnRyb2xzLgorICAgIGlmIChw
cm9wSWQgPT0gQ1NTVmFsdWVXZWJraXRNaW5pQ29udHJvbCkgewogICAgICAgICAvLyBXaHkgMiBw
b2ludHMgc21hbGxlcj8gQmVjYXVzZSB0aGF0J3Mgd2hhdCBHZWNrbyBkb2VzLiBOb3RlIHRoYXQg
d2UKICAgICAgICAgLy8gYXJlIGFzc3VtaW5nIGEgOTZkcGkgc2NyZWVuLCB3aGljaCBpcyB0aGUg
ZGVmYXVsdCB2YWx1ZSB3ZSB1c2Ugb24gV2luZG93cy4KICAgICAgICAgc3RhdGljIGNvbnN0IGZs
b2F0IHBvaW50c1BlckluY2ggPSA3Mi4wZjsKQEAgLTIzNywxMCArMjk0LDkgQEAgdm9pZCBSZW5k
ZXJUaGVtZUJsYWNrQmVycnk6OnN5c3RlbUZvbnQoaW50IHByb3BJZCwgRm9udERlc2NyaXB0aW9u
JiBmb250RGVzY3JpcHQKICAgICAgICAgZm9udFNpemUgLT0gKDIuMGYgLyBwb2ludHNQZXJJbmNo
KSAqIHBpeGVsc1BlckluY2g7CiAgICAgfQogCi0gICAgZm9udERlc2NyaXB0aW9uLmZpcnN0RmFt
aWx5KCkuc2V0RmFtaWx5KGRlZmF1bHRHVUlGb250KCkpOwogICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRTcGVjaWZpZWRTaXplKGZvbnRTaXplKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNBYnNv
bHV0ZVNpemUodHJ1ZSk7Ci0gICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9u
dERlc2NyaXB0aW9uOjpOb0ZhbWlseSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNG
YW1pbHkoRm9udERlc2NyaXB0aW9uOjpTYW5zU2VyaWZGYW1pbHkpOwogICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodE5vcm1hbCk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNl
dEl0YWxpYyhmYWxzZSk7CiB9CkBAIC0yNzgsMjcgKzMzNCwyMiBAQCBib29sIFJlbmRlclRoZW1l
QmxhY2tCZXJyeTo6cGFpbnRUZXh0RmllbGRPclRleHRBcmVhT3JTZWFyY2hGaWVsZChSZW5kZXJP
YmplY3QqCiAgICAgQVNTRVJUKGluZm8uY29udGV4dCk7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0ID0gaW5mby5jb250ZXh0OwogCi0gICAgY29udGV4dC0+c2F2ZSgpOwotICAgIGNvbnRl
eHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICBjb250ZXh0LT5zZXRTdHJva2VU
aGlja25lc3MobGluZVdpZHRoKTsKLSAgICBpZiAoIWlzRW5hYmxlZChvYmplY3QpKQotICAgICAg
ICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihkaXNhYmxlZE91dGxpbmUsIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOwotICAgIGVsc2UgaWYgKGlzUHJlc3NlZChvYmplY3QpKQotICAgICAgICBpbmZvLmNv
bnRleHQtPnNldFN0cm9rZUdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KGRlcHJlc3NlZFRv
cE91dGxpbmUsIGRlcHJlc3NlZEJvdHRvbU91dGxpbmUsIHJlY3QubWF4WE1pbllDb3JuZXIoKSwg
cmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7Ci0gICAgZWxzZSBpZiAoaXNIb3ZlcmVkKG9iamVjdCkg
fHwgaXNGb2N1c2VkKG9iamVjdCkpCi0gICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50
KGNyZWF0ZUxpbmVhckdyYWRpZW50KGhvdmVyVG9wT3V0bGluZSwgaG92ZXJCb3R0b21PdXRsaW5l
LCByZWN0Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSkpOwotICAgIGVs
c2UKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGll
bnQocmVndWxhclRvcE91dGxpbmUsIHJlZ3VsYXJCb3R0b21PdXRsaW5lLCByZWN0Lm1heFhNaW5Z
Q29ybmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSkpOwotCi0gICAgUGF0aCB0ZXh0RmllbGRS
b3VuZGVkUmVjdGFuZ2xlID0gcm91bmRlZFJlY3RGb3JCb3JkZXIob2JqZWN0LCByZWN0KTsKLSAg
ICBpZiAob2JqZWN0LT5zdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0gU2VhcmNoRmllbGRQYXJ0KSB7
Ci0gICAgICAgIC8vIFdlIGZvcmNlIHRoZSBmaWxsIGNvbG9yIHRvIFdoaXRlIHNvIGFzIHRvIG1h
dGNoIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBzZWFyY2ggY2FuY2VsIGJ1dHRvbiBncmFw
aGljLgotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKLSAgICAgICAgY29udGV4dC0+ZmlsbFBhdGgodGV4dEZpZWxkUm91bmRl
ZFJlY3RhbmdsZSk7Ci0gICAgICAgIGNvbnRleHQtPnN0cm9rZVBhdGgodGV4dEZpZWxkUm91bmRl
ZFJlY3RhbmdsZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGNvbnRleHQtPnN0cm9rZVBhdGgodGV4
dEZpZWxkUm91bmRlZFJlY3RhbmdsZSk7Ci0gICAgY29udGV4dC0+cmVzdG9yZSgpOworICAgIHN0
YXRpYyBSZWZQdHI8SW1hZ2U+IGJnLCBiZ0Rpc2FibGVkLCBiZ0hpZ2hsaWdodDsKKyAgICBpZiAo
IWJnKSB7CisgICAgICAgIGJnID0gbG9hZEltYWdlKCJjb3JlX3RleHRpbnB1dF9iZyIpOworICAg
ICAgICBiZ0Rpc2FibGVkID0gbG9hZEltYWdlKCJjb3JlX3RleHRpbnB1dF9iZ19kaXNhYmxlZCIp
OworICAgICAgICBiZ0hpZ2hsaWdodCA9IGxvYWRJbWFnZSgiY29yZV90ZXh0aW5wdXRfYmdfaGln
aGxpZ2h0Iik7CisgICAgfQorCisgICAgQWZmaW5lVHJhbnNmb3JtIGN0bSA9IGNvbnRleHQtPmdl
dENUTSgpOworICAgIGlmIChpc0VuYWJsZWQob2JqZWN0KSAmJiBiZykKKyAgICAgICAgZHJhd05p
bmVTbGljZShjb250ZXh0LCByZWN0LCBjdG0ueFNjYWxlKCksIGJnLmdldCgpLCBzbWFsbFNsaWNl
KTsKKyAgICBpZiAoIWlzRW5hYmxlZChvYmplY3QpICYmIGJnRGlzYWJsZWQpCisgICAgICAgIGRy
YXdOaW5lU2xpY2UoY29udGV4dCwgcmVjdCwgY3RtLnhTY2FsZSgpLCBiZ0Rpc2FibGVkLmdldCgp
LCBzbWFsbFNsaWNlKTsKKworICAgIGlmICgoaXNIb3ZlcmVkKG9iamVjdCkgfHwgaXNGb2N1c2Vk
KG9iamVjdCkgfHwgaXNQcmVzc2VkKG9iamVjdCkpICYmIGJnSGlnaGxpZ2h0KQorICAgICAgICBk
cmF3TmluZVNsaWNlKGNvbnRleHQsIHJlY3QsIGN0bS54U2NhbGUoKSwgYmdIaWdobGlnaHQuZ2V0
KCksIHNtYWxsU2xpY2UpOworCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC00MjMsNyArNDc0
LDUxIEBAIHZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpjYWxjdWxhdGVCdXR0b25TaXplKFJl
bmRlclN0eWxlKiBzdHlsZSkgY29uc3QKIAogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBh
aW50Q2hlY2tib3goUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywg
Y29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICByZXR1cm4gcGFpbnRCdXR0b24ob2JqZWN0LCBp
bmZvLCByZWN0KTsKKyAgICBBU1NFUlQoaW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQgPSBpbmZvLmNvbnRleHQ7CisKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlPiBk
aXNhYmxlZCwgYmFja2dyb3VuZCwgaW5hY3RpdmUsIHByZXNzZWQsIGFjdGl2ZSwgYWN0aXZlTWFy
aywgZGlzYWJsZU1hcms7CisgICAgaWYgKCFkaXNhYmxlZCkgeworICAgICAgICBkaXNhYmxlZCA9
IGxvYWRJbWFnZSgiY29yZV9jaGVja2JveF9kaXNhYmxlZCIpOworICAgICAgICBiYWNrZ3JvdW5k
ID0gbG9hZEltYWdlKCJjb3JlX2NoZWNrYm94X21vYXQiKTsKKyAgICAgICAgaW5hY3RpdmUgPSBs
b2FkSW1hZ2UoImNvcmVfY2hlY2tib3hfaW5hY3RpdmUiKTsKKyAgICAgICAgcHJlc3NlZCA9IGxv
YWRJbWFnZSgiY29yZV9jaGVja2JveF9wcmVzc2VkIik7CisgICAgICAgIGFjdGl2ZSA9IGxvYWRJ
bWFnZSgiY29yZV9jaGVja2JveF9hY3RpdmUiKTsKKyAgICAgICAgYWN0aXZlTWFyayA9IGxvYWRJ
bWFnZSgiY29yZV9jaGVja2JveF9hY3RpdmVfbWFyayIpOworICAgICAgICBkaXNhYmxlTWFyayA9
IGxvYWRJbWFnZSgiY29yZV9jaGVja2JveF9kaXNhYmxlZF9tYXJrIik7CisgICAgfQorCisgICAg
Ly8gQ2FjdWxhdGUgd2hlcmUgdG8gcHV0IGNlbnRlciBjaGVja21hcmsuCisgICAgRmxvYXRSZWN0
IHRtcFJlY3QocmVjdCk7CisKKyAgICBmbG9hdCBjZW50ZXJYID0gKChmbG9hdChpbmFjdGl2ZS0+
d2lkdGgoKSkgLSBmbG9hdChhY3RpdmVNYXJrLT53aWR0aCgpKSkgLyBmbG9hdChpbmFjdGl2ZS0+
d2lkdGgoKSkgKiB0bXBSZWN0LndpZHRoKCkgLyAyKSArIHRtcFJlY3QueCgpOworICAgIGZsb2F0
IGNlbnRlclkgPSAoKGZsb2F0KGluYWN0aXZlLT5oZWlnaHQoKSkgLSBmbG9hdChhY3RpdmVNYXJr
LT5oZWlnaHQoKSkpIC8gZmxvYXQoaW5hY3RpdmUtPmhlaWdodCgpKSAqIHRtcFJlY3QuaGVpZ2h0
KCkgLyAyKSArIHRtcFJlY3QueSgpOworICAgIGZsb2F0IHdpZHRoID0gZmxvYXQoYWN0aXZlTWFy
ay0+d2lkdGgoKSkgLyBmbG9hdChpbmFjdGl2ZS0+d2lkdGgoKSkgKiB0bXBSZWN0LndpZHRoKCk7
CisgICAgZmxvYXQgaGVpZ2h0ID0gZmxvYXQoYWN0aXZlTWFyay0+aGVpZ2h0KCkpIC8gZmxvYXQo
aW5hY3RpdmUtPmhlaWdodCgpKSAqIHRtcFJlY3QuaGVpZ2h0KCk7CisgICAgRmxvYXRSZWN0IGNl
bnRlclJlY3QoY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7CisKKyAgICBkcmF3Q29u
dHJvbChjb250ZXh0LCByZWN0LCBiYWNrZ3JvdW5kLmdldCgpKTsKKworICAgIGlmIChpc0VuYWJs
ZWQob2JqZWN0KSkgeworICAgICAgICBpZiAoaXNQcmVzc2VkKG9iamVjdCkpIHsKKyAgICAgICAg
ICAgIGRyYXdDb250cm9sKGNvbnRleHQsIHJlY3QsIHByZXNzZWQuZ2V0KCkpOworICAgICAgICAg
ICAgaWYgKGlzQ2hlY2tlZChvYmplY3QpKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IG5l
ZWQgb3BhY2l0eSAzMCUgb24gYWN0aXZlTWFyaworICAgICAgICAgICAgICAgIGRyYXdDb250cm9s
KGNvbnRleHQsIGNlbnRlclJlY3QsIGFjdGl2ZU1hcmsuZ2V0KCkpOworICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZHJhd0NvbnRyb2woY29udGV4dCwgcmVjdCwg
aW5hY3RpdmUuZ2V0KCkpOworICAgICAgICAgICAgaWYgKGlzQ2hlY2tlZChvYmplY3QpKSB7Cisg
ICAgICAgICAgICAgICAgZHJhd0NvbnRyb2woY29udGV4dCwgcmVjdCwgYWN0aXZlLmdldCgpKTsK
KyAgICAgICAgICAgICAgICBkcmF3Q29udHJvbChjb250ZXh0LCBjZW50ZXJSZWN0LCBhY3RpdmVN
YXJrLmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAg
ICAgIGRyYXdDb250cm9sKGNvbnRleHQsIHJlY3QsIGRpc2FibGVkLmdldCgpKTsKKyAgICAgICAg
aWYgKGlzQ2hlY2tlZChvYmplY3QpKQorICAgICAgICAgICAgZHJhd0NvbnRyb2woY29udGV4dCwg
cmVjdCwgZGlzYWJsZU1hcmsuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAK
IHZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpzZXRDaGVja2JveFNpemUoUmVuZGVyU3R5bGUq
IHN0eWxlKSBjb25zdApAQCAtNDMzLDcgKzUyOCw1MCBAQCB2b2lkIFJlbmRlclRoZW1lQmxhY2tC
ZXJyeTo6c2V0Q2hlY2tib3hTaXplKFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKIAogYm9vbCBS
ZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50UmFkaW8oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNv
bnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICByZXR1cm4g
cGFpbnRCdXR0b24ob2JqZWN0LCBpbmZvLCByZWN0KTsKKyAgICBBU1NFUlQoaW5mby5jb250ZXh0
KTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBpbmZvLmNvbnRleHQ7CisKKyAgICBz
dGF0aWMgUmVmUHRyPEltYWdlPiBkaXNhYmxlZCwgZGlzYWJsZWRBY3RpdmUsIGluYWN0aXZlLCBw
cmVzc2VkLCBhY3RpdmUsIGFjdGl2ZU1hcms7CisgICAgaWYgKCFkaXNhYmxlZCkgeworICAgICAg
ICBkaXNhYmxlZCA9IGxvYWRJbWFnZSgiY29yZV9yYWRpb2J1dHRvbl9kaXNhYmxlZCIpOworICAg
ICAgICBkaXNhYmxlZEFjdGl2ZSA9IGxvYWRJbWFnZSgiY29yZV9yYWRpb2J1dHRvbl9kaXNhYmxl
ZF9hY3RpdmUiKTsKKyAgICAgICAgaW5hY3RpdmUgPSBsb2FkSW1hZ2UoImNvcmVfcmFkaW9idXR0
b25faW5hY3RpdmUiKTsKKyAgICAgICAgcHJlc3NlZCA9IGxvYWRJbWFnZSgiY29yZV9yYWRpb2J1
dHRvbl9wcmVzc2VkIik7CisgICAgICAgIGFjdGl2ZSA9IGxvYWRJbWFnZSgiY29yZV9yYWRpb2J1
dHRvbl9hY3RpdmUiKTsKKyAgICAgICAgYWN0aXZlTWFyayA9IGxvYWRJbWFnZSgiY29yZV9yYWRp
b2J1dHRvbl9hY3RpdmVfbWFyayIpOworICAgIH0KKworICAgIC8vIENhY3VsYXRlIHdoZXJlIHRv
IHB1dCBjZW50ZXIgY2lyY2xlLgorICAgIEZsb2F0UmVjdCB0bXBSZWN0KHJlY3QpOworCisgICAg
ZmxvYXQgY2VudGVyWCA9ICgoZmxvYXQoaW5hY3RpdmUtPndpZHRoKCkpIC0gZmxvYXQoYWN0aXZl
TWFyay0+d2lkdGgoKSkpIC8gZmxvYXQoaW5hY3RpdmUtPndpZHRoKCkpICogdG1wUmVjdC53aWR0
aCgpIC8gMikrIHRtcFJlY3QueCgpOworICAgIGZsb2F0IGNlbnRlclkgPSAoKGZsb2F0KGluYWN0
aXZlLT5oZWlnaHQoKSkgLSBmbG9hdChhY3RpdmVNYXJrLT5oZWlnaHQoKSkpIC8gZmxvYXQoaW5h
Y3RpdmUtPmhlaWdodCgpKSAqIHRtcFJlY3QuaGVpZ2h0KCkgLyAyKSArIHRtcFJlY3QueSgpOwor
ICAgIGZsb2F0IHdpZHRoID0gZmxvYXQoYWN0aXZlTWFyay0+d2lkdGgoKSkgLyBmbG9hdChpbmFj
dGl2ZS0+d2lkdGgoKSkgKiB0bXBSZWN0LndpZHRoKCk7CisgICAgZmxvYXQgaGVpZ2h0ID0gZmxv
YXQoYWN0aXZlTWFyay0+aGVpZ2h0KCkpIC8gZmxvYXQoaW5hY3RpdmUtPmhlaWdodCgpKSAqIHRt
cFJlY3QuaGVpZ2h0KCk7CisgICAgRmxvYXRSZWN0IGNlbnRlclJlY3QoY2VudGVyWCwgY2VudGVy
WSwgd2lkdGgsIGhlaWdodCk7CisKKyAgICBpZiAoaXNFbmFibGVkKG9iamVjdCkpIHsKKyAgICAg
ICAgaWYgKGlzUHJlc3NlZChvYmplY3QpKSB7CisgICAgICAgICAgICBkcmF3Q29udHJvbChjb250
ZXh0LCByZWN0LCBwcmVzc2VkLmdldCgpKTsKKyAgICAgICAgICAgIGlmIChpc0NoZWNrZWQob2Jq
ZWN0KSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBuZWVkIG9wYWNpdHkgMzAlIG9uIGFj
dGl2ZU1hcmsKKyAgICAgICAgICAgICAgICBkcmF3Q29udHJvbChjb250ZXh0LCBjZW50ZXJSZWN0
LCBhY3RpdmVNYXJrLmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGRyYXdDb250cm9sKGNvbnRleHQsIHJlY3QsIGluYWN0aXZlLmdldCgpKTsKKyAg
ICAgICAgICAgIGlmIChpc0NoZWNrZWQob2JqZWN0KSkgeworICAgICAgICAgICAgICAgIGRyYXdD
b250cm9sKGNvbnRleHQsIHJlY3QsIGFjdGl2ZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgZHJh
d0NvbnRyb2woY29udGV4dCwgY2VudGVyUmVjdCwgYWN0aXZlTWFyay5nZXQoKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBkcmF3Q29udHJvbChjb250
ZXh0LCByZWN0LCBpbmFjdGl2ZS5nZXQoKSk7CisgICAgICAgIGlmIChpc0NoZWNrZWQob2JqZWN0
KSkKKyAgICAgICAgICAgIGRyYXdDb250cm9sKGNvbnRleHQsIHJlY3QsIGRpc2FibGVkQWN0aXZl
LmdldCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZHJhd0NvbnRyb2woY29udGV4dCwg
cmVjdCwgZGlzYWJsZWQuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZv
aWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpzZXRSYWRpb1NpemUoUmVuZGVyU3R5bGUqIHN0eWxl
KSBjb25zdApAQCAtNDQ2LDgxICs1ODQsMjYgQEAgYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6
OnBhaW50QnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGkKIHsK
ICAgICBBU1NFUlQoaW5mby5jb250ZXh0KTsKICAgICBpbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAg
ICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBpbmZvLmNvbnRleHQ7CiAKLSAgICBpbmZvLmNv
bnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICBpbmZvLmNvbnRleHQtPnNl
dFN0cm9rZVRoaWNrbmVzcyhsaW5lV2lkdGgpOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGRp
c2FibGVkLCBpbmFjdGl2ZSwgcHJlc3NlZDsKKyAgICBpZiAoIWRpc2FibGVkKSB7CisgICAgICAg
IGRpc2FibGVkID0gbG9hZEltYWdlKCJjb3JlX2J1dHRvbl9kaXNhYmxlZCIpOworICAgICAgICBp
bmFjdGl2ZSA9IGxvYWRJbWFnZSgiY29yZV9idXR0b25faW5hY3RpdmUiKTsKKyAgICAgICAgcHJl
c3NlZCA9IGxvYWRJbWFnZSgiY29yZV9idXR0b25fcHJlc3NlZCIpOworICAgIH0KIAotICAgIENv
bG9yIGNoZWNrKGJsYWNrUGVuKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtID0gY29udGV4dC0+
Z2V0Q1RNKCk7CiAgICAgaWYgKCFpc0VuYWJsZWQob2JqZWN0KSkgewotICAgICAgICBpbmZvLmNv
bnRleHQtPnNldEZpbGxHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChkaXNhYmxlZFRvcCwg
ZGlzYWJsZWRCb3R0b20sIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5l
cigpKSk7Ci0gICAgICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoZGlzYWJsZWRPdXRs
aW5lLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgZHJhd05pbmVTbGljZShjb250ZXh0
LCByZWN0LCBjdG0ueFNjYWxlKCksIGluYWN0aXZlLmdldCgpLCBsYXJnZVNsaWNlKTsKKyAgICAg
ICAgZHJhd05pbmVTbGljZShjb250ZXh0LCByZWN0LCBjdG0ueFNjYWxlKCksIGRpc2FibGVkLmdl
dCgpLCBsYXJnZVNsaWNlKTsKICAgICB9IGVsc2UgaWYgKGlzUHJlc3NlZChvYmplY3QpKSB7Ci0g
ICAgICAgIGluZm8uY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50
KGRlcHJlc3NlZFRvcCwgZGVwcmVzc2VkQm90dG9tLCByZWN0Lm1heFhNaW5ZQ29ybmVyKCksIHJl
Y3QubWF4WE1heFlDb3JuZXIoKSkpOwotICAgICAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUdy
YWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KGRlcHJlc3NlZFRvcE91dGxpbmUsIGRlcHJlc3Nl
ZEJvdHRvbU91dGxpbmUsIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5l
cigpKSk7Ci0gICAgfSBlbHNlIGlmIChpc0hvdmVyZWQob2JqZWN0KSkgewotICAgICAgICBpbmZv
LmNvbnRleHQtPnNldEZpbGxHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChob3ZlclRvcCwg
aG92ZXJCb3R0b20sIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigp
KSk7Ci0gICAgICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoY3JlYXRlTGluZWFy
R3JhZGllbnQoaG92ZXJUb3BPdXRsaW5lLCBob3ZlckJvdHRvbU91dGxpbmUsIHJlY3QubWF4WE1p
bllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgaW5mby5jb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQocmVn
dWxhclRvcCwgcmVndWxhckJvdHRvbSwgcmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0Lm1heFhN
YXhZQ29ybmVyKCkpKTsKLSAgICAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VHcmFkaWVudChj
cmVhdGVMaW5lYXJHcmFkaWVudChyZWd1bGFyVG9wT3V0bGluZSwgcmVndWxhckJvdHRvbU91dGxp
bmUsIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7Ci0gICAg
fQotCi0gICAgQ29udHJvbFBhcnQgcGFydCA9IG9iamVjdC0+c3R5bGUoKS0+YXBwZWFyYW5jZSgp
OwotICAgIHN3aXRjaCAocGFydCkgewotICAgIGNhc2UgQ2hlY2tib3hQYXJ0OiB7Ci0gICAgICAg
IEZsb2F0U2l6ZSBzbWFsbENvcm5lcihzbWFsbFJhZGl1cywgc21hbGxSYWRpdXMpOwotICAgICAg
ICBQYXRoIHBhdGg7Ci0gICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgc21hbGxDb3Ju
ZXIpOwotICAgICAgICBpbmZvLmNvbnRleHQtPmZpbGxQYXRoKHBhdGgpOwotICAgICAgICBpbmZv
LmNvbnRleHQtPnN0cm9rZVBhdGgocGF0aCk7Ci0KLSAgICAgICAgaWYgKGlzQ2hlY2tlZChvYmpl
Y3QpKSB7Ci0gICAgICAgICAgICBQYXRoIGNoZWNrUGF0aDsKLSAgICAgICAgICAgIEludFJlY3Qg
cmVjdDIgPSByZWN0OwotICAgICAgICAgICAgcmVjdDIuaW5mbGF0ZSgtMSk7Ci0gICAgICAgICAg
ICBjaGVja1BhdGgubW92ZVRvKEZsb2F0UG9pbnQocmVjdDIueCgpICsgcmVjdDIud2lkdGgoKSAq
IGNoZWNrYm94TGVmdFgsIHJlY3QyLnkoKSArIHJlY3QyLmhlaWdodCgpICogY2hlY2tib3hMZWZ0
WSkpOwotICAgICAgICAgICAgY2hlY2tQYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KHJlY3QyLngo
KSArIHJlY3QyLndpZHRoKCkgKiBjaGVja2JveE1pZGRsZVgsIHJlY3QyLm1heFkoKSAtIHJlY3Qy
LmhlaWdodCgpICogY2hlY2tib3hNaWRkbGVZKSk7Ci0gICAgICAgICAgICBjaGVja1BhdGguYWRk
TGluZVRvKEZsb2F0UG9pbnQocmVjdDIueCgpICsgcmVjdDIud2lkdGgoKSAqIGNoZWNrYm94Umln
aHRYLCByZWN0Mi55KCkgKyByZWN0Mi5oZWlnaHQoKSAqIGNoZWNrYm94UmlnaHRZKSk7Ci0gICAg
ICAgICAgICBpbmZvLmNvbnRleHQtPnNldExpbmVDYXAoUm91bmRDYXApOwotICAgICAgICAgICAg
aW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihibGFja1BlbiwgQ29sb3JTcGFjZURldmljZVJH
Qik7Ci0gICAgICAgICAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhyZWN0Mi53
aWR0aCgpIC8gY2hlY2tib3hTdHJva2VUaGlja25lc3MpOwotICAgICAgICAgICAgaW5mby5jb250
ZXh0LT5maWxsUGF0aChjaGVja1BhdGgpOwotICAgICAgICAgICAgaW5mby5jb250ZXh0LT5zdHJv
a2VQYXRoKGNoZWNrUGF0aCk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IGNhc2UgUmFkaW9QYXJ0OgotICAgICAgICBpbmZvLmNvbnRleHQtPmRyYXdFbGxpcHNlKHJlY3Qp
OwotICAgICAgICBpZiAoaXNDaGVja2VkKG9iamVjdCkpIHsKLSAgICAgICAgICAgIEludFJlY3Qg
cmVjdDIgPSByZWN0OwotICAgICAgICAgICAgcmVjdDIuaW5mbGF0ZSgtcmVjdC53aWR0aCgpICog
cmFkaW9CdXR0b25DaGVja1N0YXRlU2NhbGVyKTsKLSAgICAgICAgICAgIGluZm8uY29udGV4dC0+
c2V0RmlsbENvbG9yKGNoZWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGlu
Zm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoY2hlY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwot
ICAgICAgICAgICAgaW5mby5jb250ZXh0LT5kcmF3RWxsaXBzZShyZWN0Mik7Ci0gICAgICAgIH0K
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCdXR0b25QYXJ0OgotICAgIGNhc2UgUHVzaEJ1dHRv
blBhcnQ6IHsKLSAgICAgICAgRmxvYXRTaXplIGxhcmdlQ29ybmVyKGxhcmdlUmFkaXVzLCBsYXJn
ZVJhZGl1cyk7Ci0gICAgICAgIFBhdGggcGF0aDsKLSAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVj
dChyZWN0LCBsYXJnZUNvcm5lcik7Ci0gICAgICAgIGluZm8uY29udGV4dC0+ZmlsbFBhdGgocGF0
aCk7Ci0gICAgICAgIGluZm8uY29udGV4dC0+c3Ryb2tlUGF0aChwYXRoKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIGNhc2UgU3F1YXJlQnV0dG9uUGFydDogewotICAgICAgICBQYXRoIHBh
dGg7Ci0gICAgICAgIHBhdGguYWRkUmVjdChyZWN0KTsKLSAgICAgICAgaW5mby5jb250ZXh0LT5m
aWxsUGF0aChwYXRoKTsKLSAgICAgICAgaW5mby5jb250ZXh0LT5zdHJva2VQYXRoKHBhdGgpOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgaW5mby5jb250ZXh0
LT5yZXN0b3JlKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICAgICAgZHJhd05p
bmVTbGljZShjb250ZXh0LCByZWN0LCBjdG0ueFNjYWxlKCksIHByZXNzZWQuZ2V0KCksIGxhcmdl
U2xpY2UpOworICAgICAgICBvYmplY3QtPnN0eWxlKCktPnNldFRleHRGaWxsQ29sb3IoYWN0aXZl
VGV4dENvbG9yKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZHJhd05pbmVTbGljZShjb250ZXh0LCBy
ZWN0LCBjdG0ueFNjYWxlKCksIGluYWN0aXZlLmdldCgpLCBsYXJnZVNsaWNlKTsKIAotICAgIGlu
Zm8uY29udGV4dC0+cmVzdG9yZSgpOworICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKQEAgLTU0OSw0MyArNjMyLDYgQEAgdm9pZCBSZW5kZXJUaGVtZUJsYWNr
QmVycnk6OmFkanVzdFJhZGlvU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHls
ZSwKICAgICBzdHlsZS0+c2V0Q3Vyc29yKENVUlNPUl9XRUJLSVRfR1JBQik7CiB9CiAKLXZvaWQg
UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRBbmRBcnJv
dyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFJlbmRlck9iamVjdCogb2JqZWN0LCBJbnRSZWN0
IGJ1dHRvblJlY3QsIGNvbnN0IFBhdGgmIGNsaXBQYXRoKQotewotICAgIEFTU0VSVChjb250ZXh0
KTsKLSAgICBjb250ZXh0LT5zYXZlKCk7Ci0gICAgaWYgKCFpc0VuYWJsZWQob2JqZWN0KSkKLSAg
ICAgICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KGRpc2Fi
bGVkVG9wLCBkaXNhYmxlZEJvdHRvbSwgYnV0dG9uUmVjdC5tYXhYTWluWUNvcm5lcigpLCBidXR0
b25SZWN0Lm1heFhNYXhZQ29ybmVyKCkpKTsKLSAgICBlbHNlIGlmIChpc1ByZXNzZWQob2JqZWN0
KSkKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50
KGRlcHJlc3NlZFRvcCwgZGVwcmVzc2VkQm90dG9tLCBidXR0b25SZWN0Lm1heFhNaW5ZQ29ybmVy
KCksIGJ1dHRvblJlY3QubWF4WE1heFlDb3JuZXIoKSkpOwotICAgIGVsc2UgaWYgKGlzSG92ZXJl
ZChvYmplY3QpKQotICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFy
R3JhZGllbnQoaG92ZXJUb3AsIGhvdmVyQm90dG9tLCBidXR0b25SZWN0Lm1heFhNaW5ZQ29ybmVy
KCksIGJ1dHRvblJlY3QubWF4WE1heFlDb3JuZXIoKSkpOwotICAgIGVsc2UKLSAgICAgICAgY29u
dGV4dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KHJlZ3VsYXJUb3AsIHJl
Z3VsYXJCb3R0b20sIGJ1dHRvblJlY3QubWF4WE1pbllDb3JuZXIoKSwgYnV0dG9uUmVjdC5tYXhY
TWF4WUNvcm5lcigpKSk7Ci0KLSAgICAvLyAxLiBQYWludCB0aGUgYmFja2dyb3VuZCBvZiB0aGUg
YnV0dG9uLgotICAgIGNvbnRleHQtPmNsaXAoY2xpcFBhdGgpOwotICAgIGNvbnRleHQtPmRyYXdS
ZWN0KGJ1dHRvblJlY3QpOwotICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKLQotICAgIC8vIDIuIFBh
aW50IHRoZSBidXR0b24gYXJyb3cuCi0gICAgYnV0dG9uUmVjdC5pbmZsYXRlKC1idXR0b25SZWN0
LndpZHRoKCkgLyAzKTsKLSAgICBidXR0b25SZWN0Lm1vdmUoMCwgYnV0dG9uUmVjdC5oZWlnaHQo
KSAqIDcgLyAyMCk7Ci0gICAgUGF0aCBwYXRoOwotICAgIHBhdGgubW92ZVRvKEZsb2F0UG9pbnQo
YnV0dG9uUmVjdC54KCksIGJ1dHRvblJlY3QueSgpKSk7Ci0gICAgcGF0aC5hZGRMaW5lVG8oRmxv
YXRQb2ludChidXR0b25SZWN0LngoKSArIGJ1dHRvblJlY3Qud2lkdGgoKSwgYnV0dG9uUmVjdC55
KCkpKTsKLSAgICBwYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KGJ1dHRvblJlY3QueCgpICsgYnV0
dG9uUmVjdC53aWR0aCgpIC8gMi4wLCBidXR0b25SZWN0LnkoKSArIGJ1dHRvblJlY3QuaGVpZ2h0
KCkgLyAyLjApKTsKLSAgICBwYXRoLmNsb3NlU3VicGF0aCgpOwotCi0gICAgY29udGV4dC0+c2F2
ZSgpOwotICAgIGNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICBjb250
ZXh0LT5zZXRTdHJva2VUaGlja25lc3MobGluZVdpZHRoKTsKLSAgICBjb250ZXh0LT5zZXRTdHJv
a2VDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGNvbnRleHQt
PnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGNv
bnRleHQtPnNldExpbmVKb2luKEJldmVsSm9pbik7Ci0gICAgY29udGV4dC0+ZmlsbFBhdGgocGF0
aCk7Ci0gICAgY29udGV4dC0+cmVzdG9yZSgpOwotfQotCiBzdGF0aWMgSW50UmVjdCBjb21wdXRl
TWVudUxpc3RBcnJvd0J1dHRvblJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBG
SVhNRTogVGhlIG1lbnUgbGlzdCBhcnJvdyBidXR0b24gc2hvdWxkIGhhdmUgYSBtaW5pbXVtIGFu
ZCBtYXhpbXVtIHdpZHRoICh0byBlbnN1cmUgdXNhYmlsaXR5KSBvcgpAQCAtNTkzLDc3ICs2Mzks
NDggQEAgc3RhdGljIEludFJlY3QgY29tcHV0ZU1lbnVMaXN0QXJyb3dCdXR0b25SZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QpCiAgICAgcmV0dXJuIEludFJlY3QoSW50UG9pbnQocmVjdC5tYXhYKCkg
LSByZWN0LmhlaWdodCgpLCByZWN0LnkoKSksIEludFNpemUocmVjdC5oZWlnaHQoKSwgcmVjdC5o
ZWlnaHQoKSkpOwogfQogCi1zdGF0aWMgdm9pZCBwYWludE1lbnVMaXN0QmFja2dyb3VuZChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFBhdGgmIG1lbnVMaXN0UGF0aCwgY29uc3QgQ29s
b3ImIGJhY2tncm91bmRDb2xvcikKLXsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0gICAgY29udGV4
dC0+c2F2ZSgpOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGNvbnRleHQtPmZpbGxQYXRoKG1lbnVMaXN0UGF0aCk7
Ci0gICAgY29udGV4dC0+cmVzdG9yZSgpOwotfQotCiBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJy
eTo6cGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBp
bmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIC8vIE5vdGUsIHRoaXMgbWV0aG9kIGlz
IG5vdCBjYWxsZWQgaWYgdGhlIG1lbnUgbGlzdCBleHBsaWNpdGx5IHNwZWNpZmllcyBlaXRoZXIg
YSBib3JkZXIgb3IgYmFja2dyb3VuZCBjb2xvci4KLSAgICAvLyBJbnN0ZWFkLCBSZW5kZXJUaGVt
ZUJsYWNrQmVycnk6OnBhaW50TWVudUxpc3RCdXR0b24gaXMgY2FsbGVkLiBUaGVyZWZvcmUsIHdo
ZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkLCB3ZSBkb24ndAotICAgIC8vIGhhdmUgdG8gYWRqdXN0
IHJlY3Qgd2l0aCByZXNwZWN0IHRvIHRoZSBib3JkZXIgZGltZW5zaW9ucy4KLQogICAgIEFTU0VS
VChpbmZvLmNvbnRleHQpOworICAgIGluZm8uY29udGV4dC0+c2F2ZSgpOwogICAgIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCA9IGluZm8uY29udGV4dDsKIAotICAgIFBhdGggbWVudUxpc3RSb3Vu
ZGVkUmVjdGFuZ2xlID0gcm91bmRlZFJlY3RGb3JCb3JkZXIob2JqZWN0LCByZWN0KTsKLQotICAg
IC8vIDEuIFBhaW50IHRoZSBiYWNrZ3JvdW5kIG9mIHRoZSBlbnRpcmUgY29udHJvbC4KLSAgICBw
YWludE1lbnVMaXN0QmFja2dyb3VuZChjb250ZXh0LCBtZW51TGlzdFJvdW5kZWRSZWN0YW5nbGUs
IENvbG9yOjp3aGl0ZSk7Ci0KLSAgICAvLyAyLiBQYWludCB0aGUgYmFja2dyb3VuZCBvZiB0aGUg
YnV0dG9uIGFuZCBpdHMgYXJyb3cuCi0gICAgSW50UmVjdCBhcnJvd0J1dHRvblJlY3RhbmdsZSA9
IGNvbXB1dGVNZW51TGlzdEFycm93QnV0dG9uUmVjdChyZWN0KTsKLSAgICBwYWludE1lbnVMaXN0
QnV0dG9uR3JhZGllbnRBbmRBcnJvdyhjb250ZXh0LCBvYmplY3QsIGFycm93QnV0dG9uUmVjdGFu
Z2xlLCBtZW51TGlzdFJvdW5kZWRSZWN0YW5nbGUpOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+
IGRpc2FibGVkLCBpbmFjdGl2ZSwgcHJlc3NlZCwgYXJyb3dVcCwgYXJyb3dVcFByZXNzZWQ7Cisg
ICAgaWYgKCFkaXNhYmxlZCkgeworICAgICAgICBkaXNhYmxlZCA9IGxvYWRJbWFnZSgiY29yZV9i
dXR0b25fZGlzYWJsZWQiKTsKKyAgICAgICAgaW5hY3RpdmUgPSBsb2FkSW1hZ2UoImNvcmVfYnV0
dG9uX2luYWN0aXZlIik7CisgICAgICAgIHByZXNzZWQgPSBsb2FkSW1hZ2UoImNvcmVfYnV0dG9u
X3ByZXNzZWQiKTsKKyAgICAgICAgYXJyb3dVcCA9IGxvYWRJbWFnZSgiY29yZV9kcm9wZG93bl9i
dXR0b25fYXJyb3d1cCIpOworICAgICAgICBhcnJvd1VwUHJlc3NlZCA9IGxvYWRJbWFnZSgiY29y
ZV9kcm9wZG93bl9idXR0b25fYXJyb3d1cF9wcmVzc2VkIik7CisgICAgfQogCi0gICAgLy8gNC4g
U3Ryb2tlIGFuIG91dGxpbmUgYXJvdW5kIHRoZSBlbnRpcmUgY29udHJvbC4KLSAgICBjb250ZXh0
LT5zYXZlKCk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAg
IGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhsaW5lV2lkdGgpOwotICAgIGlmICghaXNFbmFi
bGVkKG9iamVjdCkpCi0gICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGRpc2FibGVkT3V0
bGluZSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgZWxzZSBpZiAoaXNQcmVzc2VkKG9iamVj
dCkpCi0gICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRp
ZW50KGRlcHJlc3NlZFRvcE91dGxpbmUsIGRlcHJlc3NlZEJvdHRvbU91dGxpbmUsIHJlY3QubWF4
WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7Ci0gICAgZWxzZSBpZiAoaXNI
b3ZlcmVkKG9iamVjdCkpCi0gICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KGNyZWF0
ZUxpbmVhckdyYWRpZW50KGhvdmVyVG9wT3V0bGluZSwgaG92ZXJCb3R0b21PdXRsaW5lLCByZWN0
Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSkpOwotICAgIGVsc2UKLSAg
ICAgICAgY29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQocmVn
dWxhclRvcE91dGxpbmUsIHJlZ3VsYXJCb3R0b21PdXRsaW5lLCByZWN0Lm1heFhNaW5ZQ29ybmVy
KCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSkpOworICAgIEZsb2F0UmVjdCBhcnJvd0J1dHRvblJl
Y3RhbmdsZShjb21wdXRlTWVudUxpc3RBcnJvd0J1dHRvblJlY3QocmVjdCkpOworICAgIGZsb2F0
IHggPSBhcnJvd0J1dHRvblJlY3RhbmdsZS54KCkgKyBhcnJvd0J1dHRvblJlY3RhbmdsZS53aWR0
aCgpIC8geFBvc2l0aW9uUmF0aW87CisgICAgZmxvYXQgeSA9IGFycm93QnV0dG9uUmVjdGFuZ2xl
LnkoKSArIGFycm93QnV0dG9uUmVjdGFuZ2xlLmhlaWdodCgpICogeVBvc2l0aW9uUmF0aW87Cisg
ICAgZmxvYXQgd2lkdGggPSBhcnJvd0J1dHRvblJlY3RhbmdsZS53aWR0aCgpIC8gd2lkdGhSYXRp
bzsKKyAgICBmbG9hdCBoZWlnaHQgPSBhcnJvd0J1dHRvblJlY3RhbmdsZS5oZWlnaHQoKSAqIGhl
aWdodFJhdGlvOworICAgIEZsb2F0UmVjdCB0bXBSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOwog
Ci0gICAgY29udGV4dC0+c3Ryb2tlUGF0aChtZW51TGlzdFJvdW5kZWRSZWN0YW5nbGUpOworICAg
IEFmZmluZVRyYW5zZm9ybSBjdG0gPSBjb250ZXh0LT5nZXRDVE0oKTsKKyAgICBpZiAoIWlzRW5h
YmxlZChvYmplY3QpKSB7CisgICAgICAgIGRyYXdOaW5lU2xpY2UoY29udGV4dCwgcmVjdCwgY3Rt
LnhTY2FsZSgpLCBpbmFjdGl2ZS5nZXQoKSwgbGFyZ2VTbGljZSk7CisgICAgICAgIGRyYXdOaW5l
U2xpY2UoY29udGV4dCwgcmVjdCwgY3RtLnhTY2FsZSgpLCBkaXNhYmxlZC5nZXQoKSwgbGFyZ2VT
bGljZSk7CisgICAgICAgIGRyYXdDb250cm9sKGNvbnRleHQsIHRtcFJlY3QsIGFycm93VXAuZ2V0
KCkpOyAvLyBGSVhNRTogc2hvdWxkIGhhdmUgYSBkaXNhYmxlZCBpbWFnZS4KKyAgICB9IGVsc2Ug
aWYgKGlzRm9jdXNlZChvYmplY3QpKSB7CisgICAgICAgIGRyYXdOaW5lU2xpY2UoY29udGV4dCwg
cmVjdCwgY3RtLnhTY2FsZSgpLCBwcmVzc2VkLmdldCgpLCBsYXJnZVNsaWNlKTsKKyAgICAgICAg
ZHJhd0NvbnRyb2woY29udGV4dCwgdG1wUmVjdCwgYXJyb3dVcFByZXNzZWQuZ2V0KCkpOworICAg
ICAgICBvYmplY3QtPnN0eWxlKCktPnNldFRleHRGaWxsQ29sb3IoYWN0aXZlVGV4dENvbG9yKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBkcmF3TmluZVNsaWNlKGNvbnRleHQsIHJlY3QsIGN0bS54
U2NhbGUoKSwgaW5hY3RpdmUuZ2V0KCksIGxhcmdlU2xpY2UpOworICAgICAgICBkcmF3Q29udHJv
bChjb250ZXh0LCB0bXBSZWN0LCBhcnJvd1VwLmdldCgpKTsKKyAgICB9CiAgICAgY29udGV4dC0+
cmVzdG9yZSgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUJsYWNr
QmVycnk6OnBhaW50TWVudUxpc3RCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBh
aW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICAvLyBOb3RlLCB0aGlz
IG1ldGhvZCBpcyBvbmx5IGNhbGxlZCBpZiB0aGUgbWVudSBsaXN0IGV4cGxpY2l0bHkgc3BlY2lm
aWVzIGVpdGhlciBhIGJvcmRlciBvciBiYWNrZ3JvdW5kIGNvbG9yLgotICAgIC8vIE90aGVyd2lz
ZSwgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lbnVMaXN0IGlzIGNhbGxlZC4gV2UgbmVl
ZCB0byBmaXQgdGhlIGFycm93IGJ1dHRvbiB3aXRoIHRoZSBib3JkZXIgYm94Ci0gICAgLy8gb2Yg
dGhlIG1lbnUtbGlzdCBzbyBhcyB0byBub3Qgb2NjbHVkZSB0aGUgY3VzdG9tIGJvcmRlci4KLQot
ICAgIC8vIFdlIGNvbXB1dGUgbWVudUxpc3RSb3VuZGVkUmVjdGFuZ2xlIHdpdGggcmVzcGVjdCB0
byB0aGUgZGltZW5zaW9ucyBvZiB0aGUgZW50aXJlIG1lbnUtbGlzdCBjb250cm9sIChpLmUuIHJl
Y3QpIGFuZAotICAgIC8vIGl0cyBib3JkZXIgcmFkaXVzIHNvIHRoYXQgd2UgY2xpcCB0aGUgY29u
dG91ciBvZiB0aGUgYXJyb3cgYnV0dG9uICh3aGVuIHdlIHBhaW50IGl0IGJlbG93KSB0byBtYXRj
aCB0aGUgY29udG91ciBvZgotICAgIC8vIHRoZSBjb250cm9sLgotICAgIFBhdGggbWVudUxpc3RS
b3VuZGVkUmVjdGFuZ2xlID0gcm91bmRlZFJlY3RGb3JCb3JkZXIob2JqZWN0LCByZWN0KTsKLQot
ICAgIC8vIDEuIFBhaW50IHRoZSBiYWNrZ3JvdW5kIG9mIHRoZSBlbnRpcmUgY29udHJvbC4KLSAg
ICBDb2xvciBmaWxsQ29sb3IgPSBvYmplY3QtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0gICAgaWYgKCFmaWxsQ29sb3IuaXNWYWxp
ZCgpKQotICAgICAgICBmaWxsQ29sb3IgPSBDb2xvcjo6d2hpdGU7Ci0gICAgcGFpbnRNZW51TGlz
dEJhY2tncm91bmQoaW5mby5jb250ZXh0LCBtZW51TGlzdFJvdW5kZWRSZWN0YW5nbGUsIGZpbGxD
b2xvcik7Ci0KLSAgICAvLyAyLiBQYWludCB0aGUgYmFja2dyb3VuZCBvZiB0aGUgYnV0dG9uIGFu
ZCBpdHMgYXJyb3cuCi0gICAgSW50UmVjdCBib3VuZHMgPSBJbnRSZWN0KHJlY3QueCgpICsgb2Jq
ZWN0LT5zdHlsZSgpLT5ib3JkZXJMZWZ0V2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICByZWN0LnkoKSArIG9iamVjdC0+c3R5bGUoKS0+Ym9yZGVyVG9wV2lkdGgoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICByZWN0LndpZHRoKCkgLSBvYmplY3QtPnN0eWxlKCktPmJvcmRlckxl
ZnRXaWR0aCgpIC0gb2JqZWN0LT5zdHlsZSgpLT5ib3JkZXJSaWdodFdpZHRoKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgcmVjdC5oZWlnaHQoKSAtIG9iamVjdC0+c3R5bGUoKS0+Ym9yZGVy
VG9wV2lkdGgoKSAtIG9iamVjdC0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tV2lkdGgoKSk7Ci0KLSAg
ICBJbnRSZWN0IGFycm93QnV0dG9uUmVjdGFuZ2xlID0gY29tcHV0ZU1lbnVMaXN0QXJyb3dCdXR0
b25SZWN0KGJvdW5kcyk7IC8vIEZpdCB0aGUgYXJyb3cgYnV0dG9uIHdpdGhpbiB0aGUgYm9yZGVy
IGJveCBvZiB0aGUgbWVudS1saXN0LgotICAgIHBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudEFu
ZEFycm93KGluZm8uY29udGV4dCwgb2JqZWN0LCBhcnJvd0J1dHRvblJlY3RhbmdsZSwgbWVudUxp
c3RSb3VuZGVkUmVjdGFuZ2xlKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHBhaW50
TWVudUxpc3Qob2JqZWN0LCBpbmZvLCByZWN0KTsKIH0KIAogdm9pZCBSZW5kZXJUaGVtZUJsYWNr
QmVycnk6OmFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQq
IGVsZW1lbnQpIGNvbnN0CkBAIC03MTMsNzcgKzczMCw2NyBAQCBib29sIFJlbmRlclRoZW1lQmxh
Y2tCZXJyeTo6cGFpbnRTbGlkZXJUcmFja1JlY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0
IFBhaQogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50U2xpZGVyVHJhY2tSZWN0KFJl
bmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3Qm
IHJlY3QsCiAgICAgICAgIFJHQkEzMiBzdHJva2VDb2xvclN0YXJ0LCBSR0JBMzIgc3Ryb2tlQ29s
b3JFbmQsIFJHQkEzMiBmaWxsQ29sb3JTdGFydCwgUkdCQTMyIGZpbGxDb2xvckVuZCkKIHsKLSAg
ICBGbG9hdFNpemUgc21hbGxDb3JuZXIoc21hbGxSYWRpdXMsIHNtYWxsUmFkaXVzKTsKLQorICAg
IEFTU0VSVChpbmZvLmNvbnRleHQpOwogICAgIGluZm8uY29udGV4dC0+c2F2ZSgpOwotICAgIGlu
Zm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGluZm8uY29udGV4
dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVXaWR0aCk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0ID0gaW5mby5jb250ZXh0OwogCi0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VHcmFk
aWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChzdHJva2VDb2xvclN0YXJ0LCBzdHJva2VDb2xvckVu
ZCwgcmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0LiBtYXhYTWF4WUNvcm5lcigpKSk7Ci0gICAg
aW5mby5jb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQoZmlsbENv
bG9yU3RhcnQsIGZpbGxDb2xvckVuZCwgcmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0Lm1heFhN
YXhZQ29ybmVyKCkpKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlPiBkaXNhYmxlZCwgaW5hY3Rp
dmU7CisgICAgaWYgKCFkaXNhYmxlZCkgeworICAgICAgICBkaXNhYmxlZCA9IGxvYWRJbWFnZSgi
Y29yZV9zbGlkZXJfZmlsbF9kaXNhYmxlZCIpOworICAgICAgICBpbmFjdGl2ZSA9IGxvYWRJbWFn
ZSgiY29yZV9zbGlkZXJfYmciKTsKKyAgICB9CiAKLSAgICBQYXRoIHBhdGg7Ci0gICAgcGF0aC5h
ZGRSb3VuZGVkUmVjdChyZWN0LCBzbWFsbENvcm5lcik7Ci0gICAgaW5mby5jb250ZXh0LT5maWxs
UGF0aChwYXRoKTsKKyAgICBpZiAoaXNFbmFibGVkKG9iamVjdCkpCisgICAgICAgIGRyYXdUaHJl
ZVNsaWNlKGNvbnRleHQsIHJlY3QsIGluYWN0aXZlLmdldCgpLCBtZWRpdW1TbGljZSk7CisgICAg
ZWxzZQorICAgICAgICBkcmF3VGhyZWVTbGljZShjb250ZXh0LCByZWN0LCBkaXNhYmxlZC5nZXQo
KSwgKHNtYWxsU2xpY2UgLSAxKSk7CiAKLSAgICBpbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAg
ICBjb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIFJlbmRl
clRoZW1lQmxhY2tCZXJyeTo6cGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG9iamVjdCwg
Y29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIEZsb2F0
U2l6ZSBsYXJnZUNvcm5lcihsYXJnZVJhZGl1cywgbGFyZ2VSYWRpdXMpOwotCisgICAgQVNTRVJU
KGluZm8uY29udGV4dCk7CiAgICAgaW5mby5jb250ZXh0LT5zYXZlKCk7Ci0gICAgaW5mby5jb250
ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgaW5mby5jb250ZXh0LT5zZXRT
dHJva2VUaGlja25lc3MobGluZVdpZHRoKTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQg
PSBpbmZvLmNvbnRleHQ7CiAKLSAgICBpZiAoaXNQcmVzc2VkKG9iamVjdCkgfHwgaXNIb3ZlcmVk
KG9iamVjdCkpIHsKLSAgICAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VHcmFkaWVudChjcmVh
dGVMaW5lYXJHcmFkaWVudChob3ZlclRvcE91dGxpbmUsIGhvdmVyQm90dG9tT3V0bGluZSwgcmVj
dC5tYXhYTWluWUNvcm5lcigpLCByZWN0LiBtYXhYTWF4WUNvcm5lcigpKSk7Ci0gICAgICAgIGlu
Zm8uY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KGhvdmVyVG9w
LCBob3ZlckJvdHRvbSwgcmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0Lm1heFhNYXhZQ29ybmVy
KCkpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUdyYWRp
ZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KHJlZ3VsYXJUb3BPdXRsaW5lLCByZWd1bGFyQm90dG9t
T3V0bGluZSwgcmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0LiBtYXhYTWF4WUNvcm5lcigpKSk7
Ci0gICAgICAgIGluZm8uY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRp
ZW50KHJlZ3VsYXJUb3AsIHJlZ3VsYXJCb3R0b20sIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVj
dC5tYXhYTWF4WUNvcm5lcigpKSk7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZT4gZGlzYWJsZWQs
IGluYWN0aXZlLCBwcmVzc2VkLCBhdXJhOworICAgIGlmICghZGlzYWJsZWQpIHsKKyAgICAgICAg
ZGlzYWJsZWQgPSBsb2FkSW1hZ2UoImNvcmVfc2xpZGVyX2hhbmRsZV9kaXNhYmxlZCIpOworICAg
ICAgICBpbmFjdGl2ZSA9IGxvYWRJbWFnZSgiY29yZV9zbGlkZXJfaGFuZGxlIik7CisgICAgICAg
IHByZXNzZWQgPSBsb2FkSW1hZ2UoImNvcmVfc2xpZGVyX2hhbmRsZV9wcmVzc2VkIik7CisgICAg
ICAgIGF1cmEgPSBsb2FkSW1hZ2UoImNvcmVfc2xpZGVyX2F1cmEiKTsKICAgICB9CiAKLSAgICBQ
YXRoIHBhdGg7Ci0gICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0LCBsYXJnZUNvcm5lcik7Ci0g
ICAgaW5mby5jb250ZXh0LT5maWxsUGF0aChwYXRoKTsKKyAgICBGbG9hdFJlY3QgdG1wUmVjdChy
ZWN0KTsKKyAgICBmbG9hdCBsZW5ndGggPSBzdGQ6Om1heCh0bXBSZWN0LndpZHRoKCksIHRtcFJl
Y3QuaGVpZ2h0KCkpOworICAgIGlmICh0bXBSZWN0LndpZHRoKCkgPiB0bXBSZWN0LmhlaWdodCgp
KSB7CisgICAgICAgIHRtcFJlY3Quc2V0WSh0bXBSZWN0LnkoKSAtIChsZW5ndGggLSB0bXBSZWN0
LmhlaWdodCgpKSAvIDIpOworICAgICAgICB0bXBSZWN0LnNldEhlaWdodChsZW5ndGgpOworICAg
IH0gZWxzZSB7CisgICAgICAgIHRtcFJlY3Quc2V0WCh0bXBSZWN0LngoKSAtIChsZW5ndGggLSB0
bXBSZWN0LndpZHRoKCkpIC8gMik7CisgICAgICAgIHRtcFJlY3Quc2V0V2lkdGgobGVuZ3RoKTsK
KyAgICB9CiAKLSAgICBib29sIGlzVmVydGljYWwgPSByZWN0LndpZHRoKCkgPiByZWN0LmhlaWdo
dCgpOwotICAgIEludFBvaW50IHN0YXJ0UG9pbnQocmVjdC54KCkgKyAoaXNWZXJ0aWNhbCA/IDUg
OiAyKSwgcmVjdC55KCkgKyAoaXNWZXJ0aWNhbCA/IDIgOiA1KSk7Ci0gICAgSW50UG9pbnQgZW5k
UG9pbnQocmVjdC54KCkgKyAoaXNWZXJ0aWNhbCA/IDIwIDogMiksIHJlY3QueSgpICsgKGlzVmVy
dGljYWwgPyAyIDogMjApKTsKLSAgICBjb25zdCBpbnQgbGluZU9mZnNldCA9IDI7Ci0gICAgY29u
c3QgaW50IHNoYWRvd09mZnNldCA9IDE7CisgICAgZmxvYXQgYXVyYUhlaWdodCA9IGxlbmd0aCAq
IGF1cmFSYXRpbzsKKyAgICBmbG9hdCBhdXJhV2lkdGggPSBhdXJhSGVpZ2h0OworICAgIGZsb2F0
IGF1cmFYID0gdG1wUmVjdC54KCkgLSAoYXVyYVdpZHRoIC0gdG1wUmVjdC53aWR0aCgpKSAvIDI7
CisgICAgZmxvYXQgYXVyYVkgPSB0bXBSZWN0LnkoKSAtIChhdXJhSGVpZ2h0IC0gdG1wUmVjdC5o
ZWlnaHQoKSkgLyAyOworICAgIEZsb2F0UmVjdCBhdXJhUmVjdChhdXJhWCwgYXVyYVksIGF1cmFX
aWR0aCwgYXVyYUhlaWdodCk7CiAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7IGkrKykgewot
ICAgICAgICBpZiAoaXNWZXJ0aWNhbCkgewotICAgICAgICAgICAgc3RhcnRQb2ludC5zZXRZKHN0
YXJ0UG9pbnQueSgpICsgbGluZU9mZnNldCk7Ci0gICAgICAgICAgICBlbmRQb2ludC5zZXRZKGVu
ZFBvaW50LnkoKSArIGxpbmVPZmZzZXQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
c3RhcnRQb2ludC5zZXRYKHN0YXJ0UG9pbnQueCgpICsgbGluZU9mZnNldCk7Ci0gICAgICAgICAg
ICBlbmRQb2ludC5zZXRYKGVuZFBvaW50LngoKSArIGxpbmVPZmZzZXQpOwotICAgICAgICB9Ci0g
ICAgICAgIGlmIChpc1ByZXNzZWQob2JqZWN0KSB8fCBpc0hvdmVyZWQob2JqZWN0KSkKLSAgICAg
ICAgICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoZHJhZ1JvbGxMaWdodCwgQ29sb3JT
cGFjZURldmljZVJHQik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGluZm8uY29udGV4dC0+
c2V0U3Ryb2tlQ29sb3IoZHJhZ1JlZ3VsYXJMaWdodCwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0g
ICAgICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoc3RhcnRQb2ludCwgZW5kUG9pbnQpOwotCi0g
ICAgICAgIGlmIChpc1ZlcnRpY2FsKSB7Ci0gICAgICAgICAgICBzdGFydFBvaW50LnNldFkoc3Rh
cnRQb2ludC55KCkgKyBzaGFkb3dPZmZzZXQpOwotICAgICAgICAgICAgZW5kUG9pbnQuc2V0WShl
bmRQb2ludC55KCkgKyBzaGFkb3dPZmZzZXQpOworICAgIGlmICghaXNFbmFibGVkKG9iamVjdCkp
CisgICAgICAgIGRyYXdDb250cm9sKGNvbnRleHQsIHRtcFJlY3QsIGRpc2FibGVkLmdldCgpKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGlzUHJlc3NlZChvYmplY3QpIHx8IGlzSG92ZXJlZChv
YmplY3QpIHx8IGlzRm9jdXNlZChvYmplY3QpKSB7CisgICAgICAgICAgICBkcmF3Q29udHJvbChj
b250ZXh0LCB0bXBSZWN0LCBwcmVzc2VkLmdldCgpKTsKKyAgICAgICAgICAgIGRyYXdDb250cm9s
KGNvbnRleHQsIGF1cmFSZWN0LCBhdXJhLmdldCgpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIHN0YXJ0UG9pbnQuc2V0WChzdGFydFBvaW50LngoKSArIHNoYWRvd09mZnNldCk7Ci0g
ICAgICAgICAgICBlbmRQb2ludC5zZXRYKGVuZFBvaW50LngoKSArIHNoYWRvd09mZnNldCk7Cisg
ICAgICAgICAgICBkcmF3Q29udHJvbChjb250ZXh0LCB0bXBSZWN0LCBpbmFjdGl2ZS5nZXQoKSk7
CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGlzUHJlc3NlZChvYmplY3QpIHx8IGlzSG92ZXJlZChv
YmplY3QpKQotICAgICAgICAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihkcmFnUm9s
bERhcmssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBp
bmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGRyYWdSZWd1bGFyRGFyaywgQ29sb3JTcGFjZURl
dmljZVJHQik7Ci0gICAgICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoc3RhcnRQb2ludCwgZW5k
UG9pbnQpOwogICAgIH0KLSAgICBpbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKworICAgIGNvbnRl
eHQtPnJlc3RvcmUoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5o
CmluZGV4IDFkYmQ1ZDkuLmY2YTkzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuaApAQCAtMTEwLDcg
KzExMCw2IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyVGhlbWVCbGFja0JlcnJ5KCk7CiAgICAgdm9p
ZCBzZXRCdXR0b25TdHlsZShSZW5kZXJTdHlsZSopIGNvbnN0OwogCi0gICAgdm9pZCBwYWludE1l
bnVMaXN0QnV0dG9uR3JhZGllbnRBbmRBcnJvdyhHcmFwaGljc0NvbnRleHQqLCBSZW5kZXJPYmpl
Y3QqLCBJbnRSZWN0IGJ1dHRvblJlY3QsIGNvbnN0IFBhdGgmIGNsaXBQYXRoKTsKICAgICBib29s
IHBhaW50VGV4dEZpZWxkT3JUZXh0QXJlYU9yU2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0KiwgY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgIGJvb2wgcGFpbnRTbGlkZXJUcmFj
a1JlY3QoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwog
ICAgIGJvb2wgcGFpbnRTbGlkZXJUcmFja1JlY3QoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYsIFJHQkEzMiBzdHJva2VDb2xvclN0YXJ0LAotLSAKMS43LjUu
NAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171540</attachid>
            <date>2012-10-30 15:46:25 -0700</date>
            <delta_ts>2012-11-01 08:34:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100760-20121030184450.patch</filename>
            <type>text/plain</type>
            <size>36459</size>
            <attacher name="Tiancheng Jiang">tijiang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyOTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzM0OWJhNGQ5MGRhYWE0
ZDRmZGE3Y2U2NjZjN2VhOTFhYzNlMzJkMS4uZGY2ZjUzMWQ2ZDg5OGY0ZGM3OTRiMWMwM2EzOGJi
NDFmNGUwZjQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTEwLTMwICBUaWFu
Y2hlbmcgSmlhbmcgIDx0aWppYW5nQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIHVw
ZGF0ZSBmb3JtIHRoZW1lIGZvciBCQjEwLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUklNIFBSOjIyMjEyNgorICAgICAgICBJbnRyb2R1Y2Ugc2xpZGUg
ZnVuY3Rpb24gdG8gcGFpbnQgbmV3IHRoZW1lIGZvciB0aGUgZm9ybSBjb250cm9scy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBjc3MvdGhlbWVCbGFja0JlcnJ5LmNzczoK
KyAgICAgICAgKHNlbGVjdCk6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJU
aGVtZUJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3Q29udHJvbCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1RocmVlU2xpY2Up
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOaW5lU2xpY2UpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmxvYWRJbWFnZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVCbGFja0JlcnJ5OjpzeXN0ZW1Gb250KTogTW9kaWZpZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50VGV4dEZpZWxkT3JUZXh0QXJlYU9yU2VhcmNo
RmllbGQpOiBNb2RpZmllZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJy
eTo6cGFpbnRDaGVja2JveCk6IE1vZGlmaWVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVCbGFja0JlcnJ5OjpwYWludFJhZGlvKTogTW9kaWZpZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50QnV0dG9uKTogTW9kaWZpZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVudUxpc3QpOiBNb2RpZmllZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZW51TGlzdEJ1
dHRvbik6IE1vZGlmaWVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5
OjpwYWludFNsaWRlclRyYWNrUmVjdCk6IE1vZGlmaWVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludFNsaWRlclRodW1iKTogTW9kaWZpZWQuCisgICAgICAg
ICogcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuaDoKKyAgICAgICAg
KFJlbmRlclRoZW1lQmxhY2tCZXJyeSk6CisKIDIwMTItMTAtMzAgIFZpbmNlbnQgU2NoZWliICA8
c2NoZWliQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTMyOTI3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1lQmxhY2tCZXJyeS5j
c3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdGhlbWVCbGFja0JlcnJ5LmNzcwppbmRleCAxMjBjZTQ5
ODFjMWQxNjMzYzVjYTBkNzEzN2YzNmRlYjhiMTEwZWVhLi40OTY2ZDFmYTFmMDUzNzZmMjY1NmQy
OWQ0OWYwYjMxMGI0MzIwM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdGhlbWVC
bGFja0JlcnJ5LmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdGhlbWVCbGFja0JlcnJ5LmNz
cwpAQCAtMjAsMTAgKzIwLDYgQEAgdGV4dGFyZWEgewogICAgIGZvbnQtZmFtaWx5OiBtb25vc3Bh
Y2U7CiB9CiAKLWlucHV0LCB0ZXh0YXJlYSB7Ci0gICAgYm9yZGVyLXJhZGl1czogM3B4OwotfQot
CiBpbnB1dFt0eXBlPSJkYXRldGltZSJdLAogaW5wdXRbdHlwZT0iZGF0ZSJdLAogaW5wdXRbdHlw
ZT0id2VlayJdLApAQCAtMzUsMjIgKzMxLDYgQEAgaW5wdXRbdHlwZT0iY29sb3IiXSB7CiAgICAg
Ym9yZGVyOiBzb2xpZCAycHggYmx1ZTsKIH0KIAotc2VsZWN0OmZvY3VzIHsKLSAgICBib3JkZXI6
IDFweCBzb2xpZCBibGFjazsKLSAgICBvdXRsaW5lOiBub25lOwotfQotCi1zZWxlY3Rbc2l6ZV0s
Ci1zZWxlY3RbbXVsdGlwbGVdLAotc2VsZWN0W3NpemVdW211bHRpcGxlXSB7Ci0gICAgcGFkZGlu
ZzogNXB4OwotICAgIGJvcmRlci1yYWRpdXM6IDVweDsKLSAgICBib3JkZXI6IDFweCBzb2xpZCBy
Z2IoMTM5LDEzOSwxMzkpOwotfQotCi1zZWxlY3Rbc2l6ZV06Zm9jdXMsCi1zZWxlY3RbbXVsdGlw
bGVdOmZvY3VzLAotc2VsZWN0W3NpemVdW211bHRpcGxlXTpmb2N1cyB7Ci0gICAgYm9yZGVyOiAx
cHggc29saWQgYmxhY2s7Ci0gICAgb3V0bGluZTogbm9uZTsKK3NlbGVjdCB7CisgICAgYm9yZGVy
LXJhZGl1czogMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNr
YmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcAppbmRleCBiNzAxOWZmMWRmYTkw
MWJlODU1Yzc3MThiZTVlODczZGI3YTgzMzA1Li4wODkzODdjNWIwMmE2YWE5MWFlNmE0Mzc3Yjlm
NDRjMGFkMDM1YWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwCkBAIC0zNSw2ICszNSw4IEBA
CiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlVzZXJBZ2VudFN0eWxlU2hlZXRz
LmgiCiAKKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1Mb2cuaD4KKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAvLyBTaXplcyAodW5pdCBweCkKQEAgLTY2LDYgKzY4LDIwIEBAIGNvbnN0IHVu
c2lnbmVkIHBhZGRpbmdEaXZpc29yID0gNTsKIGNvbnN0IHVuc2lnbmVkIGZ1bGxTY3JlZW5Fbmxh
cmdlbWVudEZhY3RvciA9IDI7CiBjb25zdCBmbG9hdCBzY2FsZUZhY3RvclRocmVzaG9sZCA9IDIu
MDsKIAorLy8gU2xpY2UgbGVuZ3RoCitjb25zdCBpbnQgc21hbGxTbGljZSA9IDg7Citjb25zdCBp
bnQgbWVkaXVtU2xpY2UgPSAxMDsKK2NvbnN0IGludCBsYXJnZVNsaWNlID0gMTM7CisKKy8vIFNs
aWRlciBBdXJhLCBjYWxjdWxhdGVkIGZyb20gVVggc3BlYworY29uc3QgZmxvYXQgYXVyYVJhdGlv
ID0gMS42MjsKKworLy8gRHJvcGRvd24gYXJyb3cgcG9zaXRpb24sIGNhbGN1bGF0ZWQgZnJvbSBV
WCBzcGVjCitjb25zdCBmbG9hdCB4UG9zaXRpb25SYXRpbyA9IDM7Citjb25zdCBmbG9hdCB5UG9z
aXRpb25SYXRpbyA9IDAuMzg7Citjb25zdCBmbG9hdCB3aWR0aFJhdGlvID0gMzsKK2NvbnN0IGZs
b2F0IGhlaWdodFJhdGlvID0gMC4yMzsKKwogLy8gQ29sb3JzCiBjb25zdCBSR0JBMzIgY2FyZXRC
b3R0b20gPSAweGZmMjE2M2JmOwogY29uc3QgUkdCQTMyIGNhcmV0VG9wID0gMHhmZjY5YTVmYTsK
QEAgLTEwOSwyNCArMTI1LDEwIEBAIGNvbnN0IFJHQkEzMiBzZWxlY3Rpb24gPSAweGZmMmI4ZmZm
OwogCiBjb25zdCBSR0JBMzIgYmxhY2tQZW4gPSBDb2xvcjo6YmxhY2s7CiBjb25zdCBSR0JBMzIg
Zm9jdXNSaW5nUGVuID0gMHhmZmEzYzhmZTsKK2NvbnN0IFJHQkEzMiBhY3RpdmVUZXh0Q29sb3Ig
PSAweGZmZmFmYWZhOwogCiBmbG9hdCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmRlZmF1bHRGb250
U2l6ZSA9IDE2OwogCi0vLyBXZSBhaW0gdG8gbWF0Y2ggSUUgaGVyZS4KLS8vIC1JRSB1c2VzIGEg
Zm9udCBiYXNlZCBvbiB0aGUgZW5jb2RpbmcgYXMgdGhlIGRlZmF1bHQgZm9udCBmb3IgZm9ybSBj
b250cm9scy4KLS8vIC1HZWNrbyB1c2VzIE1TIFNoZWxsIERsZyAoYWN0dWFsbHkgY2FsbHMgR2V0
U3RvY2tPYmplY3QoREVGQVVMVF9HVUlfRk9OVCksCi0vLyB3aGljaCByZXR1cm5zIE1TIFNoZWxs
IERsZykKLS8vIC1TYWZhcmkgdXNlcyBMdWNpZGEgR3JhbmRlLgotLy8KLS8vIEZJWE1FOiBUaGUg
b25seSBjYXNlIHdoZXJlIHdlIGtub3cgd2UgZG9uJ3QgbWF0Y2ggSUUgaXMgZm9yIEFOU0kgZW5j
b2RpbmdzLgotLy8gSUUgdXNlcyBNUyBTaGVsbCBEbGcgdGhlcmUsIHdoaWNoIHdlIHJlbmRlciBp
bmNvcnJlY3RseSBhdCBjZXJ0YWluIHBpeGVsCi0vLyBzaXplcyAoZS5nLiAxNXB4KS4gU28gd2Ug
anVzdCB1c2UgQXJpYWwgZm9yIG5vdy4KLWNvbnN0IFN0cmluZyYgUmVuZGVyVGhlbWVCbGFja0Jl
cnJ5OjpkZWZhdWx0R1VJRm9udCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGZvbnRGYWNlLCAoQVNDSUlMaXRlcmFsKCJBcmlhbCIpKSk7Ci0gICAgcmV0dXJuIGZvbnRGYWNl
OwotfQotCiBzdGF0aWMgUGFzc1JlZlB0cjxHcmFkaWVudD4gY3JlYXRlTGluZWFyR3JhZGllbnQo
UkdCQTMyIHRvcCwgUkdCQTMyIGJvdHRvbSwgY29uc3QgSW50UG9pbnQmIGEsIGNvbnN0IEludFBv
aW50JiBiKQogewogICAgIFJlZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3Jl
YXRlKGEsIGIpOwpAQCAtMTM1LDIyICsxMzcsNiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxHcmFkaWVu
dD4gY3JlYXRlTGluZWFyR3JhZGllbnQoUkdCQTMyIHRvcCwgUkdCQTMyIGJvdHRvbSwgY29ucwog
ICAgIHJldHVybiBncmFkaWVudC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBQYXRoIHJvdW5kZWRS
ZWN0Rm9yQm9yZGVyKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBJbnRSZWN0JiByZWN0KQot
ewotICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IG9iamVjdC0+c3R5bGUoKTsKLSAgICBMZW5ndGhT
aXplIHRvcExlZnRSYWRpdXMgPSBzdHlsZS0+Ym9yZGVyVG9wTGVmdFJhZGl1cygpOwotICAgIExl
bmd0aFNpemUgdG9wUmlnaHRSYWRpdXMgPSBzdHlsZS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKTsK
LSAgICBMZW5ndGhTaXplIGJvdHRvbUxlZnRSYWRpdXMgPSBzdHlsZS0+Ym9yZGVyQm90dG9tTGVm
dFJhZGl1cygpOwotICAgIExlbmd0aFNpemUgYm90dG9tUmlnaHRSYWRpdXMgPSBzdHlsZS0+Ym9y
ZGVyQm90dG9tUmlnaHRSYWRpdXMoKTsKLQotICAgIFBhdGggcm91bmRlZFJlY3Q7Ci0gICAgcm91
bmRlZFJlY3QuYWRkUm91bmRlZFJlY3QocmVjdCwgSW50U2l6ZSh0b3BMZWZ0UmFkaXVzLndpZHRo
KCkudmFsdWUoKSwgdG9wTGVmdFJhZGl1cy5oZWlnaHQoKS52YWx1ZSgpKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRTaXplKHRvcFJpZ2h0UmFkaXVzLndpZHRoKCku
dmFsdWUoKSwgdG9wUmlnaHRSYWRpdXMuaGVpZ2h0KCkudmFsdWUoKSksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSW50U2l6ZShib3R0b21MZWZ0UmFkaXVzLndpZHRoKCku
dmFsdWUoKSwgYm90dG9tTGVmdFJhZGl1cy5oZWlnaHQoKS52YWx1ZSgpKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRTaXplKGJvdHRvbVJpZ2h0UmFkaXVzLndpZHRo
KCkudmFsdWUoKSwgYm90dG9tUmlnaHRSYWRpdXMuaGVpZ2h0KCkudmFsdWUoKSkpOwotICAgIHJl
dHVybiByb3VuZGVkUmVjdDsKLX0KLQogc3RhdGljIFJlbmRlclNsaWRlciogZGV0ZXJtaW5lUmVu
ZGVyU2xpZGVyKFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAgIEFTU0VSVChvYmplY3QtPmlz
U2xpZGVyVGh1bWIoKSk7CkBAIC0xODIsNiArMTY4LDc2IEBAIHN0YXRpYyBmbG9hdCBkZXRlcm1p
bmVGdWxsU2NyZWVuTXVsdGlwbGllcihFbGVtZW50KiBlbGVtZW50KQogICAgIHJldHVybiBmdWxs
U2NyZWVuTXVsdGlwbGllcjsKIH0KIAorc3RhdGljIHZvaWQgZHJhd0NvbnRyb2woR3JhcGhpY3ND
b250ZXh0KiBnYywgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBJbWFnZSogaW1nKQoreworICAgIEZs
b2F0UmVjdCBzcmNSZWN0KDAsIDAsIGltZy0+d2lkdGgoKSwgaW1nLT5oZWlnaHQoKSk7CisgICAg
Z2MtPmRyYXdJbWFnZShpbWcsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHJlY3QsIHNyY1JlY3QpOwor
fQorCitzdGF0aWMgdm9pZCBkcmF3VGhyZWVTbGljZShHcmFwaGljc0NvbnRleHQqIGdjLCBjb25z
dCBJbnRSZWN0JiByZWN0LCBJbWFnZSogaW1nLCBpbnQgc2xpY2UpCit7CisgICAgRmxvYXRTaXpl
IGRzdFNsaWNlKHJlY3QuaGVpZ2h0KCkgLyAyLCByZWN0LmhlaWdodCgpKTsKKyAgICBGbG9hdFJl
Y3Qgc3JjUmVjdCgwLCAwLCBzbGljZSwgaW1nLT5oZWlnaHQoKSk7CisgICAgRmxvYXRSZWN0IGRz
dFJlY3QocmVjdC5sb2NhdGlvbigpLCBkc3RTbGljZSk7CisKKyAgICBnYy0+ZHJhd0ltYWdlKGlt
ZywgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCk7CisgICAgc3JjUmVjdC5t
b3ZlKGltZy0+d2lkdGgoKSAtIHNyY1JlY3Qud2lkdGgoKSwgMCk7CisgICAgZHN0UmVjdC5tb3Zl
KHJlY3Qud2lkdGgoKSAtIGRzdFJlY3Qud2lkdGgoKSwgMCk7CisgICAgZ2MtPmRyYXdJbWFnZShp
bWcsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QpOworCisgICAgc3JjUmVj
dCA9IEZsb2F0UmVjdChzbGljZSwgMCwgaW1nLT53aWR0aCgpIC0gMiAqIHNsaWNlLCBpbWctPmhl
aWdodCgpKTsKKyAgICBkc3RSZWN0ID0gRmxvYXRSZWN0KHJlY3QueCgpICsgZHN0U2xpY2Uud2lk
dGgoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSAtIDIgKiBkc3RTbGljZS53aWR0aCgpLCBkc3RT
bGljZS5oZWlnaHQoKSk7CisgICAgZ2MtPmRyYXdJbWFnZShpbWcsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRzdFJlY3QsIHNyY1JlY3QpOworfQorCitzdGF0aWMgdm9pZCBkcmF3TmluZVNsaWNlKEdy
YXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IEludFJlY3QmIHJlY3QsIGRvdWJsZSBzY2FsZSwgSW1h
Z2UqIGltZywgaW50IHNsaWNlKQoreworICAgIGlmIChyZWN0LmhlaWdodCgpICogc2NhbGUgPCAx
MDEuMCkKKyAgICAgICAgc2NhbGUgPSAxMDEuMCAvIHJlY3QuaGVpZ2h0KCk7CisgICAgRmxvYXRT
aXplIGRzdFNsaWNlKHNsaWNlIC8gc2NhbGUsIHNsaWNlIC8gc2NhbGUpOworICAgIEZsb2F0UmVj
dCBzcmNSZWN0KDAsIDAsIHNsaWNlLCBzbGljZSk7CisgICAgRmxvYXRSZWN0IGRzdFJlY3QocmVj
dC5sb2NhdGlvbigpLCBkc3RTbGljZSk7CisgICAgZ2MtPmRyYXdJbWFnZShpbWcsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QpOworICAgIHNyY1JlY3QubW92ZShpbWctPndp
ZHRoKCkgLSBzcmNSZWN0LndpZHRoKCksIDApOworICAgIGRzdFJlY3QubW92ZShyZWN0LndpZHRo
KCkgLSBkc3RSZWN0LndpZHRoKCksIDApOworICAgIGdjLT5kcmF3SW1hZ2UoaW1nLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBzcmNSZWN0Lm1vdmUoMCwgaW1n
LT5oZWlnaHQoKSAtIHNyY1JlY3QuaGVpZ2h0KCkpOworICAgIGRzdFJlY3QubW92ZSgwLCByZWN0
LmhlaWdodCgpIC0gZHN0UmVjdC5oZWlnaHQoKSk7CisgICAgZ2MtPmRyYXdJbWFnZShpbWcsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QpOworICAgIHNyY1JlY3QubW92ZSgt
KGltZy0+d2lkdGgoKSAtIHNyY1JlY3Qud2lkdGgoKSksIDApOworICAgIGRzdFJlY3QubW92ZSgt
KHJlY3Qud2lkdGgoKSAtIGRzdFJlY3Qud2lkdGgoKSksIDApOworICAgIGdjLT5kcmF3SW1hZ2Uo
aW1nLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0KTsKKworICAgIHNyY1Jl
Y3QgPSBGbG9hdFJlY3Qoc2xpY2UsIDAsIGltZy0+d2lkdGgoKSAtIDIgKiBzbGljZSwgc2xpY2Up
OworICAgIGRzdFJlY3QgPSBGbG9hdFJlY3QocmVjdC54KCkgKyBkc3RTbGljZS53aWR0aCgpLCBy
ZWN0LnkoKSwgcmVjdC53aWR0aCgpIC0gMiAqIGRzdFNsaWNlLndpZHRoKCksIGRzdFNsaWNlLmhl
aWdodCgpKTsKKyAgICBnYy0+ZHJhd0ltYWdlKGltZywgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0
UmVjdCwgc3JjUmVjdCk7CisgICAgc3JjUmVjdC5tb3ZlKDAsIGltZy0+aGVpZ2h0KCkgLSBzcmNS
ZWN0LmhlaWdodCgpKTsKKyAgICBkc3RSZWN0Lm1vdmUoMCwgcmVjdC5oZWlnaHQoKSAtIGRzdFJl
Y3QuaGVpZ2h0KCkpOworICAgIGdjLT5kcmF3SW1hZ2UoaW1nLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBkc3RSZWN0LCBzcmNSZWN0KTsKKworICAgIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgc2xpY2Us
IHNsaWNlLCBpbWctPmhlaWdodCgpIC0gMiAqIHNsaWNlKTsKKyAgICBkc3RSZWN0ID0gRmxvYXRS
ZWN0KHJlY3QueCgpLCByZWN0LnkoKSArIGRzdFNsaWNlLmhlaWdodCgpLCBkc3RTbGljZS53aWR0
aCgpLCByZWN0LmhlaWdodCgpIC0gMiAqIGRzdFNsaWNlLmhlaWdodCgpKTsKKyAgICBnYy0+ZHJh
d0ltYWdlKGltZywgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCk7CisgICAg
c3JjUmVjdC5tb3ZlKGltZy0+d2lkdGgoKSAtIHNyY1JlY3Qud2lkdGgoKSwgMCk7CisgICAgZHN0
UmVjdC5tb3ZlKHJlY3Qud2lkdGgoKSAtIGRzdFJlY3Qud2lkdGgoKSwgMCk7CisgICAgZ2MtPmRy
YXdJbWFnZShpbWcsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QpOworCisg
ICAgc3JjUmVjdCA9IEZsb2F0UmVjdChzbGljZSwgc2xpY2UsIGltZy0+d2lkdGgoKSAtIDIgKiBz
bGljZSwgaW1nLT5oZWlnaHQoKSAtIDIgKiBzbGljZSk7CisgICAgZHN0UmVjdCA9IEZsb2F0UmVj
dChyZWN0LngoKSArIGRzdFNsaWNlLndpZHRoKCksIHJlY3QueSgpICsgZHN0U2xpY2UuaGVpZ2h0
KCksIHJlY3Qud2lkdGgoKSAtIDIgKiBkc3RTbGljZS53aWR0aCgpLCByZWN0LmhlaWdodCgpIC0g
MiAqIGRzdFNsaWNlLmhlaWdodCgpKTsKKyAgICBnYy0+ZHJhd0ltYWdlKGltZywgQ29sb3JTcGFj
ZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCk7Cit9CisKK3N0YXRpYyBSZWZQdHI8SW1hZ2U+
IGxvYWRJbWFnZShjb25zdCBjaGFyKiBmaWxlbmFtZSkKK3sKKyAgICBSZWZQdHI8SW1hZ2U+IHJl
c291cmNlOworICAgIHJlc291cmNlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGZpbGVu
YW1lKS5sZWFrUmVmKCk7CisgICAgaWYgKCFyZXNvdXJjZSkgeworICAgICAgICBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6bG9nQWx3YXlzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbFdhcm4s
ICJSZW5kZXJUaGVtZUJsYWNrQmVycnkgZmFpbGVkIHRvIGxvYWQgJXMucG5nIiwgZmlsZW5hbWUp
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlc291cmNlOworfQorCiBQ
YXNzUmVmUHRyPFJlbmRlclRoZW1lPiBSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKFBhZ2UqIHBh
Z2UpCiB7CiAgICAgc3RhdGljIFJlbmRlclRoZW1lKiB0aGVtZSA9IFJlbmRlclRoZW1lQmxhY2tC
ZXJyeTo6Y3JlYXRlKCkubGVha1JlZigpOwpAQCAtMjI5LDcgKzI4NSw4IEBAIHZvaWQgUmVuZGVy
VGhlbWVCbGFja0JlcnJ5OjpzeXN0ZW1Gb250KGludCBwcm9wSWQsIEZvbnREZXNjcmlwdGlvbiYg
Zm9udERlc2NyaXB0CiB7CiAgICAgZmxvYXQgZm9udFNpemUgPSBkZWZhdWx0Rm9udFNpemU7CiAK
LSAgICBpZiAocHJvcElkID09IENTU1ZhbHVlV2Via2l0TWluaUNvbnRyb2wgfHwgcHJvcElkID09
ICBDU1NWYWx1ZVdlYmtpdFNtYWxsQ29udHJvbCB8fCBwcm9wSWQgPT0gQ1NTVmFsdWVXZWJraXRD
b250cm9sKSB7CisgICAgLy8gQm90aCBDU1NWYWx1ZVdlYmtpdENvbnRyb2wgYW5kIENTU1ZhbHVl
V2Via2l0U21hbGxDb250cm9sIHNob3VsZCB1c2UgZGVmYXVsdCBmb250IHNpemUgd2hpY2ggbG9v
a3MgYmV0dGVyIG9uIHRoZSBjb250cm9scy4KKyAgICBpZiAocHJvcElkID09IENTU1ZhbHVlV2Vi
a2l0TWluaUNvbnRyb2wpIHsKICAgICAgICAgLy8gV2h5IDIgcG9pbnRzIHNtYWxsZXI/IEJlY2F1
c2UgdGhhdCdzIHdoYXQgR2Vja28gZG9lcy4gTm90ZSB0aGF0IHdlCiAgICAgICAgIC8vIGFyZSBh
c3N1bWluZyBhIDk2ZHBpIHNjcmVlbiwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgdmFsdWUgd2UgdXNl
IG9uIFdpbmRvd3MuCiAgICAgICAgIHN0YXRpYyBjb25zdCBmbG9hdCBwb2ludHNQZXJJbmNoID0g
NzIuMGY7CkBAIC0yMzcsMTAgKzI5NCw5IEBAIHZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5Ojpz
eXN0ZW1Gb250KGludCBwcm9wSWQsIEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0CiAgICAg
ICAgIGZvbnRTaXplIC09ICgyLjBmIC8gcG9pbnRzUGVySW5jaCkgKiBwaXhlbHNQZXJJbmNoOwog
ICAgIH0KIAotICAgIGZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWlseSgpLnNldEZhbWlseShkZWZh
dWx0R1VJRm9udCgpKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShmb250
U2l6ZSk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldElzQWJzb2x1dGVTaXplKHRydWUpOwotICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6Tm9GYW1p
bHkpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlv
bjo6U2Fuc1NlcmlmRmFtaWx5KTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRX
ZWlnaHROb3JtYWwpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJdGFsaWMoZmFsc2UpOwogfQpA
QCAtMjc4LDI3ICszMzQsMjIgQEAgYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50VGV4
dEZpZWxkT3JUZXh0QXJlYU9yU2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0KgogICAgIEFTU0VSVChp
bmZvLmNvbnRleHQpOwogICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGluZm8uY29udGV4
dDsKIAotICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICBjb250ZXh0LT5zZXRTdHJva2VTdHlsZShT
b2xpZFN0cm9rZSk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVXaWR0aCk7
Ci0gICAgaWYgKCFpc0VuYWJsZWQob2JqZWN0KSkKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tl
Q29sb3IoZGlzYWJsZWRPdXRsaW5lLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBlbHNlIGlm
IChpc1ByZXNzZWQob2JqZWN0KSkKLSAgICAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VHcmFk
aWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChkZXByZXNzZWRUb3BPdXRsaW5lLCBkZXByZXNzZWRC
b3R0b21PdXRsaW5lLCByZWN0Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIo
KSkpOwotICAgIGVsc2UgaWYgKGlzSG92ZXJlZChvYmplY3QpIHx8IGlzRm9jdXNlZChvYmplY3Qp
KQotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFkaWVu
dChob3ZlclRvcE91dGxpbmUsIGhvdmVyQm90dG9tT3V0bGluZSwgcmVjdC5tYXhYTWluWUNvcm5l
cigpLCByZWN0Lm1heFhNYXhZQ29ybmVyKCkpKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbnRleHQt
PnNldFN0cm9rZUdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KHJlZ3VsYXJUb3BPdXRsaW5l
LCByZWd1bGFyQm90dG9tT3V0bGluZSwgcmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0Lm1heFhN
YXhZQ29ybmVyKCkpKTsKLQotICAgIFBhdGggdGV4dEZpZWxkUm91bmRlZFJlY3RhbmdsZSA9IHJv
dW5kZWRSZWN0Rm9yQm9yZGVyKG9iamVjdCwgcmVjdCk7Ci0gICAgaWYgKG9iamVjdC0+c3R5bGUo
KS0+YXBwZWFyYW5jZSgpID09IFNlYXJjaEZpZWxkUGFydCkgewotICAgICAgICAvLyBXZSBmb3Jj
ZSB0aGUgZmlsbCBjb2xvciB0byBXaGl0ZSBzbyBhcyB0byBtYXRjaCB0aGUgYmFja2dyb3VuZCBj
b2xvciBvZiB0aGUgc2VhcmNoIGNhbmNlbCBidXR0b24gZ3JhcGhpYy4KLSAgICAgICAgY29udGV4
dC0+c2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAg
ICAgIGNvbnRleHQtPmZpbGxQYXRoKHRleHRGaWVsZFJvdW5kZWRSZWN0YW5nbGUpOwotICAgICAg
ICBjb250ZXh0LT5zdHJva2VQYXRoKHRleHRGaWVsZFJvdW5kZWRSZWN0YW5nbGUpOwotICAgIH0g
ZWxzZQotICAgICAgICBjb250ZXh0LT5zdHJva2VQYXRoKHRleHRGaWVsZFJvdW5kZWRSZWN0YW5n
bGUpOwotICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlPiBi
ZywgYmdEaXNhYmxlZCwgYmdIaWdobGlnaHQ7CisgICAgaWYgKCFiZykgeworICAgICAgICBiZyA9
IGxvYWRJbWFnZSgiY29yZV90ZXh0aW5wdXRfYmciKTsKKyAgICAgICAgYmdEaXNhYmxlZCA9IGxv
YWRJbWFnZSgiY29yZV90ZXh0aW5wdXRfYmdfZGlzYWJsZWQiKTsKKyAgICAgICAgYmdIaWdobGln
aHQgPSBsb2FkSW1hZ2UoImNvcmVfdGV4dGlucHV0X2JnX2hpZ2hsaWdodCIpOworICAgIH0KKwor
ICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBjb250ZXh0LT5nZXRDVE0oKTsKKyAgICBpZiAoaXNF
bmFibGVkKG9iamVjdCkgJiYgYmcpCisgICAgICAgIGRyYXdOaW5lU2xpY2UoY29udGV4dCwgcmVj
dCwgY3RtLnhTY2FsZSgpLCBiZy5nZXQoKSwgc21hbGxTbGljZSk7CisgICAgaWYgKCFpc0VuYWJs
ZWQob2JqZWN0KSAmJiBiZ0Rpc2FibGVkKQorICAgICAgICBkcmF3TmluZVNsaWNlKGNvbnRleHQs
IHJlY3QsIGN0bS54U2NhbGUoKSwgYmdEaXNhYmxlZC5nZXQoKSwgc21hbGxTbGljZSk7CisKKyAg
ICBpZiAoKGlzSG92ZXJlZChvYmplY3QpIHx8IGlzRm9jdXNlZChvYmplY3QpIHx8IGlzUHJlc3Nl
ZChvYmplY3QpKSAmJiBiZ0hpZ2hsaWdodCkKKyAgICAgICAgZHJhd05pbmVTbGljZShjb250ZXh0
LCByZWN0LCBjdG0ueFNjYWxlKCksIGJnSGlnaGxpZ2h0LmdldCgpLCBzbWFsbFNsaWNlKTsKKwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNDA5LDcgKzQ2MCw1MSBAQCB2b2lkIFJlbmRlclRo
ZW1lQmxhY2tCZXJyeTo6Y2FsY3VsYXRlQnV0dG9uU2l6ZShSZW5kZXJTdHlsZSogc3R5bGUpIGNv
bnN0CiAKIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludENoZWNrYm94KFJlbmRlck9i
amVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3Qp
CiB7Ci0gICAgcmV0dXJuIHBhaW50QnV0dG9uKG9iamVjdCwgaW5mbywgcmVjdCk7CisgICAgQVNT
RVJUKGluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gaW5mby5j
b250ZXh0OworCisgICAgc3RhdGljIFJlZlB0cjxJbWFnZT4gZGlzYWJsZWQsIGJhY2tncm91bmQs
IGluYWN0aXZlLCBwcmVzc2VkLCBhY3RpdmUsIGFjdGl2ZU1hcmssIGRpc2FibGVNYXJrOworICAg
IGlmICghZGlzYWJsZWQpIHsKKyAgICAgICAgZGlzYWJsZWQgPSBsb2FkSW1hZ2UoImNvcmVfY2hl
Y2tib3hfZGlzYWJsZWQiKTsKKyAgICAgICAgYmFja2dyb3VuZCA9IGxvYWRJbWFnZSgiY29yZV9j
aGVja2JveF9tb2F0Iik7CisgICAgICAgIGluYWN0aXZlID0gbG9hZEltYWdlKCJjb3JlX2NoZWNr
Ym94X2luYWN0aXZlIik7CisgICAgICAgIHByZXNzZWQgPSBsb2FkSW1hZ2UoImNvcmVfY2hlY2ti
b3hfcHJlc3NlZCIpOworICAgICAgICBhY3RpdmUgPSBsb2FkSW1hZ2UoImNvcmVfY2hlY2tib3hf
YWN0aXZlIik7CisgICAgICAgIGFjdGl2ZU1hcmsgPSBsb2FkSW1hZ2UoImNvcmVfY2hlY2tib3hf
YWN0aXZlX21hcmsiKTsKKyAgICAgICAgZGlzYWJsZU1hcmsgPSBsb2FkSW1hZ2UoImNvcmVfY2hl
Y2tib3hfZGlzYWJsZWRfbWFyayIpOworICAgIH0KKworICAgIC8vIENhY3VsYXRlIHdoZXJlIHRv
IHB1dCBjZW50ZXIgY2hlY2ttYXJrLgorICAgIEZsb2F0UmVjdCB0bXBSZWN0KHJlY3QpOworCisg
ICAgZmxvYXQgY2VudGVyWCA9ICgoZmxvYXQoaW5hY3RpdmUtPndpZHRoKCkpIC0gZmxvYXQoYWN0
aXZlTWFyay0+d2lkdGgoKSkpIC8gZmxvYXQoaW5hY3RpdmUtPndpZHRoKCkpICogdG1wUmVjdC53
aWR0aCgpIC8gMikgKyB0bXBSZWN0LngoKTsKKyAgICBmbG9hdCBjZW50ZXJZID0gKChmbG9hdChp
bmFjdGl2ZS0+aGVpZ2h0KCkpIC0gZmxvYXQoYWN0aXZlTWFyay0+aGVpZ2h0KCkpKSAvIGZsb2F0
KGluYWN0aXZlLT5oZWlnaHQoKSkgKiB0bXBSZWN0LmhlaWdodCgpIC8gMikgKyB0bXBSZWN0Lnko
KTsKKyAgICBmbG9hdCB3aWR0aCA9IGZsb2F0KGFjdGl2ZU1hcmstPndpZHRoKCkpIC8gZmxvYXQo
aW5hY3RpdmUtPndpZHRoKCkpICogdG1wUmVjdC53aWR0aCgpOworICAgIGZsb2F0IGhlaWdodCA9
IGZsb2F0KGFjdGl2ZU1hcmstPmhlaWdodCgpKSAvIGZsb2F0KGluYWN0aXZlLT5oZWlnaHQoKSkg
KiB0bXBSZWN0LmhlaWdodCgpOworICAgIEZsb2F0UmVjdCBjZW50ZXJSZWN0KGNlbnRlclgsIGNl
bnRlclksIHdpZHRoLCBoZWlnaHQpOworCisgICAgZHJhd0NvbnRyb2woY29udGV4dCwgcmVjdCwg
YmFja2dyb3VuZC5nZXQoKSk7CisKKyAgICBpZiAoaXNFbmFibGVkKG9iamVjdCkpIHsKKyAgICAg
ICAgaWYgKGlzUHJlc3NlZChvYmplY3QpKSB7CisgICAgICAgICAgICBkcmF3Q29udHJvbChjb250
ZXh0LCByZWN0LCBwcmVzc2VkLmdldCgpKTsKKyAgICAgICAgICAgIGlmIChpc0NoZWNrZWQob2Jq
ZWN0KSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBuZWVkIG9wYWNpdHkgMzAlIG9uIGFj
dGl2ZU1hcmsKKyAgICAgICAgICAgICAgICBkcmF3Q29udHJvbChjb250ZXh0LCBjZW50ZXJSZWN0
LCBhY3RpdmVNYXJrLmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGRyYXdDb250cm9sKGNvbnRleHQsIHJlY3QsIGluYWN0aXZlLmdldCgpKTsKKyAg
ICAgICAgICAgIGlmIChpc0NoZWNrZWQob2JqZWN0KSkgeworICAgICAgICAgICAgICAgIGRyYXdD
b250cm9sKGNvbnRleHQsIHJlY3QsIGFjdGl2ZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgZHJh
d0NvbnRyb2woY29udGV4dCwgY2VudGVyUmVjdCwgYWN0aXZlTWFyay5nZXQoKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBkcmF3Q29udHJvbChjb250
ZXh0LCByZWN0LCBkaXNhYmxlZC5nZXQoKSk7CisgICAgICAgIGlmIChpc0NoZWNrZWQob2JqZWN0
KSkKKyAgICAgICAgICAgIGRyYXdDb250cm9sKGNvbnRleHQsIHJlY3QsIGRpc2FibGVNYXJrLmdl
dCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIFJlbmRlclRoZW1lQmxh
Y2tCZXJyeTo6c2V0Q2hlY2tib3hTaXplKFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKQEAgLTQx
OSw3ICs1MTQsNTAgQEAgdm9pZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnNldENoZWNrYm94U2l6
ZShSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CiAKIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5
OjpwYWludFJhZGlvKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8s
IGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgcmV0dXJuIHBhaW50QnV0dG9uKG9iamVjdCwg
aW5mbywgcmVjdCk7CisgICAgQVNTRVJUKGluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0ID0gaW5mby5jb250ZXh0OworCisgICAgc3RhdGljIFJlZlB0cjxJbWFnZT4g
ZGlzYWJsZWQsIGRpc2FibGVkQWN0aXZlLCBpbmFjdGl2ZSwgcHJlc3NlZCwgYWN0aXZlLCBhY3Rp
dmVNYXJrOworICAgIGlmICghZGlzYWJsZWQpIHsKKyAgICAgICAgZGlzYWJsZWQgPSBsb2FkSW1h
Z2UoImNvcmVfcmFkaW9idXR0b25fZGlzYWJsZWQiKTsKKyAgICAgICAgZGlzYWJsZWRBY3RpdmUg
PSBsb2FkSW1hZ2UoImNvcmVfcmFkaW9idXR0b25fZGlzYWJsZWRfYWN0aXZlIik7CisgICAgICAg
IGluYWN0aXZlID0gbG9hZEltYWdlKCJjb3JlX3JhZGlvYnV0dG9uX2luYWN0aXZlIik7CisgICAg
ICAgIHByZXNzZWQgPSBsb2FkSW1hZ2UoImNvcmVfcmFkaW9idXR0b25fcHJlc3NlZCIpOworICAg
ICAgICBhY3RpdmUgPSBsb2FkSW1hZ2UoImNvcmVfcmFkaW9idXR0b25fYWN0aXZlIik7CisgICAg
ICAgIGFjdGl2ZU1hcmsgPSBsb2FkSW1hZ2UoImNvcmVfcmFkaW9idXR0b25fYWN0aXZlX21hcmsi
KTsKKyAgICB9CisKKyAgICAvLyBDYWN1bGF0ZSB3aGVyZSB0byBwdXQgY2VudGVyIGNpcmNsZS4K
KyAgICBGbG9hdFJlY3QgdG1wUmVjdChyZWN0KTsKKworICAgIGZsb2F0IGNlbnRlclggPSAoKGZs
b2F0KGluYWN0aXZlLT53aWR0aCgpKSAtIGZsb2F0KGFjdGl2ZU1hcmstPndpZHRoKCkpKSAvIGZs
b2F0KGluYWN0aXZlLT53aWR0aCgpKSAqIHRtcFJlY3Qud2lkdGgoKSAvIDIpKyB0bXBSZWN0Lngo
KTsKKyAgICBmbG9hdCBjZW50ZXJZID0gKChmbG9hdChpbmFjdGl2ZS0+aGVpZ2h0KCkpIC0gZmxv
YXQoYWN0aXZlTWFyay0+aGVpZ2h0KCkpKSAvIGZsb2F0KGluYWN0aXZlLT5oZWlnaHQoKSkgKiB0
bXBSZWN0LmhlaWdodCgpIC8gMikgKyB0bXBSZWN0LnkoKTsKKyAgICBmbG9hdCB3aWR0aCA9IGZs
b2F0KGFjdGl2ZU1hcmstPndpZHRoKCkpIC8gZmxvYXQoaW5hY3RpdmUtPndpZHRoKCkpICogdG1w
UmVjdC53aWR0aCgpOworICAgIGZsb2F0IGhlaWdodCA9IGZsb2F0KGFjdGl2ZU1hcmstPmhlaWdo
dCgpKSAvIGZsb2F0KGluYWN0aXZlLT5oZWlnaHQoKSkgKiB0bXBSZWN0LmhlaWdodCgpOworICAg
IEZsb2F0UmVjdCBjZW50ZXJSZWN0KGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQpOwor
CisgICAgaWYgKGlzRW5hYmxlZChvYmplY3QpKSB7CisgICAgICAgIGlmIChpc1ByZXNzZWQob2Jq
ZWN0KSkgeworICAgICAgICAgICAgZHJhd0NvbnRyb2woY29udGV4dCwgcmVjdCwgcHJlc3NlZC5n
ZXQoKSk7CisgICAgICAgICAgICBpZiAoaXNDaGVja2VkKG9iamVjdCkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogbmVlZCBvcGFjaXR5IDMwJSBvbiBhY3RpdmVNYXJrCisgICAgICAgICAg
ICAgICAgZHJhd0NvbnRyb2woY29udGV4dCwgY2VudGVyUmVjdCwgYWN0aXZlTWFyay5nZXQoKSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkcmF3Q29udHJv
bChjb250ZXh0LCByZWN0LCBpbmFjdGl2ZS5nZXQoKSk7CisgICAgICAgICAgICBpZiAoaXNDaGVj
a2VkKG9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICBkcmF3Q29udHJvbChjb250ZXh0LCByZWN0
LCBhY3RpdmUuZ2V0KCkpOworICAgICAgICAgICAgICAgIGRyYXdDb250cm9sKGNvbnRleHQsIGNl
bnRlclJlY3QsIGFjdGl2ZU1hcmsuZ2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgZHJhd0NvbnRyb2woY29udGV4dCwgcmVjdCwgaW5hY3RpdmUu
Z2V0KCkpOworICAgICAgICBpZiAoaXNDaGVja2VkKG9iamVjdCkpCisgICAgICAgICAgICBkcmF3
Q29udHJvbChjb250ZXh0LCByZWN0LCBkaXNhYmxlZEFjdGl2ZS5nZXQoKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGRyYXdDb250cm9sKGNvbnRleHQsIHJlY3QsIGRpc2FibGVkLmdldCgp
KTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIFJlbmRlclRoZW1lQmxhY2tC
ZXJyeTo6c2V0UmFkaW9TaXplKFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKQEAgLTQzMiw4MSAr
NTcwLDI2IEBAIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludEJ1dHRvbihSZW5kZXJP
YmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpCiB7CiAgICAgQVNTRVJUKGluZm8uY29u
dGV4dCk7CiAgICAgaW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0ID0gaW5mby5jb250ZXh0OwogCi0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHls
ZShTb2xpZFN0cm9rZSk7Ci0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MobGlu
ZVdpZHRoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlPiBkaXNhYmxlZCwgaW5hY3RpdmUsIHBy
ZXNzZWQ7CisgICAgaWYgKCFkaXNhYmxlZCkgeworICAgICAgICBkaXNhYmxlZCA9IGxvYWRJbWFn
ZSgiY29yZV9idXR0b25fZGlzYWJsZWQiKTsKKyAgICAgICAgaW5hY3RpdmUgPSBsb2FkSW1hZ2Uo
ImNvcmVfYnV0dG9uX2luYWN0aXZlIik7CisgICAgICAgIHByZXNzZWQgPSBsb2FkSW1hZ2UoImNv
cmVfYnV0dG9uX3ByZXNzZWQiKTsKKyAgICB9CiAKLSAgICBDb2xvciBjaGVjayhibGFja1Blbik7
CisgICAgQWZmaW5lVHJhbnNmb3JtIGN0bSA9IGNvbnRleHQtPmdldENUTSgpOwogICAgIGlmICgh
aXNFbmFibGVkKG9iamVjdCkpIHsKLSAgICAgICAgaW5mby5jb250ZXh0LT5zZXRGaWxsR3JhZGll
bnQoY3JlYXRlTGluZWFyR3JhZGllbnQoZGlzYWJsZWRUb3AsIGRpc2FibGVkQm90dG9tLCByZWN0
Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSkpOwotICAgICAgICBpbmZv
LmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGRpc2FibGVkT3V0bGluZSwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CisgICAgICAgIGRyYXdOaW5lU2xpY2UoY29udGV4dCwgcmVjdCwgY3RtLnhTY2FsZSgp
LCBpbmFjdGl2ZS5nZXQoKSwgbGFyZ2VTbGljZSk7CisgICAgICAgIGRyYXdOaW5lU2xpY2UoY29u
dGV4dCwgcmVjdCwgY3RtLnhTY2FsZSgpLCBkaXNhYmxlZC5nZXQoKSwgbGFyZ2VTbGljZSk7CiAg
ICAgfSBlbHNlIGlmIChpc1ByZXNzZWQob2JqZWN0KSkgewotICAgICAgICBpbmZvLmNvbnRleHQt
PnNldEZpbGxHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChkZXByZXNzZWRUb3AsIGRlcHJl
c3NlZEJvdHRvbSwgcmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0Lm1heFhNYXhZQ29ybmVyKCkp
KTsKLSAgICAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VHcmFkaWVudChjcmVhdGVMaW5lYXJH
cmFkaWVudChkZXByZXNzZWRUb3BPdXRsaW5lLCBkZXByZXNzZWRCb3R0b21PdXRsaW5lLCByZWN0
Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSkpOwotICAgIH0gZWxzZSBp
ZiAoaXNIb3ZlcmVkKG9iamVjdCkpIHsKLSAgICAgICAgaW5mby5jb250ZXh0LT5zZXRGaWxsR3Jh
ZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQoaG92ZXJUb3AsIGhvdmVyQm90dG9tLCByZWN0Lm1h
eFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSkpOwotICAgICAgICBpbmZvLmNv
bnRleHQtPnNldFN0cm9rZUdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KGhvdmVyVG9wT3V0
bGluZSwgaG92ZXJCb3R0b21PdXRsaW5lLCByZWN0Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4
WE1heFlDb3JuZXIoKSkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGluZm8uY29udGV4dC0+c2V0
RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KHJlZ3VsYXJUb3AsIHJlZ3VsYXJCb3R0
b20sIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7Ci0gICAg
ICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQo
cmVndWxhclRvcE91dGxpbmUsIHJlZ3VsYXJCb3R0b21PdXRsaW5lLCByZWN0Lm1heFhNaW5ZQ29y
bmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSkpOwotICAgIH0KLQotICAgIENvbnRyb2xQYXJ0
IHBhcnQgPSBvYmplY3QtPnN0eWxlKCktPmFwcGVhcmFuY2UoKTsKLSAgICBzd2l0Y2ggKHBhcnQp
IHsKLSAgICBjYXNlIENoZWNrYm94UGFydDogewotICAgICAgICBGbG9hdFNpemUgc21hbGxDb3Ju
ZXIoc21hbGxSYWRpdXMsIHNtYWxsUmFkaXVzKTsKLSAgICAgICAgUGF0aCBwYXRoOwotICAgICAg
ICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIHNtYWxsQ29ybmVyKTsKLSAgICAgICAgaW5mby5j
b250ZXh0LT5maWxsUGF0aChwYXRoKTsKLSAgICAgICAgaW5mby5jb250ZXh0LT5zdHJva2VQYXRo
KHBhdGgpOwotCi0gICAgICAgIGlmIChpc0NoZWNrZWQob2JqZWN0KSkgewotICAgICAgICAgICAg
UGF0aCBjaGVja1BhdGg7Ci0gICAgICAgICAgICBJbnRSZWN0IHJlY3QyID0gcmVjdDsKLSAgICAg
ICAgICAgIHJlY3QyLmluZmxhdGUoLTEpOwotICAgICAgICAgICAgY2hlY2tQYXRoLm1vdmVUbyhG
bG9hdFBvaW50KHJlY3QyLngoKSArIHJlY3QyLndpZHRoKCkgKiBjaGVja2JveExlZnRYLCByZWN0
Mi55KCkgKyByZWN0Mi5oZWlnaHQoKSAqIGNoZWNrYm94TGVmdFkpKTsKLSAgICAgICAgICAgIGNo
ZWNrUGF0aC5hZGRMaW5lVG8oRmxvYXRQb2ludChyZWN0Mi54KCkgKyByZWN0Mi53aWR0aCgpICog
Y2hlY2tib3hNaWRkbGVYLCByZWN0Mi5tYXhZKCkgLSByZWN0Mi5oZWlnaHQoKSAqIGNoZWNrYm94
TWlkZGxlWSkpOwotICAgICAgICAgICAgY2hlY2tQYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KHJl
Y3QyLngoKSArIHJlY3QyLndpZHRoKCkgKiBjaGVja2JveFJpZ2h0WCwgcmVjdDIueSgpICsgcmVj
dDIuaGVpZ2h0KCkgKiBjaGVja2JveFJpZ2h0WSkpOwotICAgICAgICAgICAgaW5mby5jb250ZXh0
LT5zZXRMaW5lQ2FwKFJvdW5kQ2FwKTsKLSAgICAgICAgICAgIGluZm8uY29udGV4dC0+c2V0U3Ry
b2tlQ29sb3IoYmxhY2tQZW4sIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICAgICAgaW5m
by5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MocmVjdDIud2lkdGgoKSAvIGNoZWNrYm94U3Ry
b2tlVGhpY2tuZXNzKTsKLSAgICAgICAgICAgIGluZm8uY29udGV4dC0+ZmlsbFBhdGgoY2hlY2tQ
YXRoKTsKLSAgICAgICAgICAgIGluZm8uY29udGV4dC0+c3Ryb2tlUGF0aChjaGVja1BhdGgpOwot
ICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFJhZGlvUGFydDoKLSAg
ICAgICAgaW5mby5jb250ZXh0LT5kcmF3RWxsaXBzZShyZWN0KTsKLSAgICAgICAgaWYgKGlzQ2hl
Y2tlZChvYmplY3QpKSB7Ci0gICAgICAgICAgICBJbnRSZWN0IHJlY3QyID0gcmVjdDsKLSAgICAg
ICAgICAgIHJlY3QyLmluZmxhdGUoLXJlY3Qud2lkdGgoKSAqIHJhZGlvQnV0dG9uQ2hlY2tTdGF0
ZVNjYWxlcik7Ci0gICAgICAgICAgICBpbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihjaGVjaywg
Q29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9r
ZUNvbG9yKGNoZWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGluZm8uY29u
dGV4dC0+ZHJhd0VsbGlwc2UocmVjdDIpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQnV0dG9uUGFydDoKLSAgICBjYXNlIFB1c2hCdXR0b25QYXJ0OiB7Ci0gICAgICAgIEZs
b2F0U2l6ZSBsYXJnZUNvcm5lcihsYXJnZVJhZGl1cywgbGFyZ2VSYWRpdXMpOwotICAgICAgICBQ
YXRoIHBhdGg7Ci0gICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgbGFyZ2VDb3JuZXIp
OwotICAgICAgICBpbmZvLmNvbnRleHQtPmZpbGxQYXRoKHBhdGgpOwotICAgICAgICBpbmZvLmNv
bnRleHQtPnN0cm9rZVBhdGgocGF0aCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNl
IFNxdWFyZUJ1dHRvblBhcnQ6IHsKLSAgICAgICAgUGF0aCBwYXRoOwotICAgICAgICBwYXRoLmFk
ZFJlY3QocmVjdCk7Ci0gICAgICAgIGluZm8uY29udGV4dC0+ZmlsbFBhdGgocGF0aCk7Ci0gICAg
ICAgIGluZm8uY29udGV4dC0+c3Ryb2tlUGF0aChwYXRoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGluZm8uY29udGV4dC0+cmVzdG9yZSgpOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9CisgICAgICAgIGRyYXdOaW5lU2xpY2UoY29udGV4dCwgcmVj
dCwgY3RtLnhTY2FsZSgpLCBwcmVzc2VkLmdldCgpLCBsYXJnZVNsaWNlKTsKKyAgICAgICAgb2Jq
ZWN0LT5zdHlsZSgpLT5zZXRUZXh0RmlsbENvbG9yKGFjdGl2ZVRleHRDb2xvcik7CisgICAgfSBl
bHNlCisgICAgICAgIGRyYXdOaW5lU2xpY2UoY29udGV4dCwgcmVjdCwgY3RtLnhTY2FsZSgpLCBp
bmFjdGl2ZS5nZXQoKSwgbGFyZ2VTbGljZSk7CiAKLSAgICBpbmZvLmNvbnRleHQtPnJlc3RvcmUo
KTsKKyAgICBjb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC01
MzUsNDMgKzYxOCw2IEBAIHZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RSYWRpb1N0
eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsCiAgICAgc3R5bGUtPnNldEN1
cnNvcihDVVJTT1JfV0VCS0lUX0dSQUIpOwogfQogCi12b2lkIFJlbmRlclRoZW1lQmxhY2tCZXJy
eTo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50QW5kQXJyb3coR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBSZW5kZXJPYmplY3QqIG9iamVjdCwgSW50UmVjdCBidXR0b25SZWN0LCBjb25zdCBQ
YXRoJiBjbGlwUGF0aCkKLXsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0gICAgY29udGV4dC0+c2F2
ZSgpOwotICAgIGlmICghaXNFbmFibGVkKG9iamVjdCkpCi0gICAgICAgIGNvbnRleHQtPnNldEZp
bGxHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChkaXNhYmxlZFRvcCwgZGlzYWJsZWRCb3R0
b20sIGJ1dHRvblJlY3QubWF4WE1pbllDb3JuZXIoKSwgYnV0dG9uUmVjdC5tYXhYTWF4WUNvcm5l
cigpKSk7Ci0gICAgZWxzZSBpZiAoaXNQcmVzc2VkKG9iamVjdCkpCi0gICAgICAgIGNvbnRleHQt
PnNldEZpbGxHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChkZXByZXNzZWRUb3AsIGRlcHJl
c3NlZEJvdHRvbSwgYnV0dG9uUmVjdC5tYXhYTWluWUNvcm5lcigpLCBidXR0b25SZWN0Lm1heFhN
YXhZQ29ybmVyKCkpKTsKLSAgICBlbHNlIGlmIChpc0hvdmVyZWQob2JqZWN0KSkKLSAgICAgICAg
Y29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KGhvdmVyVG9wLCBo
b3ZlckJvdHRvbSwgYnV0dG9uUmVjdC5tYXhYTWluWUNvcm5lcigpLCBidXR0b25SZWN0Lm1heFhN
YXhZQ29ybmVyKCkpKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVu
dChjcmVhdGVMaW5lYXJHcmFkaWVudChyZWd1bGFyVG9wLCByZWd1bGFyQm90dG9tLCBidXR0b25S
ZWN0Lm1heFhNaW5ZQ29ybmVyKCksIGJ1dHRvblJlY3QubWF4WE1heFlDb3JuZXIoKSkpOwotCi0g
ICAgLy8gMS4gUGFpbnQgdGhlIGJhY2tncm91bmQgb2YgdGhlIGJ1dHRvbi4KLSAgICBjb250ZXh0
LT5jbGlwKGNsaXBQYXRoKTsKLSAgICBjb250ZXh0LT5kcmF3UmVjdChidXR0b25SZWN0KTsKLSAg
ICBjb250ZXh0LT5yZXN0b3JlKCk7Ci0KLSAgICAvLyAyLiBQYWludCB0aGUgYnV0dG9uIGFycm93
LgotICAgIGJ1dHRvblJlY3QuaW5mbGF0ZSgtYnV0dG9uUmVjdC53aWR0aCgpIC8gMyk7Ci0gICAg
YnV0dG9uUmVjdC5tb3ZlKDAsIGJ1dHRvblJlY3QuaGVpZ2h0KCkgKiA3IC8gMjApOwotICAgIFBh
dGggcGF0aDsKLSAgICBwYXRoLm1vdmVUbyhGbG9hdFBvaW50KGJ1dHRvblJlY3QueCgpLCBidXR0
b25SZWN0LnkoKSkpOwotICAgIHBhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQoYnV0dG9uUmVjdC54
KCkgKyBidXR0b25SZWN0LndpZHRoKCksIGJ1dHRvblJlY3QueSgpKSk7Ci0gICAgcGF0aC5hZGRM
aW5lVG8oRmxvYXRQb2ludChidXR0b25SZWN0LngoKSArIGJ1dHRvblJlY3Qud2lkdGgoKSAvIDIu
MCwgYnV0dG9uUmVjdC55KCkgKyBidXR0b25SZWN0LmhlaWdodCgpIC8gMi4wKSk7Ci0gICAgcGF0
aC5jbG9zZVN1YnBhdGgoKTsKLQotICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICBjb250ZXh0LT5z
ZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tu
ZXNzKGxpbmVXaWR0aCk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJsYWNr
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6
OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBjb250ZXh0LT5zZXRMaW5lSm9pbihC
ZXZlbEpvaW4pOwotICAgIGNvbnRleHQtPmZpbGxQYXRoKHBhdGgpOwotICAgIGNvbnRleHQtPnJl
c3RvcmUoKTsKLX0KLQogc3RhdGljIEludFJlY3QgY29tcHV0ZU1lbnVMaXN0QXJyb3dCdXR0b25S
ZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBtZW51IGxpc3Qg
YXJyb3cgYnV0dG9uIHNob3VsZCBoYXZlIGEgbWluaW11bSBhbmQgbWF4aW11bSB3aWR0aCAodG8g
ZW5zdXJlIHVzYWJpbGl0eSkgb3IKQEAgLTU3OSw3NyArNjI1LDQ4IEBAIHN0YXRpYyBJbnRSZWN0
IGNvbXB1dGVNZW51TGlzdEFycm93QnV0dG9uUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogICAg
IHJldHVybiBJbnRSZWN0KEludFBvaW50KHJlY3QubWF4WCgpIC0gcmVjdC5oZWlnaHQoKSwgcmVj
dC55KCkpLCBJbnRTaXplKHJlY3QuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpKTsKIH0KIAotc3Rh
dGljIHZvaWQgcGFpbnRNZW51TGlzdEJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBQYXRoJiBtZW51TGlzdFBhdGgsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3Ip
Ci17Ci0gICAgQVNTRVJUKGNvbnRleHQpOwotICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICBjb250
ZXh0LT5zZXRGaWxsQ29sb3IoYmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
LSAgICBjb250ZXh0LT5maWxsUGF0aChtZW51TGlzdFBhdGgpOwotICAgIGNvbnRleHQtPnJlc3Rv
cmUoKTsKLX0KLQogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVudUxpc3QoUmVu
ZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYg
cmVjdCkKIHsKLSAgICAvLyBOb3RlLCB0aGlzIG1ldGhvZCBpcyBub3QgY2FsbGVkIGlmIHRoZSBt
ZW51IGxpc3QgZXhwbGljaXRseSBzcGVjaWZpZXMgZWl0aGVyIGEgYm9yZGVyIG9yIGJhY2tncm91
bmQgY29sb3IuCi0gICAgLy8gSW5zdGVhZCwgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1l
bnVMaXN0QnV0dG9uIGlzIGNhbGxlZC4gVGhlcmVmb3JlLCB3aGVuIHRoaXMgbWV0aG9kIGlzIGNh
bGxlZCwgd2UgZG9uJ3QKLSAgICAvLyBoYXZlIHRvIGFkanVzdCByZWN0IHdpdGggcmVzcGVjdCB0
byB0aGUgYm9yZGVyIGRpbWVuc2lvbnMuCi0KICAgICBBU1NFUlQoaW5mby5jb250ZXh0KTsKKyAg
ICBpbmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBp
bmZvLmNvbnRleHQ7CiAKLSAgICBQYXRoIG1lbnVMaXN0Um91bmRlZFJlY3RhbmdsZSA9IHJvdW5k
ZWRSZWN0Rm9yQm9yZGVyKG9iamVjdCwgcmVjdCk7Ci0KLSAgICAvLyAxLiBQYWludCB0aGUgYmFj
a2dyb3VuZCBvZiB0aGUgZW50aXJlIGNvbnRyb2wuCi0gICAgcGFpbnRNZW51TGlzdEJhY2tncm91
bmQoY29udGV4dCwgbWVudUxpc3RSb3VuZGVkUmVjdGFuZ2xlLCBDb2xvcjo6d2hpdGUpOwotCi0g
ICAgLy8gMi4gUGFpbnQgdGhlIGJhY2tncm91bmQgb2YgdGhlIGJ1dHRvbiBhbmQgaXRzIGFycm93
LgotICAgIEludFJlY3QgYXJyb3dCdXR0b25SZWN0YW5nbGUgPSBjb21wdXRlTWVudUxpc3RBcnJv
d0J1dHRvblJlY3QocmVjdCk7Ci0gICAgcGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50QW5kQXJy
b3coY29udGV4dCwgb2JqZWN0LCBhcnJvd0J1dHRvblJlY3RhbmdsZSwgbWVudUxpc3RSb3VuZGVk
UmVjdGFuZ2xlKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlPiBkaXNhYmxlZCwgaW5hY3RpdmUs
IHByZXNzZWQsIGFycm93VXAsIGFycm93VXBQcmVzc2VkOworICAgIGlmICghZGlzYWJsZWQpIHsK
KyAgICAgICAgZGlzYWJsZWQgPSBsb2FkSW1hZ2UoImNvcmVfYnV0dG9uX2Rpc2FibGVkIik7Cisg
ICAgICAgIGluYWN0aXZlID0gbG9hZEltYWdlKCJjb3JlX2J1dHRvbl9pbmFjdGl2ZSIpOworICAg
ICAgICBwcmVzc2VkID0gbG9hZEltYWdlKCJjb3JlX2J1dHRvbl9wcmVzc2VkIik7CisgICAgICAg
IGFycm93VXAgPSBsb2FkSW1hZ2UoImNvcmVfZHJvcGRvd25fYnV0dG9uX2Fycm93dXAiKTsKKyAg
ICAgICAgYXJyb3dVcFByZXNzZWQgPSBsb2FkSW1hZ2UoImNvcmVfZHJvcGRvd25fYnV0dG9uX2Fy
cm93dXBfcHJlc3NlZCIpOworICAgIH0KIAotICAgIC8vIDQuIFN0cm9rZSBhbiBvdXRsaW5lIGFy
b3VuZCB0aGUgZW50aXJlIGNvbnRyb2wuCi0gICAgY29udGV4dC0+c2F2ZSgpOwotICAgIGNvbnRl
eHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICBjb250ZXh0LT5zZXRTdHJva2VU
aGlja25lc3MobGluZVdpZHRoKTsKLSAgICBpZiAoIWlzRW5hYmxlZChvYmplY3QpKQotICAgICAg
ICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihkaXNhYmxlZE91dGxpbmUsIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOwotICAgIGVsc2UgaWYgKGlzUHJlc3NlZChvYmplY3QpKQotICAgICAgICBjb250ZXh0
LT5zZXRTdHJva2VHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChkZXByZXNzZWRUb3BPdXRs
aW5lLCBkZXByZXNzZWRCb3R0b21PdXRsaW5lLCByZWN0Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3Qu
bWF4WE1heFlDb3JuZXIoKSkpOwotICAgIGVsc2UgaWYgKGlzSG92ZXJlZChvYmplY3QpKQotICAg
ICAgICBjb250ZXh0LT5zZXRTdHJva2VHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChob3Zl
clRvcE91dGxpbmUsIGhvdmVyQm90dG9tT3V0bGluZSwgcmVjdC5tYXhYTWluWUNvcm5lcigpLCBy
ZWN0Lm1heFhNYXhZQ29ybmVyKCkpKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbnRleHQtPnNldFN0
cm9rZUdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KHJlZ3VsYXJUb3BPdXRsaW5lLCByZWd1
bGFyQm90dG9tT3V0bGluZSwgcmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0Lm1heFhNYXhZQ29y
bmVyKCkpKTsKKyAgICBGbG9hdFJlY3QgYXJyb3dCdXR0b25SZWN0YW5nbGUoY29tcHV0ZU1lbnVM
aXN0QXJyb3dCdXR0b25SZWN0KHJlY3QpKTsKKyAgICBmbG9hdCB4ID0gYXJyb3dCdXR0b25SZWN0
YW5nbGUueCgpICsgYXJyb3dCdXR0b25SZWN0YW5nbGUud2lkdGgoKSAvIHhQb3NpdGlvblJhdGlv
OworICAgIGZsb2F0IHkgPSBhcnJvd0J1dHRvblJlY3RhbmdsZS55KCkgKyBhcnJvd0J1dHRvblJl
Y3RhbmdsZS5oZWlnaHQoKSAqIHlQb3NpdGlvblJhdGlvOworICAgIGZsb2F0IHdpZHRoID0gYXJy
b3dCdXR0b25SZWN0YW5nbGUud2lkdGgoKSAvIHdpZHRoUmF0aW87CisgICAgZmxvYXQgaGVpZ2h0
ID0gYXJyb3dCdXR0b25SZWN0YW5nbGUuaGVpZ2h0KCkgKiBoZWlnaHRSYXRpbzsKKyAgICBGbG9h
dFJlY3QgdG1wUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKIAotICAgIGNvbnRleHQtPnN0cm9r
ZVBhdGgobWVudUxpc3RSb3VuZGVkUmVjdGFuZ2xlKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gY3Rt
ID0gY29udGV4dC0+Z2V0Q1RNKCk7CisgICAgaWYgKCFpc0VuYWJsZWQob2JqZWN0KSkgeworICAg
ICAgICBkcmF3TmluZVNsaWNlKGNvbnRleHQsIHJlY3QsIGN0bS54U2NhbGUoKSwgaW5hY3RpdmUu
Z2V0KCksIGxhcmdlU2xpY2UpOworICAgICAgICBkcmF3TmluZVNsaWNlKGNvbnRleHQsIHJlY3Qs
IGN0bS54U2NhbGUoKSwgZGlzYWJsZWQuZ2V0KCksIGxhcmdlU2xpY2UpOworICAgICAgICBkcmF3
Q29udHJvbChjb250ZXh0LCB0bXBSZWN0LCBhcnJvd1VwLmdldCgpKTsgLy8gRklYTUU6IHNob3Vs
ZCBoYXZlIGEgZGlzYWJsZWQgaW1hZ2UuCisgICAgfSBlbHNlIGlmIChpc0ZvY3VzZWQob2JqZWN0
KSkgeworICAgICAgICBkcmF3TmluZVNsaWNlKGNvbnRleHQsIHJlY3QsIGN0bS54U2NhbGUoKSwg
cHJlc3NlZC5nZXQoKSwgbGFyZ2VTbGljZSk7CisgICAgICAgIGRyYXdDb250cm9sKGNvbnRleHQs
IHRtcFJlY3QsIGFycm93VXBQcmVzc2VkLmdldCgpKTsKKyAgICAgICAgb2JqZWN0LT5zdHlsZSgp
LT5zZXRUZXh0RmlsbENvbG9yKGFjdGl2ZVRleHRDb2xvcik7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgZHJhd05pbmVTbGljZShjb250ZXh0LCByZWN0LCBjdG0ueFNjYWxlKCksIGluYWN0aXZlLmdl
dCgpLCBsYXJnZVNsaWNlKTsKKyAgICAgICAgZHJhd0NvbnRyb2woY29udGV4dCwgdG1wUmVjdCwg
YXJyb3dVcC5nZXQoKSk7CisgICAgfQogICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lbnVMaXN0
QnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0
IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgLy8gTm90ZSwgdGhpcyBtZXRob2QgaXMgb25seSBjYWxs
ZWQgaWYgdGhlIG1lbnUgbGlzdCBleHBsaWNpdGx5IHNwZWNpZmllcyBlaXRoZXIgYSBib3JkZXIg
b3IgYmFja2dyb3VuZCBjb2xvci4KLSAgICAvLyBPdGhlcndpc2UsIFJlbmRlclRoZW1lQmxhY2tC
ZXJyeTo6cGFpbnRNZW51TGlzdCBpcyBjYWxsZWQuIFdlIG5lZWQgdG8gZml0IHRoZSBhcnJvdyBi
dXR0b24gd2l0aCB0aGUgYm9yZGVyIGJveAotICAgIC8vIG9mIHRoZSBtZW51LWxpc3Qgc28gYXMg
dG8gbm90IG9jY2x1ZGUgdGhlIGN1c3RvbSBib3JkZXIuCi0KLSAgICAvLyBXZSBjb21wdXRlIG1l
bnVMaXN0Um91bmRlZFJlY3RhbmdsZSB3aXRoIHJlc3BlY3QgdG8gdGhlIGRpbWVuc2lvbnMgb2Yg
dGhlIGVudGlyZSBtZW51LWxpc3QgY29udHJvbCAoaS5lLiByZWN0KSBhbmQKLSAgICAvLyBpdHMg
Ym9yZGVyIHJhZGl1cyBzbyB0aGF0IHdlIGNsaXAgdGhlIGNvbnRvdXIgb2YgdGhlIGFycm93IGJ1
dHRvbiAod2hlbiB3ZSBwYWludCBpdCBiZWxvdykgdG8gbWF0Y2ggdGhlIGNvbnRvdXIgb2YKLSAg
ICAvLyB0aGUgY29udHJvbC4KLSAgICBQYXRoIG1lbnVMaXN0Um91bmRlZFJlY3RhbmdsZSA9IHJv
dW5kZWRSZWN0Rm9yQm9yZGVyKG9iamVjdCwgcmVjdCk7Ci0KLSAgICAvLyAxLiBQYWludCB0aGUg
YmFja2dyb3VuZCBvZiB0aGUgZW50aXJlIGNvbnRyb2wuCi0gICAgQ29sb3IgZmlsbENvbG9yID0g
b2JqZWN0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kQ29sb3IpOwotICAgIGlmICghZmlsbENvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgZmlsbENv
bG9yID0gQ29sb3I6OndoaXRlOwotICAgIHBhaW50TWVudUxpc3RCYWNrZ3JvdW5kKGluZm8uY29u
dGV4dCwgbWVudUxpc3RSb3VuZGVkUmVjdGFuZ2xlLCBmaWxsQ29sb3IpOwotCi0gICAgLy8gMi4g
UGFpbnQgdGhlIGJhY2tncm91bmQgb2YgdGhlIGJ1dHRvbiBhbmQgaXRzIGFycm93LgotICAgIElu
dFJlY3QgYm91bmRzID0gSW50UmVjdChyZWN0LngoKSArIG9iamVjdC0+c3R5bGUoKS0+Ym9yZGVy
TGVmdFdpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC55KCkgKyBvYmplY3Qt
PnN0eWxlKCktPmJvcmRlclRvcFdpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVj
dC53aWR0aCgpIC0gb2JqZWN0LT5zdHlsZSgpLT5ib3JkZXJMZWZ0V2lkdGgoKSAtIG9iamVjdC0+
c3R5bGUoKS0+Ym9yZGVyUmlnaHRXaWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJl
Y3QuaGVpZ2h0KCkgLSBvYmplY3QtPnN0eWxlKCktPmJvcmRlclRvcFdpZHRoKCkgLSBvYmplY3Qt
PnN0eWxlKCktPmJvcmRlckJvdHRvbVdpZHRoKCkpOwotCi0gICAgSW50UmVjdCBhcnJvd0J1dHRv
blJlY3RhbmdsZSA9IGNvbXB1dGVNZW51TGlzdEFycm93QnV0dG9uUmVjdChib3VuZHMpOyAvLyBG
aXQgdGhlIGFycm93IGJ1dHRvbiB3aXRoaW4gdGhlIGJvcmRlciBib3ggb2YgdGhlIG1lbnUtbGlz
dC4KLSAgICBwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRBbmRBcnJvdyhpbmZvLmNvbnRleHQs
IG9iamVjdCwgYXJyb3dCdXR0b25SZWN0YW5nbGUsIG1lbnVMaXN0Um91bmRlZFJlY3RhbmdsZSk7
Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBwYWludE1lbnVMaXN0KG9iamVjdCwgaW5m
bywgcmVjdCk7CiB9CiAKIHZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RTbGlkZXJU
aHVtYlNpemUoUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdApAQCAt
Njk5LDc3ICs3MTYsNjcgQEAgYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50U2xpZGVy
VHJhY2tSZWN0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWkKIGJvb2wgUmVuZGVyVGhl
bWVCbGFja0JlcnJ5OjpwYWludFNsaWRlclRyYWNrUmVjdChSZW5kZXJPYmplY3QqIG9iamVjdCwg
Y29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0LAogICAgICAgICBSR0JB
MzIgc3Ryb2tlQ29sb3JTdGFydCwgUkdCQTMyIHN0cm9rZUNvbG9yRW5kLCBSR0JBMzIgZmlsbENv
bG9yU3RhcnQsIFJHQkEzMiBmaWxsQ29sb3JFbmQpCiB7Ci0gICAgRmxvYXRTaXplIHNtYWxsQ29y
bmVyKHNtYWxsUmFkaXVzLCBzbWFsbFJhZGl1cyk7Ci0KKyAgICBBU1NFUlQoaW5mby5jb250ZXh0
KTsKICAgICBpbmZvLmNvbnRleHQtPnNhdmUoKTsKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9r
ZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVz
cyhsaW5lV2lkdGgpOworICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGluZm8uY29udGV4
dDsKIAotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoY3JlYXRlTGluZWFyR3Jh
ZGllbnQoc3Ryb2tlQ29sb3JTdGFydCwgc3Ryb2tlQ29sb3JFbmQsIHJlY3QubWF4WE1pbllDb3Ju
ZXIoKSwgcmVjdC4gbWF4WE1heFlDb3JuZXIoKSkpOwotICAgIGluZm8uY29udGV4dC0+c2V0Rmls
bEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KGZpbGxDb2xvclN0YXJ0LCBmaWxsQ29sb3JF
bmQsIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7CisgICAg
c3RhdGljIFJlZlB0cjxJbWFnZT4gZGlzYWJsZWQsIGluYWN0aXZlOworICAgIGlmICghZGlzYWJs
ZWQpIHsKKyAgICAgICAgZGlzYWJsZWQgPSBsb2FkSW1hZ2UoImNvcmVfc2xpZGVyX2ZpbGxfZGlz
YWJsZWQiKTsKKyAgICAgICAgaW5hY3RpdmUgPSBsb2FkSW1hZ2UoImNvcmVfc2xpZGVyX2JnIik7
CisgICAgfQogCi0gICAgUGF0aCBwYXRoOwotICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwg
c21hbGxDb3JuZXIpOwotICAgIGluZm8uY29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CisgICAgaWYg
KGlzRW5hYmxlZChvYmplY3QpKQorICAgICAgICBkcmF3VGhyZWVTbGljZShjb250ZXh0LCByZWN0
LCBpbmFjdGl2ZS5nZXQoKSwgbWVkaXVtU2xpY2UpOworICAgIGVsc2UKKyAgICAgICAgZHJhd1Ro
cmVlU2xpY2UoY29udGV4dCwgcmVjdCwgZGlzYWJsZWQuZ2V0KCksIChzbWFsbFNsaWNlIC0gMSkp
OwogCi0gICAgaW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CisgICAgY29udGV4dC0+cmVzdG9yZSgp
OwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBh
aW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5m
bywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBGbG9hdFNpemUgbGFyZ2VDb3JuZXIobGFy
Z2VSYWRpdXMsIGxhcmdlUmFkaXVzKTsKLQorICAgIEFTU0VSVChpbmZvLmNvbnRleHQpOwogICAg
IGluZm8uY29udGV4dC0+c2F2ZSgpOwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUo
U29saWRTdHJva2UpOwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVX
aWR0aCk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gaW5mby5jb250ZXh0OwogCi0g
ICAgaWYgKGlzUHJlc3NlZChvYmplY3QpIHx8IGlzSG92ZXJlZChvYmplY3QpKSB7Ci0gICAgICAg
IGluZm8uY29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQoaG92
ZXJUb3BPdXRsaW5lLCBob3ZlckJvdHRvbU91dGxpbmUsIHJlY3QubWF4WE1pbllDb3JuZXIoKSwg
cmVjdC4gbWF4WE1heFlDb3JuZXIoKSkpOwotICAgICAgICBpbmZvLmNvbnRleHQtPnNldEZpbGxH
cmFkaWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChob3ZlclRvcCwgaG92ZXJCb3R0b20sIHJlY3Qu
bWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFk
aWVudChyZWd1bGFyVG9wT3V0bGluZSwgcmVndWxhckJvdHRvbU91dGxpbmUsIHJlY3QubWF4WE1p
bllDb3JuZXIoKSwgcmVjdC4gbWF4WE1heFlDb3JuZXIoKSkpOwotICAgICAgICBpbmZvLmNvbnRl
eHQtPnNldEZpbGxHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChyZWd1bGFyVG9wLCByZWd1
bGFyQm90dG9tLCByZWN0Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSkp
OworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGRpc2FibGVkLCBpbmFjdGl2ZSwgcHJlc3NlZCwg
YXVyYTsKKyAgICBpZiAoIWRpc2FibGVkKSB7CisgICAgICAgIGRpc2FibGVkID0gbG9hZEltYWdl
KCJjb3JlX3NsaWRlcl9oYW5kbGVfZGlzYWJsZWQiKTsKKyAgICAgICAgaW5hY3RpdmUgPSBsb2Fk
SW1hZ2UoImNvcmVfc2xpZGVyX2hhbmRsZSIpOworICAgICAgICBwcmVzc2VkID0gbG9hZEltYWdl
KCJjb3JlX3NsaWRlcl9oYW5kbGVfcHJlc3NlZCIpOworICAgICAgICBhdXJhID0gbG9hZEltYWdl
KCJjb3JlX3NsaWRlcl9hdXJhIik7CiAgICAgfQogCi0gICAgUGF0aCBwYXRoOwotICAgIHBhdGgu
YWRkUm91bmRlZFJlY3QocmVjdCwgbGFyZ2VDb3JuZXIpOwotICAgIGluZm8uY29udGV4dC0+Zmls
bFBhdGgocGF0aCk7CisgICAgRmxvYXRSZWN0IHRtcFJlY3QocmVjdCk7CisgICAgZmxvYXQgbGVu
Z3RoID0gc3RkOjptYXgodG1wUmVjdC53aWR0aCgpLCB0bXBSZWN0LmhlaWdodCgpKTsKKyAgICBp
ZiAodG1wUmVjdC53aWR0aCgpID4gdG1wUmVjdC5oZWlnaHQoKSkgeworICAgICAgICB0bXBSZWN0
LnNldFkodG1wUmVjdC55KCkgLSAobGVuZ3RoIC0gdG1wUmVjdC5oZWlnaHQoKSkgLyAyKTsKKyAg
ICAgICAgdG1wUmVjdC5zZXRIZWlnaHQobGVuZ3RoKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0
bXBSZWN0LnNldFgodG1wUmVjdC54KCkgLSAobGVuZ3RoIC0gdG1wUmVjdC53aWR0aCgpKSAvIDIp
OworICAgICAgICB0bXBSZWN0LnNldFdpZHRoKGxlbmd0aCk7CisgICAgfQogCi0gICAgYm9vbCBp
c1ZlcnRpY2FsID0gcmVjdC53aWR0aCgpID4gcmVjdC5oZWlnaHQoKTsKLSAgICBJbnRQb2ludCBz
dGFydFBvaW50KHJlY3QueCgpICsgKGlzVmVydGljYWwgPyA1IDogMiksIHJlY3QueSgpICsgKGlz
VmVydGljYWwgPyAyIDogNSkpOwotICAgIEludFBvaW50IGVuZFBvaW50KHJlY3QueCgpICsgKGlz
VmVydGljYWwgPyAyMCA6IDIpLCByZWN0LnkoKSArIChpc1ZlcnRpY2FsID8gMiA6IDIwKSk7Ci0g
ICAgY29uc3QgaW50IGxpbmVPZmZzZXQgPSAyOwotICAgIGNvbnN0IGludCBzaGFkb3dPZmZzZXQg
PSAxOworICAgIGZsb2F0IGF1cmFIZWlnaHQgPSBsZW5ndGggKiBhdXJhUmF0aW87CisgICAgZmxv
YXQgYXVyYVdpZHRoID0gYXVyYUhlaWdodDsKKyAgICBmbG9hdCBhdXJhWCA9IHRtcFJlY3QueCgp
IC0gKGF1cmFXaWR0aCAtIHRtcFJlY3Qud2lkdGgoKSkgLyAyOworICAgIGZsb2F0IGF1cmFZID0g
dG1wUmVjdC55KCkgLSAoYXVyYUhlaWdodCAtIHRtcFJlY3QuaGVpZ2h0KCkpIC8gMjsKKyAgICBG
bG9hdFJlY3QgYXVyYVJlY3QoYXVyYVgsIGF1cmFZLCBhdXJhV2lkdGgsIGF1cmFIZWlnaHQpOwog
Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspIHsKLSAgICAgICAgaWYgKGlzVmVydGlj
YWwpIHsKLSAgICAgICAgICAgIHN0YXJ0UG9pbnQuc2V0WShzdGFydFBvaW50LnkoKSArIGxpbmVP
ZmZzZXQpOwotICAgICAgICAgICAgZW5kUG9pbnQuc2V0WShlbmRQb2ludC55KCkgKyBsaW5lT2Zm
c2V0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN0YXJ0UG9pbnQuc2V0WChzdGFy
dFBvaW50LngoKSArIGxpbmVPZmZzZXQpOwotICAgICAgICAgICAgZW5kUG9pbnQuc2V0WChlbmRQ
b2ludC54KCkgKyBsaW5lT2Zmc2V0KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNQcmVzc2Vk
KG9iamVjdCkgfHwgaXNIb3ZlcmVkKG9iamVjdCkpCi0gICAgICAgICAgICBpbmZvLmNvbnRleHQt
PnNldFN0cm9rZUNvbG9yKGRyYWdSb2xsTGlnaHQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGRyYWdS
ZWd1bGFyTGlnaHQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBpbmZvLmNvbnRleHQt
PmRyYXdMaW5lKHN0YXJ0UG9pbnQsIGVuZFBvaW50KTsKLQotICAgICAgICBpZiAoaXNWZXJ0aWNh
bCkgewotICAgICAgICAgICAgc3RhcnRQb2ludC5zZXRZKHN0YXJ0UG9pbnQueSgpICsgc2hhZG93
T2Zmc2V0KTsKLSAgICAgICAgICAgIGVuZFBvaW50LnNldFkoZW5kUG9pbnQueSgpICsgc2hhZG93
T2Zmc2V0KTsKKyAgICBpZiAoIWlzRW5hYmxlZChvYmplY3QpKQorICAgICAgICBkcmF3Q29udHJv
bChjb250ZXh0LCB0bXBSZWN0LCBkaXNhYmxlZC5nZXQoKSk7CisgICAgZWxzZSB7CisgICAgICAg
IGlmIChpc1ByZXNzZWQob2JqZWN0KSB8fCBpc0hvdmVyZWQob2JqZWN0KSB8fCBpc0ZvY3VzZWQo
b2JqZWN0KSkgeworICAgICAgICAgICAgZHJhd0NvbnRyb2woY29udGV4dCwgdG1wUmVjdCwgcHJl
c3NlZC5nZXQoKSk7CisgICAgICAgICAgICBkcmF3Q29udHJvbChjb250ZXh0LCBhdXJhUmVjdCwg
YXVyYS5nZXQoKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdGFydFBvaW50LnNl
dFgoc3RhcnRQb2ludC54KCkgKyBzaGFkb3dPZmZzZXQpOwotICAgICAgICAgICAgZW5kUG9pbnQu
c2V0WChlbmRQb2ludC54KCkgKyBzaGFkb3dPZmZzZXQpOworICAgICAgICAgICAgZHJhd0NvbnRy
b2woY29udGV4dCwgdG1wUmVjdCwgaW5hY3RpdmUuZ2V0KCkpOwogICAgICAgICB9Ci0gICAgICAg
IGlmIChpc1ByZXNzZWQob2JqZWN0KSB8fCBpc0hvdmVyZWQob2JqZWN0KSkKLSAgICAgICAgICAg
IGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoZHJhZ1JvbGxEYXJrLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJv
a2VDb2xvcihkcmFnUmVndWxhckRhcmssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBp
bmZvLmNvbnRleHQtPmRyYXdMaW5lKHN0YXJ0UG9pbnQsIGVuZFBvaW50KTsKICAgICB9Ci0gICAg
aW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CisKKyAgICBjb250ZXh0LT5yZXN0b3JlKCk7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuaAppbmRleCAxYzZkZjE1NjU3MGE0
MTE5ZGJkZTJlMDBlMWNhNGE5ZWMxM2QwOWQyLi43MzY4ZGY5MDU1YzVhOTQ1ZjQ0NDY0MmNiNjRj
NDI4MTA3ZjM2MWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmgKQEAgLTEwNSw3ICsxMDUsNiBAQCBw
cml2YXRlOgogICAgIFJlbmRlclRoZW1lQmxhY2tCZXJyeSgpOwogICAgIHZvaWQgc2V0QnV0dG9u
U3R5bGUoUmVuZGVyU3R5bGUqKSBjb25zdDsKIAotICAgIHZvaWQgcGFpbnRNZW51TGlzdEJ1dHRv
bkdyYWRpZW50QW5kQXJyb3coR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyT2JqZWN0KiwgSW50UmVj
dCBidXR0b25SZWN0LCBjb25zdCBQYXRoJiBjbGlwUGF0aCk7CiAgICAgYm9vbCBwYWludFRleHRG
aWVsZE9yVGV4dEFyZWFPclNlYXJjaEZpZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKTsKICAgICBib29sIHBhaW50U2xpZGVyVHJhY2tSZWN0KFJlbmRl
ck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICBib29sIHBh
aW50U2xpZGVyVHJhY2tSZWN0KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmLCBSR0JBMzIgc3Ryb2tlQ29sb3JTdGFydCwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171858</attachid>
            <date>2012-11-01 08:35:04 -0700</date>
            <delta_ts>2012-11-01 08:44:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100760-20121101113326.patch</filename>
            <type>text/plain</type>
            <size>2131</size>
            <attacher name="Tiancheng Jiang">tijiang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzlmZTY2MzFlMjM1NWE1
OGU4NGEzZGE2MWFjNzYzZGE5ZjlkOWU1MS4uZTZlYzQwYzUzYWFiNTc2MjcwYTgzN2Q1MDA0ZDQ2
NjZhNjZmZTQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTExLTAxICBUaWFu
Y2hlbmcgSmlhbmcgIDx0aWppYW5nQHJpbS5jb20+CisKKyAgICAgICAgQ2hlY2sgaW1nIHBvaW50
ZXIgaXMgbnVsbCwgaWYgc28sIGRvIGVhcmx5IHJldHVybi4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDc2MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJJTSBQUiAyMzUxOTQuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpkcmF3Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3VGhyZWVTbGljZSk6
CisgICAgICAgIChXZWJDb3JlOjpkcmF3TmluZVNsaWNlKToKKwogMjAxMi0xMS0wMSAgRW1pbCBB
IEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW3N1YnBpeGVsXSBDaGFuZ2Ug
aW50cmluc2ljU2l6ZSB0byBMYXlvdXRVbml0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAKaW5kZXgg
MDg5Mzg3YzViMDJhNmFhOTFhZTZhNDM3N2I5ZjQ0YzBhZDAzNWFiYy4uMDhlYmJmYzcyZTAyN2Qw
ZThiN2M5ZjdmYzVhYTdhYjhiMzM5ZDgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcApAQCAt
MTcwLDEyICsxNzAsMTYgQEAgc3RhdGljIGZsb2F0IGRldGVybWluZUZ1bGxTY3JlZW5NdWx0aXBs
aWVyKEVsZW1lbnQqIGVsZW1lbnQpCiAKIHN0YXRpYyB2b2lkIGRyYXdDb250cm9sKEdyYXBoaWNz
Q29udGV4dCogZ2MsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgSW1hZ2UqIGltZykKIHsKKyAgICBp
ZiAoIWltZykKKyAgICAgICAgcmV0dXJuOwogICAgIEZsb2F0UmVjdCBzcmNSZWN0KDAsIDAsIGlt
Zy0+d2lkdGgoKSwgaW1nLT5oZWlnaHQoKSk7CiAgICAgZ2MtPmRyYXdJbWFnZShpbWcsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIHJlY3QsIHNyY1JlY3QpOwogfQogCiBzdGF0aWMgdm9pZCBkcmF3VGhy
ZWVTbGljZShHcmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0LCBJbWFnZSog
aW1nLCBpbnQgc2xpY2UpCiB7CisgICAgaWYgKCFpbWcpCisgICAgICAgIHJldHVybjsKICAgICBG
bG9hdFNpemUgZHN0U2xpY2UocmVjdC5oZWlnaHQoKSAvIDIsIHJlY3QuaGVpZ2h0KCkpOwogICAg
IEZsb2F0UmVjdCBzcmNSZWN0KDAsIDAsIHNsaWNlLCBpbWctPmhlaWdodCgpKTsKICAgICBGbG9h
dFJlY3QgZHN0UmVjdChyZWN0LmxvY2F0aW9uKCksIGRzdFNsaWNlKTsKQEAgLTE5Miw2ICsxOTYs
OCBAQCBzdGF0aWMgdm9pZCBkcmF3VGhyZWVTbGljZShHcmFwaGljc0NvbnRleHQqIGdjLCBjb25z
dCBJbnRSZWN0JiByZWN0LCBJbWFnZSogaW1nLAogCiBzdGF0aWMgdm9pZCBkcmF3TmluZVNsaWNl
KEdyYXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IEludFJlY3QmIHJlY3QsIGRvdWJsZSBzY2FsZSwg
SW1hZ2UqIGltZywgaW50IHNsaWNlKQogeworICAgIGlmICghaW1nKQorICAgICAgICByZXR1cm47
CiAgICAgaWYgKHJlY3QuaGVpZ2h0KCkgKiBzY2FsZSA8IDEwMS4wKQogICAgICAgICBzY2FsZSA9
IDEwMS4wIC8gcmVjdC5oZWlnaHQoKTsKICAgICBGbG9hdFNpemUgZHN0U2xpY2Uoc2xpY2UgLyBz
Y2FsZSwgc2xpY2UgLyBzY2FsZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171861</attachid>
            <date>2012-11-01 08:44:47 -0700</date>
            <delta_ts>2012-11-01 09:23:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100760-20121101114309.patch</filename>
            <type>text/plain</type>
            <size>2163</size>
            <attacher name="Tiancheng Jiang">tijiang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzlmZTY2MzFlMjM1NWE1
OGU4NGEzZGE2MWFjNzYzZGE5ZjlkOWU1MS4uMmE4ZWZiZmE4YTZkMjc2ODIzZjA2NDEzZTQ1YWE2
NmY2MmMwNTBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTExLTAxICBUaWFu
Y2hlbmcgSmlhbmcgIDx0aWppYW5nQHJpbS5jb20+CisKKyAgICAgICAgQ2hlY2sgaW1hZ2UgcG9p
bnRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
MDc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJJ
TSBQUiAyMzUxOTQuCisKKyAgICAgICAgQ2hlY2sgaW1nIHBvaW50ZXIgaXMgbnVsbCwgaWYgc28s
IGRvIGVhcmx5IHJldHVybi4KKworICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVy
VGhlbWVCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdDb250cm9sKToKKyAg
ICAgICAgKFdlYkNvcmU6OmRyYXdUaHJlZVNsaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdO
aW5lU2xpY2UpOgorCiAyMDEyLTExLTAxICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbc3VicGl4ZWxdIENoYW5nZSBpbnRyaW5zaWNTaXplIHRvIExheW91dFVu
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVy
VGhlbWVCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
UmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcAppbmRleCAwODkzODdjNWIwMmE2YWE5MWFlNmE0Mzc3
YjlmNDRjMGFkMDM1YWJjLi4wOGViYmZjNzJlMDI3ZDBlOGI3YzlmN2ZjNWFhN2FiOGIzMzlkODMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRo
ZW1lQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwCkBAIC0xNzAsMTIgKzE3MCwxNiBAQCBzdGF0aWMg
ZmxvYXQgZGV0ZXJtaW5lRnVsbFNjcmVlbk11bHRpcGxpZXIoRWxlbWVudCogZWxlbWVudCkKIAog
c3RhdGljIHZvaWQgZHJhd0NvbnRyb2woR3JhcGhpY3NDb250ZXh0KiBnYywgY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBJbWFnZSogaW1nKQogeworICAgIGlmICghaW1nKQorICAgICAgICByZXR1cm47
CiAgICAgRmxvYXRSZWN0IHNyY1JlY3QoMCwgMCwgaW1nLT53aWR0aCgpLCBpbWctPmhlaWdodCgp
KTsKICAgICBnYy0+ZHJhd0ltYWdlKGltZywgQ29sb3JTcGFjZURldmljZVJHQiwgcmVjdCwgc3Jj
UmVjdCk7CiB9CiAKIHN0YXRpYyB2b2lkIGRyYXdUaHJlZVNsaWNlKEdyYXBoaWNzQ29udGV4dCog
Z2MsIGNvbnN0IEludFJlY3QmIHJlY3QsIEltYWdlKiBpbWcsIGludCBzbGljZSkKIHsKKyAgICBp
ZiAoIWltZykKKyAgICAgICAgcmV0dXJuOwogICAgIEZsb2F0U2l6ZSBkc3RTbGljZShyZWN0Lmhl
aWdodCgpIC8gMiwgcmVjdC5oZWlnaHQoKSk7CiAgICAgRmxvYXRSZWN0IHNyY1JlY3QoMCwgMCwg
c2xpY2UsIGltZy0+aGVpZ2h0KCkpOwogICAgIEZsb2F0UmVjdCBkc3RSZWN0KHJlY3QubG9jYXRp
b24oKSwgZHN0U2xpY2UpOwpAQCAtMTkyLDYgKzE5Niw4IEBAIHN0YXRpYyB2b2lkIGRyYXdUaHJl
ZVNsaWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IEludFJlY3QmIHJlY3QsIEltYWdlKiBp
bWcsCiAKIHN0YXRpYyB2b2lkIGRyYXdOaW5lU2xpY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgY29u
c3QgSW50UmVjdCYgcmVjdCwgZG91YmxlIHNjYWxlLCBJbWFnZSogaW1nLCBpbnQgc2xpY2UpCiB7
CisgICAgaWYgKCFpbWcpCisgICAgICAgIHJldHVybjsKICAgICBpZiAocmVjdC5oZWlnaHQoKSAq
IHNjYWxlIDwgMTAxLjApCiAgICAgICAgIHNjYWxlID0gMTAxLjAgLyByZWN0LmhlaWdodCgpOwog
ICAgIEZsb2F0U2l6ZSBkc3RTbGljZShzbGljZSAvIHNjYWxlLCBzbGljZSAvIHNjYWxlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171872</attachid>
            <date>2012-11-01 09:23:10 -0700</date>
            <delta_ts>2012-11-06 07:56:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100760-20121101122132.patch</filename>
            <type>text/plain</type>
            <size>2179</size>
            <attacher name="Tiancheng Jiang">tijiang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzlmZTY2MzFlMjM1NWE1
OGU4NGEzZGE2MWFjNzYzZGE5ZjlkOWU1MS4uN2IxZTUzMDQ3YWFjMzUyNDA4M2E0NDM3MWEyYmI0
ZmY4ZTI0OGNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTExLTAxICBUaWFu
Y2hlbmcgSmlhbmcgIDx0aWppYW5nQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFVw
ZGF0ZSBCQjEwIGZvcm0gdGhlbWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDA3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSSU0gUFIgMjM1MTk0LgorCisgICAgICAgIENoZWNrIGltZyBwb2ludGVy
IGlzIG51bGwsIGlmIHNvLCBkbyBlYXJseSByZXR1cm4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9i
bGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3VGhyZWVTbGljZSk6CisgICAgICAg
IChXZWJDb3JlOjpkcmF3TmluZVNsaWNlKToKKwogMjAxMi0xMS0wMSAgRW1pbCBBIEVrbHVuZCAg
PGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW3N1YnBpeGVsXSBDaGFuZ2UgaW50cmluc2lj
U2l6ZSB0byBMYXlvdXRVbml0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAKaW5kZXggMDg5Mzg3YzVi
MDJhNmFhOTFhZTZhNDM3N2I5ZjQ0YzBhZDAzNWFiYy4uMDhlYmJmYzcyZTAyN2QwZThiN2M5Zjdm
YzVhYTdhYjhiMzM5ZDgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcApAQCAtMTcwLDEyICsx
NzAsMTYgQEAgc3RhdGljIGZsb2F0IGRldGVybWluZUZ1bGxTY3JlZW5NdWx0aXBsaWVyKEVsZW1l
bnQqIGVsZW1lbnQpCiAKIHN0YXRpYyB2b2lkIGRyYXdDb250cm9sKEdyYXBoaWNzQ29udGV4dCog
Z2MsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgSW1hZ2UqIGltZykKIHsKKyAgICBpZiAoIWltZykK
KyAgICAgICAgcmV0dXJuOwogICAgIEZsb2F0UmVjdCBzcmNSZWN0KDAsIDAsIGltZy0+d2lkdGgo
KSwgaW1nLT5oZWlnaHQoKSk7CiAgICAgZ2MtPmRyYXdJbWFnZShpbWcsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIHJlY3QsIHNyY1JlY3QpOwogfQogCiBzdGF0aWMgdm9pZCBkcmF3VGhyZWVTbGljZShH
cmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0LCBJbWFnZSogaW1nLCBpbnQg
c2xpY2UpCiB7CisgICAgaWYgKCFpbWcpCisgICAgICAgIHJldHVybjsKICAgICBGbG9hdFNpemUg
ZHN0U2xpY2UocmVjdC5oZWlnaHQoKSAvIDIsIHJlY3QuaGVpZ2h0KCkpOwogICAgIEZsb2F0UmVj
dCBzcmNSZWN0KDAsIDAsIHNsaWNlLCBpbWctPmhlaWdodCgpKTsKICAgICBGbG9hdFJlY3QgZHN0
UmVjdChyZWN0LmxvY2F0aW9uKCksIGRzdFNsaWNlKTsKQEAgLTE5Miw2ICsxOTYsOCBAQCBzdGF0
aWMgdm9pZCBkcmF3VGhyZWVTbGljZShHcmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0
JiByZWN0LCBJbWFnZSogaW1nLAogCiBzdGF0aWMgdm9pZCBkcmF3TmluZVNsaWNlKEdyYXBoaWNz
Q29udGV4dCogZ2MsIGNvbnN0IEludFJlY3QmIHJlY3QsIGRvdWJsZSBzY2FsZSwgSW1hZ2UqIGlt
ZywgaW50IHNsaWNlKQogeworICAgIGlmICghaW1nKQorICAgICAgICByZXR1cm47CiAgICAgaWYg
KHJlY3QuaGVpZ2h0KCkgKiBzY2FsZSA8IDEwMS4wKQogICAgICAgICBzY2FsZSA9IDEwMS4wIC8g
cmVjdC5oZWlnaHQoKTsKICAgICBGbG9hdFNpemUgZHN0U2xpY2Uoc2xpY2UgLyBzY2FsZSwgc2xp
Y2UgLyBzY2FsZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172589</attachid>
            <date>2012-11-06 07:56:49 -0800</date>
            <delta_ts>2012-11-06 08:06:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100760-20121106105502.patch</filename>
            <type>text/plain</type>
            <size>7638</size>
            <attacher name="Tiancheng Jiang">tijiang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE3MjRjNWJlYWRkMzNh
MjY0ZjExMjJlYzA4NjkwNjY3NTk4NGI0Zi4uN2IzNGZmODVlZjNiY2FlMjFhMzFlMThkZmExMzQ5
ODJmOWRhNDRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTExLTA2ICBUaWFu
Y2hlbmcgSmlhbmcgIDx0aWppYW5nQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFVw
ZGF0ZSBCQjEwIGZvcm0gdGhlbWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDA3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSSU0gUFIgMjM2OTkzCisgICAgICAgIEludGVybmFsIFJldmlld2VkIGJ5
IEplZmYgUm9nZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVt
ZUJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5
OjpwYWludFNsaWRlclRyYWNrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJs
YWNrQmVycnk6OnBhaW50U2xpZGVyVGh1bWIpOgorCiAyMDEyLTExLTA2ICBNYXggRmVpbCAgPG1m
ZWlsQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIEF1dG9tYXRpY2FsbHkgZ28gZnVs
bHNjcmVlbiBvbiB2aWRlbyBwbGF5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAKaW5kZXggMDhlYmJm
YzcyZTAyN2QwZThiN2M5ZjdmYzVhYTdhYjhiMzM5ZDgzMy4uMTZlOTU5MTlhZDQ4MDhhNjQ5ODI1
OWY2ODlmYTI3YzM3YzI3OTJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcApAQCAtMTc2LDI0
ICsxNzYsNiBAQCBzdGF0aWMgdm9pZCBkcmF3Q29udHJvbChHcmFwaGljc0NvbnRleHQqIGdjLCBj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIEltYWdlKiBpbWcpCiAgICAgZ2MtPmRyYXdJbWFnZShpbWcs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIHJlY3QsIHNyY1JlY3QpOwogfQogCi1zdGF0aWMgdm9pZCBk
cmF3VGhyZWVTbGljZShHcmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0LCBJ
bWFnZSogaW1nLCBpbnQgc2xpY2UpCi17Ci0gICAgaWYgKCFpbWcpCi0gICAgICAgIHJldHVybjsK
LSAgICBGbG9hdFNpemUgZHN0U2xpY2UocmVjdC5oZWlnaHQoKSAvIDIsIHJlY3QuaGVpZ2h0KCkp
OwotICAgIEZsb2F0UmVjdCBzcmNSZWN0KDAsIDAsIHNsaWNlLCBpbWctPmhlaWdodCgpKTsKLSAg
ICBGbG9hdFJlY3QgZHN0UmVjdChyZWN0LmxvY2F0aW9uKCksIGRzdFNsaWNlKTsKLQotICAgIGdj
LT5kcmF3SW1hZ2UoaW1nLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0KTsK
LSAgICBzcmNSZWN0Lm1vdmUoaW1nLT53aWR0aCgpIC0gc3JjUmVjdC53aWR0aCgpLCAwKTsKLSAg
ICBkc3RSZWN0Lm1vdmUocmVjdC53aWR0aCgpIC0gZHN0UmVjdC53aWR0aCgpLCAwKTsKLSAgICBn
Yy0+ZHJhd0ltYWdlKGltZywgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCk7
Ci0KLSAgICBzcmNSZWN0ID0gRmxvYXRSZWN0KHNsaWNlLCAwLCBpbWctPndpZHRoKCkgLSAyICog
c2xpY2UsIGltZy0+aGVpZ2h0KCkpOwotICAgIGRzdFJlY3QgPSBGbG9hdFJlY3QocmVjdC54KCkg
KyBkc3RTbGljZS53aWR0aCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpIC0gMiAqIGRzdFNsaWNl
LndpZHRoKCksIGRzdFNsaWNlLmhlaWdodCgpKTsKLSAgICBnYy0+ZHJhd0ltYWdlKGltZywgQ29s
b3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCk7Ci19Ci0KIHN0YXRpYyB2b2lkIGRy
YXdOaW5lU2xpY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgY29uc3QgSW50UmVjdCYgcmVjdCwgZG91
YmxlIHNjYWxlLCBJbWFnZSogaW1nLCBpbnQgc2xpY2UpCiB7CiAgICAgaWYgKCFpbWcpCkBAIC03
MjIsNjcgKzcwNCw3MSBAQCBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRTbGlkZXJU
cmFja1JlY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaQogYm9vbCBSZW5kZXJUaGVt
ZUJsYWNrQmVycnk6OnBhaW50U2xpZGVyVHJhY2tSZWN0KFJlbmRlck9iamVjdCogb2JqZWN0LCBj
b25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QsCiAgICAgICAgIFJHQkEz
MiBzdHJva2VDb2xvclN0YXJ0LCBSR0JBMzIgc3Ryb2tlQ29sb3JFbmQsIFJHQkEzMiBmaWxsQ29s
b3JTdGFydCwgUkdCQTMyIGZpbGxDb2xvckVuZCkKIHsKLSAgICBBU1NFUlQoaW5mby5jb250ZXh0
KTsKKyAgICBGbG9hdFNpemUgc21hbGxDb3JuZXIoc21hbGxSYWRpdXMsIHNtYWxsUmFkaXVzKTsK
KwogICAgIGluZm8uY29udGV4dC0+c2F2ZSgpOwotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCA9IGluZm8uY29udGV4dDsKKyAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlk
U3Ryb2tlKTsKKyAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhsaW5lV2lkdGgp
OwogCi0gICAgc3RhdGljIFJlZlB0cjxJbWFnZT4gZGlzYWJsZWQsIGluYWN0aXZlOwotICAgIGlm
ICghZGlzYWJsZWQpIHsKLSAgICAgICAgZGlzYWJsZWQgPSBsb2FkSW1hZ2UoImNvcmVfc2xpZGVy
X2ZpbGxfZGlzYWJsZWQiKTsKLSAgICAgICAgaW5hY3RpdmUgPSBsb2FkSW1hZ2UoImNvcmVfc2xp
ZGVyX2JnIik7Ci0gICAgfQorICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoY3Jl
YXRlTGluZWFyR3JhZGllbnQoc3Ryb2tlQ29sb3JTdGFydCwgc3Ryb2tlQ29sb3JFbmQsIHJlY3Qu
bWF4WE1pbllDb3JuZXIoKSwgcmVjdC4gbWF4WE1heFlDb3JuZXIoKSkpOworICAgIGluZm8uY29u
dGV4dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KGZpbGxDb2xvclN0YXJ0
LCBmaWxsQ29sb3JFbmQsIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5l
cigpKSk7CiAKLSAgICBpZiAoaXNFbmFibGVkKG9iamVjdCkpCi0gICAgICAgIGRyYXdUaHJlZVNs
aWNlKGNvbnRleHQsIHJlY3QsIGluYWN0aXZlLmdldCgpLCBtZWRpdW1TbGljZSk7Ci0gICAgZWxz
ZQotICAgICAgICBkcmF3VGhyZWVTbGljZShjb250ZXh0LCByZWN0LCBkaXNhYmxlZC5nZXQoKSwg
KHNtYWxsU2xpY2UgLSAxKSk7CisgICAgUGF0aCBwYXRoOworICAgIHBhdGguYWRkUm91bmRlZFJl
Y3QocmVjdCwgc21hbGxDb3JuZXIpOworICAgIGluZm8uY29udGV4dC0+ZmlsbFBhdGgocGF0aCk7
CiAKLSAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgaW5mby5jb250ZXh0LT5yZXN0b3JlKCk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFp
bnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZv
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIEFTU0VSVChpbmZvLmNvbnRleHQpOworICAg
IEZsb2F0U2l6ZSBsYXJnZUNvcm5lcihsYXJnZVJhZGl1cywgbGFyZ2VSYWRpdXMpOwogICAgIGlu
Zm8uY29udGV4dC0+c2F2ZSgpOwotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGluZm8u
Y29udGV4dDsKLQotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGRpc2FibGVkLCBpbmFjdGl2ZSwg
cHJlc3NlZCwgYXVyYTsKLSAgICBpZiAoIWRpc2FibGVkKSB7Ci0gICAgICAgIGRpc2FibGVkID0g
bG9hZEltYWdlKCJjb3JlX3NsaWRlcl9oYW5kbGVfZGlzYWJsZWQiKTsKLSAgICAgICAgaW5hY3Rp
dmUgPSBsb2FkSW1hZ2UoImNvcmVfc2xpZGVyX2hhbmRsZSIpOwotICAgICAgICBwcmVzc2VkID0g
bG9hZEltYWdlKCJjb3JlX3NsaWRlcl9oYW5kbGVfcHJlc3NlZCIpOwotICAgICAgICBhdXJhID0g
bG9hZEltYWdlKCJjb3JlX3NsaWRlcl9hdXJhIik7Ci0gICAgfQotCi0gICAgRmxvYXRSZWN0IHRt
cFJlY3QocmVjdCk7Ci0gICAgZmxvYXQgbGVuZ3RoID0gc3RkOjptYXgodG1wUmVjdC53aWR0aCgp
LCB0bXBSZWN0LmhlaWdodCgpKTsKLSAgICBpZiAodG1wUmVjdC53aWR0aCgpID4gdG1wUmVjdC5o
ZWlnaHQoKSkgewotICAgICAgICB0bXBSZWN0LnNldFkodG1wUmVjdC55KCkgLSAobGVuZ3RoIC0g
dG1wUmVjdC5oZWlnaHQoKSkgLyAyKTsKLSAgICAgICAgdG1wUmVjdC5zZXRIZWlnaHQobGVuZ3Ro
KTsKKyAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBp
bmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhsaW5lV2lkdGgpOworICAgIGlmIChpc1By
ZXNzZWQob2JqZWN0KSB8fCBpc0hvdmVyZWQob2JqZWN0KSkgeworICAgICAgICBpbmZvLmNvbnRl
eHQtPnNldFN0cm9rZUdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KGhvdmVyVG9wT3V0bGlu
ZSwgaG92ZXJCb3R0b21PdXRsaW5lLCByZWN0Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QuIG1heFhN
YXhZQ29ybmVyKCkpKTsKKyAgICAgICAgaW5mby5jb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3Jl
YXRlTGluZWFyR3JhZGllbnQoaG92ZXJUb3AsIGhvdmVyQm90dG9tLCByZWN0Lm1heFhNaW5ZQ29y
bmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHRt
cFJlY3Quc2V0WCh0bXBSZWN0LngoKSAtIChsZW5ndGggLSB0bXBSZWN0LndpZHRoKCkpIC8gMik7
Ci0gICAgICAgIHRtcFJlY3Quc2V0V2lkdGgobGVuZ3RoKTsKKyAgICAgICAgaW5mby5jb250ZXh0
LT5zZXRTdHJva2VHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChyZWd1bGFyVG9wT3V0bGlu
ZSwgcmVndWxhckJvdHRvbU91dGxpbmUsIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC4gbWF4
WE1heFlDb3JuZXIoKSkpOworICAgICAgICBpbmZvLmNvbnRleHQtPnNldEZpbGxHcmFkaWVudChj
cmVhdGVMaW5lYXJHcmFkaWVudChyZWd1bGFyVG9wLCByZWd1bGFyQm90dG9tLCByZWN0Lm1heFhN
aW5ZQ29ybmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSkpOwogICAgIH0KLQotICAgIGZsb2F0
IGF1cmFIZWlnaHQgPSBsZW5ndGggKiBhdXJhUmF0aW87Ci0gICAgZmxvYXQgYXVyYVdpZHRoID0g
YXVyYUhlaWdodDsKLSAgICBmbG9hdCBhdXJhWCA9IHRtcFJlY3QueCgpIC0gKGF1cmFXaWR0aCAt
IHRtcFJlY3Qud2lkdGgoKSkgLyAyOwotICAgIGZsb2F0IGF1cmFZID0gdG1wUmVjdC55KCkgLSAo
YXVyYUhlaWdodCAtIHRtcFJlY3QuaGVpZ2h0KCkpIC8gMjsKLSAgICBGbG9hdFJlY3QgYXVyYVJl
Y3QoYXVyYVgsIGF1cmFZLCBhdXJhV2lkdGgsIGF1cmFIZWlnaHQpOwotCi0gICAgaWYgKCFpc0Vu
YWJsZWQob2JqZWN0KSkKLSAgICAgICAgZHJhd0NvbnRyb2woY29udGV4dCwgdG1wUmVjdCwgZGlz
YWJsZWQuZ2V0KCkpOwotICAgIGVsc2UgewotICAgICAgICBpZiAoaXNQcmVzc2VkKG9iamVjdCkg
fHwgaXNIb3ZlcmVkKG9iamVjdCkgfHwgaXNGb2N1c2VkKG9iamVjdCkpIHsKLSAgICAgICAgICAg
IGRyYXdDb250cm9sKGNvbnRleHQsIHRtcFJlY3QsIHByZXNzZWQuZ2V0KCkpOwotICAgICAgICAg
ICAgZHJhd0NvbnRyb2woY29udGV4dCwgYXVyYVJlY3QsIGF1cmEuZ2V0KCkpOworICAgIFBhdGgg
cGF0aDsKKyAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIGxhcmdlQ29ybmVyKTsKKyAgICBp
bmZvLmNvbnRleHQtPmZpbGxQYXRoKHBhdGgpOworICAgIGJvb2wgaXNWZXJ0aWNhbCA9IHJlY3Qu
d2lkdGgoKSA+IHJlY3QuaGVpZ2h0KCk7CisgICAgSW50UG9pbnQgc3RhcnRQb2ludChyZWN0Lngo
KSArIChpc1ZlcnRpY2FsID8gNSA6IDIpLCByZWN0LnkoKSArIChpc1ZlcnRpY2FsID8gMiA6IDUp
KTsKKyAgICBJbnRQb2ludCBlbmRQb2ludChyZWN0LngoKSArIChpc1ZlcnRpY2FsID8gMjAgOiAy
KSwgcmVjdC55KCkgKyAoaXNWZXJ0aWNhbCA/IDIgOiAyMCkpOworICAgIGNvbnN0IGludCBsaW5l
T2Zmc2V0ID0gMjsKKyAgICBjb25zdCBpbnQgc2hhZG93T2Zmc2V0ID0gMTsKKyAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IDM7IGkrKykgeworICAgICAgICBpZiAoaXNWZXJ0aWNhbCkgeworICAgICAg
ICAgICAgc3RhcnRQb2ludC5zZXRZKHN0YXJ0UG9pbnQueSgpICsgbGluZU9mZnNldCk7CisgICAg
ICAgICAgICBlbmRQb2ludC5zZXRZKGVuZFBvaW50LnkoKSArIGxpbmVPZmZzZXQpOwogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgZHJhd0NvbnRyb2woY29udGV4dCwgdG1wUmVjdCwgaW5h
Y3RpdmUuZ2V0KCkpOworICAgICAgICAgICAgc3RhcnRQb2ludC5zZXRYKHN0YXJ0UG9pbnQueCgp
ICsgbGluZU9mZnNldCk7CisgICAgICAgICAgICBlbmRQb2ludC5zZXRYKGVuZFBvaW50LngoKSAr
IGxpbmVPZmZzZXQpOwogICAgICAgICB9CisgICAgICAgIGlmIChpc1ByZXNzZWQob2JqZWN0KSB8
fCBpc0hvdmVyZWQob2JqZWN0KSkKKyAgICAgICAgICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tl
Q29sb3IoZHJhZ1JvbGxMaWdodCwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoZHJhZ1JlZ3VsYXJMaWdo
dCwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUo
c3RhcnRQb2ludCwgZW5kUG9pbnQpOworICAgICAgICBpZiAoaXNWZXJ0aWNhbCkgeworICAgICAg
ICAgICAgc3RhcnRQb2ludC5zZXRZKHN0YXJ0UG9pbnQueSgpICsgc2hhZG93T2Zmc2V0KTsKKyAg
ICAgICAgICAgIGVuZFBvaW50LnNldFkoZW5kUG9pbnQueSgpICsgc2hhZG93T2Zmc2V0KTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN0YXJ0UG9pbnQuc2V0WChzdGFydFBvaW50Lngo
KSArIHNoYWRvd09mZnNldCk7CisgICAgICAgICAgICBlbmRQb2ludC5zZXRYKGVuZFBvaW50Lngo
KSArIHNoYWRvd09mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzUHJlc3NlZChvYmpl
Y3QpIHx8IGlzSG92ZXJlZChvYmplY3QpKQorICAgICAgICAgICAgaW5mby5jb250ZXh0LT5zZXRT
dHJva2VDb2xvcihkcmFnUm9sbERhcmssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGRyYWdSZWd1bGFy
RGFyaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGluZm8uY29udGV4dC0+ZHJhd0xp
bmUoc3RhcnRQb2ludCwgZW5kUG9pbnQpOwogICAgIH0KLQotICAgIGNvbnRleHQtPnJlc3RvcmUo
KTsKKyAgICBpbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172591</attachid>
            <date>2012-11-06 08:07:10 -0800</date>
            <delta_ts>2012-11-06 13:40:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100760-20121106110518.patch</filename>
            <type>text/plain</type>
            <size>7780</size>
            <attacher name="Tiancheng Jiang">tijiang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE3MjRjNWJlYWRkMzNh
MjY0ZjExMjJlYzA4NjkwNjY3NTk4NGI0Zi4uYzdkY2I4NjgxNWI1ZDkyZjA0NDg0YWI5YzY5ZGRh
MzY4NzZhNDdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTExLTA2ICBUaWFu
Y2hlbmcgSmlhbmcgIDx0aWppYW5nQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFVw
ZGF0ZSBCQjEwIGZvcm0gdGhlbWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDA3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZXZlcnQgd2Via2l0L2NlMzA2ZGNjNjk4MTk5YTZmN2NlNjc5ZGFmMGEz
MGMyNWQzYTNkNDMgc2xpZGVyIHRoZW1lCisgICAgICAgIGNoYW5nZSB3aGljaCBicmVhayBtZWRp
YSBjb250cm9sIGFuZCB2ZXJ0aWNhbCBzbGlkZXIuCisKKyAgICAgICAgUklNIFBSIDIzNjk5Mwor
ICAgICAgICBJbnRlcm5hbCBSZXZpZXdlZCBieSBKZWZmIFJvZ2Vycy4KKworICAgICAgICAqIHBs
YXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRTbGlkZXJUcmFja1JlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludFNsaWRlclRodW1iKToK
KwogMjAxMi0xMS0wNiAgTWF4IEZlaWwgIDxtZmVpbEByaW0uY29tPgogCiAgICAgICAgIFtCbGFj
a0JlcnJ5XSBBdXRvbWF0aWNhbGx5IGdvIGZ1bGxzY3JlZW4gb24gdmlkZW8gcGxheQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNr
QmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVt
ZUJsYWNrQmVycnkuY3BwCmluZGV4IDA4ZWJiZmM3MmUwMjdkMGU4YjdjOWY3ZmM1YWE3YWI4YjMz
OWQ4MzMuLjE2ZTk1OTE5YWQ0ODA4YTY0OTgyNTlmNjg5ZmEyN2MzN2MyNzkyZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0Jl
cnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRo
ZW1lQmxhY2tCZXJyeS5jcHAKQEAgLTE3NiwyNCArMTc2LDYgQEAgc3RhdGljIHZvaWQgZHJhd0Nv
bnRyb2woR3JhcGhpY3NDb250ZXh0KiBnYywgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBJbWFnZSog
aW1nKQogICAgIGdjLT5kcmF3SW1hZ2UoaW1nLCBDb2xvclNwYWNlRGV2aWNlUkdCLCByZWN0LCBz
cmNSZWN0KTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd1RocmVlU2xpY2UoR3JhcGhpY3NDb250ZXh0
KiBnYywgY29uc3QgSW50UmVjdCYgcmVjdCwgSW1hZ2UqIGltZywgaW50IHNsaWNlKQotewotICAg
IGlmICghaW1nKQotICAgICAgICByZXR1cm47Ci0gICAgRmxvYXRTaXplIGRzdFNsaWNlKHJlY3Qu
aGVpZ2h0KCkgLyAyLCByZWN0LmhlaWdodCgpKTsKLSAgICBGbG9hdFJlY3Qgc3JjUmVjdCgwLCAw
LCBzbGljZSwgaW1nLT5oZWlnaHQoKSk7Ci0gICAgRmxvYXRSZWN0IGRzdFJlY3QocmVjdC5sb2Nh
dGlvbigpLCBkc3RTbGljZSk7Ci0KLSAgICBnYy0+ZHJhd0ltYWdlKGltZywgQ29sb3JTcGFjZURl
dmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCk7Ci0gICAgc3JjUmVjdC5tb3ZlKGltZy0+d2lkdGgo
KSAtIHNyY1JlY3Qud2lkdGgoKSwgMCk7Ci0gICAgZHN0UmVjdC5tb3ZlKHJlY3Qud2lkdGgoKSAt
IGRzdFJlY3Qud2lkdGgoKSwgMCk7Ci0gICAgZ2MtPmRyYXdJbWFnZShpbWcsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QpOwotCi0gICAgc3JjUmVjdCA9IEZsb2F0UmVjdChz
bGljZSwgMCwgaW1nLT53aWR0aCgpIC0gMiAqIHNsaWNlLCBpbWctPmhlaWdodCgpKTsKLSAgICBk
c3RSZWN0ID0gRmxvYXRSZWN0KHJlY3QueCgpICsgZHN0U2xpY2Uud2lkdGgoKSwgcmVjdC55KCks
IHJlY3Qud2lkdGgoKSAtIDIgKiBkc3RTbGljZS53aWR0aCgpLCBkc3RTbGljZS5oZWlnaHQoKSk7
Ci0gICAgZ2MtPmRyYXdJbWFnZShpbWcsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNy
Y1JlY3QpOwotfQotCiBzdGF0aWMgdm9pZCBkcmF3TmluZVNsaWNlKEdyYXBoaWNzQ29udGV4dCog
Z2MsIGNvbnN0IEludFJlY3QmIHJlY3QsIGRvdWJsZSBzY2FsZSwgSW1hZ2UqIGltZywgaW50IHNs
aWNlKQogewogICAgIGlmICghaW1nKQpAQCAtNzIyLDY3ICs3MDQsNzEgQEAgYm9vbCBSZW5kZXJU
aGVtZUJsYWNrQmVycnk6OnBhaW50U2xpZGVyVHJhY2tSZWN0KFJlbmRlck9iamVjdCogb2JqZWN0
LCBjb25zdCBQYWkKIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludFNsaWRlclRyYWNr
UmVjdChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJ
bnRSZWN0JiByZWN0LAogICAgICAgICBSR0JBMzIgc3Ryb2tlQ29sb3JTdGFydCwgUkdCQTMyIHN0
cm9rZUNvbG9yRW5kLCBSR0JBMzIgZmlsbENvbG9yU3RhcnQsIFJHQkEzMiBmaWxsQ29sb3JFbmQp
CiB7Ci0gICAgQVNTRVJUKGluZm8uY29udGV4dCk7CisgICAgRmxvYXRTaXplIHNtYWxsQ29ybmVy
KHNtYWxsUmFkaXVzLCBzbWFsbFJhZGl1cyk7CisKICAgICBpbmZvLmNvbnRleHQtPnNhdmUoKTsK
LSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBpbmZvLmNvbnRleHQ7CisgICAgaW5mby5j
b250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgaW5mby5jb250ZXh0LT5z
ZXRTdHJva2VUaGlja25lc3MobGluZVdpZHRoKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+
IGRpc2FibGVkLCBpbmFjdGl2ZTsKLSAgICBpZiAoIWRpc2FibGVkKSB7Ci0gICAgICAgIGRpc2Fi
bGVkID0gbG9hZEltYWdlKCJjb3JlX3NsaWRlcl9maWxsX2Rpc2FibGVkIik7Ci0gICAgICAgIGlu
YWN0aXZlID0gbG9hZEltYWdlKCJjb3JlX3NsaWRlcl9iZyIpOwotICAgIH0KKyAgICBpbmZvLmNv
bnRleHQtPnNldFN0cm9rZUdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KHN0cm9rZUNvbG9y
U3RhcnQsIHN0cm9rZUNvbG9yRW5kLCByZWN0Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QuIG1heFhN
YXhZQ29ybmVyKCkpKTsKKyAgICBpbmZvLmNvbnRleHQtPnNldEZpbGxHcmFkaWVudChjcmVhdGVM
aW5lYXJHcmFkaWVudChmaWxsQ29sb3JTdGFydCwgZmlsbENvbG9yRW5kLCByZWN0Lm1heFhNaW5Z
Q29ybmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSkpOwogCi0gICAgaWYgKGlzRW5hYmxlZChv
YmplY3QpKQotICAgICAgICBkcmF3VGhyZWVTbGljZShjb250ZXh0LCByZWN0LCBpbmFjdGl2ZS5n
ZXQoKSwgbWVkaXVtU2xpY2UpOwotICAgIGVsc2UKLSAgICAgICAgZHJhd1RocmVlU2xpY2UoY29u
dGV4dCwgcmVjdCwgZGlzYWJsZWQuZ2V0KCksIChzbWFsbFNsaWNlIC0gMSkpOworICAgIFBhdGgg
cGF0aDsKKyAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIHNtYWxsQ29ybmVyKTsKKyAgICBp
bmZvLmNvbnRleHQtPmZpbGxQYXRoKHBhdGgpOwogCi0gICAgY29udGV4dC0+cmVzdG9yZSgpOwor
ICAgIGluZm8uY29udGV4dC0+cmVzdG9yZSgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9v
bCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBv
YmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAg
ICBBU1NFUlQoaW5mby5jb250ZXh0KTsKKyAgICBGbG9hdFNpemUgbGFyZ2VDb3JuZXIobGFyZ2VS
YWRpdXMsIGxhcmdlUmFkaXVzKTsKICAgICBpbmZvLmNvbnRleHQtPnNhdmUoKTsKLSAgICBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQgPSBpbmZvLmNvbnRleHQ7Ci0KLSAgICBzdGF0aWMgUmVmUHRy
PEltYWdlPiBkaXNhYmxlZCwgaW5hY3RpdmUsIHByZXNzZWQsIGF1cmE7Ci0gICAgaWYgKCFkaXNh
YmxlZCkgewotICAgICAgICBkaXNhYmxlZCA9IGxvYWRJbWFnZSgiY29yZV9zbGlkZXJfaGFuZGxl
X2Rpc2FibGVkIik7Ci0gICAgICAgIGluYWN0aXZlID0gbG9hZEltYWdlKCJjb3JlX3NsaWRlcl9o
YW5kbGUiKTsKLSAgICAgICAgcHJlc3NlZCA9IGxvYWRJbWFnZSgiY29yZV9zbGlkZXJfaGFuZGxl
X3ByZXNzZWQiKTsKLSAgICAgICAgYXVyYSA9IGxvYWRJbWFnZSgiY29yZV9zbGlkZXJfYXVyYSIp
OwotICAgIH0KLQotICAgIEZsb2F0UmVjdCB0bXBSZWN0KHJlY3QpOwotICAgIGZsb2F0IGxlbmd0
aCA9IHN0ZDo6bWF4KHRtcFJlY3Qud2lkdGgoKSwgdG1wUmVjdC5oZWlnaHQoKSk7Ci0gICAgaWYg
KHRtcFJlY3Qud2lkdGgoKSA+IHRtcFJlY3QuaGVpZ2h0KCkpIHsKLSAgICAgICAgdG1wUmVjdC5z
ZXRZKHRtcFJlY3QueSgpIC0gKGxlbmd0aCAtIHRtcFJlY3QuaGVpZ2h0KCkpIC8gMik7Ci0gICAg
ICAgIHRtcFJlY3Quc2V0SGVpZ2h0KGxlbmd0aCk7CisgICAgaW5mby5jb250ZXh0LT5zZXRTdHJv
a2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25l
c3MobGluZVdpZHRoKTsKKyAgICBpZiAoaXNQcmVzc2VkKG9iamVjdCkgfHwgaXNIb3ZlcmVkKG9i
amVjdCkpIHsKKyAgICAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VHcmFkaWVudChjcmVhdGVM
aW5lYXJHcmFkaWVudChob3ZlclRvcE91dGxpbmUsIGhvdmVyQm90dG9tT3V0bGluZSwgcmVjdC5t
YXhYTWluWUNvcm5lcigpLCByZWN0LiBtYXhYTWF4WUNvcm5lcigpKSk7CisgICAgICAgIGluZm8u
Y29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KGhvdmVyVG9wLCBo
b3ZlckJvdHRvbSwgcmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0Lm1heFhNYXhZQ29ybmVyKCkp
KTsKICAgICB9IGVsc2UgewotICAgICAgICB0bXBSZWN0LnNldFgodG1wUmVjdC54KCkgLSAobGVu
Z3RoIC0gdG1wUmVjdC53aWR0aCgpKSAvIDIpOwotICAgICAgICB0bXBSZWN0LnNldFdpZHRoKGxl
bmd0aCk7CisgICAgICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoY3JlYXRlTGlu
ZWFyR3JhZGllbnQocmVndWxhclRvcE91dGxpbmUsIHJlZ3VsYXJCb3R0b21PdXRsaW5lLCByZWN0
Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QuIG1heFhNYXhZQ29ybmVyKCkpKTsKKyAgICAgICAgaW5m
by5jb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQocmVndWxhclRv
cCwgcmVndWxhckJvdHRvbSwgcmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0Lm1heFhNYXhZQ29y
bmVyKCkpKTsKICAgICB9Ci0KLSAgICBmbG9hdCBhdXJhSGVpZ2h0ID0gbGVuZ3RoICogYXVyYVJh
dGlvOwotICAgIGZsb2F0IGF1cmFXaWR0aCA9IGF1cmFIZWlnaHQ7Ci0gICAgZmxvYXQgYXVyYVgg
PSB0bXBSZWN0LngoKSAtIChhdXJhV2lkdGggLSB0bXBSZWN0LndpZHRoKCkpIC8gMjsKLSAgICBm
bG9hdCBhdXJhWSA9IHRtcFJlY3QueSgpIC0gKGF1cmFIZWlnaHQgLSB0bXBSZWN0LmhlaWdodCgp
KSAvIDI7Ci0gICAgRmxvYXRSZWN0IGF1cmFSZWN0KGF1cmFYLCBhdXJhWSwgYXVyYVdpZHRoLCBh
dXJhSGVpZ2h0KTsKLQotICAgIGlmICghaXNFbmFibGVkKG9iamVjdCkpCi0gICAgICAgIGRyYXdD
b250cm9sKGNvbnRleHQsIHRtcFJlY3QsIGRpc2FibGVkLmdldCgpKTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgaWYgKGlzUHJlc3NlZChvYmplY3QpIHx8IGlzSG92ZXJlZChvYmplY3QpIHx8IGlzRm9j
dXNlZChvYmplY3QpKSB7Ci0gICAgICAgICAgICBkcmF3Q29udHJvbChjb250ZXh0LCB0bXBSZWN0
LCBwcmVzc2VkLmdldCgpKTsKLSAgICAgICAgICAgIGRyYXdDb250cm9sKGNvbnRleHQsIGF1cmFS
ZWN0LCBhdXJhLmdldCgpKTsKKyAgICBQYXRoIHBhdGg7CisgICAgcGF0aC5hZGRSb3VuZGVkUmVj
dChyZWN0LCBsYXJnZUNvcm5lcik7CisgICAgaW5mby5jb250ZXh0LT5maWxsUGF0aChwYXRoKTsK
KyAgICBib29sIGlzVmVydGljYWwgPSByZWN0LndpZHRoKCkgPiByZWN0LmhlaWdodCgpOworICAg
IEludFBvaW50IHN0YXJ0UG9pbnQocmVjdC54KCkgKyAoaXNWZXJ0aWNhbCA/IDUgOiAyKSwgcmVj
dC55KCkgKyAoaXNWZXJ0aWNhbCA/IDIgOiA1KSk7CisgICAgSW50UG9pbnQgZW5kUG9pbnQocmVj
dC54KCkgKyAoaXNWZXJ0aWNhbCA/IDIwIDogMiksIHJlY3QueSgpICsgKGlzVmVydGljYWwgPyAy
IDogMjApKTsKKyAgICBjb25zdCBpbnQgbGluZU9mZnNldCA9IDI7CisgICAgY29uc3QgaW50IHNo
YWRvd09mZnNldCA9IDE7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspIHsKKyAgICAg
ICAgaWYgKGlzVmVydGljYWwpIHsKKyAgICAgICAgICAgIHN0YXJ0UG9pbnQuc2V0WShzdGFydFBv
aW50LnkoKSArIGxpbmVPZmZzZXQpOworICAgICAgICAgICAgZW5kUG9pbnQuc2V0WShlbmRQb2lu
dC55KCkgKyBsaW5lT2Zmc2V0KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGRyYXdD
b250cm9sKGNvbnRleHQsIHRtcFJlY3QsIGluYWN0aXZlLmdldCgpKTsKKyAgICAgICAgICAgIHN0
YXJ0UG9pbnQuc2V0WChzdGFydFBvaW50LngoKSArIGxpbmVPZmZzZXQpOworICAgICAgICAgICAg
ZW5kUG9pbnQuc2V0WChlbmRQb2ludC54KCkgKyBsaW5lT2Zmc2V0KTsKICAgICAgICAgfQorICAg
ICAgICBpZiAoaXNQcmVzc2VkKG9iamVjdCkgfHwgaXNIb3ZlcmVkKG9iamVjdCkpCisgICAgICAg
ICAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGRyYWdSb2xsTGlnaHQsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbmZvLmNvbnRleHQtPnNl
dFN0cm9rZUNvbG9yKGRyYWdSZWd1bGFyTGlnaHQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
ICAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKHN0YXJ0UG9pbnQsIGVuZFBvaW50KTsKKyAgICAg
ICAgaWYgKGlzVmVydGljYWwpIHsKKyAgICAgICAgICAgIHN0YXJ0UG9pbnQuc2V0WShzdGFydFBv
aW50LnkoKSArIHNoYWRvd09mZnNldCk7CisgICAgICAgICAgICBlbmRQb2ludC5zZXRZKGVuZFBv
aW50LnkoKSArIHNoYWRvd09mZnNldCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBz
dGFydFBvaW50LnNldFgoc3RhcnRQb2ludC54KCkgKyBzaGFkb3dPZmZzZXQpOworICAgICAgICAg
ICAgZW5kUG9pbnQuc2V0WChlbmRQb2ludC54KCkgKyBzaGFkb3dPZmZzZXQpOworICAgICAgICB9
CisgICAgICAgIGlmIChpc1ByZXNzZWQob2JqZWN0KSB8fCBpc0hvdmVyZWQob2JqZWN0KSkKKyAg
ICAgICAgICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoZHJhZ1JvbGxEYXJrLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5mby5jb250ZXh0
LT5zZXRTdHJva2VDb2xvcihkcmFnUmVndWxhckRhcmssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgICAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKHN0YXJ0UG9pbnQsIGVuZFBvaW50KTsKICAg
ICB9Ci0KLSAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgaW5mby5jb250ZXh0LT5yZXN0b3Jl
KCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172640</attachid>
            <date>2012-11-06 13:40:24 -0800</date>
            <delta_ts>2012-11-07 13:49:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100760-20121106163836.patch</filename>
            <type>text/plain</type>
            <size>1442</size>
            <attacher name="Tiancheng Jiang">tijiang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjEyNWUxMTk5MWRlZmI5
ZDQwN2NmYWRkY2I5OTFhMDFiZGQ3ODg4Yy4uNjBlZjgyNmEyNDYzNjc3MmY1MWI4OGM2Y2U3ZGRm
NTZlOThhOTI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTExLTA2ICBUaWFu
Y2hlbmcgSmlhbmcgIDx0aWppYW5nQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFVw
ZGF0ZSBCQjEwIGZvcm0gdGhlbWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDA3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSSU0gUFIgMjM4MTIzCisgICAgICAgIEludGVybmFsIFJldmlld2VkIGJ5
IENocmlzIEh1dHRlbi1DemFwc2tpCisgICAgICAgIEJCMTAgc2VsZWN0aW9uIHRoZW1lIHVzZSBz
bGljZSBpbWFnZSBmdW5jdGlvbiB0byBkcmF3IHNlbGVjdGlvbiBidXR0b24sCisgICAgICAgIGFu
eSBib3JkZXItcmFkaXVzIHNldHRpbmcgb3RoZXIgdGhhbiAwIHdpbGwgbWFrZSB0aGUgYnV0dG9u
IGNvcm5lcgorICAgICAgICBjbGlwcGVkLiBBbHdheXMgc2V0IGJ1dHRvbiBib3JkZXItcmFkaXVz
OiAwIGZvciBCQjEwIHRoZW1lLgorCisgICAgICAgICogY3NzL3RoZW1lQmxhY2tCZXJyeS5jc3M6
CisgICAgICAgIChzZWxlY3Rbc2l6ZV1bbXVsdGlwbGVdKToKKyAgICAgICAgKHNlbGVjdFtzaXpl
PSIxIl0pOgorCiAyMDEyLTExLTA2ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgogCiAgICAgICAgIFNvbWUgY29va2llIGNvZGUgY2xlYW51cApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL3RoZW1lQmxhY2tCZXJyeS5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdGhl
bWVCbGFja0JlcnJ5LmNzcwppbmRleCBjYjM3NzYzMDU3YzE0YmQ4ZDE3NDQ0MTMxMDE4MGRiNWU3
NjliMjM0Li5jNGQ4ZjczYmJkNWRlYjNmYzI0NWQ4MzRiZWVkNWQ0NzAxMGVkNzdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdGhlbWVCbGFja0JlcnJ5LmNzcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvdGhlbWVCbGFja0JlcnJ5LmNzcwpAQCAtMzUsNiArMzUsMTEgQEAgc2VsZWN0
IHsKICAgICBib3JkZXItcmFkaXVzOiAwOwogfQogCitzZWxlY3Rbc2l6ZT0iMCJdLAorc2VsZWN0
W3NpemU9IjEiXSB7CisgICAgYm9yZGVyLXJhZGl1czogMDsKK30KKwogOjotd2Via2l0LXZhbGlk
YXRpb24tYnViYmxlLW1lc3NhZ2UgewogICAgIHBhZGRpbmctbGVmdDogMTBweDsKICAgICBwYWRk
aW5nLXJpZ2h0OiAxMHB4Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172865</attachid>
            <date>2012-11-07 13:50:10 -0800</date>
            <delta_ts>2012-11-11 11:41:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100760-20121107164820.patch</filename>
            <type>text/plain</type>
            <size>2319</size>
            <attacher name="Tiancheng Jiang">tijiang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTg0NTZkN2JjYjExODJj
MTNiZWU3MTI2NzVjYjZlZjIyZGE3NDYzNC4uMWIwOTk0NDZlNDdhYmFkMDUwNjliY2NmOGFlNjM3
Yjc0ZTViNmI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTExLTA3ICBUaWFu
Y2hlbmcgSmlhbmcgIDx0aWppYW5nQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFVw
ZGF0ZSBCQjEwIGZvcm0gdGhlbWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDA3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSSU0gUFIgMjM2OTk3CisgICAgICAgIEludGVybmFsbHkgUmV2aWV3ZWQg
YnkgSmFrb2IgUGV0c292aXRzLgorCisgICAgICAgIFNldCBmb250IGZhbWlseSB0byBmaXggRFJU
IHRlc3QgZmFzdC9mb3Jtcy9pbnB1dC10eXBlLXRleHQtbWluLXdpZHRoLmh0bWwKKworICAgICAg
ICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6ZGVmYXVsdEdVSUZvbnQpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6
OnN5c3RlbUZvbnQpOgorCiAyMDEyLTExLTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW1Y4XSBJbnRydXNpdmVET01XcmFwcGVyTWFwIGlzIG5vIGxvbmdlciBu
ZWVkZWQgYW5kIGNhbiBiZSBkZWxldGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAKaW5kZXggMTZl
OTU5MTlhZDQ4MDhhNjQ5ODI1OWY2ODlmYTI3YzM3YzI3OTJmZS4uNGM1NjNhMGU4NGJmNmE3Y2Qz
ZmViMjE0MTY3OWJkNDNiNDg4Y2U0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcApAQCAtMTI5
LDYgKzEyOSwxMiBAQCBjb25zdCBSR0JBMzIgYWN0aXZlVGV4dENvbG9yID0gMHhmZmZhZmFmYTsK
IAogZmxvYXQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpkZWZhdWx0Rm9udFNpemUgPSAxNjsKIAor
Y29uc3QgU3RyaW5nJiBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmRlZmF1bHRHVUlGb250KCkKK3sK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZm9udEZhY2UsIChBU0NJSUxpdGVyYWwo
IlNsYXRlIFBybyIpKSk7CisgICAgcmV0dXJuIGZvbnRGYWNlOworfQorCiBzdGF0aWMgUGFzc1Jl
ZlB0cjxHcmFkaWVudD4gY3JlYXRlTGluZWFyR3JhZGllbnQoUkdCQTMyIHRvcCwgUkdCQTMyIGJv
dHRvbSwgY29uc3QgSW50UG9pbnQmIGEsIGNvbnN0IEludFBvaW50JiBiKQogewogICAgIFJlZlB0
cjxHcmFkaWVudD4gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKGEsIGIpOwpAQCAtMjgyLDkg
KzI4OCwxMCBAQCB2b2lkIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6c3lzdGVtRm9udChpbnQgcHJv
cElkLCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdAogICAgICAgICBmb250U2l6ZSAtPSAo
Mi4wZiAvIHBvaW50c1BlckluY2gpICogcGl4ZWxzUGVySW5jaDsKICAgICB9CiAKKyAgICBmb250
RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKS5zZXRGYW1pbHkoZGVmYXVsdEdVSUZvbnQoKSk7CiAg
ICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoZm9udFNpemUpOwogICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRJc0Fic29sdXRlU2l6ZSh0cnVlKTsKLSAgICBmb250RGVzY3JpcHRpb24u
c2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246OlNhbnNTZXJpZkZhbWlseSk7CisgICAg
Zm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpOb0ZhbWls
eSk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0Tm9ybWFsKTsKICAg
ICBmb250RGVzY3JpcHRpb24uc2V0SXRhbGljKGZhbHNlKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173511</attachid>
            <date>2012-11-11 11:42:07 -0800</date>
            <delta_ts>2012-11-12 13:31:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100760-20121111144010.patch</filename>
            <type>text/plain</type>
            <size>7750</size>
            <attacher name="Tiancheng Jiang">tijiang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IzZDBmMGRiOWNmYTE5
N2M1NzU4MWRlZjQ0ZDI5ODRlMmRjOWFkOC4uYzg4MjE3NGM4MDQ1ODQ5ZWUzZmQ2ZTNkYjRmZDIz
ZDBlYTE1ZDdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTExLTExICBUaWFu
Y2hlbmcgSmlhbmcgIDx0aWppYW5nQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFVw
ZGF0ZSBCQjEwIGZvcm0gdGhlbWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDA3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSSU0gUFIgMjM2OTkzCisgICAgICAgIEludGVybmFsbHkgUmV2aWV3ZWQg
YnkgSmVmZiBSb2dlcnMuCisgICAgICAgIEVuYWJsZSBHTCBzbGlkZXIuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpkcmF3VGhyZWVTbGljZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRTbGlkZXJUcmFja1JlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludFNsaWRlclRodW1iKToK
KwogMjAxMi0xMS0xMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTYXZlIG9uZSBjYWxsIHRvIGNvbnRhaW5lckZvclJlcGFpbnQoKSB3aGVuIHVwZGF0
aW5nIGxheWVyIHBvc2l0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwCmluZGV4IDRjNTYzYTBl
ODRiZjZhN2NkM2ZlYjIxNDE2NzliZDQzYjQ4OGNlNGQuLmZkMzI1NTlhN2MxYTc3ZTliMGNkM2Mw
OTBlMGYxNTkzYWRjZDJlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAKQEAgLTE4Miw2ICsx
ODIsMjQgQEAgc3RhdGljIHZvaWQgZHJhd0NvbnRyb2woR3JhcGhpY3NDb250ZXh0KiBnYywgY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBJbWFnZSogaW1nKQogICAgIGdjLT5kcmF3SW1hZ2UoaW1nLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCByZWN0LCBzcmNSZWN0KTsKIH0KIAorc3RhdGljIHZvaWQgZHJh
d1RocmVlU2xpY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgY29uc3QgSW50UmVjdCYgcmVjdCwgSW1h
Z2UqIGltZywgaW50IHNsaWNlKQoreworICAgIGlmICghaW1nKQorICAgICAgICByZXR1cm47Cisg
ICAgRmxvYXRTaXplIGRzdFNsaWNlKHJlY3QuaGVpZ2h0KCkgLyAyLCByZWN0LmhlaWdodCgpKTsK
KyAgICBGbG9hdFJlY3Qgc3JjUmVjdCgwLCAwLCBzbGljZSwgaW1nLT5oZWlnaHQoKSk7CisgICAg
RmxvYXRSZWN0IGRzdFJlY3QocmVjdC5sb2NhdGlvbigpLCBkc3RTbGljZSk7CisKKyAgICBnYy0+
ZHJhd0ltYWdlKGltZywgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCk7Cisg
ICAgc3JjUmVjdC5tb3ZlKGltZy0+d2lkdGgoKSAtIHNyY1JlY3Qud2lkdGgoKSwgMCk7CisgICAg
ZHN0UmVjdC5tb3ZlKHJlY3Qud2lkdGgoKSAtIGRzdFJlY3Qud2lkdGgoKSwgMCk7CisgICAgZ2Mt
PmRyYXdJbWFnZShpbWcsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QpOwor
CisgICAgc3JjUmVjdCA9IEZsb2F0UmVjdChzbGljZSwgMCwgaW1nLT53aWR0aCgpIC0gMiAqIHNs
aWNlLCBpbWctPmhlaWdodCgpKTsKKyAgICBkc3RSZWN0ID0gRmxvYXRSZWN0KHJlY3QueCgpICsg
ZHN0U2xpY2Uud2lkdGgoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSAtIDIgKiBkc3RTbGljZS53
aWR0aCgpLCBkc3RTbGljZS5oZWlnaHQoKSk7CisgICAgZ2MtPmRyYXdJbWFnZShpbWcsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QpOworfQorCiBzdGF0aWMgdm9pZCBkcmF3
TmluZVNsaWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IEludFJlY3QmIHJlY3QsIGRvdWJs
ZSBzY2FsZSwgSW1hZ2UqIGltZywgaW50IHNsaWNlKQogewogICAgIGlmICghaW1nKQpAQCAtNzEx
LDcxICs3MjksNjcgQEAgYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50U2xpZGVyVHJh
Y2tSZWN0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWkKIGJvb2wgUmVuZGVyVGhlbWVC
bGFja0JlcnJ5OjpwYWludFNsaWRlclRyYWNrUmVjdChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29u
c3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0LAogICAgICAgICBSR0JBMzIg
c3Ryb2tlQ29sb3JTdGFydCwgUkdCQTMyIHN0cm9rZUNvbG9yRW5kLCBSR0JBMzIgZmlsbENvbG9y
U3RhcnQsIFJHQkEzMiBmaWxsQ29sb3JFbmQpCiB7Ci0gICAgRmxvYXRTaXplIHNtYWxsQ29ybmVy
KHNtYWxsUmFkaXVzLCBzbWFsbFJhZGl1cyk7Ci0KKyAgICBBU1NFUlQoaW5mby5jb250ZXh0KTsK
ICAgICBpbmZvLmNvbnRleHQtPnNhdmUoKTsKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVN0
eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhs
aW5lV2lkdGgpOworICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGluZm8uY29udGV4dDsK
IAotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGll
bnQoc3Ryb2tlQ29sb3JTdGFydCwgc3Ryb2tlQ29sb3JFbmQsIHJlY3QubWF4WE1pbllDb3JuZXIo
KSwgcmVjdC4gbWF4WE1heFlDb3JuZXIoKSkpOwotICAgIGluZm8uY29udGV4dC0+c2V0RmlsbEdy
YWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KGZpbGxDb2xvclN0YXJ0LCBmaWxsQ29sb3JFbmQs
IHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7CisgICAgc3Rh
dGljIFJlZlB0cjxJbWFnZT4gZGlzYWJsZWQsIGluYWN0aXZlOworICAgIGlmICghZGlzYWJsZWQp
IHsKKyAgICAgICAgZGlzYWJsZWQgPSBsb2FkSW1hZ2UoImNvcmVfc2xpZGVyX2ZpbGxfZGlzYWJs
ZWQiKTsKKyAgICAgICAgaW5hY3RpdmUgPSBsb2FkSW1hZ2UoImNvcmVfc2xpZGVyX2JnIik7Cisg
ICAgfQogCi0gICAgUGF0aCBwYXRoOwotICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgc21h
bGxDb3JuZXIpOwotICAgIGluZm8uY29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CisgICAgaWYgKGlz
RW5hYmxlZChvYmplY3QpKQorICAgICAgICBkcmF3VGhyZWVTbGljZShjb250ZXh0LCByZWN0LCBp
bmFjdGl2ZS5nZXQoKSwgbWVkaXVtU2xpY2UpOworICAgIGVsc2UKKyAgICAgICAgZHJhd1RocmVl
U2xpY2UoY29udGV4dCwgcmVjdCwgZGlzYWJsZWQuZ2V0KCksIChzbWFsbFNsaWNlIC0gMSkpOwog
Ci0gICAgaW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CisgICAgY29udGV4dC0+cmVzdG9yZSgpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50
U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywg
Y29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBGbG9hdFNpemUgbGFyZ2VDb3JuZXIobGFyZ2VS
YWRpdXMsIGxhcmdlUmFkaXVzKTsKKyAgICBBU1NFUlQoaW5mby5jb250ZXh0KTsKICAgICBpbmZv
LmNvbnRleHQtPnNhdmUoKTsKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlk
U3Ryb2tlKTsKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhsaW5lV2lkdGgp
OwotICAgIGlmIChpc1ByZXNzZWQob2JqZWN0KSB8fCBpc0hvdmVyZWQob2JqZWN0KSkgewotICAg
ICAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50
KGhvdmVyVG9wT3V0bGluZSwgaG92ZXJCb3R0b21PdXRsaW5lLCByZWN0Lm1heFhNaW5ZQ29ybmVy
KCksIHJlY3QuIG1heFhNYXhZQ29ybmVyKCkpKTsKLSAgICAgICAgaW5mby5jb250ZXh0LT5zZXRG
aWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQoaG92ZXJUb3AsIGhvdmVyQm90dG9tLCBy
ZWN0Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSkpOworICAgIEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCA9IGluZm8uY29udGV4dDsKKworICAgIHN0YXRpYyBSZWZQdHI8
SW1hZ2U+IGRpc2FibGVkLCBpbmFjdGl2ZSwgcHJlc3NlZCwgYXVyYTsKKyAgICBpZiAoIWRpc2Fi
bGVkKSB7CisgICAgICAgIGRpc2FibGVkID0gbG9hZEltYWdlKCJjb3JlX3NsaWRlcl9oYW5kbGVf
ZGlzYWJsZWQiKTsKKyAgICAgICAgaW5hY3RpdmUgPSBsb2FkSW1hZ2UoImNvcmVfc2xpZGVyX2hh
bmRsZSIpOworICAgICAgICBwcmVzc2VkID0gbG9hZEltYWdlKCJjb3JlX3NsaWRlcl9oYW5kbGVf
cHJlc3NlZCIpOworICAgICAgICBhdXJhID0gbG9hZEltYWdlKCJjb3JlX3NsaWRlcl9hdXJhIik7
CisgICAgfQorCisgICAgRmxvYXRSZWN0IHRtcFJlY3QocmVjdCk7CisgICAgZmxvYXQgbGVuZ3Ro
ID0gc3RkOjptYXgodG1wUmVjdC53aWR0aCgpLCB0bXBSZWN0LmhlaWdodCgpKTsKKyAgICBpZiAo
dG1wUmVjdC53aWR0aCgpID4gdG1wUmVjdC5oZWlnaHQoKSkgeworICAgICAgICB0bXBSZWN0LnNl
dFkodG1wUmVjdC55KCkgLSAobGVuZ3RoIC0gdG1wUmVjdC5oZWlnaHQoKSkgLyAyKTsKKyAgICAg
ICAgdG1wUmVjdC5zZXRIZWlnaHQobGVuZ3RoKTsKICAgICB9IGVsc2UgewotICAgICAgICBpbmZv
LmNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KHJlZ3VsYXJU
b3BPdXRsaW5lLCByZWd1bGFyQm90dG9tT3V0bGluZSwgcmVjdC5tYXhYTWluWUNvcm5lcigpLCBy
ZWN0LiBtYXhYTWF4WUNvcm5lcigpKSk7Ci0gICAgICAgIGluZm8uY29udGV4dC0+c2V0RmlsbEdy
YWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KHJlZ3VsYXJUb3AsIHJlZ3VsYXJCb3R0b20sIHJl
Y3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7CisgICAgICAgIHRt
cFJlY3Quc2V0WCh0bXBSZWN0LngoKSAtIChsZW5ndGggLSB0bXBSZWN0LndpZHRoKCkpIC8gMik7
CisgICAgICAgIHRtcFJlY3Quc2V0V2lkdGgobGVuZ3RoKTsKICAgICB9Ci0gICAgUGF0aCBwYXRo
OwotICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgbGFyZ2VDb3JuZXIpOwotICAgIGluZm8u
Y29udGV4dC0+ZmlsbFBhdGgocGF0aCk7Ci0gICAgYm9vbCBpc1ZlcnRpY2FsID0gcmVjdC53aWR0
aCgpID4gcmVjdC5oZWlnaHQoKTsKLSAgICBJbnRQb2ludCBzdGFydFBvaW50KHJlY3QueCgpICsg
KGlzVmVydGljYWwgPyA1IDogMiksIHJlY3QueSgpICsgKGlzVmVydGljYWwgPyAyIDogNSkpOwot
ICAgIEludFBvaW50IGVuZFBvaW50KHJlY3QueCgpICsgKGlzVmVydGljYWwgPyAyMCA6IDIpLCBy
ZWN0LnkoKSArIChpc1ZlcnRpY2FsID8gMiA6IDIwKSk7Ci0gICAgY29uc3QgaW50IGxpbmVPZmZz
ZXQgPSAyOwotICAgIGNvbnN0IGludCBzaGFkb3dPZmZzZXQgPSAxOwotICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgMzsgaSsrKSB7Ci0gICAgICAgIGlmIChpc1ZlcnRpY2FsKSB7Ci0gICAgICAgICAg
ICBzdGFydFBvaW50LnNldFkoc3RhcnRQb2ludC55KCkgKyBsaW5lT2Zmc2V0KTsKLSAgICAgICAg
ICAgIGVuZFBvaW50LnNldFkoZW5kUG9pbnQueSgpICsgbGluZU9mZnNldCk7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBzdGFydFBvaW50LnNldFgoc3RhcnRQb2ludC54KCkgKyBsaW5l
T2Zmc2V0KTsKLSAgICAgICAgICAgIGVuZFBvaW50LnNldFgoZW5kUG9pbnQueCgpICsgbGluZU9m
ZnNldCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlzUHJlc3NlZChvYmplY3QpIHx8IGlzSG92
ZXJlZChvYmplY3QpKQotICAgICAgICAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihk
cmFnUm9sbExpZ2h0LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihkcmFnUmVndWxhckxpZ2h0LCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShzdGFydFBv
aW50LCBlbmRQb2ludCk7Ci0gICAgICAgIGlmIChpc1ZlcnRpY2FsKSB7Ci0gICAgICAgICAgICBz
dGFydFBvaW50LnNldFkoc3RhcnRQb2ludC55KCkgKyBzaGFkb3dPZmZzZXQpOwotICAgICAgICAg
ICAgZW5kUG9pbnQuc2V0WShlbmRQb2ludC55KCkgKyBzaGFkb3dPZmZzZXQpOworCisgICAgZmxv
YXQgYXVyYUhlaWdodCA9IGxlbmd0aCAqIGF1cmFSYXRpbzsKKyAgICBmbG9hdCBhdXJhV2lkdGgg
PSBhdXJhSGVpZ2h0OworICAgIGZsb2F0IGF1cmFYID0gdG1wUmVjdC54KCkgLSAoYXVyYVdpZHRo
IC0gdG1wUmVjdC53aWR0aCgpKSAvIDI7CisgICAgZmxvYXQgYXVyYVkgPSB0bXBSZWN0LnkoKSAt
IChhdXJhSGVpZ2h0IC0gdG1wUmVjdC5oZWlnaHQoKSkgLyAyOworICAgIEZsb2F0UmVjdCBhdXJh
UmVjdChhdXJhWCwgYXVyYVksIGF1cmFXaWR0aCwgYXVyYUhlaWdodCk7CisKKyAgICBpZiAoIWlz
RW5hYmxlZChvYmplY3QpKQorICAgICAgICBkcmF3Q29udHJvbChjb250ZXh0LCB0bXBSZWN0LCBk
aXNhYmxlZC5nZXQoKSk7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChpc1ByZXNzZWQob2JqZWN0
KSB8fCBpc0hvdmVyZWQob2JqZWN0KSB8fCBpc0ZvY3VzZWQob2JqZWN0KSkgeworICAgICAgICAg
ICAgZHJhd0NvbnRyb2woY29udGV4dCwgdG1wUmVjdCwgcHJlc3NlZC5nZXQoKSk7CisgICAgICAg
ICAgICBkcmF3Q29udHJvbChjb250ZXh0LCBhdXJhUmVjdCwgYXVyYS5nZXQoKSk7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBzdGFydFBvaW50LnNldFgoc3RhcnRQb2ludC54KCkgKyBz
aGFkb3dPZmZzZXQpOwotICAgICAgICAgICAgZW5kUG9pbnQuc2V0WChlbmRQb2ludC54KCkgKyBz
aGFkb3dPZmZzZXQpOworICAgICAgICAgICAgZHJhd0NvbnRyb2woY29udGV4dCwgdG1wUmVjdCwg
aW5hY3RpdmUuZ2V0KCkpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChpc1ByZXNzZWQob2JqZWN0
KSB8fCBpc0hvdmVyZWQob2JqZWN0KSkKLSAgICAgICAgICAgIGluZm8uY29udGV4dC0+c2V0U3Ry
b2tlQ29sb3IoZHJhZ1JvbGxEYXJrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihkcmFnUmVndWxhckRh
cmssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5l
KHN0YXJ0UG9pbnQsIGVuZFBvaW50KTsKICAgICB9Ci0gICAgaW5mby5jb250ZXh0LT5yZXN0b3Jl
KCk7CisKKyAgICBjb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173513</attachid>
            <date>2012-11-11 11:57:10 -0800</date>
            <delta_ts>2012-11-12 13:31:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100760-20121111145514.patch</filename>
            <type>text/plain</type>
            <size>9773</size>
            <attacher name="Tiancheng Jiang">tijiang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzg4MjE3NGM4MDQ1ODQ5
ZWUzZmQ2ZTNkYjRmZDIzZDBlYTE1ZDdjMC4uZGQ0OGYwNTBmODA1MDY2ZGI3ZDhkYWZlMWUyOTc1
NjE3M2MzYjQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtNyw2ICs3LDI4IEBACiAKICAgICAgICAgUklNIFBS
IDIzNjk5MwogICAgICAgICBJbnRlcm5hbGx5IFJldmlld2VkIGJ5IEplZmYgUm9nZXJzLgorICAg
ICAgICBVc2Ugc2xpZGUgYW5kIHBhaW50IG1ldGhvZCBvbiBzbGlkZXIgcmFuZ2UgYW5kIG1lZGlh
IGNvbnRyb2xzLgorCisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJs
YWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3
VGhyZWVTbGljZUhvcml6b250YWwpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1RocmVlU2xpY2VW
ZXJ0aWNhbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50
U2xpZGVyVHJhY2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJy
eTo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
QmxhY2tCZXJyeTo6cGFpbnRNZWRpYVNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oOgorICAgICAg
ICAoUmVuZGVyVGhlbWVCbGFja0JlcnJ5KToKKworMjAxMi0xMS0xMSAgVGlhbmNoZW5nIEppYW5n
ICA8dGlqaWFuZ0ByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBVcGRhdGUgQkIxMCBm
b3JtIHRoZW1lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAwNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUklNIFBSIDIzNjk5MworICAgICAgICBJbnRlcm5hbGx5IFJldmlld2VkIGJ5IEplZmYgUm9n
ZXJzLgogICAgICAgICBFbmFibGUgR0wgc2xpZGVyLgogCiAgICAgICAgICogcGxhdGZvcm0vYmxh
Y2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3Bw
CmluZGV4IGZkMzI1NTlhN2MxYTc3ZTliMGNkM2MwOTBlMGYxNTkzYWRjZDJlODUuLjA3OGZlNGEx
ZWRkODE5ODU3MTk4ZTg4Y2I4OTM3ZDdlZmZlZjM5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5j
cHAKQEAgLTEyMSw4ICsxMjEsNiBAQCBjb25zdCBSR0JBMzIgZHJhZ1JlZ3VsYXJEYXJrID0gMHhm
ZmJhYmFiYTsKIGNvbnN0IFJHQkEzMiBkcmFnUm9sbExpZ2h0ID0gMHhmZmYyZjJmMjsKIGNvbnN0
IFJHQkEzMiBkcmFnUm9sbERhcmsgPSAweGZmNjlhOGZmOwogCi1jb25zdCBSR0JBMzIgc2VsZWN0
aW9uID0gMHhmZjJiOGZmZjsKLQogY29uc3QgUkdCQTMyIGJsYWNrUGVuID0gQ29sb3I6OmJsYWNr
OwogY29uc3QgUkdCQTMyIGZvY3VzUmluZ1BlbiA9IDB4ZmZhM2M4ZmU7CiBjb25zdCBSR0JBMzIg
YWN0aXZlVGV4dENvbG9yID0gMHhmZmZhZmFmYTsKQEAgLTE4MiwxMCArMTgwLDExIEBAIHN0YXRp
YyB2b2lkIGRyYXdDb250cm9sKEdyYXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgSW1hZ2UqIGltZykKICAgICBnYy0+ZHJhd0ltYWdlKGltZywgQ29sb3JTcGFjZURldmlj
ZVJHQiwgcmVjdCwgc3JjUmVjdCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdUaHJlZVNsaWNlKEdy
YXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IEludFJlY3QmIHJlY3QsIEltYWdlKiBpbWcsIGludCBz
bGljZSkKK3N0YXRpYyB2b2lkIGRyYXdUaHJlZVNsaWNlSG9yaXpvbnRhbChHcmFwaGljc0NvbnRl
eHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0LCBJbWFnZSogaW1nLCBpbnQgc2xpY2UpCiB7CiAg
ICAgaWYgKCFpbWcpCiAgICAgICAgIHJldHVybjsKKwogICAgIEZsb2F0U2l6ZSBkc3RTbGljZShy
ZWN0LmhlaWdodCgpIC8gMiwgcmVjdC5oZWlnaHQoKSk7CiAgICAgRmxvYXRSZWN0IHNyY1JlY3Qo
MCwgMCwgc2xpY2UsIGltZy0+aGVpZ2h0KCkpOwogICAgIEZsb2F0UmVjdCBkc3RSZWN0KHJlY3Qu
bG9jYXRpb24oKSwgZHN0U2xpY2UpOwpAQCAtMjAwLDYgKzE5OSwyNSBAQCBzdGF0aWMgdm9pZCBk
cmF3VGhyZWVTbGljZShHcmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0LCBJ
bWFnZSogaW1nLAogICAgIGdjLT5kcmF3SW1hZ2UoaW1nLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
c3RSZWN0LCBzcmNSZWN0KTsKIH0KIAorc3RhdGljIHZvaWQgZHJhd1RocmVlU2xpY2VWZXJ0aWNh
bChHcmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0LCBJbWFnZSogaW1nLCBp
bnQgc2xpY2UpCit7CisgICAgaWYgKCFpbWcpCisgICAgICAgIHJldHVybjsKKworICAgIEZsb2F0
U2l6ZSBkc3RTbGljZShyZWN0LndpZHRoKCksIHJlY3Qud2lkdGgoKSAvIDIpOworICAgIEZsb2F0
UmVjdCBzcmNSZWN0KDAsIDAsIGltZy0+d2lkdGgoKSwgc2xpY2UpOworICAgIEZsb2F0UmVjdCBk
c3RSZWN0KHJlY3QubG9jYXRpb24oKSwgZHN0U2xpY2UpOworCisgICAgZ2MtPmRyYXdJbWFnZShp
bWcsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QpOworICAgIHNyY1JlY3Qu
bW92ZSgwLCBpbWctPmhlaWdodCgpIC0gc3JjUmVjdC5oZWlnaHQoKSk7CisgICAgZHN0UmVjdC5t
b3ZlKDAsIHJlY3QuaGVpZ2h0KCkgLSBkc3RSZWN0LmhlaWdodCgpKTsKKyAgICBnYy0+ZHJhd0lt
YWdlKGltZywgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCk7CisKKyAgICBz
cmNSZWN0ID0gRmxvYXRSZWN0KDAsIHNsaWNlLCBpbWctPndpZHRoKCksIGltZy0+aGVpZ2h0KCkg
LSAyICogc2xpY2UpOworICAgIGRzdFJlY3QgPSBGbG9hdFJlY3QocmVjdC54KCksIHJlY3QueSgp
ICsgZHN0U2xpY2UuaGVpZ2h0KCksIGRzdFNsaWNlLndpZHRoKCksIHJlY3QuaGVpZ2h0KCkgLSAy
ICogZHN0U2xpY2UuaGVpZ2h0KCkpOworICAgIGdjLT5kcmF3SW1hZ2UoaW1nLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0KTsKK30KKwogc3RhdGljIHZvaWQgZHJhd05pbmVT
bGljZShHcmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0LCBkb3VibGUgc2Nh
bGUsIEltYWdlKiBpbWcsIGludCBzbGljZSkKIHsKICAgICBpZiAoIWltZykKQEAgLTcyMiwyNyAr
NzQwLDMzIEBAIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludFNsaWRlclRyYWNrKFJl
bmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluCiAKIGJvb2wgUmVuZGVyVGhlbWVCbGFj
a0JlcnJ5OjpwYWludFNsaWRlclRyYWNrUmVjdChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3Qg
UGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIHJldHVybiBwYWlu
dFNsaWRlclRyYWNrUmVjdChvYmplY3QsIGluZm8sIHJlY3QsIHJhbmdlU2xpZGVyUmVndWxhclRv
cE91dGxpbmUsIHJhbmdlU2xpZGVyUmVndWxhckJvdHRvbU91dGxpbmUsCi0gICAgICAgICAgICAg
ICAgcmFuZ2VTbGlkZXJSZWd1bGFyVG9wLCByYW5nZVNsaWRlclJlZ3VsYXJCb3R0b20pOworICAg
IHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGJhY2tncm91bmQ7CisgICAgaWYgKCFiYWNrZ3JvdW5kKQor
ICAgICAgICBiYWNrZ3JvdW5kID0gbG9hZEltYWdlKCJjb3JlX3NsaWRlcl9iZyIpOworICAgIHJl
dHVybiBwYWludFNsaWRlclRyYWNrUmVjdChvYmplY3QsIGluZm8sIHJlY3QsIGJhY2tncm91bmQu
Z2V0KCkpOwogfQogCi1ib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRTbGlkZXJUcmFj
a1JlY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3Qg
SW50UmVjdCYgcmVjdCwKLSAgICAgICAgUkdCQTMyIHN0cm9rZUNvbG9yU3RhcnQsIFJHQkEzMiBz
dHJva2VDb2xvckVuZCwgUkdCQTMyIGZpbGxDb2xvclN0YXJ0LCBSR0JBMzIgZmlsbENvbG9yRW5k
KQorYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50U2xpZGVyVHJhY2tSZWN0KFJlbmRl
ck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJl
Y3QsIEltYWdlKiBpbmFjdGl2ZSkKIHsKICAgICBBU1NFUlQoaW5mby5jb250ZXh0KTsKICAgICBp
bmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBpbmZv
LmNvbnRleHQ7CiAKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlPiBkaXNhYmxlZCwgaW5hY3RpdmU7
Ci0gICAgaWYgKCFkaXNhYmxlZCkgeworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGRpc2FibGVk
OworICAgIGlmICghZGlzYWJsZWQpCiAgICAgICAgIGRpc2FibGVkID0gbG9hZEltYWdlKCJjb3Jl
X3NsaWRlcl9maWxsX2Rpc2FibGVkIik7Ci0gICAgICAgIGluYWN0aXZlID0gbG9hZEltYWdlKCJj
b3JlX3NsaWRlcl9iZyIpOwotICAgIH0KIAotICAgIGlmIChpc0VuYWJsZWQob2JqZWN0KSkKLSAg
ICAgICAgZHJhd1RocmVlU2xpY2UoY29udGV4dCwgcmVjdCwgaW5hY3RpdmUuZ2V0KCksIG1lZGl1
bVNsaWNlKTsKLSAgICBlbHNlCi0gICAgICAgIGRyYXdUaHJlZVNsaWNlKGNvbnRleHQsIHJlY3Qs
IGRpc2FibGVkLmdldCgpLCAoc21hbGxTbGljZSAtIDEpKTsKKyAgICBpZiAocmVjdC53aWR0aCgp
ID4gcmVjdC5oZWlnaHQoKSkgeworICAgICAgICBpZiAoaXNFbmFibGVkKG9iamVjdCkpCisgICAg
ICAgICAgICBkcmF3VGhyZWVTbGljZUhvcml6b250YWwoY29udGV4dCwgcmVjdCwgaW5hY3RpdmUs
IG1lZGl1bVNsaWNlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZHJhd1RocmVlU2xpY2VI
b3Jpem9udGFsKGNvbnRleHQsIHJlY3QsIGRpc2FibGVkLmdldCgpLCAoc21hbGxTbGljZSAtIDEp
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoaXNFbmFibGVkKG9iamVjdCkpCisgICAgICAg
ICAgICBkcmF3VGhyZWVTbGljZVZlcnRpY2FsKGNvbnRleHQsIHJlY3QsIGluYWN0aXZlLCBtZWRp
dW1TbGljZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRyYXdUaHJlZVNsaWNlVmVydGlj
YWwoY29udGV4dCwgcmVjdCwgZGlzYWJsZWQuZ2V0KCksIChzbWFsbFNsaWNlIC0gMSkpOworICAg
IH0KIAogICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC05NzAs
MTQgKzk5NCwyMiBAQCBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVNsaWRl
clRyYWNrKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYQogICAgIEludFJlY3QgYnVmZmVy
ZWQoeCwgeSwgd0xvYWRlZCwgaCk7CiAKICAgICAvLyBUaGlzIGlzIHRvIHBhaW50IG1haW4gc2xp
ZGVyIGJhci4KLSAgICBib29sIHJlc3VsdCA9IHBhaW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwg
cGFpbnRJbmZvLCByZWN0Mik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZT4gdHJhY2tJbWFnZTsK
KyAgICBpZiAoIXRyYWNrSW1hZ2UpCisgICAgICAgIHRyYWNrSW1hZ2UgPSBsb2FkSW1hZ2UoImNv
cmVfc2xpZGVyX21lZGlhX2JnIik7CisgICAgYm9vbCByZXN1bHQgPSBwYWludFNsaWRlclRyYWNr
UmVjdChvYmplY3QsIHBhaW50SW5mbywgcmVjdDIsIHRyYWNrSW1hZ2UuZ2V0KCkpOwogCiAgICAg
aWYgKGxvYWRlZCA+IDAgfHwgcG9zaXRpb24gPiAwKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgdG8g
cGFpbnQgYnVmZmVyZWQgYmFyLgotICAgICAgICBwYWludFNsaWRlclRyYWNrUmVjdChvYmplY3Qs
IHBhaW50SW5mbywgYnVmZmVyZWQsIENvbG9yOjpkYXJrR3JheSwgQ29sb3I6OmRhcmtHcmF5LCBD
b2xvcjo6ZGFya0dyYXksIENvbG9yOjpkYXJrR3JheSk7CisgICAgICAgIHN0YXRpYyBSZWZQdHI8
SW1hZ2U+IGJ1ZmZlcmVkSW1hZ2UsIHBsYXllZEltYWdlOworICAgICAgICBpZiAoIWJ1ZmZlcmVk
SW1hZ2UpIHsKKyAgICAgICAgICAgIGJ1ZmZlcmVkSW1hZ2UgPSBsb2FkSW1hZ2UoImNvcmVfc2xp
ZGVyX2J1ZmZlcmVkX2JnIik7CisgICAgICAgICAgICBwbGF5ZWRJbWFnZSA9IGxvYWRJbWFnZSgi
Y29yZV9zbGlkZXJfcGxheWVkX2JnIik7CisgICAgICAgIH0KKyAgICAgICAgcGFpbnRTbGlkZXJU
cmFja1JlY3Qob2JqZWN0LCBwYWludEluZm8sIGJ1ZmZlcmVkLCBidWZmZXJlZEltYWdlLmdldCgp
KTsKIAogICAgICAgICAvLyBUaGlzIGlzIHRvIHBhaW50IHBsYXllZCBwYXJ0IG9mIGJhciAobGVm
dCBvZiBzbGlkZXIgdGh1bWIpIHVzaW5nIHNlbGVjdGlvbiBjb2xvci4KLSAgICAgICAgcGFpbnRT
bGlkZXJUcmFja1JlY3Qob2JqZWN0LCBwYWludEluZm8sIHBsYXllZCwgc2VsZWN0aW9uLCBzZWxl
Y3Rpb24sIHNlbGVjdGlvbiwgc2VsZWN0aW9uKTsKKyAgICAgICAgcGFpbnRTbGlkZXJUcmFja1Jl
Y3Qob2JqZWN0LCBwYWludEluZm8sIHBsYXllZCwgcGxheWVkSW1hZ2UuZ2V0KCkpOwogICAgIH0K
ICAgICByZXR1cm4gcmVzdWx0OwogCkBAIC05OTYsMjQgKzEwMjgsOSBAQCBib29sIFJlbmRlclRo
ZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVNsaWRlclRodW1iKFJlbmRlck9iamVjdCogb2JqZWN0
LCBjb25zdCBQYQogICAgIGlmICghc2xpZGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBmbG9hdCBmdWxsU2NyZWVuTXVsdGlwbGllciA9IGRldGVybWluZUZ1bGxTY3JlZW5NdWx0aXBs
aWVyKHRvRWxlbWVudChzbGlkZXItPm5vZGUoKSkpOworICAgIHN0YXRpYyBJbWFnZSogbWVkaWFW
b2x1bWVUaHVtYiA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgidm9sdW1lX3RodW1iIiku
bGVha1JlZigpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKLSAgICBQYXRoIG1l
ZGlhVGh1bWJSb3VuZGVkUmVjdGFuZ2xlOwotICAgIG1lZGlhVGh1bWJSb3VuZGVkUmVjdGFuZ2xl
LmFkZFJvdW5kZWRSZWN0KHJlY3QsIEZsb2F0U2l6ZShtZWRpYVNsaWRlclRodW1iUmFkaXVzICog
ZnVsbFNjcmVlbk11bHRpcGxpZXIsIG1lZGlhU2xpZGVyVGh1bWJSYWRpdXMgKiBmdWxsU2NyZWVu
TXVsdGlwbGllcikpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xp
ZFN0cm9rZSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygwLjUp
OwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2ssIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwotCi0gICAgaWYgKGlzUHJlc3NlZChvYmplY3QpIHx8IGlzSG92
ZXJlZChvYmplY3QpIHx8IHNsaWRlci0+aW5EcmFnTW9kZSgpKSB7Ci0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQoc2VsZWN0aW9u
LCBDb2xvcihzZWxlY3Rpb24pLmRhcmsoKS5yZ2IoKSwKLSAgICAgICAgICAgICAgICByZWN0Lm1h
eFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSkpOwotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3Jh
ZGllbnQoQ29sb3I6OndoaXRlLCBDb2xvcihDb2xvcjo6d2hpdGUpLmRhcmsoKS5yZ2IoKSwKLSAg
ICAgICAgICAgICAgICByZWN0Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIo
KSkpOwotICAgIH0KLSAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFBhdGgobWVkaWFUaHVtYlJv
dW5kZWRSZWN0YW5nbGUpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CisgICAg
ZHJhd0NvbnRyb2wocGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsIG1lZGlhVm9sdW1lVGh1bWIpOwog
CiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQpAQCAtMTAzNSw3ICsxMDUyLDExIEBAIGJvb2wgUmVu
ZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhVm9sdW1lU2xpZGVyVHJhY2soUmVuZGVyT2Jq
ZWN0KiBvYmplY3QsIGNvCiAKICAgICBJbnRSZWN0IHJlY3QyKHgsIHksIHdpZHRoLCBoZWlnaHQp
OwogCi0gICAgcmV0dXJuIHBhaW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFpbnRJbmZvLCBy
ZWN0Mik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZT4gdHJhY2tJbWFnZTsKKyAgICBpZiAoIXRy
YWNrSW1hZ2UpCisgICAgICAgIHRyYWNrSW1hZ2UgPSBsb2FkSW1hZ2UoImNvcmVfc2xpZGVyX21l
ZGlhX2JnIik7CisKKyAgICByZXR1cm4gcGFpbnRTbGlkZXJUcmFja1JlY3Qob2JqZWN0LCBwYWlu
dEluZm8sIHJlY3QyLCB0cmFja0ltYWdlLmdldCgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KG9iamVjdCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhaW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnku
aAppbmRleCA3MzY4ZGY5MDU1YzVhOTQ1ZjQ0NDY0MmNiNjRjNDI4MTA3ZjM2MWRkLi44MjEwOGM3
NzgwNjY3OWY4ZjIzYjgyNWEwMDU5NGM4ZmIyYTFlYmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmgK
QEAgLTEwNyw4ICsxMDcsOSBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBwYWludFRleHRGaWVsZE9y
VGV4dEFyZWFPclNlYXJjaEZpZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKTsKICAgICBib29sIHBhaW50U2xpZGVyVHJhY2tSZWN0KFJlbmRlck9iamVj
dCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICBib29sIHBhaW50U2xp
ZGVyVHJhY2tSZWN0KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmLCBSR0JBMzIgc3Ryb2tlQ29sb3JTdGFydCwKLSAgICAgICAgICAgICAgICBSR0JBMzIgc3Ry
b2tlQ29sb3JFbmQsIFJHQkEzMiBmaWxsQ29sb3JTdGFydCwgUkdCQTMyIGZpbGxDb2xvckVuZCk7
CisKKyAgICBib29sIHBhaW50U2xpZGVyVHJhY2tSZWN0KFJlbmRlck9iamVjdCosIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmLCBJbWFnZSopOworICAgIEludFJlY3QgY29udmVydFRv
UGFpbnRpbmdSZWN0KFJlbmRlck9iamVjdCogaW5wdXRSZW5kZXJlciwgY29uc3QgUmVuZGVyT2Jq
ZWN0KiBwYXJ0UmVuZGVyZXIsIExheW91dFJlY3QgcGFydFJlY3QsIGNvbnN0IEludFJlY3QmIGxv
Y2FsT2Zmc2V0KSBjb25zdDsKIAogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173708</attachid>
            <date>2012-11-12 13:32:13 -0800</date>
            <delta_ts>2012-11-14 18:01:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100760-20121112163016.patch</filename>
            <type>text/plain</type>
            <size>1524</size>
            <attacher name="Tiancheng Jiang">tijiang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjgyN2Y0ZGFkODk1MTNl
NTg3MDcyMDUxNGFlN2RlODA1ZDAyOGRjNi4uMDBhYmZjNTAxNGZhYzg1ZTIzMjFlYzY0ZWY5NWZl
OTJiZmVlNzE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTExLTEyICBUaWFu
Y2hlbmcgSmlhbmcgIDx0aWppYW5nQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFVw
ZGF0ZSBCQjEwIGZvcm0gdGhlbWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDA3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSSU0gUFIgMjM3MDAzCisgICAgICAgIEludGVybmFsbHkgUmV2aWV3ZWQg
YnkgRWxpIEZpZGxlci4KKyAgICAgICAgU2luY2Ugd2Ugbm9sb25nZXIgdXNlIHNtYWxsIGZvbnQg
Zm9yIGZvcm0gY29udHJvbHMsIGFkanVzdCBwYWRkaW5nRGl2aXNvcgorICAgICAgICByYXRpbyB0
byBkZWNyZWFzZSB0aGUgcGFkZGluZyB2YWx1ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2JsYWNr
YmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAy
MDEyLTExLTEyICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+
CiAKICAgICAgICAgRml4IG1lbW9yeSBsZWFrIGluIGNyZWF0ZVN1cmZhY2VGb3JCYWNraW5nU3Rv
cmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5k
ZXJUaGVtZUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwCmluZGV4IDA3OGZlNGExZWRkODE5ODU3MTk4ZTg4
Y2I4OTM3ZDdlZmZlZjM5M2YuLjdiZmI0OGQ3MmRjOGI1MDM5NTk2MTM5NmQ5OGM3ZDk5M2RlMTU0
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVy
VGhlbWVCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgY29uc3QgZmxv
YXQgY2hlY2tib3hTdHJva2VUaGlja25lc3MgPSA2LjU7CiBjb25zdCBmbG9hdCByYWRpb0J1dHRv
bkNoZWNrU3RhdGVTY2FsZXIgPSA3IC8gMzAuMDsKIAogLy8gTXVsdGlwbGllcnMKLWNvbnN0IHVu
c2lnbmVkIHBhZGRpbmdEaXZpc29yID0gNTsKK2NvbnN0IHVuc2lnbmVkIHBhZGRpbmdEaXZpc29y
ID0gMTA7CiBjb25zdCB1bnNpZ25lZCBmdWxsU2NyZWVuRW5sYXJnZW1lbnRGYWN0b3IgPSAyOwog
Y29uc3QgZmxvYXQgc2NhbGVGYWN0b3JUaHJlc2hvbGQgPSAyLjA7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174305</attachid>
            <date>2012-11-14 18:01:27 -0800</date>
            <delta_ts>2012-11-28 12:07:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100760-20121114205926.patch</filename>
            <type>text/plain</type>
            <size>3716</size>
            <attacher name="Tiancheng Jiang">tijiang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzhjMTcyOTU5NThjMTU1
MjEwYjM5Y2MyMmJmOTJhYjY4Yzg0NjMxNC4uYWQ5MDZlNGZhZjJlNjZkNzg3YzBkNjFlYzI1NDIy
Nzk2YTk3M2Q5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTExLTE0ICBUaWFu
Y2hlbmcgSmlhbmcgIDx0aWppYW5nQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFVw
ZGF0ZSBCQjEwIGZvcm0gdGhlbWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDA3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSSU0gUFIgMjI1NzU1CisgICAgICAgIEludGVybmFsbHkgUmV2aWV3ZWQg
YnkgRWxpIEZpZGxlci4KKyAgICAgICAgVXBkYXRlIGNoZWNrYm94LCByYWRpbyBhbmQgbWVudWxp
c3QgYnV0dG9uIHN0eWxlLiBBZGp1c3QgYm9yZGVyIHdpZHRoCisgICAgICAgIGFuZCBsaW5lIGhl
aWdodC4KKworICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0Jl
cnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0
TWVudUxpc3RCdXR0b25TdHlsZSk6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5k
ZXJUaGVtZUJsYWNrQmVycnkuaDoKKyAgICAgICAgKFJlbmRlclRoZW1lQmxhY2tCZXJyeSk6CisK
IDIwMTItMTEtMTQgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW1F0XSBVc2UgYSBub2RlIGltYWdlIGlmIHRoZXJlIGlzIG5vIGRyYWcgaW1hZ2Ug
c2V0IGZvciBEcmFnJkRyb3AKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcAppbmRleCA3YmZiNDhkNzJk
YzhiNTAzOTU5NjEzOTZkOThjN2Q5OTNkZTE1NDc1Li4wZTIyZmQwNjU2MzE4NmUyY2ZmMjc1ZWQz
YzY4NzlmZmExMDI2ZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFj
a2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwCkBAIC00NjEsNyArNDYx
LDggQEAgdm9pZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5
bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWwKICAgICBjb25zdCBpbnQgbWluSGVpZ2h0ID0g
c3R5bGUtPmZvbnRTaXplKCkgKiAyOwogCiAgICAgc3R5bGUtPnJlc2V0UGFkZGluZygpOwotICAg
IHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKEF1dG8pKTsKKyAgICBzdHlsZS0+c2V0TWluSGVpZ2h0
KExlbmd0aChtaW5IZWlnaHQsIEZpeGVkKSk7CisgICAgc3R5bGUtPnNldExpbmVIZWlnaHQoUmVu
ZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOwogCiAgICAgc3R5bGUtPnNldFBhZGRpbmdS
aWdodChMZW5ndGgobWluSGVpZ2h0ICsgcGFkZGluZ1JpZ2h0LCBGaXhlZCkpOwogICAgIHN0eWxl
LT5zZXRQYWRkaW5nTGVmdChMZW5ndGgocGFkZGluZ0xlZnQsIEZpeGVkKSk7CkBAIC02MjksMjYg
KzYzMCw2IEBAIHZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RNZW51TGlzdFN0eWxl
KFN0eWxlUmVzb2x2ZXIqIGNzcywgUmVuZGVyU3R5bGUqCiAgICAgYWRqdXN0TWVudUxpc3RCdXR0
b25TdHlsZShjc3MsIHN0eWxlLCBlbGVtZW50KTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUJsYWNr
QmVycnk6OmFkanVzdENoZWNrYm94U3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBz
dHlsZSwgRWxlbWVudCopIGNvbnN0Ci17Ci0gICAgc2V0Q2hlY2tib3hTaXplKHN0eWxlKTsKLSAg
ICBzdHlsZS0+c2V0Qm94U2hhZG93KG51bGxwdHIpOwotICAgIExlbmd0aCBtYXJnaW4obWFyZ2lu
U2l6ZSwgRml4ZWQpOwotICAgIHN0eWxlLT5zZXRNYXJnaW5Cb3R0b20obWFyZ2luKTsKLSAgICBz
dHlsZS0+c2V0TWFyZ2luUmlnaHQobWFyZ2luKTsKLSAgICBzdHlsZS0+c2V0Q3Vyc29yKENVUlNP
Ul9XRUJLSVRfR1JBQik7Ci19Ci0KLXZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RS
YWRpb1N0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBj
b25zdAotewotICAgIHNldFJhZGlvU2l6ZShzdHlsZSk7Ci0gICAgc3R5bGUtPnNldEJveFNoYWRv
dyhudWxscHRyKTsKLSAgICBMZW5ndGggbWFyZ2luKG1hcmdpblNpemUsIEZpeGVkKTsKLSAgICBz
dHlsZS0+c2V0TWFyZ2luQm90dG9tKG1hcmdpbik7Ci0gICAgc3R5bGUtPnNldE1hcmdpblJpZ2h0
KG1hcmdpbik7Ci0gICAgc3R5bGUtPnNldEN1cnNvcihDVVJTT1JfV0VCS0lUX0dSQUIpOwotfQot
CiBzdGF0aWMgSW50UmVjdCBjb21wdXRlTWVudUxpc3RBcnJvd0J1dHRvblJlY3QoY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKICAgICAvLyBGSVhNRTogVGhlIG1lbnUgbGlzdCBhcnJvdyBidXR0b24g
c2hvdWxkIGhhdmUgYSBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRoICh0byBlbnN1cmUgdXNhYmls
aXR5KSBvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9S
ZW5kZXJUaGVtZUJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmgKaW5kZXggODIxMDhjNzc4MDY2NzlmOGYyM2I4MjVh
MDA1OTRjOGZiMmExZWJjNi4uNTA3ZDQ1MTM0OGQzNWZlNDU0NjU0MDEwOWJhMzc1NmQ2MzY4NWVl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJU
aGVtZUJsYWNrQmVycnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oCkBAIC03MSw4ICs3MSw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihSZW5kZXJPYmplY3QqLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRq
dXN0TWVudUxpc3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVt
ZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdENoZWNrYm94U3R5bGUoU3R5bGVS
ZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCBhZGp1c3RSYWRpb1N0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQq
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRq
dXN0TWVkaWFDb250cm9sU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVu
dCopIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176538</attachid>
            <date>2012-11-28 12:07:34 -0800</date>
            <delta_ts>2012-11-29 07:54:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100760-20121128150509.patch</filename>
            <type>text/plain</type>
            <size>3642</size>
            <attacher name="Tiancheng Jiang">tijiang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNhODYyODJhODM4Zjcw
MmRkYWYyMDhmM2VlYmJhYzliNWE4MzY1NS4uMjEzZTgzZjE3ZmI5YWFmNjAwNzQ3M2M1ZTdmNzNm
N2YwMmI0ZThkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTExLTI4ICBUaWFu
Y2hlbmcgSmlhbmcgIDx0aWppYW5nQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFVw
ZGF0ZSBCQjEwIGZvcm0gdGhlbWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDA3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbnRlcm5hbGx5IFJldmlld2VkIGJ5IEVsaSBGaWRsZXIuCisgICAgICAg
IFNldCB0ZXh0IGNvbG9yIGFmdGVyIGJ1dHRvbnMgYXJlIHByZXNzZWQuCisKKyAgICAgICAgKiBj
c3MvdGhlbWVCbGFja0JlcnJ5LmNzczoKKyAgICAgICAgKGlucHV0W3R5cGU9ImJ1dHRvbiJdOmFj
dGl2ZSwgaW5wdXRbdHlwZT0ic3VibWl0Il06YWN0aXZlLCBpbnB1dFt0eXBlPSJyZXNldCJdOmFj
dGl2ZSwgaW5wdXRbdHlwZT0iZmlsZSJdOmFjdGl2ZTo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0
b24sIGJ1dHRvbjphY3RpdmUpOgorICAgICAgICAoc2VsZWN0OmFjdGl2ZSk6CisgICAgICAgICog
cGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50
QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRN
ZW51TGlzdCk6CisKIDIwMTItMTEtMjggIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNv
bT4KIAogICAgICAgICBDYWxsaW5nIC5yZW1vdmVDdWUoKSBmb3IgYSBjdWUgdGhhdCB3YXMgbmV2
ZXIgYWRkZWQgc2hvdWxkIHJhaXNlIGEgTk9UX0ZPVU5EX0VSUgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL3RoZW1lQmxhY2tCZXJyeS5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdGhl
bWVCbGFja0JlcnJ5LmNzcwppbmRleCA4Y2QyZTBlMWMxODkwZjdlNGU0MGI5OTA0MWU5M2ZkYTE3
M2RlNzEwLi5hOGE2NTA5YThkN2RmY2IxZjVkZDlkNzY3MjYwNjY1MDMzNDIwZTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdGhlbWVCbGFja0JlcnJ5LmNzcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvdGhlbWVCbGFja0JlcnJ5LmNzcwpAQCAtMjAsMTAgKzIwLDE4IEBAIHRleHRh
cmVhIHsKICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogfQogCitpbnB1dFt0eXBlPSJidXR0
b24iXTphY3RpdmUsIGlucHV0W3R5cGU9InN1Ym1pdCJdOmFjdGl2ZSwgaW5wdXRbdHlwZT0icmVz
ZXQiXTphY3RpdmUsIGlucHV0W3R5cGU9ImZpbGUiXTphY3RpdmU6Oi13ZWJraXQtZmlsZS11cGxv
YWQtYnV0dG9uLCBidXR0b246YWN0aXZlIHsKKyAgICBjb2xvcjogI2ZhZmFmYTsKK30KKwogc2Vs
ZWN0IHsKICAgICBib3JkZXItcmFkaXVzOiAwOwogfQogCitzZWxlY3Q6YWN0aXZlIHsKKyAgICBj
b2xvcjogI2ZhZmFmYTsKK30KKwogc2VsZWN0W3NpemU9IjAiXSwKIHNlbGVjdFtzaXplPSIxIl0g
ewogICAgIGJvcmRlci1yYWRpdXM6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAKaW5kZXggMGUy
MmZkMDY1NjMxODZlMmNmZjI3NWVkM2M2ODc5ZmZhMTAyNmVkMS4uOTc1ZDFlNGYwMTVkYWViNDEz
YzliZTVhN2JkMzEyNDJhNjkzODQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcApAQCAtMTIz
LDcgKzEyMyw2IEBAIGNvbnN0IFJHQkEzMiBkcmFnUm9sbERhcmsgPSAweGZmNjlhOGZmOwogCiBj
b25zdCBSR0JBMzIgYmxhY2tQZW4gPSBDb2xvcjo6YmxhY2s7CiBjb25zdCBSR0JBMzIgZm9jdXNS
aW5nUGVuID0gMHhmZmEzYzhmZTsKLWNvbnN0IFJHQkEzMiBhY3RpdmVUZXh0Q29sb3IgPSAweGZm
ZmFmYWZhOwogCiBmbG9hdCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmRlZmF1bHRGb250U2l6ZSA9
IDE2OwogCkBAIC02MTcsNyArNjE2LDYgQEAgYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBh
aW50QnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGkKICAgICAg
ICAgZHJhd05pbmVTbGljZShjb250ZXh0LCByZWN0LCBjdG0ueFNjYWxlKCksIGRpc2FibGVkLmdl
dCgpLCBsYXJnZVNsaWNlKTsKICAgICB9IGVsc2UgaWYgKGlzUHJlc3NlZChvYmplY3QpKSB7CiAg
ICAgICAgIGRyYXdOaW5lU2xpY2UoY29udGV4dCwgcmVjdCwgY3RtLnhTY2FsZSgpLCBwcmVzc2Vk
LmdldCgpLCBsYXJnZVNsaWNlKTsKLSAgICAgICAgb2JqZWN0LT5zdHlsZSgpLT5zZXRUZXh0Rmls
bENvbG9yKGFjdGl2ZVRleHRDb2xvcik7CiAgICAgfSBlbHNlCiAgICAgICAgIGRyYXdOaW5lU2xp
Y2UoY29udGV4dCwgcmVjdCwgY3RtLnhTY2FsZSgpLCBpbmFjdGl2ZS5nZXQoKSwgbGFyZ2VTbGlj
ZSk7CiAKQEAgLTY2NCwxMCArNjYyLDkgQEAgYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBh
aW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYKICAgICAg
ICAgZHJhd05pbmVTbGljZShjb250ZXh0LCByZWN0LCBjdG0ueFNjYWxlKCksIGluYWN0aXZlLmdl
dCgpLCBsYXJnZVNsaWNlKTsKICAgICAgICAgZHJhd05pbmVTbGljZShjb250ZXh0LCByZWN0LCBj
dG0ueFNjYWxlKCksIGRpc2FibGVkLmdldCgpLCBsYXJnZVNsaWNlKTsKICAgICAgICAgZHJhd0Nv
bnRyb2woY29udGV4dCwgdG1wUmVjdCwgYXJyb3dVcC5nZXQoKSk7IC8vIEZJWE1FOiBzaG91bGQg
aGF2ZSBhIGRpc2FibGVkIGltYWdlLgotICAgIH0gZWxzZSBpZiAoaXNGb2N1c2VkKG9iamVjdCkp
IHsKKyAgICB9IGVsc2UgaWYgKGlzUHJlc3NlZChvYmplY3QpKSB7CiAgICAgICAgIGRyYXdOaW5l
U2xpY2UoY29udGV4dCwgcmVjdCwgY3RtLnhTY2FsZSgpLCBwcmVzc2VkLmdldCgpLCBsYXJnZVNs
aWNlKTsKICAgICAgICAgZHJhd0NvbnRyb2woY29udGV4dCwgdG1wUmVjdCwgYXJyb3dVcFByZXNz
ZWQuZ2V0KCkpOwotICAgICAgICBvYmplY3QtPnN0eWxlKCktPnNldFRleHRGaWxsQ29sb3IoYWN0
aXZlVGV4dENvbG9yKTsKICAgICB9IGVsc2UgewogICAgICAgICBkcmF3TmluZVNsaWNlKGNvbnRl
eHQsIHJlY3QsIGN0bS54U2NhbGUoKSwgaW5hY3RpdmUuZ2V0KCksIGxhcmdlU2xpY2UpOwogICAg
ICAgICBkcmF3Q29udHJvbChjb250ZXh0LCB0bXBSZWN0LCBhcnJvd1VwLmdldCgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176738</attachid>
            <date>2012-11-29 07:54:53 -0800</date>
            <delta_ts>2013-05-24 15:48:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100760-20121129105226.patch</filename>
            <type>text/plain</type>
            <size>4093</size>
            <attacher name="Tiancheng Jiang">tijiang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmYwNjYzMWY3NTBlZmNh
ZjRjMTI1ZjkyNDQzZTE2ZGVmYWUwYjlkMC4uY2ZiYWQxYWNmOTU3ZDE0MDMxNDNlYzMwYjA0N2Fk
MzQ5YTY2ZWMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTExLTI4ICBUaWFu
Y2hlbmcgSmlhbmcgIDx0aWppYW5nQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFVw
ZGF0ZSBCQjEwIGZvcm0gdGhlbWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDA3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbnRlcm5hbGx5IFJldmlld2VkIGJ5IEVsaSBGaWRsZXIuCisgICAgICAg
IFNldCB0ZXh0IGNvbG9yIGFmdGVyIGJ1dHRvbnMgYXJlIHByZXNzZWQuCisKKyAgICAgICAgKiBj
c3MvdGhlbWVCbGFja0JlcnJ5LmNzczoKKyAgICAgICAgKGlucHV0W3R5cGU9ImJ1dHRvbiJdOmFj
dGl2ZSwgaW5wdXRbdHlwZT0ic3VibWl0Il06YWN0aXZlLCBpbnB1dFt0eXBlPSJyZXNldCJdOmFj
dGl2ZSwgaW5wdXRbdHlwZT0iZmlsZSJdOmFjdGl2ZTo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0
b24sIGJ1dHRvbjphY3RpdmUpOgorICAgICAgICAoc2VsZWN0OmFjdGl2ZSk6CisgICAgICAgICog
cGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50
QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRN
ZW51TGlzdCk6CisKIDIwMTItMTEtMjkgIE1pa2UgV2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBUeXBvIGluICdhdXRvZm9jdXMnIHNhbmRib3hpbmcgZXJyb3IgbWVzc2FnZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90aGVtZUJsYWNrQmVycnkuY3NzIGIvU291
cmNlL1dlYkNvcmUvY3NzL3RoZW1lQmxhY2tCZXJyeS5jc3MKaW5kZXggOGNkMmUwZTFjMTg5MGY3
ZTRlNDBiOTkwNDFlOTNmZGExNzNkZTcxMC4uMmZjYWRjMGJiZTQ1YTM0YWMwZGNlOTcwZmNlYmVh
OGIyNWFiYjJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1lQmxhY2tCZXJy
eS5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1lQmxhY2tCZXJyeS5jc3MKQEAgLTIw
LDYgKzIwLDE1IEBAIHRleHRhcmVhIHsKICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogfQog
CisvKiBJZiB0aGUgc2VsZWN0IGRvIG5vdCBoYXZlIG11bHRpcGxlIG5vciBzaXplIGxhcmdlciB0
aGFuIDEgYXR0cmlidXRlLCB3aGljaCBhcmUgbWVudWxpc3QgYXBwZWFyYW5jZSwgd2Ugd2FubmEg
Y2hhbmdlIHRleHQgY29sb3Igd2hlbiBpdCBpcyBhY3RpdmVkLiAqLworaW5wdXRbdHlwZT0iYnV0
dG9uIl06YWN0aXZlLCBpbnB1dFt0eXBlPSJzdWJtaXQiXTphY3RpdmUsIGlucHV0W3R5cGU9InJl
c2V0Il06YWN0aXZlLCBpbnB1dFt0eXBlPSJmaWxlIl06YWN0aXZlOjotd2Via2l0LWZpbGUtdXBs
b2FkLWJ1dHRvbiwgYnV0dG9uOmFjdGl2ZSwgc2VsZWN0Om5vdChbbXVsdGlwbGVdKTpub3QoW3Np
emVdKTphY3RpdmUsIHNlbGVjdFtzaXplPSIwIl06YWN0aXZlLCBzZWxlY3Rbc2l6ZT0iMSJdOmFj
dGl2ZSB7CisgICAgY29sb3I6ICNmYWZhZmE7Cit9CisKK2lucHV0W3R5cGU9ImJ1dHRvbiJdOmFj
dGl2ZTpkaXNhYmxlZCwgaW5wdXRbdHlwZT0ic3VibWl0Il06YWN0aXZlOmRpc2FibGVkLCBpbnB1
dFt0eXBlPSJyZXNldCJdOmFjdGl2ZTpkaXNhYmxlZCwgaW5wdXRbdHlwZT0iZmlsZSJdOmFjdGl2
ZTpkaXNhYmxlZDo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24sIGJ1dHRvbjphY3RpdmU6ZGlz
YWJsZWQsIHNlbGVjdDpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSk6YWN0aXZlOmRpc2FibGVk
LCBzZWxlY3Rbc2l6ZT0iMCJdOmFjdGl2ZTpkaXNhYmxlZCwgc2VsZWN0W3NpemU9IjEiXTphY3Rp
dmU6ZGlzYWJsZWQgeworICAgIGNvbG9yOiBHcmF5VGV4dDsKK30KKwogc2VsZWN0IHsKICAgICBi
b3JkZXItcmFkaXVzOiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwCmluZGV4IDBlMjJmZDA2
NTYzMTg2ZTJjZmYyNzVlZDNjNjg3OWZmYTEwMjZlZDEuLjk3NWQxZTRmMDE1ZGFlYjQxM2M5YmU1
YTdiZDMxMjQyYTY5Mzg0NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAKQEAgLTEyMyw3ICsx
MjMsNiBAQCBjb25zdCBSR0JBMzIgZHJhZ1JvbGxEYXJrID0gMHhmZjY5YThmZjsKIAogY29uc3Qg
UkdCQTMyIGJsYWNrUGVuID0gQ29sb3I6OmJsYWNrOwogY29uc3QgUkdCQTMyIGZvY3VzUmluZ1Bl
biA9IDB4ZmZhM2M4ZmU7Ci1jb25zdCBSR0JBMzIgYWN0aXZlVGV4dENvbG9yID0gMHhmZmZhZmFm
YTsKIAogZmxvYXQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpkZWZhdWx0Rm9udFNpemUgPSAxNjsK
IApAQCAtNjE3LDcgKzYxNiw2IEBAIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludEJ1
dHRvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpCiAgICAgICAgIGRy
YXdOaW5lU2xpY2UoY29udGV4dCwgcmVjdCwgY3RtLnhTY2FsZSgpLCBkaXNhYmxlZC5nZXQoKSwg
bGFyZ2VTbGljZSk7CiAgICAgfSBlbHNlIGlmIChpc1ByZXNzZWQob2JqZWN0KSkgewogICAgICAg
ICBkcmF3TmluZVNsaWNlKGNvbnRleHQsIHJlY3QsIGN0bS54U2NhbGUoKSwgcHJlc3NlZC5nZXQo
KSwgbGFyZ2VTbGljZSk7Ci0gICAgICAgIG9iamVjdC0+c3R5bGUoKS0+c2V0VGV4dEZpbGxDb2xv
cihhY3RpdmVUZXh0Q29sb3IpOwogICAgIH0gZWxzZQogICAgICAgICBkcmF3TmluZVNsaWNlKGNv
bnRleHQsIHJlY3QsIGN0bS54U2NhbGUoKSwgaW5hY3RpdmUuZ2V0KCksIGxhcmdlU2xpY2UpOwog
CkBAIC02NjQsMTAgKzY2Miw5IEBAIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1l
bnVMaXN0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mCiAgICAgICAgIGRy
YXdOaW5lU2xpY2UoY29udGV4dCwgcmVjdCwgY3RtLnhTY2FsZSgpLCBpbmFjdGl2ZS5nZXQoKSwg
bGFyZ2VTbGljZSk7CiAgICAgICAgIGRyYXdOaW5lU2xpY2UoY29udGV4dCwgcmVjdCwgY3RtLnhT
Y2FsZSgpLCBkaXNhYmxlZC5nZXQoKSwgbGFyZ2VTbGljZSk7CiAgICAgICAgIGRyYXdDb250cm9s
KGNvbnRleHQsIHRtcFJlY3QsIGFycm93VXAuZ2V0KCkpOyAvLyBGSVhNRTogc2hvdWxkIGhhdmUg
YSBkaXNhYmxlZCBpbWFnZS4KLSAgICB9IGVsc2UgaWYgKGlzRm9jdXNlZChvYmplY3QpKSB7Cisg
ICAgfSBlbHNlIGlmIChpc1ByZXNzZWQob2JqZWN0KSkgewogICAgICAgICBkcmF3TmluZVNsaWNl
KGNvbnRleHQsIHJlY3QsIGN0bS54U2NhbGUoKSwgcHJlc3NlZC5nZXQoKSwgbGFyZ2VTbGljZSk7
CiAgICAgICAgIGRyYXdDb250cm9sKGNvbnRleHQsIHRtcFJlY3QsIGFycm93VXBQcmVzc2VkLmdl
dCgpKTsKLSAgICAgICAgb2JqZWN0LT5zdHlsZSgpLT5zZXRUZXh0RmlsbENvbG9yKGFjdGl2ZVRl
eHRDb2xvcik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZHJhd05pbmVTbGljZShjb250ZXh0LCBy
ZWN0LCBjdG0ueFNjYWxlKCksIGluYWN0aXZlLmdldCgpLCBsYXJnZVNsaWNlKTsKICAgICAgICAg
ZHJhd0NvbnRyb2woY29udGV4dCwgdG1wUmVjdCwgYXJyb3dVcC5nZXQoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202858</attachid>
            <date>2013-05-24 15:48:26 -0700</date>
            <delta_ts>2013-05-28 13:40:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100760-20130524184711.patch</filename>
            <type>text/plain</type>
            <size>1368</size>
            <attacher name="Tiancheng Jiang">tijiang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwNjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQ2MTMzOWEzYjVkOWNh
YjYxNDI2M2RhNTA1MGY0MjViNGRmNmIxMy4uYzEwYjgzNDYwNDQ5OWZhNGQ1NGMwMGFjNGM1ZjAy
YWM1M2I0MjE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTA1LTI0ICBUaWFu
Y2hlbmcgSmlhbmcgIDx0aWppYW5nQHJpbS5jb20+CisKKyAgICAgICAgQWRqdXN0IGRhdGUgaW5w
dXQgd2lkdGguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDA3NjAuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQmxhY2tCZXJyeSBQUiAzNDM0OTcuCisgICAgICAgIEludGVybmFsbHkgUmV2aWV3ZWQgYnkg
SmVmZiBSb2dlcnMuCisKKyAgICAgICAgU2V0IHdpZHRoIHRvIGF1dG8gdG8gZml0IHRoZSBzdHJp
bmcgbGVuZ3RoLgorCisgICAgICAgICogY3NzL3RoZW1lQmxhY2tCZXJyeS5jc3M6CisgICAgICAg
IChpbnB1dFt0eXBlPSJkYXRlIl0sIGlucHV0W3R5cGU9ImRhdGV0aW1lIl0sIGlucHV0W3R5cGU9
ImRhdGV0aW1lLWxvY2FsIl0sIGlucHV0W3R5cGU9InRpbWUiXSwgaW5wdXRbdHlwZT0ibW9udGgi
XSk6CisKIDIwMTMtMDUtMjQgIFhpYW9ibyBXYW5nICA8eGlhb2J3YW5nQGJsYWNrYmVycnkuY29t
PgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBEUlQgLSBjcmFzaGVkIG9uIEdyYXBoaWNzQ29udGV4
dDNEOjptYWtlQ29udGV4dEN1cnJlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90
aGVtZUJsYWNrQmVycnkuY3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1lQmxhY2tCZXJyeS5j
c3MKaW5kZXggOGNlNjY0MzZkNGY3YjFiZGEwZTAzMGZiZjkzY2MwNzg4NjgwNDk2ZS4uYWNkMzVm
M2ZhNjdjZWJjYmMyYTc1NjBiOGU0OTk4ZGIxOTI3ZTU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL3RoZW1lQmxhY2tCZXJyeS5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3Ro
ZW1lQmxhY2tCZXJyeS5jc3MKQEAgLTEwOSw0ICsxMDksNSBAQCBpbnB1dFt0eXBlPSJkYXRlIl0s
IGlucHV0W3R5cGU9ImRhdGV0aW1lIl0sIGlucHV0W3R5cGU9ImRhdGV0aW1lLWxvY2FsIl0sIGlu
cHV0WwogICAgIGZvbnQtZmFtaWx5OiAiU2xhdGUgUHJvIjsKICAgICAtd2Via2l0LWFwcGVhcmFu
Y2U6IGJ1dHRvbjsKICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgd2lkdGg6YXV0bzsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203083</attachid>
            <date>2013-05-28 13:40:33 -0700</date>
            <delta_ts>2013-05-29 10:41:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100760-20130528163859.patch</filename>
            <type>text/plain</type>
            <size>1377</size>
            <attacher name="Tiancheng Jiang">tijiang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwODI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRjY2M1M2IxNjNjZmQ0
ZDg1NjlkZjc0Y2U3ZTViYjQzNWViOWQ5MS4uMThlZWZjZjhkMzkwMzEyYjhmODhlNzAxMjBjNDc2
MzhmZjk3Zjk2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTA1LTI4ICBUaWFu
Y2hlbmcgSmlhbmcgIDx0aWppYW5nQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIERh
dGV0aW1lIHN0cmluZyBpcyBub3QgY2VudHJlZCBpbiBmb3JtIGNvbnRyb2xzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNzYwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmxhY2tCZXJyeSBQUiAzNDM1
MTIKKyAgICAgICAgSW50ZXJuYWxseSBSZXZpZXdlZCBieSBKZWZmIFJvZ2Vycy4KKworICAgICAg
ICBBZGp1c3QgbWFyZ2luIGZvciBpbm5lciB0ZXh0IG5vZGUgb2YgZGF0ZXRpbWUgZm9ybSBjb250
cm9scy4KKworICAgICAgICAqIGNzcy90aGVtZUJsYWNrQmVycnkuY3NzOgorICAgICAgICAoaW5w
dXQ6Oi13ZWJraXQtZGF0ZS1hbmQtdGltZS12YWx1ZSk6CisKIDIwMTMtMDUtMjggIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggaW4gRHVtcFJlbmRlclRy
ZWUgYXQgY29tLmFwcGxlLldlYkNvcmU6IFdlYkNvcmU6OlJlbmRlclRleHRUcmFja0N1ZTo6cmVw
b3NpdGlvbkdlbmVyaWNDdWUgKyAxNTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90
aGVtZUJsYWNrQmVycnkuY3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1lQmxhY2tCZXJyeS5j
c3MKaW5kZXggYWNkMzVmM2ZhNjdjZWJjYmMyYTc1NjBiOGU0OTk4ZGIxOTI3ZTU4MC4uZjU0NjVh
YmI4NDhlZGYxNjM1OThlMGQwNzU4Zjk1NzUwZDVlNmZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL3RoZW1lQmxhY2tCZXJyeS5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3Ro
ZW1lQmxhY2tCZXJyeS5jc3MKQEAgLTExMSwzICsxMTEsNyBAQCBpbnB1dFt0eXBlPSJkYXRlIl0s
IGlucHV0W3R5cGU9ImRhdGV0aW1lIl0sIGlucHV0W3R5cGU9ImRhdGV0aW1lLWxvY2FsIl0sIGlu
cHV0WwogICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICB3aWR0aDphdXRvOwogfQorCitpbnB1
dDo6LXdlYmtpdC1kYXRlLWFuZC10aW1lLXZhbHVlIHsKKyAgICBtYXJnaW46IDFweCA2cHggMXB4
IDZweDsKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>