<?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>99438</bug_id>
          
          <creation_ts>2012-10-16 02:03:03 -0700</creation_ts>
          <short_desc>[WK2][WTR] Text input controller needs selectedRange implementation</short_desc>
          <delta_ts>2014-04-16 10:25:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>UNCONFIRMED</bug_status>
          <resolution></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>
          
          <blocked>42337</blocked>
    
    <blocked>100219</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Mariusz Grzegorczyk">mariusz.g</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cshu</cc>
    
    <cc>dpranke</cc>
    
    <cc>enrica</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jussi.kukkonen</cc>
    
    <cc>kenneth</cc>
    
    <cc>krit</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>tasak</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>742974</commentid>
    <comment_count>0</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-10-16 02:03:03 -0700</bug_when>
    <thetext>Because of missing selectedRange() implementation following test doesn&apos;t pass:
editing/selection/mixed-editability-10.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747646</commentid>
    <comment_count>1</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-10-22 09:58:05 -0700</bug_when>
    <thetext>Tests which uses textInputController.selectedRange:
editing/selection/5825350-1.html
editing/selection/5825350-2.html
editing/selection/extend-by-sentence-002.html
editing/selection/mixed-editability-10.html
editing/selection/move-left-right.html
platform/mac/editing/input/text-input-controller.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750552</commentid>
    <comment_count>2</comment_count>
      <attachid>170588</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-10-25 01:41:24 -0700</bug_when>
    <thetext>Created attachment 170588
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750606</commentid>
    <comment_count>3</comment_count>
      <attachid>170588</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-25 03:13:00 -0700</bug_when>
    <thetext>Comment on attachment 170588
patch

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

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:3334
&gt; +    WebCore::ExceptionCode ec;

Shouldn&apos;t we handle error case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750741</commentid>
    <comment_count>4</comment_count>
      <attachid>170588</attachid>
    <who name="Jussi Kukkonen (jku)">jussi.kukkonen</who>
    <bug_when>2012-10-25 06:24:22 -0700</bug_when>
    <thetext>Comment on attachment 170588
patch

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

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:3314
&gt; +bool WebPage::selectedRangeForTesting(int* start, int* length)

Is there a reason for not just moving WebPage::getSelectedRange() from WebPageMac.mm to here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751779</commentid>
    <comment_count>5</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-10-26 03:24:09 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 170588 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170588&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:3314
&gt; &gt; +bool WebPage::selectedRangeForTesting(int* start, int* length)
&gt; 
&gt; Is there a reason for not just moving WebPage::getSelectedRange() from WebPageMac.mm to here?

I&apos;m afraid of NSRange usage in Mac port. There failure is marked as location = NSNotFound</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751807</commentid>
    <comment_count>6</comment_count>
    <who name="Jussi Kukkonen (jku)">jussi.kukkonen</who>
    <bug_when>2012-10-26 03:44:25 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:3314
&gt; &gt; &gt; +bool WebPage::selectedRangeForTesting(int* start, int* length)
&gt; &gt; 
&gt; &gt; Is there a reason for not just moving WebPage::getSelectedRange() from WebPageMac.mm to here?
&gt; 
&gt; I&apos;m afraid of NSRange usage in Mac port. There failure is marked as location = NSNotFound

There&apos;s only one user for this function:
  WKView selectedRange
so assuming you modified getSelectedRange to return a boolean like your new function and not set NSNotFound, wouldn&apos;t something like this work?

diff --git a/Source/WebKit2/UIProcess/API/mac/WKView.mm b/Source/WebKit2/UIProcess/API/mac/WKView.mm
index 0f221c6..d0fda59 100644
--- a/Source/WebKit2/UIProcess/API/mac/WKView.mm
+++ b/Source/WebKit2/UIProcess/API/mac/WKView.mm
@@ -1427 +1427,2 @@ static const short kIOHIDEventTypeScroll = 6;
-    _data-&gt;_page-&gt;getSelectedRange(selectionStart, selectionLength);
+    if (!_data-&gt;_page-&gt;getSelectedRange(selectionStart, selectionLength))
+        selectionStart = NSNotFound;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751901</commentid>
    <comment_count>7</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-10-26 05:02:37 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; &gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:3314
&gt; &gt; &gt; &gt; +bool WebPage::selectedRangeForTesting(int* start, int* length)
&gt; &gt; &gt; 
&gt; &gt; &gt; Is there a reason for not just moving WebPage::getSelectedRange() from WebPageMac.mm to here?
&gt; &gt; 
&gt; &gt; I&apos;m afraid of NSRange usage in Mac port. There failure is marked as location = NSNotFound
&gt; 
&gt; There&apos;s only one user for this function:
&gt;   WKView selectedRange
&gt; so assuming you modified getSelectedRange to return a boolean like your new function and not set NSNotFound, wouldn&apos;t something like this work?
&gt; 
&gt; diff --git a/Source/WebKit2/UIProcess/API/mac/WKView.mm b/Source/WebKit2/UIProcess/API/mac/WKView.mm
&gt; index 0f221c6..d0fda59 100644
&gt; --- a/Source/WebKit2/UIProcess/API/mac/WKView.mm
&gt; +++ b/Source/WebKit2/UIProcess/API/mac/WKView.mm
&gt; @@ -1427 +1427,2 @@ static const short kIOHIDEventTypeScroll = 6;
&gt; -    _data-&gt;_page-&gt;getSelectedRange(selectionStart, selectionLength);
&gt; +    if (!_data-&gt;_page-&gt;getSelectedRange(selectionStart, selectionLength))
&gt; +        selectionStart = NSNotFound;

Ok, I&apos;ll try this. Will see what Mac developers say.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751974</commentid>
    <comment_count>8</comment_count>
      <attachid>170910</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-10-26 06:36:12 -0700</bug_when>
    <thetext>Created attachment 170910
use getSelectedRange from WebPage&apos;s Mac port</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751989</commentid>
    <comment_count>9</comment_count>
      <attachid>170910</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-26 06:51:52 -0700</bug_when>
    <thetext>Comment on attachment 170910
use getSelectedRange from WebPage&apos;s Mac port

Attachment 170910 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14551020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751990</commentid>
    <comment_count>10</comment_count>
      <attachid>170910</attachid>
    <who name="Jussi Kukkonen (jku)">jussi.kukkonen</who>
    <bug_when>2012-10-26 06:52:48 -0700</bug_when>
    <thetext>Comment on attachment 170910
use getSelectedRange from WebPage&apos;s Mac port

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

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:3346
&gt; +    if (range &amp;&amp; TextIterator::getLocationAndLengthFromRange(frame-&gt;selection()-&gt;rootEditableElementOrDocumentElement(), range.get(), locationSize, lengthSize)) {
&gt; +        location = static_cast&lt;uint64_t&gt;(locationSize);
&gt; +        length = static_cast&lt;uint64_t&gt;(lengthSize);
&gt; +    }

Need to return false if the test here is not true, to reproduce the original mac version behaviour.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752034</commentid>
    <comment_count>11</comment_count>
      <attachid>170910</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-26 07:38:18 -0700</bug_when>
    <thetext>Comment on attachment 170910
use getSelectedRange from WebPage&apos;s Mac port

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

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:70
&gt; +WK_EXPORT bool WKBundlePageSelectedRange(WKBundlePageRef pageRef, uint64_t&amp; location, uint64_t&amp; length);

I&apos;m not sure other C-WK-API methods return a bool for getters. Maybe making location = -1 makes more sense?

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:3334
&gt; +{

location = WTF::notFound ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753209</commentid>
    <comment_count>12</comment_count>
      <attachid>171187</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-10-29 02:59:42 -0700</bug_when>
    <thetext>Created attachment 171187
Applied Kenneth&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754046</commentid>
    <comment_count>13</comment_count>
    <who name="Jussi Kukkonen (jku)">jussi.kukkonen</who>
    <bug_when>2012-10-30 01:16:50 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Created an attachment (id=171187) [details]
&gt; Applied Kenneth&apos;s comments

Looks good to me at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764336</commentid>
    <comment_count>14</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-11-12 06:15:16 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; Created an attachment (id=171187) [details] [details]
&gt; &gt; Applied Kenneth&apos;s comments
&gt; 
&gt; Looks good to me at least.

I&apos;m wondering if all these functions should be exported to API. If mac is testing such api in the future maybe all ports will do same. See https://bugs.webkit.org/show_bug.cgi?id=100219 comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777993</commentid>
    <comment_count>15</comment_count>
      <attachid>176500</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-11-28 09:49:11 -0800</bug_when>
    <thetext>Created attachment 176500
Rebase and extend function to UIProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778831</commentid>
    <comment_count>16</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-11-29 01:56:41 -0800</bug_when>
    <thetext>Adding chromium and qt reviewers since this change affects all ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778836</commentid>
    <comment_count>17</comment_count>
      <attachid>176500</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-29 02:13:42 -0800</bug_when>
    <thetext>Comment on attachment 176500
Rebase and extend function to UIProcess

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

&gt; Source/WebKit2/ChangeLog:8
&gt; +        Implementation of getting selected range from webpage.

IMO, it would be good if you say this patch moves the implementation of mac port to common place for all ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779171</commentid>
    <comment_count>18</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-11-29 10:39:24 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Adding chromium and qt reviewers since this change affects all ports.

This doesn&apos;t affect Chromium since Chromium doesn&apos;t use WebKit2 or WTR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789313</commentid>
    <comment_count>19</comment_count>
      <attachid>178994</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-12-12 01:09:59 -0800</bug_when>
    <thetext>Created attachment 178994
Rebased, added comment about moving mac implementation to common part</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789344</commentid>
    <comment_count>20</comment_count>
      <attachid>178994</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-12 01:50:55 -0800</bug_when>
    <thetext>Comment on attachment 178994
Rebased, added comment about moving mac implementation to common part

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

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:1431
&gt;      NSRange result = NSMakeRange(selectionStart, selectionLength);
&gt; -    if (result.location == NSNotFound)
&gt; -        LOG(TextInput, &quot;selectedRange -&gt; (NSNotFound, %u)&quot;, result.length);
&gt; +    if (result.location == WTF::notFound)
&gt; +        LOG(TextInput, &quot;selectedRange -&gt; (notFound, %u)&quot;, result.length);

Don&apos;t we need to pass in NSNotFound to NSMakeRange?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789407</commentid>
    <comment_count>21</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-12-12 03:05:41 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 178994 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178994&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:1431
&gt; &gt;      NSRange result = NSMakeRange(selectionStart, selectionLength);
&gt; &gt; -    if (result.location == NSNotFound)
&gt; &gt; -        LOG(TextInput, &quot;selectedRange -&gt; (NSNotFound, %u)&quot;, result.length);
&gt; &gt; +    if (result.location == WTF::notFound)
&gt; &gt; +        LOG(TextInput, &quot;selectedRange -&gt; (notFound, %u)&quot;, result.length);
&gt; 
&gt; Don&apos;t we need to pass in NSNotFound to NSMakeRange?

In my opinion: no. NSMakeRange just fills structure with passed arguments. Because of common implementation getSelectedRange returns WTF::notFound instead of NSNotFound.
I suppose you are asking about following change:

...getSelectedRange(selectionStart, selectionLength);
+if (selectionStart == WTF::notFound)
+    selectionStart = NSNotFound;
if (result.location == NSNotFound)
   LOG(TextInput, &quot;selectedRange -&gt; (NSNotFound, %u)&quot;, result.length);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793420</commentid>
    <comment_count>22</comment_count>
      <attachid>178994</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-12-18 00:04:42 -0800</bug_when>
    <thetext>Comment on attachment 178994
Rebased, added comment about moving mac implementation to common part

Looks good to me in terms of sharing port implementation. But, I think mac port reviewer or WK2 reviewer needs to have a final review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797770</commentid>
    <comment_count>23</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-12-27 23:00:15 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 178994 [details])
&gt; Looks good to me in terms of sharing port implementation. But, I think mac port reviewer or WK2 reviewer needs to have a final review.

If there is no comment or objection by next week, I&apos;d like to land this patch. And, happy new year !!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801128</commentid>
    <comment_count>24</comment_count>
      <attachid>178994</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-01-06 18:21:15 -0800</bug_when>
    <thetext>Comment on attachment 178994
Rebased, added comment about moving mac implementation to common part

LGTM. But, someone might wanna have a final look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801131</commentid>
    <comment_count>25</comment_count>
      <attachid>178994</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-01-06 18:32:36 -0800</bug_when>
    <thetext>Comment on attachment 178994
Rebased, added comment about moving mac implementation to common part

This codifies a sync message to the WebProcess, something we need to eliminate and which is a huge no-no, in API.  r-.  Please find another way to do</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801209</commentid>
    <comment_count>26</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2013-01-07 02:13:39 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 178994 [details])
&gt; This codifies a sync message to the WebProcess, something we need to eliminate and which is a huge no-no, in API.  r-.  Please find another way to do

Code is only shared between all ports and was moved from existing mac&apos;s implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801235</commentid>
    <comment_count>27</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-01-07 04:56:01 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; &gt; (From update of attachment 178994 [details] [details])
&gt; &gt; This codifies a sync message to the WebProcess, something we need to eliminate and which is a huge no-no, in API.  r-.  Please find another way to do

Sam, thank you for your review. But, we don&apos;t understand what is your point well. I also thought this patch is just share mac implementation with other ports. Could you let us know what something we missed in more detail ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801436</commentid>
    <comment_count>28</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-01-07 10:54:43 -0800</bug_when>
    <thetext>The Mac port does a bad thing here, it does a synchronous call to the WebProcess.  This is something that should be fixed, not extended to all the other ports.  By moving it into shared code and adding API, it makes it much harder to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802153</commentid>
    <comment_count>29</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2013-01-08 02:07:13 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; The Mac port does a bad thing here, it does a synchronous call to the WebProcess.  This is something that should be fixed, not extended to all the other ports.  By moving it into shared code and adding API, it makes it much harder to fix.

Are you proposing to make it using callbacks? What about changing API in mac? Who is using selectedRange there?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849008</commentid>
    <comment_count>30</comment_count>
      <attachid>191781</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2013-03-06 10:07:52 -0800</bug_when>
    <thetext>Created attachment 191781
Rebased, make asynchronous</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849926</commentid>
    <comment_count>31</comment_count>
      <attachid>191781</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-03-07 03:05:33 -0800</bug_when>
    <thetext>Comment on attachment 191781
Rebased, make asynchronous

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1014
&gt; +void WebPageProxy::getSelectedRange(PassRefPtr&lt;DataCallback&gt; prpCallback)

what is a prp callback? pass ref ptr... no, please don&apos;t name like this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849927</commentid>
    <comment_count>32</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-03-07 03:06:05 -0800</bug_when>
    <thetext>Benjamin, can you look at this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849991</commentid>
    <comment_count>33</comment_count>
      <attachid>191781</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2013-03-07 05:30:44 -0800</bug_when>
    <thetext>Comment on attachment 191781
Rebased, make asynchronous

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

&gt;&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1014
&gt;&gt; +void WebPageProxy::getSelectedRange(PassRefPtr&lt;DataCallback&gt; prpCallback)
&gt; 
&gt; what is a prp callback? pass ref ptr... no, please don&apos;t name like this!

All callbacks are named in this file in this manner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976988</commentid>
    <comment_count>34</comment_count>
      <attachid>191781</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-02-05 11:19:23 -0800</bug_when>
    <thetext>Comment on attachment 191781
Rebased, make asynchronous

Clearing review flag on patches from before 2014. If this patch is still relevant, please reset the r? flag.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170588</attachid>
            <date>2012-10-25 01:41:24 -0700</date>
            <delta_ts>2012-10-26 06:36:12 -0700</delta_ts>
            <desc>patch</desc>
            <filename>-[mariusz.g@samsung.com]-[[WK2][WTR] Text input controller needs selectedRange implementation].patch</filename>
            <type>text/plain</type>
            <size>10651</size>
            <attacher name="Mariusz Grzegorczyk">mariusz.g</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNWI5ZGE4Li43YjFiOGZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTAt
MjQgIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW1dLMl1bV1RSXSBUZXh0IGlucHV0IGNvbnRyb2xsZXIgbmVlZHMgc2VsZWN0ZWRSYW5nZSBp
bXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTk0MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBHYXJkZW5pbmcgZm9yIHdlYmtpdDIgcmVsYXRlZCB3aXRoIHRleHRJbnB1dENvbnRyb2xs
ZXIuc2VsZWN0ZWRSYW5nZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL3dr
Mi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEyLTEwLTEyICBCYWxhenMgS2VsZW1lbiAgPGtiYWxh
enNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdW1dLMl0gU2tpcCB0ZXN0cyB0aGF0IGRlcGVu
ZCBvbiBkaXNhYmxpbmcgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNzZjZjNlYi4uZTYzN2RmNCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIzNywxOCArMjM3LDggQEAg
ZmFzdC9sb2FkZXIvcmVjdXJzaXZlLWJlZm9yZS11bmxvYWQtY3Jhc2guaHRtbAogCiAjIFdlYktp
dFRlc3RSdW5uZXIgbmVlZHMgdGV4dElucHV0Q29udHJvbGxlcgogIyA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMzM3PgotZWRpdGluZy9pbnB1dC9zZXR0aW5nLWlu
cHV0LXZhbHVlLWNhbmNlbC1pbWUtY29tcG9zaXRpb24uaHRtbAotc3ZnL3RleHQvY2FyZXQtaW4t
c3ZnLXRleHQueGh0bWwKLWVkaXRpbmcvaW5zZXJ0aW5nL2NhcmV0LXBvc2l0aW9uLmh0bWwKIGVk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMuaHRtbAotZWRp
dGluZy9zZWxlY3Rpb24vNTgyNTM1MC0xLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAt
Mi5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWxlZnQtcmlnaHQuaHRtbAotZWRpdGluZy9z
dHlsZS90ZXh0LWluZGVudC5odG1sCi1mYXN0L2RvbS90YWItaW4tcmlnaHQtYWxpZ25tZW50Lmh0
bWwKIGZhc3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAxLmh0bWwKLWZhc3QvZm9y
bXMvY3Vyc29yLWF0LWVkaXRhYmxlLWNvbnRlbnQtYm91bmRhcnkuaHRtbAotZmFzdC90ZXh0L2lu
dGVybmF0aW9uYWwvdGhhaS1jdXJzb3ItcG9zaXRpb24uaHRtbAogcGxhdGZvcm0vbWFjL2VkaXRp
bmcvaW5wdXQvNTU3NjYxOS5odG1sCiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9ib2xkLW5v
ZGUuaHRtbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvY2FyZXQtcHJpbWFyeS1iaWRpLmh0
bWwKQEAgLTI3Myw2ICsyNjMsMjMgQEAgcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVk
LXN1YnN0cmluZy1mcm9tLXJhbmdlLWluLXRleHRmaWVsZC5odG1sCiBwbGF0Zm9ybS9tYWMvZmFz
dC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UuaHRtbAogcGxhdGZvcm0vbWFj
L2Zhc3QvdGV4dC9qdXN0aWZpZWQtdGV4dC1yZWN0Lmh0bWwKIAorIyBXZWJLaXRUZXN0UnVubmVy
IG5lZWRzIHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UKKyMg
PGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAyMTk+CitlZGl0aW5n
L2luc2VydGluZy9jYXJldC1wb3NpdGlvbi5odG1sCitlZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUw
LTEuaHRtbAorZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0yLmh0bWwKK2VkaXRpbmcvc2VsZWN0
aW9uL21peGVkLWVkaXRhYmlsaXR5LTEwLmh0bWwKK2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtbGVm
dC1yaWdodC5odG1sCitlZGl0aW5nL3N0eWxlL3RleHQtaW5kZW50Lmh0bWwKK2Zhc3QvZG9tL3Rh
Yi1pbi1yaWdodC1hbGlnbm1lbnQuaHRtbAorZmFzdC9mb3Jtcy9jdXJzb3ItYXQtZWRpdGFibGUt
Y29udGVudC1ib3VuZGFyeS5odG1sCitmYXN0L3RleHQvaW50ZXJuYXRpb25hbC90aGFpLWN1cnNv
ci1wb3NpdGlvbi5odG1sCitzdmcvdGV4dC9jYXJldC1pbi1zdmctdGV4dC54aHRtbAorCisjIFdl
YktpdFRlc3RSdW5uZXIgbmVlZHMgdGV4dElucHV0Q29udHJvbGxlci5tYXJrZWRSYW5nZQorIyA8
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDIyMj4KK2VkaXRpbmcv
aW5wdXQvc2V0dGluZy1pbnB1dC12YWx1ZS1jYW5jZWwtaW1lLWNvbXBvc2l0aW9uLmh0bWwKKwog
IyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgbmVlZHNEZWxldGlvblVJIG1lY2hh
bmlzbSB0byBzaG93IGRlbGV0aW9uIFVJCiAjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDI1MzU+CiBmYXN0L2RvbS9FbGVtZW50L2lkLWluLWRlbGV0ZWJ1dHRvbi5o
dG1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggYTVmZTgzZS4uNzQwNTgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIxIEBACisyMDEyLTEwLTI0ICBNYXJpdXN6IEdyemVnb3JjenlrICA8bWFyaXVzei5nQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFtXSzJdW1dUUl0gVGV4dCBpbnB1dCBjb250cm9sbGVyIG5lZWRz
IHNlbGVjdGVkUmFuZ2UgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgZ2V0dGluZyBzZWxlY3RlZCBy
YW5nZSBmcm9tIHdlYnBhZ2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZWxlY3RlZFJh
bmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZVByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdGVkUmFuZ2VGb3JUZXN0aW5nKToKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKFdlYlBhZ2UpOgorCiAyMDEyLTEwLTI0ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhh
cm9uQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdW0FDXSBCbGFjayBzY3JlZW4gaW4g
d2ViIGluc3BlY3RvciB3aW5kb3cgd2l0aCBBQyBvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2Uu
Y3BwCmluZGV4IDUzZGRmNjEuLmI0YTQ4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5j
cHAKQEAgLTQyMSw2ICs0MjEsMTEgQEAgdm9pZCBXS0J1bmRsZVBhZ2VDb25maXJtQ29tcG9zaXRp
b25XaXRoVGV4dChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYKICAgICB0b0lt
cGwocGFnZVJlZiktPmNvbmZpcm1Db21wb3NpdGlvbkZvclRlc3RpbmcodG9XVEZTdHJpbmcodGV4
dCkpOwogfQogCitib29sIFdLQnVuZGxlUGFnZVNlbGVjdGVkUmFuZ2UoV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSZWYsIGludCogc3RhcnQsIGludCogbGVuZ3RoKQoreworICAgIHJldHVybiB0b0ltcGwo
cGFnZVJlZiktPnNlbGVjdGVkUmFuZ2VGb3JUZXN0aW5nKHN0YXJ0LCBsZW5ndGgpOworfQorCiBi
b29sIFdLQnVuZGxlUGFnZUNhblNob3dNSU1FVHlwZShXS0J1bmRsZVBhZ2VSZWYsIFdLU3RyaW5n
UmVmIG1pbWVUeXBlUmVmKQogewogICAgIGNvbnN0IFN0cmluZyBtaW1lVHlwZSA9IHRvV1RGU3Ry
aW5nKG1pbWVUeXBlUmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgK
aW5kZXggMTFiMjBkYy4uZDE2NDdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQ
cml2YXRlLmgKQEAgLTcyLDYgKzcyLDggQEAgV0tfRVhQT1JUIGJvb2wgV0tCdW5kbGVQYWdlSGFz
Q29tcG9zaXRpb24oV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5k
bGVQYWdlQ29uZmlybUNvbXBvc2l0aW9uKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9S
VCB2b2lkIFdLQnVuZGxlUGFnZUNvbmZpcm1Db21wb3NpdGlvbldpdGhUZXh0KFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiB0ZXh0KTsKIAorV0tfRVhQT1JUIGJvb2wgV0tCdW5kbGVQ
YWdlU2VsZWN0ZWRSYW5nZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgaW50KiBzdGFydCwgaW50KiBs
ZW5ndGgpOworCiBXS19FWFBPUlQgYm9vbCBXS0J1bmRsZVBhZ2VDYW5TaG93TUlNRVR5cGUoV0tC
dW5kbGVQYWdlUmVmLCBXS1N0cmluZ1JlZiBtaW1lVHlwZSk7CiAKIFdLX0VYUE9SVCB2b2lkKiBX
S0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KFdLQnVuZGxlUGFnZVJlZik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOWRlODFiZC4uMjM2OTcz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtMzMxMSw2ICszMzExLDMzIEBAIGJvb2wgV2ViUGFnZTo6aGFzQ29tcG9zaXRpb25Gb3JUZXN0
aW5nKCkKICAgICByZXR1cm4gZnJhbWUgJiYgZnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlv
bigpOwogfQogCitib29sIFdlYlBhZ2U6OnNlbGVjdGVkUmFuZ2VGb3JUZXN0aW5nKGludCogc3Rh
cnQsIGludCogbGVuZ3RoKQoreworICAgIGlmICghKHN0YXJ0ICYmIGxlbmd0aCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworCisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lLT5zZWxlY3Rp
b24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKTsKKyAgICBpZiAoIXJhbmdlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBFbGVtZW50KiBzZWxlY3Rpb25Sb290ID0gZnJhbWUtPnNl
bGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50KCk7CisgICAgRWxlbWVudCogc2NvcGUgPSBz
ZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IGZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVu
dEVsZW1lbnQoKTsKKworICAgIFJlZlB0cjxSYW5nZT4gdGVzdFJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShzY29wZS0+ZG9jdW1lbnQoKSwgc2NvcGUsIDAsIHJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBy
YW5nZS0+c3RhcnRPZmZzZXQoKSk7CisgICAgKnN0YXJ0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aCh0ZXN0UmFuZ2UuZ2V0KCkpOworCisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYzsK
KyAgICB0ZXN0UmFuZ2UtPnNldEVuZChyYW5nZS0+ZW5kQ29udGFpbmVyKCksIHJhbmdlLT5lbmRP
ZmZzZXQoKSwgZWMpOworICAgICpsZW5ndGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHRl
c3RSYW5nZS5nZXQoKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBXZWJQYWdlOjpj
b25maXJtQ29tcG9zaXRpb25Gb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJp
bmcpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCA5OTg0ZGY0Li45M2EwMGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ4MCw2ICs0ODAsOCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBoYXNDb21wb3NpdGlvbkZvclRlc3RpbmcoKTsKICAgICB2b2lkIGNvbmZpcm1Db21wb3Np
dGlvbkZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZyk7CiAKKyAgICBi
b29sIHNlbGVjdGVkUmFuZ2VGb3JUZXN0aW5nKGludCogc3RhcnQsIGludCogbGVuZ3RoKTsKKwog
ICAgIC8vIEZJWE1FOiBUaGlzIGEgZHVtbXkgbWVzc2FnZSwgdG8gYXZvaWQgYnJlYWtpbmcgdGhl
IGJ1aWxkIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCByZXF1aXJlCiAgICAgLy8gYW55IHN5bmNo
cm9ub3VzIG1lc3NhZ2VzLCBhbmQgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiA8cmRhcjovL3Byb2Js
ZW0vODc3NTExNT4gaXMgZml4ZWQuCiAgICAgdm9pZCBkdW1teShib29sJik7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzJmMzRkNC4uYzJiZGU4
MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDEyLTEwLTI0ICBNYXJpdXN6IEdyemVnb3JjenlrICA8bWFyaXVzei5n
QHNhbXN1bmcuY29tPgorCisgICAgICAgIFtXSzJdW1dUUl0gVGV4dCBpbnB1dCBjb250cm9sbGVy
IG5lZWRzIHNlbGVjdGVkUmFuZ2UgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVjbGFyYXRpb24gYW5kIGltcGxlbWVudGF0aW9u
IG9mIHNlbGVjdGVkUmFuZ2UgZnVuY3Rpb24gaW4gVGV4dElucHV0Q29udHJvbGxlci4KKworICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGV4dElucHV0
Q29udHJvbGxlci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGV4dElucHV0Q29udHJv
bGxlcjo6c2VsZWN0ZWRSYW5nZSk6CisgICAgICAgIChXVFIpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5oOgorICAgICAgICAo
VGV4dElucHV0Q29udHJvbGxlcik6CisKIDIwMTItMTAtMjQgIE1hcmlvIFNhbmNoZXogUHJhZGEg
IDxtYXJpb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtXSzJdIFtHVEtdIFRlc3RXZWJLaXRBY2Nl
c3NpYmlsaXR5IGlzIG5vdCBiZWluZyBydW4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGV4dElucHV0Q29udHJvbGxlci5pZGwgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1RleHRJbnB1dENv
bnRyb2xsZXIuaWRsCmluZGV4IDAzOTk4OGEuLjZkODVmNzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGV4dElucHV0Q29udHJvbGxl
ci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXh0SW5wdXRDb250cm9sbGVyLmlkbApAQCAtMjgsNSArMjgsNiBAQCBpbnRlcmZhY2UgVGV4
dElucHV0Q29udHJvbGxlciB7CiAgICAgYm9vbGVhbiBoYXNNYXJrZWRUZXh0KCk7CiAgICAgdm9p
ZCB1bm1hcmtUZXh0KCk7CiAgICAgdm9pZCBpbnNlcnRUZXh0KGluIERPTVN0cmluZyBzdHJpbmcp
OworICAgIG9iamVjdCBzZWxlY3RlZFJhbmdlKCk7CiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVy
LmNwcAppbmRleCAwMDg3YWEzLi5iYTY5OTAxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2UuaCIKICNpbmNs
dWRlICJKU1RleHRJbnB1dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTdHJpbmdGdW5jdGlvbnMu
aCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJLaXQy
L1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KIAogbmFtZXNwYWNlIFdUUiB7CkBAIC03Nyw0ICs3OCwy
MSBAQCB2b2lkIFRleHRJbnB1dENvbnRyb2xsZXI6Omluc2VydFRleHQoSlNTdHJpbmdSZWYgdGV4
dCkKICAgICBXS0J1bmRsZVBhZ2VDb25maXJtQ29tcG9zaXRpb25XaXRoVGV4dChJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCksIHRvV0sodGV4dCkuZ2V0KCkpOwogfQogCitK
U1ZhbHVlUmVmIFRleHRJbnB1dENvbnRyb2xsZXI6OnNlbGVjdGVkUmFuZ2UoKQoreworICAgIGlu
dCBzdGFydCwgbGVuZ3RoOworICAgIFdLQnVuZGxlUGFnZVJlZiBwYWdlID0gSW5qZWN0ZWRCdW5k
bGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpOworICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZy
YW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKHBhZ2UpOworICAgIEpTQ29udGV4dFJlZiBj
b250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7CisK
KyAgICBpZiAoV0tCdW5kbGVQYWdlU2VsZWN0ZWRSYW5nZShwYWdlLCAmc3RhcnQsICZsZW5ndGgp
KSB7CisgICAgICAgIEpTVmFsdWVSZWYgYXJyYXlWYWx1ZXNbMl07CisgICAgICAgIGFycmF5VmFs
dWVzWzBdID0gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgc3RhcnQpOworICAgICAgICBhcnJh
eVZhbHVlc1sxXSA9IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIGxlbmd0aCk7CisgICAgICAg
IHJldHVybiBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCAyLCBhcnJheVZhbHVlcywgMCk7Cisg
ICAgfQorCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmgKaW5kZXggNzFhMDQzNy4uZTZi
OWRmMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXh0SW5wdXRDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzTWFya2VkVGV4dCgpOwogICAgIHZvaWQgdW5tYXJrVGV4dCgpOwogICAgIHZv
aWQgaW5zZXJ0VGV4dChKU1N0cmluZ1JlZiB0ZXh0KTsKKyAgICBKU1ZhbHVlUmVmIHNlbGVjdGVk
UmFuZ2UoKTsKIAogcHJpdmF0ZToKICAgICBUZXh0SW5wdXRDb250cm9sbGVyKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170910</attachid>
            <date>2012-10-26 06:36:12 -0700</date>
            <delta_ts>2012-10-29 02:59:42 -0700</delta_ts>
            <desc>use getSelectedRange from WebPage&apos;s Mac port</desc>
            <filename>-[mariusz.g@samsung.com]-[[WK2][WTR] Text input controller needs selectedRange implementation].patch</filename>
            <type>text/plain</type>
            <size>13093</size>
            <attacher name="Mariusz Grzegorczyk">mariusz.g</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwN2YxM2YyLi43M2M4MzE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTAt
MjYgIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW1dLMl1bV1RSXSBUZXh0IGlucHV0IGNvbnRyb2xsZXIgbmVlZHMgc2VsZWN0ZWRSYW5nZSBp
bXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTk0MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBHYXJkZW5pbmcgZm9yIHdlYmtpdDIgcmVsYXRlZCB3aXRoIHRleHRJbnB1dENvbnRyb2xs
ZXIuc2VsZWN0ZWRSYW5nZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL3dr
Mi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEyLTEwLTI2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5y
ZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTMyNjA0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3
NmNmM2ViLi5lNjM3ZGY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMjM3LDE4ICsyMzcsOCBAQCBmYXN0L2xvYWRlci9yZWN1cnNpdmUtYmVmb3JlLXVu
bG9hZC1jcmFzaC5odG1sCiAKICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyB0ZXh0SW5wdXRDb250
cm9sbGVyCiAjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIzMzc+
Ci1lZGl0aW5nL2lucHV0L3NldHRpbmctaW5wdXQtdmFsdWUtY2FuY2VsLWltZS1jb21wb3NpdGlv
bi5odG1sCi1zdmcvdGV4dC9jYXJldC1pbi1zdmctdGV4dC54aHRtbAotZWRpdGluZy9pbnNlcnRp
bmcvY2FyZXQtcG9zaXRpb24uaHRtbAogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1iYWNrc3Bh
Y2UtYmV0d2Vlbi1saW5lcy5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEuaHRtbAot
ZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0yLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL21vdmUt
bGVmdC1yaWdodC5odG1sCi1lZGl0aW5nL3N0eWxlL3RleHQtaW5kZW50Lmh0bWwKLWZhc3QvZG9t
L3RhYi1pbi1yaWdodC1hbGlnbm1lbnQuaHRtbAogZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9u
LWV2ZW50cy0wMDEuaHRtbAotZmFzdC9mb3Jtcy9jdXJzb3ItYXQtZWRpdGFibGUtY29udGVudC1i
b3VuZGFyeS5odG1sCi1mYXN0L3RleHQvaW50ZXJuYXRpb25hbC90aGFpLWN1cnNvci1wb3NpdGlv
bi5odG1sCiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC81NTc2NjE5Lmh0bWwKIHBsYXRmb3Jt
L21hYy9lZGl0aW5nL2lucHV0L2JvbGQtbm9kZS5odG1sCiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9p
bnB1dC9jYXJldC1wcmltYXJ5LWJpZGkuaHRtbApAQCAtMjczLDYgKzI2MywyMyBAQCBwbGF0Zm9y
bS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtaW4tdGV4dGZp
ZWxkLmh0bWwKIHBsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJv
bS1yYW5nZS5odG1sCiBwbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2p1c3RpZmllZC10ZXh0LXJlY3Qu
aHRtbAogCisjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdGV4dElucHV0Q29udHJvbGxlci5maXJz
dFJlY3RGb3JDaGFyYWN0ZXJSYW5nZQorIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMDIxOT4KK2VkaXRpbmcvaW5zZXJ0aW5nL2NhcmV0LXBvc2l0aW9uLmh0bWwK
K2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMS5odG1sCitlZGl0aW5nL3NlbGVjdGlvbi81ODI1
MzUwLTIuaHRtbAorZWRpdGluZy9zZWxlY3Rpb24vbWl4ZWQtZWRpdGFiaWxpdHktMTAuaHRtbAor
ZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1sZWZ0LXJpZ2h0Lmh0bWwKK2VkaXRpbmcvc3R5bGUvdGV4
dC1pbmRlbnQuaHRtbAorZmFzdC9kb20vdGFiLWluLXJpZ2h0LWFsaWdubWVudC5odG1sCitmYXN0
L2Zvcm1zL2N1cnNvci1hdC1lZGl0YWJsZS1jb250ZW50LWJvdW5kYXJ5Lmh0bWwKK2Zhc3QvdGV4
dC9pbnRlcm5hdGlvbmFsL3RoYWktY3Vyc29yLXBvc2l0aW9uLmh0bWwKK3N2Zy90ZXh0L2NhcmV0
LWluLXN2Zy10ZXh0LnhodG1sCisKKyMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyB0ZXh0SW5wdXRD
b250cm9sbGVyLm1hcmtlZFJhbmdlCisjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAwMjIyPgorZWRpdGluZy9pbnB1dC9zZXR0aW5nLWlucHV0LXZhbHVlLWNhbmNl
bC1pbWUtY29tcG9zaXRpb24uaHRtbAorCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gc3Vw
cG9ydCBuZWVkc0RlbGV0aW9uVUkgbWVjaGFuaXNtIHRvIHNob3cgZGVsZXRpb24gVUkKICMgPGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjUzNT4KIGZhc3QvZG9tL0Vs
ZW1lbnQvaWQtaW4tZGVsZXRlYnV0dG9uLmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0OWMyYjk1Li5iZGU1
ODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMTAtMjYgIE1hcml1c3ogR3J6
ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW1dLMl1bV1RSXSBU
ZXh0IGlucHV0IGNvbnRyb2xsZXIgbmVlZHMgc2VsZWN0ZWRSYW5nZSBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk0MzgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRh
dGlvbiBvZiBnZXR0aW5nIHNlbGVjdGVkIHJhbmdlIGZyb20gd2VicGFnZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IHNlbGVjdGVk
UmFuZ2VdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZWxlY3RlZFJhbmdlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmdldFNlbGVjdGVkUmFuZ2UpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViUGFnZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorCiAyMDEy
LTEwLTI2ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAK
ICAgICAgICAgW0VGTF1bV0syXSBBZGQgRXdrX0NvbG9yX1BpY2tlciBBUEkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCAwZjIyMWM2Li5kMGZkYTU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0xNDI0LDcg
KzE0MjQsOCBAQCBzdGF0aWMgY29uc3Qgc2hvcnQga0lPSElERXZlbnRUeXBlU2Nyb2xsID0gNjsK
IAogICAgIHVpbnQ2NF90IHNlbGVjdGlvblN0YXJ0OwogICAgIHVpbnQ2NF90IHNlbGVjdGlvbkxl
bmd0aDsKLSAgICBfZGF0YS0+X3BhZ2UtPmdldFNlbGVjdGVkUmFuZ2Uoc2VsZWN0aW9uU3RhcnQs
IHNlbGVjdGlvbkxlbmd0aCk7CisgICAgaWYgKCFfZGF0YS0+X3BhZ2UtPmdldFNlbGVjdGVkUmFu
Z2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkxlbmd0aCkpCisgICAgICAgIHNlbGVjdGlvblN0
YXJ0ID0gTlNOb3RGb3VuZDsKIAogICAgIE5TUmFuZ2UgcmVzdWx0ID0gTlNNYWtlUmFuZ2Uoc2Vs
ZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkxlbmd0aCk7CiAgICAgaWYgKHJlc3VsdC5sb2NhdGlvbiA9
PSBOU05vdEZvdW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDUzZGRmNjEu
LmYyYmUwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTQyMSw2ICs0MjEs
MTEgQEAgdm9pZCBXS0J1bmRsZVBhZ2VDb25maXJtQ29tcG9zaXRpb25XaXRoVGV4dChXS0J1bmRs
ZVBhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYKICAgICB0b0ltcGwocGFnZVJlZiktPmNvbmZp
cm1Db21wb3NpdGlvbkZvclRlc3RpbmcodG9XVEZTdHJpbmcodGV4dCkpOwogfQogCitib29sIFdL
QnVuZGxlUGFnZVNlbGVjdGVkUmFuZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIHVpbnQ2NF90
JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gdG9JbXBsKHBhZ2VS
ZWYpLT5nZXRTZWxlY3RlZFJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpOworfQorCiBib29sIFdLQnVu
ZGxlUGFnZUNhblNob3dNSU1FVHlwZShXS0J1bmRsZVBhZ2VSZWYsIFdLU3RyaW5nUmVmIG1pbWVU
eXBlUmVmKQogewogICAgIGNvbnN0IFN0cmluZyBtaW1lVHlwZSA9IHRvV1RGU3RyaW5nKG1pbWVU
eXBlUmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgKaW5kZXggMTFi
MjBkYy4uY2VhOGMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgK
QEAgLTY3LDYgKzY3LDggQEAgV0tfRVhQT1JUIGJvb2wgV0tCdW5kbGVQYWdlSXNUcmFja2luZ1Jl
cGFpbnRzKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFn
ZVJlc2V0VHJhY2tlZFJlcGFpbnRzKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCBX
S0FycmF5UmVmIFdLQnVuZGxlUGFnZUNvcHlUcmFja2VkUmVwYWludFJlY3RzKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlKTsKIAorV0tfRVhQT1JUIGJvb2wgV0tCdW5kbGVQYWdlU2VsZWN0ZWRSYW5nZShX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgdWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVu
Z3RoKTsKKwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0Q29tcG9zaXRpb24oV0tCdW5k
bGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHRleHQsIGludCBmcm9tLCBpbnQgbGVuZ3RoKTsK
IFdLX0VYUE9SVCBib29sIFdLQnVuZGxlUGFnZUhhc0NvbXBvc2l0aW9uKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZUNvbmZpcm1Db21wb3NpdGlvbihX
S0J1bmRsZVBhZ2VSZWYgcGFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggMjA0OTVkMi4uNmYyMTk2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzMzMCw2ICszMzMwLDI0IEBA
IHZvaWQgV2ViUGFnZTo6c2ltdWxhdGVNb3VzZU1vdGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb3Np
dGlvbiwgZG91YmxlIHRpbWUpCiAgICAgbW91c2VFdmVudChXZWJNb3VzZUV2ZW50KFdlYk1vdXNl
RXZlbnQ6Ok1vdXNlTW92ZSwgV2ViTW91c2VFdmVudDo6Tm9CdXR0b24sIHBvc2l0aW9uLCBwb3Np
dGlvbiwgMCwgMCwgMCwgMCwgV2ViTW91c2VFdmVudDo6TW9kaWZpZXJzKCksIHRpbWUpKTsKIH0K
IAorYm9vbCBXZWJQYWdlOjpnZXRTZWxlY3RlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWlu
dDY0X3QmIGxlbmd0aCkKK3sKKyAgICBsZW5ndGggPSAwOworICAgIEZyYW1lKiBmcmFtZSA9IG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmICgh
ZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHNpemVfdCBsb2NhdGlvblNpemU7
CisgICAgc2l6ZV90IGxlbmd0aFNpemU7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1l
LT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKTsKKyAgICBpZiAocmFuZ2UgJiYgVGV4
dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShmcmFtZS0+c2VsZWN0aW9u
KCktPnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCByYW5nZS5nZXQoKSwg
bG9jYXRpb25TaXplLCBsZW5ndGhTaXplKSkgeworICAgICAgICBsb2NhdGlvbiA9IHN0YXRpY19j
YXN0PHVpbnQ2NF90Pihsb2NhdGlvblNpemUpOworICAgICAgICBsZW5ndGggPSBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4obGVuZ3RoU2l6ZSk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisK
IHZvaWQgV2ViUGFnZTo6c2V0Q29tcG9zaXRpb25Gb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgY29t
cG9zaXRpb25TdHJpbmcsIHVpbnQ2NF90IGZyb20sIHVpbnQ2NF90IGxlbmd0aCkKIHsKICAgICBG
cmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IGE3ZWFmNDguLmI5NjAyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtNDQ0LDcgKzQ0NCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbENv
bXBvc2l0aW9uKEVkaXRvclN0YXRlJiBuZXdTdGF0ZSk7CiAgICAgdm9pZCBpbnNlcnRUZXh0KGNv
bnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRf
dCByZXBsYWNlbWVudFJhbmdlRW5kLCBib29sJiBoYW5kbGVkLCBFZGl0b3JTdGF0ZSYgbmV3U3Rh
dGUpOwogICAgIHZvaWQgZ2V0TWFya2VkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRf
dCYgbGVuZ3RoKTsKLSAgICB2b2lkIGdldFNlbGVjdGVkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9u
LCB1aW50NjRfdCYgbGVuZ3RoKTsKICAgICB2b2lkIGdldEF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9t
UmFuZ2UodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgQXR0cmlidXRlZFN0cmlu
ZyYpOwogICAgIHZvaWQgY2hhcmFjdGVySW5kZXhGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCBwb2ludCwgdWludDY0X3QmIHJlc3VsdCk7CiAgICAgdm9pZCBmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZSh1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBXZWJDb3JlOjpJ
bnRSZWN0JiByZXN1bHRSZWN0KTsKQEAgLTQ3Niw2ICs0NzUsOCBAQCBwdWJsaWM6CiAjZW5kaWYK
ICNlbmRpZgogCisgICAgYm9vbCBnZXRTZWxlY3RlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwg
dWludDY0X3QmIGxlbmd0aCk7CisKICAgICB2b2lkIHNldENvbXBvc2l0aW9uRm9yVGVzdGluZyhj
b25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCB1aW50NjRfdCBmcm9tLCB1aW50NjRfdCBs
ZW5ndGgpOwogICAgIGJvb2wgaGFzQ29tcG9zaXRpb25Gb3JUZXN0aW5nKCk7CiAgICAgdm9pZCBj
b25maXJtQ29tcG9zaXRpb25Gb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJp
bmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tCmluZGV4IDJhY2Y4NWIuLmY4YzMxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTMzMSwyMyArMzMx
LDYgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZSh1aW50NjRfdCYgbG9jYXRpb24sIHVp
bnQ2NF90JiBsZW5ndGgpCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGVkUmFu
Z2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKQotewotICAgIGxvY2F0aW9u
ID0gTlNOb3RGb3VuZDsKLSAgICBsZW5ndGggPSAwOwotICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICghZnJh
bWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNpemVfdCBsb2NhdGlvblNpemU7Ci0gICAgc2l6
ZV90IGxlbmd0aFNpemU7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lLT5zZWxlY3Rp
b24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKTsKLSAgICBpZiAocmFuZ2UgJiYgVGV4dEl0ZXJhdG9y
OjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RF
ZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCByYW5nZS5nZXQoKSwgbG9jYXRpb25T
aXplLCBsZW5ndGhTaXplKSkgewotICAgICAgICBsb2NhdGlvbiA9IHN0YXRpY19jYXN0PHVpbnQ2
NF90Pihsb2NhdGlvblNpemUpOwotICAgICAgICBsZW5ndGggPSBzdGF0aWNfY2FzdDx1aW50NjRf
dD4obGVuZ3RoU2l6ZSk7Ci0gICAgfQotfQotCiB2b2lkIFdlYlBhZ2U6OmdldEF0dHJpYnV0ZWRT
dWJzdHJpbmdGcm9tUmFuZ2UodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgQXR0
cmlidXRlZFN0cmluZyYgcmVzdWx0KQogewogICAgIE5TUmFuZ2UgbnNSYW5nZSA9IE5TTWFrZVJh
bmdlKGxvY2F0aW9uLCBsZW5ndGggLSBsb2NhdGlvbik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDhjODcwNi4uYTBjNDU0MyAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBA
CisyMDEyLTEwLTI2ICBNYXJpdXN6IEdyemVnb3JjenlrICA8bWFyaXVzei5nQHNhbXN1bmcuY29t
PgorCisgICAgICAgIFtXSzJdW1dUUl0gVGV4dCBpbnB1dCBjb250cm9sbGVyIG5lZWRzIHNlbGVj
dGVkUmFuZ2UgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk5NDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRGVjbGFyYXRpb24gYW5kIGltcGxlbWVudGF0aW9uIG9mIHNlbGVjdGVk
UmFuZ2UgZnVuY3Rpb24gaW4gVGV4dElucHV0Q29udHJvbGxlci4KKworICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGV4dElucHV0Q29udHJvbGxlci5p
ZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGV4dElucHV0Q29udHJvbGxlcjo6c2VsZWN0
ZWRSYW5nZSk6CisgICAgICAgIChXVFIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5oOgorICAgICAgICAoVGV4dElucHV0Q29u
dHJvbGxlcik6CisKIDIwMTItMTAtMjYgIFhpYW9ibyBXYW5nICA8eGJ3YW5nQHRvcmNobW9iaWxl
LmNvbS5jbj4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gU3VwcG9ydCBwaXhlbCB0ZXN0cyBmb3Ig
QmxhY2tCZXJyeSBEUlQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvVGV4dElucHV0Q29udHJvbGxlci5pZGwgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1RleHRJbnB1dENvbnRyb2xsZXIuaWRs
CmluZGV4IDAzOTk4OGEuLjZkODVmNzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGV4dElucHV0Q29udHJvbGxlci5pZGwKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXh0SW5wdXRD
b250cm9sbGVyLmlkbApAQCAtMjgsNSArMjgsNiBAQCBpbnRlcmZhY2UgVGV4dElucHV0Q29udHJv
bGxlciB7CiAgICAgYm9vbGVhbiBoYXNNYXJrZWRUZXh0KCk7CiAgICAgdm9pZCB1bm1hcmtUZXh0
KCk7CiAgICAgdm9pZCBpbnNlcnRUZXh0KGluIERPTVN0cmluZyBzdHJpbmcpOworICAgIG9iamVj
dCBzZWxlY3RlZFJhbmdlKCk7CiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcAppbmRleCAw
MDg3YWEzLi4xODJjNDI5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2UuaCIKICNpbmNsdWRlICJKU1RleHRJ
bnB1dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTdHJpbmdGdW5jdGlvbnMuaCIKKyNpbmNsdWRl
IDxXZWJLaXQyL1dLQnVuZGxlRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFn
ZVByaXZhdGUuaD4KIAogbmFtZXNwYWNlIFdUUiB7CkBAIC03Nyw0ICs3OCwyMSBAQCB2b2lkIFRl
eHRJbnB1dENvbnRyb2xsZXI6Omluc2VydFRleHQoSlNTdHJpbmdSZWYgdGV4dCkKICAgICBXS0J1
bmRsZVBhZ2VDb25maXJtQ29tcG9zaXRpb25XaXRoVGV4dChJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkucGFnZSgpLT5wYWdlKCksIHRvV0sodGV4dCkuZ2V0KCkpOwogfQogCitKU1ZhbHVlUmVmIFRl
eHRJbnB1dENvbnRyb2xsZXI6OnNlbGVjdGVkUmFuZ2UoKQoreworICAgIHVpbnQ2NF90IHN0YXJ0
LCBsZW5ndGg7CisgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkucGFnZSgpLT5wYWdlKCk7CisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBX
S0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUocGFnZSk7CisgICAgSlNDb250ZXh0UmVmIGNvbnRleHQg
PSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKKworICAgIGlm
IChXS0J1bmRsZVBhZ2VTZWxlY3RlZFJhbmdlKHBhZ2UsIHN0YXJ0LCBsZW5ndGgpKSB7CisgICAg
ICAgIEpTVmFsdWVSZWYgYXJyYXlWYWx1ZXNbMl07CisgICAgICAgIGFycmF5VmFsdWVzWzBdID0g
SlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgc3RhcnQpOworICAgICAgICBhcnJheVZhbHVlc1sx
XSA9IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybiBK
U09iamVjdE1ha2VBcnJheShjb250ZXh0LCAyLCBhcnJheVZhbHVlcywgMCk7CisgICAgfQorCisg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGV4dElucHV0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmgKaW5kZXggNzFhMDQzNy4uZTZiOWRmMiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRD
b250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXh0SW5wdXRDb250cm9sbGVyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzTWFya2VkVGV4dCgpOwogICAgIHZvaWQgdW5tYXJrVGV4dCgpOwogICAgIHZvaWQgaW5zZXJ0
VGV4dChKU1N0cmluZ1JlZiB0ZXh0KTsKKyAgICBKU1ZhbHVlUmVmIHNlbGVjdGVkUmFuZ2UoKTsK
IAogcHJpdmF0ZToKICAgICBUZXh0SW5wdXRDb250cm9sbGVyKCk7Cg==
</data>
<flag name="commit-queue"
          id="184675"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171187</attachid>
            <date>2012-10-29 02:59:42 -0700</date>
            <delta_ts>2012-11-28 09:49:11 -0800</delta_ts>
            <desc>Applied Kenneth&apos;s comments</desc>
            <filename>-[mariusz.g@samsung.com]-[[WK2][WTR] Text input controller needs selectedRange implementation].patch</filename>
            <type>text/plain</type>
            <size>13839</size>
            <attacher name="Mariusz Grzegorczyk">mariusz.g</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwN2YxM2YyLi43M2M4MzE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTAt
MjYgIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW1dLMl1bV1RSXSBUZXh0IGlucHV0IGNvbnRyb2xsZXIgbmVlZHMgc2VsZWN0ZWRSYW5nZSBp
bXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTk0MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBHYXJkZW5pbmcgZm9yIHdlYmtpdDIgcmVsYXRlZCB3aXRoIHRleHRJbnB1dENvbnRyb2xs
ZXIuc2VsZWN0ZWRSYW5nZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL3dr
Mi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEyLTEwLTI2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5y
ZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTMyNjA0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3
NmNmM2ViLi5lNjM3ZGY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMjM3LDE4ICsyMzcsOCBAQCBmYXN0L2xvYWRlci9yZWN1cnNpdmUtYmVmb3JlLXVu
bG9hZC1jcmFzaC5odG1sCiAKICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyB0ZXh0SW5wdXRDb250
cm9sbGVyCiAjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIzMzc+
Ci1lZGl0aW5nL2lucHV0L3NldHRpbmctaW5wdXQtdmFsdWUtY2FuY2VsLWltZS1jb21wb3NpdGlv
bi5odG1sCi1zdmcvdGV4dC9jYXJldC1pbi1zdmctdGV4dC54aHRtbAotZWRpdGluZy9pbnNlcnRp
bmcvY2FyZXQtcG9zaXRpb24uaHRtbAogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1iYWNrc3Bh
Y2UtYmV0d2Vlbi1saW5lcy5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEuaHRtbAot
ZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0yLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL21vdmUt
bGVmdC1yaWdodC5odG1sCi1lZGl0aW5nL3N0eWxlL3RleHQtaW5kZW50Lmh0bWwKLWZhc3QvZG9t
L3RhYi1pbi1yaWdodC1hbGlnbm1lbnQuaHRtbAogZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9u
LWV2ZW50cy0wMDEuaHRtbAotZmFzdC9mb3Jtcy9jdXJzb3ItYXQtZWRpdGFibGUtY29udGVudC1i
b3VuZGFyeS5odG1sCi1mYXN0L3RleHQvaW50ZXJuYXRpb25hbC90aGFpLWN1cnNvci1wb3NpdGlv
bi5odG1sCiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC81NTc2NjE5Lmh0bWwKIHBsYXRmb3Jt
L21hYy9lZGl0aW5nL2lucHV0L2JvbGQtbm9kZS5odG1sCiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9p
bnB1dC9jYXJldC1wcmltYXJ5LWJpZGkuaHRtbApAQCAtMjczLDYgKzI2MywyMyBAQCBwbGF0Zm9y
bS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtaW4tdGV4dGZp
ZWxkLmh0bWwKIHBsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJv
bS1yYW5nZS5odG1sCiBwbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2p1c3RpZmllZC10ZXh0LXJlY3Qu
aHRtbAogCisjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdGV4dElucHV0Q29udHJvbGxlci5maXJz
dFJlY3RGb3JDaGFyYWN0ZXJSYW5nZQorIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMDIxOT4KK2VkaXRpbmcvaW5zZXJ0aW5nL2NhcmV0LXBvc2l0aW9uLmh0bWwK
K2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMS5odG1sCitlZGl0aW5nL3NlbGVjdGlvbi81ODI1
MzUwLTIuaHRtbAorZWRpdGluZy9zZWxlY3Rpb24vbWl4ZWQtZWRpdGFiaWxpdHktMTAuaHRtbAor
ZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1sZWZ0LXJpZ2h0Lmh0bWwKK2VkaXRpbmcvc3R5bGUvdGV4
dC1pbmRlbnQuaHRtbAorZmFzdC9kb20vdGFiLWluLXJpZ2h0LWFsaWdubWVudC5odG1sCitmYXN0
L2Zvcm1zL2N1cnNvci1hdC1lZGl0YWJsZS1jb250ZW50LWJvdW5kYXJ5Lmh0bWwKK2Zhc3QvdGV4
dC9pbnRlcm5hdGlvbmFsL3RoYWktY3Vyc29yLXBvc2l0aW9uLmh0bWwKK3N2Zy90ZXh0L2NhcmV0
LWluLXN2Zy10ZXh0LnhodG1sCisKKyMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyB0ZXh0SW5wdXRD
b250cm9sbGVyLm1hcmtlZFJhbmdlCisjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAwMjIyPgorZWRpdGluZy9pbnB1dC9zZXR0aW5nLWlucHV0LXZhbHVlLWNhbmNl
bC1pbWUtY29tcG9zaXRpb24uaHRtbAorCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gc3Vw
cG9ydCBuZWVkc0RlbGV0aW9uVUkgbWVjaGFuaXNtIHRvIHNob3cgZGVsZXRpb24gVUkKICMgPGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjUzNT4KIGZhc3QvZG9tL0Vs
ZW1lbnQvaWQtaW4tZGVsZXRlYnV0dG9uLmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0OWMyYjk1Li5hYmNl
NzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMTAtMjYgIE1hcml1c3ogR3J6
ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW1dLMl1bV1RSXSBU
ZXh0IGlucHV0IGNvbnRyb2xsZXIgbmVlZHMgc2VsZWN0ZWRSYW5nZSBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk0MzgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRh
dGlvbiBvZiBnZXR0aW5nIHNlbGVjdGVkIHJhbmdlIGZyb20gd2VicGFnZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IHNlbGVjdGVk
UmFuZ2VdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRTZWxlY3RlZFJhbmdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAg
ICAgIChXS0J1bmRsZVBhZ2VTZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dFNlbGVjdGVkUmFuZ2UpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViUGFnZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorCiAyMDEyLTEwLTI2ICBDaHJpc3RvcGhl
IER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bV0sy
XSBBZGQgRXdrX0NvbG9yX1BpY2tlciBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlldy5tbQppbmRleCAwZjIyMWM2Li42ZjZlNjhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0xNDI3LDggKzE0MjcsOCBAQCBzdGF0aWMg
Y29uc3Qgc2hvcnQga0lPSElERXZlbnRUeXBlU2Nyb2xsID0gNjsKICAgICBfZGF0YS0+X3BhZ2Ut
PmdldFNlbGVjdGVkUmFuZ2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkxlbmd0aCk7CiAKICAg
ICBOU1JhbmdlIHJlc3VsdCA9IE5TTWFrZVJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25M
ZW5ndGgpOwotICAgIGlmIChyZXN1bHQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKLSAgICAgICAg
TE9HKFRleHRJbnB1dCwgInNlbGVjdGVkUmFuZ2UgLT4gKE5TTm90Rm91bmQsICV1KSIsIHJlc3Vs
dC5sZW5ndGgpOworICAgIGlmIChyZXN1bHQubG9jYXRpb24gPT0gV1RGOjpub3RGb3VuZCkKKyAg
ICAgICAgTE9HKFRleHRJbnB1dCwgInNlbGVjdGVkUmFuZ2UgLT4gKG5vdEZvdW5kLCAldSkiLCBy
ZXN1bHQubGVuZ3RoKTsKICAgICBlbHNlCiAgICAgICAgIExPRyhUZXh0SW5wdXQsICJzZWxlY3Rl
ZFJhbmdlIC0+ICgldSwgJXUpIiwgcmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRl
eCBjNWZlMzM1Li5lOWNiMzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpnZXRNYXJrZWRSYW5nZSh1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpCiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3RlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwg
dWludDY0X3QmIGxlbmd0aCkKIHsKLSAgICBsb2NhdGlvbiA9IE5TTm90Rm91bmQ7CisgICAgbG9j
YXRpb24gPSBXVEY6Om5vdEZvdW5kOwogICAgIGxlbmd0aCA9IDA7CiAKICAgICBpZiAoIWlzVmFs
aWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCA1M2RkZjYxLi5jM2Y5MTI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC00MjEsNiArNDIxLDExIEBAIHZv
aWQgV0tCdW5kbGVQYWdlQ29uZmlybUNvbXBvc2l0aW9uV2l0aFRleHQoV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSZWYsIFdLU3RyaW5nUmVmCiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5jb25maXJtQ29tcG9z
aXRpb25Gb3JUZXN0aW5nKHRvV1RGU3RyaW5nKHRleHQpKTsKIH0KIAordm9pZCBXS0J1bmRsZVBh
Z2VTZWxlY3RlZFJhbmdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCB1aW50NjRfdCYgbG9jYXRp
b24sIHVpbnQ2NF90JiBsZW5ndGgpCit7CisgICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+Z2V0
U2VsZWN0ZWRSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKTsKK30KKwogYm9vbCBXS0J1bmRsZVBhZ2VD
YW5TaG93TUlNRVR5cGUoV0tCdW5kbGVQYWdlUmVmLCBXS1N0cmluZ1JlZiBtaW1lVHlwZVJlZikK
IHsKICAgICBjb25zdCBTdHJpbmcgbWltZVR5cGUgPSB0b1dURlN0cmluZyhtaW1lVHlwZVJlZik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oCmluZGV4IDExYjIwZGMuLjhi
MjlhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oCkBAIC02Nyw2
ICs2Nyw4IEBAIFdLX0VYUE9SVCBib29sIFdLQnVuZGxlUGFnZUlzVHJhY2tpbmdSZXBhaW50cyhX
S0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VSZXNldFRy
YWNrZWRSZXBhaW50cyhXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgV0tBcnJheVJl
ZiBXS0J1bmRsZVBhZ2VDb3B5VHJhY2tlZFJlcGFpbnRSZWN0cyhXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSk7CiAKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNlbGVjdGVkUmFuZ2UoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2VSZWYsIHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCk7CisK
IFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNldENvbXBvc2l0aW9uKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlLCBXS1N0cmluZ1JlZiB0ZXh0LCBpbnQgZnJvbSwgaW50IGxlbmd0aCk7CiBXS19FWFBP
UlQgYm9vbCBXS0J1bmRsZVBhZ2VIYXNDb21wb3NpdGlvbihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7
CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VDb25maXJtQ29tcG9zaXRpb24oV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IDIwNDk1ZDIuLjhjMWFhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMzMzAsNiArMzMzMCwyMyBAQCB2b2lkIFdl
YlBhZ2U6OnNpbXVsYXRlTW91c2VNb3Rpb24oV2ViQ29yZTo6SW50UG9pbnQgcG9zaXRpb24sIGRv
dWJsZSB0aW1lKQogICAgIG1vdXNlRXZlbnQoV2ViTW91c2VFdmVudChXZWJNb3VzZUV2ZW50OjpN
b3VzZU1vdmUsIFdlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9uLCBwb3NpdGlvbiwgcG9zaXRpb24sIDAs
IDAsIDAsIDAsIFdlYk1vdXNlRXZlbnQ6Ok1vZGlmaWVycygpLCB0aW1lKSk7CiB9CiAKK3ZvaWQg
V2ViUGFnZTo6Z2V0U2VsZWN0ZWRSYW5nZSh1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBs
ZW5ndGgpCit7CisgICAgbG9jYXRpb24gPSBXVEY6Om5vdEZvdW5kOworICAgIGxlbmd0aCA9IDA7
CisgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2l6
ZV90IGxvY2F0aW9uU2l6ZTsKKyAgICBzaXplX3QgbGVuZ3RoU2l6ZTsKKyAgICBSZWZQdHI8UmFu
Z2U+IHJhbmdlID0gZnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpOworICAg
IGlmIChyYW5nZSAmJiBUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdl
KGZyYW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50
KCksIHJhbmdlLmdldCgpLCBsb2NhdGlvblNpemUsIGxlbmd0aFNpemUpKSB7CisgICAgICAgIGxv
Y2F0aW9uID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxvY2F0aW9uU2l6ZSk7CisgICAgICAgIGxl
bmd0aCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihsZW5ndGhTaXplKTsKKyAgICB9Cit9CisKIHZv
aWQgV2ViUGFnZTo6c2V0Q29tcG9zaXRpb25Gb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgY29tcG9z
aXRpb25TdHJpbmcsIHVpbnQ2NF90IGZyb20sIHVpbnQ2NF90IGxlbmd0aCkKIHsKICAgICBGcmFt
ZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGE3
ZWFmNDguLjMxYWRkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaApAQCAtNDQ0LDcgKzQ0NCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbENvbXBv
c2l0aW9uKEVkaXRvclN0YXRlJiBuZXdTdGF0ZSk7CiAgICAgdm9pZCBpbnNlcnRUZXh0KGNvbnN0
IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCBy
ZXBsYWNlbWVudFJhbmdlRW5kLCBib29sJiBoYW5kbGVkLCBFZGl0b3JTdGF0ZSYgbmV3U3RhdGUp
OwogICAgIHZvaWQgZ2V0TWFya2VkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYg
bGVuZ3RoKTsKLSAgICB2b2lkIGdldFNlbGVjdGVkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1
aW50NjRfdCYgbGVuZ3RoKTsKICAgICB2b2lkIGdldEF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFu
Z2UodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgQXR0cmlidXRlZFN0cmluZyYp
OwogICAgIHZvaWQgY2hhcmFjdGVySW5kZXhGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCBwb2ludCwgdWludDY0X3QmIHJlc3VsdCk7CiAgICAgdm9pZCBmaXJzdFJlY3RGb3JDaGFyYWN0
ZXJSYW5nZSh1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBXZWJDb3JlOjpJbnRS
ZWN0JiByZXN1bHRSZWN0KTsKQEAgLTQ3Niw2ICs0NzUsOCBAQCBwdWJsaWM6CiAjZW5kaWYKICNl
bmRpZgogCisgICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWlu
dDY0X3QmIGxlbmd0aCk7CisKICAgICB2b2lkIHNldENvbXBvc2l0aW9uRm9yVGVzdGluZyhjb25z
dCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCB1aW50NjRfdCBmcm9tLCB1aW50NjRfdCBsZW5n
dGgpOwogICAgIGJvb2wgaGFzQ29tcG9zaXRpb25Gb3JUZXN0aW5nKCk7CiAgICAgdm9pZCBjb25m
aXJtQ29tcG9zaXRpb25Gb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tCmluZGV4IDJhY2Y4NWIuLmY4YzMxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTMzMSwyMyArMzMxLDYg
QEAgdm9pZCBXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZSh1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2
NF90JiBsZW5ndGgpCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGVkUmFuZ2Uo
dWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKQotewotICAgIGxvY2F0aW9uID0g
TlNOb3RGb3VuZDsKLSAgICBsZW5ndGggPSAwOwotICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICghZnJhbWUp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHNpemVfdCBsb2NhdGlvblNpemU7Ci0gICAgc2l6ZV90
IGxlbmd0aFNpemU7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lLT5zZWxlY3Rpb24o
KS0+dG9Ob3JtYWxpemVkUmFuZ2UoKTsKLSAgICBpZiAocmFuZ2UgJiYgVGV4dEl0ZXJhdG9yOjpn
ZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0
YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCByYW5nZS5nZXQoKSwgbG9jYXRpb25TaXpl
LCBsZW5ndGhTaXplKSkgewotICAgICAgICBsb2NhdGlvbiA9IHN0YXRpY19jYXN0PHVpbnQ2NF90
Pihsb2NhdGlvblNpemUpOwotICAgICAgICBsZW5ndGggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
bGVuZ3RoU2l6ZSk7Ci0gICAgfQotfQotCiB2b2lkIFdlYlBhZ2U6OmdldEF0dHJpYnV0ZWRTdWJz
dHJpbmdGcm9tUmFuZ2UodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgQXR0cmli
dXRlZFN0cmluZyYgcmVzdWx0KQogewogICAgIE5TUmFuZ2UgbnNSYW5nZSA9IE5TTWFrZVJhbmdl
KGxvY2F0aW9uLCBsZW5ndGggLSBsb2NhdGlvbik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDhjODcwNi4uYTBjNDU0MyAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDEyLTEwLTI2ICBNYXJpdXN6IEdyemVnb3JjenlrICA8bWFyaXVzei5nQHNhbXN1bmcuY29tPgor
CisgICAgICAgIFtXSzJdW1dUUl0gVGV4dCBpbnB1dCBjb250cm9sbGVyIG5lZWRzIHNlbGVjdGVk
UmFuZ2UgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk5NDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRGVjbGFyYXRpb24gYW5kIGltcGxlbWVudGF0aW9uIG9mIHNlbGVjdGVkUmFu
Z2UgZnVuY3Rpb24gaW4gVGV4dElucHV0Q29udHJvbGxlci4KKworICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGV4dElucHV0Q29udHJvbGxlci5pZGw6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGV4dElucHV0Q29udHJvbGxlcjo6c2VsZWN0ZWRS
YW5nZSk6CisgICAgICAgIChXVFIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5oOgorICAgICAgICAoVGV4dElucHV0Q29udHJv
bGxlcik6CisKIDIwMTItMTAtMjYgIFhpYW9ibyBXYW5nICA8eGJ3YW5nQHRvcmNobW9iaWxlLmNv
bS5jbj4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gU3VwcG9ydCBwaXhlbCB0ZXN0cyBmb3IgQmxh
Y2tCZXJyeSBEUlQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGV4dElucHV0Q29udHJvbGxlci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1RleHRJbnB1dENvbnRyb2xsZXIuaWRsCmlu
ZGV4IDAzOTk4OGEuLjZkODVmNzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGV4dElucHV0Q29udHJvbGxlci5pZGwKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXh0SW5wdXRDb250
cm9sbGVyLmlkbApAQCAtMjgsNSArMjgsNiBAQCBpbnRlcmZhY2UgVGV4dElucHV0Q29udHJvbGxl
ciB7CiAgICAgYm9vbGVhbiBoYXNNYXJrZWRUZXh0KCk7CiAgICAgdm9pZCB1bm1hcmtUZXh0KCk7
CiAgICAgdm9pZCBpbnNlcnRUZXh0KGluIERPTVN0cmluZyBzdHJpbmcpOworICAgIG9iamVjdCBz
ZWxlY3RlZFJhbmdlKCk7CiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcAppbmRleCAwMDg3
YWEzLi4xN2FlYWQ1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2UuaCIKICNpbmNsdWRlICJKU1RleHRJbnB1
dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTdHJpbmdGdW5jdGlvbnMuaCIKKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLQnVuZGxlRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFnZVBy
aXZhdGUuaD4KIAogbmFtZXNwYWNlIFdUUiB7CkBAIC03Nyw0ICs3OCwyMSBAQCB2b2lkIFRleHRJ
bnB1dENvbnRyb2xsZXI6Omluc2VydFRleHQoSlNTdHJpbmdSZWYgdGV4dCkKICAgICBXS0J1bmRs
ZVBhZ2VDb25maXJtQ29tcG9zaXRpb25XaXRoVGV4dChJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCku
cGFnZSgpLT5wYWdlKCksIHRvV0sodGV4dCkuZ2V0KCkpOwogfQogCitKU1ZhbHVlUmVmIFRleHRJ
bnB1dENvbnRyb2xsZXI6OnNlbGVjdGVkUmFuZ2UoKQoreworICAgIHVpbnQ2NF90IHN0YXJ0LCBs
ZW5ndGg7CisgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkucGFnZSgpLT5wYWdlKCk7CisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1
bmRsZVBhZ2VHZXRNYWluRnJhbWUocGFnZSk7CisgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBX
S0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKKworICAgIFdLQnVu
ZGxlUGFnZVNlbGVjdGVkUmFuZ2UocGFnZSwgc3RhcnQsIGxlbmd0aCk7CisgICAgaWYgKHN0YXJ0
ID09IFdURjo6bm90Rm91bmQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKKworICAgIEpTVmFsdWVSZWYgYXJyYXlWYWx1ZXNbMl07CisgICAgYXJyYXlWYWx1
ZXNbMF0gPSBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCBzdGFydCk7CisgICAgYXJyYXlWYWx1
ZXNbMV0gPSBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCBsZW5ndGgpOworICAgIHJldHVybiBK
U09iamVjdE1ha2VBcnJheShjb250ZXh0LCAyLCBhcnJheVZhbHVlcywgMCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuaAppbmRleCA3MWEwNDM3Li5lNmI5ZGYy
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJ
bnB1dENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuaApAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBoYXNNYXJrZWRUZXh0KCk7CiAgICAgdm9pZCB1bm1hcmtUZXh0KCk7CiAgICAgdm9pZCBp
bnNlcnRUZXh0KEpTU3RyaW5nUmVmIHRleHQpOworICAgIEpTVmFsdWVSZWYgc2VsZWN0ZWRSYW5n
ZSgpOwogCiBwcml2YXRlOgogICAgIFRleHRJbnB1dENvbnRyb2xsZXIoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176500</attachid>
            <date>2012-11-28 09:49:11 -0800</date>
            <delta_ts>2012-12-12 01:09:59 -0800</delta_ts>
            <desc>Rebase and extend function to UIProcess</desc>
            <filename>bug99438.patch</filename>
            <type>text/plain</type>
            <size>17674</size>
            <attacher name="Mariusz Grzegorczyk">mariusz.g</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4MmMyZDhlLi44MDJlOGFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTEt
MjggIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW1dLMl1bV1RSXSBUZXh0IGlucHV0IGNvbnRyb2xsZXIgbmVlZHMgc2VsZWN0ZWRSYW5nZSBp
bXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTk0MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBHYXJkZW5pbmcgZm9yIHdlYmtpdDIgcmVsYXRlZCB3aXRoIHRleHRJbnB1dENvbnRyb2xs
ZXIuc2VsZWN0ZWRSYW5nZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL3dr
Mi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEyLTExLTI4ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4g
IDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAgIE1vdmUgY2hpbGRyZW5BZmZlY3Rl
ZEJ5IGJpdHMgZnJvbSBSZW5kZXJTdHlsZSB0byBFbGVtZW50CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3drMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGVkYTg1NzUuLmViYzkzMDUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMzksMTggKzIzOSw4IEBAIGZh
c3QvbG9hZGVyL3JlY3Vyc2l2ZS1iZWZvcmUtdW5sb2FkLWNyYXNoLmh0bWwKIAogIyBXZWJLaXRU
ZXN0UnVubmVyIG5lZWRzIHRleHRJbnB1dENvbnRyb2xsZXIKICMgPGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjMzNz4KLWVkaXRpbmcvaW5wdXQvc2V0dGluZy1pbnB1
dC12YWx1ZS1jYW5jZWwtaW1lLWNvbXBvc2l0aW9uLmh0bWwKLXN2Zy90ZXh0L2NhcmV0LWluLXN2
Zy10ZXh0LnhodG1sCi1lZGl0aW5nL2luc2VydGluZy9jYXJldC1wb3NpdGlvbi5odG1sCiBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLmh0bWwKLWVkaXRp
bmcvc2VsZWN0aW9uLzU4MjUzNTAtMS5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTIu
aHRtbAotZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1sZWZ0LXJpZ2h0Lmh0bWwKLWVkaXRpbmcvc3R5
bGUvdGV4dC1pbmRlbnQuaHRtbAotZmFzdC9kb20vdGFiLWluLXJpZ2h0LWFsaWdubWVudC5odG1s
CiBmYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1sCi1mYXN0L2Zvcm1z
L2N1cnNvci1hdC1lZGl0YWJsZS1jb250ZW50LWJvdW5kYXJ5Lmh0bWwKLWZhc3QvdGV4dC9pbnRl
cm5hdGlvbmFsL3RoYWktY3Vyc29yLXBvc2l0aW9uLmh0bWwKIHBsYXRmb3JtL21hYy9lZGl0aW5n
L2lucHV0LzU1NzY2MTkuaHRtbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvYm9sZC1ub2Rl
Lmh0bWwKIHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2NhcmV0LXByaW1hcnktYmlkaS5odG1s
CkBAIC0yNzUsNiArMjY1LDIzIEBAIHBsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1z
dWJzdHJpbmctZnJvbS1yYW5nZS1pbi10ZXh0ZmllbGQuaHRtbAogcGxhdGZvcm0vbWFjL2Zhc3Qv
dGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLmh0bWwKIHBsYXRmb3JtL21hYy9m
YXN0L3RleHQvanVzdGlmaWVkLXRleHQtcmVjdC5odG1sCiAKKyMgV2ViS2l0VGVzdFJ1bm5lciBu
ZWVkcyB0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlCisjIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMjE5PgorZWRpdGluZy9p
bnNlcnRpbmcvY2FyZXQtcG9zaXRpb24uaHRtbAorZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0x
Lmh0bWwKK2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMi5odG1sCitlZGl0aW5nL3NlbGVjdGlv
bi9taXhlZC1lZGl0YWJpbGl0eS0xMC5odG1sCitlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWxlZnQt
cmlnaHQuaHRtbAorZWRpdGluZy9zdHlsZS90ZXh0LWluZGVudC5odG1sCitmYXN0L2RvbS90YWIt
aW4tcmlnaHQtYWxpZ25tZW50Lmh0bWwKK2Zhc3QvZm9ybXMvY3Vyc29yLWF0LWVkaXRhYmxlLWNv
bnRlbnQtYm91bmRhcnkuaHRtbAorZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGhhaS1jdXJzb3It
cG9zaXRpb24uaHRtbAorc3ZnL3RleHQvY2FyZXQtaW4tc3ZnLXRleHQueGh0bWwKKworIyBXZWJL
aXRUZXN0UnVubmVyIG5lZWRzIHRleHRJbnB1dENvbnRyb2xsZXIubWFya2VkUmFuZ2UKKyMgPGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAyMjI+CitlZGl0aW5nL2lu
cHV0L3NldHRpbmctaW5wdXQtdmFsdWUtY2FuY2VsLWltZS1jb21wb3NpdGlvbi5odG1sCisKICMg
V2ViS2l0VGVzdFJ1bm5lciBuZWVkcyB0byBzdXBwb3J0IG5lZWRzRGVsZXRpb25VSSBtZWNoYW5p
c20gdG8gc2hvdyBkZWxldGlvbiBVSQogIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQyNTM1PgogZmFzdC9kb20vRWxlbWVudC9pZC1pbi1kZWxldGVidXR0b24uaHRt
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDEwYmM4MzQuLmExOTM5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MSBAQAorMjAxMi0xMS0yOCAgTWFyaXVzeiBHcnplZ29yY3p5ayAgPG1hcml1c3ouZ0BzYW1zdW5n
LmNvbT4KKworICAgICAgICBbV0syXVtXVFJdIFRleHQgaW5wdXQgY29udHJvbGxlciBuZWVkcyBz
ZWxlY3RlZFJhbmdlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05OTQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIGdldHRpbmcgc2VsZWN0ZWQgcmFu
Z2UgZnJvbSB3ZWJwYWdlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
OgorICAgICAgICAoLVtXS1ZpZXcgc2VsZWN0ZWRSYW5nZV0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpnZXRTZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJQYWdlUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNlbGVj
dGVkUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U2VsZWN0ZWRSYW5nZSk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIChXZWJQYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW06CisKIDIwMTItMTEtMjggIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3
ZWJraXQub3JnPgogCiAgICAgICAgIFtFRkxdW1dLMl0gTWluaUJyb3dzZXIgcmVuZGVyaW5nIHNo
b3VsZCBub3QgZ2V0IGJsdXJyeSB3aGVuIHNjcm9sbGVkIGRvd24gd2l0aCBkaWZmZXJlbnQgc2Nh
bGUgdmFsdWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KaW5k
ZXggNGUzMGIzMy4uOWI5MDYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlldy5tbQpAQCAtMTQzMSw4ICsxNDMxLDggQEAgc3RhdGljIGNvbnN0IHNob3J0IGtJT0hJ
REV2ZW50VHlwZVNjcm9sbCA9IDY7CiAgICAgX2RhdGEtPl9wYWdlLT5nZXRTZWxlY3RlZFJhbmdl
KHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25MZW5ndGgpOwogCiAgICAgTlNSYW5nZSByZXN1bHQg
PSBOU01ha2VSYW5nZShzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uTGVuZ3RoKTsKLSAgICBpZiAo
cmVzdWx0LmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgIExPRyhUZXh0SW5wdXQsICJz
ZWxlY3RlZFJhbmdlIC0+IChOU05vdEZvdW5kLCAldSkiLCByZXN1bHQubGVuZ3RoKTsKKyAgICBp
ZiAocmVzdWx0LmxvY2F0aW9uID09IFdURjo6bm90Rm91bmQpCisgICAgICAgIExPRyhUZXh0SW5w
dXQsICJzZWxlY3RlZFJhbmdlIC0+IChub3RGb3VuZCwgJXUpIiwgcmVzdWx0Lmxlbmd0aCk7CiAg
ICAgZWxzZQogICAgICAgICBMT0coVGV4dElucHV0LCAic2VsZWN0ZWRSYW5nZSAtPiAoJXUsICV1
KSIsIHJlc3VsdC5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZGY0MTZjMC4uN2NmZDc2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTk2MCw3ICs5NjAsMTggQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldE1haW50YWluc0luYWN0aXZlU2VsZWN0aW9uKGJvb2wgbmV3
VmFsdWUpCiB7CiAgICAgbV9tYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbiA9IG5ld1ZhbHVlOwog
fQotICAgIAorCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZSh1aW50NjRfdCYg
bG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpCit7CisgICAgbG9jYXRpb24gPSBXVEY6Om5vdEZv
dW5kOworICAgIGxlbmd0aCA9IDA7CisKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgcHJvY2VzcygpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2Vs
ZWN0ZWRSYW5nZSgpLCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0ZWRSYW5nZTo6UmVwbHko
bG9jYXRpb24sIGxlbmd0aCksIG1fcGFnZUlEKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmV4
ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKQogewogICAgIGlmICgh
aXNWYWxpZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDk4
ZmE4YTQuLmU5MDQyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTM2Myw2ICszNjMsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBtYWludGFpbnNJbmFj
dGl2ZVNlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rp
b247IH0KICAgICB2b2lkIHNldE1haW50YWluc0luYWN0aXZlU2VsZWN0aW9uKGJvb2wpOworCisg
ICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxl
bmd0aCk7CisKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkgCiAgICAgdm9pZCBkaWRSZW5k
ZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KTsKICNlbmRpZgpAQCAtMzk0LDcgKzM5Nyw2IEBAIHB1
YmxpYzoKICAgICBib29sIGluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCBy
ZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQpOwogICAg
IGJvb2wgaW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVw
bGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kLCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0ZXJu
YXRpdmVzKTsKICAgICB2b2lkIGdldE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWlu
dDY0X3QmIGxlbmd0aCk7Ci0gICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlKHVpbnQ2NF90JiBsb2Nh
dGlvbiwgdWludDY0X3QmIGxlbmd0aCk7CiAgICAgdm9pZCBnZXRBdHRyaWJ1dGVkU3Vic3RyaW5n
RnJvbVJhbmdlKHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIEF0dHJpYnV0ZWRT
dHJpbmcmKTsKICAgICB1aW50NjRfdCBjaGFyYWN0ZXJJbmRleEZvclBvaW50KGNvbnN0IFdlYkNv
cmU6OkludFBvaW50KTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGZpcnN0UmVjdEZvckNoYXJhY3Rl
clJhbmdlKHVpbnQ2NF90LCB1aW50NjRfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDZmMDk1NmUuLjFhMTRjYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yNDIs
MTcgKzI0Miw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5nZSh1aW50NjRfdCYg
bG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpCiAgICAgcHJvY2VzcygpLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFnZTo6R2V0TWFya2VkUmFuZ2UoKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1h
cmtlZFJhbmdlOjpSZXBseShsb2NhdGlvbiwgbGVuZ3RoKSwgbV9wYWdlSUQpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZSh1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2
NF90JiBsZW5ndGgpCi17Ci0gICAgbG9jYXRpb24gPSBOU05vdEZvdW5kOwotICAgIGxlbmd0aCA9
IDA7Ci0KLSAgICBpZiAoIWlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vz
cygpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0ZWRSYW5nZSgpLCBNZXNz
YWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0ZWRSYW5nZTo6UmVwbHkobG9jYXRpb24sIGxlbmd0aCks
IG1fcGFnZUlEKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OmdldEF0dHJpYnV0ZWRTdWJzdHJp
bmdGcm9tUmFuZ2UodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgQXR0cmlidXRl
ZFN0cmluZyYgcmVzdWx0KQogewogICAgIGlmICghaXNWYWxpZCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuY3BwCmluZGV4IDAwNTgxMWEuLjAyMjdjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5jcHAKQEAgLTQ0Myw2ICs0NDMsMTEgQEAgdm9pZCBXS0J1bmRsZVBhZ2VDb25maXJt
Q29tcG9zaXRpb25XaXRoVGV4dChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYK
ICAgICB0b0ltcGwocGFnZVJlZiktPmNvbmZpcm1Db21wb3NpdGlvbkZvclRlc3RpbmcodG9XVEZT
dHJpbmcodGV4dCkpOwogfQogCit2b2lkIFdLQnVuZGxlUGFnZVNlbGVjdGVkUmFuZ2UoV0tCdW5k
bGVQYWdlUmVmIHBhZ2VSZWYsIHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCkK
K3sKKyAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5nZXRTZWxlY3RlZFJhbmdlKGxvY2F0aW9u
LCBsZW5ndGgpOworfQorCiBib29sIFdLQnVuZGxlUGFnZUNhblNob3dNSU1FVHlwZShXS0J1bmRs
ZVBhZ2VSZWYsIFdLU3RyaW5nUmVmIG1pbWVUeXBlUmVmKQogewogICAgIGNvbnN0IFN0cmluZyBt
aW1lVHlwZSA9IHRvV1RGU3RyaW5nKG1pbWVUeXBlUmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2VQcml2YXRlLmgKaW5kZXggZDc2OWZiNC4uYTc2ZWY4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgKQEAgLTY3LDYgKzY3LDggQEAgV0tfRVhQT1JUIGJv
b2wgV0tCdW5kbGVQYWdlSXNUcmFja2luZ1JlcGFpbnRzKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsK
IFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVJlc2V0VHJhY2tlZFJlcGFpbnRzKFdLQnVuZGxl
UGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCBXS0FycmF5UmVmIFdLQnVuZGxlUGFnZUNvcHlUcmFj
a2VkUmVwYWludFJlY3RzKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKIAorV0tfRVhQT1JUIHZvaWQg
V0tCdW5kbGVQYWdlU2VsZWN0ZWRSYW5nZShXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgdWludDY0
X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKTsKKwogV0tfRVhQT1JUIHZvaWQgV0tCdW5k
bGVQYWdlU2V0Q29tcG9zaXRpb24oV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHRl
eHQsIGludCBmcm9tLCBpbnQgbGVuZ3RoKTsKIFdLX0VYUE9SVCBib29sIFdLQnVuZGxlUGFnZUhh
c0NvbXBvc2l0aW9uKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVu
ZGxlUGFnZUNvbmZpcm1Db21wb3NpdGlvbihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggODNjMGFlNy4u
Nzg0MDI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtMzM4Nyw2ICszMzg3LDIzIEBAIHZvaWQgV2ViUGFnZTo6c2ltdWxhdGVNb3VzZU1v
dGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb3NpdGlvbiwgZG91YmxlIHRpbWUpCiAgICAgbW91c2VF
dmVudChXZWJNb3VzZUV2ZW50KFdlYk1vdXNlRXZlbnQ6Ok1vdXNlTW92ZSwgV2ViTW91c2VFdmVu
dDo6Tm9CdXR0b24sIHBvc2l0aW9uLCBwb3NpdGlvbiwgMCwgMCwgMCwgMCwgV2ViTW91c2VFdmVu
dDo6TW9kaWZpZXJzKCksIHRpbWUpKTsKIH0KIAordm9pZCBXZWJQYWdlOjpnZXRTZWxlY3RlZFJh
bmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCkKK3sKKyAgICBsb2NhdGlv
biA9IFdURjo6bm90Rm91bmQ7CisgICAgbGVuZ3RoID0gMDsKKyAgICBGcmFtZSogZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAo
IWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBzaXplX3QgbG9jYXRpb25TaXplOworICAg
IHNpemVfdCBsZW5ndGhTaXplOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+c2Vs
ZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgaWYgKHJhbmdlICYmIFRleHRJdGVy
YXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoZnJhbWUtPnNlbGVjdGlvbigpLT5y
b290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgcmFuZ2UuZ2V0KCksIGxvY2F0
aW9uU2l6ZSwgbGVuZ3RoU2l6ZSkpIHsKKyAgICAgICAgbG9jYXRpb24gPSBzdGF0aWNfY2FzdDx1
aW50NjRfdD4obG9jYXRpb25TaXplKTsKKyAgICAgICAgbGVuZ3RoID0gc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KGxlbmd0aFNpemUpOworICAgIH0KK30KKwogdm9pZCBXZWJQYWdlOjpzZXRDb21wb3Np
dGlvbkZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgdWludDY0X3Qg
ZnJvbSwgdWludDY0X3QgbGVuZ3RoKQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMDBlYTgxYzguLjFmZWZiMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDQzLDcgKzQ0
Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbENvbXBvc2l0aW9uKEVkaXRvclN0YXRlJiBu
ZXdTdGF0ZSk7CiAgICAgdm9pZCBpbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0
X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kLCBi
b29sJiBoYW5kbGVkLCBFZGl0b3JTdGF0ZSYgbmV3U3RhdGUpOwogICAgIHZvaWQgZ2V0TWFya2Vk
UmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKTsKLSAgICB2b2lkIGdl
dFNlbGVjdGVkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKTsKICAg
ICB2b2lkIGdldEF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UodWludDY0X3QgbG9jYXRpb24s
IHVpbnQ2NF90IGxlbmd0aCwgQXR0cmlidXRlZFN0cmluZyYpOwogICAgIHZvaWQgY2hhcmFjdGVy
SW5kZXhGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDY0X3QmIHJl
c3VsdCk7CiAgICAgdm9pZCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSh1aW50NjRfdCBsb2Nh
dGlvbiwgdWludDY0X3QgbGVuZ3RoLCBXZWJDb3JlOjpJbnRSZWN0JiByZXN1bHRSZWN0KTsKQEAg
LTQ3NSw2ICs0NzQsOCBAQCBwdWJsaWM6CiAjZW5kaWYKICNlbmRpZgogCisgICAgdm9pZCBnZXRT
ZWxlY3RlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCk7CisKICAg
ICB2b2lkIHNldENvbXBvc2l0aW9uRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9u
U3RyaW5nLCB1aW50NjRfdCBmcm9tLCB1aW50NjRfdCBsZW5ndGgpOwogICAgIGJvb2wgaGFzQ29t
cG9zaXRpb25Gb3JUZXN0aW5nKCk7CiAgICAgdm9pZCBjb25maXJtQ29tcG9zaXRpb25Gb3JUZXN0
aW5nKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBhZDQy
OTJiLi4wNGNlMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtODksNiArODksOCBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlIHsKIAogICAgIENsZWFyU2VsZWN0aW9uKCkKIAorICAgIEdldFNlbGVjdGVkUmFuZ2Uo
KSAtPiAodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCkKKwogICAgICMgQ2FsbGJh
Y2tzLgogICAgIEdldENvbnRlbnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKICNpZiBF
TkFCTEUoTUhUTUwpCkBAIC0yNzMsNyArMjc1LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAg
ICAgQ2FuY2VsQ29tcG9zaXRpb24oKSAtPiAoV2ViS2l0OjpFZGl0b3JTdGF0ZSBuZXdTdGF0ZSkK
ICAgICBJbnNlcnRUZXh0KFdURjo6U3RyaW5nIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFu
Z2VTdGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCkgLT4gKGJvb2wgaGFuZGxlZCwg
V2ViS2l0OjpFZGl0b3JTdGF0ZSBuZXdTdGF0ZSkKICAgICBHZXRNYXJrZWRSYW5nZSgpIC0+ICh1
aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoKQotICAgIEdldFNlbGVjdGVkUmFuZ2Uo
KSAtPiAodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCkKICAgICBHZXRBdHRyaWJ1
dGVkU3Vic3RyaW5nRnJvbVJhbmdlKHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgp
IC0+IChXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJpbmcgcmVzdWx0KQogICAgIENoYXJhY3RlckluZGV4
Rm9yUG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpIC0+ICh1aW50NjRfdCByZXN1bHQpCiAg
ICAgRmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90
IGxlbmd0aCkgLT4gKFdlYkNvcmU6OkludFJlY3QgcmVzdWx0UmVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA1ZjA5
ZDc1Li45MGM0ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0zMzEsMjMgKzMzMSw2IEBAIHZvaWQgV2ViUGFnZTo6
Z2V0TWFya2VkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKQogICAg
IH0KIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3RlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlv
biwgdWludDY0X3QmIGxlbmd0aCkKLXsKLSAgICBsb2NhdGlvbiA9IE5TTm90Rm91bmQ7Ci0gICAg
bGVuZ3RoID0gMDsKLSAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBzaXplX3QgbG9jYXRpb25TaXplOwotICAgIHNpemVfdCBsZW5ndGhTaXplOwotICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJh
bmdlKCk7Ci0gICAgaWYgKHJhbmdlICYmIFRleHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5n
dGhGcm9tUmFuZ2UoZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1
bWVudEVsZW1lbnQoKSwgcmFuZ2UuZ2V0KCksIGxvY2F0aW9uU2l6ZSwgbGVuZ3RoU2l6ZSkpIHsK
LSAgICAgICAgbG9jYXRpb24gPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obG9jYXRpb25TaXplKTsK
LSAgICAgICAgbGVuZ3RoID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxlbmd0aFNpemUpOwotICAg
IH0KLX0KLQogdm9pZCBXZWJQYWdlOjpnZXRBdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKHVp
bnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIEF0dHJpYnV0ZWRTdHJpbmcmIHJlc3Vs
dCkKIHsKICAgICBOU1JhbmdlIG5zUmFuZ2UgPSBOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3Ro
IC0gbG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDBlMTlkZTEuLmQ5YWYxMjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0xMS0yOCAgTWFyaXVz
eiBHcnplZ29yY3p5ayAgPG1hcml1c3ouZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbV0syXVtX
VFJdIFRleHQgaW5wdXQgY29udHJvbGxlciBuZWVkcyBzZWxlY3RlZFJhbmdlIGltcGxlbWVudGF0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTQz
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlY2xh
cmF0aW9uIGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBzZWxlY3RlZFJhbmdlIGZ1bmN0aW9uIGluIFRl
eHRJbnB1dENvbnRyb2xsZXIuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1RleHRJbnB1dENvbnRyb2xsZXIuaWRsOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXVFI6OlRleHRJbnB1dENvbnRyb2xsZXI6OnNlbGVjdGVkUmFuZ2UpOgorICAgICAgICAo
V1RSKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1
dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFRleHRJbnB1dENvbnRyb2xsZXIpOgorCiAyMDEyLTEx
LTI4ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KIAogICAgICAgICBNaW5v
ciBjbGVhbnVwIGluIFRlc3RJbnZvY2F0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1RleHRJbnB1dENvbnRyb2xsZXIuaWRsIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXh0SW5wdXRD
b250cm9sbGVyLmlkbAppbmRleCAwMzk5ODhhLi42ZDg1Zjc4IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1RleHRJbnB1dENvbnRyb2xs
ZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGV4dElucHV0Q29udHJvbGxlci5pZGwKQEAgLTI4LDUgKzI4LDYgQEAgaW50ZXJmYWNlIFRl
eHRJbnB1dENvbnRyb2xsZXIgewogICAgIGJvb2xlYW4gaGFzTWFya2VkVGV4dCgpOwogICAgIHZv
aWQgdW5tYXJrVGV4dCgpOwogICAgIHZvaWQgaW5zZXJ0VGV4dChpbiBET01TdHJpbmcgc3RyaW5n
KTsKKyAgICBvYmplY3Qgc2VsZWN0ZWRSYW5nZSgpOwogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxl
ci5jcHAKaW5kZXggMDA4N2FhMy4uMTdhZWFkNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlLmgiCiAjaW5j
bHVkZSAiSlNUZXh0SW5wdXRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU3RyaW5nRnVuY3Rpb25z
LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViS2l0
Mi9XS0J1bmRsZVBhZ2VQcml2YXRlLmg+CiAKIG5hbWVzcGFjZSBXVFIgewpAQCAtNzcsNCArNzgs
MjEgQEAgdm9pZCBUZXh0SW5wdXRDb250cm9sbGVyOjppbnNlcnRUZXh0KEpTU3RyaW5nUmVmIHRl
eHQpCiAgICAgV0tCdW5kbGVQYWdlQ29uZmlybUNvbXBvc2l0aW9uV2l0aFRleHQoSW5qZWN0ZWRC
dW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCB0b1dLKHRleHQpLmdldCgpKTsKIH0KIAor
SlNWYWx1ZVJlZiBUZXh0SW5wdXRDb250cm9sbGVyOjpzZWxlY3RlZFJhbmdlKCkKK3sKKyAgICB1
aW50NjRfdCBzdGFydCwgbGVuZ3RoOworICAgIFdLQnVuZGxlUGFnZVJlZiBwYWdlID0gSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpOworICAgIFdLQnVuZGxlRnJhbWVSZWYg
bWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKHBhZ2UpOworICAgIEpTQ29udGV4
dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFt
ZSk7CisKKyAgICBXS0J1bmRsZVBhZ2VTZWxlY3RlZFJhbmdlKHBhZ2UsIHN0YXJ0LCBsZW5ndGgp
OworICAgIGlmIChzdGFydCA9PSBXVEY6Om5vdEZvdW5kKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBKU1ZhbHVlUmVmIGFycmF5VmFsdWVzWzJd
OworICAgIGFycmF5VmFsdWVzWzBdID0gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgc3RhcnQp
OworICAgIGFycmF5VmFsdWVzWzFdID0gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgbGVuZ3Ro
KTsKKyAgICByZXR1cm4gSlNPYmplY3RNYWtlQXJyYXkoY29udGV4dCwgMiwgYXJyYXlWYWx1ZXMs
IDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5oIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmgKaW5kZXgg
NzFhMDQzNy4uZTZiOWRmMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmgKQEAgLTQ1LDYgKzQ1LDcg
QEAgcHVibGljOgogICAgIGJvb2wgaGFzTWFya2VkVGV4dCgpOwogICAgIHZvaWQgdW5tYXJrVGV4
dCgpOwogICAgIHZvaWQgaW5zZXJ0VGV4dChKU1N0cmluZ1JlZiB0ZXh0KTsKKyAgICBKU1ZhbHVl
UmVmIHNlbGVjdGVkUmFuZ2UoKTsKIAogcHJpdmF0ZToKICAgICBUZXh0SW5wdXRDb250cm9sbGVy
KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178994</attachid>
            <date>2012-12-12 01:09:59 -0800</date>
            <delta_ts>2013-03-06 10:07:52 -0800</delta_ts>
            <desc>Rebased, added comment about moving mac implementation to common part</desc>
            <filename>bug99438.patch</filename>
            <type>text/plain</type>
            <size>17736</size>
            <attacher name="Mariusz Grzegorczyk">mariusz.g</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5MDhlNTQ1Li41NTlhYjBmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTIt
MTEgIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW1dLMl1bV1RSXSBUZXh0IGlucHV0IGNvbnRyb2xsZXIgbmVlZHMgc2VsZWN0ZWRSYW5nZSBp
bXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTk0MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBHYXJkZW5pbmcgZm9yIHdlYmtpdDIgcmVsYXRlZCB3aXRoIHRleHRJbnB1dENvbnRyb2xs
ZXIuc2VsZWN0ZWRSYW5nZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL3dr
Mi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEyLTEyLTExICBBbGV4YW5kZXIgUGF2bG92ICA8YXBh
dmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTM2OTQ4KTogaW5zcGVj
dG9yL3N0eWxlcy9pbXBvcnQtcHNldWRvY2xhc3MtY3Jhc2guaHRtbCBoaXRzIGFuIGFzc2VydGlv
bgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhYzhjZDI0
Li4xZDczZWYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtMjM5LDE4ICsyMzksOCBAQCBmYXN0L2xvYWRlci9yZWN1cnNpdmUtYmVmb3JlLXVubG9hZC1j
cmFzaC5odG1sCiAKICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyB0ZXh0SW5wdXRDb250cm9sbGVy
CiAjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIzMzc+Ci1lZGl0
aW5nL2lucHV0L3NldHRpbmctaW5wdXQtdmFsdWUtY2FuY2VsLWltZS1jb21wb3NpdGlvbi5odG1s
Ci1zdmcvdGV4dC9jYXJldC1pbi1zdmctdGV4dC54aHRtbAotZWRpdGluZy9pbnNlcnRpbmcvY2Fy
ZXQtcG9zaXRpb24uaHRtbAogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1iYWNrc3BhY2UtYmV0
d2Vlbi1saW5lcy5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEuaHRtbAotZWRpdGlu
Zy9zZWxlY3Rpb24vNTgyNTM1MC0yLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL21vdmUtbGVmdC1y
aWdodC5odG1sCi1lZGl0aW5nL3N0eWxlL3RleHQtaW5kZW50Lmh0bWwKLWZhc3QvZG9tL3RhYi1p
bi1yaWdodC1hbGlnbm1lbnQuaHRtbAogZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50
cy0wMDEuaHRtbAotZmFzdC9mb3Jtcy9jdXJzb3ItYXQtZWRpdGFibGUtY29udGVudC1ib3VuZGFy
eS5odG1sCi1mYXN0L3RleHQvaW50ZXJuYXRpb25hbC90aGFpLWN1cnNvci1wb3NpdGlvbi5odG1s
CiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC81NTc2NjE5Lmh0bWwKIHBsYXRmb3JtL21hYy9l
ZGl0aW5nL2lucHV0L2JvbGQtbm9kZS5odG1sCiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9j
YXJldC1wcmltYXJ5LWJpZGkuaHRtbApAQCAtMjc1LDYgKzI2NSwyMyBAQCBwbGF0Zm9ybS9tYWMv
ZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtaW4tdGV4dGZpZWxkLmh0
bWwKIHBsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5n
ZS5odG1sCiBwbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2p1c3RpZmllZC10ZXh0LXJlY3QuaHRtbAog
CisjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RG
b3JDaGFyYWN0ZXJSYW5nZQorIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMDIxOT4KK2VkaXRpbmcvaW5zZXJ0aW5nL2NhcmV0LXBvc2l0aW9uLmh0bWwKK2VkaXRp
bmcvc2VsZWN0aW9uLzU4MjUzNTAtMS5odG1sCitlZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTIu
aHRtbAorZWRpdGluZy9zZWxlY3Rpb24vbWl4ZWQtZWRpdGFiaWxpdHktMTAuaHRtbAorZWRpdGlu
Zy9zZWxlY3Rpb24vbW92ZS1sZWZ0LXJpZ2h0Lmh0bWwKK2VkaXRpbmcvc3R5bGUvdGV4dC1pbmRl
bnQuaHRtbAorZmFzdC9kb20vdGFiLWluLXJpZ2h0LWFsaWdubWVudC5odG1sCitmYXN0L2Zvcm1z
L2N1cnNvci1hdC1lZGl0YWJsZS1jb250ZW50LWJvdW5kYXJ5Lmh0bWwKK2Zhc3QvdGV4dC9pbnRl
cm5hdGlvbmFsL3RoYWktY3Vyc29yLXBvc2l0aW9uLmh0bWwKK3N2Zy90ZXh0L2NhcmV0LWluLXN2
Zy10ZXh0LnhodG1sCisKKyMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyB0ZXh0SW5wdXRDb250cm9s
bGVyLm1hcmtlZFJhbmdlCisjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAwMjIyPgorZWRpdGluZy9pbnB1dC9zZXR0aW5nLWlucHV0LXZhbHVlLWNhbmNlbC1pbWUt
Y29tcG9zaXRpb24uaHRtbAorCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gc3VwcG9ydCBu
ZWVkc0RlbGV0aW9uVUkgbWVjaGFuaXNtIHRvIHNob3cgZGVsZXRpb24gVUkKICMgPGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjUzNT4KIGZhc3QvZG9tL0VsZW1lbnQv
aWQtaW4tZGVsZXRlYnV0dG9uLmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzMjIyYzAwLi4xM2FlYjhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTItMTItMTEgIE1hcml1c3ogR3J6ZWdvcmN6
eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW1dLMl1bV1RSXSBUZXh0IGlu
cHV0IGNvbnRyb2xsZXIgbmVlZHMgc2VsZWN0ZWRSYW5nZSBpbXBsZW1lbnRhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk0MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRhdGlvbiBv
ZiBnZXR0aW5nIHNlbGVjdGVkIHJhbmdlIGZyb20gd2VicGFnZS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IHNlbGVjdGVkUmFuZ2Vd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDogSW1wbGVtZW50YXRpb24g
bW92ZWQgZnJvbSBNYWMgcG9ydCB0byBjb21tb24gcGxhY2UuCisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNlbGVjdGVkUmFuZ2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYlBhZ2VQcm94eSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAo
V0tCdW5kbGVQYWdlU2VsZWN0ZWRSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTZWxl
Y3RlZFJhbmdlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYlBhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbToKKwogMjAxMi0xMi0xMSAgVGhpYWdvIE1hcmNvcyBQLiBTYW50
b3MgIDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBJbmNyZWFzZSB0
aGUgdGltZW91dCBvZiB0aGUgQVBJIHVuaXQgdGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCAzZjg1YzBhLi40NzIzN2Q1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0xNDI3LDggKzE0MjcsOCBAQCBz
dGF0aWMgY29uc3Qgc2hvcnQga0lPSElERXZlbnRUeXBlU2Nyb2xsID0gNjsKICAgICBfZGF0YS0+
X3BhZ2UtPmdldFNlbGVjdGVkUmFuZ2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkxlbmd0aCk7
CiAKICAgICBOU1JhbmdlIHJlc3VsdCA9IE5TTWFrZVJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxl
Y3Rpb25MZW5ndGgpOwotICAgIGlmIChyZXN1bHQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKLSAg
ICAgICAgTE9HKFRleHRJbnB1dCwgInNlbGVjdGVkUmFuZ2UgLT4gKE5TTm90Rm91bmQsICV1KSIs
IHJlc3VsdC5sZW5ndGgpOworICAgIGlmIChyZXN1bHQubG9jYXRpb24gPT0gV1RGOjpub3RGb3Vu
ZCkKKyAgICAgICAgTE9HKFRleHRJbnB1dCwgInNlbGVjdGVkUmFuZ2UgLT4gKG5vdEZvdW5kLCAl
dSkiLCByZXN1bHQubGVuZ3RoKTsKICAgICBlbHNlCiAgICAgICAgIExPRyhUZXh0SW5wdXQsICJz
ZWxlY3RlZFJhbmdlIC0+ICgldSwgJXUpIiwgcmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3Ro
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4YTI5
YjY5Li45ODk4NDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtOTYxLDcgKzk2MSwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWFpbnRhaW5zSW5h
Y3RpdmVTZWxlY3Rpb24oYm9vbCBuZXdWYWx1ZSkKIHsKICAgICBtX21haW50YWluc0luYWN0aXZl
U2VsZWN0aW9uID0gbmV3VmFsdWU7CiB9Ci0gICAgCisKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRT
ZWxlY3RlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCkKK3sKKyAg
ICBsb2NhdGlvbiA9IFdURjo6bm90Rm91bmQ7CisgICAgbGVuZ3RoID0gMDsKKworICAgIGlmICgh
aXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwcm9jZXNzKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3RlZFJhbmdlKCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRTZWxlY3RlZFJhbmdlOjpSZXBseShsb2NhdGlvbiwgbGVuZ3RoKSwgbV9wYWdlSUQpOworfQor
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29t
bWFuZE5hbWUpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggM2EzMTU2OS4uYmJkYzQ1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzYzLDYgKzM2Myw5IEBAIHB1YmxpYzoKICAgICAK
ICAgICBib29sIG1haW50YWluc0luYWN0aXZlU2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9t
YWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbjsgfQogICAgIHZvaWQgc2V0TWFpbnRhaW5zSW5hY3Rp
dmVTZWxlY3Rpb24oYm9vbCk7CisKKyAgICB2b2lkIGdldFNlbGVjdGVkUmFuZ2UodWludDY0X3Qm
IGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKTsKKwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NU
T1JFKSAKICAgICB2b2lkIGRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNv
bnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpOwogI2VuZGlm
CkBAIC0zOTQsNyArMzk3LDYgQEAgcHVibGljOgogICAgIGJvb2wgaW5zZXJ0VGV4dChjb25zdCBT
dHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVw
bGFjZW1lbnRSYW5nZUVuZCk7CiAgICAgYm9vbCBpbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3Ry
aW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxh
Y2VtZW50UmFuZ2VFbmQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0QWx0ZXJuYXRpdmVXaXRo
UmFuZ2U+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogICAgIHZvaWQgZ2V0TWFya2VkUmFuZ2Uo
dWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKTsKLSAgICB2b2lkIGdldFNlbGVj
dGVkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKTsKICAgICB2b2lk
IGdldEF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2
NF90IGxlbmd0aCwgQXR0cmlidXRlZFN0cmluZyYpOwogICAgIHVpbnQ2NF90IGNoYXJhY3Rlcklu
ZGV4Rm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQpOwogICAgIFdlYkNvcmU6OkludFJl
Y3QgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UodWludDY0X3QsIHVpbnQ2NF90KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggODQ5
YmEyMC4uYzQzZGNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0KQEAgLTI0MiwxNyArMjQyLDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omdl
dE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCkKICAgICBw
cm9jZXNzKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRNYXJrZWRSYW5nZSgpLCBN
ZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFya2VkUmFuZ2U6OlJlcGx5KGxvY2F0aW9uLCBsZW5ndGgp
LCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3RlZFJhbmdlKHVp
bnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCkKLXsKLSAgICBsb2NhdGlvbiA9IE5T
Tm90Rm91bmQ7Ci0gICAgbGVuZ3RoID0gMDsKLQotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBwcm9jZXNzKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRTZWxlY3RlZFJhbmdlKCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3RlZFJhbmdlOjpS
ZXBseShsb2NhdGlvbiwgbGVuZ3RoKSwgbV9wYWdlSUQpOwotfQotCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0QXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSh1aW50NjRfdCBsb2NhdGlvbiwgdWlu
dDY0X3QgbGVuZ3RoLCBBdHRyaWJ1dGVkU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgaWYgKCFpc1Zh
bGlkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggN2IyMDA2My4uZWJlNGZl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtNDQzLDYgKzQ0MywxMSBAQCB2
b2lkIFdLQnVuZGxlUGFnZUNvbmZpcm1Db21wb3NpdGlvbldpdGhUZXh0KFdLQnVuZGxlUGFnZVJl
ZiBwYWdlUmVmLCBXS1N0cmluZ1JlZgogICAgIHRvSW1wbChwYWdlUmVmKS0+Y29uZmlybUNvbXBv
c2l0aW9uRm9yVGVzdGluZyh0b1dURlN0cmluZyh0ZXh0KSk7CiB9CiAKK3ZvaWQgV0tCdW5kbGVQ
YWdlU2VsZWN0ZWRSYW5nZShXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgdWludDY0X3QmIGxvY2F0
aW9uLCB1aW50NjRfdCYgbGVuZ3RoKQoreworICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPmdl
dFNlbGVjdGVkUmFuZ2UobG9jYXRpb24sIGxlbmd0aCk7Cit9CisKIGJvb2wgV0tCdW5kbGVQYWdl
Q2FuU2hvd01JTUVUeXBlKFdLQnVuZGxlUGFnZVJlZiwgV0tTdHJpbmdSZWYgbWltZVR5cGVSZWYp
CiB7CiAgICAgY29uc3QgU3RyaW5nIG1pbWVUeXBlID0gdG9XVEZTdHJpbmcobWltZVR5cGVSZWYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaAppbmRleCBlNjhjMDdiLi4w
OTJhYTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaApAQCAtNjcs
NiArNjcsOCBAQCBXS19FWFBPUlQgYm9vbCBXS0J1bmRsZVBhZ2VJc1RyYWNraW5nUmVwYWludHMo
V0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlUmVzZXRU
cmFja2VkUmVwYWludHMoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIFdLQXJyYXlS
ZWYgV0tCdW5kbGVQYWdlQ29weVRyYWNrZWRSZXBhaW50UmVjdHMoV0tCdW5kbGVQYWdlUmVmIHBh
Z2UpOwogCitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZWxlY3RlZFJhbmdlKFdLQnVuZGxl
UGFnZVJlZiBwYWdlUmVmLCB1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpOwor
CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRDb21wb3NpdGlvbihXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSwgV0tTdHJpbmdSZWYgdGV4dCwgaW50IGZyb20sIGludCBsZW5ndGgpOwogV0tfRVhQ
T1JUIGJvb2wgV0tCdW5kbGVQYWdlSGFzQ29tcG9zaXRpb24oV0tCdW5kbGVQYWdlUmVmIHBhZ2Up
OwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlQ29uZmlybUNvbXBvc2l0aW9uKFdLQnVuZGxl
UGFnZVJlZiBwYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCAxMDJmZjVlLi5kM2NiNTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zNDQxLDYgKzM0NDEsMjMgQEAgdm9pZCBX
ZWJQYWdlOjpzaW11bGF0ZU1vdXNlTW90aW9uKFdlYkNvcmU6OkludFBvaW50IHBvc2l0aW9uLCBk
b3VibGUgdGltZSkKICAgICBtb3VzZUV2ZW50KFdlYk1vdXNlRXZlbnQoV2ViTW91c2VFdmVudDo6
TW91c2VNb3ZlLCBXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbiwgcG9zaXRpb24sIHBvc2l0aW9uLCAw
LCAwLCAwLCAwLCBXZWJNb3VzZUV2ZW50OjpNb2RpZmllcnMoKSwgdGltZSkpOwogfQogCit2b2lk
IFdlYlBhZ2U6OmdldFNlbGVjdGVkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYg
bGVuZ3RoKQoreworICAgIGxvY2F0aW9uID0gV1RGOjpub3RGb3VuZDsKKyAgICBsZW5ndGggPSAw
OworICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIHNp
emVfdCBsb2NhdGlvblNpemU7CisgICAgc2l6ZV90IGxlbmd0aFNpemU7CisgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKTsKKyAg
ICBpZiAocmFuZ2UgJiYgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5n
ZShmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVu
dCgpLCByYW5nZS5nZXQoKSwgbG9jYXRpb25TaXplLCBsZW5ndGhTaXplKSkgeworICAgICAgICBs
b2NhdGlvbiA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihsb2NhdGlvblNpemUpOworICAgICAgICBs
ZW5ndGggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVuZ3RoU2l6ZSk7CisgICAgfQorfQorCiB2
b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0aW9uRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIGNvbXBv
c2l0aW9uU3RyaW5nLCB1aW50NjRfdCBmcm9tLCB1aW50NjRfdCBsZW5ndGgpCiB7CiAgICAgRnJh
bWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAx
MzQ1NmFhLi4zY2EyNjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKQEAgLTQ0NSw3ICs0NDUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxDb21w
b3NpdGlvbihFZGl0b3JTdGF0ZSYgbmV3U3RhdGUpOwogICAgIHZvaWQgaW5zZXJ0VGV4dChjb25z
dCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0X3Qg
cmVwbGFjZW1lbnRSYW5nZUVuZCwgYm9vbCYgaGFuZGxlZCwgRWRpdG9yU3RhdGUmIG5ld1N0YXRl
KTsKICAgICB2b2lkIGdldE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3Qm
IGxlbmd0aCk7Ci0gICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwg
dWludDY0X3QmIGxlbmd0aCk7CiAgICAgdm9pZCBnZXRBdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJh
bmdlKHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIEF0dHJpYnV0ZWRTdHJpbmcm
KTsKICAgICB2b2lkIGNoYXJhY3RlckluZGV4Rm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQgcG9pbnQsIHVpbnQ2NF90JiByZXN1bHQpOwogICAgIHZvaWQgZmlyc3RSZWN0Rm9yQ2hhcmFj
dGVyUmFuZ2UodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgV2ViQ29yZTo6SW50
UmVjdCYgcmVzdWx0UmVjdCk7CkBAIC00NzcsNiArNDc2LDggQEAgcHVibGljOgogI2VuZGlmCiAj
ZW5kaWYKIAorICAgIHZvaWQgZ2V0U2VsZWN0ZWRSYW5nZSh1aW50NjRfdCYgbG9jYXRpb24sIHVp
bnQ2NF90JiBsZW5ndGgpOworCiAgICAgdm9pZCBzZXRDb21wb3NpdGlvbkZvclRlc3RpbmcoY29u
c3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgdWludDY0X3QgZnJvbSwgdWludDY0X3QgbGVu
Z3RoKTsKICAgICBib29sIGhhc0NvbXBvc2l0aW9uRm9yVGVzdGluZygpOwogICAgIHZvaWQgY29u
ZmlybUNvbXBvc2l0aW9uRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5n
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KaW5kZXggNjM4MzU4My4uOTYzMjhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTg5LDYg
Kzg5LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAKICAgICBDbGVhclNlbGVjdGlvbigpCiAK
KyAgICBHZXRTZWxlY3RlZFJhbmdlKCkgLT4gKHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBs
ZW5ndGgpCisKICAgICAjIENhbGxiYWNrcy4KICAgICBHZXRDb250ZW50c0FzU3RyaW5nKHVpbnQ2
NF90IGNhbGxiYWNrSUQpCiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMjczLDcgKzI3NSw2IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2UgewogICAgIENhbmNlbENvbXBvc2l0aW9uKCkgLT4gKFdlYktpdDo6
RWRpdG9yU3RhdGUgbmV3U3RhdGUpCiAgICAgSW5zZXJ0VGV4dChXVEY6OlN0cmluZyB0ZXh0LCB1
aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VF
bmQpIC0+IChib29sIGhhbmRsZWQsIFdlYktpdDo6RWRpdG9yU3RhdGUgbmV3U3RhdGUpCiAgICAg
R2V0TWFya2VkUmFuZ2UoKSAtPiAodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCkK
LSAgICBHZXRTZWxlY3RlZFJhbmdlKCkgLT4gKHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBs
ZW5ndGgpCiAgICAgR2V0QXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSh1aW50NjRfdCBsb2Nh
dGlvbiwgdWludDY0X3QgbGVuZ3RoKSAtPiAoV2ViS2l0OjpBdHRyaWJ1dGVkU3RyaW5nIHJlc3Vs
dCkKICAgICBDaGFyYWN0ZXJJbmRleEZvclBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50KSAt
PiAodWludDY0X3QgcmVzdWx0KQogICAgIEZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKHVpbnQ2
NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgpIC0+IChXZWJDb3JlOjpJbnRSZWN0IHJlc3Vs
dFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0KaW5kZXggMTVjYWJkYy4uZjI1Y2I5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMzMxLDIzICsz
MzEsNiBAQCB2b2lkIFdlYlBhZ2U6OmdldE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwg
dWludDY0X3QmIGxlbmd0aCkKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0ZWRS
YW5nZSh1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpCi17Ci0gICAgbG9jYXRp
b24gPSBOU05vdEZvdW5kOwotICAgIGxlbmd0aCA9IDA7Ci0gICAgRnJhbWUqIGZyYW1lID0gbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFm
cmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2l6ZV90IGxvY2F0aW9uU2l6ZTsKLSAgICBz
aXplX3QgbGVuZ3RoU2l6ZTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZnJhbWUtPnNlbGVj
dGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpOwotICAgIGlmIChyYW5nZSAmJiBUZXh0SXRlcmF0
b3I6OmdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKGZyYW1lLT5zZWxlY3Rpb24oKS0+cm9v
dEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCksIHJhbmdlLmdldCgpLCBsb2NhdGlv
blNpemUsIGxlbmd0aFNpemUpKSB7Ci0gICAgICAgIGxvY2F0aW9uID0gc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KGxvY2F0aW9uU2l6ZSk7Ci0gICAgICAgIGxlbmd0aCA9IHN0YXRpY19jYXN0PHVpbnQ2
NF90PihsZW5ndGhTaXplKTsKLSAgICB9Ci19Ci0KIHZvaWQgV2ViUGFnZTo6Z2V0QXR0cmlidXRl
ZFN1YnN0cmluZ0Zyb21SYW5nZSh1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBB
dHRyaWJ1dGVkU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgTlNSYW5nZSBuc1JhbmdlID0gTlNNYWtl
UmFuZ2UobG9jYXRpb24sIGxlbmd0aCAtIGxvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4NzE1NTJhLi5lZGRmZWFhIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTItMTItMTEgIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW1dLMl1bV1RSXSBUZXh0IGlucHV0IGNvbnRyb2xsZXIgbmVlZHMgc2Vs
ZWN0ZWRSYW5nZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTk0MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBEZWNsYXJhdGlvbiBhbmQgaW1wbGVtZW50YXRpb24gb2Ygc2VsZWN0
ZWRSYW5nZSBmdW5jdGlvbiBpbiBUZXh0SW5wdXRDb250cm9sbGVyLgorCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXh0SW5wdXRDb250cm9sbGVy
LmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXh0SW5wdXRDb250cm9sbGVyOjpzZWxl
Y3RlZFJhbmdlKToKKyAgICAgICAgKFdUUik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmg6CisgICAgICAgIChUZXh0SW5wdXRD
b250cm9sbGVyKToKKwogMjAxMi0xMi0xMSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0NvdmVyaXR5XSBbR1RLXSBSZW1vdmUgc29tZSByZWR1bmRh
bnQgbnVsbCBjaGVja3MgaW4gRHVtcFJlbmRlclRyZWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGV4dElucHV0Q29udHJvbGxlci5p
ZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1RleHRJ
bnB1dENvbnRyb2xsZXIuaWRsCmluZGV4IDAzOTk4OGEuLjZkODVmNzggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGV4dElucHV0Q29u
dHJvbGxlci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXh0SW5wdXRDb250cm9sbGVyLmlkbApAQCAtMjgsNSArMjgsNiBAQCBpbnRlcmZh
Y2UgVGV4dElucHV0Q29udHJvbGxlciB7CiAgICAgYm9vbGVhbiBoYXNNYXJrZWRUZXh0KCk7CiAg
ICAgdm9pZCB1bm1hcmtUZXh0KCk7CiAgICAgdm9pZCBpbnNlcnRUZXh0KGluIERPTVN0cmluZyBz
dHJpbmcpOworICAgIG9iamVjdCBzZWxlY3RlZFJhbmdlKCk7CiB9OwogCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250
cm9sbGVyLmNwcAppbmRleCAwMDg3YWEzLi4xN2FlYWQ1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxl
ci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2UuaCIK
ICNpbmNsdWRlICJKU1RleHRJbnB1dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTdHJpbmdGdW5j
dGlvbnMuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlRnJhbWUuaD4KICNpbmNsdWRlIDxX
ZWJLaXQyL1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KIAogbmFtZXNwYWNlIFdUUiB7CkBAIC03Nyw0
ICs3OCwyMSBAQCB2b2lkIFRleHRJbnB1dENvbnRyb2xsZXI6Omluc2VydFRleHQoSlNTdHJpbmdS
ZWYgdGV4dCkKICAgICBXS0J1bmRsZVBhZ2VDb25maXJtQ29tcG9zaXRpb25XaXRoVGV4dChJbmpl
Y3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCksIHRvV0sodGV4dCkuZ2V0KCkpOwog
fQogCitKU1ZhbHVlUmVmIFRleHRJbnB1dENvbnRyb2xsZXI6OnNlbGVjdGVkUmFuZ2UoKQorewor
ICAgIHVpbnQ2NF90IHN0YXJ0LCBsZW5ndGg7CisgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJ
bmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCk7CisgICAgV0tCdW5kbGVGcmFt
ZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUocGFnZSk7CisgICAgSlND
b250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFp
bkZyYW1lKTsKKworICAgIFdLQnVuZGxlUGFnZVNlbGVjdGVkUmFuZ2UocGFnZSwgc3RhcnQsIGxl
bmd0aCk7CisgICAgaWYgKHN0YXJ0ID09IFdURjo6bm90Rm91bmQpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIEpTVmFsdWVSZWYgYXJyYXlWYWx1
ZXNbMl07CisgICAgYXJyYXlWYWx1ZXNbMF0gPSBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCBz
dGFydCk7CisgICAgYXJyYXlWYWx1ZXNbMV0gPSBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCBs
ZW5ndGgpOworICAgIHJldHVybiBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCAyLCBhcnJheVZh
bHVlcywgMCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuaApp
bmRleCA3MWEwNDM3Li5lNmI5ZGYyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuaApAQCAtNDUsNiAr
NDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNNYXJrZWRUZXh0KCk7CiAgICAgdm9pZCB1bm1h
cmtUZXh0KCk7CiAgICAgdm9pZCBpbnNlcnRUZXh0KEpTU3RyaW5nUmVmIHRleHQpOworICAgIEpT
VmFsdWVSZWYgc2VsZWN0ZWRSYW5nZSgpOwogCiBwcml2YXRlOgogICAgIFRleHRJbnB1dENvbnRy
b2xsZXIoKTsK
</data>
<flag name="review"
          id="195699"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191781</attachid>
            <date>2013-03-06 10:07:52 -0800</date>
            <delta_ts>2014-02-05 11:19:23 -0800</delta_ts>
            <desc>Rebased, make asynchronous</desc>
            <filename>bug99438.patch</filename>
            <type>text/plain</type>
            <size>18555</size>
            <attacher name="Mariusz Grzegorczyk">mariusz.g</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4OTlmNjg5Li40MmYwNjNiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEzLTAz
LTA2ICBNYXJpdXN6IEdyemVnb3JjenlrICA8bWFyaXVzei5nQHNhbXN1bmcuY29tPgorCisgICAg
ICAgIFtXSzJdW1dUUl0gVGV4dCBpbnB1dCBjb250cm9sbGVyIG5lZWRzIHNlbGVjdGVkUmFuZ2Ug
aW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk5NDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgR2FyZGVuaW5nIGZvciB3ZWJraXQyIHJlbGF0ZWQgd2l0aCB0ZXh0SW5wdXRDb250cm9s
bGVyLnNlbGVjdGVkUmFuZ2UgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS93
azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxMy0wMy0wNiAgw4Fkw6FtIEthbGxhaSAgPGthZGFt
QGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBB
ZGRlZCBuZXcgYmFzZWxpbmUgYWZ0ZXIgcjE0NDgzNy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggODBlNGNlNS4uNDM5MzM4ZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEzOCwxOCArMTM4LDggQEAgZmFzdC9s
b2FkZXIvcmVjdXJzaXZlLWJlZm9yZS11bmxvYWQtY3Jhc2guaHRtbAogCiAjIFdlYktpdFRlc3RS
dW5uZXIgbmVlZHMgdGV4dElucHV0Q29udHJvbGxlcgogIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQyMzM3PgotZWRpdGluZy9pbnB1dC9zZXR0aW5nLWlucHV0LXZh
bHVlLWNhbmNlbC1pbWUtY29tcG9zaXRpb24uaHRtbAotc3ZnL3RleHQvY2FyZXQtaW4tc3ZnLXRl
eHQueGh0bWwKLWVkaXRpbmcvaW5zZXJ0aW5nL2NhcmV0LXBvc2l0aW9uLmh0bWwKIGVkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctYmFja3NwYWNlLWJldHdlZW4tbGluZXMuaHRtbAotZWRpdGluZy9z
ZWxlY3Rpb24vNTgyNTM1MC0xLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMi5odG1s
Ci1lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWxlZnQtcmlnaHQuaHRtbAotZWRpdGluZy9zdHlsZS90
ZXh0LWluZGVudC5odG1sCi1mYXN0L2RvbS90YWItaW4tcmlnaHQtYWxpZ25tZW50Lmh0bWwKIGZh
c3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAxLmh0bWwKLWZhc3QvZm9ybXMvY3Vy
c29yLWF0LWVkaXRhYmxlLWNvbnRlbnQtYm91bmRhcnkuaHRtbAotZmFzdC90ZXh0L2ludGVybmF0
aW9uYWwvdGhhaS1jdXJzb3ItcG9zaXRpb24uaHRtbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5w
dXQvNTU3NjYxOS5odG1sCiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9ib2xkLW5vZGUuaHRt
bAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvY2FyZXQtcHJpbWFyeS1iaWRpLmh0bWwKQEAg
LTE3NCw2ICsxNjQsMjMgQEAgcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0
cmluZy1mcm9tLXJhbmdlLWluLXRleHRmaWVsZC5odG1sCiBwbGF0Zm9ybS9tYWMvZmFzdC90ZXh0
L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UuaHRtbAogcGxhdGZvcm0vbWFjL2Zhc3Qv
dGV4dC9qdXN0aWZpZWQtdGV4dC1yZWN0Lmh0bWwKIAorIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRz
IHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UKKyMgPGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAyMTk+CitlZGl0aW5nL2luc2Vy
dGluZy9jYXJldC1wb3NpdGlvbi5odG1sCitlZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEuaHRt
bAorZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0yLmh0bWwKK2VkaXRpbmcvc2VsZWN0aW9uL21p
eGVkLWVkaXRhYmlsaXR5LTEwLmh0bWwKK2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtbGVmdC1yaWdo
dC5odG1sCitlZGl0aW5nL3N0eWxlL3RleHQtaW5kZW50Lmh0bWwKK2Zhc3QvZG9tL3RhYi1pbi1y
aWdodC1hbGlnbm1lbnQuaHRtbAorZmFzdC9mb3Jtcy9jdXJzb3ItYXQtZWRpdGFibGUtY29udGVu
dC1ib3VuZGFyeS5odG1sCitmYXN0L3RleHQvaW50ZXJuYXRpb25hbC90aGFpLWN1cnNvci1wb3Np
dGlvbi5odG1sCitzdmcvdGV4dC9jYXJldC1pbi1zdmctdGV4dC54aHRtbAorCisjIFdlYktpdFRl
c3RSdW5uZXIgbmVlZHMgdGV4dElucHV0Q29udHJvbGxlci5tYXJrZWRSYW5nZQorIyA8aHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDIyMj4KK2VkaXRpbmcvaW5wdXQv
c2V0dGluZy1pbnB1dC12YWx1ZS1jYW5jZWwtaW1lLWNvbXBvc2l0aW9uLmh0bWwKKwogIyBXZWJL
aXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgbmVlZHNEZWxldGlvblVJIG1lY2hhbmlzbSB0
byBzaG93IGRlbGV0aW9uIFVJCiAjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDI1MzU+CiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9kZWxldGluZy9pZC1pbi1kZWxldGVi
dXR0b24uaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUxNmRjNWMuLjY1MWJiZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMiBAQAorMjAxMy0wMy0wNiAgTWFyaXVzeiBHcnplZ29yY3p5ayAgPG1hcml1c3ou
Z0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbV0syXVtXVFJdIFRleHQgaW5wdXQgY29udHJvbGxl
ciBuZWVkcyBzZWxlY3RlZFJhbmdlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTQzOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIGdldHRpbmcgc2Vs
ZWN0ZWQgcmFuZ2UgZnJvbSB3ZWJwYWdlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgc2VsZWN0ZWRSYW5nZV0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOiBJbXBsZW1lbnRhdGlvbiBtb3ZlZCBmcm9tIE1h
YyBwb3J0IHRvIGNvbW1vbiBwbGFjZS4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VT
ZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZVByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdGVkUmFuZ2UpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U2VsZWN0ZWRSYW5n
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdl
YlBhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKwogMjAx
My0wMy0wNiAgQW5kcmFzIEJlY3NpICA8YW5kcmFzLmJlY3NpQGRpZ2lhLmNvbT4KIAogICAgICAg
ICBbUXRdW1dLMl0gRml4IHRoZSBNYWMgYnVpbGQgYWZ0ZXIgcjE0NDc4NwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDk0ZTk5NDUuLjk0NjRmNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTE0NTUsMTkg
KzE0NTUsNyBAQCBzdGF0aWMgY29uc3Qgc2hvcnQga0lPSElERXZlbnRUeXBlU2Nyb2xsID0gNjsK
IAogLSAoTlNSYW5nZSlzZWxlY3RlZFJhbmdlCiB7Ci0gICAgW3NlbGYgX2V4ZWN1dGVTYXZlZEtl
eXByZXNzQ29tbWFuZHNdOwotCi0gICAgdWludDY0X3Qgc2VsZWN0aW9uU3RhcnQ7Ci0gICAgdWlu
dDY0X3Qgc2VsZWN0aW9uTGVuZ3RoOwotICAgIF9kYXRhLT5fcGFnZS0+Z2V0U2VsZWN0ZWRSYW5n
ZShzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uTGVuZ3RoKTsKLQotICAgIE5TUmFuZ2UgcmVzdWx0
ID0gTlNNYWtlUmFuZ2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkxlbmd0aCk7Ci0gICAgaWYg
KHJlc3VsdC5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQotICAgICAgICBMT0coVGV4dElucHV0LCAi
c2VsZWN0ZWRSYW5nZSAtPiAoTlNOb3RGb3VuZCwgJXUpIiwgcmVzdWx0Lmxlbmd0aCk7Ci0gICAg
ZWxzZQotICAgICAgICBMT0coVGV4dElucHV0LCAic2VsZWN0ZWRSYW5nZSAtPiAoJXUsICV1KSIs
IHJlc3VsdC5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0Owor
ICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsKIH0KIAogLSAoQk9PTCloYXNN
YXJrZWRUZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IDI1Nzk2Y2QuLmRiZWQ4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC0xMDEwLDcgKzEwMTAsMjAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1haW50
YWluc0luYWN0aXZlU2VsZWN0aW9uKGJvb2wgbmV3VmFsdWUpCiB7CiAgICAgbV9tYWludGFpbnNJ
bmFjdGl2ZVNlbGVjdGlvbiA9IG5ld1ZhbHVlOwogfQotICAgIAorCit2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0U2VsZWN0ZWRSYW5nZShQYXNzUmVmUHRyPERhdGFDYWxsYmFjaz4gcHJwQ2FsbGJhY2sp
Cit7CisgICAgUmVmUHRyPERhdGFDYWxsYmFjaz4gY2FsbGJhY2sgPSBwcnBDYWxsYmFjazsKKyAg
ICBpZiAoIWlzVmFsaWQoKSkgeworICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNr
LT5jYWxsYmFja0lEKCk7CisgICAgbV9kYXRhQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxs
YmFjay5nZXQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRT
ZWxlY3RlZFJhbmdlKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7Cit9CisKIHZvaWQgV2ViUGFnZVBy
b3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSkKIHsKICAg
ICBpZiAoIWlzVmFsaWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCBkODUzMWUyLi43MDJlMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC0zNTcsNiArMzU3LDkgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgbWFpbnRh
aW5zSW5hY3RpdmVTZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX21haW50YWluc0luYWN0aXZl
U2VsZWN0aW9uOyB9CiAgICAgdm9pZCBzZXRNYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbihib29s
KTsKKworICAgIHZvaWQgZ2V0U2VsZWN0ZWRSYW5nZShQYXNzUmVmUHRyPERhdGFDYWxsYmFjaz4p
OworCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpIAogICAgIHZvaWQgZGlkUmVuZGVyRnJh
bWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBjb3ZlcmVkUmVjdCk7CiAjZW5kaWYKQEAgLTM5NCw3ICszOTcsNiBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFj
ZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kKTsKICAgICBib29s
IGluc2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2Vt
ZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZl
cyk7CiAgICAgdm9pZCBnZXRNYXJrZWRSYW5nZSh1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90
JiBsZW5ndGgpOwotICAgIHZvaWQgZ2V0U2VsZWN0ZWRSYW5nZSh1aW50NjRfdCYgbG9jYXRpb24s
IHVpbnQ2NF90JiBsZW5ndGgpOwogICAgIHZvaWQgZ2V0QXR0cmlidXRlZFN1YnN0cmluZ0Zyb21S
YW5nZSh1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBBdHRyaWJ1dGVkU3RyaW5n
Jik7CiAgICAgdWludDY0X3QgY2hhcmFjdGVySW5kZXhGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCk7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZSh1aW50NjRfdCwgdWludDY0X3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA2MDU3MzA4Li45OGJkODM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjMwLDE3ICsy
MzAsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFuZ2UodWludDY0X3QmIGxvY2F0
aW9uLCB1aW50NjRfdCYgbGVuZ3RoKQogICAgIHByb2Nlc3MoKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhZ2U6OkdldE1hcmtlZFJhbmdlKCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRNYXJrZWRS
YW5nZTo6UmVwbHkobG9jYXRpb24sIGxlbmd0aCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmdldFNlbGVjdGVkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYg
bGVuZ3RoKQotewotICAgIGxvY2F0aW9uID0gTlNOb3RGb3VuZDsKLSAgICBsZW5ndGggPSAwOwot
Ci0gICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHByb2Nlc3MoKS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGVkUmFuZ2UoKSwgTWVzc2FnZXM6
OldlYlBhZ2U6OkdldFNlbGVjdGVkUmFuZ2U6OlJlcGx5KGxvY2F0aW9uLCBsZW5ndGgpLCBtX3Bh
Z2VJRCk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRBdHRyaWJ1dGVkU3Vic3RyaW5nRnJv
bVJhbmdlKHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIEF0dHJpYnV0ZWRTdHJp
bmcmIHJlc3VsdCkKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcAppbmRleCBmM2M4YTgwLi42OWQ2YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2UuY3BwCkBAIC00NDUsNiArNDQ1LDExIEBAIHZvaWQgV0tCdW5kbGVQYWdlQ29uZmlybUNvbXBv
c2l0aW9uV2l0aFRleHQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmCiAgICAg
dG9JbXBsKHBhZ2VSZWYpLT5jb25maXJtQ29tcG9zaXRpb25Gb3JUZXN0aW5nKHRvV1RGU3RyaW5n
KHRleHQpKTsKIH0KIAordm9pZCBXS0J1bmRsZVBhZ2VTZWxlY3RlZFJhbmdlKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlUmVmLCB1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpCit7Cisg
ICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+c2VsZWN0ZWRSYW5nZShsb2NhdGlvbiwgbGVuZ3Ro
KTsKK30KKwogYm9vbCBXS0J1bmRsZVBhZ2VDYW5TaG93TUlNRVR5cGUoV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSZWYsIFdLU3RyaW5nUmVmIG1pbWVUeXBlUmVmKQogewogICAgIHJldHVybiB0b0ltcGwo
cGFnZVJlZiktPmNhblNob3dNSU1FVHlwZSh0b1dURlN0cmluZyhtaW1lVHlwZVJlZikpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaAppbmRleCBlNjhjMDdiLi4wOTJhYTUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaApAQCAtNjcsNiArNjcs
OCBAQCBXS19FWFBPUlQgYm9vbCBXS0J1bmRsZVBhZ2VJc1RyYWNraW5nUmVwYWludHMoV0tCdW5k
bGVQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlUmVzZXRUcmFja2Vk
UmVwYWludHMoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tC
dW5kbGVQYWdlQ29weVRyYWNrZWRSZXBhaW50UmVjdHMoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwog
CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZWxlY3RlZFJhbmdlKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlUmVmLCB1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpOworCiBXS19F
WFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRDb21wb3NpdGlvbihXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSwgV0tTdHJpbmdSZWYgdGV4dCwgaW50IGZyb20sIGludCBsZW5ndGgpOwogV0tfRVhQT1JUIGJv
b2wgV0tCdW5kbGVQYWdlSGFzQ29tcG9zaXRpb24oV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogV0tf
RVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlQ29uZmlybUNvbXBvc2l0aW9uKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCAyMGU4ZTkyLi5kZDZkMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zNTE5LDYgKzM1MTksMzUgQEAgdm9pZCBXZWJQYWdl
OjpzaW11bGF0ZU1vdXNlTW90aW9uKFdlYkNvcmU6OkludFBvaW50IHBvc2l0aW9uLCBkb3VibGUg
dGltZSkKICAgICBtb3VzZUV2ZW50KFdlYk1vdXNlRXZlbnQoV2ViTW91c2VFdmVudDo6TW91c2VN
b3ZlLCBXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbiwgcG9zaXRpb24sIHBvc2l0aW9uLCAwLCAwLCAw
LCAwLCBXZWJNb3VzZUV2ZW50OjpNb2RpZmllcnMoKSwgdGltZSkpOwogfQogCit2b2lkIFdlYlBh
Z2U6OnNlbGVjdGVkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKQor
eworICAgIGxvY2F0aW9uID0gV1RGOjpub3RGb3VuZDsKKyAgICBsZW5ndGggPSAwOworICAgIEZy
YW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIHNpemVfdCBsb2Nh
dGlvblNpemU7CisgICAgc2l6ZV90IGxlbmd0aFNpemU7CisgICAgUmVmUHRyPFJhbmdlPiByYW5n
ZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKTsKKyAgICBpZiAocmFu
Z2UgJiYgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShmcmFtZS0+
c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCByYW5n
ZS5nZXQoKSwgbG9jYXRpb25TaXplLCBsZW5ndGhTaXplKSkgeworICAgICAgICBsb2NhdGlvbiA9
IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihsb2NhdGlvblNpemUpOworICAgICAgICBsZW5ndGggPSBz
dGF0aWNfY2FzdDx1aW50NjRfdD4obGVuZ3RoU2l6ZSk7CisgICAgfQorfQorCit2b2lkIFdlYlBh
Z2U6OmdldFNlbGVjdGVkUmFuZ2UodWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICB1aW50NjRf
dCBsb2NhdGlvbiwgbGVuZ3RoOworICAgIHNlbGVjdGVkUmFuZ2UobG9jYXRpb24sIGxlbmd0aCk7
CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShyZWludGVycHJldF9jYXN0PGNoYXIqPigmbG9jYXRpb24pLCBzaXplb2YobG9jYXRpb24pKTsK
KyAgICBidWZmZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNoYXIqPigmbGVuZ3RoKSwgc2l6
ZW9mKGxlbmd0aCkpOworCisgICAgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNl
ID0gQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7Cit9
CisKIHZvaWQgV2ViUGFnZTo6c2V0Q29tcG9zaXRpb25Gb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYg
Y29tcG9zaXRpb25TdHJpbmcsIHVpbnQ2NF90IGZyb20sIHVpbnQ2NF90IGxlbmd0aCkKIHsKICAg
ICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmlu
ZGV4IDVhYmE0ZTEuLjRlZDUxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaApAQCAtNDQ3LDcgKzQ0Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNl
bENvbXBvc2l0aW9uKEVkaXRvclN0YXRlJiBuZXdTdGF0ZSk7CiAgICAgdm9pZCBpbnNlcnRUZXh0
KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50
NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kLCBib29sJiBoYW5kbGVkLCBFZGl0b3JTdGF0ZSYgbmV3
U3RhdGUpOwogICAgIHZvaWQgZ2V0TWFya2VkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50
NjRfdCYgbGVuZ3RoKTsKLSAgICB2b2lkIGdldFNlbGVjdGVkUmFuZ2UodWludDY0X3QmIGxvY2F0
aW9uLCB1aW50NjRfdCYgbGVuZ3RoKTsKICAgICB2b2lkIGdldEF0dHJpYnV0ZWRTdWJzdHJpbmdG
cm9tUmFuZ2UodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgQXR0cmlidXRlZFN0
cmluZyYpOwogICAgIHZvaWQgY2hhcmFjdGVySW5kZXhGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCBwb2ludCwgdWludDY0X3QmIHJlc3VsdCk7CiAgICAgdm9pZCBmaXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZSh1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBXZWJDb3Jl
OjpJbnRSZWN0JiByZXN1bHRSZWN0KTsKQEAgLTQ3Myw2ICs0NzIsOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5VHJlZSgpOwogI2VuZGlmCiAKKyAgICB2b2lkIGdldFNl
bGVjdGVkUmFuZ2UodWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZWxlY3RlZFJhbmdl
KHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCk7CisKICAgICB2b2lkIHNldENv
bXBvc2l0aW9uRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCB1aW50
NjRfdCBmcm9tLCB1aW50NjRfdCBsZW5ndGgpOwogICAgIGJvb2wgaGFzQ29tcG9zaXRpb25Gb3JU
ZXN0aW5nKCk7CiAgICAgdm9pZCBjb25maXJtQ29tcG9zaXRpb25Gb3JUZXN0aW5nKGNvbnN0IFN0
cmluZyYgY29tcG9zaXRpb25TdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAwNzc1ZGVkLi5lYmQ2NDQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgpAQCAtOTAsNiArOTAsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2Fj
eVJlY2VpdmVyIHsKIAogICAgIENsZWFyU2VsZWN0aW9uKCkKIAorICAgIEdldFNlbGVjdGVkUmFu
Z2UodWludDY0X3QgY2FsbGJhY2tJRCkKKwogICAgICMgQ2FsbGJhY2tzLgogICAgIEdldENvbnRl
bnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKICNpZiBFTkFCTEUoTUhUTUwpCkBAIC0y
NzQsNyArMjc2LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAg
Q2FuY2VsQ29tcG9zaXRpb24oKSAtPiAoV2ViS2l0OjpFZGl0b3JTdGF0ZSBuZXdTdGF0ZSkKICAg
ICBJbnNlcnRUZXh0KFdURjo6U3RyaW5nIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VT
dGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCkgLT4gKGJvb2wgaGFuZGxlZCwgV2Vi
S2l0OjpFZGl0b3JTdGF0ZSBuZXdTdGF0ZSkKICAgICBHZXRNYXJrZWRSYW5nZSgpIC0+ICh1aW50
NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoKQotICAgIEdldFNlbGVjdGVkUmFuZ2UoKSAt
PiAodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCkKICAgICBHZXRBdHRyaWJ1dGVk
U3Vic3RyaW5nRnJvbVJhbmdlKHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgpIC0+
IChXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJpbmcgcmVzdWx0KQogICAgIENoYXJhY3RlckluZGV4Rm9y
UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpIC0+ICh1aW50NjRfdCByZXN1bHQpCiAgICAg
Rmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxl
bmd0aCkgLT4gKFdlYkNvcmU6OkludFJlY3QgcmVzdWx0UmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBjMWZhZTkz
Li5kNzZjOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tCkBAIC0zMzQsMjMgKzMzNCw2IEBAIHZvaWQgV2ViUGFnZTo6Z2V0
TWFya2VkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKQogICAgIH0K
IH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3RlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwg
dWludDY0X3QmIGxlbmd0aCkKLXsKLSAgICBsb2NhdGlvbiA9IE5TTm90Rm91bmQ7Ci0gICAgbGVu
Z3RoID0gMDsKLSAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBzaXplX3QgbG9jYXRpb25TaXplOwotICAgIHNpemVfdCBsZW5ndGhTaXplOwotICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdl
KCk7Ci0gICAgaWYgKHJhbmdlICYmIFRleHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhG
cm9tUmFuZ2UoZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVu
dEVsZW1lbnQoKSwgcmFuZ2UuZ2V0KCksIGxvY2F0aW9uU2l6ZSwgbGVuZ3RoU2l6ZSkpIHsKLSAg
ICAgICAgbG9jYXRpb24gPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obG9jYXRpb25TaXplKTsKLSAg
ICAgICAgbGVuZ3RoID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxlbmd0aFNpemUpOwotICAgIH0K
LX0KLQogdm9pZCBXZWJQYWdlOjpnZXRBdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKHVpbnQ2
NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIEF0dHJpYnV0ZWRTdHJpbmcmIHJlc3VsdCkK
IHsKICAgICBOU1JhbmdlIG5zUmFuZ2UgPSBOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoIC0g
bG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDEzZTM3MzAuLjBjYWM5OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMy0wMy0wNiAgTWFyaXVzeiBH
cnplZ29yY3p5ayAgPG1hcml1c3ouZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbV0syXVtXVFJd
IFRleHQgaW5wdXQgY29udHJvbGxlciBuZWVkcyBzZWxlY3RlZFJhbmdlIGltcGxlbWVudGF0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTQzOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlY2xhcmF0
aW9uIGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBzZWxlY3RlZFJhbmdlIGZ1bmN0aW9uIGluIFRleHRJ
bnB1dENvbnRyb2xsZXIuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1RleHRJbnB1dENvbnRyb2xsZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXVFI6OlRleHRJbnB1dENvbnRyb2xsZXI6OnNlbGVjdGVkUmFuZ2UpOgorICAgICAgICAoV1RS
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKFRleHRJbnB1dENvbnRyb2xsZXIpOgorCiAyMDEzLTAzLTA2
ICBBbmRyYXMgQmVjc2kgIDxhbmRyYXMuYmVjc2lAZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF1b
TWluaUJyb3dzZXJdIFRvdWNoIG1vY2tpbmcgYnJva2VuIGZvciBjaGFpbmVkIGdldHVyZXMKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGV4dElucHV0Q29udHJvbGxlci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1RleHRJbnB1dENvbnRyb2xsZXIuaWRsCmluZGV4IDAzOTk4OGEuLjZk
ODVmNzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvVGV4dElucHV0Q29udHJvbGxlci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXh0SW5wdXRDb250cm9sbGVyLmlkbApAQCAt
MjgsNSArMjgsNiBAQCBpbnRlcmZhY2UgVGV4dElucHV0Q29udHJvbGxlciB7CiAgICAgYm9vbGVh
biBoYXNNYXJrZWRUZXh0KCk7CiAgICAgdm9pZCB1bm1hcmtUZXh0KCk7CiAgICAgdm9pZCBpbnNl
cnRUZXh0KGluIERPTVN0cmluZyBzdHJpbmcpOworICAgIG9iamVjdCBzZWxlY3RlZFJhbmdlKCk7
CiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1RleHRJbnB1dENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcAppbmRleCAwMDg3YWEzLi4xN2FlYWQ1IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1
dENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGV4dElucHV0Q29udHJvbGxlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZVBhZ2UuaCIKICNpbmNsdWRlICJKU1RleHRJbnB1dENvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJTdHJpbmdGdW5jdGlvbnMuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxl
RnJhbWUuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KIAogbmFt
ZXNwYWNlIFdUUiB7CkBAIC03Nyw0ICs3OCwyMSBAQCB2b2lkIFRleHRJbnB1dENvbnRyb2xsZXI6
Omluc2VydFRleHQoSlNTdHJpbmdSZWYgdGV4dCkKICAgICBXS0J1bmRsZVBhZ2VDb25maXJtQ29t
cG9zaXRpb25XaXRoVGV4dChJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCks
IHRvV0sodGV4dCkuZ2V0KCkpOwogfQogCitKU1ZhbHVlUmVmIFRleHRJbnB1dENvbnRyb2xsZXI6
OnNlbGVjdGVkUmFuZ2UoKQoreworICAgIHVpbnQ2NF90IHN0YXJ0LCBsZW5ndGg7CisgICAgV0tC
dW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdl
KCk7CisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWlu
RnJhbWUocGFnZSk7CisgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0
SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKKworICAgIFdLQnVuZGxlUGFnZVNlbGVjdGVk
UmFuZ2UocGFnZSwgc3RhcnQsIGxlbmd0aCk7CisgICAgaWYgKHN0YXJ0ID09IFdURjo6bm90Rm91
bmQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAg
IEpTVmFsdWVSZWYgYXJyYXlWYWx1ZXNbMl07CisgICAgYXJyYXlWYWx1ZXNbMF0gPSBKU1ZhbHVl
TWFrZU51bWJlcihjb250ZXh0LCBzdGFydCk7CisgICAgYXJyYXlWYWx1ZXNbMV0gPSBKU1ZhbHVl
TWFrZU51bWJlcihjb250ZXh0LCBsZW5ndGgpOworICAgIHJldHVybiBKU09iamVjdE1ha2VBcnJh
eShjb250ZXh0LCAyLCBhcnJheVZhbHVlcywgMCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5w
dXRDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
eHRJbnB1dENvbnRyb2xsZXIuaAppbmRleCA3MWEwNDM3Li5lNmI5ZGYyIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIu
aAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENv
bnRyb2xsZXIuaApAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNNYXJrZWRU
ZXh0KCk7CiAgICAgdm9pZCB1bm1hcmtUZXh0KCk7CiAgICAgdm9pZCBpbnNlcnRUZXh0KEpTU3Ry
aW5nUmVmIHRleHQpOworICAgIEpTVmFsdWVSZWYgc2VsZWN0ZWRSYW5nZSgpOwogCiBwcml2YXRl
OgogICAgIFRleHRJbnB1dENvbnRyb2xsZXIoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>