<?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>41441</bug_id>
          
          <creation_ts>2010-06-30 19:56:01 -0700</creation_ts>
          <short_desc>createWindow method should only do window-creating without URL navigator</short_desc>
          <delta_ts>2011-01-09 23:19:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Johnny(Jianning) Ding">jnd</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>charn.opcode</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>emerick</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>jochen</cc>
    
    <cc>magreenblatt</cc>
    
    <cc>phnixwxz</cc>
    
    <cc>pkasting</cc>
    
    <cc>wangxianzhu</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>245062</commentid>
    <comment_count>0</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-06-30 19:56:01 -0700</bug_when>
    <thetext>Now the Pop-up blocker loads popups but hides them.  This causes problems. So we want to switch Pop-up Blocker from &quot;load but hide&quot; to &quot;don&apos;t load&quot;. Please refer to http://code.google.com/p/chromium/issues/detail?id=38458 for more details
Also in chromium, we allow users to define some URL patterns to allow some sites to pop up windows.

To implement all above requests, we need to let client APIs know which URL a new window will start with. The way is to add a target URL parameter to the createView and createWindow method.

To avoid affecting other clients who reply on original syntax of createView and createWindow, I overload the createView and createWindow to provide additional functions to support the new targetURL parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245068</commentid>
    <comment_count>1</comment_count>
      <attachid>60188</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-06-30 20:19:00 -0700</bug_when>
    <thetext>Created attachment 60188
patch V1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245072</commentid>
    <comment_count>2</comment_count>
      <attachid>60188</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-30 20:34:07 -0700</bug_when>
    <thetext>Comment on attachment 60188
patch V1

WebCore/bindings/generic/BindingDOMWindow.h:99
 +      Frame* newFrame = callingFrame-&gt;loader()-&gt;createWindow(openerFrame-&gt;loader(), frameRequest, windowFeatures, completeUrl.prettyURL(), created);
What is a prettyURL?

WebCore/loader/FrameLoader.cpp:261
 +  Frame* FrameLoader::createWindow(FrameLoader* frameLoaderForFrameLookup, const FrameLoadRequest&amp; request, const WindowFeatures&amp; features, const String&amp; targetURL, bool&amp; created)
Why is this a String and not a KURL?

WebCore/loader/FrameLoader.cpp:328
 +      return createWindow(frameLoaderForFrameLookup, request, features, &quot;&quot;, created);
Why isn&apos;t the URL plumbed here?

WebCore/page/Chrome.cpp:166
 +  Page* Chrome::createWindow(Frame* frame, const FrameLoadRequest&amp; request, const WindowFeatures&amp; features, const String&amp; targetURL) const
Isn&apos;t there a URL in FrameLoadRequest?  Is that different?

WebKit/chromium/public/WebViewClient.h:86
 +          // The default implementation is to call the old version of createView.
Are we going to remove this after we do the roll?

WebKit/chromium/src/ChromeClientImpl.cpp:236
 +          m_webView-&gt;client()-&gt;createView(WebFrameImpl::fromFrame(frame), features, r.frameName(), KURL(ParsedURLString, targetURL)));
Sad that we have to parse the URL again here.

WebKit/chromium/src/ChromeClientImpl.cpp:251
 +      Frame* frame, const FrameLoadRequest&amp; r, const WindowFeatures&amp; features)
One line please.  |r| is not a very descriptive variable name.

WebKit/chromium/src/ChromeClientImpl.cpp:253
 +      return createWindow(frame, r, features, &quot;&quot;);
More empty string sadness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245074</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-30 20:39:27 -0700</bug_when>
    <thetext>Attachment 60188 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/page/ChromeClient.h:96:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245079</commentid>
    <comment_count>4</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-06-30 20:55:33 -0700</bug_when>
    <thetext>Adam, Thanks for review.

For the comments of using String not URL, that is my fault, I thought using String is easy way since we have different URL class implementation like KURL, WebURL, GURL, etc...  I will change them to corresponding URL class.


(In reply to comment #2)
&gt; (From update of attachment 60188 [details])
&gt; WebCore/bindings/generic/BindingDOMWindow.h:99
&gt;  +      Frame* newFrame = callingFrame-&gt;loader()-&gt;createWindow(openerFrame-&gt;loader(), frameRequest, windowFeatures, completeUrl.prettyURL(), created);
&gt; What is a prettyURL?
&gt; 
&gt; WebCore/loader/FrameLoader.cpp:261
&gt;  +  Frame* FrameLoader::createWindow(FrameLoader* frameLoaderForFrameLookup, const FrameLoadRequest&amp; request, const WindowFeatures&amp; features, const String&amp; targetURL, bool&amp; created)
&gt; Why is this a String and not a KURL?
&gt; 
&gt; WebCore/loader/FrameLoader.cpp:328
&gt;  +      return createWindow(frameLoaderForFrameLookup, request, features, &quot;&quot;, created);
&gt; Why isn&apos;t the URL plumbed here?
&gt; 
&gt; WebCore/page/Chrome.cpp:166
&gt;  +  Page* Chrome::createWindow(Frame* frame, const FrameLoadRequest&amp; request, const WindowFeatures&amp; features, const String&amp; targetURL) const
&gt; Isn&apos;t there a URL in FrameLoadRequest?  Is that different?
&gt; 
&gt; WebKit/chromium/public/WebViewClient.h:86
&gt;  +          // The default implementation is to call the old version of createView.
&gt; Are we going to remove this after we do the roll?

Yes, definitely. After finishing the code on chromium side, we will remove the old version.

&gt; 
&gt; WebKit/chromium/src/ChromeClientImpl.cpp:236
&gt;  +          m_webView-&gt;client()-&gt;createView(WebFrameImpl::fromFrame(frame), features, r.frameName(), KURL(ParsedURLString, targetURL)));
&gt; Sad that we have to parse the URL again here.
&gt; 
&gt; WebKit/chromium/src/ChromeClientImpl.cpp:251
&gt;  +      Frame* frame, const FrameLoadRequest&amp; r, const WindowFeatures&amp; features)
&gt; One line please.  |r| is not a very descriptive variable name.
&gt; 
&gt; WebKit/chromium/src/ChromeClientImpl.cpp:253
&gt;  +      return createWindow(frame, r, features, &quot;&quot;);
&gt; More empty string sadness.

(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245288</commentid>
    <comment_count>5</comment_count>
      <attachid>60230</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-07-01 05:57:41 -0700</bug_when>
    <thetext>Created attachment 60230
patch v1 with cleaning style warning and using KURL instead of String to pass target URL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245463</commentid>
    <comment_count>6</comment_count>
      <attachid>60230</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-01 12:05:36 -0700</bug_when>
    <thetext>Comment on attachment 60230
patch v1 with cleaning style warning and using KURL instead of String to pass target URL

&gt; +    KURL completedUrl =
&gt; +        url.isEmpty() ? KURL(ParsedURLString, &quot;&quot;) : completeURL(url);

It should be completedURL, not completedUrl. See the coding style document and note what you yourself did below with targetURL.

I know you just moved the code, but is KURL(ParsedURLString, &quot;&quot;) better than KURL()? Is it different at all?

&gt;      Frame* createWindow(FrameLoader* frameLoaderForFrameLookup, const FrameLoadRequest&amp;, const WindowFeatures&amp;, bool&amp; created);
&gt; +    // Another version of createWindow which passes the target URL where the created window will be navigated to.
&gt; +    Frame* createWindow(FrameLoader* frameLoaderForFrameLookup, const FrameLoadRequest&amp;, const WindowFeatures&amp;, const KURL&amp; targetURL, bool&amp; created);

Do we really need to have both of these? Can we change the callers to all call the new one? I don&apos;t like having an extra function here.

&gt;          Page* createWindow(Frame*, const FrameLoadRequest&amp;, const WindowFeatures&amp;) const;
&gt; +        Page* createWindow(Frame*, const FrameLoadRequest&amp;, const WindowFeatures&amp;, const KURL&amp;) const;

Do we really need to have both of these? Can we change the callers to all call the new one? I don&apos;t like having an extra function here.

Otherwise seems fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245514</commentid>
    <comment_count>7</comment_count>
      <attachid>60230</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-01 13:21:37 -0700</bug_when>
    <thetext>Comment on attachment 60230
patch v1 with cleaning style warning and using KURL instead of String to pass target URL

WebKit/chromium/public/WebViewClient.h:43
 +  #include &lt;wtf/UnusedParam.h&gt;
you cannot have wtf includes from webkit api headers.
please just leave the parameter unnamed down below.

WebCore/page/ChromeClient.h:97
 +          virtual Page* createWindow(Frame* frame, const FrameLoadRequest&amp; request, const WindowFeatures&amp; features, const KURL&amp; targetURL)
although it is painful, Sam reminded me recently that we should
make all ChromeClient and FrameLoaderClient methods pure virtual.
that way ports will fail to compile if they do not implement the
new methods.  this can help ports not get out of sync with the
methods that they need to be implementing.  arguably, they don&apos;t
need to be implementing this function, but it is better for us to
have a consistent policy that is easy to enforce.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245732</commentid>
    <comment_count>8</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-07-01 20:27:07 -0700</bug_when>
    <thetext>Thanks, Darin! All done!

(In reply to comment #6)
&gt; (From update of attachment 60230 [details])
&gt; &gt; +    KURL completedUrl =
&gt; &gt; +        url.isEmpty() ? KURL(ParsedURLString, &quot;&quot;) : completeURL(url);
&gt; 
&gt; It should be completedURL, not completedUrl. See the coding style document and note what you yourself did below with targetURL.
&gt; 
&gt; I know you just moved the code, but is KURL(ParsedURLString, &quot;&quot;) better than KURL()? Is it different at all?
&gt; 
&gt; &gt;      Frame* createWindow(FrameLoader* frameLoaderForFrameLookup, const FrameLoadRequest&amp;, const WindowFeatures&amp;, bool&amp; created);
&gt; &gt; +    // Another version of createWindow which passes the target URL where the created window will be navigated to.
&gt; &gt; +    Frame* createWindow(FrameLoader* frameLoaderForFrameLookup, const FrameLoadRequest&amp;, const WindowFeatures&amp;, const KURL&amp; targetURL, bool&amp; created);
&gt; 
&gt; Do we really need to have both of these? Can we change the callers to all call the new one? I don&apos;t like having an extra function here.
&gt; 
&gt; &gt;          Page* createWindow(Frame*, const FrameLoadRequest&amp;, const WindowFeatures&amp;) const;
&gt; &gt; +        Page* createWindow(Frame*, const FrameLoadRequest&amp;, const WindowFeatures&amp;, const KURL&amp;) const;
&gt; 
&gt; Do we really need to have both of these? Can we change the callers to all call the new one? I don&apos;t like having an extra function here.
&gt; 
&gt; Otherwise seems fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245734</commentid>
    <comment_count>9</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-07-01 20:45:11 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 60230 [details])
&gt; WebKit/chromium/public/WebViewClient.h:43
&gt;  +  #include &lt;wtf/UnusedParam.h&gt;
&gt; you cannot have wtf includes from webkit api headers.
&gt; please just leave the parameter unnamed down below.
&gt; 
Done

&gt; WebCore/page/ChromeClient.h:97
&gt;  +          virtual Page* createWindow(Frame* frame, const FrameLoadRequest&amp; request, const WindowFeatures&amp; features, const KURL&amp; targetURL)
&gt; although it is painful, Sam reminded me recently that we should
&gt; make all ChromeClient and FrameLoaderClient methods pure virtual.
&gt; that way ports will fail to compile if they do not implement the
&gt; new methods.  this can help ports not get out of sync with the
&gt; methods that they need to be implementing.  arguably, they don&apos;t
&gt; need to be implementing this function, but it is better for us to
&gt; have a consistent policy that is easy to enforce.

I understand the reason to make all ChromeClient and FrameLoaderClient methods pure virtual, but since The ChromeClient is important interface which is already used by all WebKit ports, it cold make the compilation failed. Should I changed all ports? (Making the callers to all call the new one createWindow also cause compilation failed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245735</commentid>
    <comment_count>10</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-07-01 20:46:40 -0700</bug_when>
    <thetext>I have to leave work until July 8th. Sorry for the delay and inconvenience. I will continue working on this from July 8th.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249054</commentid>
    <comment_count>11</comment_count>
      <attachid>61049</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-07-09 09:40:48 -0700</bug_when>
    <thetext>Created attachment 61049
patch V2 ()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249056</commentid>
    <comment_count>12</comment_count>
      <attachid>61050</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-07-09 09:42:18 -0700</bug_when>
    <thetext>Created attachment 61050
patch V2, change the createWindow method on all ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249076</commentid>
    <comment_count>13</comment_count>
      <attachid>61050</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-09 10:09:24 -0700</bug_when>
    <thetext>Comment on attachment 61050
patch V2, change the createWindow method on all ports.

WebCore/loader/FrameLoader.h:125
 +      Frame* createWindow(FrameLoader* frameLoaderForFrameLookup, const FrameLoadRequest&amp;, const WindowFeatures&amp;, const KURL&amp;, bool&amp;);
please do not remove the &quot;created&quot; parameter name.  that was helpful
documentation for the meaning of the bool out parameter.  the rule
in webkit is to leave parameters unnamed if the type name is sufficient
to document its purpose.  in this case, i think you should also give
the KURL parameter a name.  targetURL seems good since you are using
that elsewhere.

actually, it just occurred to me:  why do we need to pass completedURL
when we have the url stored in the frameRequest?  it should not be a
different url.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249093</commentid>
    <comment_count>14</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-07-09 10:28:03 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 61050 [details])
&gt; WebCore/loader/FrameLoader.h:125
&gt;  +      Frame* createWindow(FrameLoader* frameLoaderForFrameLookup, const FrameLoadRequest&amp;, const WindowFeatures&amp;, const KURL&amp;, bool&amp;);
&gt; please do not remove the &quot;created&quot; parameter name.  that was helpful
&gt; documentation for the meaning of the bool out parameter.  the rule
&gt; in webkit is to leave parameters unnamed if the type name is sufficient
&gt; to document its purpose.  in this case, i think you should also give
&gt; the KURL parameter a name.  targetURL seems good since you are using
&gt; that elsewhere.
&gt; 
&gt; actually, it just occurred to me:  why do we need to pass completedURL
&gt; when we have the url stored in the frameRequest?  it should not be a
&gt; different url.

Yes, ideally the targetURL should be as same as the URL in the frameRequest, but according to the comments in JSDOMWindowCustom.cpp, now  the code only passes the empty string for the URL. The reason is,  before loading the URL, we have to set up the opener, openedByDOM, and dialogArguments values. Also, to decide whether to use the URL we currently do an allowsAccessFrom call using the window we create, which can&apos;t be done before creating it. We&apos;d have to resolve all those issues to pass the URL instead of &quot;&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249096</commentid>
    <comment_count>15</comment_count>
      <attachid>61057</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-07-09 10:31:02 -0700</bug_when>
    <thetext>Created attachment 61057
patch V2 with adding parameter name for FrameLoader::createWindow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249098</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-09 10:31:47 -0700</bug_when>
    <thetext>Attachment 61050 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3474085</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249101</commentid>
    <comment_count>17</comment_count>
      <attachid>61059</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-07-09 10:42:26 -0700</bug_when>
    <thetext>Created attachment 61059
patch V2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250276</commentid>
    <comment_count>18</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-07-12 21:01:55 -0700</bug_when>
    <thetext>Hi Adam, Darin(@Apple), Darin(@Google)

Sorry for bothering. Would you like review my patch V2 again?
I am pending on this CL to continue my next-step work:-)

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251227</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-14 09:28:13 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Yes, ideally the targetURL should be as same as the URL in the frameRequest, 
&gt; but according to the comments in JSDOMWindowCustom.cpp, now  the code only 
&gt; passes the empty string for the URL. The reason is,  before loading the URL, we 
&gt; have to set up the opener, openedByDOM, and dialogArguments values. Also, to 
&gt; decide whether to use the URL we currently do an allowsAccessFrom call using 
&gt; the window we create, which can&apos;t be done before creating it. We&apos;d have to 
&gt; resolve all those issues to pass the URL instead of &quot;&quot;.

OK, I see that explained in a FIXME comment in the code.

This seems pretty unfortunate.  I think the objective of that comment is to
prevent an embedder from loading the given FrameLoadRequest inside the
createWindow call.  However, by plumbing the URL through the createWindow
call as your patch is doing, you are effectively making it possible for
the embedder to load the URL straight away.

It seems like we should fix all of the embedders to not load the request
inside of createWindow, and then we should be able to safely pass the
target URL as the URL of the FrameLoadRequest.

Plumbing another URL parameter alongside the FrameLoadRequest doesn&apos;t seem
like the right solution to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251866</commentid>
    <comment_count>20</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-07-15 07:26:25 -0700</bug_when>
    <thetext>&gt; 
&gt; OK, I see that explained in a FIXME comment in the code.
&gt; 
&gt; This seems pretty unfortunate.  I think the objective of that comment is to
&gt; prevent an embedder from loading the given FrameLoadRequest inside the
&gt; createWindow call.  However, by plumbing the URL through the createWindow
&gt; call as your patch is doing, you are effectively making it possible for
&gt; the embedder to load the URL straight away.
&gt; 
&gt; It seems like we should fix all of the embedders to not load the request
&gt; inside of createWindow, and then we should be able to safely pass the
&gt; target URL as the URL of the FrameLoadRequest.
&gt; 
&gt; Plumbing another URL parameter alongside the FrameLoadRequest doesn&apos;t seem
&gt; like the right solution to me.

I see, you are right, this additional targetURL parameter looks redundant.
I will investigate how many code will be affected if we pass target URL as the URL of the FrameLoadRequest and come up with a new patch.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254995</commentid>
    <comment_count>21</comment_count>
      <attachid>61059</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-22 14:39:23 -0700</bug_when>
    <thetext>Comment on attachment 61059
patch V2

Removing the review flag as per comment 20.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305203</commentid>
    <comment_count>22</comment_count>
    <who name="">jochen</who>
    <bug_when>2010-11-05 03:24:33 -0700</bug_when>
    <thetext>*** Bug 48991 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309632</commentid>
    <comment_count>23</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-11-16 01:20:35 -0800</bug_when>
    <thetext>According to the previous discussion with Darin, we should find a solution, which can fix  all of the embedders to not load the request inside of createWindow. So we should be able to safely pass the target URL as the URL of the FrameLoadRequest.

According to my analysis, currently the createWindow are used in two scenarios:
1. called by window.open in JSBinding, this is the most common usage. In this scenario, before loading the URL, we have to set up the opener, openedByDOM, and dialogArguments values. Also, to decide whether to use the URL, we currently do an allowsAccessFrom call using the window we create, which can&apos;t be done before creating it, that is why WebKit passes empty URL to FrameRequest to avoid the URL navigation.

2. called by some places in where we just need to open a window to reload some resources, like a image or a webpage in a new window. It&apos;s triggered by user gesture. Currently it only was only used in ContextMenuController to respond users&apos; actions in context menu.

In most time, currently the createWindow only do window-creating without URL navigator, just like its name. Even sometime it does the URL navigation, it can be broken into two parts: create window and navigate the specified URL.
However recently a new parameter NavigationAction was added to parameter list of createWindow (http://trac.webkit.org/changeset/70823), this parameter also can be used to indicate whether the createWindow will do URL navigation or not.

I personally think we have two options to fix this issue.
1. Explicitly Claim that the createWindow should only do window-creating without URL navigator. we remove all the URL navigation logic in all createWindow and related implementations. We pass the URL to FrameRequest parameter because some ChromeClientIMPL derived classes need the info (like do popup blocking). If caller wants to do navigation after creating window, just call newFrame-&gt;navigationScheduler()-&gt;scheduleLocationChange. 

2. Add a indicator in the NavigationAction parameter to indicate whether the createWindow allow a URL navigation, all createWindow and related implementations should check this indicator before doing URL navigation.

I prefer the option 1 because it makes the createWindow&apos;s logic more clear and we can eventually move it from the huge class: FrameLoader.

My co-worker, Xianzhu Wang(phnixwxz@gmail.com) has graciously volunteered to provide the patch for this issue since he is stepping in WebKit hack in recent months, so I step back to work onthe related chromium bug (http://crbug.com/38458).

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309677</commentid>
    <comment_count>24</comment_count>
      <attachid>73983</attachid>
    <who name="Xianzhu Wang">phnixwxz</who>
    <bug_when>2010-11-16 05:01:53 -0800</bug_when>
    <thetext>Created attachment 73983
Patch V3

This patch changes all createWindow implementations to remove URL navigations in them.
Now full request containing the URL is passed to createWindow for it only to check if the request can be fulfilled.

WebCore::createWindow is still in FrameLoader.cpp to keep this change small. I prefer doing it later in a separate change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309679</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-16 05:08:25 -0800</bug_when>
    <thetext>Attachment 73983 did not build on chromium:
Build output: http://queues.webkit.org/results/5945078</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310106</commentid>
    <comment_count>26</comment_count>
      <attachid>74080</attachid>
    <who name="Xianzhu Wang">phnixwxz</who>
    <bug_when>2010-11-16 20:23:20 -0800</bug_when>
    <thetext>Created attachment 74080
Patch V3 update 1 fixed Chromium break</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316219</commentid>
    <comment_count>27</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-12-02 09:49:10 -0800</bug_when>
    <thetext>Hi Adam, Darin (from Apple) and Darin (from Google),
Would you please take a look this patch and share your comments when you have time. As long as the issue gets fixed, the embedder can know the popup URL when creating window and decide to whether grant the access or not as early as possible.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330791</commentid>
    <comment_count>28</comment_count>
      <attachid>74080</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-01-07 09:00:04 -0800</bug_when>
    <thetext>Comment on attachment 74080
Patch V3 update 1 fixed Chromium break

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

Just nits, but otherwise this LGTM.

&gt; WebCore/bindings/generic/BindingDOMWindow.h:89
&gt; +    KURL completedUrl = url.isEmpty() ? KURL() : completeURL(state, url);

nit: completedUrl -&gt; completedURL

acronyms should either be lowercase or UPPERCASE depending on whether they appear at the beginning or elsewhere in a name, respectively.

&gt; WebKit/chromium/public/WebViewClient.h:85
&gt;      virtual WebView* createView(WebFrame* creator,

nit: please add a FIXME comment saying that this method is DEPRECATED.

&gt; WebKit/chromium/public/WebViewClient.h:88
&gt; +    // Sometimes it&apos;s much better for client API if a new window starts with a

nit: insert a new line above this comment.

&gt; WebKit/chromium/public/WebViewClient.h:92
&gt; +    virtual WebView* createView(WebFrame* creator,

nit: (bikeshed comment) how about re-ordering these parameters so that it is creator, request, name, and then features?  that way it more closely resembles window.open(url, name, features).

&gt; WebKit/chromium/public/WebViewClient.h:96
&gt; +        (void)request;                        

nit: please just leave the WebURLRequest parameter unnamed so that you don&apos;t need
to write this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331163</commentid>
    <comment_count>29</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-01-07 23:00:07 -0800</bug_when>
    <thetext>Thanks Darin.
@Xianzhu, please fix the patch according to Darin&apos;s comments. I will commit it once you fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331189</commentid>
    <comment_count>30</comment_count>
      <attachid>74080</attachid>
    <who name="Xianzhu Wang">phnixwxz</who>
    <bug_when>2011-01-08 07:01:54 -0800</bug_when>
    <thetext>Comment on attachment 74080
Patch V3 update 1 fixed Chromium break

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

&gt;&gt; WebCore/bindings/generic/BindingDOMWindow.h:89
&gt;&gt; +    KURL completedUrl = url.isEmpty() ? KURL() : completeURL(state, url);
&gt; 
&gt; nit: completedUrl -&gt; completedURL
&gt; 
&gt; acronyms should either be lowercase or UPPERCASE depending on whether they appear at the beginning or elsewhere in a name, respectively.

Done. (now in Source/WebCore/page/DOMWindow.cpp

&gt;&gt; WebKit/chromium/public/WebViewClient.h:85
&gt;&gt;      virtual WebView* createView(WebFrame* creator,
&gt; 
&gt; nit: please add a FIXME comment saying that this method is DEPRECATED.

Done.

&gt;&gt; WebKit/chromium/public/WebViewClient.h:88
&gt;&gt; +    // Sometimes it&apos;s much better for client API if a new window starts with a
&gt; 
&gt; nit: insert a new line above this comment.

Done.

&gt;&gt; WebKit/chromium/public/WebViewClient.h:92
&gt;&gt; +    virtual WebView* createView(WebFrame* creator,
&gt; 
&gt; nit: (bikeshed comment) how about re-ordering these parameters so that it is creator, request, name, and then features?  that way it more closely resembles window.open(url, name, features).

Done.

&gt;&gt; WebKit/chromium/public/WebViewClient.h:96
&gt;&gt; +        (void)request;                        
&gt; 
&gt; nit: please just leave the WebURLRequest parameter unnamed so that you don&apos;t need
&gt; to write this line.

The request parameter is referenced in the comment of the method, so we should keep it. I added a FIXME here. Eventually this line will be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331191</commentid>
    <comment_count>31</comment_count>
      <attachid>78309</attachid>
    <who name="Xianzhu Wang">phnixwxz</who>
    <bug_when>2011-01-08 07:03:21 -0800</bug_when>
    <thetext>Created attachment 78309
patch v3 update 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331407</commentid>
    <comment_count>32</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-01-09 02:18:52 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; Created an attachment (id=78309) [details]
&gt; patch v3 update 2

Darin already reviewed your patch, you don&apos;t need to ask for review again, you can change the reviewer in ChangeLog to &quot;Darin Fisher&quot; in your patch and I will help you land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331411</commentid>
    <comment_count>33</comment_count>
      <attachid>78346</attachid>
    <who name="Xianzhu Wang">phnixwxz</who>
    <bug_when>2011-01-09 02:22:41 -0800</bug_when>
    <thetext>Created attachment 78346
patch v3 update 2 with corrected reviewer line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331413</commentid>
    <comment_count>34</comment_count>
      <attachid>78347</attachid>
    <who name="Xianzhu Wang">phnixwxz</who>
    <bug_when>2011-01-09 02:25:55 -0800</bug_when>
    <thetext>Created attachment 78347
patch v3 update 2 with corrected reviewer lines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331417</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-09 03:21:29 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 78347:

http/tests/xmlhttprequest/failed-auth.html bug 51835 (author: ap@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331418</commentid>
    <comment_count>36</comment_count>
      <attachid>78347</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-09 03:23:02 -0800</bug_when>
    <thetext>Comment on attachment 78347
patch v3 update 2 with corrected reviewer lines

Clearing flags on attachment: 78347

Committed r75349: &lt;http://trac.webkit.org/changeset/75349&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331419</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-09 03:23:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331500</commentid>
    <comment_count>38</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-01-09 19:21:22 -0800</bug_when>
    <thetext>This broke all Chromium windows compilers (http://build.webkit.org/builders/Chromium%20Win%20Release, http://build.webkit.org/builders/Chromium%20Win%20Release%20%28Tests%29, http://build.chromium.org/p/chromium.webkit/builders/Webkit%20Win, http://build.chromium.org/p/chromium.webkit/builders/Webkit%20Win%20%28dbg%29).  Can you resolve/revert please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331506</commentid>
    <comment_count>39</comment_count>
    <who name="Xianzhu Wang">phnixwxz</who>
    <bug_when>2011-01-09 21:30:57 -0800</bug_when>
    <thetext>Hi, James,
We are handling the issue. Hopefully we&apos;ll provide the patch in half an hour.
Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331515</commentid>
    <comment_count>40</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-01-09 23:16:12 -0800</bug_when>
    <thetext>Committed r75361: &lt;http://trac.webkit.org/changeset/75361&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331516</commentid>
    <comment_count>41</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-01-09 23:19:14 -0800</bug_when>
    <thetext>(In reply to comment #40)
&gt; Committed r75361: &lt;http://trac.webkit.org/changeset/75361&gt;

Hi James, the fix has been landed in r75361, It should fix the Chromium windows compilation error. Please take a look.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60188</attachid>
            <date>2010-06-30 20:19:00 -0700</date>
            <delta_ts>2010-07-01 05:57:41 -0700</delta_ts>
            <desc>patch V1</desc>
            <filename>patch1.txt</filename>
            <type>text/plain</type>
            <size>12061</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjIyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDYtMzAgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEyOTIKKyAgICAgICAgQWRkIGEg
dGFyZ2V0IFVSTCBwYXJhbWV0ZXIgdG8gdGhlIGNyZWF0ZVdpbmRvdyBtZXRob2QKKyAgICAgICAg
dG8gbGV0IGNsaWVudCBBUElzIGtub3cgd2hpY2ggVVJMIGEgbmV3IHdpbmRvdyB3aWxsIHN0YXJ0
IHdpdGgKKworICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvQmluZGluZ0RPTVdpbmRvdy5oOgor
ICAgICAgICAoV2ViQ29yZTo6OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y3JlYXRlV2luZG93
KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9t
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAg
ICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorCiAyMDEwLTA2LTMwICBD
c2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBidWlsZGZpeCBhZnRlciByNjIxOTYgYW5kIHI2MjIxNC4KSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvZ2VuZXJpYy9CaW5kaW5nRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL0JpbmRpbmdET01XaW5kb3cuaAkocmV2aXNpb24gNjIxODUpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL2dlbmVyaWMvQmluZGluZ0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBA
IC04NiwxMyArODYsMTcgQEAgRnJhbWUqIEJpbmRpbmdET01XaW5kb3c8QmluZGluZz46OmNyZWF0
ZQogICAgIC8vIHdlIGN1cnJlbnRseSBkbyBhbiBhbGxvd3NBY2Nlc3NGcm9tIGNhbGwgdXNpbmcg
dGhlIHdpbmRvdyB3ZSBjcmVhdGUsCiAgICAgLy8gd2hpY2ggY2FuJ3QgYmUgZG9uZSBiZWZvcmUg
Y3JlYXRpbmcgaXQuIFdlJ2QgaGF2ZSB0byByZXNvbHZlIGFsbCB0aG9zZQogICAgIC8vIGlzc3Vl
cyB0byBwYXNzIHRoZSBVUkwgaW5zdGVhZCBvZiAiIi4KKyAgICAvLyBOb3cgd2UgcGFzcyB0aGUg
VVJMIGFzIGEgc2VwYXJhdGUgcGFyYW1ldGVyIHRvIGNyZWF0ZVdpbmRvdyBzbyB0aGUgY2xpZW50
CisgICAgLy8gY2FuIHVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIGRlY2lkZSB3aGV0aGVyIGl0IHNo
b3VsZCBiZSBibG9ja2VkIG9yIG5vdC4KIAorICAgIEtVUkwgY29tcGxldGVkVXJsID0KKyAgICAg
ICAgdXJsLmlzRW1wdHkoKSA/IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiIikgOiBjb21wbGV0ZVVS
TCh1cmwpOwogICAgIGJvb2wgY3JlYXRlZDsKICAgICAvLyBXZSBwYXNzIGluIHRoZSBvcGVuZXIg
ZnJhbWUgaGVyZSBzbyBpdCBjYW4gYmUgdXNlZCBmb3IgbG9va2luZyB1cCB0aGUKICAgICAvLyBm
cmFtZSBuYW1lLCBpbiBjYXNlIHRoZSBhY3RpdmUgZnJhbWUgaXMgZGlmZmVyZW50IGZyb20gdGhl
IG9wZW5lciBmcmFtZSwKICAgICAvLyBhbmQgdGhlIG5hbWUgcmVmZXJlbmNlcyBhIGZyYW1lIHJl
bGF0aXZlIHRvIHRoZSBvcGVuZXIgZnJhbWUsIGZvciBleGFtcGxlCiAgICAgLy8gIl9zZWxmIiBv
ciAiX3BhcmVudCIuCi0gICAgRnJhbWUqIG5ld0ZyYW1lID0gY2FsbGluZ0ZyYW1lLT5sb2FkZXIo
KS0+Y3JlYXRlV2luZG93KG9wZW5lckZyYW1lLT5sb2FkZXIoKSwgZnJhbWVSZXF1ZXN0LCB3aW5k
b3dGZWF0dXJlcywgY3JlYXRlZCk7CisgICAgRnJhbWUqIG5ld0ZyYW1lID0gY2FsbGluZ0ZyYW1l
LT5sb2FkZXIoKS0+Y3JlYXRlV2luZG93KG9wZW5lckZyYW1lLT5sb2FkZXIoKSwgZnJhbWVSZXF1
ZXN0LCB3aW5kb3dGZWF0dXJlcywgY29tcGxldGVVcmwucHJldHR5VVJMKCksIGNyZWF0ZWQpOwog
ICAgIGlmICghbmV3RnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMDIsOCArMTA2LDYg
QEAgRnJhbWUqIEJpbmRpbmdET01XaW5kb3c8QmluZGluZz46OmNyZWF0ZQogICAgIEJpbmRpbmc6
OkRPTVdpbmRvdzo6c3RvcmVEaWFsb2dBcmdzKHN0YXRlLCBuZXdGcmFtZSwgZGlhbG9nQXJncyk7
CiAKICAgICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkgfHwgQmluZGluZ1NlY3VyaXR5
PEJpbmRpbmc+OjpjYW5BY2Nlc3NGcmFtZShzdGF0ZSwgbmV3RnJhbWUsIHRydWUpKSB7Ci0gICAg
ICAgIEtVUkwgY29tcGxldGVkVXJsID0KLSAgICAgICAgICAgIHVybC5pc0VtcHR5KCkgPyBLVVJM
KFBhcnNlZFVSTFN0cmluZywgIiIpIDogY29tcGxldGVVUkwodXJsKTsKICAgICAgICAgYm9vbCB1
c2VyR2VzdHVyZSA9IHByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwogCiAgICAgICAgIGlmIChjcmVh
dGVkKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNjIxODUpCisrKyBXZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw3ICsyNTgs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgCiAgICAgfQogfQog
Ci1GcmFtZSogRnJhbWVMb2FkZXI6OmNyZWF0ZVdpbmRvdyhGcmFtZUxvYWRlciogZnJhbWVMb2Fk
ZXJGb3JGcmFtZUxvb2t1cCwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBib29sJiBjcmVhdGVkKQorRnJhbWUqIEZyYW1lTG9h
ZGVyOjpjcmVhdGVXaW5kb3coRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyRm9yRnJhbWVMb29rdXAs
IGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBm
ZWF0dXJlcywgY29uc3QgU3RyaW5nJiB0YXJnZXRVUkwsIGJvb2wmIGNyZWF0ZWQpCiB7IAogICAg
IEFTU0VSVCghZmVhdHVyZXMuZGlhbG9nIHx8IHJlcXVlc3QuZnJhbWVOYW1lKCkuaXNFbXB0eSgp
KTsKIApAQCAtMjg3LDcgKzI4Nyw3IEBAIEZyYW1lKiBGcmFtZUxvYWRlcjo6Y3JlYXRlV2luZG93
KEZyYW1lTG8KICAgICBpZiAoIW9sZFBhZ2UpCiAgICAgICAgIHJldHVybiAwOwogICAgICAgICAK
LSAgICBQYWdlKiBwYWdlID0gb2xkUGFnZS0+Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhtX2ZyYW1l
LCByZXF1ZXN0V2l0aFJlZmVycmVyLCBmZWF0dXJlcyk7CisgICAgUGFnZSogcGFnZSA9IG9sZFBh
Z2UtPmNocm9tZSgpLT5jcmVhdGVXaW5kb3cobV9mcmFtZSwgcmVxdWVzdFdpdGhSZWZlcnJlciwg
ZmVhdHVyZXMsIHRhcmdldFVSTCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gMDsK
IApAQCAtMzIzLDYgKzMyMywxMSBAQCBGcmFtZSogRnJhbWVMb2FkZXI6OmNyZWF0ZVdpbmRvdyhG
cmFtZUxvCiAgICAgcmV0dXJuIGZyYW1lOwogfQogCitGcmFtZSogRnJhbWVMb2FkZXI6OmNyZWF0
ZVdpbmRvdyhGcmFtZUxvYWRlciogZnJhbWVMb2FkZXJGb3JGcmFtZUxvb2t1cCwgY29uc3QgRnJh
bWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBi
b29sJiBjcmVhdGVkKQoreworICAgIHJldHVybiBjcmVhdGVXaW5kb3coZnJhbWVMb2FkZXJGb3JG
cmFtZUxvb2t1cCwgcmVxdWVzdCwgZmVhdHVyZXMsICIiLCBjcmVhdGVkKTsKK30KKwogYm9vbCBG
cmFtZUxvYWRlcjo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCiB7CiAgICAgcmV0dXJuIG1fY2xpZW50LT5jYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpOwpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA2MjE4NSkKKysrIFdlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBwdWJsaWM6
CiAgICAgLy8gQ2FsbGVkIGJ5IGNyZWF0ZVdpbmRvdyBpbiBKU0RPTVdpbmRvd0Jhc2UuY3BwLCBl
LmcuIHRvIGZ1bGZpbGwgYSBtb2RhbCBkaWFsb2cgY3JlYXRpb24KICAgICAvLyBGSVhNRTogTW92
ZSB0aGlzIG1ldGhvZCBvdXRzaWRlIG9mIHRoZSBGcmFtZUxvYWRlciBjbGFzcy4KICAgICBGcmFt
ZSogY3JlYXRlV2luZG93KEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlckZvckZyYW1lTG9va3VwLCBj
b25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmLCBib29sJiBjcmVh
dGVkKTsKKyAgICAvLyBBbm90aGVyIHZlcnNpb24gb2YgY3JlYXRlV2luZG93IHdoaWNoIHBhc3Nl
cyB0aGUgdGFyZ2V0IFVSTCB3aGVyZSB0aGUgY3JlYXRlZCB3aW5kb3cgd2lsbCBiZSBuYXZpZ2F0
ZWQgdG8uCisgICAgRnJhbWUqIGNyZWF0ZVdpbmRvdyhGcmFtZUxvYWRlciogZnJhbWVMb2FkZXJG
b3JGcmFtZUxvb2t1cCwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1
cmVzJiwgY29uc3QgU3RyaW5nJiB0YXJnZXRVUkwsIGJvb2wmIGNyZWF0ZWQpOwogCiAgICAgdW5z
aWduZWQgbG9uZyBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYs
IFZlY3RvcjxjaGFyPiYgZGF0YSk7CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiA2MjE4NSkKKysr
IFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsOSArMTYzLDkg
QEAgdm9pZCBDaHJvbWU6OmZvY3VzZWROb2RlQ2hhbmdlZChOb2RlKiBubwogICAgIG1fY2xpZW50
LT5mb2N1c2VkTm9kZUNoYW5nZWQobm9kZSk7CiB9CiAKLVBhZ2UqIENocm9tZTo6Y3JlYXRlV2lu
ZG93KEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2luZG93RmVhdHVyZXMmIGZlYXR1cmVzKSBjb25zdAorUGFnZSogQ2hyb21lOjpjcmVhdGVXaW5k
b3coRnJhbWUqIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBX
aW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMsIGNvbnN0IFN0cmluZyYgdGFyZ2V0VVJMKSBjb25zdAog
ewotICAgIFBhZ2UqIG5ld1BhZ2UgPSBtX2NsaWVudC0+Y3JlYXRlV2luZG93KGZyYW1lLCByZXF1
ZXN0LCBmZWF0dXJlcyk7CisgICAgUGFnZSogbmV3UGFnZSA9IG1fY2xpZW50LT5jcmVhdGVXaW5k
b3coZnJhbWUsIHJlcXVlc3QsIGZlYXR1cmVzLCB0YXJnZXRVUkwpOwogCiAjaWYgRU5BQkxFKERP
TV9TVE9SQUdFKQogICAgIGlmIChuZXdQYWdlKSB7CkBAIC0xNzcsNiArMTc3LDExIEBAIFBhZ2Uq
IENocm9tZTo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwKICAgICByZXR1cm4gbmV3UGFnZTsK
IH0KIAorUGFnZSogQ2hyb21lOjpjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBjb25zdCBGcmFt
ZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGNyZWF0ZVdpbmRvdyhmcmFtZSwgcmVxdWVzdCwgZmVhdHVyZXMs
ICIiKTsKK30KKwogdm9pZCBDaHJvbWU6OnNob3coKSBjb25zdAogewogICAgIG1fY2xpZW50LT5z
aG93KCk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0Nocm9tZS5oCShyZXZpc2lvbiA2MjE4NSkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUu
aAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZvaWQgZm9jdXNlZE5vZGVDaGFuZ2VkKE5vZGUqKSBjb25zdDsKIAogICAgICAgICBQ
YWdlKiBjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3Qg
V2luZG93RmVhdHVyZXMmKSBjb25zdDsKKyAgICAgICAgUGFnZSogY3JlYXRlV2luZG93KEZyYW1l
KiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiwgY29uc3Qg
U3RyaW5nJikgY29uc3Q7CiAgICAgICAgIHZvaWQgc2hvdygpIGNvbnN0OwogCiAgICAgICAgIGJv
b2wgY2FuUnVuTW9kYWwoKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDYy
MTg1KQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VudXNl
ZFBhcmFtLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpA
QCAtOTEsNiArOTIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIHNob3VsZCBu
b3QgYmUgc2hvd24gdG8gdGhlIHVzZXIgdW50aWwgdGhlIENocm9tZUNsaWVudCBvZiB0aGUgbmV3
bHkKICAgICAgICAgLy8gY3JlYXRlZCBQYWdlIGhhcyBpdHMgc2hvdyBtZXRob2QgY2FsbGVkLgog
ICAgICAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9h
ZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYpID0gMDsKKyAgICAgICAgLy8gQW5vdGhl
ciB2ZXJzaW9uIG9mIGNyZWF0ZVdpbmRvdyB3aGljaCBwYXNzZXMgdGhlIHRhcmdldCBVUkwgd2hl
cmUgdGhlIGNyZWF0ZWQgd2luZG93IHdpbGwgYmUgbmF2aWdhdGVkIHRvLgorICAgICAgICB2aXJ0
dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSogZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywgY29uc3QgU3RyaW5n
JiB0YXJnZXRVUkwpICB7IFVOVVNFRF9QQVJBTSh0YXJnZXRVUkwpOyByZXR1cm4gY3JlYXRlV2lu
ZG93KGZyYW1lLCByZXF1ZXN0LCBmZWF0dXJlcyk7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHNo
b3coKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBib29sIGNhblJ1bk1vZGFsKCkgPSAwOwpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjIyMykKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wNi0zMCAgSm9obm55IERp
bmcgIDxqbmRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MTI5MgorICAgICAgICBBZGQgYSB0YXJnZXQgVVJMIHBhcmFtZXRlciB0byB0aGUgY3JlYXRlVmll
dyBhbmQgY3JlYXRlV2luZG93IG1ldGhvZHMKKyAgICAgICAgdG8gbGV0IGNsaWVudCBBUElzIGtu
b3cgd2hpY2ggVVJMIGEgbmV3IHdpbmRvdyB3aWxsIHN0YXJ0IHdpdGgKKworICAgICAgICAqIHB1
YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OmNy
ZWF0ZVZpZXcpOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlV2luZG93KToKKyAgICAgICAgKiBzcmMv
Q2hyb21lQ2xpZW50SW1wbC5oOgorCiAyMDEwLTA2LTMwICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJA
Z29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAkocmV2aXNpb24gNjIxODUpCisr
KyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIldlYlRleHRBZmZpbml0eS5oIgogI2luY2x1ZGUg
IldlYlRleHREaXJlY3Rpb24uaCIKICNpbmNsdWRlICJXZWJXaWRnZXRDbGllbnQuaCIKKyNpbmNs
dWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTc1LDYg
Kzc2LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYlZpZXcqIGNyZWF0ZVZpZXcoV2ViRnJh
bWUqIGNyZWF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYldp
bmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgV2ViU3RyaW5nJiBuYW1lKSB7IHJldHVybiAwOyB9CisgICAgLy8gU29tZXRpbWVzIGl0
J3MgbXVjaCBiZXR0ZXIgZm9yIGNsaWVudCBBUEkgaWYgYSBuZXcgd2luZG93IHN0YXJ0cyB3aXRo
IGEKKyAgICAvLyBVUkwsIGhlcmUgd2hlcmUgd2Uga25vdyB3aGF0IFVSTCB3ZSBhcmUgZ29pbmcg
dG8gb3Blbi4KKyAgICB2aXJ0dWFsIFdlYlZpZXcqIGNyZWF0ZVZpZXcoV2ViRnJhbWUqIGNyZWF0
b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYldpbmRvd0ZlYXR1
cmVzJiBmZWF0dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2Vi
U3RyaW5nJiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJV
UkwmIHVybCkgeworICAgICAgICBVTlVTRURfUEFSQU0odXJsKTsgICAgICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgLy8gVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMgdG8gY2FsbCB0
aGUgb2xkIHZlcnNpb24gb2YgY3JlYXRlVmlldy4KKyAgICAgICAgcmV0dXJuIGNyZWF0ZVZpZXco
Y3JlYXRvciwgZmVhdHVyZXMsIG5hbWUpOyAKKyAgICB9CiAKICAgICAvLyBDcmVhdGUgYSBuZXcg
V2ViUG9wdXBNZW51LiAgSW4gdGhlIHNlY29uZCBmb3JtLCB0aGUgY2xpZW50IGlzCiAgICAgLy8g
cmVzcG9uc2libGUgZm9yIHJlbmRlcmluZyB0aGUgY29udGVudHMgb2YgdGhlIHBvcHVwIG1lbnUu
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9u
IDYyMTg1KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjI0LDE0ICsyMjQsMTYgQEAgdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpm
b2N1c2VkTm9kZUNoYW5nZQogICAgIH0KIH0KIAotUGFnZSogQ2hyb21lQ2xpZW50SW1wbDo6Y3Jl
YXRlV2luZG93KAotICAgIEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgciwg
Y29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzKQorUGFnZSogQ2hyb21lQ2xpZW50SW1wbDo6
Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHRhcmdldFVSTCkKIHsK
ICAgICBpZiAoIW1fd2ViVmlldy0+Y2xpZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAg
V2ViVmlld0ltcGwqIG5ld1ZpZXcgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KAotICAgICAg
ICBtX3dlYlZpZXctPmNsaWVudCgpLT5jcmVhdGVWaWV3KFdlYkZyYW1lSW1wbDo6ZnJvbUZyYW1l
KGZyYW1lKSwgZmVhdHVyZXMsIHIuZnJhbWVOYW1lKCkpKTsKKyAgICAgICAgbV93ZWJWaWV3LT5j
bGllbnQoKS0+Y3JlYXRlVmlldyhXZWJGcmFtZUltcGw6OmZyb21GcmFtZShmcmFtZSksIGZlYXR1
cmVzLCByLmZyYW1lTmFtZSgpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgdGFyZ2V0VVJMKSkpOwog
ICAgIGlmICghbmV3VmlldykKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTI0NSw2ICsyNDcsMTIg
QEAgUGFnZSogQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlV2luZG93KAogICAgIHJldHVybiBuZXdW
aWV3LT5wYWdlKCk7CiB9CiAKK1BhZ2UqIENocm9tZUNsaWVudEltcGw6OmNyZWF0ZVdpbmRvdygK
KyAgICBGcmFtZSogZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHIsIGNvbnN0IFdpbmRv
d0ZlYXR1cmVzJiBmZWF0dXJlcykKK3sKKyAgICByZXR1cm4gY3JlYXRlV2luZG93KGZyYW1lLCBy
LCBmZWF0dXJlcywgIiIpOworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgY3VycmVudEV2ZW50U2hv
dWxkQ2F1c2VCYWNrZ3JvdW5kVGFiKGNvbnN0IFdlYklucHV0RXZlbnQqIGlucHV0RXZlbnQpCiB7
CiAgICAgaWYgKCFpbnB1dEV2ZW50KQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmgJKHJldmlzaW9uIDYyMTg1KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBmb2N1c2VkTm9kZUNoYW5nZWQoV2ViQ29yZTo6Tm9kZSopOwogICAgIHZp
cnR1YWwgV2ViQ29yZTo6UGFnZSogY3JlYXRlV2luZG93KAogICAgICAgICBXZWJDb3JlOjpGcmFt
ZSosIGNvbnN0IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5k
b3dGZWF0dXJlcyYpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFnZSogY3JlYXRlV2luZG93KAor
ICAgICAgICBXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYp
OwogICAgIHZpcnR1YWwgdm9pZCBzaG93KCk7CiAgICAgdmlydHVhbCBib29sIGNhblJ1bk1vZGFs
KCk7CiAgICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFsKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60230</attachid>
            <date>2010-07-01 05:57:41 -0700</date>
            <delta_ts>2010-07-09 10:31:02 -0700</delta_ts>
            <desc>patch v1 with cleaning style warning and using KURL instead of String to pass target URL</desc>
            <filename>patch1.txt</filename>
            <type>text/plain</type>
            <size>12571</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjIyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDYtMzAgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEyOTIKKyAgICAgICAgQWRkIGEg
dGFyZ2V0IFVSTCBwYXJhbWV0ZXIgdG8gdGhlIGNyZWF0ZVdpbmRvdyBtZXRob2QKKyAgICAgICAg
dG8gbGV0IGNsaWVudCBBUElzIGtub3cgd2hpY2ggVVJMIGEgbmV3IHdpbmRvdyB3aWxsIHN0YXJ0
IHdpdGgKKworICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvQmluZGluZ0RPTVdpbmRvdy5oOgor
ICAgICAgICAoV2ViQ29yZTo6OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y3JlYXRlV2luZG93
KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9t
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAg
ICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorCiAyMDEwLTA2LTMwICBD
c2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBidWlsZGZpeCBhZnRlciByNjIxOTYgYW5kIHI2MjIxNC4KSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvZ2VuZXJpYy9CaW5kaW5nRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL0JpbmRpbmdET01XaW5kb3cuaAkocmV2aXNpb24gNjIxODUpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL2dlbmVyaWMvQmluZGluZ0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBA
IC04NiwxMyArODYsMTcgQEAgRnJhbWUqIEJpbmRpbmdET01XaW5kb3c8QmluZGluZz46OmNyZWF0
ZQogICAgIC8vIHdlIGN1cnJlbnRseSBkbyBhbiBhbGxvd3NBY2Nlc3NGcm9tIGNhbGwgdXNpbmcg
dGhlIHdpbmRvdyB3ZSBjcmVhdGUsCiAgICAgLy8gd2hpY2ggY2FuJ3QgYmUgZG9uZSBiZWZvcmUg
Y3JlYXRpbmcgaXQuIFdlJ2QgaGF2ZSB0byByZXNvbHZlIGFsbCB0aG9zZQogICAgIC8vIGlzc3Vl
cyB0byBwYXNzIHRoZSBVUkwgaW5zdGVhZCBvZiAiIi4KKyAgICAvLyBOb3cgd2UgcGFzcyB0aGUg
VVJMIGFzIGEgc2VwYXJhdGUgcGFyYW1ldGVyIHRvIGNyZWF0ZVdpbmRvdyBzbyB0aGUgY2xpZW50
CisgICAgLy8gY2FuIHVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIGRlY2lkZSB3aGV0aGVyIGl0IHNo
b3VsZCBiZSBibG9ja2VkIG9yIG5vdC4KIAorICAgIEtVUkwgY29tcGxldGVkVXJsID0KKyAgICAg
ICAgdXJsLmlzRW1wdHkoKSA/IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiIikgOiBjb21wbGV0ZVVS
TCh1cmwpOwogICAgIGJvb2wgY3JlYXRlZDsKICAgICAvLyBXZSBwYXNzIGluIHRoZSBvcGVuZXIg
ZnJhbWUgaGVyZSBzbyBpdCBjYW4gYmUgdXNlZCBmb3IgbG9va2luZyB1cCB0aGUKICAgICAvLyBm
cmFtZSBuYW1lLCBpbiBjYXNlIHRoZSBhY3RpdmUgZnJhbWUgaXMgZGlmZmVyZW50IGZyb20gdGhl
IG9wZW5lciBmcmFtZSwKICAgICAvLyBhbmQgdGhlIG5hbWUgcmVmZXJlbmNlcyBhIGZyYW1lIHJl
bGF0aXZlIHRvIHRoZSBvcGVuZXIgZnJhbWUsIGZvciBleGFtcGxlCiAgICAgLy8gIl9zZWxmIiBv
ciAiX3BhcmVudCIuCi0gICAgRnJhbWUqIG5ld0ZyYW1lID0gY2FsbGluZ0ZyYW1lLT5sb2FkZXIo
KS0+Y3JlYXRlV2luZG93KG9wZW5lckZyYW1lLT5sb2FkZXIoKSwgZnJhbWVSZXF1ZXN0LCB3aW5k
b3dGZWF0dXJlcywgY3JlYXRlZCk7CisgICAgRnJhbWUqIG5ld0ZyYW1lID0gY2FsbGluZ0ZyYW1l
LT5sb2FkZXIoKS0+Y3JlYXRlV2luZG93KG9wZW5lckZyYW1lLT5sb2FkZXIoKSwgZnJhbWVSZXF1
ZXN0LCB3aW5kb3dGZWF0dXJlcywgY29tcGxldGVVcmwsIGNyZWF0ZWQpOwogICAgIGlmICghbmV3
RnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMDIsOCArMTA2LDYgQEAgRnJhbWUqIEJp
bmRpbmdET01XaW5kb3c8QmluZGluZz46OmNyZWF0ZQogICAgIEJpbmRpbmc6OkRPTVdpbmRvdzo6
c3RvcmVEaWFsb2dBcmdzKHN0YXRlLCBuZXdGcmFtZSwgZGlhbG9nQXJncyk7CiAKICAgICBpZiAo
IXByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkgfHwgQmluZGluZ1NlY3VyaXR5PEJpbmRpbmc+Ojpj
YW5BY2Nlc3NGcmFtZShzdGF0ZSwgbmV3RnJhbWUsIHRydWUpKSB7Ci0gICAgICAgIEtVUkwgY29t
cGxldGVkVXJsID0KLSAgICAgICAgICAgIHVybC5pc0VtcHR5KCkgPyBLVVJMKFBhcnNlZFVSTFN0
cmluZywgIiIpIDogY29tcGxldGVVUkwodXJsKTsKICAgICAgICAgYm9vbCB1c2VyR2VzdHVyZSA9
IHByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwogCiAgICAgICAgIGlmIChjcmVhdGVkKQpJbmRleDog
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNjIxODUpCisrKyBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgCiAgICAgfQogfQogCi1GcmFtZSogRnJh
bWVMb2FkZXI6OmNyZWF0ZVdpbmRvdyhGcmFtZUxvYWRlciogZnJhbWVMb2FkZXJGb3JGcmFtZUxv
b2t1cCwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVy
ZXMmIGZlYXR1cmVzLCBib29sJiBjcmVhdGVkKQorRnJhbWUqIEZyYW1lTG9hZGVyOjpjcmVhdGVX
aW5kb3coRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyRm9yRnJhbWVMb29rdXAsIGNvbnN0IEZyYW1l
TG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywgY29u
c3QgS1VSTCYgdGFyZ2V0VVJMLCBib29sJiBjcmVhdGVkKQogeyAKICAgICBBU1NFUlQoIWZlYXR1
cmVzLmRpYWxvZyB8fCByZXF1ZXN0LmZyYW1lTmFtZSgpLmlzRW1wdHkoKSk7CiAKQEAgLTI4Nyw3
ICsyODcsNyBAQCBGcmFtZSogRnJhbWVMb2FkZXI6OmNyZWF0ZVdpbmRvdyhGcmFtZUxvCiAgICAg
aWYgKCFvbGRQYWdlKQogICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCi0gICAgUGFnZSogcGFn
ZSA9IG9sZFBhZ2UtPmNocm9tZSgpLT5jcmVhdGVXaW5kb3cobV9mcmFtZSwgcmVxdWVzdFdpdGhS
ZWZlcnJlciwgZmVhdHVyZXMpOworICAgIFBhZ2UqIHBhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS0+
Y3JlYXRlV2luZG93KG1fZnJhbWUsIHJlcXVlc3RXaXRoUmVmZXJyZXIsIGZlYXR1cmVzLCB0YXJn
ZXRVUkwpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTMyMyw2ICsz
MjMsMTEgQEAgRnJhbWUqIEZyYW1lTG9hZGVyOjpjcmVhdGVXaW5kb3coRnJhbWVMbwogICAgIHJl
dHVybiBmcmFtZTsKIH0KIAorRnJhbWUqIEZyYW1lTG9hZGVyOjpjcmVhdGVXaW5kb3coRnJhbWVM
b2FkZXIqIGZyYW1lTG9hZGVyRm9yRnJhbWVMb29rdXAsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywgYm9vbCYgY3JlYXRlZCkK
K3sKKyAgICByZXR1cm4gY3JlYXRlV2luZG93KGZyYW1lTG9hZGVyRm9yRnJhbWVMb29rdXAsIHJl
cXVlc3QsIGZlYXR1cmVzLCBLVVJMKCksIGNyZWF0ZWQpOworfQorCiBib29sIEZyYW1lTG9hZGVy
OjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAg
ICByZXR1cm4gbV9jbGllbnQtPmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCk7CkluZGV4OiBXZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgJKHJldmlzaW9uIDYyMTg1KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMyw4IEBAIHB1YmxpYzoKICAgICAvLyBD
YWxsZWQgYnkgY3JlYXRlV2luZG93IGluIEpTRE9NV2luZG93QmFzZS5jcHAsIGUuZy4gdG8gZnVs
ZmlsbCBhIG1vZGFsIGRpYWxvZyBjcmVhdGlvbgogICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgbWV0
aG9kIG91dHNpZGUgb2YgdGhlIEZyYW1lTG9hZGVyIGNsYXNzLgogICAgIEZyYW1lKiBjcmVhdGVX
aW5kb3coRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyRm9yRnJhbWVMb29rdXAsIGNvbnN0IEZyYW1l
TG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGJvb2wmIGNyZWF0ZWQpOworICAg
IC8vIEFub3RoZXIgdmVyc2lvbiBvZiBjcmVhdGVXaW5kb3cgd2hpY2ggcGFzc2VzIHRoZSB0YXJn
ZXQgVVJMIHdoZXJlIHRoZSBjcmVhdGVkIHdpbmRvdyB3aWxsIGJlIG5hdmlnYXRlZCB0by4KKyAg
ICBGcmFtZSogY3JlYXRlV2luZG93KEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlckZvckZyYW1lTG9v
a3VwLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmLCBjb25z
dCBLVVJMJiB0YXJnZXRVUkwsIGJvb2wmIGNyZWF0ZWQpOwogCiAgICAgdW5zaWduZWQgbG9uZyBs
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN0b3JlZENy
ZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFy
PiYgZGF0YSk7CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiA2MjE4NSkKKysrIFdlYkNvcmUvcGFn
ZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlBhZ2VHcm91cExvYWREZWZlcnJlci5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVj
dC5oIgpAQCAtMTYzLDkgKzE2NCw5IEBAIHZvaWQgQ2hyb21lOjpmb2N1c2VkTm9kZUNoYW5nZWQo
Tm9kZSogbm8KICAgICBtX2NsaWVudC0+Zm9jdXNlZE5vZGVDaGFuZ2VkKG5vZGUpOwogfQogCi1Q
YWdlKiBDaHJvbWU6OmNyZWF0ZVdpbmRvdyhGcmFtZSogZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcykgY29uc3QKK1Bh
Z2UqIENocm9tZTo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBLVVJM
JiB0YXJnZXRVUkwpIGNvbnN0CiB7Ci0gICAgUGFnZSogbmV3UGFnZSA9IG1fY2xpZW50LT5jcmVh
dGVXaW5kb3coZnJhbWUsIHJlcXVlc3QsIGZlYXR1cmVzKTsKKyAgICBQYWdlKiBuZXdQYWdlID0g
bV9jbGllbnQtPmNyZWF0ZVdpbmRvdyhmcmFtZSwgcmVxdWVzdCwgZmVhdHVyZXMsIHRhcmdldFVS
TCk7CiAKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgaWYgKG5ld1BhZ2UpIHsKQEAgLTE3
Nyw2ICsxNzgsMTEgQEAgUGFnZSogQ2hyb21lOjpjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLAog
ICAgIHJldHVybiBuZXdQYWdlOwogfQogCitQYWdlKiBDaHJvbWU6OmNyZWF0ZVdpbmRvdyhGcmFt
ZSogZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdpbmRvd0Zl
YXR1cmVzJiBmZWF0dXJlcykgY29uc3QKK3sKKyAgICByZXR1cm4gY3JlYXRlV2luZG93KGZyYW1l
LCByZXF1ZXN0LCBmZWF0dXJlcywgS1VSTCgpKTsKK30KKwogdm9pZCBDaHJvbWU6OnNob3coKSBj
b25zdAogewogICAgIG1fY2xpZW50LT5zaG93KCk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21l
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5oCShyZXZpc2lvbiA2MjE4NSkK
KysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgR2VvbG9jYXRpb247CiAgICAgY2xhc3Mg
SGl0VGVzdFJlc3VsdDsKICAgICBjbGFzcyBJbnRSZWN0OworICAgIGNsYXNzIEtVUkw7CiAgICAg
Y2xhc3MgTm9kZTsKICAgICBjbGFzcyBQYWdlOwogICAgIGNsYXNzIFN0cmluZzsKQEAgLTkwLDYg
KzkxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGZvY3VzZWROb2RlQ2hh
bmdlZChOb2RlKikgY29uc3Q7CiAKICAgICAgICAgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwg
Y29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJikgY29uc3Q7Cisg
ICAgICAgIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3Qm
LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IEtVUkwmKSBjb25zdDsKICAgICAgICAgdm9p
ZCBzaG93KCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBjYW5SdW5Nb2RhbCgpIGNvbnN0OwpJbmRl
eDogV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gNjIxODUpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21l
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDExIEBACiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlclF1aXJrcy5oIgogI2luY2x1ZGUg
Ikhvc3RXaW5kb3cuaCIKKyNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtOTEsNiArOTMsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAvLyBzaG91bGQgbm90IGJlIHNob3duIHRvIHRoZSB1c2VyIHVudGlsIHRoZSBD
aHJvbWVDbGllbnQgb2YgdGhlIG5ld2x5CiAgICAgICAgIC8vIGNyZWF0ZWQgUGFnZSBoYXMgaXRz
IHNob3cgbWV0aG9kIGNhbGxlZC4KICAgICAgICAgdmlydHVhbCBQYWdlKiBjcmVhdGVXaW5kb3co
RnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmKSA9
IDA7CisgICAgICAgIC8vIEFub3RoZXIgdmVyc2lvbiBvZiBjcmVhdGVXaW5kb3cgd2hpY2ggcGFz
c2VzIHRoZSB0YXJnZXQgVVJMIHdoZXJlIHRoZSBjcmVhdGVkIHdpbmRvdyB3aWxsIGJlIG5hdmln
YXRlZCB0by4KKyAgICAgICAgdmlydHVhbCBQYWdlKiBjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1l
LCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYg
ZmVhdHVyZXMsIGNvbnN0IEtVUkwmIHRhcmdldFVSTCkKKyAgICAgICAgeworICAgICAgICAgICAg
VU5VU0VEX1BBUkFNKHRhcmdldFVSTCk7CisgICAgICAgICAgICByZXR1cm4gY3JlYXRlV2luZG93
KGZyYW1lLCByZXF1ZXN0LCBmZWF0dXJlcyk7CisgICAgICAgIH0KKwogICAgICAgICB2aXJ0dWFs
IHZvaWQgc2hvdygpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuTW9kYWwoKSA9
IDA7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyMjIzKQorKysgV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEwLTA2LTMwICBK
b2hubnkgRGluZyAgPGpuZEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQxMjkyCisgICAgICAgIEFkZCBhIHRhcmdldCBVUkwgcGFyYW1ldGVyIHRvIHRoZSBj
cmVhdGVWaWV3IGFuZCBjcmVhdGVXaW5kb3cgbWV0aG9kcworICAgICAgICB0byBsZXQgY2xpZW50
IEFQSXMga25vdyB3aGljaCBVUkwgYSBuZXcgd2luZG93IHdpbGwgc3RhcnQgd2l0aAorCisgICAg
ICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0Ns
aWVudDo6Y3JlYXRlVmlldyk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpjcmVhdGVXaW5kb3cpOgorICAgICAg
ICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisKIDIwMTAtMDYtMzAgIEtlbm5ldGggUnVzc2Vs
bCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtv
di4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCShyZXZpc2lvbiA2
MjE4NSkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiV2ViVGV4dEFmZmluaXR5LmgiCiAj
aW5jbHVkZSAiV2ViVGV4dERpcmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYldpZGdldENsaWVudC5o
IgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApA
QCAtNzUsNiArNzYsMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViVmlldyogY3JlYXRlVmll
dyhXZWJGcmFtZSogY3JlYXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgV2ViV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUpIHsgcmV0dXJuIDA7IH0KKyAgICAvLyBTb21l
dGltZXMgaXQncyBtdWNoIGJldHRlciBmb3IgY2xpZW50IEFQSSBpZiBhIG5ldyB3aW5kb3cgc3Rh
cnRzIHdpdGggYQorICAgIC8vIFVSTCwgaGVyZSB3aGVyZSB3ZSBrbm93IHdoYXQgVVJMIHdlIGFy
ZSBnb2luZyB0byBvcGVuLgorICAgIHZpcnR1YWwgV2ViVmlldyogY3JlYXRlVmlldyhXZWJGcmFt
ZSogY3JlYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViV2lu
ZG93RmVhdHVyZXMmIGZlYXR1cmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBXZWJTdHJpbmcmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFdlYlVSTCYgdXJsKSB7CisgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOyAgICAgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAvLyBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpcyB0
byBjYWxsIHRoZSBvbGQgdmVyc2lvbiBvZiBjcmVhdGVWaWV3LgorICAgICAgICByZXR1cm4gY3Jl
YXRlVmlldyhjcmVhdG9yLCBmZWF0dXJlcywgbmFtZSk7IAorICAgIH0KIAogICAgIC8vIENyZWF0
ZSBhIG5ldyBXZWJQb3B1cE1lbnUuICBJbiB0aGUgc2Vjb25kIGZvcm0sIHRoZSBjbGllbnQgaXMK
ICAgICAvLyByZXNwb25zaWJsZSBmb3IgcmVuZGVyaW5nIHRoZSBjb250ZW50cyBvZiB0aGUgcG9w
dXAgbWVudS4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAko
cmV2aXNpb24gNjIxODUpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsMTQgKzIyNCwxNiBAQCB2b2lkIENocm9tZUNsaWVu
dEltcGw6OmZvY3VzZWROb2RlQ2hhbmdlCiAgICAgfQogfQogCi1QYWdlKiBDaHJvbWVDbGllbnRJ
bXBsOjpjcmVhdGVXaW5kb3coCi0gICAgRnJhbWUqIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1
ZXN0JiByLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMpCitQYWdlKiBDaHJvbWVDbGll
bnRJbXBsOjpjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEtVUkwmIHRhcmdldFVS
TCkKIHsKICAgICBpZiAoIW1fd2ViVmlldy0+Y2xpZW50KCkpCiAgICAgICAgIHJldHVybiAwOwog
CiAgICAgV2ViVmlld0ltcGwqIG5ld1ZpZXcgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KAot
ICAgICAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5jcmVhdGVWaWV3KFdlYkZyYW1lSW1wbDo6ZnJv
bUZyYW1lKGZyYW1lKSwgZmVhdHVyZXMsIHIuZnJhbWVOYW1lKCkpKTsKKyAgICAgICAgbV93ZWJW
aWV3LT5jbGllbnQoKS0+Y3JlYXRlVmlldyhXZWJGcmFtZUltcGw6OmZyb21GcmFtZShmcmFtZSks
IGZlYXR1cmVzLCByLmZyYW1lTmFtZSgpLCB0YXJnZXRVUkwpKTsKICAgICBpZiAoIW5ld1ZpZXcp
CiAgICAgICAgIHJldHVybiAwOwogCkBAIC0yNDUsNiArMjQ3LDEyIEBAIFBhZ2UqIENocm9tZUNs
aWVudEltcGw6OmNyZWF0ZVdpbmRvdygKICAgICByZXR1cm4gbmV3Vmlldy0+cGFnZSgpOwogfQog
CitQYWdlKiBDaHJvbWVDbGllbnRJbXBsOjpjcmVhdGVXaW5kb3coCisgICAgRnJhbWUqIGZyYW1l
LCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYg
ZmVhdHVyZXMpCit7CisgICAgcmV0dXJuIGNyZWF0ZVdpbmRvdyhmcmFtZSwgcmVxdWVzdCwgZmVh
dHVyZXMsIEtVUkwoKSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBjdXJyZW50RXZlbnRTaG91
bGRDYXVzZUJhY2tncm91bmRUYWIoY29uc3QgV2ViSW5wdXRFdmVudCogaW5wdXRFdmVudCkKIHsK
ICAgICBpZiAoIWlucHV0RXZlbnQpCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVu
dEltcGwuaAkocmV2aXNpb24gNjIxODUpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGZvY3VzZWROb2RlQ2hhbmdlZChXZWJDb3JlOjpOb2RlKik7CiAgICAgdmly
dHVhbCBXZWJDb3JlOjpQYWdlKiBjcmVhdGVXaW5kb3coCiAgICAgICAgIFdlYkNvcmU6OkZyYW1l
KiwgY29uc3QgV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRv
d0ZlYXR1cmVzJik7CisgICAgdmlydHVhbCBXZWJDb3JlOjpQYWdlKiBjcmVhdGVXaW5kb3coCisg
ICAgICAgIFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwog
ICAgIHZpcnR1YWwgdm9pZCBzaG93KCk7CiAgICAgdmlydHVhbCBib29sIGNhblJ1bk1vZGFsKCk7
CiAgICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFsKCk7Cg==
</data>
<flag name="review"
          id="47603"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>61049</attachid>
            <date>2010-07-09 09:40:48 -0700</date>
            <delta_ts>2010-07-09 09:42:18 -0700</delta_ts>
            <desc>patch V2 ()</desc>
            <filename>patch1.txt</filename>
            <type>text/plain</type>
            <size>35184</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Mjk1NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMDctMDkgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAgICAgICAgQWRkIGEg
dGFyZ2V0IFVSTCBwYXJhbWV0ZXIgdG8gdGhlIGNyZWF0ZVdpbmRvdyBtZXRob2QKKyAgICAgICAg
dG8gbGV0IGNsaWVudCBBUElzIGtub3cgd2hpY2ggVVJMIGEgbmV3IHdpbmRvdyB3aWxsIHN0YXJ0
IHdpdGgKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBDaGFuZ2UgbWV0aG9kIHNpZ25hdHVy
ZSBvZiBXZWJDb3JlOjpDaHJvbWU6OmNyZWF0ZVdpbmRvdworICAgICAgICAqIGJpbmRpbmdzL2dl
bmVyaWMvQmluZGluZ0RPTVdpbmRvdy5oOgorICAgICAgICAoV2ViQ29yZTo6OjpjcmVhdGVXaW5k
b3cpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50
cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5o
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
Y3JlYXRlV2luZG93KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAqIHBhZ2Uv
Q2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6b3Blbk5ld1dpbmRvdyk6CisKIDIwMTAtMDctMDkgIFNlYmFz
dGlhbiBEcsO2Z2UgIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9u
IDYyODk4KQorKysgV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtOTI0
LDcgKzkyNCw3IEBAIF9fWk5LN1dlYkNvcmU1UmFuZ2UxNHN0YXJ0Q29udGFpbmVyRVJpCiBfX1pO
SzdXZWJDb3JlNVJhbmdlMTlib3VuZGFyeVBvaW50c1ZhbGlkRXYKIF9fWk5LN1dlYkNvcmU1UmFu
Z2U5ZW5kT2Zmc2V0RVJpCiBfX1pOSzdXZWJDb3JlNVJhbmdlOWZpcnN0Tm9kZUV2Ci1fX1pOSzdX
ZWJDb3JlNkNocm9tZTEyY3JlYXRlV2luZG93RVBOU181RnJhbWVFUktOU18xNkZyYW1lTG9hZFJl
cXVlc3RFUktOU18xNFdpbmRvd0ZlYXR1cmVzRQorX19aTks3V2ViQ29yZTZDaHJvbWUxMmNyZWF0
ZVdpbmRvd0VQTlNfNUZyYW1lRVJLTlNfMTZGcmFtZUxvYWRSZXF1ZXN0RVJLTlNfMTRXaW5kb3dG
ZWF0dXJlc0VSS05TXzRLVVJMRQogX19aTks3V2ViQ29yZTZFZGl0b3IxM2NhbkVkaXRSaWNobHlF
dgogX19aTks3V2ViQ29yZTZFZGl0b3IxNmNvbXBvc2l0aW9uUmFuZ2VFdgogX19aTks3V2ViQ29y
ZTZFZGl0b3IxNmZvbnRGb3JTZWxlY3Rpb25FUmIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvZ2Vu
ZXJpYy9CaW5kaW5nRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9n
ZW5lcmljL0JpbmRpbmdET01XaW5kb3cuaAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvQmluZGluZ0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niwx
MyArODYsMTYgQEAgRnJhbWUqIEJpbmRpbmdET01XaW5kb3c8QmluZGluZz46OmNyZWF0ZQogICAg
IC8vIHdlIGN1cnJlbnRseSBkbyBhbiBhbGxvd3NBY2Nlc3NGcm9tIGNhbGwgdXNpbmcgdGhlIHdp
bmRvdyB3ZSBjcmVhdGUsCiAgICAgLy8gd2hpY2ggY2FuJ3QgYmUgZG9uZSBiZWZvcmUgY3JlYXRp
bmcgaXQuIFdlJ2QgaGF2ZSB0byByZXNvbHZlIGFsbCB0aG9zZQogICAgIC8vIGlzc3VlcyB0byBw
YXNzIHRoZSBVUkwgaW5zdGVhZCBvZiAiIi4KKyAgICAvLyBOb3cgd2UgcGFzcyB0aGUgVVJMIGFz
IGEgc2VwYXJhdGUgcGFyYW1ldGVyIHRvIGNyZWF0ZVdpbmRvdyBzbyB0aGUgY2xpZW50CisgICAg
Ly8gY2FuIHVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIGRlY2lkZSB3aGV0aGVyIGl0IHNob3VsZCBi
ZSBibG9ja2VkIG9yIG5vdC4KIAorICAgIEtVUkwgY29tcGxldGVkVVJMID0gdXJsLmlzRW1wdHko
KSA/IEtVUkwoKSA6IGNvbXBsZXRlVVJMKHVybCk7CiAgICAgYm9vbCBjcmVhdGVkOwogICAgIC8v
IFdlIHBhc3MgaW4gdGhlIG9wZW5lciBmcmFtZSBoZXJlIHNvIGl0IGNhbiBiZSB1c2VkIGZvciBs
b29raW5nIHVwIHRoZQogICAgIC8vIGZyYW1lIG5hbWUsIGluIGNhc2UgdGhlIGFjdGl2ZSBmcmFt
ZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3BlbmVyIGZyYW1lLAogICAgIC8vIGFuZCB0aGUgbmFt
ZSByZWZlcmVuY2VzIGEgZnJhbWUgcmVsYXRpdmUgdG8gdGhlIG9wZW5lciBmcmFtZSwgZm9yIGV4
YW1wbGUKICAgICAvLyAiX3NlbGYiIG9yICJfcGFyZW50Ii4KLSAgICBGcmFtZSogbmV3RnJhbWUg
PSBjYWxsaW5nRnJhbWUtPmxvYWRlcigpLT5jcmVhdGVXaW5kb3cob3BlbmVyRnJhbWUtPmxvYWRl
cigpLCBmcmFtZVJlcXVlc3QsIHdpbmRvd0ZlYXR1cmVzLCBjcmVhdGVkKTsKKyAgICBGcmFtZSog
bmV3RnJhbWUgPSBjYWxsaW5nRnJhbWUtPmxvYWRlcigpLT5jcmVhdGVXaW5kb3cob3BlbmVyRnJh
bWUtPmxvYWRlcigpLCBmcmFtZVJlcXVlc3QsIHdpbmRvd0ZlYXR1cmVzLCBjb21wbGV0ZWRVUkws
IGNyZWF0ZWQpOwogICAgIGlmICghbmV3RnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0x
MDIsMTQgKzEwNSwxMiBAQCBGcmFtZSogQmluZGluZ0RPTVdpbmRvdzxCaW5kaW5nPjo6Y3JlYXRl
CiAgICAgQmluZGluZzo6RE9NV2luZG93OjpzdG9yZURpYWxvZ0FyZ3Moc3RhdGUsIG5ld0ZyYW1l
LCBkaWFsb2dBcmdzKTsKIAogICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSB8fCBC
aW5kaW5nU2VjdXJpdHk8QmluZGluZz46OmNhbkFjY2Vzc0ZyYW1lKHN0YXRlLCBuZXdGcmFtZSwg
dHJ1ZSkpIHsKLSAgICAgICAgS1VSTCBjb21wbGV0ZWRVcmwgPQotICAgICAgICAgICAgdXJsLmlz
RW1wdHkoKSA/IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiIikgOiBjb21wbGV0ZVVSTCh1cmwpOwog
ICAgICAgICBib29sIHVzZXJHZXN0dXJlID0gcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CiAKICAg
ICAgICAgaWYgKGNyZWF0ZWQpCi0gICAgICAgICAgICBuZXdGcmFtZS0+bG9hZGVyKCktPmNoYW5n
ZUxvY2F0aW9uKGNvbXBsZXRlZFVybCwgcmVmZXJyZXIsIGZhbHNlLCBmYWxzZSwgdXNlckdlc3R1
cmUpOworICAgICAgICAgICAgbmV3RnJhbWUtPmxvYWRlcigpLT5jaGFuZ2VMb2NhdGlvbihjb21w
bGV0ZWRVUkwsIHJlZmVycmVyLCBmYWxzZSwgZmFsc2UsIHVzZXJHZXN0dXJlKTsKICAgICAgICAg
ZWxzZSBpZiAoIXVybC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBuZXdGcmFtZS0+cmVkaXJlY3RT
Y2hlZHVsZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShjb21wbGV0ZWRVcmwuc3RyaW5nKCks
IHJlZmVycmVyLCBmYWxzZSwgZmFsc2UsIHVzZXJHZXN0dXJlKTsKKyAgICAgICAgICAgIG5ld0Zy
YW1lLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKGNvbXBsZXRl
ZFVSTC5zdHJpbmcoKSwgcmVmZXJyZXIsIGZhbHNlLCBmYWxzZSwgdXNlckdlc3R1cmUpOwogICAg
IH0KIAogICAgIHJldHVybiBuZXdGcmFtZTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjcsMTIgKzcyNywx
NSBAQCBzdGF0aWMgRnJhbWUqIGNyZWF0ZVdpbmRvdyhFeGVjU3RhdGUqIGV4CiAgICAgLy8gb3Bl
bmVkQnlET00sIGFuZCBkaWFsb2dBcmd1bWVudHMgdmFsdWVzLiBBbHNvLCB0byBkZWNpZGUgd2hl
dGhlciB0byB1c2UgdGhlIFVSTCB3ZSBjdXJyZW50bHkKICAgICAvLyBkbyBhbiBhbGxvd3NBY2Nl
c3NGcm9tIGNhbGwgdXNpbmcgdGhlIHdpbmRvdyB3ZSBjcmVhdGUsIHdoaWNoIGNhbid0IGJlIGRv
bmUgYmVmb3JlIGNyZWF0aW5nIGl0LgogICAgIC8vIFdlJ2QgaGF2ZSB0byByZXNvbHZlIGFsbCB0
aG9zZSBpc3N1ZXMgdG8gcGFzcyB0aGUgVVJMIGluc3RlYWQgb2YgIiIuCisgICAgLy8gTm93IHdl
IHBhc3MgdGhlIFVSTCBhcyBhIHNlcGFyYXRlIHBhcmFtZXRlciB0byBjcmVhdGVXaW5kb3cgc28g
dGhlIGNsaWVudAorICAgIC8vIGNhbiB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBkZWNpZGUgd2hl
dGhlciBpdCBzaG91bGQgYmUgYmxvY2tlZCBvciBub3QuICAgIAogCisgICAgS1VSTCBjb21wbGV0
ZWRVUkwgPSB1cmwuaXNFbXB0eSgpID8gS1VSTCgpIDogY29tcGxldGVVUkwoZXhlYywgdXJsKTsK
ICAgICBib29sIGNyZWF0ZWQ7CiAgICAgLy8gV2UgcGFzcyBpbiB0aGUgb3BlbmVyIGZyYW1lIGhl
cmUgc28gaXQgY2FuIGJlIHVzZWQgZm9yIGxvb2tpbmcgdXAgdGhlIGZyYW1lIG5hbWUsIGluIGNh
c2UgdGhlIGFjdGl2ZSBmcmFtZQogICAgIC8vIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBvcGVuZXIg
ZnJhbWUsIGFuZCB0aGUgbmFtZSByZWZlcmVuY2VzIGEgZnJhbWUgcmVsYXRpdmUgdG8gdGhlIG9w
ZW5lciBmcmFtZSwgZm9yIGV4YW1wbGUKICAgICAvLyAiX3NlbGYiIG9yICJfcGFyZW50Ii4KLSAg
ICBGcmFtZSogbmV3RnJhbWUgPSBsZXhpY2FsRnJhbWUtPmxvYWRlcigpLT5jcmVhdGVXaW5kb3co
b3BlbmVyRnJhbWUtPmxvYWRlcigpLCBmcmFtZVJlcXVlc3QsIHdpbmRvd0ZlYXR1cmVzLCBjcmVh
dGVkKTsKKyAgICBGcmFtZSogbmV3RnJhbWUgPSBsZXhpY2FsRnJhbWUtPmxvYWRlcigpLT5jcmVh
dGVXaW5kb3cob3BlbmVyRnJhbWUtPmxvYWRlcigpLCBmcmFtZVJlcXVlc3QsIHdpbmRvd0ZlYXR1
cmVzLCBjb21wbGV0ZWRVUkwsIGNyZWF0ZWQpOwogICAgIGlmICghbmV3RnJhbWUpCiAgICAgICAg
IHJldHVybiAwOwogCkBAIC03NDYsNyArNzQ5LDYgQEAgc3RhdGljIEZyYW1lKiBjcmVhdGVXaW5k
b3coRXhlY1N0YXRlKiBleAogICAgICAgICBuZXdXaW5kb3ctPnB1dERpcmVjdChJZGVudGlmaWVy
KGV4ZWMsICJkaWFsb2dBcmd1bWVudHMiKSwgZGlhbG9nQXJncyk7CiAKICAgICBpZiAoIXByb3Rv
Y29sSXNKYXZhU2NyaXB0KHVybCkgfHwgbmV3V2luZG93LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMp
KSB7Ci0gICAgICAgIEtVUkwgY29tcGxldGVkVVJMID0gdXJsLmlzRW1wdHkoKSA/IEtVUkwoUGFy
c2VkVVJMU3RyaW5nLCAiIikgOiBjb21wbGV0ZVVSTChleGVjLCB1cmwpOwogICAgICAgICBib29s
IHVzZXJHZXN0dXJlID0gcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKGV4ZWMpOwogCiAgICAgICAgIGlm
IChjcmVhdGVkKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDYyODk4KQorKysg
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGZvY3VzZWROb2RlQ2hhbmdlZChOb2Rl
KikgeyB9CiAKLSAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZy
YW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYpIHsgcmV0dXJuIDA7IH0KKyAg
ICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVl
c3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IEtVUkwmKSB7IHJldHVybiAwOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNob3coKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2Rh
bCgpIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lv
biA2Mjg5OCkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjU4LDcgKzI1OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldERlZmVyc0xvYWRpbmco
Ym9vbCAKICAgICB9CiB9CiAKLUZyYW1lKiBGcmFtZUxvYWRlcjo6Y3JlYXRlV2luZG93KEZyYW1l
TG9hZGVyKiBmcmFtZUxvYWRlckZvckZyYW1lTG9va3VwLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMsIGJvb2wmIGNyZWF0ZWQp
CitGcmFtZSogRnJhbWVMb2FkZXI6OmNyZWF0ZVdpbmRvdyhGcmFtZUxvYWRlciogZnJhbWVMb2Fk
ZXJGb3JGcmFtZUxvb2t1cCwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBLVVJMJiB0YXJnZXRVUkwsIGJvb2wmIGNy
ZWF0ZWQpCiB7IAogICAgIEFTU0VSVCghZmVhdHVyZXMuZGlhbG9nIHx8IHJlcXVlc3QuZnJhbWVO
YW1lKCkuaXNFbXB0eSgpKTsKIApAQCAtMjg3LDcgKzI4Nyw3IEBAIEZyYW1lKiBGcmFtZUxvYWRl
cjo6Y3JlYXRlV2luZG93KEZyYW1lTG8KICAgICBpZiAoIW9sZFBhZ2UpCiAgICAgICAgIHJldHVy
biAwOwogICAgICAgICAKLSAgICBQYWdlKiBwYWdlID0gb2xkUGFnZS0+Y2hyb21lKCktPmNyZWF0
ZVdpbmRvdyhtX2ZyYW1lLCByZXF1ZXN0V2l0aFJlZmVycmVyLCBmZWF0dXJlcyk7CisgICAgUGFn
ZSogcGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLT5jcmVhdGVXaW5kb3cobV9mcmFtZSwgcmVxdWVz
dFdpdGhSZWZlcnJlciwgZmVhdHVyZXMsIHRhcmdldFVSTCk7CiAgICAgaWYgKCFwYWdlKQogICAg
ICAgICByZXR1cm4gMDsKIApJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA2Mjg5OCkK
KysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3
ICsxMjIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxsZWQgYnkgY3JlYXRlV2luZG93IGluIEpT
RE9NV2luZG93QmFzZS5jcHAsIGUuZy4gdG8gZnVsZmlsbCBhIG1vZGFsIGRpYWxvZyBjcmVhdGlv
bgogICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgbWV0aG9kIG91dHNpZGUgb2YgdGhlIEZyYW1lTG9h
ZGVyIGNsYXNzLgotICAgIEZyYW1lKiBjcmVhdGVXaW5kb3coRnJhbWVMb2FkZXIqIGZyYW1lTG9h
ZGVyRm9yRnJhbWVMb29rdXAsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dG
ZWF0dXJlcyYsIGJvb2wmIGNyZWF0ZWQpOworICAgIEZyYW1lKiBjcmVhdGVXaW5kb3coRnJhbWVM
b2FkZXIqIGZyYW1lTG9hZGVyRm9yRnJhbWVMb29rdXAsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3Qm
LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IEtVUkwmLCBib29sJik7CiAKICAgICB1bnNp
Z25lZCBsb25nIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgU3RvcmVkQ3JlZGVudGlhbHMsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwg
VmVjdG9yPGNoYXI+JiBkYXRhKTsKIApJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlzaW9uIDYyODk4KQorKysg
V2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwTG9hZERlZmVycmVyLmgiCiAjaW5jbHVkZSAi
UmVuZGVyT2JqZWN0LmgiCkBAIC0xNjMsOSArMTY0LDkgQEAgdm9pZCBDaHJvbWU6OmZvY3VzZWRO
b2RlQ2hhbmdlZChOb2RlKiBubwogICAgIG1fY2xpZW50LT5mb2N1c2VkTm9kZUNoYW5nZWQobm9k
ZSk7CiB9CiAKLVBhZ2UqIENocm9tZTo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3Qg
RnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVz
KSBjb25zdAorUGFnZSogQ2hyb21lOjpjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBjb25zdCBG
cmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMs
IGNvbnN0IEtVUkwmIHRhcmdldFVSTCkgY29uc3QKIHsKLSAgICBQYWdlKiBuZXdQYWdlID0gbV9j
bGllbnQtPmNyZWF0ZVdpbmRvdyhmcmFtZSwgcmVxdWVzdCwgZmVhdHVyZXMpOworICAgIFBhZ2Uq
IG5ld1BhZ2UgPSBtX2NsaWVudC0+Y3JlYXRlV2luZG93KGZyYW1lLCByZXF1ZXN0LCBmZWF0dXJl
cywgdGFyZ2V0VVJMKTsKIAogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAgICBpZiAobmV3UGFn
ZSkgewpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9DaHJvbWUuaAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIEdlb2xvY2F0aW9uOwogICAgIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiAgICAgY2xhc3Mg
SW50UmVjdDsKKyAgICBjbGFzcyBLVVJMOwogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgUGFn
ZTsKICAgICBjbGFzcyBTdHJpbmc7CkBAIC04OSw3ICs5MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICB2b2lkIGZvY3VzZWROb2RlQ2hhbmdlZChOb2RlKikgY29uc3Q7CiAKLSAg
ICAgICAgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYs
IGNvbnN0IFdpbmRvd0ZlYXR1cmVzJikgY29uc3Q7CisgICAgICAgIFBhZ2UqIGNyZWF0ZVdpbmRv
dyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYs
IGNvbnN0IEtVUkwmKSBjb25zdDsKICAgICAgICAgdm9pZCBzaG93KCkgY29uc3Q7CiAKICAgICAg
ICAgYm9vbCBjYW5SdW5Nb2RhbCgpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNp
b24gNjI4OTgpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRl
ICJIVE1MUGFyc2VyUXVpcmtzLmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgorI2luY2x1ZGUg
IktVUkwuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTkxLDcgKzkyLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAvLyBGcmFtZSB3YW50cyB0byBjcmVhdGUgdGhlIG5ldyBQ
YWdlLiAgQWxzbywgdGhlIG5ld2x5IGNyZWF0ZWQgd2luZG93CiAgICAgICAgIC8vIHNob3VsZCBu
b3QgYmUgc2hvd24gdG8gdGhlIHVzZXIgdW50aWwgdGhlIENocm9tZUNsaWVudCBvZiB0aGUgbmV3
bHkKICAgICAgICAgLy8gY3JlYXRlZCBQYWdlIGhhcyBpdHMgc2hvdyBtZXRob2QgY2FsbGVkLgot
ICAgICAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9h
ZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYpID0gMDsKKyAgICAgICAgLy8gRnVuY3Rp
b24gY3JlYXRlV2luZG93IGFsc28gcGFzc2VzIHRoZSB0YXJnZXQgVVJMIHdoZXJlIHRoZSBjcmVh
dGVkIHdpbmRvdyB3aWxsIGJlIG5hdmlnYXRlZCB0by4KKyAgICAgICAgdmlydHVhbCBQYWdlKiBj
cmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMsIGNvbnN0IEtVUkwmIHRhcmdldFVSTCkg
PSAwOworCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzaG93KCkgPSAwOwogCiAgICAgICAgIHZpcnR1
YWwgYm9vbCBjYW5SdW5Nb2RhbCgpID0gMDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9Db250ZXh0TWVu
dUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYkNvcmUvcGFnZS9Db250ZXh0TWVu
dUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNyArMTM4LDcgQEAgc3RhdGlj
IHZvaWQgb3Blbk5ld1dpbmRvdyhjb25zdCBLVVJMJiB1cgogewogICAgIGlmIChQYWdlKiBvbGRQ
YWdlID0gZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBXaW5kb3dGZWF0dXJlcyBmZWF0dXJlczsK
LSAgICAgICAgaWYgKFBhZ2UqIG5ld1BhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS0+Y3JlYXRlV2lu
ZG93KGZyYW1lLCBGcmFtZUxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCh1cmxUb0xvYWQsIGZy
YW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSksIGZlYXR1cmVzKSkKKyAgICAgICAg
aWYgKFBhZ2UqIG5ld1BhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS0+Y3JlYXRlV2luZG93KGZyYW1l
LCBGcmFtZUxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCh1cmxUb0xvYWQsIGZyYW1lLT5sb2Fk
ZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSksIGZlYXR1cmVzLCB1cmxUb0xvYWQpKQogICAgICAg
ICAgICAgbmV3UGFnZS0+Y2hyb21lKCktPnNob3coKTsKICAgICB9CiB9CkluZGV4OiBXZWJLaXQy
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gNjI5
NTYpCisrKyBXZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDEwLTA3LTA5ICBKb2hubnkgRGluZyAgPGpuZEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNDQxCisgICAgICAgIEFkZCBhIHRhcmdldCBVUkwgcGFy
YW1ldGVyIHRvIHRoZSBDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyBtZXRob2QKKyAgICAgICAg
dG8gbGV0IGNsaWVudCBBUElzIGtub3cgd2hpY2ggVVJMIGEgbmV3IHdpbmRvdyB3aWxsIHN0YXJ0
IHdpdGggb24gV2ViS2l0MiBwb3J0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGll
bnQ6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSk6CisKIDIwMTAtMDctMDkgIEFudHRpIEtvaXZpc3Rv
ICA8a29pdmlzdG9AaWtpLmZpPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4KSW5kZXg6IFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIHZv
aWQgV2ViQ2hyb21lQ2xpZW50Ojpmb2N1c2VkTm9kZUNoYW5nZWQKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCi1QYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNv
bnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYpCitQYWdlKiBXZWJD
aHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3Qm
LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IEtVUkwmIHRhcmdldFVSTCkKIHsKICAgICB1
aW50NjRfdCBuZXdQYWdlSUQgPSAwOwogICAgIEludFNpemUgdmlld1NpemU7CkluZGV4OiBXZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRl
OgogICAgIC8vIEZyYW1lIHdhbnRzIHRvIGNyZWF0ZSB0aGUgbmV3IFBhZ2UuICBBbHNvLCB0aGUg
bmV3bHkgY3JlYXRlZCB3aW5kb3cKICAgICAvLyBzaG91bGQgbm90IGJlIHNob3duIHRvIHRoZSB1
c2VyIHVudGlsIHRoZSBDaHJvbWVDbGllbnQgb2YgdGhlIG5ld2x5CiAgICAgLy8gY3JlYXRlZCBQ
YWdlIGhhcyBpdHMgc2hvdyBtZXRob2QgY2FsbGVkLgotICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFn
ZSogY3JlYXRlV2luZG93KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6RnJhbWVMb2Fk
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJik7CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpQYWdlKiBjcmVhdGVXaW5kb3coV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXZWJDb3Jl
OjpGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmLCBjb25z
dCBXZWJDb3JlOjpLVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIHNob3coKTsKICAgICAKICAgICB2
aXJ0dWFsIGJvb2wgY2FuUnVuTW9kYWwoKTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2
aXNpb24gNjI4OTgpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTEsNyArMzUxLDcgQEAgRnJh
bWUqIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZQogICAgICAgICByZXR1cm4gMDsK
IAogICAgIC8vIEp1c3QgY2FsbCB0aHJvdWdoIHRvIHRoZSBjaHJvbWUgY2xpZW50LgotICAgIFBh
Z2UqIG5ld1BhZ2UgPSB3ZWJQYWdlLT5jb3JlUGFnZSgpLT5jaHJvbWUoKS0+Y3JlYXRlV2luZG93
KG1fZnJhbWUtPmNvcmVGcmFtZSgpLCBGcmFtZUxvYWRSZXF1ZXN0KCksIFdpbmRvd0ZlYXR1cmVz
KCkpOworICAgIFBhZ2UqIG5ld1BhZ2UgPSB3ZWJQYWdlLT5jb3JlUGFnZSgpLT5jaHJvbWUoKS0+
Y3JlYXRlV2luZG93KG1fZnJhbWUtPmNvcmVGcmFtZSgpLCBGcmFtZUxvYWRSZXF1ZXN0KCksIFdp
bmRvd0ZlYXR1cmVzKCksIEtVUkwoKSk7CiAgICAgaWYgKCFuZXdQYWdlKQogICAgICAgICByZXR1
cm4gMDsKICAgICAKSW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L0NoYW5nZUxvZwkocmV2aXNpb24gNjI5NTYpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDctMDkgIEpvaG5ueSBEaW5nICA8am5kQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAgICAg
ICAgQWRkIGEgdGFyZ2V0IFVSTCBwYXJhbWV0ZXIgdG8gdGhlIENocm9tZUNsaWVudDo6Y3JlYXRl
V2luZG93IG1ldGhvZAorICAgICAgICB0byBsZXQgY2xpZW50IEFQSXMga25vdyB3aGljaCBVUkwg
YSBuZXcgd2luZG93IHdpbGwgc3RhcnQgd2l0aCBvbiBlbGYgcG9ydAorCisgICAgICAgICogZWZs
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnRFZmw6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogZWZsL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEVmbC5oOgorCiAyMDEwLTA3LTA4ICBKb29uZSBIdXIgIDxqb29uZUBr
bGRwLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCShyZXZpc2lvbiA2Mjk1NikKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNy0wOSAgSm9obm55IERpbmcgIDxq
bmRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTQ0MQor
ICAgICAgICBBZGQgYSB0YXJnZXQgVVJMIHBhcmFtZXRlciB0byB0aGUgQ2hyb21lQ2xpZW50Ojpj
cmVhdGVXaW5kb3cgbWV0aG9kCisgICAgICAgIHRvIGxldCBjbGllbnQgQVBJcyBrbm93IHdoaWNo
IFVSTCBhIG5ldyB3aW5kb3cgd2lsbCBzdGFydCB3aXRoIG9uIGNocm9taXVtIHBvcnQuCisKKyAg
ICAgICAgKiBwdWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
Q2xpZW50OjpjcmVhdGVWaWV3KToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmNyZWF0ZVdpbmRvdyk6CisgICAg
ICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpk
aXNwYXRjaENyZWF0ZVBhZ2UpOgorCiAyMDEwLTA3LTA5ICBEYXZpZCBIb2xsb3dheSAgPGRob2xs
b3dhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3Yu
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAkocmV2aXNpb24gNjI4
OTgpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNzgsNiArNzgsMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViVmlldyogY3Jl
YXRlVmlldyhXZWJGcmFtZSogY3JlYXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgV2ViV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUpIHsgcmV0dXJuIDA7IH0KKyAgICAv
LyBTb21ldGltZXMgaXQncyBtdWNoIGJldHRlciBmb3IgY2xpZW50IEFQSSBpZiBhIG5ldyB3aW5k
b3cgc3RhcnRzIHdpdGggYQorICAgIC8vIFVSTCwgaGVyZSB3aGVyZSB3ZSBrbm93IHdoYXQgVVJM
IHdlIGFyZSBnb2luZyB0byBvcGVuLgorICAgIHZpcnR1YWwgV2ViVmlldyogY3JlYXRlVmlldyhX
ZWJGcmFtZSogY3JlYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
V2ViV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdlYlVSTCYgdXJsKSB7CisgICAgICAgIHZvaWQodXJsKTsgICAgICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgLy8gVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMgdG8g
Y2FsbCB0aGUgb2xkIHZlcnNpb24gb2YgY3JlYXRlVmlldy4KKyAgICAgICAgcmV0dXJuIGNyZWF0
ZVZpZXcoY3JlYXRvciwgZmVhdHVyZXMsIG5hbWUpOyAKKyAgICB9CiAKICAgICAvLyBDcmVhdGUg
YSBuZXcgV2ViUG9wdXBNZW51LiAgSW4gdGhlIHNlY29uZCBmb3JtLCB0aGUgY2xpZW50IGlzCiAg
ICAgLy8gcmVzcG9uc2libGUgZm9yIHJlbmRlcmluZyB0aGUgY29udGVudHMgb2YgdGhlIHBvcHVw
IG1lbnUuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHJl
dmlzaW9uIDYyODk4KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDE0ICsyMjQsMTYgQEAgdm9pZCBDaHJvbWVDbGllbnRJ
bXBsOjpmb2N1c2VkTm9kZUNoYW5nZQogICAgIH0KIH0KIAotUGFnZSogQ2hyb21lQ2xpZW50SW1w
bDo6Y3JlYXRlV2luZG93KAotICAgIEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVz
dCYgciwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzKQorUGFnZSogQ2hyb21lQ2xpZW50
SW1wbDo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBLVVJMJiB0YXJnZXRVUkwp
CiB7CiAgICAgaWYgKCFtX3dlYlZpZXctPmNsaWVudCgpKQogICAgICAgICByZXR1cm4gMDsKIAog
ICAgIFdlYlZpZXdJbXBsKiBuZXdWaWV3ID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPigKLSAg
ICAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+Y3JlYXRlVmlldyhXZWJGcmFtZUltcGw6OmZyb21G
cmFtZShmcmFtZSksIGZlYXR1cmVzLCByLmZyYW1lTmFtZSgpKSk7CisgICAgICAgIG1fd2ViVmll
dy0+Y2xpZW50KCktPmNyZWF0ZVZpZXcoV2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoZnJhbWUpLCBm
ZWF0dXJlcywgci5mcmFtZU5hbWUoKSwgdGFyZ2V0VVJMKSk7CiAgICAgaWYgKCFuZXdWaWV3KQog
ICAgICAgICByZXR1cm4gMDsKIApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmgJKHJldmlzaW9uIDYyODk4KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCB0YWtlRm9jdXMoV2ViQ29yZTo6Rm9jdXNEaXJlY3Rpb24pOwogICAgIHZpcnR1
YWwgdm9pZCBmb2N1c2VkTm9kZUNoYW5nZWQoV2ViQ29yZTo6Tm9kZSopOwogICAgIHZpcnR1YWwg
V2ViQ29yZTo6UGFnZSogY3JlYXRlV2luZG93KAotICAgICAgICBXZWJDb3JlOjpGcmFtZSosIGNv
bnN0IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0
dXJlcyYpOworICAgICAgICBXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OkZyYW1lTG9h
ZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2hvdygpOwogICAgIHZpcnR1YWwgYm9vbCBjYW5S
dW5Nb2RhbCgpOwogICAgIHZpcnR1YWwgdm9pZCBydW5Nb2RhbCgpOwpJbmRleDogV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gNjI4OTgp
CisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgwMCw3ICs4MDAsNyBAQCBGcmFtZSogRnJhbWVMb2FkZXJDbGllbnRJbXBs
OjpkaXNwYXRjaENyCiB7CiAgICAgc3RydWN0IFdpbmRvd0ZlYXR1cmVzIGZlYXR1cmVzOwogICAg
IFBhZ2UqIG5ld1BhZ2UgPSBtX3dlYkZyYW1lLT5mcmFtZSgpLT5wYWdlKCktPmNocm9tZSgpLT5j
cmVhdGVXaW5kb3coCi0gICAgICAgIG1fd2ViRnJhbWUtPmZyYW1lKCksIEZyYW1lTG9hZFJlcXVl
c3QoKSwgZmVhdHVyZXMpOworICAgICAgICBtX3dlYkZyYW1lLT5mcmFtZSgpLCBGcmFtZUxvYWRS
ZXF1ZXN0KCksIGZlYXR1cmVzLCBLVVJMKCkpOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgd2Ug
aGF2ZSBhIHZhbGlkIGRpc3Bvc2l0aW9uLiAgVGhpcyBzaG91bGQgaGF2ZSBiZWVuIHNldCBpbgog
ICAgIC8vIHRoZSBwcmVjZWVkaW5nIGNhbGwgdG8gZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24uCkluZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRFZmwuY3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDcgKzEzNCw3IEBA
IHZvaWQgQ2hyb21lQ2xpZW50RWZsOjp1bmZvY3VzKCkKICAgICBldmFzX29iamVjdF9mb2N1c19z
ZXQobV92aWV3LCBFSU5BX0ZBTFNFKTsKIH0KIAotUGFnZSogQ2hyb21lQ2xpZW50RWZsOjpjcmVh
dGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0
LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMpCitQYWdlKiBDaHJvbWVDbGllbnRFZmw6
OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJl
cXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywgY29uc3QgS1VSTCYgdGFyZ2V0
VVJMKQogewogICAgIEV2YXNfT2JqZWN0KiBuZXdWaWV3ID0gZXdrX3ZpZXdfd2luZG93X2NyZWF0
ZShtX3ZpZXcsIEVJTkFfVFJVRSwgJmZlYXR1cmVzKTsKICAgICBpZiAoIW5ld1ZpZXcpCkluZGV4
OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgJKHJldmlzaW9u
IDYyODk4KQorKysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAko
d29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgZm9jdXNlZE5vZGVDaGFuZ2VkKE5vZGUqKTsKIAotICAgIHZpcnR1YWwgUGFnZSogY3JlYXRl
V2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1
cmVzJik7CisgICAgdmlydHVhbCBQYWdlKiBjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFt
ZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmLCBjb25zdCBLVVJMJik7CiAgICAg
dmlydHVhbCB2b2lkIHNob3coKTsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpOwpJ
bmRleDogV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9DaGFu
Z2VMb2cJKHJldmlzaW9uIDYyOTU2KQorKysgV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wNy0wOSAgSm9obm55IERpbmcgIDxqbmRAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTQ0MQorICAgICAg
ICBBZGQgYSB0YXJnZXQgVVJMIHBhcmFtZXRlciB0byB0aGUgQ2hyb21lQ2xpZW50OjpjcmVhdGVX
aW5kb3cgbWV0aG9kCisgICAgICAgIHRvIGxldCBjbGllbnQgQVBJcyBrbm93IHdoaWNoIFVSTCBh
IG5ldyB3aW5kb3cgd2lsbCBzdGFydCB3aXRoIG9uIGd0ayBwb3J0LgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21l
Q2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEd0ay5oOgorCiAyMDEwLTA3LTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gNjI4OTgpCisr
KyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIENocm9tZUNsaWVudDo6dW5mb2N1cygpCiAg
ICAgICAgIGd0a193aW5kb3dfc2V0X2ZvY3VzKEdUS19XSU5ET1cod2luZG93KSwgTlVMTCk7CiB9
CiAKLVBhZ2UqIENocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3Qg
RnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMm
IGNvcmVGZWF0dXJlcykKK1BhZ2UqIENocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiBm
cmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgV2lu
ZG93RmVhdHVyZXMmIGNvcmVGZWF0dXJlcywgY29uc3QgS1VSTCYgdGFyZ2V0VVJMKQogewogICAg
IFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSAwOwogCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgJKHJldmlzaW9uIDYyODk4KQorKysgV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtNDks
NyArNDksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZm9j
dXNlZE5vZGVDaGFuZ2VkKFdlYkNvcmU6Ok5vZGUqKTsKIAotICAgICAgICB2aXJ0dWFsIFdlYkNv
cmU6OlBhZ2UqIGNyZWF0ZVdpbmRvdyhXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OkZy
YW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYpOworICAgICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2UqIGNyZWF0ZVdpbmRvdyhXZWJDb3JlOjpGcmFtZSosIGNv
bnN0IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0
dXJlcyYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHNob3co
KTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuTW9kYWwoKTsKSW5kZXg6IFdlYktpdC9o
YWlrdS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwkocmV2
aXNpb24gNjI5NTYpCisrKyBXZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDctMDkgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAgICAgICAgQWRkIGEg
dGFyZ2V0IFVSTCBwYXJhbWV0ZXIgdG8gdGhlIENocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93IG1l
dGhvZAorICAgICAgICB0byBsZXQgY2xpZW50IEFQSXMga25vdyB3aGljaCBVUkwgYSBuZXcgd2lu
ZG93IHdpbGwgc3RhcnQgd2l0aCBvbiBoYWlrdSBwb3J0LgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50SGFpa3U6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50SGFpa3UuaDoKKwogMjAxMC0wNi0xNCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6
IFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNw
cAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50SGFpa3UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBD
aHJvbWVDbGllbnRIYWlrdTo6Zm9jdXNlZE5vZGVDaGFuZwogewogfQogCi1QYWdlKiBDaHJvbWVD
bGllbnRIYWlrdTo6Y3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJikKK1BhZ2UqIENocm9tZUNsaWVudEhhaWt1
OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6V2luZG93RmVhdHVyZXMmLCBjb25zdCBLVVJMJiB0YXJnZXRVUkwpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKSW5kZXg6IFdlYktpdC9oYWlrdS9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9oYWlrdS9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdl
YktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lk
IGZvY3VzZWROb2RlQ2hhbmdlZChOb2RlKik7CiAKLSAgICAgICAgUGFnZSogY3JlYXRlV2luZG93
KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0Zl
YXR1cmVzJik7CisgICAgICAgIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1l
TG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IFdlYkNv
cmU6OktVUkwmKTsKICAgICAgICAgUGFnZSogY3JlYXRlTW9kYWxEaWFsb2coRnJhbWUqLCBjb25z
dCBGcmFtZUxvYWRSZXF1ZXN0Jik7CiAgICAgICAgIHZvaWQgc2hvdygpOwogCkluZGV4OiBXZWJL
aXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2
aXNpb24gNjI5NTYpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE2IEBACisyMDEwLTA3LTA5ICBKb2hubnkgRGluZyAgPGpuZEBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNDQxCisgICAgICAgIEFkZCBhIHRh
cmdldCBVUkwgcGFyYW1ldGVyIHRvIHRoZSBDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyBtZXRo
b2QKKyAgICAgICAgdG8gbGV0IGNsaWVudCBBUElzIGtub3cgd2hpY2ggVVJMIGEgbmV3IHdpbmRv
dyB3aWxsIHN0YXJ0IHdpdGggb24gbWFjIHBvcnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisgICAg
ICAgICogV2ViS2l0Lm9yZGVyOiBVcGRhdGUgdGhlIG1ldGhvZCBzaWduYXR1cmUgb2YgV2ViQ2hy
b21lQ2xpZW50OjpjcmVhdGVXaW5kb3cKKwogMjAxMC0wNy0wOCAgQWFyb24gQm9vZG1hbiAgPGFh
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCklu
ZGV4OiBXZWJLaXQvbWFjL1dlYktpdC5vcmRlcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dl
YktpdC5vcmRlcgkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJLaXQvbWFjL1dlYktpdC5vcmRlcgko
d29ya2luZyBjb3B5KQpAQCAtMTczNCw3ICsxNzM0LDcgQEAgX19aTjdXZWJDb3JlMThUZXh0Q2hl
Y2tpbmdSZXN1bHREMkV2CiBfV0tTZXRQYXR0ZXJuUGhhc2VJblVzZXJTcGFjZQogX19aTjE1V2Vi
Q2hyb21lQ2xpZW50MTN3aWxsUG9wVXBNZW51RVA2TlNNZW51CiBfV0tQb3B1cE1lbnUKLV9fWk4x
NVdlYkNocm9tZUNsaWVudDEyY3JlYXRlV2luZG93RVBON1dlYkNvcmU1RnJhbWVFUktOUzBfMTZG
cmFtZUxvYWRSZXF1ZXN0RVJLTlMwXzE0V2luZG93RmVhdHVyZXNFCitfX1pOMTVXZWJDaHJvbWVD
bGllbnQxMmNyZWF0ZVdpbmRvd0VQTjdXZWJDb3JlNUZyYW1lRVJLTlMwXzE2RnJhbWVMb2FkUmVx
dWVzdEVSS05TMF8xNFdpbmRvd0ZlYXR1cmVzRVJLTlMwXzRLVVJMRQogX19aMTRDYWxsVUlEZWxl
Z2F0ZVA3V2ViVmlld1AxM29iamNfc2VsZWN0b3JQMTFvYmpjX29iamVjdFM0XwogX19aTjZXZWJL
aXQyNU5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIxNWRpZENyZWF0ZVdpbmRvd0V2CiBfX1pOMTVX
ZWJDaHJvbWVDbGllbnQxOHNldFRvb2xiYXJzVmlzaWJsZUViCkluZGV4OiBXZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDYyODk4KQorKysgV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXNlZE5vZGVD
aGFuZ2VkKFdlYkNvcmU6Ok5vZGUqKTsKIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFnZSogY3Jl
YXRlV2luZG93KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJik7CisgICAgdmlydHVhbCBXZWJDb3Jl
OjpQYWdlKiBjcmVhdGVXaW5kb3coV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXZWJDb3JlOjpGcmFt
ZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmLCBjb25zdCBXZWJD
b3JlOjpLVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIHNob3coKTsKIAogICAgIHZpcnR1YWwgYm9v
bCBjYW5SdW5Nb2RhbCgpOwpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW0JKHJldmlzaW9uIDYyODk4KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4Myw3ICsxODMsNyBA
QCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9jdXNlZE5vZGVDaGFuZ2VkCiB7CiB9CiAKLVBhZ2Uq
IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWVM
b2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzKQorUGFn
ZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBjb25zdCBGcmFt
ZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMsIGNv
bnN0IEtVUkwmIHRhcmdldFVSTCkKIHsKICAgICBOU1VSTFJlcXVlc3QgKlVSTFJlcXVlc3QgPSBu
aWw7CiAgICAgaWYgKCFyZXF1ZXN0LmlzRW1wdHkoKSkKSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNjI5NTYpCisr
KyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTAtMDctMDkgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAgICAgICAgQWRkIGEgdGFyZ2V0IFVSTCBwYXJhbWV0
ZXIgdG8gdGhlIENocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93IG1ldGhvZAorICAgICAgICB0byBs
ZXQgY2xpZW50IEFQSXMga25vdyB3aGljaCBVUkwgYSBuZXcgd2luZG93IHdpbGwgc3RhcnQgd2l0
aCBvbiBxdCBwb3J0LgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKG9w
ZW5OZXdXaW5kb3cpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpjcmVhdGVXaW5kb3cpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisKIDIwMTAtMDctMDkgIFlh
ZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IExhc3psbyBHb21ib3MuCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gNjI4OTgpCisrKyBX
ZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE1Niw3ICsyMTU2
LDcgQEAgc3RhdGljIHZvaWQgb3Blbk5ld1dpbmRvdyhjb25zdCBRVXJsJiB1cgogICAgIGlmIChQ
YWdlKiBvbGRQYWdlID0gZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBXaW5kb3dGZWF0dXJlcyBm
ZWF0dXJlczsKICAgICAgICAgaWYgKFBhZ2UqIG5ld1BhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS0+
Y3JlYXRlV2luZG93KGZyYW1lLAotICAgICAgICAgICAgICAgIGZyYW1lTG9hZFJlcXVlc3QodXJs
LCBmcmFtZSksIGZlYXR1cmVzKSkKKyAgICAgICAgICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0KHVy
bCwgZnJhbWUpLCBmZWF0dXJlcywgdXJsKSkKICAgICAgICAgICAgIG5ld1BhZ2UtPmNocm9tZSgp
LT5zaG93KCk7CiAgICAgfQogfQpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuY3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBA
QCB2b2lkIENocm9tZUNsaWVudFF0Ojpmb2N1c2VkTm9kZUNoYW5nZWQoCiB9CiAKIAotUGFnZSog
Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcykKK1BhZ2UqIENocm9t
ZUNsaWVudFF0OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMsIGNvbnN0IEtVUkwmIHRhcmdl
dFVSTCkKIHsKICAgICBRV2ViUGFnZSogbmV3UGFnZSA9IG1fd2ViUGFnZS0+Y3JlYXRlV2luZG93
KGZlYXR1cmVzLmRpYWxvZyA/IFFXZWJQYWdlOjpXZWJNb2RhbERpYWxvZyA6IFFXZWJQYWdlOjpX
ZWJCcm93c2VyV2luZG93KTsKICAgICBpZiAoIW5ld1BhZ2UpCkluZGV4OiBXZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAkod29ya2luZyBjb3B5KQpAQCAtNzIs
NyArNzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGZv
Y3VzZWROb2RlQ2hhbmdlZChOb2RlKik7CiAKLSAgICAgICAgdmlydHVhbCBQYWdlKiBjcmVhdGVX
aW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVy
ZXMmKTsKKyAgICAgICAgdmlydHVhbCBQYWdlKiBjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBG
cmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmLCBjb25zdCBLVVJMJik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBzaG93KCk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGNhblJ1
bk1vZGFsKCk7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNjI5NTYpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTA3LTA5ICBKb2hubnkgRGlu
ZyAgPGpuZEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQx
NDQxCisgICAgICAgIEFkZCBhIHRhcmdldCBVUkwgcGFyYW1ldGVyIHRvIHRoZSBDaHJvbWVDbGll
bnQ6OmNyZWF0ZVdpbmRvdyBtZXRob2QKKyAgICAgICAgdG8gbGV0IGNsaWVudCBBUElzIGtub3cg
d2hpY2ggVVJMIGEgbmV3IHdpbmRvdyB3aWxsIHN0YXJ0IHdpdGggb24gd2luIHBvcnQuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oOgorCiAyMDEwLTA3LTA4ICBBYXJvbiBCb29kbWFuICA8YWFAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KSW5kZXg6IFdl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9u
IDYyODk4KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNyArMTkwLDcgQEAgc3RhdGljIENPTVB0cjxJUHJvcGVy
dHlCYWc+IGNyZWF0ZVdpbmRvdwogICAgIHJldHVybiBDT01QdHI8SVByb3BlcnR5QmFnPihBZG9w
dENPTSwgQ09NUHJvcGVydHlCYWc8Q09NVmFyaWFudD46OmFkb3B0KG1hcCkpOwogfQogCi1QYWdl
KiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJl
cXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcykK
K1BhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVM
b2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1
cmVzLCBjb25zdCBLVVJMJiB0YXJnZXRVUkwpCiB7CiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRl
PiBkZWxlZ2F0ZSA9IHVpRGVsZWdhdGUoKTsKICAgICBpZiAoIWRlbGVnYXRlKQpJbmRleDogV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiA2Mjg5
OCkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGZv
Y3VzZWROb2RlQ2hhbmdlZChXZWJDb3JlOjpOb2RlKik7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6
OlBhZ2UqIGNyZWF0ZVdpbmRvdyhXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OkZyYW1l
TG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYpOworICAgIHZpcnR1
YWwgV2ViQ29yZTo6UGFnZSogY3JlYXRlV2luZG93KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2Vi
Q29yZTo6RnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYpOwogICAgIHZpcnR1YWwgdm9pZCBzaG93KCk7CiAKICAgICB2
aXJ0dWFsIGJvb2wgY2FuUnVuTW9kYWwoKTsKSW5kZXg6IFdlYktpdC93eC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gNjI5NTYpCisrKyBXZWJL
aXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDct
MDkgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAgICAgICAgQWRkIGEgdGFyZ2V0IFVSTCBwYXJhbWV0ZXIgdG8g
dGhlIENocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93IG1ldGhvZAorICAgICAgICB0byBsZXQgY2xp
ZW50IEFQSXMga25vdyB3aGljaCBVUkwgYSBuZXcgd2luZG93IHdpbGwgc3RhcnQgd2l0aCBvbiB3
eCBwb3J0LgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6Y3JlYXRlV2luZG93KToKKyAgICAgICAg
KiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6CisKIDIwMTAtMDctMDcgIEtldmluIE9s
bGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBCdWlsZCBm
aXggYWZ0ZXIgY2hhbmdlIGluIFBhZ2UgY29uc3RydWN0b3IuCkluZGV4OiBXZWJLaXQvd3gvV2Vi
S2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYktp
dC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTMyLDcgKzEzMiw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50V3g6OmZvY3VzZWROb2RlQ2hhbmdlZCgK
IHsKIH0KIAotUGFnZSogQ2hyb21lQ2xpZW50V3g6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0
IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJl
cykKK1BhZ2UqIENocm9tZUNsaWVudFd4OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFt
ZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMsIGNv
bnN0IEtVUkwmIHRhcmdldFVSTCkKIHsKICAgICBQYWdlKiBteVBhZ2UgPSAwOwogICAgIHd4V2Vi
Vmlld05ld1dpbmRvd0V2ZW50IHdrRXZlbnQobV93ZWJWaWV3KTsKSW5kZXg6IFdlYktpdC93eC9X
ZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJLaXQv
d3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3
ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBmb2N1c2VkTm9kZUNoYW5nZWQo
Tm9kZSopOwogCi0gICAgdmlydHVhbCBQYWdlKiBjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBG
cmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmKTsKKyAgICB2aXJ0dWFsIFBh
Z2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBX
aW5kb3dGZWF0dXJlcyYsIGNvbnN0IEtVUkwmKTsKICAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZU1v
ZGFsRGlhbG9nKEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYpOwogICAgIHZpcnR1YWwg
dm9pZCBzaG93KCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61050</attachid>
            <date>2010-07-09 09:42:18 -0700</date>
            <delta_ts>2010-07-09 10:31:02 -0700</delta_ts>
            <desc>patch V2, change the createWindow method on all ports.</desc>
            <filename>patch1.txt</filename>
            <type>text/plain</type>
            <size>35184</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Mjk1NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMDctMDkgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAgICAgICAgQWRkIGEg
dGFyZ2V0IFVSTCBwYXJhbWV0ZXIgdG8gdGhlIGNyZWF0ZVdpbmRvdyBtZXRob2QKKyAgICAgICAg
dG8gbGV0IGNsaWVudCBBUElzIGtub3cgd2hpY2ggVVJMIGEgbmV3IHdpbmRvdyB3aWxsIHN0YXJ0
IHdpdGgKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBDaGFuZ2UgbWV0aG9kIHNpZ25hdHVy
ZSBvZiBXZWJDb3JlOjpDaHJvbWU6OmNyZWF0ZVdpbmRvdworICAgICAgICAqIGJpbmRpbmdzL2dl
bmVyaWMvQmluZGluZ0RPTVdpbmRvdy5oOgorICAgICAgICAoV2ViQ29yZTo6OjpjcmVhdGVXaW5k
b3cpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50
cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5o
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
Y3JlYXRlV2luZG93KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAqIHBhZ2Uv
Q2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6b3Blbk5ld1dpbmRvdyk6CisKIDIwMTAtMDctMDkgIFNlYmFz
dGlhbiBEcsO2Z2UgIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9u
IDYyODk4KQorKysgV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtOTI0
LDcgKzkyNCw3IEBAIF9fWk5LN1dlYkNvcmU1UmFuZ2UxNHN0YXJ0Q29udGFpbmVyRVJpCiBfX1pO
SzdXZWJDb3JlNVJhbmdlMTlib3VuZGFyeVBvaW50c1ZhbGlkRXYKIF9fWk5LN1dlYkNvcmU1UmFu
Z2U5ZW5kT2Zmc2V0RVJpCiBfX1pOSzdXZWJDb3JlNVJhbmdlOWZpcnN0Tm9kZUV2Ci1fX1pOSzdX
ZWJDb3JlNkNocm9tZTEyY3JlYXRlV2luZG93RVBOU181RnJhbWVFUktOU18xNkZyYW1lTG9hZFJl
cXVlc3RFUktOU18xNFdpbmRvd0ZlYXR1cmVzRQorX19aTks3V2ViQ29yZTZDaHJvbWUxMmNyZWF0
ZVdpbmRvd0VQTlNfNUZyYW1lRVJLTlNfMTZGcmFtZUxvYWRSZXF1ZXN0RVJLTlNfMTRXaW5kb3dG
ZWF0dXJlc0VSS05TXzRLVVJMRQogX19aTks3V2ViQ29yZTZFZGl0b3IxM2NhbkVkaXRSaWNobHlF
dgogX19aTks3V2ViQ29yZTZFZGl0b3IxNmNvbXBvc2l0aW9uUmFuZ2VFdgogX19aTks3V2ViQ29y
ZTZFZGl0b3IxNmZvbnRGb3JTZWxlY3Rpb25FUmIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvZ2Vu
ZXJpYy9CaW5kaW5nRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9n
ZW5lcmljL0JpbmRpbmdET01XaW5kb3cuaAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvQmluZGluZ0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niwx
MyArODYsMTYgQEAgRnJhbWUqIEJpbmRpbmdET01XaW5kb3c8QmluZGluZz46OmNyZWF0ZQogICAg
IC8vIHdlIGN1cnJlbnRseSBkbyBhbiBhbGxvd3NBY2Nlc3NGcm9tIGNhbGwgdXNpbmcgdGhlIHdp
bmRvdyB3ZSBjcmVhdGUsCiAgICAgLy8gd2hpY2ggY2FuJ3QgYmUgZG9uZSBiZWZvcmUgY3JlYXRp
bmcgaXQuIFdlJ2QgaGF2ZSB0byByZXNvbHZlIGFsbCB0aG9zZQogICAgIC8vIGlzc3VlcyB0byBw
YXNzIHRoZSBVUkwgaW5zdGVhZCBvZiAiIi4KKyAgICAvLyBOb3cgd2UgcGFzcyB0aGUgVVJMIGFz
IGEgc2VwYXJhdGUgcGFyYW1ldGVyIHRvIGNyZWF0ZVdpbmRvdyBzbyB0aGUgY2xpZW50CisgICAg
Ly8gY2FuIHVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIGRlY2lkZSB3aGV0aGVyIGl0IHNob3VsZCBi
ZSBibG9ja2VkIG9yIG5vdC4KIAorICAgIEtVUkwgY29tcGxldGVkVVJMID0gdXJsLmlzRW1wdHko
KSA/IEtVUkwoKSA6IGNvbXBsZXRlVVJMKHVybCk7CiAgICAgYm9vbCBjcmVhdGVkOwogICAgIC8v
IFdlIHBhc3MgaW4gdGhlIG9wZW5lciBmcmFtZSBoZXJlIHNvIGl0IGNhbiBiZSB1c2VkIGZvciBs
b29raW5nIHVwIHRoZQogICAgIC8vIGZyYW1lIG5hbWUsIGluIGNhc2UgdGhlIGFjdGl2ZSBmcmFt
ZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3BlbmVyIGZyYW1lLAogICAgIC8vIGFuZCB0aGUgbmFt
ZSByZWZlcmVuY2VzIGEgZnJhbWUgcmVsYXRpdmUgdG8gdGhlIG9wZW5lciBmcmFtZSwgZm9yIGV4
YW1wbGUKICAgICAvLyAiX3NlbGYiIG9yICJfcGFyZW50Ii4KLSAgICBGcmFtZSogbmV3RnJhbWUg
PSBjYWxsaW5nRnJhbWUtPmxvYWRlcigpLT5jcmVhdGVXaW5kb3cob3BlbmVyRnJhbWUtPmxvYWRl
cigpLCBmcmFtZVJlcXVlc3QsIHdpbmRvd0ZlYXR1cmVzLCBjcmVhdGVkKTsKKyAgICBGcmFtZSog
bmV3RnJhbWUgPSBjYWxsaW5nRnJhbWUtPmxvYWRlcigpLT5jcmVhdGVXaW5kb3cob3BlbmVyRnJh
bWUtPmxvYWRlcigpLCBmcmFtZVJlcXVlc3QsIHdpbmRvd0ZlYXR1cmVzLCBjb21wbGV0ZWRVUkws
IGNyZWF0ZWQpOwogICAgIGlmICghbmV3RnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0x
MDIsMTQgKzEwNSwxMiBAQCBGcmFtZSogQmluZGluZ0RPTVdpbmRvdzxCaW5kaW5nPjo6Y3JlYXRl
CiAgICAgQmluZGluZzo6RE9NV2luZG93OjpzdG9yZURpYWxvZ0FyZ3Moc3RhdGUsIG5ld0ZyYW1l
LCBkaWFsb2dBcmdzKTsKIAogICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSB8fCBC
aW5kaW5nU2VjdXJpdHk8QmluZGluZz46OmNhbkFjY2Vzc0ZyYW1lKHN0YXRlLCBuZXdGcmFtZSwg
dHJ1ZSkpIHsKLSAgICAgICAgS1VSTCBjb21wbGV0ZWRVcmwgPQotICAgICAgICAgICAgdXJsLmlz
RW1wdHkoKSA/IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiIikgOiBjb21wbGV0ZVVSTCh1cmwpOwog
ICAgICAgICBib29sIHVzZXJHZXN0dXJlID0gcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CiAKICAg
ICAgICAgaWYgKGNyZWF0ZWQpCi0gICAgICAgICAgICBuZXdGcmFtZS0+bG9hZGVyKCktPmNoYW5n
ZUxvY2F0aW9uKGNvbXBsZXRlZFVybCwgcmVmZXJyZXIsIGZhbHNlLCBmYWxzZSwgdXNlckdlc3R1
cmUpOworICAgICAgICAgICAgbmV3RnJhbWUtPmxvYWRlcigpLT5jaGFuZ2VMb2NhdGlvbihjb21w
bGV0ZWRVUkwsIHJlZmVycmVyLCBmYWxzZSwgZmFsc2UsIHVzZXJHZXN0dXJlKTsKICAgICAgICAg
ZWxzZSBpZiAoIXVybC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBuZXdGcmFtZS0+cmVkaXJlY3RT
Y2hlZHVsZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShjb21wbGV0ZWRVcmwuc3RyaW5nKCks
IHJlZmVycmVyLCBmYWxzZSwgZmFsc2UsIHVzZXJHZXN0dXJlKTsKKyAgICAgICAgICAgIG5ld0Zy
YW1lLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKGNvbXBsZXRl
ZFVSTC5zdHJpbmcoKSwgcmVmZXJyZXIsIGZhbHNlLCBmYWxzZSwgdXNlckdlc3R1cmUpOwogICAg
IH0KIAogICAgIHJldHVybiBuZXdGcmFtZTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjcsMTIgKzcyNywx
NSBAQCBzdGF0aWMgRnJhbWUqIGNyZWF0ZVdpbmRvdyhFeGVjU3RhdGUqIGV4CiAgICAgLy8gb3Bl
bmVkQnlET00sIGFuZCBkaWFsb2dBcmd1bWVudHMgdmFsdWVzLiBBbHNvLCB0byBkZWNpZGUgd2hl
dGhlciB0byB1c2UgdGhlIFVSTCB3ZSBjdXJyZW50bHkKICAgICAvLyBkbyBhbiBhbGxvd3NBY2Nl
c3NGcm9tIGNhbGwgdXNpbmcgdGhlIHdpbmRvdyB3ZSBjcmVhdGUsIHdoaWNoIGNhbid0IGJlIGRv
bmUgYmVmb3JlIGNyZWF0aW5nIGl0LgogICAgIC8vIFdlJ2QgaGF2ZSB0byByZXNvbHZlIGFsbCB0
aG9zZSBpc3N1ZXMgdG8gcGFzcyB0aGUgVVJMIGluc3RlYWQgb2YgIiIuCisgICAgLy8gTm93IHdl
IHBhc3MgdGhlIFVSTCBhcyBhIHNlcGFyYXRlIHBhcmFtZXRlciB0byBjcmVhdGVXaW5kb3cgc28g
dGhlIGNsaWVudAorICAgIC8vIGNhbiB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBkZWNpZGUgd2hl
dGhlciBpdCBzaG91bGQgYmUgYmxvY2tlZCBvciBub3QuICAgIAogCisgICAgS1VSTCBjb21wbGV0
ZWRVUkwgPSB1cmwuaXNFbXB0eSgpID8gS1VSTCgpIDogY29tcGxldGVVUkwoZXhlYywgdXJsKTsK
ICAgICBib29sIGNyZWF0ZWQ7CiAgICAgLy8gV2UgcGFzcyBpbiB0aGUgb3BlbmVyIGZyYW1lIGhl
cmUgc28gaXQgY2FuIGJlIHVzZWQgZm9yIGxvb2tpbmcgdXAgdGhlIGZyYW1lIG5hbWUsIGluIGNh
c2UgdGhlIGFjdGl2ZSBmcmFtZQogICAgIC8vIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBvcGVuZXIg
ZnJhbWUsIGFuZCB0aGUgbmFtZSByZWZlcmVuY2VzIGEgZnJhbWUgcmVsYXRpdmUgdG8gdGhlIG9w
ZW5lciBmcmFtZSwgZm9yIGV4YW1wbGUKICAgICAvLyAiX3NlbGYiIG9yICJfcGFyZW50Ii4KLSAg
ICBGcmFtZSogbmV3RnJhbWUgPSBsZXhpY2FsRnJhbWUtPmxvYWRlcigpLT5jcmVhdGVXaW5kb3co
b3BlbmVyRnJhbWUtPmxvYWRlcigpLCBmcmFtZVJlcXVlc3QsIHdpbmRvd0ZlYXR1cmVzLCBjcmVh
dGVkKTsKKyAgICBGcmFtZSogbmV3RnJhbWUgPSBsZXhpY2FsRnJhbWUtPmxvYWRlcigpLT5jcmVh
dGVXaW5kb3cob3BlbmVyRnJhbWUtPmxvYWRlcigpLCBmcmFtZVJlcXVlc3QsIHdpbmRvd0ZlYXR1
cmVzLCBjb21wbGV0ZWRVUkwsIGNyZWF0ZWQpOwogICAgIGlmICghbmV3RnJhbWUpCiAgICAgICAg
IHJldHVybiAwOwogCkBAIC03NDYsNyArNzQ5LDYgQEAgc3RhdGljIEZyYW1lKiBjcmVhdGVXaW5k
b3coRXhlY1N0YXRlKiBleAogICAgICAgICBuZXdXaW5kb3ctPnB1dERpcmVjdChJZGVudGlmaWVy
KGV4ZWMsICJkaWFsb2dBcmd1bWVudHMiKSwgZGlhbG9nQXJncyk7CiAKICAgICBpZiAoIXByb3Rv
Y29sSXNKYXZhU2NyaXB0KHVybCkgfHwgbmV3V2luZG93LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMp
KSB7Ci0gICAgICAgIEtVUkwgY29tcGxldGVkVVJMID0gdXJsLmlzRW1wdHkoKSA/IEtVUkwoUGFy
c2VkVVJMU3RyaW5nLCAiIikgOiBjb21wbGV0ZVVSTChleGVjLCB1cmwpOwogICAgICAgICBib29s
IHVzZXJHZXN0dXJlID0gcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKGV4ZWMpOwogCiAgICAgICAgIGlm
IChjcmVhdGVkKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDYyODk4KQorKysg
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGZvY3VzZWROb2RlQ2hhbmdlZChOb2Rl
KikgeyB9CiAKLSAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZy
YW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYpIHsgcmV0dXJuIDA7IH0KKyAg
ICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVl
c3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IEtVUkwmKSB7IHJldHVybiAwOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNob3coKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2Rh
bCgpIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lv
biA2Mjg5OCkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjU4LDcgKzI1OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldERlZmVyc0xvYWRpbmco
Ym9vbCAKICAgICB9CiB9CiAKLUZyYW1lKiBGcmFtZUxvYWRlcjo6Y3JlYXRlV2luZG93KEZyYW1l
TG9hZGVyKiBmcmFtZUxvYWRlckZvckZyYW1lTG9va3VwLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMsIGJvb2wmIGNyZWF0ZWQp
CitGcmFtZSogRnJhbWVMb2FkZXI6OmNyZWF0ZVdpbmRvdyhGcmFtZUxvYWRlciogZnJhbWVMb2Fk
ZXJGb3JGcmFtZUxvb2t1cCwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBLVVJMJiB0YXJnZXRVUkwsIGJvb2wmIGNy
ZWF0ZWQpCiB7IAogICAgIEFTU0VSVCghZmVhdHVyZXMuZGlhbG9nIHx8IHJlcXVlc3QuZnJhbWVO
YW1lKCkuaXNFbXB0eSgpKTsKIApAQCAtMjg3LDcgKzI4Nyw3IEBAIEZyYW1lKiBGcmFtZUxvYWRl
cjo6Y3JlYXRlV2luZG93KEZyYW1lTG8KICAgICBpZiAoIW9sZFBhZ2UpCiAgICAgICAgIHJldHVy
biAwOwogICAgICAgICAKLSAgICBQYWdlKiBwYWdlID0gb2xkUGFnZS0+Y2hyb21lKCktPmNyZWF0
ZVdpbmRvdyhtX2ZyYW1lLCByZXF1ZXN0V2l0aFJlZmVycmVyLCBmZWF0dXJlcyk7CisgICAgUGFn
ZSogcGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLT5jcmVhdGVXaW5kb3cobV9mcmFtZSwgcmVxdWVz
dFdpdGhSZWZlcnJlciwgZmVhdHVyZXMsIHRhcmdldFVSTCk7CiAgICAgaWYgKCFwYWdlKQogICAg
ICAgICByZXR1cm4gMDsKIApJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA2Mjg5OCkK
KysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3
ICsxMjIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxsZWQgYnkgY3JlYXRlV2luZG93IGluIEpT
RE9NV2luZG93QmFzZS5jcHAsIGUuZy4gdG8gZnVsZmlsbCBhIG1vZGFsIGRpYWxvZyBjcmVhdGlv
bgogICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgbWV0aG9kIG91dHNpZGUgb2YgdGhlIEZyYW1lTG9h
ZGVyIGNsYXNzLgotICAgIEZyYW1lKiBjcmVhdGVXaW5kb3coRnJhbWVMb2FkZXIqIGZyYW1lTG9h
ZGVyRm9yRnJhbWVMb29rdXAsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dG
ZWF0dXJlcyYsIGJvb2wmIGNyZWF0ZWQpOworICAgIEZyYW1lKiBjcmVhdGVXaW5kb3coRnJhbWVM
b2FkZXIqIGZyYW1lTG9hZGVyRm9yRnJhbWVMb29rdXAsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3Qm
LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IEtVUkwmLCBib29sJik7CiAKICAgICB1bnNp
Z25lZCBsb25nIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgU3RvcmVkQ3JlZGVudGlhbHMsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwg
VmVjdG9yPGNoYXI+JiBkYXRhKTsKIApJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlzaW9uIDYyODk4KQorKysg
V2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwTG9hZERlZmVycmVyLmgiCiAjaW5jbHVkZSAi
UmVuZGVyT2JqZWN0LmgiCkBAIC0xNjMsOSArMTY0LDkgQEAgdm9pZCBDaHJvbWU6OmZvY3VzZWRO
b2RlQ2hhbmdlZChOb2RlKiBubwogICAgIG1fY2xpZW50LT5mb2N1c2VkTm9kZUNoYW5nZWQobm9k
ZSk7CiB9CiAKLVBhZ2UqIENocm9tZTo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3Qg
RnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVz
KSBjb25zdAorUGFnZSogQ2hyb21lOjpjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBjb25zdCBG
cmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMs
IGNvbnN0IEtVUkwmIHRhcmdldFVSTCkgY29uc3QKIHsKLSAgICBQYWdlKiBuZXdQYWdlID0gbV9j
bGllbnQtPmNyZWF0ZVdpbmRvdyhmcmFtZSwgcmVxdWVzdCwgZmVhdHVyZXMpOworICAgIFBhZ2Uq
IG5ld1BhZ2UgPSBtX2NsaWVudC0+Y3JlYXRlV2luZG93KGZyYW1lLCByZXF1ZXN0LCBmZWF0dXJl
cywgdGFyZ2V0VVJMKTsKIAogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAgICBpZiAobmV3UGFn
ZSkgewpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9DaHJvbWUuaAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIEdlb2xvY2F0aW9uOwogICAgIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiAgICAgY2xhc3Mg
SW50UmVjdDsKKyAgICBjbGFzcyBLVVJMOwogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgUGFn
ZTsKICAgICBjbGFzcyBTdHJpbmc7CkBAIC04OSw3ICs5MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICB2b2lkIGZvY3VzZWROb2RlQ2hhbmdlZChOb2RlKikgY29uc3Q7CiAKLSAg
ICAgICAgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYs
IGNvbnN0IFdpbmRvd0ZlYXR1cmVzJikgY29uc3Q7CisgICAgICAgIFBhZ2UqIGNyZWF0ZVdpbmRv
dyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYs
IGNvbnN0IEtVUkwmKSBjb25zdDsKICAgICAgICAgdm9pZCBzaG93KCkgY29uc3Q7CiAKICAgICAg
ICAgYm9vbCBjYW5SdW5Nb2RhbCgpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNp
b24gNjI4OTgpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRl
ICJIVE1MUGFyc2VyUXVpcmtzLmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgorI2luY2x1ZGUg
IktVUkwuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTkxLDcgKzkyLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAvLyBGcmFtZSB3YW50cyB0byBjcmVhdGUgdGhlIG5ldyBQ
YWdlLiAgQWxzbywgdGhlIG5ld2x5IGNyZWF0ZWQgd2luZG93CiAgICAgICAgIC8vIHNob3VsZCBu
b3QgYmUgc2hvd24gdG8gdGhlIHVzZXIgdW50aWwgdGhlIENocm9tZUNsaWVudCBvZiB0aGUgbmV3
bHkKICAgICAgICAgLy8gY3JlYXRlZCBQYWdlIGhhcyBpdHMgc2hvdyBtZXRob2QgY2FsbGVkLgot
ICAgICAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9h
ZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYpID0gMDsKKyAgICAgICAgLy8gRnVuY3Rp
b24gY3JlYXRlV2luZG93IGFsc28gcGFzc2VzIHRoZSB0YXJnZXQgVVJMIHdoZXJlIHRoZSBjcmVh
dGVkIHdpbmRvdyB3aWxsIGJlIG5hdmlnYXRlZCB0by4KKyAgICAgICAgdmlydHVhbCBQYWdlKiBj
cmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMsIGNvbnN0IEtVUkwmIHRhcmdldFVSTCkg
PSAwOworCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzaG93KCkgPSAwOwogCiAgICAgICAgIHZpcnR1
YWwgYm9vbCBjYW5SdW5Nb2RhbCgpID0gMDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9Db250ZXh0TWVu
dUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYkNvcmUvcGFnZS9Db250ZXh0TWVu
dUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNyArMTM4LDcgQEAgc3RhdGlj
IHZvaWQgb3Blbk5ld1dpbmRvdyhjb25zdCBLVVJMJiB1cgogewogICAgIGlmIChQYWdlKiBvbGRQ
YWdlID0gZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBXaW5kb3dGZWF0dXJlcyBmZWF0dXJlczsK
LSAgICAgICAgaWYgKFBhZ2UqIG5ld1BhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS0+Y3JlYXRlV2lu
ZG93KGZyYW1lLCBGcmFtZUxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCh1cmxUb0xvYWQsIGZy
YW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSksIGZlYXR1cmVzKSkKKyAgICAgICAg
aWYgKFBhZ2UqIG5ld1BhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS0+Y3JlYXRlV2luZG93KGZyYW1l
LCBGcmFtZUxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCh1cmxUb0xvYWQsIGZyYW1lLT5sb2Fk
ZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSksIGZlYXR1cmVzLCB1cmxUb0xvYWQpKQogICAgICAg
ICAgICAgbmV3UGFnZS0+Y2hyb21lKCktPnNob3coKTsKICAgICB9CiB9CkluZGV4OiBXZWJLaXQy
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gNjI5
NTYpCisrKyBXZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDEwLTA3LTA5ICBKb2hubnkgRGluZyAgPGpuZEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNDQxCisgICAgICAgIEFkZCBhIHRhcmdldCBVUkwgcGFy
YW1ldGVyIHRvIHRoZSBDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyBtZXRob2QKKyAgICAgICAg
dG8gbGV0IGNsaWVudCBBUElzIGtub3cgd2hpY2ggVVJMIGEgbmV3IHdpbmRvdyB3aWxsIHN0YXJ0
IHdpdGggb24gV2ViS2l0MiBwb3J0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGll
bnQ6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSk6CisKIDIwMTAtMDctMDkgIEFudHRpIEtvaXZpc3Rv
ICA8a29pdmlzdG9AaWtpLmZpPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4KSW5kZXg6IFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIHZv
aWQgV2ViQ2hyb21lQ2xpZW50Ojpmb2N1c2VkTm9kZUNoYW5nZWQKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCi1QYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNv
bnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYpCitQYWdlKiBXZWJD
aHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3Qm
LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IEtVUkwmIHRhcmdldFVSTCkKIHsKICAgICB1
aW50NjRfdCBuZXdQYWdlSUQgPSAwOwogICAgIEludFNpemUgdmlld1NpemU7CkluZGV4OiBXZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRl
OgogICAgIC8vIEZyYW1lIHdhbnRzIHRvIGNyZWF0ZSB0aGUgbmV3IFBhZ2UuICBBbHNvLCB0aGUg
bmV3bHkgY3JlYXRlZCB3aW5kb3cKICAgICAvLyBzaG91bGQgbm90IGJlIHNob3duIHRvIHRoZSB1
c2VyIHVudGlsIHRoZSBDaHJvbWVDbGllbnQgb2YgdGhlIG5ld2x5CiAgICAgLy8gY3JlYXRlZCBQ
YWdlIGhhcyBpdHMgc2hvdyBtZXRob2QgY2FsbGVkLgotICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFn
ZSogY3JlYXRlV2luZG93KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6RnJhbWVMb2Fk
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJik7CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpQYWdlKiBjcmVhdGVXaW5kb3coV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXZWJDb3Jl
OjpGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmLCBjb25z
dCBXZWJDb3JlOjpLVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIHNob3coKTsKICAgICAKICAgICB2
aXJ0dWFsIGJvb2wgY2FuUnVuTW9kYWwoKTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2
aXNpb24gNjI4OTgpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTEsNyArMzUxLDcgQEAgRnJh
bWUqIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZQogICAgICAgICByZXR1cm4gMDsK
IAogICAgIC8vIEp1c3QgY2FsbCB0aHJvdWdoIHRvIHRoZSBjaHJvbWUgY2xpZW50LgotICAgIFBh
Z2UqIG5ld1BhZ2UgPSB3ZWJQYWdlLT5jb3JlUGFnZSgpLT5jaHJvbWUoKS0+Y3JlYXRlV2luZG93
KG1fZnJhbWUtPmNvcmVGcmFtZSgpLCBGcmFtZUxvYWRSZXF1ZXN0KCksIFdpbmRvd0ZlYXR1cmVz
KCkpOworICAgIFBhZ2UqIG5ld1BhZ2UgPSB3ZWJQYWdlLT5jb3JlUGFnZSgpLT5jaHJvbWUoKS0+
Y3JlYXRlV2luZG93KG1fZnJhbWUtPmNvcmVGcmFtZSgpLCBGcmFtZUxvYWRSZXF1ZXN0KCksIFdp
bmRvd0ZlYXR1cmVzKCksIEtVUkwoKSk7CiAgICAgaWYgKCFuZXdQYWdlKQogICAgICAgICByZXR1
cm4gMDsKICAgICAKSW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L0NoYW5nZUxvZwkocmV2aXNpb24gNjI5NTYpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDctMDkgIEpvaG5ueSBEaW5nICA8am5kQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAgICAg
ICAgQWRkIGEgdGFyZ2V0IFVSTCBwYXJhbWV0ZXIgdG8gdGhlIENocm9tZUNsaWVudDo6Y3JlYXRl
V2luZG93IG1ldGhvZAorICAgICAgICB0byBsZXQgY2xpZW50IEFQSXMga25vdyB3aGljaCBVUkwg
YSBuZXcgd2luZG93IHdpbGwgc3RhcnQgd2l0aCBvbiBlbGYgcG9ydAorCisgICAgICAgICogZWZs
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnRFZmw6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogZWZsL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEVmbC5oOgorCiAyMDEwLTA3LTA4ICBKb29uZSBIdXIgIDxqb29uZUBr
bGRwLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCShyZXZpc2lvbiA2Mjk1NikKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNy0wOSAgSm9obm55IERpbmcgIDxq
bmRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTQ0MQor
ICAgICAgICBBZGQgYSB0YXJnZXQgVVJMIHBhcmFtZXRlciB0byB0aGUgQ2hyb21lQ2xpZW50Ojpj
cmVhdGVXaW5kb3cgbWV0aG9kCisgICAgICAgIHRvIGxldCBjbGllbnQgQVBJcyBrbm93IHdoaWNo
IFVSTCBhIG5ldyB3aW5kb3cgd2lsbCBzdGFydCB3aXRoIG9uIGNocm9taXVtIHBvcnQuCisKKyAg
ICAgICAgKiBwdWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
Q2xpZW50OjpjcmVhdGVWaWV3KToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmNyZWF0ZVdpbmRvdyk6CisgICAg
ICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpk
aXNwYXRjaENyZWF0ZVBhZ2UpOgorCiAyMDEwLTA3LTA5ICBEYXZpZCBIb2xsb3dheSAgPGRob2xs
b3dhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3Yu
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAkocmV2aXNpb24gNjI4
OTgpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNzgsNiArNzgsMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViVmlldyogY3Jl
YXRlVmlldyhXZWJGcmFtZSogY3JlYXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgV2ViV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUpIHsgcmV0dXJuIDA7IH0KKyAgICAv
LyBTb21ldGltZXMgaXQncyBtdWNoIGJldHRlciBmb3IgY2xpZW50IEFQSSBpZiBhIG5ldyB3aW5k
b3cgc3RhcnRzIHdpdGggYQorICAgIC8vIFVSTCwgaGVyZSB3aGVyZSB3ZSBrbm93IHdoYXQgVVJM
IHdlIGFyZSBnb2luZyB0byBvcGVuLgorICAgIHZpcnR1YWwgV2ViVmlldyogY3JlYXRlVmlldyhX
ZWJGcmFtZSogY3JlYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
V2ViV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdlYlVSTCYgdXJsKSB7CisgICAgICAgIHZvaWQodXJsKTsgICAgICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgLy8gVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMgdG8g
Y2FsbCB0aGUgb2xkIHZlcnNpb24gb2YgY3JlYXRlVmlldy4KKyAgICAgICAgcmV0dXJuIGNyZWF0
ZVZpZXcoY3JlYXRvciwgZmVhdHVyZXMsIG5hbWUpOyAKKyAgICB9CiAKICAgICAvLyBDcmVhdGUg
YSBuZXcgV2ViUG9wdXBNZW51LiAgSW4gdGhlIHNlY29uZCBmb3JtLCB0aGUgY2xpZW50IGlzCiAg
ICAgLy8gcmVzcG9uc2libGUgZm9yIHJlbmRlcmluZyB0aGUgY29udGVudHMgb2YgdGhlIHBvcHVw
IG1lbnUuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHJl
dmlzaW9uIDYyODk4KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDE0ICsyMjQsMTYgQEAgdm9pZCBDaHJvbWVDbGllbnRJ
bXBsOjpmb2N1c2VkTm9kZUNoYW5nZQogICAgIH0KIH0KIAotUGFnZSogQ2hyb21lQ2xpZW50SW1w
bDo6Y3JlYXRlV2luZG93KAotICAgIEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVz
dCYgciwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzKQorUGFnZSogQ2hyb21lQ2xpZW50
SW1wbDo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBLVVJMJiB0YXJnZXRVUkwp
CiB7CiAgICAgaWYgKCFtX3dlYlZpZXctPmNsaWVudCgpKQogICAgICAgICByZXR1cm4gMDsKIAog
ICAgIFdlYlZpZXdJbXBsKiBuZXdWaWV3ID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPigKLSAg
ICAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+Y3JlYXRlVmlldyhXZWJGcmFtZUltcGw6OmZyb21G
cmFtZShmcmFtZSksIGZlYXR1cmVzLCByLmZyYW1lTmFtZSgpKSk7CisgICAgICAgIG1fd2ViVmll
dy0+Y2xpZW50KCktPmNyZWF0ZVZpZXcoV2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoZnJhbWUpLCBm
ZWF0dXJlcywgci5mcmFtZU5hbWUoKSwgdGFyZ2V0VVJMKSk7CiAgICAgaWYgKCFuZXdWaWV3KQog
ICAgICAgICByZXR1cm4gMDsKIApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmgJKHJldmlzaW9uIDYyODk4KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCB0YWtlRm9jdXMoV2ViQ29yZTo6Rm9jdXNEaXJlY3Rpb24pOwogICAgIHZpcnR1
YWwgdm9pZCBmb2N1c2VkTm9kZUNoYW5nZWQoV2ViQ29yZTo6Tm9kZSopOwogICAgIHZpcnR1YWwg
V2ViQ29yZTo6UGFnZSogY3JlYXRlV2luZG93KAotICAgICAgICBXZWJDb3JlOjpGcmFtZSosIGNv
bnN0IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0
dXJlcyYpOworICAgICAgICBXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OkZyYW1lTG9h
ZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2hvdygpOwogICAgIHZpcnR1YWwgYm9vbCBjYW5S
dW5Nb2RhbCgpOwogICAgIHZpcnR1YWwgdm9pZCBydW5Nb2RhbCgpOwpJbmRleDogV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gNjI4OTgp
CisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgwMCw3ICs4MDAsNyBAQCBGcmFtZSogRnJhbWVMb2FkZXJDbGllbnRJbXBs
OjpkaXNwYXRjaENyCiB7CiAgICAgc3RydWN0IFdpbmRvd0ZlYXR1cmVzIGZlYXR1cmVzOwogICAg
IFBhZ2UqIG5ld1BhZ2UgPSBtX3dlYkZyYW1lLT5mcmFtZSgpLT5wYWdlKCktPmNocm9tZSgpLT5j
cmVhdGVXaW5kb3coCi0gICAgICAgIG1fd2ViRnJhbWUtPmZyYW1lKCksIEZyYW1lTG9hZFJlcXVl
c3QoKSwgZmVhdHVyZXMpOworICAgICAgICBtX3dlYkZyYW1lLT5mcmFtZSgpLCBGcmFtZUxvYWRS
ZXF1ZXN0KCksIGZlYXR1cmVzLCBLVVJMKCkpOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgd2Ug
aGF2ZSBhIHZhbGlkIGRpc3Bvc2l0aW9uLiAgVGhpcyBzaG91bGQgaGF2ZSBiZWVuIHNldCBpbgog
ICAgIC8vIHRoZSBwcmVjZWVkaW5nIGNhbGwgdG8gZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24uCkluZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRFZmwuY3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDcgKzEzNCw3IEBA
IHZvaWQgQ2hyb21lQ2xpZW50RWZsOjp1bmZvY3VzKCkKICAgICBldmFzX29iamVjdF9mb2N1c19z
ZXQobV92aWV3LCBFSU5BX0ZBTFNFKTsKIH0KIAotUGFnZSogQ2hyb21lQ2xpZW50RWZsOjpjcmVh
dGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0
LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMpCitQYWdlKiBDaHJvbWVDbGllbnRFZmw6
OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJl
cXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywgY29uc3QgS1VSTCYgdGFyZ2V0
VVJMKQogewogICAgIEV2YXNfT2JqZWN0KiBuZXdWaWV3ID0gZXdrX3ZpZXdfd2luZG93X2NyZWF0
ZShtX3ZpZXcsIEVJTkFfVFJVRSwgJmZlYXR1cmVzKTsKICAgICBpZiAoIW5ld1ZpZXcpCkluZGV4
OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgJKHJldmlzaW9u
IDYyODk4KQorKysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAko
d29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgZm9jdXNlZE5vZGVDaGFuZ2VkKE5vZGUqKTsKIAotICAgIHZpcnR1YWwgUGFnZSogY3JlYXRl
V2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1
cmVzJik7CisgICAgdmlydHVhbCBQYWdlKiBjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFt
ZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmLCBjb25zdCBLVVJMJik7CiAgICAg
dmlydHVhbCB2b2lkIHNob3coKTsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpOwpJ
bmRleDogV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9DaGFu
Z2VMb2cJKHJldmlzaW9uIDYyOTU2KQorKysgV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wNy0wOSAgSm9obm55IERpbmcgIDxqbmRAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTQ0MQorICAgICAg
ICBBZGQgYSB0YXJnZXQgVVJMIHBhcmFtZXRlciB0byB0aGUgQ2hyb21lQ2xpZW50OjpjcmVhdGVX
aW5kb3cgbWV0aG9kCisgICAgICAgIHRvIGxldCBjbGllbnQgQVBJcyBrbm93IHdoaWNoIFVSTCBh
IG5ldyB3aW5kb3cgd2lsbCBzdGFydCB3aXRoIG9uIGd0ayBwb3J0LgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21l
Q2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEd0ay5oOgorCiAyMDEwLTA3LTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gNjI4OTgpCisr
KyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIENocm9tZUNsaWVudDo6dW5mb2N1cygpCiAg
ICAgICAgIGd0a193aW5kb3dfc2V0X2ZvY3VzKEdUS19XSU5ET1cod2luZG93KSwgTlVMTCk7CiB9
CiAKLVBhZ2UqIENocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3Qg
RnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMm
IGNvcmVGZWF0dXJlcykKK1BhZ2UqIENocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiBm
cmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgV2lu
ZG93RmVhdHVyZXMmIGNvcmVGZWF0dXJlcywgY29uc3QgS1VSTCYgdGFyZ2V0VVJMKQogewogICAg
IFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSAwOwogCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgJKHJldmlzaW9uIDYyODk4KQorKysgV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtNDks
NyArNDksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZm9j
dXNlZE5vZGVDaGFuZ2VkKFdlYkNvcmU6Ok5vZGUqKTsKIAotICAgICAgICB2aXJ0dWFsIFdlYkNv
cmU6OlBhZ2UqIGNyZWF0ZVdpbmRvdyhXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OkZy
YW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYpOworICAgICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2UqIGNyZWF0ZVdpbmRvdyhXZWJDb3JlOjpGcmFtZSosIGNv
bnN0IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0
dXJlcyYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHNob3co
KTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuTW9kYWwoKTsKSW5kZXg6IFdlYktpdC9o
YWlrdS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwkocmV2
aXNpb24gNjI5NTYpCisrKyBXZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDctMDkgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAgICAgICAgQWRkIGEg
dGFyZ2V0IFVSTCBwYXJhbWV0ZXIgdG8gdGhlIENocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93IG1l
dGhvZAorICAgICAgICB0byBsZXQgY2xpZW50IEFQSXMga25vdyB3aGljaCBVUkwgYSBuZXcgd2lu
ZG93IHdpbGwgc3RhcnQgd2l0aCBvbiBoYWlrdSBwb3J0LgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50SGFpa3U6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50SGFpa3UuaDoKKwogMjAxMC0wNi0xNCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6
IFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNw
cAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50SGFpa3UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBD
aHJvbWVDbGllbnRIYWlrdTo6Zm9jdXNlZE5vZGVDaGFuZwogewogfQogCi1QYWdlKiBDaHJvbWVD
bGllbnRIYWlrdTo6Y3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJikKK1BhZ2UqIENocm9tZUNsaWVudEhhaWt1
OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6V2luZG93RmVhdHVyZXMmLCBjb25zdCBLVVJMJiB0YXJnZXRVUkwpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKSW5kZXg6IFdlYktpdC9oYWlrdS9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9oYWlrdS9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdl
YktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lk
IGZvY3VzZWROb2RlQ2hhbmdlZChOb2RlKik7CiAKLSAgICAgICAgUGFnZSogY3JlYXRlV2luZG93
KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0Zl
YXR1cmVzJik7CisgICAgICAgIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1l
TG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IFdlYkNv
cmU6OktVUkwmKTsKICAgICAgICAgUGFnZSogY3JlYXRlTW9kYWxEaWFsb2coRnJhbWUqLCBjb25z
dCBGcmFtZUxvYWRSZXF1ZXN0Jik7CiAgICAgICAgIHZvaWQgc2hvdygpOwogCkluZGV4OiBXZWJL
aXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2
aXNpb24gNjI5NTYpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE2IEBACisyMDEwLTA3LTA5ICBKb2hubnkgRGluZyAgPGpuZEBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNDQxCisgICAgICAgIEFkZCBhIHRh
cmdldCBVUkwgcGFyYW1ldGVyIHRvIHRoZSBDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyBtZXRo
b2QKKyAgICAgICAgdG8gbGV0IGNsaWVudCBBUElzIGtub3cgd2hpY2ggVVJMIGEgbmV3IHdpbmRv
dyB3aWxsIHN0YXJ0IHdpdGggb24gbWFjIHBvcnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisgICAg
ICAgICogV2ViS2l0Lm9yZGVyOiBVcGRhdGUgdGhlIG1ldGhvZCBzaWduYXR1cmUgb2YgV2ViQ2hy
b21lQ2xpZW50OjpjcmVhdGVXaW5kb3cKKwogMjAxMC0wNy0wOCAgQWFyb24gQm9vZG1hbiAgPGFh
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCklu
ZGV4OiBXZWJLaXQvbWFjL1dlYktpdC5vcmRlcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dl
YktpdC5vcmRlcgkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJLaXQvbWFjL1dlYktpdC5vcmRlcgko
d29ya2luZyBjb3B5KQpAQCAtMTczNCw3ICsxNzM0LDcgQEAgX19aTjdXZWJDb3JlMThUZXh0Q2hl
Y2tpbmdSZXN1bHREMkV2CiBfV0tTZXRQYXR0ZXJuUGhhc2VJblVzZXJTcGFjZQogX19aTjE1V2Vi
Q2hyb21lQ2xpZW50MTN3aWxsUG9wVXBNZW51RVA2TlNNZW51CiBfV0tQb3B1cE1lbnUKLV9fWk4x
NVdlYkNocm9tZUNsaWVudDEyY3JlYXRlV2luZG93RVBON1dlYkNvcmU1RnJhbWVFUktOUzBfMTZG
cmFtZUxvYWRSZXF1ZXN0RVJLTlMwXzE0V2luZG93RmVhdHVyZXNFCitfX1pOMTVXZWJDaHJvbWVD
bGllbnQxMmNyZWF0ZVdpbmRvd0VQTjdXZWJDb3JlNUZyYW1lRVJLTlMwXzE2RnJhbWVMb2FkUmVx
dWVzdEVSS05TMF8xNFdpbmRvd0ZlYXR1cmVzRVJLTlMwXzRLVVJMRQogX19aMTRDYWxsVUlEZWxl
Z2F0ZVA3V2ViVmlld1AxM29iamNfc2VsZWN0b3JQMTFvYmpjX29iamVjdFM0XwogX19aTjZXZWJL
aXQyNU5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIxNWRpZENyZWF0ZVdpbmRvd0V2CiBfX1pOMTVX
ZWJDaHJvbWVDbGllbnQxOHNldFRvb2xiYXJzVmlzaWJsZUViCkluZGV4OiBXZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDYyODk4KQorKysgV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXNlZE5vZGVD
aGFuZ2VkKFdlYkNvcmU6Ok5vZGUqKTsKIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFnZSogY3Jl
YXRlV2luZG93KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJik7CisgICAgdmlydHVhbCBXZWJDb3Jl
OjpQYWdlKiBjcmVhdGVXaW5kb3coV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXZWJDb3JlOjpGcmFt
ZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmLCBjb25zdCBXZWJD
b3JlOjpLVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIHNob3coKTsKIAogICAgIHZpcnR1YWwgYm9v
bCBjYW5SdW5Nb2RhbCgpOwpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW0JKHJldmlzaW9uIDYyODk4KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4Myw3ICsxODMsNyBA
QCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9jdXNlZE5vZGVDaGFuZ2VkCiB7CiB9CiAKLVBhZ2Uq
IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWVM
b2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzKQorUGFn
ZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBjb25zdCBGcmFt
ZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMsIGNv
bnN0IEtVUkwmIHRhcmdldFVSTCkKIHsKICAgICBOU1VSTFJlcXVlc3QgKlVSTFJlcXVlc3QgPSBu
aWw7CiAgICAgaWYgKCFyZXF1ZXN0LmlzRW1wdHkoKSkKSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNjI5NTYpCisr
KyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTAtMDctMDkgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAgICAgICAgQWRkIGEgdGFyZ2V0IFVSTCBwYXJhbWV0
ZXIgdG8gdGhlIENocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93IG1ldGhvZAorICAgICAgICB0byBs
ZXQgY2xpZW50IEFQSXMga25vdyB3aGljaCBVUkwgYSBuZXcgd2luZG93IHdpbGwgc3RhcnQgd2l0
aCBvbiBxdCBwb3J0LgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKG9w
ZW5OZXdXaW5kb3cpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpjcmVhdGVXaW5kb3cpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisKIDIwMTAtMDctMDkgIFlh
ZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IExhc3psbyBHb21ib3MuCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gNjI4OTgpCisrKyBX
ZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE1Niw3ICsyMTU2
LDcgQEAgc3RhdGljIHZvaWQgb3Blbk5ld1dpbmRvdyhjb25zdCBRVXJsJiB1cgogICAgIGlmIChQ
YWdlKiBvbGRQYWdlID0gZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBXaW5kb3dGZWF0dXJlcyBm
ZWF0dXJlczsKICAgICAgICAgaWYgKFBhZ2UqIG5ld1BhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS0+
Y3JlYXRlV2luZG93KGZyYW1lLAotICAgICAgICAgICAgICAgIGZyYW1lTG9hZFJlcXVlc3QodXJs
LCBmcmFtZSksIGZlYXR1cmVzKSkKKyAgICAgICAgICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0KHVy
bCwgZnJhbWUpLCBmZWF0dXJlcywgdXJsKSkKICAgICAgICAgICAgIG5ld1BhZ2UtPmNocm9tZSgp
LT5zaG93KCk7CiAgICAgfQogfQpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuY3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBA
QCB2b2lkIENocm9tZUNsaWVudFF0Ojpmb2N1c2VkTm9kZUNoYW5nZWQoCiB9CiAKIAotUGFnZSog
Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcykKK1BhZ2UqIENocm9t
ZUNsaWVudFF0OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMsIGNvbnN0IEtVUkwmIHRhcmdl
dFVSTCkKIHsKICAgICBRV2ViUGFnZSogbmV3UGFnZSA9IG1fd2ViUGFnZS0+Y3JlYXRlV2luZG93
KGZlYXR1cmVzLmRpYWxvZyA/IFFXZWJQYWdlOjpXZWJNb2RhbERpYWxvZyA6IFFXZWJQYWdlOjpX
ZWJCcm93c2VyV2luZG93KTsKICAgICBpZiAoIW5ld1BhZ2UpCkluZGV4OiBXZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAkod29ya2luZyBjb3B5KQpAQCAtNzIs
NyArNzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGZv
Y3VzZWROb2RlQ2hhbmdlZChOb2RlKik7CiAKLSAgICAgICAgdmlydHVhbCBQYWdlKiBjcmVhdGVX
aW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVy
ZXMmKTsKKyAgICAgICAgdmlydHVhbCBQYWdlKiBjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBG
cmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmLCBjb25zdCBLVVJMJik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBzaG93KCk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGNhblJ1
bk1vZGFsKCk7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNjI5NTYpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTA3LTA5ICBKb2hubnkgRGlu
ZyAgPGpuZEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQx
NDQxCisgICAgICAgIEFkZCBhIHRhcmdldCBVUkwgcGFyYW1ldGVyIHRvIHRoZSBDaHJvbWVDbGll
bnQ6OmNyZWF0ZVdpbmRvdyBtZXRob2QKKyAgICAgICAgdG8gbGV0IGNsaWVudCBBUElzIGtub3cg
d2hpY2ggVVJMIGEgbmV3IHdpbmRvdyB3aWxsIHN0YXJ0IHdpdGggb24gd2luIHBvcnQuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oOgorCiAyMDEwLTA3LTA4ICBBYXJvbiBCb29kbWFuICA8YWFAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KSW5kZXg6IFdl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9u
IDYyODk4KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNyArMTkwLDcgQEAgc3RhdGljIENPTVB0cjxJUHJvcGVy
dHlCYWc+IGNyZWF0ZVdpbmRvdwogICAgIHJldHVybiBDT01QdHI8SVByb3BlcnR5QmFnPihBZG9w
dENPTSwgQ09NUHJvcGVydHlCYWc8Q09NVmFyaWFudD46OmFkb3B0KG1hcCkpOwogfQogCi1QYWdl
KiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJl
cXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcykK
K1BhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVM
b2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1
cmVzLCBjb25zdCBLVVJMJiB0YXJnZXRVUkwpCiB7CiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRl
PiBkZWxlZ2F0ZSA9IHVpRGVsZWdhdGUoKTsKICAgICBpZiAoIWRlbGVnYXRlKQpJbmRleDogV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiA2Mjg5
OCkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGZv
Y3VzZWROb2RlQ2hhbmdlZChXZWJDb3JlOjpOb2RlKik7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6
OlBhZ2UqIGNyZWF0ZVdpbmRvdyhXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OkZyYW1l
TG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYpOworICAgIHZpcnR1
YWwgV2ViQ29yZTo6UGFnZSogY3JlYXRlV2luZG93KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2Vi
Q29yZTo6RnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYpOwogICAgIHZpcnR1YWwgdm9pZCBzaG93KCk7CiAKICAgICB2
aXJ0dWFsIGJvb2wgY2FuUnVuTW9kYWwoKTsKSW5kZXg6IFdlYktpdC93eC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gNjI5NTYpCisrKyBXZWJL
aXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDct
MDkgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAgICAgICAgQWRkIGEgdGFyZ2V0IFVSTCBwYXJhbWV0ZXIgdG8g
dGhlIENocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93IG1ldGhvZAorICAgICAgICB0byBsZXQgY2xp
ZW50IEFQSXMga25vdyB3aGljaCBVUkwgYSBuZXcgd2luZG93IHdpbGwgc3RhcnQgd2l0aCBvbiB3
eCBwb3J0LgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6Y3JlYXRlV2luZG93KToKKyAgICAgICAg
KiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6CisKIDIwMTAtMDctMDcgIEtldmluIE9s
bGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBCdWlsZCBm
aXggYWZ0ZXIgY2hhbmdlIGluIFBhZ2UgY29uc3RydWN0b3IuCkluZGV4OiBXZWJLaXQvd3gvV2Vi
S2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYktp
dC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTMyLDcgKzEzMiw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50V3g6OmZvY3VzZWROb2RlQ2hhbmdlZCgK
IHsKIH0KIAotUGFnZSogQ2hyb21lQ2xpZW50V3g6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0
IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJl
cykKK1BhZ2UqIENocm9tZUNsaWVudFd4OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFt
ZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMsIGNv
bnN0IEtVUkwmIHRhcmdldFVSTCkKIHsKICAgICBQYWdlKiBteVBhZ2UgPSAwOwogICAgIHd4V2Vi
Vmlld05ld1dpbmRvd0V2ZW50IHdrRXZlbnQobV93ZWJWaWV3KTsKSW5kZXg6IFdlYktpdC93eC9X
ZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJLaXQv
d3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3
ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBmb2N1c2VkTm9kZUNoYW5nZWQo
Tm9kZSopOwogCi0gICAgdmlydHVhbCBQYWdlKiBjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBG
cmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmKTsKKyAgICB2aXJ0dWFsIFBh
Z2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBX
aW5kb3dGZWF0dXJlcyYsIGNvbnN0IEtVUkwmKTsKICAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZU1v
ZGFsRGlhbG9nKEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYpOwogICAgIHZpcnR1YWwg
dm9pZCBzaG93KCk7CiAK
</data>
<flag name="review"
          id="49005"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61057</attachid>
            <date>2010-07-09 10:31:02 -0700</date>
            <delta_ts>2010-07-09 10:42:26 -0700</delta_ts>
            <desc>patch V2 with adding parameter name for FrameLoader::createWindow</desc>
            <filename>patch1.txt</filename>
            <type>text/plain</type>
            <size>35202</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Mjk1NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMDctMDkgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAgICAgICAgQWRkIGEg
dGFyZ2V0IFVSTCBwYXJhbWV0ZXIgdG8gdGhlIGNyZWF0ZVdpbmRvdyBtZXRob2QKKyAgICAgICAg
dG8gbGV0IGNsaWVudCBBUElzIGtub3cgd2hpY2ggVVJMIGEgbmV3IHdpbmRvdyB3aWxsIHN0YXJ0
IHdpdGgKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBDaGFuZ2UgbWV0aG9kIHNpZ25hdHVy
ZSBvZiBXZWJDb3JlOjpDaHJvbWU6OmNyZWF0ZVdpbmRvdworICAgICAgICAqIGJpbmRpbmdzL2dl
bmVyaWMvQmluZGluZ0RPTVdpbmRvdy5oOgorICAgICAgICAoV2ViQ29yZTo6OjpjcmVhdGVXaW5k
b3cpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50
cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5o
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
Y3JlYXRlV2luZG93KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAqIHBhZ2Uv
Q2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6b3Blbk5ld1dpbmRvdyk6CisKIDIwMTAtMDctMDkgIFNlYmFz
dGlhbiBEcsO2Z2UgIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9u
IDYyODk4KQorKysgV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtOTI0
LDcgKzkyNCw3IEBAIF9fWk5LN1dlYkNvcmU1UmFuZ2UxNHN0YXJ0Q29udGFpbmVyRVJpCiBfX1pO
SzdXZWJDb3JlNVJhbmdlMTlib3VuZGFyeVBvaW50c1ZhbGlkRXYKIF9fWk5LN1dlYkNvcmU1UmFu
Z2U5ZW5kT2Zmc2V0RVJpCiBfX1pOSzdXZWJDb3JlNVJhbmdlOWZpcnN0Tm9kZUV2Ci1fX1pOSzdX
ZWJDb3JlNkNocm9tZTEyY3JlYXRlV2luZG93RVBOU181RnJhbWVFUktOU18xNkZyYW1lTG9hZFJl
cXVlc3RFUktOU18xNFdpbmRvd0ZlYXR1cmVzRQorX19aTks3V2ViQ29yZTZDaHJvbWUxMmNyZWF0
ZVdpbmRvd0VQTlNfNUZyYW1lRVJLTlNfMTZGcmFtZUxvYWRSZXF1ZXN0RVJLTlNfMTRXaW5kb3dG
ZWF0dXJlc0VSS05TXzRLVVJMRQogX19aTks3V2ViQ29yZTZFZGl0b3IxM2NhbkVkaXRSaWNobHlF
dgogX19aTks3V2ViQ29yZTZFZGl0b3IxNmNvbXBvc2l0aW9uUmFuZ2VFdgogX19aTks3V2ViQ29y
ZTZFZGl0b3IxNmZvbnRGb3JTZWxlY3Rpb25FUmIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvZ2Vu
ZXJpYy9CaW5kaW5nRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9n
ZW5lcmljL0JpbmRpbmdET01XaW5kb3cuaAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvQmluZGluZ0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niwx
MyArODYsMTYgQEAgRnJhbWUqIEJpbmRpbmdET01XaW5kb3c8QmluZGluZz46OmNyZWF0ZQogICAg
IC8vIHdlIGN1cnJlbnRseSBkbyBhbiBhbGxvd3NBY2Nlc3NGcm9tIGNhbGwgdXNpbmcgdGhlIHdp
bmRvdyB3ZSBjcmVhdGUsCiAgICAgLy8gd2hpY2ggY2FuJ3QgYmUgZG9uZSBiZWZvcmUgY3JlYXRp
bmcgaXQuIFdlJ2QgaGF2ZSB0byByZXNvbHZlIGFsbCB0aG9zZQogICAgIC8vIGlzc3VlcyB0byBw
YXNzIHRoZSBVUkwgaW5zdGVhZCBvZiAiIi4KKyAgICAvLyBOb3cgd2UgcGFzcyB0aGUgVVJMIGFz
IGEgc2VwYXJhdGUgcGFyYW1ldGVyIHRvIGNyZWF0ZVdpbmRvdyBzbyB0aGUgY2xpZW50CisgICAg
Ly8gY2FuIHVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIGRlY2lkZSB3aGV0aGVyIGl0IHNob3VsZCBi
ZSBibG9ja2VkIG9yIG5vdC4KIAorICAgIEtVUkwgY29tcGxldGVkVVJMID0gdXJsLmlzRW1wdHko
KSA/IEtVUkwoKSA6IGNvbXBsZXRlVVJMKHVybCk7CiAgICAgYm9vbCBjcmVhdGVkOwogICAgIC8v
IFdlIHBhc3MgaW4gdGhlIG9wZW5lciBmcmFtZSBoZXJlIHNvIGl0IGNhbiBiZSB1c2VkIGZvciBs
b29raW5nIHVwIHRoZQogICAgIC8vIGZyYW1lIG5hbWUsIGluIGNhc2UgdGhlIGFjdGl2ZSBmcmFt
ZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3BlbmVyIGZyYW1lLAogICAgIC8vIGFuZCB0aGUgbmFt
ZSByZWZlcmVuY2VzIGEgZnJhbWUgcmVsYXRpdmUgdG8gdGhlIG9wZW5lciBmcmFtZSwgZm9yIGV4
YW1wbGUKICAgICAvLyAiX3NlbGYiIG9yICJfcGFyZW50Ii4KLSAgICBGcmFtZSogbmV3RnJhbWUg
PSBjYWxsaW5nRnJhbWUtPmxvYWRlcigpLT5jcmVhdGVXaW5kb3cob3BlbmVyRnJhbWUtPmxvYWRl
cigpLCBmcmFtZVJlcXVlc3QsIHdpbmRvd0ZlYXR1cmVzLCBjcmVhdGVkKTsKKyAgICBGcmFtZSog
bmV3RnJhbWUgPSBjYWxsaW5nRnJhbWUtPmxvYWRlcigpLT5jcmVhdGVXaW5kb3cob3BlbmVyRnJh
bWUtPmxvYWRlcigpLCBmcmFtZVJlcXVlc3QsIHdpbmRvd0ZlYXR1cmVzLCBjb21wbGV0ZWRVUkws
IGNyZWF0ZWQpOwogICAgIGlmICghbmV3RnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0x
MDIsMTQgKzEwNSwxMiBAQCBGcmFtZSogQmluZGluZ0RPTVdpbmRvdzxCaW5kaW5nPjo6Y3JlYXRl
CiAgICAgQmluZGluZzo6RE9NV2luZG93OjpzdG9yZURpYWxvZ0FyZ3Moc3RhdGUsIG5ld0ZyYW1l
LCBkaWFsb2dBcmdzKTsKIAogICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSB8fCBC
aW5kaW5nU2VjdXJpdHk8QmluZGluZz46OmNhbkFjY2Vzc0ZyYW1lKHN0YXRlLCBuZXdGcmFtZSwg
dHJ1ZSkpIHsKLSAgICAgICAgS1VSTCBjb21wbGV0ZWRVcmwgPQotICAgICAgICAgICAgdXJsLmlz
RW1wdHkoKSA/IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiIikgOiBjb21wbGV0ZVVSTCh1cmwpOwog
ICAgICAgICBib29sIHVzZXJHZXN0dXJlID0gcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CiAKICAg
ICAgICAgaWYgKGNyZWF0ZWQpCi0gICAgICAgICAgICBuZXdGcmFtZS0+bG9hZGVyKCktPmNoYW5n
ZUxvY2F0aW9uKGNvbXBsZXRlZFVybCwgcmVmZXJyZXIsIGZhbHNlLCBmYWxzZSwgdXNlckdlc3R1
cmUpOworICAgICAgICAgICAgbmV3RnJhbWUtPmxvYWRlcigpLT5jaGFuZ2VMb2NhdGlvbihjb21w
bGV0ZWRVUkwsIHJlZmVycmVyLCBmYWxzZSwgZmFsc2UsIHVzZXJHZXN0dXJlKTsKICAgICAgICAg
ZWxzZSBpZiAoIXVybC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBuZXdGcmFtZS0+cmVkaXJlY3RT
Y2hlZHVsZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShjb21wbGV0ZWRVcmwuc3RyaW5nKCks
IHJlZmVycmVyLCBmYWxzZSwgZmFsc2UsIHVzZXJHZXN0dXJlKTsKKyAgICAgICAgICAgIG5ld0Zy
YW1lLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKGNvbXBsZXRl
ZFVSTC5zdHJpbmcoKSwgcmVmZXJyZXIsIGZhbHNlLCBmYWxzZSwgdXNlckdlc3R1cmUpOwogICAg
IH0KIAogICAgIHJldHVybiBuZXdGcmFtZTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjcsMTIgKzcyNywx
NSBAQCBzdGF0aWMgRnJhbWUqIGNyZWF0ZVdpbmRvdyhFeGVjU3RhdGUqIGV4CiAgICAgLy8gb3Bl
bmVkQnlET00sIGFuZCBkaWFsb2dBcmd1bWVudHMgdmFsdWVzLiBBbHNvLCB0byBkZWNpZGUgd2hl
dGhlciB0byB1c2UgdGhlIFVSTCB3ZSBjdXJyZW50bHkKICAgICAvLyBkbyBhbiBhbGxvd3NBY2Nl
c3NGcm9tIGNhbGwgdXNpbmcgdGhlIHdpbmRvdyB3ZSBjcmVhdGUsIHdoaWNoIGNhbid0IGJlIGRv
bmUgYmVmb3JlIGNyZWF0aW5nIGl0LgogICAgIC8vIFdlJ2QgaGF2ZSB0byByZXNvbHZlIGFsbCB0
aG9zZSBpc3N1ZXMgdG8gcGFzcyB0aGUgVVJMIGluc3RlYWQgb2YgIiIuCisgICAgLy8gTm93IHdl
IHBhc3MgdGhlIFVSTCBhcyBhIHNlcGFyYXRlIHBhcmFtZXRlciB0byBjcmVhdGVXaW5kb3cgc28g
dGhlIGNsaWVudAorICAgIC8vIGNhbiB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBkZWNpZGUgd2hl
dGhlciBpdCBzaG91bGQgYmUgYmxvY2tlZCBvciBub3QuICAgIAogCisgICAgS1VSTCBjb21wbGV0
ZWRVUkwgPSB1cmwuaXNFbXB0eSgpID8gS1VSTCgpIDogY29tcGxldGVVUkwoZXhlYywgdXJsKTsK
ICAgICBib29sIGNyZWF0ZWQ7CiAgICAgLy8gV2UgcGFzcyBpbiB0aGUgb3BlbmVyIGZyYW1lIGhl
cmUgc28gaXQgY2FuIGJlIHVzZWQgZm9yIGxvb2tpbmcgdXAgdGhlIGZyYW1lIG5hbWUsIGluIGNh
c2UgdGhlIGFjdGl2ZSBmcmFtZQogICAgIC8vIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBvcGVuZXIg
ZnJhbWUsIGFuZCB0aGUgbmFtZSByZWZlcmVuY2VzIGEgZnJhbWUgcmVsYXRpdmUgdG8gdGhlIG9w
ZW5lciBmcmFtZSwgZm9yIGV4YW1wbGUKICAgICAvLyAiX3NlbGYiIG9yICJfcGFyZW50Ii4KLSAg
ICBGcmFtZSogbmV3RnJhbWUgPSBsZXhpY2FsRnJhbWUtPmxvYWRlcigpLT5jcmVhdGVXaW5kb3co
b3BlbmVyRnJhbWUtPmxvYWRlcigpLCBmcmFtZVJlcXVlc3QsIHdpbmRvd0ZlYXR1cmVzLCBjcmVh
dGVkKTsKKyAgICBGcmFtZSogbmV3RnJhbWUgPSBsZXhpY2FsRnJhbWUtPmxvYWRlcigpLT5jcmVh
dGVXaW5kb3cob3BlbmVyRnJhbWUtPmxvYWRlcigpLCBmcmFtZVJlcXVlc3QsIHdpbmRvd0ZlYXR1
cmVzLCBjb21wbGV0ZWRVUkwsIGNyZWF0ZWQpOwogICAgIGlmICghbmV3RnJhbWUpCiAgICAgICAg
IHJldHVybiAwOwogCkBAIC03NDYsNyArNzQ5LDYgQEAgc3RhdGljIEZyYW1lKiBjcmVhdGVXaW5k
b3coRXhlY1N0YXRlKiBleAogICAgICAgICBuZXdXaW5kb3ctPnB1dERpcmVjdChJZGVudGlmaWVy
KGV4ZWMsICJkaWFsb2dBcmd1bWVudHMiKSwgZGlhbG9nQXJncyk7CiAKICAgICBpZiAoIXByb3Rv
Y29sSXNKYXZhU2NyaXB0KHVybCkgfHwgbmV3V2luZG93LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMp
KSB7Ci0gICAgICAgIEtVUkwgY29tcGxldGVkVVJMID0gdXJsLmlzRW1wdHkoKSA/IEtVUkwoUGFy
c2VkVVJMU3RyaW5nLCAiIikgOiBjb21wbGV0ZVVSTChleGVjLCB1cmwpOwogICAgICAgICBib29s
IHVzZXJHZXN0dXJlID0gcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKGV4ZWMpOwogCiAgICAgICAgIGlm
IChjcmVhdGVkKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDYyODk4KQorKysg
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGZvY3VzZWROb2RlQ2hhbmdlZChOb2Rl
KikgeyB9CiAKLSAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZy
YW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYpIHsgcmV0dXJuIDA7IH0KKyAg
ICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVl
c3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IEtVUkwmKSB7IHJldHVybiAwOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNob3coKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2Rh
bCgpIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lv
biA2Mjg5OCkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjU4LDcgKzI1OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldERlZmVyc0xvYWRpbmco
Ym9vbCAKICAgICB9CiB9CiAKLUZyYW1lKiBGcmFtZUxvYWRlcjo6Y3JlYXRlV2luZG93KEZyYW1l
TG9hZGVyKiBmcmFtZUxvYWRlckZvckZyYW1lTG9va3VwLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMsIGJvb2wmIGNyZWF0ZWQp
CitGcmFtZSogRnJhbWVMb2FkZXI6OmNyZWF0ZVdpbmRvdyhGcmFtZUxvYWRlciogZnJhbWVMb2Fk
ZXJGb3JGcmFtZUxvb2t1cCwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBLVVJMJiB0YXJnZXRVUkwsIGJvb2wmIGNy
ZWF0ZWQpCiB7IAogICAgIEFTU0VSVCghZmVhdHVyZXMuZGlhbG9nIHx8IHJlcXVlc3QuZnJhbWVO
YW1lKCkuaXNFbXB0eSgpKTsKIApAQCAtMjg3LDcgKzI4Nyw3IEBAIEZyYW1lKiBGcmFtZUxvYWRl
cjo6Y3JlYXRlV2luZG93KEZyYW1lTG8KICAgICBpZiAoIW9sZFBhZ2UpCiAgICAgICAgIHJldHVy
biAwOwogICAgICAgICAKLSAgICBQYWdlKiBwYWdlID0gb2xkUGFnZS0+Y2hyb21lKCktPmNyZWF0
ZVdpbmRvdyhtX2ZyYW1lLCByZXF1ZXN0V2l0aFJlZmVycmVyLCBmZWF0dXJlcyk7CisgICAgUGFn
ZSogcGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLT5jcmVhdGVXaW5kb3cobV9mcmFtZSwgcmVxdWVz
dFdpdGhSZWZlcnJlciwgZmVhdHVyZXMsIHRhcmdldFVSTCk7CiAgICAgaWYgKCFwYWdlKQogICAg
ICAgICByZXR1cm4gMDsKIApJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA2Mjg5OCkK
KysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3
ICsxMjIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxsZWQgYnkgY3JlYXRlV2luZG93IGluIEpT
RE9NV2luZG93QmFzZS5jcHAsIGUuZy4gdG8gZnVsZmlsbCBhIG1vZGFsIGRpYWxvZyBjcmVhdGlv
bgogICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgbWV0aG9kIG91dHNpZGUgb2YgdGhlIEZyYW1lTG9h
ZGVyIGNsYXNzLgotICAgIEZyYW1lKiBjcmVhdGVXaW5kb3coRnJhbWVMb2FkZXIqIGZyYW1lTG9h
ZGVyRm9yRnJhbWVMb29rdXAsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dG
ZWF0dXJlcyYsIGJvb2wmIGNyZWF0ZWQpOworICAgIEZyYW1lKiBjcmVhdGVXaW5kb3coRnJhbWVM
b2FkZXIqIGZyYW1lTG9hZGVyRm9yRnJhbWVMb29rdXAsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3Qm
LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IEtVUkwmIHRhcmdldFVSTCwgYm9vbCYgY3Jl
YXRlZCk7CiAKICAgICB1bnNpZ25lZCBsb25nIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3RvcmVkQ3JlZGVudGlhbHMsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKTsKIApJbmRleDogV2ViQ29yZS9w
YWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHJl
dmlzaW9uIDYyODk4KQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXRU
ZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUg
IktVUkwuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwTG9hZERlZmVy
cmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCkBAIC0xNjMsOSArMTY0LDkgQEAgdm9p
ZCBDaHJvbWU6OmZvY3VzZWROb2RlQ2hhbmdlZChOb2RlKiBubwogICAgIG1fY2xpZW50LT5mb2N1
c2VkTm9kZUNoYW5nZWQobm9kZSk7CiB9CiAKLVBhZ2UqIENocm9tZTo6Y3JlYXRlV2luZG93KEZy
YW1lKiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2luZG93
RmVhdHVyZXMmIGZlYXR1cmVzKSBjb25zdAorUGFnZSogQ2hyb21lOjpjcmVhdGVXaW5kb3coRnJh
bWUqIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dG
ZWF0dXJlcyYgZmVhdHVyZXMsIGNvbnN0IEtVUkwmIHRhcmdldFVSTCkgY29uc3QKIHsKLSAgICBQ
YWdlKiBuZXdQYWdlID0gbV9jbGllbnQtPmNyZWF0ZVdpbmRvdyhmcmFtZSwgcmVxdWVzdCwgZmVh
dHVyZXMpOworICAgIFBhZ2UqIG5ld1BhZ2UgPSBtX2NsaWVudC0+Y3JlYXRlV2luZG93KGZyYW1l
LCByZXF1ZXN0LCBmZWF0dXJlcywgdGFyZ2V0VVJMKTsKIAogI2lmIEVOQUJMRShET01fU1RPUkFH
RSkKICAgICBpZiAobmV3UGFnZSkgewpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWUuaAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJD
b3JlL3BhZ2UvQ2hyb21lLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEdlb2xvY2F0aW9uOwogICAgIGNsYXNzIEhpdFRlc3RS
ZXN1bHQ7CiAgICAgY2xhc3MgSW50UmVjdDsKKyAgICBjbGFzcyBLVVJMOwogICAgIGNsYXNzIE5v
ZGU7CiAgICAgY2xhc3MgUGFnZTsKICAgICBjbGFzcyBTdHJpbmc7CkBAIC04OSw3ICs5MCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGZvY3VzZWROb2RlQ2hhbmdlZChO
b2RlKikgY29uc3Q7CiAKLSAgICAgICAgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3Qg
RnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJikgY29uc3Q7CisgICAgICAg
IFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25z
dCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IEtVUkwmKSBjb25zdDsKICAgICAgICAgdm9pZCBzaG93
KCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBjYW5SdW5Nb2RhbCgpIGNvbnN0OwpJbmRleDogV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VyUXVpcmtzLmgiCiAjaW5jbHVkZSAiSG9zdFdp
bmRvdy5oIgorI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTkx
LDcgKzkyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBGcmFtZSB3YW50cyB0
byBjcmVhdGUgdGhlIG5ldyBQYWdlLiAgQWxzbywgdGhlIG5ld2x5IGNyZWF0ZWQgd2luZG93CiAg
ICAgICAgIC8vIHNob3VsZCBub3QgYmUgc2hvd24gdG8gdGhlIHVzZXIgdW50aWwgdGhlIENocm9t
ZUNsaWVudCBvZiB0aGUgbmV3bHkKICAgICAgICAgLy8gY3JlYXRlZCBQYWdlIGhhcyBpdHMgc2hv
dyBtZXRob2QgY2FsbGVkLgotICAgICAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFt
ZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYpID0gMDsK
KyAgICAgICAgLy8gRnVuY3Rpb24gY3JlYXRlV2luZG93IGFsc28gcGFzc2VzIHRoZSB0YXJnZXQg
VVJMIHdoZXJlIHRoZSBjcmVhdGVkIHdpbmRvdyB3aWxsIGJlIG5hdmlnYXRlZCB0by4KKyAgICAg
ICAgdmlydHVhbCBQYWdlKiBjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBjb25zdCBGcmFtZUxv
YWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMsIGNvbnN0
IEtVUkwmIHRhcmdldFVSTCkgPSAwOworCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzaG93KCkgPSAw
OwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpID0gMDsKSW5kZXg6IFdlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgs
NyArMTM4LDcgQEAgc3RhdGljIHZvaWQgb3Blbk5ld1dpbmRvdyhjb25zdCBLVVJMJiB1cgogewog
ICAgIGlmIChQYWdlKiBvbGRQYWdlID0gZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBXaW5kb3dG
ZWF0dXJlcyBmZWF0dXJlczsKLSAgICAgICAgaWYgKFBhZ2UqIG5ld1BhZ2UgPSBvbGRQYWdlLT5j
aHJvbWUoKS0+Y3JlYXRlV2luZG93KGZyYW1lLCBGcmFtZUxvYWRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCh1cmxUb0xvYWQsIGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSksIGZl
YXR1cmVzKSkKKyAgICAgICAgaWYgKFBhZ2UqIG5ld1BhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS0+
Y3JlYXRlV2luZG93KGZyYW1lLCBGcmFtZUxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCh1cmxU
b0xvYWQsIGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSksIGZlYXR1cmVzLCB1
cmxUb0xvYWQpKQogICAgICAgICAgICAgbmV3UGFnZS0+Y2hyb21lKCktPnNob3coKTsKICAgICB9
CiB9CkluZGV4OiBXZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gNjI5NTYpCisrKyBXZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE3IEBACisyMDEwLTA3LTA5ICBKb2hubnkgRGluZyAgPGpuZEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNDQxCisgICAgICAgIEFk
ZCBhIHRhcmdldCBVUkwgcGFyYW1ldGVyIHRvIHRoZSBDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRv
dyBtZXRob2QKKyAgICAgICAgdG8gbGV0IGNsaWVudCBBUElzIGtub3cgd2hpY2ggVVJMIGEgbmV3
IHdpbmRvdyB3aWxsIHN0YXJ0IHdpdGggb24gV2ViS2l0MiBwb3J0LgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSk6CisKIDIwMTAtMDct
MDkgIEFudHRpIEtvaXZpc3RvICA8a29pdmlzdG9AaWtpLmZpPgogCiAgICAgICAgIE5vdCByZXZp
ZXdlZC4KSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05OSw3ICs5OSw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpmb2N1c2VkTm9kZUNoYW5nZWQK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1QYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0
ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0
dXJlcyYpCitQYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0
IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IEtVUkwmIHRh
cmdldFVSTCkKIHsKICAgICB1aW50NjRfdCBuZXdQYWdlSUQgPSAwOwogICAgIEludFNpemUgdmll
d1NpemU7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjIs
NyArNjIsNyBAQCBwcml2YXRlOgogICAgIC8vIEZyYW1lIHdhbnRzIHRvIGNyZWF0ZSB0aGUgbmV3
IFBhZ2UuICBBbHNvLCB0aGUgbmV3bHkgY3JlYXRlZCB3aW5kb3cKICAgICAvLyBzaG91bGQgbm90
IGJlIHNob3duIHRvIHRoZSB1c2VyIHVudGlsIHRoZSBDaHJvbWVDbGllbnQgb2YgdGhlIG5ld2x5
CiAgICAgLy8gY3JlYXRlZCBQYWdlIGhhcyBpdHMgc2hvdyBtZXRob2QgY2FsbGVkLgotICAgIHZp
cnR1YWwgV2ViQ29yZTo6UGFnZSogY3JlYXRlV2luZG93KFdlYkNvcmU6OkZyYW1lKiwgY29uc3Qg
V2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVz
Jik7CisgICAgdmlydHVhbCBXZWJDb3JlOjpQYWdlKiBjcmVhdGVXaW5kb3coV2ViQ29yZTo6RnJh
bWUqLCBjb25zdCBXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2lu
ZG93RmVhdHVyZXMmLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIHNo
b3coKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuTW9kYWwoKTsKSW5kZXg6IFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NTEsNyArMzUxLDcgQEAgRnJhbWUqIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZQog
ICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIEp1c3QgY2FsbCB0aHJvdWdoIHRvIHRoZSBjaHJv
bWUgY2xpZW50LgotICAgIFBhZ2UqIG5ld1BhZ2UgPSB3ZWJQYWdlLT5jb3JlUGFnZSgpLT5jaHJv
bWUoKS0+Y3JlYXRlV2luZG93KG1fZnJhbWUtPmNvcmVGcmFtZSgpLCBGcmFtZUxvYWRSZXF1ZXN0
KCksIFdpbmRvd0ZlYXR1cmVzKCkpOworICAgIFBhZ2UqIG5ld1BhZ2UgPSB3ZWJQYWdlLT5jb3Jl
UGFnZSgpLT5jaHJvbWUoKS0+Y3JlYXRlV2luZG93KG1fZnJhbWUtPmNvcmVGcmFtZSgpLCBGcmFt
ZUxvYWRSZXF1ZXN0KCksIFdpbmRvd0ZlYXR1cmVzKCksIEtVUkwoKSk7CiAgICAgaWYgKCFuZXdQ
YWdlKQogICAgICAgICByZXR1cm4gMDsKICAgICAKSW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gNjI5NTYpCisrKyBXZWJLaXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDctMDkgIEpv
aG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDE0NDEKKyAgICAgICAgQWRkIGEgdGFyZ2V0IFVSTCBwYXJhbWV0ZXIgdG8gdGhlIENo
cm9tZUNsaWVudDo6Y3JlYXRlV2luZG93IG1ldGhvZAorICAgICAgICB0byBsZXQgY2xpZW50IEFQ
SXMga25vdyB3aGljaCBVUkwgYSBuZXcgd2luZG93IHdpbGwgc3RhcnQgd2l0aCBvbiBlbGYgcG9y
dAorCisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAg
ICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgorCiAyMDEwLTA3LTA4ICBK
b29uZSBIdXIgIDxqb29uZUBrbGRwLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlv
IEdvbWVzLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2Mjk1NikKKysrIFdlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNy0w
OSAgSm9obm55IERpbmcgIDxqbmRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MTQ0MQorICAgICAgICBBZGQgYSB0YXJnZXQgVVJMIHBhcmFtZXRlciB0byB0
aGUgQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cgbWV0aG9kCisgICAgICAgIHRvIGxldCBjbGll
bnQgQVBJcyBrbm93IHdoaWNoIFVSTCBhIG5ldyB3aW5kb3cgd2lsbCBzdGFydCB3aXRoIG9uIGNo
cm9taXVtIHBvcnQuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpjcmVhdGVWaWV3KToKKyAgICAgICAgKiBzcmMvQ2hy
b21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmNy
ZWF0ZVdpbmRvdyk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKyAgICAgICAg
KiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaENyZWF0ZVBhZ2UpOgorCiAyMDEwLTA3LTA5ICBEYXZp
ZCBIb2xsb3dheSAgPGRob2xsb3dhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGll
bnQuaAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsMTYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgV2ViVmlldyogY3JlYXRlVmlldyhXZWJGcmFtZSogY3JlYXRvciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUpIHsg
cmV0dXJuIDA7IH0KKyAgICAvLyBTb21ldGltZXMgaXQncyBtdWNoIGJldHRlciBmb3IgY2xpZW50
IEFQSSBpZiBhIG5ldyB3aW5kb3cgc3RhcnRzIHdpdGggYQorICAgIC8vIFVSTCwgaGVyZSB3aGVy
ZSB3ZSBrbm93IHdoYXQgVVJMIHdlIGFyZSBnb2luZyB0byBvcGVuLgorICAgIHZpcnR1YWwgV2Vi
VmlldyogY3JlYXRlVmlldyhXZWJGcmFtZSogY3JlYXRvciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgV2ViV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlVSTCYgdXJsKSB7CisgICAgICAgIHZvaWQo
dXJsKTsgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLy8gVGhlIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24gaXMgdG8gY2FsbCB0aGUgb2xkIHZlcnNpb24gb2YgY3JlYXRlVmlldy4KKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZVZpZXcoY3JlYXRvciwgZmVhdHVyZXMsIG5hbWUpOyAKKyAgICB9
CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgV2ViUG9wdXBNZW51LiAgSW4gdGhlIHNlY29uZCBmb3Jt
LCB0aGUgY2xpZW50IGlzCiAgICAgLy8gcmVzcG9uc2libGUgZm9yIHJlbmRlcmluZyB0aGUgY29u
dGVudHMgb2YgdGhlIHBvcHVwIG1lbnUuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDYyODk4KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDE0ICsyMjQsMTYgQEAg
dm9pZCBDaHJvbWVDbGllbnRJbXBsOjpmb2N1c2VkTm9kZUNoYW5nZQogICAgIH0KIH0KIAotUGFn
ZSogQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlV2luZG93KAotICAgIEZyYW1lKiBmcmFtZSwgY29u
c3QgRnJhbWVMb2FkUmVxdWVzdCYgciwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzKQor
UGFnZSogQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdpbmRvd0ZlYXR1
cmVzJiBmZWF0dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBLVVJMJiB0YXJnZXRVUkwpCiB7CiAgICAgaWYgKCFtX3dlYlZpZXctPmNsaWVudCgpKQogICAg
ICAgICByZXR1cm4gMDsKIAogICAgIFdlYlZpZXdJbXBsKiBuZXdWaWV3ID0gc3RhdGljX2Nhc3Q8
V2ViVmlld0ltcGwqPigKLSAgICAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+Y3JlYXRlVmlldyhX
ZWJGcmFtZUltcGw6OmZyb21GcmFtZShmcmFtZSksIGZlYXR1cmVzLCByLmZyYW1lTmFtZSgpKSk7
CisgICAgICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPmNyZWF0ZVZpZXcoV2ViRnJhbWVJbXBsOjpm
cm9tRnJhbWUoZnJhbWUpLCBmZWF0dXJlcywgci5mcmFtZU5hbWUoKSwgdGFyZ2V0VVJMKSk7CiAg
ICAgaWYgKCFuZXdWaWV3KQogICAgICAgICByZXR1cm4gMDsKIApJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVt
L3NyYy9DaHJvbWVDbGllbnRJbXBsLmgJKHJldmlzaW9uIDYyODk4KQorKysgV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0YWtlRm9jdXMoV2ViQ29yZTo6Rm9jdXNEaXJl
Y3Rpb24pOwogICAgIHZpcnR1YWwgdm9pZCBmb2N1c2VkTm9kZUNoYW5nZWQoV2ViQ29yZTo6Tm9k
ZSopOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFnZSogY3JlYXRlV2luZG93KAotICAgICAgICBX
ZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYpOworICAgICAgICBXZWJDb3JlOjpGcmFtZSosIGNvbnN0
IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJl
cyYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2hvdygpOwogICAg
IHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpOwogICAgIHZpcnR1YWwgdm9pZCBydW5Nb2RhbCgp
OwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNw
cAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwMCw3ICs4MDAsNyBAQCBGcmFtZSogRnJh
bWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaENyCiB7CiAgICAgc3RydWN0IFdpbmRvd0ZlYXR1
cmVzIGZlYXR1cmVzOwogICAgIFBhZ2UqIG5ld1BhZ2UgPSBtX3dlYkZyYW1lLT5mcmFtZSgpLT5w
YWdlKCktPmNocm9tZSgpLT5jcmVhdGVXaW5kb3coCi0gICAgICAgIG1fd2ViRnJhbWUtPmZyYW1l
KCksIEZyYW1lTG9hZFJlcXVlc3QoKSwgZmVhdHVyZXMpOworICAgICAgICBtX3dlYkZyYW1lLT5m
cmFtZSgpLCBGcmFtZUxvYWRSZXF1ZXN0KCksIGZlYXR1cmVzLCBLVVJMKCkpOwogCiAgICAgLy8g
TWFrZSBzdXJlIHRoYXQgd2UgaGF2ZSBhIHZhbGlkIGRpc3Bvc2l0aW9uLiAgVGhpcyBzaG91bGQg
aGF2ZSBiZWVuIHNldCBpbgogICAgIC8vIHRoZSBwcmVjZWVkaW5nIGNhbGwgdG8gZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24uCkluZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjp1bmZvY3VzKCkKICAgICBl
dmFzX29iamVjdF9mb2N1c19zZXQobV92aWV3LCBFSU5BX0ZBTFNFKTsKIH0KIAotUGFnZSogQ2hy
b21lQ2xpZW50RWZsOjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0
JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMpCitQYWdl
KiBDaHJvbWVDbGllbnRFZmw6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJl
cXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywg
Y29uc3QgS1VSTCYgdGFyZ2V0VVJMKQogewogICAgIEV2YXNfT2JqZWN0KiBuZXdWaWV3ID0gZXdr
X3ZpZXdfd2luZG93X2NyZWF0ZShtX3ZpZXcsIEVJTkFfVFJVRSwgJmZlYXR1cmVzKTsKICAgICBp
ZiAoIW5ld1ZpZXcpCkluZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50RWZsLmgJKHJldmlzaW9uIDYyODk4KQorKysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXNlZE5vZGVDaGFuZ2VkKE5vZGUqKTsKIAotICAgIHZp
cnR1YWwgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYs
IGNvbnN0IFdpbmRvd0ZlYXR1cmVzJik7CisgICAgdmlydHVhbCBQYWdlKiBjcmVhdGVXaW5kb3co
RnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmLCBj
b25zdCBLVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIHNob3coKTsKIAogICAgIHZpcnR1YWwgYm9v
bCBjYW5SdW5Nb2RhbCgpOwpJbmRleDogV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyOTU2KQorKysgV2ViS2l0L2d0ay9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wNy0wOSAgSm9o
bm55IERpbmcgIDxqbmRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MTQ0MQorICAgICAgICBBZGQgYSB0YXJnZXQgVVJMIHBhcmFtZXRlciB0byB0aGUgQ2hy
b21lQ2xpZW50OjpjcmVhdGVXaW5kb3cgbWV0aG9kCisgICAgICAgIHRvIGxldCBjbGllbnQgQVBJ
cyBrbm93IHdoaWNoIFVSTCBhIG5ldyB3aW5kb3cgd2lsbCBzdGFydCB3aXRoIG9uIGd0ayBwb3J0
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgorCiAyMDEwLTA3LTA3ICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJ
bmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAko
cmV2aXNpb24gNjI4OTgpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIENocm9tZUNs
aWVudDo6dW5mb2N1cygpCiAgICAgICAgIGd0a193aW5kb3dfc2V0X2ZvY3VzKEdUS19XSU5ET1co
d2luZG93KSwgTlVMTCk7CiB9CiAKLVBhZ2UqIENocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZy
YW1lKiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29u
c3QgV2luZG93RmVhdHVyZXMmIGNvcmVGZWF0dXJlcykKK1BhZ2UqIENocm9tZUNsaWVudDo6Y3Jl
YXRlV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2Fk
UmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGNvcmVGZWF0dXJlcywgY29uc3QgS1VSTCYg
dGFyZ2V0VVJMKQogewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSAwOwogCkluZGV4OiBX
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgJKHJldmlzaW9uIDYy
ODk4KQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAkod29y
a2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZm9jdXNlZE5vZGVDaGFuZ2VkKFdlYkNvcmU6Ok5vZGUqKTsKIAotICAg
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2UqIGNyZWF0ZVdpbmRvdyhXZWJDb3JlOjpGcmFtZSos
IGNvbnN0IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dG
ZWF0dXJlcyYpOworICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2UqIGNyZWF0ZVdpbmRvdyhX
ZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIHNob3coKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuTW9kYWwo
KTsKSW5kZXg6IFdlYktpdC9oYWlrdS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2hh
aWt1L0NoYW5nZUxvZwkocmV2aXNpb24gNjI5NTYpCisrKyBXZWJLaXQvaGFpa3UvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDctMDkgIEpvaG5ueSBEaW5n
ICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0
NDEKKyAgICAgICAgQWRkIGEgdGFyZ2V0IFVSTCBwYXJhbWV0ZXIgdG8gdGhlIENocm9tZUNsaWVu
dDo6Y3JlYXRlV2luZG93IG1ldGhvZAorICAgICAgICB0byBsZXQgY2xpZW50IEFQSXMga25vdyB3
aGljaCBVUkwgYSBuZXcgd2luZG93IHdpbGwgc3RhcnQgd2l0aCBvbiBoYWlrdSBwb3J0LgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaDoKKwogMjAxMC0wNi0xNCAgSWx5YSBUaWto
b25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2
ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRIYWlrdS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEhhaWt1LmNwcAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJLaXQvaGFpa3UvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMs
NyArMTAzLDcgQEAgdm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6Zm9jdXNlZE5vZGVDaGFuZwogewog
fQogCi1QYWdlKiBDaHJvbWVDbGllbnRIYWlrdTo6Y3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3Qg
RnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJikKK1BhZ2Uq
IENocm9tZUNsaWVudEhhaWt1OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmLCBjb25zdCBLVVJMJiB0YXJn
ZXRVUkwpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKSW5kZXg6IFdl
YktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCShyZXZp
c2lvbiA2Mjg5OCkKKysrIFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRI
YWlrdS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICB2b2lkIGZvY3VzZWROb2RlQ2hhbmdlZChOb2RlKik7CiAKLSAgICAgICAg
UGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJik7CisgICAgICAgIFBhZ2UqIGNyZWF0ZVdpbmRvdyhG
cmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0
dXJlcyYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKICAgICAgICAgUGFnZSogY3JlYXRlTW9kYWxE
aWFsb2coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0Jik7CiAgICAgICAgIHZvaWQgc2hv
dygpOwogCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
bWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNjI5NTYpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTA3LTA5ICBKb2hubnkgRGluZyAg
PGpuZEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNDQx
CisgICAgICAgIEFkZCBhIHRhcmdldCBVUkwgcGFyYW1ldGVyIHRvIHRoZSBDaHJvbWVDbGllbnQ6
OmNyZWF0ZVdpbmRvdyBtZXRob2QKKyAgICAgICAgdG8gbGV0IGNsaWVudCBBUElzIGtub3cgd2hp
Y2ggVVJMIGEgbmV3IHdpbmRvdyB3aWxsIHN0YXJ0IHdpdGggb24gbWFjIHBvcnQuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZVdpbmRvdyk6CisgICAgICAgICogV2ViS2l0Lm9yZGVyOiBVcGRhdGUgdGhlIG1ldGhvZCBz
aWduYXR1cmUgb2YgV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cKKwogMjAxMC0wNy0wOCAg
QWFyb24gQm9vZG1hbiAgPGFhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBU
aW1vdGh5IEhhdGNoZXIuCkluZGV4OiBXZWJLaXQvbWFjL1dlYktpdC5vcmRlcgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvbWFjL1dlYktpdC5vcmRlcgkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJLaXQv
bWFjL1dlYktpdC5vcmRlcgkod29ya2luZyBjb3B5KQpAQCAtMTczNCw3ICsxNzM0LDcgQEAgX19a
TjdXZWJDb3JlMThUZXh0Q2hlY2tpbmdSZXN1bHREMkV2CiBfV0tTZXRQYXR0ZXJuUGhhc2VJblVz
ZXJTcGFjZQogX19aTjE1V2ViQ2hyb21lQ2xpZW50MTN3aWxsUG9wVXBNZW51RVA2TlNNZW51CiBf
V0tQb3B1cE1lbnUKLV9fWk4xNVdlYkNocm9tZUNsaWVudDEyY3JlYXRlV2luZG93RVBON1dlYkNv
cmU1RnJhbWVFUktOUzBfMTZGcmFtZUxvYWRSZXF1ZXN0RVJLTlMwXzE0V2luZG93RmVhdHVyZXNF
CitfX1pOMTVXZWJDaHJvbWVDbGllbnQxMmNyZWF0ZVdpbmRvd0VQTjdXZWJDb3JlNUZyYW1lRVJL
TlMwXzE2RnJhbWVMb2FkUmVxdWVzdEVSS05TMF8xNFdpbmRvd0ZlYXR1cmVzRVJLTlMwXzRLVVJM
RQogX19aMTRDYWxsVUlEZWxlZ2F0ZVA3V2ViVmlld1AxM29iamNfc2VsZWN0b3JQMTFvYmpjX29i
amVjdFM0XwogX19aTjZXZWJLaXQyNU5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIxNWRpZENyZWF0
ZVdpbmRvd0V2CiBfX1pOMTVXZWJDaHJvbWVDbGllbnQxOHNldFRvb2xiYXJzVmlzaWJsZUViCklu
ZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlz
aW9uIDYyODk4KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgZm9jdXNlZE5vZGVDaGFuZ2VkKFdlYkNvcmU6Ok5vZGUqKTsKIAotICAgIHZpcnR1YWwg
V2ViQ29yZTo6UGFnZSogY3JlYXRlV2luZG93KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29y
ZTo6RnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJik7Cisg
ICAgdmlydHVhbCBXZWJDb3JlOjpQYWdlKiBjcmVhdGVXaW5kb3coV2ViQ29yZTo6RnJhbWUqLCBj
b25zdCBXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVh
dHVyZXMmLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIHNob3coKTsK
IAogICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpOwpJbmRleDogV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0JKHJldmlzaW9uIDYyODk4KQorKysgV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9jdXNlZE5vZGVDaGFu
Z2VkCiB7CiB9CiAKLVBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiBm
cmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVy
ZXMmIGZlYXR1cmVzKQorUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUq
IGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0
dXJlcyYgZmVhdHVyZXMsIGNvbnN0IEtVUkwmIHRhcmdldFVSTCkKIHsKICAgICBOU1VSTFJlcXVl
c3QgKlVSTFJlcXVlc3QgPSBuaWw7CiAgICAgaWYgKCFyZXF1ZXN0LmlzRW1wdHkoKSkKSW5kZXg6
IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjI5NTYpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTAtMDctMDkgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAgICAgICAgQWRkIGEg
dGFyZ2V0IFVSTCBwYXJhbWV0ZXIgdG8gdGhlIENocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93IG1l
dGhvZAorICAgICAgICB0byBsZXQgY2xpZW50IEFQSXMga25vdyB3aGljaCBVUkwgYSBuZXcgd2lu
ZG93IHdpbGwgc3RhcnQgd2l0aCBvbiBxdCBwb3J0LgorCisgICAgICAgICogQXBpL3F3ZWJwYWdl
LmNwcDoKKyAgICAgICAgKG9wZW5OZXdXaW5kb3cpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojpj
cmVhdGVXaW5kb3cpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6
CisKIDIwMTAtMDctMDkgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3
ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkocmV2
aXNpb24gNjI4OTgpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjE1Niw3ICsyMTU2LDcgQEAgc3RhdGljIHZvaWQgb3Blbk5ld1dpbmRvdyhjb25zdCBR
VXJsJiB1cgogICAgIGlmIChQYWdlKiBvbGRQYWdlID0gZnJhbWUtPnBhZ2UoKSkgewogICAgICAg
ICBXaW5kb3dGZWF0dXJlcyBmZWF0dXJlczsKICAgICAgICAgaWYgKFBhZ2UqIG5ld1BhZ2UgPSBv
bGRQYWdlLT5jaHJvbWUoKS0+Y3JlYXRlV2luZG93KGZyYW1lLAotICAgICAgICAgICAgICAgIGZy
YW1lTG9hZFJlcXVlc3QodXJsLCBmcmFtZSksIGZlYXR1cmVzKSkKKyAgICAgICAgICAgICAgICBm
cmFtZUxvYWRSZXF1ZXN0KHVybCwgZnJhbWUpLCBmZWF0dXJlcywgdXJsKSkKICAgICAgICAgICAg
IG5ld1BhZ2UtPmNocm9tZSgpLT5zaG93KCk7CiAgICAgfQogfQpJbmRleDogV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIENocm9tZUNsaWVudFF0Ojpmb2N1c2VkTm9kZUNoYW5n
ZWQoCiB9CiAKIAotUGFnZSogQ2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNv
bnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0
dXJlcykKK1BhZ2UqIENocm9tZUNsaWVudFF0OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBG
cmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMs
IGNvbnN0IEtVUkwmIHRhcmdldFVSTCkKIHsKICAgICBRV2ViUGFnZSogbmV3UGFnZSA9IG1fd2Vi
UGFnZS0+Y3JlYXRlV2luZG93KGZlYXR1cmVzLmRpYWxvZyA/IFFXZWJQYWdlOjpXZWJNb2RhbERp
YWxvZyA6IFFXZWJQYWdlOjpXZWJCcm93c2VyV2luZG93KTsKICAgICBpZiAoIW5ld1BhZ2UpCklu
ZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAkocmV2aXNpb24g
NjI4OTgpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAkod29y
a2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIGZvY3VzZWROb2RlQ2hhbmdlZChOb2RlKik7CiAKLSAgICAgICAgdmly
dHVhbCBQYWdlKiBjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0Jiwg
Y29uc3QgV2luZG93RmVhdHVyZXMmKTsKKyAgICAgICAgdmlydHVhbCBQYWdlKiBjcmVhdGVXaW5k
b3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMm
LCBjb25zdCBLVVJMJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzaG93KCk7CiAKICAgICAgICAg
dmlydHVhbCBib29sIGNhblJ1bk1vZGFsKCk7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNjI5NTYpCisrKyBX
ZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEw
LTA3LTA5ICBKb2hubnkgRGluZyAgPGpuZEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQxNDQxCisgICAgICAgIEFkZCBhIHRhcmdldCBVUkwgcGFyYW1ldGVy
IHRvIHRoZSBDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyBtZXRob2QKKyAgICAgICAgdG8gbGV0
IGNsaWVudCBBUElzIGtub3cgd2hpY2ggVVJMIGEgbmV3IHdpbmRvdyB3aWxsIHN0YXJ0IHdpdGgg
b24gd2luIHBvcnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorCiAyMDEwLTA3LTA4ICBBYXJvbiBC
b29kbWFuICA8YWFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkg
SGF0Y2hlci4KSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAJKHJldmlzaW9uIDYyODk4KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNyArMTkwLDcgQEAgc3Rh
dGljIENPTVB0cjxJUHJvcGVydHlCYWc+IGNyZWF0ZVdpbmRvdwogICAgIHJldHVybiBDT01QdHI8
SVByb3BlcnR5QmFnPihBZG9wdENPTSwgQ09NUHJvcGVydHlCYWc8Q09NVmFyaWFudD46OmFkb3B0
KG1hcCkpOwogfQogCi1QYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSos
IGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFdpbmRvd0Zl
YXR1cmVzJiBmZWF0dXJlcykKK1BhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZy
YW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgV2lu
ZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBLVVJMJiB0YXJnZXRVUkwpCiB7CiAgICAgQ09N
UHRyPElXZWJVSURlbGVnYXRlPiBkZWxlZ2F0ZSA9IHVpRGVsZWdhdGUoKTsKICAgICBpZiAoIWRl
bGVnYXRlKQpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGZvY3VzZWROb2RlQ2hhbmdlZChXZWJDb3JlOjpOb2RlKik7CiAKLSAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2UqIGNyZWF0ZVdpbmRvdyhXZWJDb3JlOjpGcmFtZSosIGNv
bnN0IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0
dXJlcyYpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFnZSogY3JlYXRlV2luZG93KFdlYkNvcmU6
OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OldpbmRvd0ZlYXR1cmVzJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogICAgIHZpcnR1YWwgdm9p
ZCBzaG93KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuTW9kYWwoKTsKSW5kZXg6IFdlYktp
dC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNp
b24gNjI5NTYpCisrKyBXZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTAtMDctMDkgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAgICAgICAgQWRkIGEgdGFyZ2V0
IFVSTCBwYXJhbWV0ZXIgdG8gdGhlIENocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93IG1ldGhvZAor
ICAgICAgICB0byBsZXQgY2xpZW50IEFQSXMga25vdyB3aGljaCBVUkwgYSBuZXcgd2luZG93IHdp
bGwgc3RhcnQgd2l0aCBvbiB3eCBwb3J0LgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJv
bWVDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6Y3JlYXRl
V2luZG93KToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6CisKIDIw
MTAtMDctMDcgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAg
ICAgICAgW3d4XSBCdWlsZCBmaXggYWZ0ZXIgY2hhbmdlIGluIFBhZ2UgY29uc3RydWN0b3IuCklu
ZGV4OiBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCShyZXZpc2lv
biA2Mjg5OCkKKysrIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50V3g6OmZv
Y3VzZWROb2RlQ2hhbmdlZCgKIHsKIH0KIAotUGFnZSogQ2hyb21lQ2xpZW50V3g6OmNyZWF0ZVdp
bmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdpbmRv
d0ZlYXR1cmVzJiBmZWF0dXJlcykKK1BhZ2UqIENocm9tZUNsaWVudFd4OjpjcmVhdGVXaW5kb3co
RnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0
dXJlcyYgZmVhdHVyZXMsIGNvbnN0IEtVUkwmIHRhcmdldFVSTCkKIHsKICAgICBQYWdlKiBteVBh
Z2UgPSAwOwogICAgIHd4V2ViVmlld05ld1dpbmRvd0V2ZW50IHdrRXZlbnQobV93ZWJWaWV3KTsK
SW5kZXg6IFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaAkocmV2aXNpb24g
NjI4OTgpCisrKyBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBm
b2N1c2VkTm9kZUNoYW5nZWQoTm9kZSopOwogCi0gICAgdmlydHVhbCBQYWdlKiBjcmVhdGVXaW5k
b3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMm
KTsKKyAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9h
ZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IEtVUkwmKTsKICAgICB2aXJ0
dWFsIFBhZ2UqIGNyZWF0ZU1vZGFsRGlhbG9nKEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVz
dCYpOwogICAgIHZpcnR1YWwgdm9pZCBzaG93KCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61059</attachid>
            <date>2010-07-09 10:42:26 -0700</date>
            <delta_ts>2010-11-16 05:09:39 -0800</delta_ts>
            <desc>patch V2</desc>
            <filename>patch1.txt</filename>
            <type>text/plain</type>
            <size>35202</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Mjk1NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMDctMDkgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAgICAgICAgQWRkIGEg
dGFyZ2V0IFVSTCBwYXJhbWV0ZXIgdG8gdGhlIGNyZWF0ZVdpbmRvdyBtZXRob2QKKyAgICAgICAg
dG8gbGV0IGNsaWVudCBBUElzIGtub3cgd2hpY2ggVVJMIGEgbmV3IHdpbmRvdyB3aWxsIHN0YXJ0
IHdpdGgKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBDaGFuZ2UgbWV0aG9kIHNpZ25hdHVy
ZSBvZiBXZWJDb3JlOjpDaHJvbWU6OmNyZWF0ZVdpbmRvdworICAgICAgICAqIGJpbmRpbmdzL2dl
bmVyaWMvQmluZGluZ0RPTVdpbmRvdy5oOgorICAgICAgICAoV2ViQ29yZTo6OjpjcmVhdGVXaW5k
b3cpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50
cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5o
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
Y3JlYXRlV2luZG93KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAqIHBhZ2Uv
Q2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6b3Blbk5ld1dpbmRvdyk6CisKIDIwMTAtMDctMDkgIFNlYmFz
dGlhbiBEcsO2Z2UgIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9u
IDYyODk4KQorKysgV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtOTI0
LDcgKzkyNCw3IEBAIF9fWk5LN1dlYkNvcmU1UmFuZ2UxNHN0YXJ0Q29udGFpbmVyRVJpCiBfX1pO
SzdXZWJDb3JlNVJhbmdlMTlib3VuZGFyeVBvaW50c1ZhbGlkRXYKIF9fWk5LN1dlYkNvcmU1UmFu
Z2U5ZW5kT2Zmc2V0RVJpCiBfX1pOSzdXZWJDb3JlNVJhbmdlOWZpcnN0Tm9kZUV2Ci1fX1pOSzdX
ZWJDb3JlNkNocm9tZTEyY3JlYXRlV2luZG93RVBOU181RnJhbWVFUktOU18xNkZyYW1lTG9hZFJl
cXVlc3RFUktOU18xNFdpbmRvd0ZlYXR1cmVzRQorX19aTks3V2ViQ29yZTZDaHJvbWUxMmNyZWF0
ZVdpbmRvd0VQTlNfNUZyYW1lRVJLTlNfMTZGcmFtZUxvYWRSZXF1ZXN0RVJLTlNfMTRXaW5kb3dG
ZWF0dXJlc0VSS05TXzRLVVJMRQogX19aTks3V2ViQ29yZTZFZGl0b3IxM2NhbkVkaXRSaWNobHlF
dgogX19aTks3V2ViQ29yZTZFZGl0b3IxNmNvbXBvc2l0aW9uUmFuZ2VFdgogX19aTks3V2ViQ29y
ZTZFZGl0b3IxNmZvbnRGb3JTZWxlY3Rpb25FUmIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvZ2Vu
ZXJpYy9CaW5kaW5nRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9n
ZW5lcmljL0JpbmRpbmdET01XaW5kb3cuaAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvQmluZGluZ0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niwx
MyArODYsMTYgQEAgRnJhbWUqIEJpbmRpbmdET01XaW5kb3c8QmluZGluZz46OmNyZWF0ZQogICAg
IC8vIHdlIGN1cnJlbnRseSBkbyBhbiBhbGxvd3NBY2Nlc3NGcm9tIGNhbGwgdXNpbmcgdGhlIHdp
bmRvdyB3ZSBjcmVhdGUsCiAgICAgLy8gd2hpY2ggY2FuJ3QgYmUgZG9uZSBiZWZvcmUgY3JlYXRp
bmcgaXQuIFdlJ2QgaGF2ZSB0byByZXNvbHZlIGFsbCB0aG9zZQogICAgIC8vIGlzc3VlcyB0byBw
YXNzIHRoZSBVUkwgaW5zdGVhZCBvZiAiIi4KKyAgICAvLyBOb3cgd2UgcGFzcyB0aGUgVVJMIGFz
IGEgc2VwYXJhdGUgcGFyYW1ldGVyIHRvIGNyZWF0ZVdpbmRvdyBzbyB0aGUgY2xpZW50CisgICAg
Ly8gY2FuIHVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIGRlY2lkZSB3aGV0aGVyIGl0IHNob3VsZCBi
ZSBibG9ja2VkIG9yIG5vdC4KIAorICAgIEtVUkwgY29tcGxldGVkVVJMID0gdXJsLmlzRW1wdHko
KSA/IEtVUkwoKSA6IGNvbXBsZXRlVVJMKHVybCk7CiAgICAgYm9vbCBjcmVhdGVkOwogICAgIC8v
IFdlIHBhc3MgaW4gdGhlIG9wZW5lciBmcmFtZSBoZXJlIHNvIGl0IGNhbiBiZSB1c2VkIGZvciBs
b29raW5nIHVwIHRoZQogICAgIC8vIGZyYW1lIG5hbWUsIGluIGNhc2UgdGhlIGFjdGl2ZSBmcmFt
ZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3BlbmVyIGZyYW1lLAogICAgIC8vIGFuZCB0aGUgbmFt
ZSByZWZlcmVuY2VzIGEgZnJhbWUgcmVsYXRpdmUgdG8gdGhlIG9wZW5lciBmcmFtZSwgZm9yIGV4
YW1wbGUKICAgICAvLyAiX3NlbGYiIG9yICJfcGFyZW50Ii4KLSAgICBGcmFtZSogbmV3RnJhbWUg
PSBjYWxsaW5nRnJhbWUtPmxvYWRlcigpLT5jcmVhdGVXaW5kb3cob3BlbmVyRnJhbWUtPmxvYWRl
cigpLCBmcmFtZVJlcXVlc3QsIHdpbmRvd0ZlYXR1cmVzLCBjcmVhdGVkKTsKKyAgICBGcmFtZSog
bmV3RnJhbWUgPSBjYWxsaW5nRnJhbWUtPmxvYWRlcigpLT5jcmVhdGVXaW5kb3cob3BlbmVyRnJh
bWUtPmxvYWRlcigpLCBmcmFtZVJlcXVlc3QsIHdpbmRvd0ZlYXR1cmVzLCBjb21wbGV0ZWRVUkws
IGNyZWF0ZWQpOwogICAgIGlmICghbmV3RnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0x
MDIsMTQgKzEwNSwxMiBAQCBGcmFtZSogQmluZGluZ0RPTVdpbmRvdzxCaW5kaW5nPjo6Y3JlYXRl
CiAgICAgQmluZGluZzo6RE9NV2luZG93OjpzdG9yZURpYWxvZ0FyZ3Moc3RhdGUsIG5ld0ZyYW1l
LCBkaWFsb2dBcmdzKTsKIAogICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSB8fCBC
aW5kaW5nU2VjdXJpdHk8QmluZGluZz46OmNhbkFjY2Vzc0ZyYW1lKHN0YXRlLCBuZXdGcmFtZSwg
dHJ1ZSkpIHsKLSAgICAgICAgS1VSTCBjb21wbGV0ZWRVcmwgPQotICAgICAgICAgICAgdXJsLmlz
RW1wdHkoKSA/IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiIikgOiBjb21wbGV0ZVVSTCh1cmwpOwog
ICAgICAgICBib29sIHVzZXJHZXN0dXJlID0gcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CiAKICAg
ICAgICAgaWYgKGNyZWF0ZWQpCi0gICAgICAgICAgICBuZXdGcmFtZS0+bG9hZGVyKCktPmNoYW5n
ZUxvY2F0aW9uKGNvbXBsZXRlZFVybCwgcmVmZXJyZXIsIGZhbHNlLCBmYWxzZSwgdXNlckdlc3R1
cmUpOworICAgICAgICAgICAgbmV3RnJhbWUtPmxvYWRlcigpLT5jaGFuZ2VMb2NhdGlvbihjb21w
bGV0ZWRVUkwsIHJlZmVycmVyLCBmYWxzZSwgZmFsc2UsIHVzZXJHZXN0dXJlKTsKICAgICAgICAg
ZWxzZSBpZiAoIXVybC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBuZXdGcmFtZS0+cmVkaXJlY3RT
Y2hlZHVsZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShjb21wbGV0ZWRVcmwuc3RyaW5nKCks
IHJlZmVycmVyLCBmYWxzZSwgZmFsc2UsIHVzZXJHZXN0dXJlKTsKKyAgICAgICAgICAgIG5ld0Zy
YW1lLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKGNvbXBsZXRl
ZFVSTC5zdHJpbmcoKSwgcmVmZXJyZXIsIGZhbHNlLCBmYWxzZSwgdXNlckdlc3R1cmUpOwogICAg
IH0KIAogICAgIHJldHVybiBuZXdGcmFtZTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjcsMTIgKzcyNywx
NSBAQCBzdGF0aWMgRnJhbWUqIGNyZWF0ZVdpbmRvdyhFeGVjU3RhdGUqIGV4CiAgICAgLy8gb3Bl
bmVkQnlET00sIGFuZCBkaWFsb2dBcmd1bWVudHMgdmFsdWVzLiBBbHNvLCB0byBkZWNpZGUgd2hl
dGhlciB0byB1c2UgdGhlIFVSTCB3ZSBjdXJyZW50bHkKICAgICAvLyBkbyBhbiBhbGxvd3NBY2Nl
c3NGcm9tIGNhbGwgdXNpbmcgdGhlIHdpbmRvdyB3ZSBjcmVhdGUsIHdoaWNoIGNhbid0IGJlIGRv
bmUgYmVmb3JlIGNyZWF0aW5nIGl0LgogICAgIC8vIFdlJ2QgaGF2ZSB0byByZXNvbHZlIGFsbCB0
aG9zZSBpc3N1ZXMgdG8gcGFzcyB0aGUgVVJMIGluc3RlYWQgb2YgIiIuCisgICAgLy8gTm93IHdl
IHBhc3MgdGhlIFVSTCBhcyBhIHNlcGFyYXRlIHBhcmFtZXRlciB0byBjcmVhdGVXaW5kb3cgc28g
dGhlIGNsaWVudAorICAgIC8vIGNhbiB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBkZWNpZGUgd2hl
dGhlciBpdCBzaG91bGQgYmUgYmxvY2tlZCBvciBub3QuICAgIAogCisgICAgS1VSTCBjb21wbGV0
ZWRVUkwgPSB1cmwuaXNFbXB0eSgpID8gS1VSTCgpIDogY29tcGxldGVVUkwoZXhlYywgdXJsKTsK
ICAgICBib29sIGNyZWF0ZWQ7CiAgICAgLy8gV2UgcGFzcyBpbiB0aGUgb3BlbmVyIGZyYW1lIGhl
cmUgc28gaXQgY2FuIGJlIHVzZWQgZm9yIGxvb2tpbmcgdXAgdGhlIGZyYW1lIG5hbWUsIGluIGNh
c2UgdGhlIGFjdGl2ZSBmcmFtZQogICAgIC8vIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBvcGVuZXIg
ZnJhbWUsIGFuZCB0aGUgbmFtZSByZWZlcmVuY2VzIGEgZnJhbWUgcmVsYXRpdmUgdG8gdGhlIG9w
ZW5lciBmcmFtZSwgZm9yIGV4YW1wbGUKICAgICAvLyAiX3NlbGYiIG9yICJfcGFyZW50Ii4KLSAg
ICBGcmFtZSogbmV3RnJhbWUgPSBsZXhpY2FsRnJhbWUtPmxvYWRlcigpLT5jcmVhdGVXaW5kb3co
b3BlbmVyRnJhbWUtPmxvYWRlcigpLCBmcmFtZVJlcXVlc3QsIHdpbmRvd0ZlYXR1cmVzLCBjcmVh
dGVkKTsKKyAgICBGcmFtZSogbmV3RnJhbWUgPSBsZXhpY2FsRnJhbWUtPmxvYWRlcigpLT5jcmVh
dGVXaW5kb3cob3BlbmVyRnJhbWUtPmxvYWRlcigpLCBmcmFtZVJlcXVlc3QsIHdpbmRvd0ZlYXR1
cmVzLCBjb21wbGV0ZWRVUkwsIGNyZWF0ZWQpOwogICAgIGlmICghbmV3RnJhbWUpCiAgICAgICAg
IHJldHVybiAwOwogCkBAIC03NDYsNyArNzQ5LDYgQEAgc3RhdGljIEZyYW1lKiBjcmVhdGVXaW5k
b3coRXhlY1N0YXRlKiBleAogICAgICAgICBuZXdXaW5kb3ctPnB1dERpcmVjdChJZGVudGlmaWVy
KGV4ZWMsICJkaWFsb2dBcmd1bWVudHMiKSwgZGlhbG9nQXJncyk7CiAKICAgICBpZiAoIXByb3Rv
Y29sSXNKYXZhU2NyaXB0KHVybCkgfHwgbmV3V2luZG93LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMp
KSB7Ci0gICAgICAgIEtVUkwgY29tcGxldGVkVVJMID0gdXJsLmlzRW1wdHkoKSA/IEtVUkwoUGFy
c2VkVVJMU3RyaW5nLCAiIikgOiBjb21wbGV0ZVVSTChleGVjLCB1cmwpOwogICAgICAgICBib29s
IHVzZXJHZXN0dXJlID0gcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKGV4ZWMpOwogCiAgICAgICAgIGlm
IChjcmVhdGVkKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDYyODk4KQorKysg
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGZvY3VzZWROb2RlQ2hhbmdlZChOb2Rl
KikgeyB9CiAKLSAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZy
YW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYpIHsgcmV0dXJuIDA7IH0KKyAg
ICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVl
c3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IEtVUkwmKSB7IHJldHVybiAwOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNob3coKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2Rh
bCgpIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lv
biA2Mjg5OCkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjU4LDcgKzI1OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldERlZmVyc0xvYWRpbmco
Ym9vbCAKICAgICB9CiB9CiAKLUZyYW1lKiBGcmFtZUxvYWRlcjo6Y3JlYXRlV2luZG93KEZyYW1l
TG9hZGVyKiBmcmFtZUxvYWRlckZvckZyYW1lTG9va3VwLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMsIGJvb2wmIGNyZWF0ZWQp
CitGcmFtZSogRnJhbWVMb2FkZXI6OmNyZWF0ZVdpbmRvdyhGcmFtZUxvYWRlciogZnJhbWVMb2Fk
ZXJGb3JGcmFtZUxvb2t1cCwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBLVVJMJiB0YXJnZXRVUkwsIGJvb2wmIGNy
ZWF0ZWQpCiB7IAogICAgIEFTU0VSVCghZmVhdHVyZXMuZGlhbG9nIHx8IHJlcXVlc3QuZnJhbWVO
YW1lKCkuaXNFbXB0eSgpKTsKIApAQCAtMjg3LDcgKzI4Nyw3IEBAIEZyYW1lKiBGcmFtZUxvYWRl
cjo6Y3JlYXRlV2luZG93KEZyYW1lTG8KICAgICBpZiAoIW9sZFBhZ2UpCiAgICAgICAgIHJldHVy
biAwOwogICAgICAgICAKLSAgICBQYWdlKiBwYWdlID0gb2xkUGFnZS0+Y2hyb21lKCktPmNyZWF0
ZVdpbmRvdyhtX2ZyYW1lLCByZXF1ZXN0V2l0aFJlZmVycmVyLCBmZWF0dXJlcyk7CisgICAgUGFn
ZSogcGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLT5jcmVhdGVXaW5kb3cobV9mcmFtZSwgcmVxdWVz
dFdpdGhSZWZlcnJlciwgZmVhdHVyZXMsIHRhcmdldFVSTCk7CiAgICAgaWYgKCFwYWdlKQogICAg
ICAgICByZXR1cm4gMDsKIApJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA2Mjg5OCkK
KysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3
ICsxMjIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxsZWQgYnkgY3JlYXRlV2luZG93IGluIEpT
RE9NV2luZG93QmFzZS5jcHAsIGUuZy4gdG8gZnVsZmlsbCBhIG1vZGFsIGRpYWxvZyBjcmVhdGlv
bgogICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgbWV0aG9kIG91dHNpZGUgb2YgdGhlIEZyYW1lTG9h
ZGVyIGNsYXNzLgotICAgIEZyYW1lKiBjcmVhdGVXaW5kb3coRnJhbWVMb2FkZXIqIGZyYW1lTG9h
ZGVyRm9yRnJhbWVMb29rdXAsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dG
ZWF0dXJlcyYsIGJvb2wmIGNyZWF0ZWQpOworICAgIEZyYW1lKiBjcmVhdGVXaW5kb3coRnJhbWVM
b2FkZXIqIGZyYW1lTG9hZGVyRm9yRnJhbWVMb29rdXAsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3Qm
LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IEtVUkwmIHRhcmdldFVSTCwgYm9vbCYgY3Jl
YXRlZCk7CiAKICAgICB1bnNpZ25lZCBsb25nIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3RvcmVkQ3JlZGVudGlhbHMsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKTsKIApJbmRleDogV2ViQ29yZS9w
YWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHJl
dmlzaW9uIDYyODk4KQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXRU
ZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUg
IktVUkwuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwTG9hZERlZmVy
cmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCkBAIC0xNjMsOSArMTY0LDkgQEAgdm9p
ZCBDaHJvbWU6OmZvY3VzZWROb2RlQ2hhbmdlZChOb2RlKiBubwogICAgIG1fY2xpZW50LT5mb2N1
c2VkTm9kZUNoYW5nZWQobm9kZSk7CiB9CiAKLVBhZ2UqIENocm9tZTo6Y3JlYXRlV2luZG93KEZy
YW1lKiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2luZG93
RmVhdHVyZXMmIGZlYXR1cmVzKSBjb25zdAorUGFnZSogQ2hyb21lOjpjcmVhdGVXaW5kb3coRnJh
bWUqIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dG
ZWF0dXJlcyYgZmVhdHVyZXMsIGNvbnN0IEtVUkwmIHRhcmdldFVSTCkgY29uc3QKIHsKLSAgICBQ
YWdlKiBuZXdQYWdlID0gbV9jbGllbnQtPmNyZWF0ZVdpbmRvdyhmcmFtZSwgcmVxdWVzdCwgZmVh
dHVyZXMpOworICAgIFBhZ2UqIG5ld1BhZ2UgPSBtX2NsaWVudC0+Y3JlYXRlV2luZG93KGZyYW1l
LCByZXF1ZXN0LCBmZWF0dXJlcywgdGFyZ2V0VVJMKTsKIAogI2lmIEVOQUJMRShET01fU1RPUkFH
RSkKICAgICBpZiAobmV3UGFnZSkgewpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWUuaAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJD
b3JlL3BhZ2UvQ2hyb21lLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEdlb2xvY2F0aW9uOwogICAgIGNsYXNzIEhpdFRlc3RS
ZXN1bHQ7CiAgICAgY2xhc3MgSW50UmVjdDsKKyAgICBjbGFzcyBLVVJMOwogICAgIGNsYXNzIE5v
ZGU7CiAgICAgY2xhc3MgUGFnZTsKICAgICBjbGFzcyBTdHJpbmc7CkBAIC04OSw3ICs5MCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGZvY3VzZWROb2RlQ2hhbmdlZChO
b2RlKikgY29uc3Q7CiAKLSAgICAgICAgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3Qg
RnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJikgY29uc3Q7CisgICAgICAg
IFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25z
dCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IEtVUkwmKSBjb25zdDsKICAgICAgICAgdm9pZCBzaG93
KCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBjYW5SdW5Nb2RhbCgpIGNvbnN0OwpJbmRleDogV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VyUXVpcmtzLmgiCiAjaW5jbHVkZSAiSG9zdFdp
bmRvdy5oIgorI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTkx
LDcgKzkyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBGcmFtZSB3YW50cyB0
byBjcmVhdGUgdGhlIG5ldyBQYWdlLiAgQWxzbywgdGhlIG5ld2x5IGNyZWF0ZWQgd2luZG93CiAg
ICAgICAgIC8vIHNob3VsZCBub3QgYmUgc2hvd24gdG8gdGhlIHVzZXIgdW50aWwgdGhlIENocm9t
ZUNsaWVudCBvZiB0aGUgbmV3bHkKICAgICAgICAgLy8gY3JlYXRlZCBQYWdlIGhhcyBpdHMgc2hv
dyBtZXRob2QgY2FsbGVkLgotICAgICAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFt
ZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYpID0gMDsK
KyAgICAgICAgLy8gRnVuY3Rpb24gY3JlYXRlV2luZG93IGFsc28gcGFzc2VzIHRoZSB0YXJnZXQg
VVJMIHdoZXJlIHRoZSBjcmVhdGVkIHdpbmRvdyB3aWxsIGJlIG5hdmlnYXRlZCB0by4KKyAgICAg
ICAgdmlydHVhbCBQYWdlKiBjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBjb25zdCBGcmFtZUxv
YWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMsIGNvbnN0
IEtVUkwmIHRhcmdldFVSTCkgPSAwOworCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzaG93KCkgPSAw
OwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpID0gMDsKSW5kZXg6IFdlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgs
NyArMTM4LDcgQEAgc3RhdGljIHZvaWQgb3Blbk5ld1dpbmRvdyhjb25zdCBLVVJMJiB1cgogewog
ICAgIGlmIChQYWdlKiBvbGRQYWdlID0gZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBXaW5kb3dG
ZWF0dXJlcyBmZWF0dXJlczsKLSAgICAgICAgaWYgKFBhZ2UqIG5ld1BhZ2UgPSBvbGRQYWdlLT5j
aHJvbWUoKS0+Y3JlYXRlV2luZG93KGZyYW1lLCBGcmFtZUxvYWRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCh1cmxUb0xvYWQsIGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSksIGZl
YXR1cmVzKSkKKyAgICAgICAgaWYgKFBhZ2UqIG5ld1BhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS0+
Y3JlYXRlV2luZG93KGZyYW1lLCBGcmFtZUxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCh1cmxU
b0xvYWQsIGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSksIGZlYXR1cmVzLCB1
cmxUb0xvYWQpKQogICAgICAgICAgICAgbmV3UGFnZS0+Y2hyb21lKCktPnNob3coKTsKICAgICB9
CiB9CkluZGV4OiBXZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gNjI5NTYpCisrKyBXZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE3IEBACisyMDEwLTA3LTA5ICBKb2hubnkgRGluZyAgPGpuZEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNDQxCisgICAgICAgIEFk
ZCBhIHRhcmdldCBVUkwgcGFyYW1ldGVyIHRvIHRoZSBDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRv
dyBtZXRob2QKKyAgICAgICAgdG8gbGV0IGNsaWVudCBBUElzIGtub3cgd2hpY2ggVVJMIGEgbmV3
IHdpbmRvdyB3aWxsIHN0YXJ0IHdpdGggb24gV2ViS2l0MiBwb3J0LgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSk6CisKIDIwMTAtMDct
MDkgIEFudHRpIEtvaXZpc3RvICA8a29pdmlzdG9AaWtpLmZpPgogCiAgICAgICAgIE5vdCByZXZp
ZXdlZC4KSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05OSw3ICs5OSw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpmb2N1c2VkTm9kZUNoYW5nZWQK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1QYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0
ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0
dXJlcyYpCitQYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0
IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IEtVUkwmIHRh
cmdldFVSTCkKIHsKICAgICB1aW50NjRfdCBuZXdQYWdlSUQgPSAwOwogICAgIEludFNpemUgdmll
d1NpemU7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjIs
NyArNjIsNyBAQCBwcml2YXRlOgogICAgIC8vIEZyYW1lIHdhbnRzIHRvIGNyZWF0ZSB0aGUgbmV3
IFBhZ2UuICBBbHNvLCB0aGUgbmV3bHkgY3JlYXRlZCB3aW5kb3cKICAgICAvLyBzaG91bGQgbm90
IGJlIHNob3duIHRvIHRoZSB1c2VyIHVudGlsIHRoZSBDaHJvbWVDbGllbnQgb2YgdGhlIG5ld2x5
CiAgICAgLy8gY3JlYXRlZCBQYWdlIGhhcyBpdHMgc2hvdyBtZXRob2QgY2FsbGVkLgotICAgIHZp
cnR1YWwgV2ViQ29yZTo6UGFnZSogY3JlYXRlV2luZG93KFdlYkNvcmU6OkZyYW1lKiwgY29uc3Qg
V2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVz
Jik7CisgICAgdmlydHVhbCBXZWJDb3JlOjpQYWdlKiBjcmVhdGVXaW5kb3coV2ViQ29yZTo6RnJh
bWUqLCBjb25zdCBXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2lu
ZG93RmVhdHVyZXMmLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIHNo
b3coKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuTW9kYWwoKTsKSW5kZXg6IFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NTEsNyArMzUxLDcgQEAgRnJhbWUqIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZQog
ICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIEp1c3QgY2FsbCB0aHJvdWdoIHRvIHRoZSBjaHJv
bWUgY2xpZW50LgotICAgIFBhZ2UqIG5ld1BhZ2UgPSB3ZWJQYWdlLT5jb3JlUGFnZSgpLT5jaHJv
bWUoKS0+Y3JlYXRlV2luZG93KG1fZnJhbWUtPmNvcmVGcmFtZSgpLCBGcmFtZUxvYWRSZXF1ZXN0
KCksIFdpbmRvd0ZlYXR1cmVzKCkpOworICAgIFBhZ2UqIG5ld1BhZ2UgPSB3ZWJQYWdlLT5jb3Jl
UGFnZSgpLT5jaHJvbWUoKS0+Y3JlYXRlV2luZG93KG1fZnJhbWUtPmNvcmVGcmFtZSgpLCBGcmFt
ZUxvYWRSZXF1ZXN0KCksIFdpbmRvd0ZlYXR1cmVzKCksIEtVUkwoKSk7CiAgICAgaWYgKCFuZXdQ
YWdlKQogICAgICAgICByZXR1cm4gMDsKICAgICAKSW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gNjI5NTYpCisrKyBXZWJLaXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDctMDkgIEpv
aG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDE0NDEKKyAgICAgICAgQWRkIGEgdGFyZ2V0IFVSTCBwYXJhbWV0ZXIgdG8gdGhlIENo
cm9tZUNsaWVudDo6Y3JlYXRlV2luZG93IG1ldGhvZAorICAgICAgICB0byBsZXQgY2xpZW50IEFQ
SXMga25vdyB3aGljaCBVUkwgYSBuZXcgd2luZG93IHdpbGwgc3RhcnQgd2l0aCBvbiBlbGYgcG9y
dAorCisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAg
ICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgorCiAyMDEwLTA3LTA4ICBK
b29uZSBIdXIgIDxqb29uZUBrbGRwLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlv
IEdvbWVzLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2Mjk1NikKKysrIFdlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNy0w
OSAgSm9obm55IERpbmcgIDxqbmRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MTQ0MQorICAgICAgICBBZGQgYSB0YXJnZXQgVVJMIHBhcmFtZXRlciB0byB0
aGUgQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cgbWV0aG9kCisgICAgICAgIHRvIGxldCBjbGll
bnQgQVBJcyBrbm93IHdoaWNoIFVSTCBhIG5ldyB3aW5kb3cgd2lsbCBzdGFydCB3aXRoIG9uIGNo
cm9taXVtIHBvcnQuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpjcmVhdGVWaWV3KToKKyAgICAgICAgKiBzcmMvQ2hy
b21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmNy
ZWF0ZVdpbmRvdyk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKyAgICAgICAg
KiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaENyZWF0ZVBhZ2UpOgorCiAyMDEwLTA3LTA5ICBEYXZp
ZCBIb2xsb3dheSAgPGRob2xsb3dhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGll
bnQuaAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsMTYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgV2ViVmlldyogY3JlYXRlVmlldyhXZWJGcmFtZSogY3JlYXRvciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUpIHsg
cmV0dXJuIDA7IH0KKyAgICAvLyBTb21ldGltZXMgaXQncyBtdWNoIGJldHRlciBmb3IgY2xpZW50
IEFQSSBpZiBhIG5ldyB3aW5kb3cgc3RhcnRzIHdpdGggYQorICAgIC8vIFVSTCwgaGVyZSB3aGVy
ZSB3ZSBrbm93IHdoYXQgVVJMIHdlIGFyZSBnb2luZyB0byBvcGVuLgorICAgIHZpcnR1YWwgV2Vi
VmlldyogY3JlYXRlVmlldyhXZWJGcmFtZSogY3JlYXRvciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgV2ViV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlVSTCYgdXJsKSB7CisgICAgICAgICh2b2lk
KXVybDsgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLy8gVGhlIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24gaXMgdG8gY2FsbCB0aGUgb2xkIHZlcnNpb24gb2YgY3JlYXRlVmlldy4KKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZVZpZXcoY3JlYXRvciwgZmVhdHVyZXMsIG5hbWUpOyAKKyAgICB9
CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgV2ViUG9wdXBNZW51LiAgSW4gdGhlIHNlY29uZCBmb3Jt
LCB0aGUgY2xpZW50IGlzCiAgICAgLy8gcmVzcG9uc2libGUgZm9yIHJlbmRlcmluZyB0aGUgY29u
dGVudHMgb2YgdGhlIHBvcHVwIG1lbnUuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDYyODk4KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDE0ICsyMjQsMTYgQEAg
dm9pZCBDaHJvbWVDbGllbnRJbXBsOjpmb2N1c2VkTm9kZUNoYW5nZQogICAgIH0KIH0KIAotUGFn
ZSogQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlV2luZG93KAotICAgIEZyYW1lKiBmcmFtZSwgY29u
c3QgRnJhbWVMb2FkUmVxdWVzdCYgciwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzKQor
UGFnZSogQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdpbmRvd0ZlYXR1
cmVzJiBmZWF0dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBLVVJMJiB0YXJnZXRVUkwpCiB7CiAgICAgaWYgKCFtX3dlYlZpZXctPmNsaWVudCgpKQogICAg
ICAgICByZXR1cm4gMDsKIAogICAgIFdlYlZpZXdJbXBsKiBuZXdWaWV3ID0gc3RhdGljX2Nhc3Q8
V2ViVmlld0ltcGwqPigKLSAgICAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+Y3JlYXRlVmlldyhX
ZWJGcmFtZUltcGw6OmZyb21GcmFtZShmcmFtZSksIGZlYXR1cmVzLCByLmZyYW1lTmFtZSgpKSk7
CisgICAgICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPmNyZWF0ZVZpZXcoV2ViRnJhbWVJbXBsOjpm
cm9tRnJhbWUoZnJhbWUpLCBmZWF0dXJlcywgci5mcmFtZU5hbWUoKSwgdGFyZ2V0VVJMKSk7CiAg
ICAgaWYgKCFuZXdWaWV3KQogICAgICAgICByZXR1cm4gMDsKIApJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVt
L3NyYy9DaHJvbWVDbGllbnRJbXBsLmgJKHJldmlzaW9uIDYyODk4KQorKysgV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0YWtlRm9jdXMoV2ViQ29yZTo6Rm9jdXNEaXJl
Y3Rpb24pOwogICAgIHZpcnR1YWwgdm9pZCBmb2N1c2VkTm9kZUNoYW5nZWQoV2ViQ29yZTo6Tm9k
ZSopOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFnZSogY3JlYXRlV2luZG93KAotICAgICAgICBX
ZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYpOworICAgICAgICBXZWJDb3JlOjpGcmFtZSosIGNvbnN0
IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJl
cyYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2hvdygpOwogICAg
IHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpOwogICAgIHZpcnR1YWwgdm9pZCBydW5Nb2RhbCgp
OwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNw
cAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwMCw3ICs4MDAsNyBAQCBGcmFtZSogRnJh
bWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaENyCiB7CiAgICAgc3RydWN0IFdpbmRvd0ZlYXR1
cmVzIGZlYXR1cmVzOwogICAgIFBhZ2UqIG5ld1BhZ2UgPSBtX3dlYkZyYW1lLT5mcmFtZSgpLT5w
YWdlKCktPmNocm9tZSgpLT5jcmVhdGVXaW5kb3coCi0gICAgICAgIG1fd2ViRnJhbWUtPmZyYW1l
KCksIEZyYW1lTG9hZFJlcXVlc3QoKSwgZmVhdHVyZXMpOworICAgICAgICBtX3dlYkZyYW1lLT5m
cmFtZSgpLCBGcmFtZUxvYWRSZXF1ZXN0KCksIGZlYXR1cmVzLCBLVVJMKCkpOwogCiAgICAgLy8g
TWFrZSBzdXJlIHRoYXQgd2UgaGF2ZSBhIHZhbGlkIGRpc3Bvc2l0aW9uLiAgVGhpcyBzaG91bGQg
aGF2ZSBiZWVuIHNldCBpbgogICAgIC8vIHRoZSBwcmVjZWVkaW5nIGNhbGwgdG8gZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24uCkluZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjp1bmZvY3VzKCkKICAgICBl
dmFzX29iamVjdF9mb2N1c19zZXQobV92aWV3LCBFSU5BX0ZBTFNFKTsKIH0KIAotUGFnZSogQ2hy
b21lQ2xpZW50RWZsOjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0
JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMpCitQYWdl
KiBDaHJvbWVDbGllbnRFZmw6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJl
cXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywg
Y29uc3QgS1VSTCYgdGFyZ2V0VVJMKQogewogICAgIEV2YXNfT2JqZWN0KiBuZXdWaWV3ID0gZXdr
X3ZpZXdfd2luZG93X2NyZWF0ZShtX3ZpZXcsIEVJTkFfVFJVRSwgJmZlYXR1cmVzKTsKICAgICBp
ZiAoIW5ld1ZpZXcpCkluZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50RWZsLmgJKHJldmlzaW9uIDYyODk4KQorKysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXNlZE5vZGVDaGFuZ2VkKE5vZGUqKTsKIAotICAgIHZp
cnR1YWwgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYs
IGNvbnN0IFdpbmRvd0ZlYXR1cmVzJik7CisgICAgdmlydHVhbCBQYWdlKiBjcmVhdGVXaW5kb3co
RnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmLCBj
b25zdCBLVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIHNob3coKTsKIAogICAgIHZpcnR1YWwgYm9v
bCBjYW5SdW5Nb2RhbCgpOwpJbmRleDogV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyOTU2KQorKysgV2ViS2l0L2d0ay9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wNy0wOSAgSm9o
bm55IERpbmcgIDxqbmRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MTQ0MQorICAgICAgICBBZGQgYSB0YXJnZXQgVVJMIHBhcmFtZXRlciB0byB0aGUgQ2hy
b21lQ2xpZW50OjpjcmVhdGVXaW5kb3cgbWV0aG9kCisgICAgICAgIHRvIGxldCBjbGllbnQgQVBJ
cyBrbm93IHdoaWNoIFVSTCBhIG5ldyB3aW5kb3cgd2lsbCBzdGFydCB3aXRoIG9uIGd0ayBwb3J0
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgorCiAyMDEwLTA3LTA3ICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJ
bmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAko
cmV2aXNpb24gNjI4OTgpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIENocm9tZUNs
aWVudDo6dW5mb2N1cygpCiAgICAgICAgIGd0a193aW5kb3dfc2V0X2ZvY3VzKEdUS19XSU5ET1co
d2luZG93KSwgTlVMTCk7CiB9CiAKLVBhZ2UqIENocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZy
YW1lKiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29u
c3QgV2luZG93RmVhdHVyZXMmIGNvcmVGZWF0dXJlcykKK1BhZ2UqIENocm9tZUNsaWVudDo6Y3Jl
YXRlV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2Fk
UmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGNvcmVGZWF0dXJlcywgY29uc3QgS1VSTCYg
dGFyZ2V0VVJMKQogewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSAwOwogCkluZGV4OiBX
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgJKHJldmlzaW9uIDYy
ODk4KQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAkod29y
a2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZm9jdXNlZE5vZGVDaGFuZ2VkKFdlYkNvcmU6Ok5vZGUqKTsKIAotICAg
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2UqIGNyZWF0ZVdpbmRvdyhXZWJDb3JlOjpGcmFtZSos
IGNvbnN0IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dG
ZWF0dXJlcyYpOworICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2UqIGNyZWF0ZVdpbmRvdyhX
ZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIHNob3coKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuTW9kYWwo
KTsKSW5kZXg6IFdlYktpdC9oYWlrdS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2hh
aWt1L0NoYW5nZUxvZwkocmV2aXNpb24gNjI5NTYpCisrKyBXZWJLaXQvaGFpa3UvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDctMDkgIEpvaG5ueSBEaW5n
ICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0
NDEKKyAgICAgICAgQWRkIGEgdGFyZ2V0IFVSTCBwYXJhbWV0ZXIgdG8gdGhlIENocm9tZUNsaWVu
dDo6Y3JlYXRlV2luZG93IG1ldGhvZAorICAgICAgICB0byBsZXQgY2xpZW50IEFQSXMga25vdyB3
aGljaCBVUkwgYSBuZXcgd2luZG93IHdpbGwgc3RhcnQgd2l0aCBvbiBoYWlrdSBwb3J0LgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaDoKKwogMjAxMC0wNi0xNCAgSWx5YSBUaWto
b25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2
ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRIYWlrdS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEhhaWt1LmNwcAkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJLaXQvaGFpa3UvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMs
NyArMTAzLDcgQEAgdm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6Zm9jdXNlZE5vZGVDaGFuZwogewog
fQogCi1QYWdlKiBDaHJvbWVDbGllbnRIYWlrdTo6Y3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3Qg
RnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJikKK1BhZ2Uq
IENocm9tZUNsaWVudEhhaWt1OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmLCBjb25zdCBLVVJMJiB0YXJn
ZXRVUkwpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKSW5kZXg6IFdl
YktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCShyZXZp
c2lvbiA2Mjg5OCkKKysrIFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRI
YWlrdS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICB2b2lkIGZvY3VzZWROb2RlQ2hhbmdlZChOb2RlKik7CiAKLSAgICAgICAg
UGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJik7CisgICAgICAgIFBhZ2UqIGNyZWF0ZVdpbmRvdyhG
cmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0
dXJlcyYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKICAgICAgICAgUGFnZSogY3JlYXRlTW9kYWxE
aWFsb2coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0Jik7CiAgICAgICAgIHZvaWQgc2hv
dygpOwogCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
bWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNjI5NTYpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTA3LTA5ICBKb2hubnkgRGluZyAg
PGpuZEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNDQx
CisgICAgICAgIEFkZCBhIHRhcmdldCBVUkwgcGFyYW1ldGVyIHRvIHRoZSBDaHJvbWVDbGllbnQ6
OmNyZWF0ZVdpbmRvdyBtZXRob2QKKyAgICAgICAgdG8gbGV0IGNsaWVudCBBUElzIGtub3cgd2hp
Y2ggVVJMIGEgbmV3IHdpbmRvdyB3aWxsIHN0YXJ0IHdpdGggb24gbWFjIHBvcnQuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZVdpbmRvdyk6CisgICAgICAgICogV2ViS2l0Lm9yZGVyOiBVcGRhdGUgdGhlIG1ldGhvZCBz
aWduYXR1cmUgb2YgV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cKKwogMjAxMC0wNy0wOCAg
QWFyb24gQm9vZG1hbiAgPGFhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBU
aW1vdGh5IEhhdGNoZXIuCkluZGV4OiBXZWJLaXQvbWFjL1dlYktpdC5vcmRlcgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvbWFjL1dlYktpdC5vcmRlcgkocmV2aXNpb24gNjI4OTgpCisrKyBXZWJLaXQv
bWFjL1dlYktpdC5vcmRlcgkod29ya2luZyBjb3B5KQpAQCAtMTczNCw3ICsxNzM0LDcgQEAgX19a
TjdXZWJDb3JlMThUZXh0Q2hlY2tpbmdSZXN1bHREMkV2CiBfV0tTZXRQYXR0ZXJuUGhhc2VJblVz
ZXJTcGFjZQogX19aTjE1V2ViQ2hyb21lQ2xpZW50MTN3aWxsUG9wVXBNZW51RVA2TlNNZW51CiBf
V0tQb3B1cE1lbnUKLV9fWk4xNVdlYkNocm9tZUNsaWVudDEyY3JlYXRlV2luZG93RVBON1dlYkNv
cmU1RnJhbWVFUktOUzBfMTZGcmFtZUxvYWRSZXF1ZXN0RVJLTlMwXzE0V2luZG93RmVhdHVyZXNF
CitfX1pOMTVXZWJDaHJvbWVDbGllbnQxMmNyZWF0ZVdpbmRvd0VQTjdXZWJDb3JlNUZyYW1lRVJL
TlMwXzE2RnJhbWVMb2FkUmVxdWVzdEVSS05TMF8xNFdpbmRvd0ZlYXR1cmVzRVJLTlMwXzRLVVJM
RQogX19aMTRDYWxsVUlEZWxlZ2F0ZVA3V2ViVmlld1AxM29iamNfc2VsZWN0b3JQMTFvYmpjX29i
amVjdFM0XwogX19aTjZXZWJLaXQyNU5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIxNWRpZENyZWF0
ZVdpbmRvd0V2CiBfX1pOMTVXZWJDaHJvbWVDbGllbnQxOHNldFRvb2xiYXJzVmlzaWJsZUViCklu
ZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlz
aW9uIDYyODk4KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgZm9jdXNlZE5vZGVDaGFuZ2VkKFdlYkNvcmU6Ok5vZGUqKTsKIAotICAgIHZpcnR1YWwg
V2ViQ29yZTo6UGFnZSogY3JlYXRlV2luZG93KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29y
ZTo6RnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJik7Cisg
ICAgdmlydHVhbCBXZWJDb3JlOjpQYWdlKiBjcmVhdGVXaW5kb3coV2ViQ29yZTo6RnJhbWUqLCBj
b25zdCBXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVh
dHVyZXMmLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIHNob3coKTsK
IAogICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpOwpJbmRleDogV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0JKHJldmlzaW9uIDYyODk4KQorKysgV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9jdXNlZE5vZGVDaGFu
Z2VkCiB7CiB9CiAKLVBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiBm
cmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVy
ZXMmIGZlYXR1cmVzKQorUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUq
IGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0
dXJlcyYgZmVhdHVyZXMsIGNvbnN0IEtVUkwmIHRhcmdldFVSTCkKIHsKICAgICBOU1VSTFJlcXVl
c3QgKlVSTFJlcXVlc3QgPSBuaWw7CiAgICAgaWYgKCFyZXF1ZXN0LmlzRW1wdHkoKSkKSW5kZXg6
IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjI5NTYpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTAtMDctMDkgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAgICAgICAgQWRkIGEg
dGFyZ2V0IFVSTCBwYXJhbWV0ZXIgdG8gdGhlIENocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93IG1l
dGhvZAorICAgICAgICB0byBsZXQgY2xpZW50IEFQSXMga25vdyB3aGljaCBVUkwgYSBuZXcgd2lu
ZG93IHdpbGwgc3RhcnQgd2l0aCBvbiBxdCBwb3J0LgorCisgICAgICAgICogQXBpL3F3ZWJwYWdl
LmNwcDoKKyAgICAgICAgKG9wZW5OZXdXaW5kb3cpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojpj
cmVhdGVXaW5kb3cpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6
CisKIDIwMTAtMDctMDkgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3
ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkocmV2
aXNpb24gNjI4OTgpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjE1Niw3ICsyMTU2LDcgQEAgc3RhdGljIHZvaWQgb3Blbk5ld1dpbmRvdyhjb25zdCBR
VXJsJiB1cgogICAgIGlmIChQYWdlKiBvbGRQYWdlID0gZnJhbWUtPnBhZ2UoKSkgewogICAgICAg
ICBXaW5kb3dGZWF0dXJlcyBmZWF0dXJlczsKICAgICAgICAgaWYgKFBhZ2UqIG5ld1BhZ2UgPSBv
bGRQYWdlLT5jaHJvbWUoKS0+Y3JlYXRlV2luZG93KGZyYW1lLAotICAgICAgICAgICAgICAgIGZy
YW1lTG9hZFJlcXVlc3QodXJsLCBmcmFtZSksIGZlYXR1cmVzKSkKKyAgICAgICAgICAgICAgICBm
cmFtZUxvYWRSZXF1ZXN0KHVybCwgZnJhbWUpLCBmZWF0dXJlcywgdXJsKSkKICAgICAgICAgICAg
IG5ld1BhZ2UtPmNocm9tZSgpLT5zaG93KCk7CiAgICAgfQogfQpJbmRleDogV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIENocm9tZUNsaWVudFF0Ojpmb2N1c2VkTm9kZUNoYW5n
ZWQoCiB9CiAKIAotUGFnZSogQ2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNv
bnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0
dXJlcykKK1BhZ2UqIENocm9tZUNsaWVudFF0OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBG
cmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMs
IGNvbnN0IEtVUkwmIHRhcmdldFVSTCkKIHsKICAgICBRV2ViUGFnZSogbmV3UGFnZSA9IG1fd2Vi
UGFnZS0+Y3JlYXRlV2luZG93KGZlYXR1cmVzLmRpYWxvZyA/IFFXZWJQYWdlOjpXZWJNb2RhbERp
YWxvZyA6IFFXZWJQYWdlOjpXZWJCcm93c2VyV2luZG93KTsKICAgICBpZiAoIW5ld1BhZ2UpCklu
ZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAkocmV2aXNpb24g
NjI4OTgpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAkod29y
a2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIGZvY3VzZWROb2RlQ2hhbmdlZChOb2RlKik7CiAKLSAgICAgICAgdmly
dHVhbCBQYWdlKiBjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0Jiwg
Y29uc3QgV2luZG93RmVhdHVyZXMmKTsKKyAgICAgICAgdmlydHVhbCBQYWdlKiBjcmVhdGVXaW5k
b3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMm
LCBjb25zdCBLVVJMJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzaG93KCk7CiAKICAgICAgICAg
dmlydHVhbCBib29sIGNhblJ1bk1vZGFsKCk7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNjI5NTYpCisrKyBX
ZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEw
LTA3LTA5ICBKb2hubnkgRGluZyAgPGpuZEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQxNDQxCisgICAgICAgIEFkZCBhIHRhcmdldCBVUkwgcGFyYW1ldGVy
IHRvIHRoZSBDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyBtZXRob2QKKyAgICAgICAgdG8gbGV0
IGNsaWVudCBBUElzIGtub3cgd2hpY2ggVVJMIGEgbmV3IHdpbmRvdyB3aWxsIHN0YXJ0IHdpdGgg
b24gd2luIHBvcnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorCiAyMDEwLTA3LTA4ICBBYXJvbiBC
b29kbWFuICA8YWFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkg
SGF0Y2hlci4KSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAJKHJldmlzaW9uIDYyODk4KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNyArMTkwLDcgQEAgc3Rh
dGljIENPTVB0cjxJUHJvcGVydHlCYWc+IGNyZWF0ZVdpbmRvdwogICAgIHJldHVybiBDT01QdHI8
SVByb3BlcnR5QmFnPihBZG9wdENPTSwgQ09NUHJvcGVydHlCYWc8Q09NVmFyaWFudD46OmFkb3B0
KG1hcCkpOwogfQogCi1QYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSos
IGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFdpbmRvd0Zl
YXR1cmVzJiBmZWF0dXJlcykKK1BhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZy
YW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgV2lu
ZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBLVVJMJiB0YXJnZXRVUkwpCiB7CiAgICAgQ09N
UHRyPElXZWJVSURlbGVnYXRlPiBkZWxlZ2F0ZSA9IHVpRGVsZWdhdGUoKTsKICAgICBpZiAoIWRl
bGVnYXRlKQpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCShyZXZpc2lvbiA2Mjg5OCkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGZvY3VzZWROb2RlQ2hhbmdlZChXZWJDb3JlOjpOb2RlKik7CiAKLSAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2UqIGNyZWF0ZVdpbmRvdyhXZWJDb3JlOjpGcmFtZSosIGNv
bnN0IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0
dXJlcyYpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFnZSogY3JlYXRlV2luZG93KFdlYkNvcmU6
OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OldpbmRvd0ZlYXR1cmVzJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogICAgIHZpcnR1YWwgdm9p
ZCBzaG93KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuTW9kYWwoKTsKSW5kZXg6IFdlYktp
dC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNp
b24gNjI5NTYpCisrKyBXZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTAtMDctMDkgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAgICAgICAgQWRkIGEgdGFyZ2V0
IFVSTCBwYXJhbWV0ZXIgdG8gdGhlIENocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93IG1ldGhvZAor
ICAgICAgICB0byBsZXQgY2xpZW50IEFQSXMga25vdyB3aGljaCBVUkwgYSBuZXcgd2luZG93IHdp
bGwgc3RhcnQgd2l0aCBvbiB3eCBwb3J0LgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJv
bWVDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6Y3JlYXRl
V2luZG93KToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6CisKIDIw
MTAtMDctMDcgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAg
ICAgICAgW3d4XSBCdWlsZCBmaXggYWZ0ZXIgY2hhbmdlIGluIFBhZ2UgY29uc3RydWN0b3IuCklu
ZGV4OiBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCShyZXZpc2lv
biA2Mjg5OCkKKysrIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50V3g6OmZv
Y3VzZWROb2RlQ2hhbmdlZCgKIHsKIH0KIAotUGFnZSogQ2hyb21lQ2xpZW50V3g6OmNyZWF0ZVdp
bmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdpbmRv
d0ZlYXR1cmVzJiBmZWF0dXJlcykKK1BhZ2UqIENocm9tZUNsaWVudFd4OjpjcmVhdGVXaW5kb3co
RnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0
dXJlcyYgZmVhdHVyZXMsIGNvbnN0IEtVUkwmIHRhcmdldFVSTCkKIHsKICAgICBQYWdlKiBteVBh
Z2UgPSAwOwogICAgIHd4V2ViVmlld05ld1dpbmRvd0V2ZW50IHdrRXZlbnQobV93ZWJWaWV3KTsK
SW5kZXg6IFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaAkocmV2aXNpb24g
NjI4OTgpCisrKyBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBm
b2N1c2VkTm9kZUNoYW5nZWQoTm9kZSopOwogCi0gICAgdmlydHVhbCBQYWdlKiBjcmVhdGVXaW5k
b3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMm
KTsKKyAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9h
ZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IEtVUkwmKTsKICAgICB2aXJ0
dWFsIFBhZ2UqIGNyZWF0ZU1vZGFsRGlhbG9nKEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVz
dCYpOwogICAgIHZpcnR1YWwgdm9pZCBzaG93KCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73983</attachid>
            <date>2010-11-16 05:01:53 -0800</date>
            <delta_ts>2010-11-16 20:23:20 -0800</delta_ts>
            <desc>Patch V3</desc>
            <filename>patch41441.txt</filename>
            <type>text/plain</type>
            <size>21236</size>
            <attacher name="Xianzhu Wang">phnixwxz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjA1MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMTEtMTUgIFhpYW56aHUgV2FuZyA8cGhuaXh3eHpAZ21haWwu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTQ0MQorICAgICAgICBjcmVh
dGVXaW5kb3cgbWV0aG9kIHNob3VsZCBvbmx5IGRvIHdpbmRvdy1jcmVhdGluZyB3aXRob3V0IFVS
TCBuYXZpZ2F0aW9uLgorICAgICAgICBMZXQgY2xpZW50IEFQSXMga25vdyB3aGljaCBVUkwgYSBu
ZXcgd2luZG93IHdpbGwgc3RhcnQgd2l0aAorCisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9C
aW5kaW5nRE9NV2luZG93Lmg6CisgICAgICAgIChXZWJDb3JlOjo6OmNyZWF0ZVdpbmRvdyk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlV2luZG93KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2luZG93KToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRN
ZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuTmV3V2luZG93KToKKwor
CiAyMDEwLTExLTE1ICBBZGVsZSBQZXRlcnNvbiAgPGFkZWxlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvZ2VuZXJp
Yy9CaW5kaW5nRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9nZW5l
cmljL0JpbmRpbmdET01XaW5kb3cuaAkocmV2aXNpb24gNzIwNTMpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL2dlbmVyaWMvQmluZGluZ0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4
Niw4IEBAIEZyYW1lKiBCaW5kaW5nRE9NV2luZG93PEJpbmRpbmc+OjpjcmVhdGUKICAgICBBU1NF
UlQoY2FsbGluZ0ZyYW1lKTsKICAgICBBU1NFUlQoZW50ZXJlZEZyYW1lKTsKIAotICAgIFJlc291
cmNlUmVxdWVzdCByZXF1ZXN0OworICAgIEtVUkwgY29tcGxldGVkVXJsID0gdXJsLmlzRW1wdHko
KSA/IEtVUkwoKSA6IGNvbXBsZXRlVVJMKHN0YXRlLCB1cmwpOworICAgIFJlc291cmNlUmVxdWVz
dCByZXF1ZXN0KGNvbXBsZXRlZFVybCk7CiAKICAgICAvLyBGb3Igd2hhdGV2ZXIgcmVhc29uLCBG
aXJlZm94IHVzZXMgdGhlIGVudGVyZWQgZnJhbWUgdG8gZGV0ZXJtaW5lCiAgICAgLy8gdGhlIG91
dGdvaW5nUmVmZXJyZXIuICBXZSByZXBsaWNhdGUgdGhhdCBiZWhhdmlvciBoZXJlLgpAQCAtOTUs
MTUgKzk2LDYgQEAgRnJhbWUqIEJpbmRpbmdET01XaW5kb3c8QmluZGluZz46OmNyZWF0ZQogICAg
IEZyYW1lTG9hZGVyOjphZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdCwgZW50ZXJlZEZyYW1l
LT5sb2FkZXIoKS0+b3V0Z29pbmdPcmlnaW4oKSk7CiAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFt
ZVJlcXVlc3QocmVxdWVzdCwgZnJhbWVOYW1lKTsKIAotICAgIC8vIEZJWE1FOiBJdCdzIG11Y2gg
YmV0dGVyIGZvciBjbGllbnQgQVBJIGlmIGEgbmV3IHdpbmRvdyBzdGFydHMgd2l0aCBhIFVSTCwK
LSAgICAvLyBoZXJlIHdoZXJlIHdlIGtub3cgd2hhdCBVUkwgd2UgYXJlIGdvaW5nIHRvIG9wZW4u
IFVuZm9ydHVuYXRlbHksIHRoaXMKLSAgICAvLyBjb2RlIHBhc3NlcyB0aGUgZW1wdHkgc3RyaW5n
IGZvciB0aGUgVVJMLCBidXQgdGhlcmUncyBhIHJlYXNvbiBmb3IgdGhhdC4KLSAgICAvLyBCZWZv
cmUgbG9hZGluZyB3ZSBoYXZlIHRvIHNldCB1cCB0aGUgb3BlbmVyLCBvcGVuZWRCeURPTSwKLSAg
ICAvLyBhbmQgZGlhbG9nQXJndW1lbnRzIHZhbHVlcy4gQWxzbywgdG8gZGVjaWRlIHdoZXRoZXIg
dG8gdXNlIHRoZSBVUkwKLSAgICAvLyB3ZSBjdXJyZW50bHkgZG8gYW4gYWxsb3dzQWNjZXNzRnJv
bSBjYWxsIHVzaW5nIHRoZSB3aW5kb3cgd2UgY3JlYXRlLAotICAgIC8vIHdoaWNoIGNhbid0IGJl
IGRvbmUgYmVmb3JlIGNyZWF0aW5nIGl0LiBXZSdkIGhhdmUgdG8gcmVzb2x2ZSBhbGwgdGhvc2UK
LSAgICAvLyBpc3N1ZXMgdG8gcGFzcyB0aGUgVVJMIGluc3RlYWQgb2YgIiIuCi0KICAgICBib29s
IGNyZWF0ZWQ7CiAgICAgLy8gV2UgcGFzcyB0aGUgb3BlbmVyIGZyYW1lIGZvciB0aGUgbG9va3Vw
RnJhbWUgaW4gY2FzZSB0aGUgYWN0aXZlIGZyYW1lIGlzIGRpZmZlcmVudCBmcm9tCiAgICAgLy8g
dGhlIG9wZW5lciBmcmFtZSwgYW5kIHRoZSBuYW1lIHJlZmVyZW5jZXMgYSBmcmFtZSByZWxhdGl2
ZSB0byB0aGUgb3BlbmVyIGZyYW1lLgpAQCAtMTE3LDggKzEwOSw2IEBAIEZyYW1lKiBCaW5kaW5n
RE9NV2luZG93PEJpbmRpbmc+OjpjcmVhdGUKICAgICBCaW5kaW5nOjpET01XaW5kb3c6OnN0b3Jl
RGlhbG9nQXJncyhzdGF0ZSwgbmV3RnJhbWUsIGRpYWxvZ0FyZ3MpOwogCiAgICAgaWYgKCFwcm90
b2NvbElzSmF2YVNjcmlwdCh1cmwpIHx8IEJpbmRpbmdTZWN1cml0eTxCaW5kaW5nPjo6Y2FuQWNj
ZXNzRnJhbWUoc3RhdGUsIG5ld0ZyYW1lLCB0cnVlKSkgewotICAgICAgICBLVVJMIGNvbXBsZXRl
ZFVybCA9Ci0gICAgICAgICAgICB1cmwuaXNFbXB0eSgpID8gS1VSTChQYXJzZWRVUkxTdHJpbmcs
ICIiKSA6IGNvbXBsZXRlVVJMKHN0YXRlLCB1cmwpOwogICAgICAgICBpZiAoY3JlYXRlZCkKICAg
ICAgICAgICAgIG5ld0ZyYW1lLT5sb2FkZXIoKS0+Y2hhbmdlTG9jYXRpb24oY29tcGxldGVkVXJs
LCByZWZlcnJlciwgZmFsc2UsIGZhbHNlKTsKICAgICAgICAgZWxzZSBpZiAoIXVybC5pc0VtcHR5
KCkpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2
aXNpb24gNzIwNTMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjY2LDcgKzY2Niw4IEBAIHN0YXRpYyBGcmFtZSogY3JlYXRl
V2luZG93KEV4ZWNTdGF0ZSogZXgKICAgICBBU1NFUlQobGV4aWNhbEZyYW1lKTsKICAgICBBU1NF
UlQoZHluYW1pY0ZyYW1lKTsKIAotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0OworICAgIEtV
UkwgY29tcGxldGVkVVJMID0gdXJsLmlzRW1wdHkoKSA/IEtVUkwoKSA6IGNvbXBsZXRlVVJMKGV4
ZWMsIHVybCk7CisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoY29tcGxldGVkVVJMKTsKIAog
ICAgIC8vIEZvciB3aGF0ZXZlciByZWFzb24sIEZpcmVmb3ggdXNlcyB0aGUgZHluYW1pY0dsb2Jh
bE9iamVjdCB0byBkZXRlcm1pbmUKICAgICAvLyB0aGUgb3V0Z29pbmdSZWZlcnJlci4gIFdlIHJl
cGxpY2F0ZSB0aGF0IGJlaGF2aW9yIGhlcmUuCkBAIC02NzUsMTMgKzY3Niw2IEBAIHN0YXRpYyBG
cmFtZSogY3JlYXRlV2luZG93KEV4ZWNTdGF0ZSogZXgKICAgICBGcmFtZUxvYWRlcjo6YWRkSFRU
UE9yaWdpbklmTmVlZGVkKHJlcXVlc3QsIGR5bmFtaWNGcmFtZS0+bG9hZGVyKCktPm91dGdvaW5n
T3JpZ2luKCkpOwogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVSZXF1ZXN0KHJlcXVlc3QsIGZy
YW1lTmFtZSk7CiAKLSAgICAvLyBGSVhNRTogSXQncyBtdWNoIGJldHRlciBmb3IgY2xpZW50IEFQ
SSBpZiBhIG5ldyB3aW5kb3cgc3RhcnRzIHdpdGggYSBVUkwsIGhlcmUgd2hlcmUgd2UKLSAgICAv
LyBrbm93IHdoYXQgVVJMIHdlIGFyZSBnb2luZyB0byBvcGVuLiBVbmZvcnR1bmF0ZWx5LCB0aGlz
IGNvZGUgcGFzc2VzIHRoZSBlbXB0eSBzdHJpbmcKLSAgICAvLyBmb3IgdGhlIFVSTCwgYnV0IHRo
ZXJlJ3MgYSByZWFzb24gZm9yIHRoYXQuIEJlZm9yZSBsb2FkaW5nIHdlIGhhdmUgdG8gc2V0IHVw
IHRoZSBvcGVuZXIsCi0gICAgLy8gb3BlbmVkQnlET00sIGFuZCBkaWFsb2dBcmd1bWVudHMgdmFs
dWVzLiBBbHNvLCB0byBkZWNpZGUgd2hldGhlciB0byB1c2UgdGhlIFVSTCB3ZSBjdXJyZW50bHkK
LSAgICAvLyBkbyBhbiBhbGxvd3NBY2Nlc3NGcm9tIGNhbGwgdXNpbmcgdGhlIHdpbmRvdyB3ZSBj
cmVhdGUsIHdoaWNoIGNhbid0IGJlIGRvbmUgYmVmb3JlIGNyZWF0aW5nIGl0LgotICAgIC8vIFdl
J2QgaGF2ZSB0byByZXNvbHZlIGFsbCB0aG9zZSBpc3N1ZXMgdG8gcGFzcyB0aGUgVVJMIGluc3Rl
YWQgb2YgIiIuCi0KICAgICBib29sIGNyZWF0ZWQ7CiAgICAgLy8gV2UgcGFzcyB0aGUgb3BlbmVy
IGZyYW1lIGZvciB0aGUgbG9va3VwRnJhbWUgaW4gY2FzZSB0aGUgYWN0aXZlIGZyYW1lIGlzIGRp
ZmZlcmVudCBmcm9tCiAgICAgLy8gdGhlIG9wZW5lciBmcmFtZSwgYW5kIHRoZSBuYW1lIHJlZmVy
ZW5jZXMgYSBmcmFtZSByZWxhdGl2ZSB0byB0aGUgb3BlbmVyIGZyYW1lLgpAQCAtNjk5LDcgKzY5
Myw2IEBAIHN0YXRpYyBGcmFtZSogY3JlYXRlV2luZG93KEV4ZWNTdGF0ZSogZXgKICAgICAgICAg
bmV3V2luZG93LT5wdXREaXJlY3QoSWRlbnRpZmllcihleGVjLCAiZGlhbG9nQXJndW1lbnRzIiks
IGRpYWxvZ0FyZ3MpOwogCiAgICAgaWYgKCFwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpIHx8IG5l
d1dpbmRvdy0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkgewotICAgICAgICBLVVJMIGNvbXBsZXRl
ZFVSTCA9IHVybC5pc0VtcHR5KCkgPyBLVVJMKFBhcnNlZFVSTFN0cmluZywgIiIpIDogY29tcGxl
dGVVUkwoZXhlYywgdXJsKTsKICAgICAgICAgaWYgKGNyZWF0ZWQpCiAgICAgICAgICAgICBuZXdG
cmFtZS0+bG9hZGVyKCktPmNoYW5nZUxvY2F0aW9uKGNvbXBsZXRlZFVSTCwgcmVmZXJyZXIsIGZh
bHNlLCBmYWxzZSk7CiAgICAgICAgIGVsc2UgaWYgKCF1cmwuaXNFbXB0eSgpKQpJbmRleDogV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNzIwNTMpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0NjAsOCArMzQ2MCw2IEBAIEZyYW1lKiBj
cmVhdGVXaW5kb3coRnJhbWUqIG9wZW5lckZyYW1lLCAKICAgICBpZiAoIXJlcXVlc3QuZnJhbWVO
YW1lKCkuaXNFbXB0eSgpICYmIHJlcXVlc3QuZnJhbWVOYW1lKCkgIT0gIl9ibGFuayIpIHsKICAg
ICAgICAgRnJhbWUqIGZyYW1lID0gbG9va3VwRnJhbWUtPnRyZWUoKS0+ZmluZChyZXF1ZXN0LmZy
YW1lTmFtZSgpKTsKICAgICAgICAgaWYgKGZyYW1lICYmIG9wZW5lckZyYW1lLT5sb2FkZXIoKS0+
c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkgewotICAgICAgICAgICAgaWYgKCFyZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBmcmFt
ZS0+bG9hZGVyKCktPmxvYWRGcmFtZVJlcXVlc3QocmVxdWVzdCwgZmFsc2UsIGZhbHNlLCAwLCAw
LCBTZW5kUmVmZXJyZXIpOwogICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFn
ZSgpKQogICAgICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5mb2N1cygpOwogICAgICAgICAg
ICAgY3JlYXRlZCA9IGZhbHNlOwpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gNzIwNTMp
CisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2
ICsxMDAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEZyYW1lIHdhbnRzIHRv
IGNyZWF0ZSB0aGUgbmV3IFBhZ2UuICBBbHNvLCB0aGUgbmV3bHkgY3JlYXRlZCB3aW5kb3cKICAg
ICAgICAgLy8gc2hvdWxkIG5vdCBiZSBzaG93biB0byB0aGUgdXNlciB1bnRpbCB0aGUgQ2hyb21l
Q2xpZW50IG9mIHRoZSBuZXdseQogICAgICAgICAvLyBjcmVhdGVkIFBhZ2UgaGFzIGl0cyBzaG93
IG1ldGhvZCBjYWxsZWQuCisgICAgICAgIC8vIFRoZSBGcmFtZUxvYWRSZXF1ZXN0IHBhcmFtZXRl
ciBpcyBvbmx5IGZvciBDaHJvbWVDbGllbnQgdG8gY2hlY2sgaWYgdGhlCisgICAgICAgIC8vIHJl
cXVlc3QgY291bGQgYmUgZnVsZmlsbGVkLiAgVGhlIENocm9tZUNsaWVudCBzaG91bGQgbm90IGxv
YWQgdGhlIHJlcXVlc3QuCiAgICAgICAgIHZpcnR1YWwgUGFnZSogY3JlYXRlV2luZG93KEZyYW1l
KiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiwgY29uc3Qg
TmF2aWdhdGlvbkFjdGlvbiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNob3coKSA9IDA7
CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3
MjA1MykKKysrIFdlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDAsOSArMTQwLDExIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpz
aG93Q29udGV4dE0KIHN0YXRpYyB2b2lkIG9wZW5OZXdXaW5kb3coY29uc3QgS1VSTCYgdXJsVG9M
b2FkLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKFBhZ2UqIG9sZFBhZ2UgPSBmcmFtZS0+cGFn
ZSgpKSB7Ci0gICAgICAgIFdpbmRvd0ZlYXR1cmVzIGZlYXR1cmVzOwotICAgICAgICBpZiAoUGFn
ZSogbmV3UGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLT5jcmVhdGVXaW5kb3coZnJhbWUsIEZyYW1l
TG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHVybFRvTG9hZCwgZnJhbWUtPmxvYWRlcigpLT5v
dXRnb2luZ1JlZmVycmVyKCkpKSwgZmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb24oKSkpCisgICAg
ICAgIEZyYW1lTG9hZFJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QodXJsVG9Mb2FkLCBm
cmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSkpOworICAgICAgICBpZiAoUGFnZSog
bmV3UGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLT5jcmVhdGVXaW5kb3coZnJhbWUsIHJlcXVlc3Qs
IFdpbmRvd0ZlYXR1cmVzKCksIE5hdmlnYXRpb25BY3Rpb24oKSkpIHsKKyAgICAgICAgICAgIG5l
d1BhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+bG9hZEZyYW1lUmVxdWVzdChyZXF1ZXN0LCBm
YWxzZSwgZmFsc2UsIDAsIDAsIFNlbmRSZWZlcnJlcik7ICAgCiAgICAgICAgICAgICBuZXdQYWdl
LT5jaHJvbWUoKS0+c2hvdygpOworICAgICAgICB9CiAgICAgfQogfQogCkluZGV4OiBXZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDcyMDUzKQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTExLTE1ICBYaWFuemh1IFdhbmcgIDxwaG5p
eHd4ekBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNDQxCisg
ICAgICAgIGNyZWF0ZVdpbmRvdyBtZXRob2Qgc2hvdWxkIG9ubHkgZG8gd2luZG93LWNyZWF0aW5n
IHdpdGhvdXQgVVJMIG5hdmlnYXRpb24uCisgICAgICAgIFBhc3MgVVJMIHJlcXVlc3QgdG8gY3Jl
YXRlVmlldy4KKworICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdDbGllbnQ6OmNyZWF0ZVZpZXcpOgorICAgICAgICAqIHNyYy9DaHJvbWVD
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRl
V2luZG93KToKKwogMjAxMC0xMS0xNSAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAkocmV2aXNpb24gNzIwNTMpCisrKyBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQs
MTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViVmlldyogY3JlYXRlVmlldyhXZWJGcmFtZSog
Y3JlYXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViV2luZG93
RmVhdHVyZXMmIGZlYXR1cmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBXZWJTdHJpbmcmIG5hbWUpIHsgcmV0dXJuIDA7IH0KKyAgICAvLyBTb21ldGltZXMgaXQncyBt
dWNoIGJldHRlciBmb3IgY2xpZW50IEFQSSBpZiBhIG5ldyB3aW5kb3cgc3RhcnRzIHdpdGggYQor
ICAgIC8vIFVSTCwgaGVyZSB3aGVyZSB3ZSBrbm93IHdoYXQgVVJMIHdlIGFyZSBnb2luZyB0byBv
cGVuLgorICAgIC8vIFRoZSBvbGQgY3JlYXRlVmlldygpIHdpbGwgYmUgcmVtb3ZlZCBvbmNlIHRo
ZSBjaGFuZ2UgYXQgQ2hyb21pdW0gc2lkZQorICAgIC8vIGlzIGNvbW1pdHRlZC4KKyAgICB2aXJ0
dWFsIFdlYlZpZXcqIGNyZWF0ZVZpZXcoV2ViRnJhbWUqIGNyZWF0b3IsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYldpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJVUkxSZXF1ZXN0JiByZXF1ZXN0
KSB7CisgICAgICAgICh2b2lkKXJlcXVlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgIC8vIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIHRvIGNhbGwgdGhlIG9sZCB2ZXJz
aW9uIG9mIGNyZWF0ZVZpZXcuCisgICAgICAgIHJldHVybiBjcmVhdGVWaWV3KGNyZWF0b3IsIGZl
YXR1cmVzLCBuYW1lKTsgCisgICAgfQogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IFdlYlBvcHVwTWVu
dS4gIEluIHRoZSBzZWNvbmQgZm9ybSwgdGhlIGNsaWVudCBpcwogICAgIC8vIHJlc3BvbnNpYmxl
IGZvciByZW5kZXJpbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBwb3B1cCBtZW51LgpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA3MjA1MykKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2MiwxOCArMjYyLDE0IEBAIFBhZ2UqIENocm9tZUNsaWVudEltcGw6OmNyZWF0ZVdpbmRv
dygKICAgICBpZiAoIW1fd2ViVmlldy0+Y2xpZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogCisg
ICAgV3JhcHBlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0OworICAgIGlmICghci5yZXNvdXJjZVJl
cXVlc3QoKS5pc0VtcHR5KCkpCisgICAgICAgIHJlcXVlc3QuYmluZChyLnJlc291cmNlUmVxdWVz
dCgpKTsKICAgICBXZWJWaWV3SW1wbCogbmV3VmlldyA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBs
Kj4oCi0gICAgICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPmNyZWF0ZVZpZXcoV2ViRnJhbWVJbXBs
Ojpmcm9tRnJhbWUoZnJhbWUpLCBmZWF0dXJlcywgci5mcmFtZU5hbWUoKSkpOworICAgICAgICBt
X3dlYlZpZXctPmNsaWVudCgpLT5jcmVhdGVWaWV3KFdlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGZy
YW1lKSwgZmVhdHVyZXMsIHIuZnJhbWVOYW1lKCksIHJlcXVlc3QpKTsKICAgICBpZiAoIW5ld1Zp
ZXcpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgLy8gVGhlIHJlcXVlc3QgaXMgZW1wdHkgd2hl
biB3ZSBhcmUganVzdCBiZWluZyBhc2tlZCB0byBvcGVuIGEgYmxhbmsgd2luZG93LgotICAgIC8v
IFRoaXMgY29ycmVzcG9uZHMgdG8gd2luZG93Lm9wZW4oIiIpLCBmb3IgZXhhbXBsZS4KLSAgICBp
ZiAoIXIucmVzb3VyY2VSZXF1ZXN0KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFdyYXBwZWRSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdChyLnJlc291cmNlUmVxdWVzdCgpKTsKLSAgICAgICAgbmV3Vmll
dy0+bWFpbkZyYW1lKCktPmxvYWRSZXF1ZXN0KHJlcXVlc3QpOwotICAgIH0KLQogICAgIHJldHVy
biBuZXdWaWV3LT5wYWdlKCk7CiB9CiAKSW5kZXg6IFdlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MjA1MykKKysrIFdlYktp
dC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTEt
MTUgIFhpYW56aHUgV2FuZyA8cGhuaXh3eHpAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MTQ0MQorICAgICAgICBjcmVhdGVXaW5kb3cgbWV0aG9kIHNob3VsZCBv
bmx5IGRvIHdpbmRvdy1jcmVhdGluZyB3aXRob3V0IFVSTCBuYXZpZ2F0aW9uCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50RWZsOjpjcmVhdGVXaW5kb3cpOgorCiAyMDEwLTExLTE0ICBSeXVhbiBDaG9p
ICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4g
Um9iaW5zb24uCkluZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRFZmwuY3BwCShyZXZpc2lvbiA3MjA1MykKKysrIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDkgKzE1NCw2IEBAIFBh
Z2UqIENocm9tZUNsaWVudEVmbDo6Y3JlYXRlV2luZG93KEZyYW0KICAgICBpZiAoIW5ld1ZpZXcp
CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKCFmcmFtZUxvYWRSZXF1ZXN0LmlzRW1wdHko
KSkKLSAgICAgICAgZXdrX3ZpZXdfdXJpX3NldChuZXdWaWV3LCBmcmFtZUxvYWRSZXF1ZXN0LnJl
c291cmNlUmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotCiAgICAgcmV0
dXJuIGV3a192aWV3X2NvcmVfcGFnZV9nZXQobmV3Vmlldyk7CiB9CiAKSW5kZXg6IFdlYktpdC9n
dGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lv
biA3MjA1MykKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTAtMTEtMTUgIFhpYW56aHUgV2FuZyA8cGhuaXh3eHpAZ21haWwuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTQ0MQorICAgICAgICBjcmVhdGVXaW5k
b3cgbWV0aG9kIHNob3VsZCBvbmx5IGRvIHdpbmRvdy1jcmVhdGluZyB3aXRob3V0IFVSTCBuYXZp
Z2F0aW9uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisKIDIwMTAtMTEt
MTEgIEpvb25lIEh1ciAgPGpvb25lQGtsZHAub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFu
dG9uaW8gR29tZXMuCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwCShyZXZpc2lvbiA3MjA1MykKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDkgKzE1Miw2IEBA
IFBhZ2UqIENocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiAKICAgICBnX29iamVjdF9z
ZXQod2ViVmlldywgIndpbmRvdy1mZWF0dXJlcyIsIHdlYldpbmRvd0ZlYXR1cmVzLCBOVUxMKTsK
ICAgICBnX29iamVjdF91bnJlZih3ZWJXaW5kb3dGZWF0dXJlcyk7CiAKLSAgICBpZiAoIWZyYW1l
TG9hZFJlcXVlc3QuaXNFbXB0eSgpKQotICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfb3Blbih3ZWJW
aWV3LCBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwotCiAgICAgcmV0dXJuIGNvcmUod2ViVmlldyk7CiB9CiAKSW5kZXg6IFdl
YktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA3MjA1MykKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTAtMTEtMTUgIFhpYW56aHUgV2FuZyA8cGhuaXh3eHpAZ21haWwu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTQ0MQorICAgICAgICBjcmVh
dGVXaW5kb3cgbWV0aG9kIHNob3VsZCBvbmx5IGRvIHdpbmRvdy1jcmVhdGluZyB3aXRob3V0IFVS
TCBuYXZpZ2F0aW9uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
bW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisKIDIwMTAtMTEt
MTQgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFuZHJlYXMgS2xpbmcuCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5tbQkocmV2aXNpb24gNzIwNTMpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjA0LDEyICsyMDQs
OCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9jdXNlZEZyYW1lQ2hhbmdlCiB7CiB9CiAKLVBh
Z2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3QgRnJh
bWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uJikKK1BhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2lu
ZG93KEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0Zl
YXR1cmVzJiBmZWF0dXJlcywgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpCiB7Ci0gICAgTlNVUkxS
ZXF1ZXN0ICpVUkxSZXF1ZXN0ID0gbmlsOwotICAgIGlmICghcmVxdWVzdC5pc0VtcHR5KCkpCi0g
ICAgICAgIFVSTFJlcXVlc3QgPSByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLm5zVVJMUmVxdWVz
dCgpOwotICAgIAogICAgIGlkIGRlbGVnYXRlID0gW21fd2ViVmlldyBVSURlbGVnYXRlXTsKICAg
ICBXZWJWaWV3ICpuZXdXZWJWaWV3OwogICAgIApAQCAtMjQ1LDcgKzI0MSw3IEBAIFBhZ2UqIFdl
YkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW0KICAgICAgICAgaWYgKGhlaWdodCkKICAg
ICAgICAgICAgIFtkaWN0RmVhdHVyZXMgc2V0T2JqZWN0OmhlaWdodCBmb3JLZXk6QCJoZWlnaHQi
XTsKICAgICAgICAgCi0gICAgICAgIG5ld1dlYlZpZXcgPSBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZp
ZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDp3aW5kb3dGZWF0
dXJlczopLCBVUkxSZXF1ZXN0LCBkaWN0RmVhdHVyZXMpOworICAgICAgICBuZXdXZWJWaWV3ID0g
Q2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpjcmVhdGVXZWJWaWV3
V2l0aFJlcXVlc3Q6d2luZG93RmVhdHVyZXM6KSwgbmlsLCBkaWN0RmVhdHVyZXMpOwogICAgICAg
ICAKICAgICAgICAgW2RpY3RGZWF0dXJlcyByZWxlYXNlXTsKICAgICAgICAgW3ggcmVsZWFzZV07
CkBAIC0yNjAsOSArMjU2LDkgQEAgUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3co
RnJhbQogICAgICAgICBbZnVsbHNjcmVlbiByZWxlYXNlXTsKICAgICAgICAgW2RpYWxvZyByZWxl
YXNlXTsKICAgICB9IGVsc2UgaWYgKGZlYXR1cmVzLmRpYWxvZyAmJiBbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdNb2RhbERpYWxvZ1dp
dGhSZXF1ZXN0OildKSB7Ci0gICAgICAgIG5ld1dlYlZpZXcgPSBDYWxsVUlEZWxlZ2F0ZShtX3dl
YlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdNb2RhbERpYWxvZ1dpdGhSZXF1
ZXN0OiksIFVSTFJlcXVlc3QpOworICAgICAgICBuZXdXZWJWaWV3ID0gQ2FsbFVJRGVsZWdhdGUo
bV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpjcmVhdGVXZWJWaWV3TW9kYWxEaWFsb2dXaXRo
UmVxdWVzdDopLCBuaWwpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG5ld1dlYlZpZXcgPSBDYWxs
VUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRo
UmVxdWVzdDopLCBVUkxSZXF1ZXN0KTsKKyAgICAgICAgbmV3V2ViVmlldyA9IENhbGxVSURlbGVn
YXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0
OiksIG5pbCk7CiAgICAgfQogCiAjaWYgVVNFKFBMVUdJTl9IT1NUX1BST0NFU1MpICYmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQpJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MjA1MykKKysrIFdlYktpdC9x
dC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0xMS0xNSAg
WGlhbnpodSBXYW5nIDxwaG5peHd4ekBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQxNDQxCisgICAgICAgIGNyZWF0ZVdpbmRvdyBtZXRob2Qgc2hvdWxkIG9ubHkg
ZG8gd2luZG93LWNyZWF0aW5nIHdpdGhvdXQgVVJMIG5hdmlnYXRpb24KKworICAgICAgICAqIEFw
aS9xd2VicGFnZS5jcHA6CisgICAgICAgIChvcGVuTmV3V2luZG93KToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnRRdDo6Y3JlYXRlV2luZG93KToKKwogMjAxMC0xMS0xNCAgQW5kcmVhcyBLbGluZyAgPGts
aW5nQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KSW5k
ZXg6IFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9B
cGkvcXdlYnBhZ2UuY3BwCShyZXZpc2lvbiA3MjA1MykKKysrIFdlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQ3LDkgKzIyNDcsMTEgQEAgc3RhdGljIHZvaWQg
b3Blbk5ld1dpbmRvdyhjb25zdCBRVXJsJiB1cgogICAgIGlmIChQYWdlKiBvbGRQYWdlID0gZnJh
bWUtPnBhZ2UoKSkgewogICAgICAgICBXaW5kb3dGZWF0dXJlcyBmZWF0dXJlczsKICAgICAgICAg
TmF2aWdhdGlvbkFjdGlvbiBhY3Rpb247Ci0gICAgICAgIGlmIChQYWdlKiBuZXdQYWdlID0gb2xk
UGFnZS0+Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhmcmFtZSwKLSAgICAgICAgICAgICAgICBmcmFt
ZUxvYWRSZXF1ZXN0KHVybCwgZnJhbWUpLCBmZWF0dXJlcywgYWN0aW9uKSkKKyAgICAgICAgRnJh
bWVMb2FkUmVxdWVzdCByZXF1ZXN0ID0gZnJhbWVMb2FkUmVxdWVzdCh1cmwsIGZyYW1lKTsKKyAg
ICAgICAgaWYgKFBhZ2UqIG5ld1BhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS0+Y3JlYXRlV2luZG93
KGZyYW1lLCByZXF1ZXN0LCBmZWF0dXJlcywgYWN0aW9uKSkgeworICAgICAgICAgICAgbmV3UGFn
ZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5sb2FkRnJhbWVSZXF1ZXN0KHJlcXVlc3QsIGZhbHNl
LCBmYWxzZSwgMCwgMCwgU2VuZFJlZmVycmVyKTsKICAgICAgICAgICAgIG5ld1BhZ2UtPmNocm9t
ZSgpLT5zaG93KCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKSW5kZXg6IFdlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAkocmV2aXNpb24gNzIwNTMpCisrKyBXZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODEsMTAgKzE4MSw3IEBAIFBhZ2UqIENocm9tZUNsaWVudFF0OjpjcmVhdGVXaW5kb3coRnJh
bWUKIAogICAgIC8vIEEgY2FsbCB0byBRV2ViUGFnZTo6bWFpbkZyYW1lKCkgaW1wbGljaXRseSBj
cmVhdGVzIHRoZSBtYWluIGZyYW1lLgogICAgIC8vIE1ha2Ugc3VyZSBpdCBleGlzdHMsIGFzIFdl
YkNvcmUgZXhwZWN0cyBpdCB3aGVuIHJldHVybmluZyBmcm9tIHRoaXMgY2FsbC4KLSAgICBRV2Vi
RnJhbWUqIG1haW5GcmFtZSA9IG5ld1BhZ2UtPm1haW5GcmFtZSgpOwotCi0gICAgaWYgKCFyZXF1
ZXN0LmlzRW1wdHkoKSkKLSAgICAgICAgbWFpbkZyYW1lLT5sb2FkKHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCkudXJsKCkpOworICAgIG5ld1BhZ2UtPm1haW5GcmFtZSgpOwogICAgIHJldHVybiBu
ZXdQYWdlLT5kLT5wYWdlOwogfQogCkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNzIwNTMpCisrKyBXZWJLaXQv
d2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTExLTE1
ICBYaWFuemh1IFdhbmcgPHBobml4d3h6QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAgICAgICAgY3JlYXRlV2luZG93IG1ldGhvZCBzaG91bGQgb25s
eSBkbyB3aW5kb3ctY3JlYXRpbmcgd2l0aG91dCBVUkwgbmF2aWdhdGlvbgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNocm9tZUNs
aWVudDo6Y3JlYXRlV2luZG93KToKKwogMjAxMC0xMS0xMiAgSm9obiBLbm90dGVuYmVsdCAgPGpr
bm90dGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTdGV2ZSBCbG9jay4K
SW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJ
KHJldmlzaW9uIDcyMDUzKQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsMTMgKzE5OCwxNCBAQCBzdGF0aWMgQ09N
UHRyPElQcm9wZXJ0eUJhZz4gY3JlYXRlV2luZG93CiAgICAgcmV0dXJuIENPTVB0cjxJUHJvcGVy
dHlCYWc+KEFkb3B0Q09NLCBDT01Qcm9wZXJ0eUJhZzxDT01WYXJpYW50Pjo6YWRvcHQobWFwKSk7
CiB9CiAKLVBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3Qg
RnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMm
IGZlYXR1cmVzLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikKK1BhZ2UqIFdlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdp
bmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpCiB7CiAgICAg
Q09NUHRyPElXZWJVSURlbGVnYXRlPiBkZWxlZ2F0ZSA9IHVpRGVsZWdhdGUoKTsKICAgICBpZiAo
IWRlbGVnYXRlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIENPTVB0cjxJV2ViTXV0YWJsZVVS
TFJlcXVlc3Q+IHJlcXVlc3QoQWRvcHRDT00sIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJ
bnN0YW5jZShmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSk7CisgICAgLy8gSnVz
dCBjcmVhdGUgYSBibGFuayByZXF1ZXN0IGJlY2F1c2UgY3JlYXRlV2luZG93KCkgaXMgb25seSBy
ZXF1aXJlZCB0byBjcmVhdGUgd2luZG93IGJ1dCBub3QgdG8gbG9hZCBVUkwuCisgICAgQ09NUHRy
PElXZWJNdXRhYmxlVVJMUmVxdWVzdD4gcmVxdWVzdChBZG9wdENPTSwgV2ViTXV0YWJsZVVSTFJl
cXVlc3Q6OmNyZWF0ZUluc3RhbmNlKCkpOwogCiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlUHJp
dmF0ZTI+IGRlbGVnYXRlUHJpdmF0ZShRdWVyeSwgZGVsZWdhdGUpOwogICAgIGlmIChkZWxlZ2F0
ZVByaXZhdGUpIHsKSW5kZXg6IFdlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gNzIwNTMpCisrKyBXZWJLaXQvd3gvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTEtMTUgIFhpYW56aHUgV2Fu
ZyA8cGhuaXh3eHpAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MTQ0MQorICAgICAgICBjcmVhdGVXaW5kb3cgbWV0aG9kIHNob3VsZCBvbmx5IGRvIHdpbmRvdy1j
cmVhdGluZyB3aXRob3V0IFVSTCBuYXZpZ2F0aW9uCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0
L0Nocm9tZUNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4Ojpj
cmVhdGVXaW5kb3cpOgorCiAyMDEwLTExLTA4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0
L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAkocmV2aXNpb24gNzIwNTMpCisr
KyBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0MSwxMSArMTQxLDEwIEBAIHZvaWQgQ2hyb21lQ2xpZW50V3g6OmZvY3VzZWRGcmFt
ZUNoYW5nZWQKIHsKIH0KIAotUGFnZSogQ2hyb21lQ2xpZW50V3g6OmNyZWF0ZVdpbmRvdyhGcmFt
ZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVz
JiBmZWF0dXJlcywgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpCitQYWdlKiBDaHJvbWVDbGllbnRX
eDo6Y3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdp
bmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpCiB7CiAgICAg
UGFnZSogbXlQYWdlID0gMDsKICAgICB3eFdlYlZpZXdOZXdXaW5kb3dFdmVudCB3a0V2ZW50KG1f
d2ViVmlldyk7Ci0gICAgd2tFdmVudC5TZXRVUkwocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51
cmwoKS5zdHJpbmcoKSk7CiAgICAgCiAgICAgd3hXZWJLaXRXaW5kb3dGZWF0dXJlcyB3a0ZlYXR1
cmVzID0gd2tGZWF0dXJlc2ZvcldpbmRvd0ZlYXR1cmVzKGZlYXR1cmVzKTsKICAgICB3a0V2ZW50
LlNldFdpbmRvd0ZlYXR1cmVzKHdrRmVhdHVyZXMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74080</attachid>
            <date>2010-11-16 20:23:20 -0800</date>
            <delta_ts>2011-01-08 07:03:21 -0800</delta_ts>
            <desc>Patch V3 update 1 fixed Chromium break</desc>
            <filename>patch41441-1.txt</filename>
            <type>text/plain</type>
            <size>21443</size>
            <attacher name="Xianzhu Wang">phnixwxz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjA1MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMTEtMTUgIFhpYW56aHUgV2FuZyA8cGhuaXh3eHpAZ21haWwu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTQ0MQorICAgICAgICBjcmVh
dGVXaW5kb3cgbWV0aG9kIHNob3VsZCBvbmx5IGRvIHdpbmRvdy1jcmVhdGluZyB3aXRob3V0IFVS
TCBuYXZpZ2F0aW9uLgorICAgICAgICBMZXQgY2xpZW50IEFQSXMga25vdyB3aGljaCBVUkwgYSBu
ZXcgd2luZG93IHdpbGwgc3RhcnQgd2l0aAorCisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9C
aW5kaW5nRE9NV2luZG93Lmg6CisgICAgICAgIChXZWJDb3JlOjo6OmNyZWF0ZVdpbmRvdyk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlV2luZG93KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2luZG93KToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRN
ZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuTmV3V2luZG93KToKKwor
CiAyMDEwLTExLTE1ICBBZGVsZSBQZXRlcnNvbiAgPGFkZWxlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvZ2VuZXJp
Yy9CaW5kaW5nRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9nZW5l
cmljL0JpbmRpbmdET01XaW5kb3cuaAkocmV2aXNpb24gNzIwNTMpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL2dlbmVyaWMvQmluZGluZ0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4
Niw4IEBAIEZyYW1lKiBCaW5kaW5nRE9NV2luZG93PEJpbmRpbmc+OjpjcmVhdGUKICAgICBBU1NF
UlQoY2FsbGluZ0ZyYW1lKTsKICAgICBBU1NFUlQoZW50ZXJlZEZyYW1lKTsKIAotICAgIFJlc291
cmNlUmVxdWVzdCByZXF1ZXN0OworICAgIEtVUkwgY29tcGxldGVkVXJsID0gdXJsLmlzRW1wdHko
KSA/IEtVUkwoKSA6IGNvbXBsZXRlVVJMKHN0YXRlLCB1cmwpOworICAgIFJlc291cmNlUmVxdWVz
dCByZXF1ZXN0KGNvbXBsZXRlZFVybCk7CiAKICAgICAvLyBGb3Igd2hhdGV2ZXIgcmVhc29uLCBG
aXJlZm94IHVzZXMgdGhlIGVudGVyZWQgZnJhbWUgdG8gZGV0ZXJtaW5lCiAgICAgLy8gdGhlIG91
dGdvaW5nUmVmZXJyZXIuICBXZSByZXBsaWNhdGUgdGhhdCBiZWhhdmlvciBoZXJlLgpAQCAtOTUs
MTUgKzk2LDYgQEAgRnJhbWUqIEJpbmRpbmdET01XaW5kb3c8QmluZGluZz46OmNyZWF0ZQogICAg
IEZyYW1lTG9hZGVyOjphZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdCwgZW50ZXJlZEZyYW1l
LT5sb2FkZXIoKS0+b3V0Z29pbmdPcmlnaW4oKSk7CiAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFt
ZVJlcXVlc3QocmVxdWVzdCwgZnJhbWVOYW1lKTsKIAotICAgIC8vIEZJWE1FOiBJdCdzIG11Y2gg
YmV0dGVyIGZvciBjbGllbnQgQVBJIGlmIGEgbmV3IHdpbmRvdyBzdGFydHMgd2l0aCBhIFVSTCwK
LSAgICAvLyBoZXJlIHdoZXJlIHdlIGtub3cgd2hhdCBVUkwgd2UgYXJlIGdvaW5nIHRvIG9wZW4u
IFVuZm9ydHVuYXRlbHksIHRoaXMKLSAgICAvLyBjb2RlIHBhc3NlcyB0aGUgZW1wdHkgc3RyaW5n
IGZvciB0aGUgVVJMLCBidXQgdGhlcmUncyBhIHJlYXNvbiBmb3IgdGhhdC4KLSAgICAvLyBCZWZv
cmUgbG9hZGluZyB3ZSBoYXZlIHRvIHNldCB1cCB0aGUgb3BlbmVyLCBvcGVuZWRCeURPTSwKLSAg
ICAvLyBhbmQgZGlhbG9nQXJndW1lbnRzIHZhbHVlcy4gQWxzbywgdG8gZGVjaWRlIHdoZXRoZXIg
dG8gdXNlIHRoZSBVUkwKLSAgICAvLyB3ZSBjdXJyZW50bHkgZG8gYW4gYWxsb3dzQWNjZXNzRnJv
bSBjYWxsIHVzaW5nIHRoZSB3aW5kb3cgd2UgY3JlYXRlLAotICAgIC8vIHdoaWNoIGNhbid0IGJl
IGRvbmUgYmVmb3JlIGNyZWF0aW5nIGl0LiBXZSdkIGhhdmUgdG8gcmVzb2x2ZSBhbGwgdGhvc2UK
LSAgICAvLyBpc3N1ZXMgdG8gcGFzcyB0aGUgVVJMIGluc3RlYWQgb2YgIiIuCi0KICAgICBib29s
IGNyZWF0ZWQ7CiAgICAgLy8gV2UgcGFzcyB0aGUgb3BlbmVyIGZyYW1lIGZvciB0aGUgbG9va3Vw
RnJhbWUgaW4gY2FzZSB0aGUgYWN0aXZlIGZyYW1lIGlzIGRpZmZlcmVudCBmcm9tCiAgICAgLy8g
dGhlIG9wZW5lciBmcmFtZSwgYW5kIHRoZSBuYW1lIHJlZmVyZW5jZXMgYSBmcmFtZSByZWxhdGl2
ZSB0byB0aGUgb3BlbmVyIGZyYW1lLgpAQCAtMTE3LDggKzEwOSw2IEBAIEZyYW1lKiBCaW5kaW5n
RE9NV2luZG93PEJpbmRpbmc+OjpjcmVhdGUKICAgICBCaW5kaW5nOjpET01XaW5kb3c6OnN0b3Jl
RGlhbG9nQXJncyhzdGF0ZSwgbmV3RnJhbWUsIGRpYWxvZ0FyZ3MpOwogCiAgICAgaWYgKCFwcm90
b2NvbElzSmF2YVNjcmlwdCh1cmwpIHx8IEJpbmRpbmdTZWN1cml0eTxCaW5kaW5nPjo6Y2FuQWNj
ZXNzRnJhbWUoc3RhdGUsIG5ld0ZyYW1lLCB0cnVlKSkgewotICAgICAgICBLVVJMIGNvbXBsZXRl
ZFVybCA9Ci0gICAgICAgICAgICB1cmwuaXNFbXB0eSgpID8gS1VSTChQYXJzZWRVUkxTdHJpbmcs
ICIiKSA6IGNvbXBsZXRlVVJMKHN0YXRlLCB1cmwpOwogICAgICAgICBpZiAoY3JlYXRlZCkKICAg
ICAgICAgICAgIG5ld0ZyYW1lLT5sb2FkZXIoKS0+Y2hhbmdlTG9jYXRpb24oY29tcGxldGVkVXJs
LCByZWZlcnJlciwgZmFsc2UsIGZhbHNlKTsKICAgICAgICAgZWxzZSBpZiAoIXVybC5pc0VtcHR5
KCkpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2
aXNpb24gNzIwNTMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjY2LDcgKzY2Niw4IEBAIHN0YXRpYyBGcmFtZSogY3JlYXRl
V2luZG93KEV4ZWNTdGF0ZSogZXgKICAgICBBU1NFUlQobGV4aWNhbEZyYW1lKTsKICAgICBBU1NF
UlQoZHluYW1pY0ZyYW1lKTsKIAotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0OworICAgIEtV
UkwgY29tcGxldGVkVVJMID0gdXJsLmlzRW1wdHkoKSA/IEtVUkwoKSA6IGNvbXBsZXRlVVJMKGV4
ZWMsIHVybCk7CisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoY29tcGxldGVkVVJMKTsKIAog
ICAgIC8vIEZvciB3aGF0ZXZlciByZWFzb24sIEZpcmVmb3ggdXNlcyB0aGUgZHluYW1pY0dsb2Jh
bE9iamVjdCB0byBkZXRlcm1pbmUKICAgICAvLyB0aGUgb3V0Z29pbmdSZWZlcnJlci4gIFdlIHJl
cGxpY2F0ZSB0aGF0IGJlaGF2aW9yIGhlcmUuCkBAIC02NzUsMTMgKzY3Niw2IEBAIHN0YXRpYyBG
cmFtZSogY3JlYXRlV2luZG93KEV4ZWNTdGF0ZSogZXgKICAgICBGcmFtZUxvYWRlcjo6YWRkSFRU
UE9yaWdpbklmTmVlZGVkKHJlcXVlc3QsIGR5bmFtaWNGcmFtZS0+bG9hZGVyKCktPm91dGdvaW5n
T3JpZ2luKCkpOwogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVSZXF1ZXN0KHJlcXVlc3QsIGZy
YW1lTmFtZSk7CiAKLSAgICAvLyBGSVhNRTogSXQncyBtdWNoIGJldHRlciBmb3IgY2xpZW50IEFQ
SSBpZiBhIG5ldyB3aW5kb3cgc3RhcnRzIHdpdGggYSBVUkwsIGhlcmUgd2hlcmUgd2UKLSAgICAv
LyBrbm93IHdoYXQgVVJMIHdlIGFyZSBnb2luZyB0byBvcGVuLiBVbmZvcnR1bmF0ZWx5LCB0aGlz
IGNvZGUgcGFzc2VzIHRoZSBlbXB0eSBzdHJpbmcKLSAgICAvLyBmb3IgdGhlIFVSTCwgYnV0IHRo
ZXJlJ3MgYSByZWFzb24gZm9yIHRoYXQuIEJlZm9yZSBsb2FkaW5nIHdlIGhhdmUgdG8gc2V0IHVw
IHRoZSBvcGVuZXIsCi0gICAgLy8gb3BlbmVkQnlET00sIGFuZCBkaWFsb2dBcmd1bWVudHMgdmFs
dWVzLiBBbHNvLCB0byBkZWNpZGUgd2hldGhlciB0byB1c2UgdGhlIFVSTCB3ZSBjdXJyZW50bHkK
LSAgICAvLyBkbyBhbiBhbGxvd3NBY2Nlc3NGcm9tIGNhbGwgdXNpbmcgdGhlIHdpbmRvdyB3ZSBj
cmVhdGUsIHdoaWNoIGNhbid0IGJlIGRvbmUgYmVmb3JlIGNyZWF0aW5nIGl0LgotICAgIC8vIFdl
J2QgaGF2ZSB0byByZXNvbHZlIGFsbCB0aG9zZSBpc3N1ZXMgdG8gcGFzcyB0aGUgVVJMIGluc3Rl
YWQgb2YgIiIuCi0KICAgICBib29sIGNyZWF0ZWQ7CiAgICAgLy8gV2UgcGFzcyB0aGUgb3BlbmVy
IGZyYW1lIGZvciB0aGUgbG9va3VwRnJhbWUgaW4gY2FzZSB0aGUgYWN0aXZlIGZyYW1lIGlzIGRp
ZmZlcmVudCBmcm9tCiAgICAgLy8gdGhlIG9wZW5lciBmcmFtZSwgYW5kIHRoZSBuYW1lIHJlZmVy
ZW5jZXMgYSBmcmFtZSByZWxhdGl2ZSB0byB0aGUgb3BlbmVyIGZyYW1lLgpAQCAtNjk5LDcgKzY5
Myw2IEBAIHN0YXRpYyBGcmFtZSogY3JlYXRlV2luZG93KEV4ZWNTdGF0ZSogZXgKICAgICAgICAg
bmV3V2luZG93LT5wdXREaXJlY3QoSWRlbnRpZmllcihleGVjLCAiZGlhbG9nQXJndW1lbnRzIiks
IGRpYWxvZ0FyZ3MpOwogCiAgICAgaWYgKCFwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpIHx8IG5l
d1dpbmRvdy0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkgewotICAgICAgICBLVVJMIGNvbXBsZXRl
ZFVSTCA9IHVybC5pc0VtcHR5KCkgPyBLVVJMKFBhcnNlZFVSTFN0cmluZywgIiIpIDogY29tcGxl
dGVVUkwoZXhlYywgdXJsKTsKICAgICAgICAgaWYgKGNyZWF0ZWQpCiAgICAgICAgICAgICBuZXdG
cmFtZS0+bG9hZGVyKCktPmNoYW5nZUxvY2F0aW9uKGNvbXBsZXRlZFVSTCwgcmVmZXJyZXIsIGZh
bHNlLCBmYWxzZSk7CiAgICAgICAgIGVsc2UgaWYgKCF1cmwuaXNFbXB0eSgpKQpJbmRleDogV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNzIwNTMpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0NjAsOCArMzQ2MCw2IEBAIEZyYW1lKiBj
cmVhdGVXaW5kb3coRnJhbWUqIG9wZW5lckZyYW1lLCAKICAgICBpZiAoIXJlcXVlc3QuZnJhbWVO
YW1lKCkuaXNFbXB0eSgpICYmIHJlcXVlc3QuZnJhbWVOYW1lKCkgIT0gIl9ibGFuayIpIHsKICAg
ICAgICAgRnJhbWUqIGZyYW1lID0gbG9va3VwRnJhbWUtPnRyZWUoKS0+ZmluZChyZXF1ZXN0LmZy
YW1lTmFtZSgpKTsKICAgICAgICAgaWYgKGZyYW1lICYmIG9wZW5lckZyYW1lLT5sb2FkZXIoKS0+
c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkgewotICAgICAgICAgICAgaWYgKCFyZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBmcmFt
ZS0+bG9hZGVyKCktPmxvYWRGcmFtZVJlcXVlc3QocmVxdWVzdCwgZmFsc2UsIGZhbHNlLCAwLCAw
LCBTZW5kUmVmZXJyZXIpOwogICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFn
ZSgpKQogICAgICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5mb2N1cygpOwogICAgICAgICAg
ICAgY3JlYXRlZCA9IGZhbHNlOwpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gNzIwNTMp
CisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2
ICsxMDAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEZyYW1lIHdhbnRzIHRv
IGNyZWF0ZSB0aGUgbmV3IFBhZ2UuICBBbHNvLCB0aGUgbmV3bHkgY3JlYXRlZCB3aW5kb3cKICAg
ICAgICAgLy8gc2hvdWxkIG5vdCBiZSBzaG93biB0byB0aGUgdXNlciB1bnRpbCB0aGUgQ2hyb21l
Q2xpZW50IG9mIHRoZSBuZXdseQogICAgICAgICAvLyBjcmVhdGVkIFBhZ2UgaGFzIGl0cyBzaG93
IG1ldGhvZCBjYWxsZWQuCisgICAgICAgIC8vIFRoZSBGcmFtZUxvYWRSZXF1ZXN0IHBhcmFtZXRl
ciBpcyBvbmx5IGZvciBDaHJvbWVDbGllbnQgdG8gY2hlY2sgaWYgdGhlCisgICAgICAgIC8vIHJl
cXVlc3QgY291bGQgYmUgZnVsZmlsbGVkLiAgVGhlIENocm9tZUNsaWVudCBzaG91bGQgbm90IGxv
YWQgdGhlIHJlcXVlc3QuCiAgICAgICAgIHZpcnR1YWwgUGFnZSogY3JlYXRlV2luZG93KEZyYW1l
KiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiwgY29uc3Qg
TmF2aWdhdGlvbkFjdGlvbiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNob3coKSA9IDA7
CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3
MjA1MykKKysrIFdlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDAsOSArMTQwLDExIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpz
aG93Q29udGV4dE0KIHN0YXRpYyB2b2lkIG9wZW5OZXdXaW5kb3coY29uc3QgS1VSTCYgdXJsVG9M
b2FkLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKFBhZ2UqIG9sZFBhZ2UgPSBmcmFtZS0+cGFn
ZSgpKSB7Ci0gICAgICAgIFdpbmRvd0ZlYXR1cmVzIGZlYXR1cmVzOwotICAgICAgICBpZiAoUGFn
ZSogbmV3UGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLT5jcmVhdGVXaW5kb3coZnJhbWUsIEZyYW1l
TG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHVybFRvTG9hZCwgZnJhbWUtPmxvYWRlcigpLT5v
dXRnb2luZ1JlZmVycmVyKCkpKSwgZmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb24oKSkpCisgICAg
ICAgIEZyYW1lTG9hZFJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QodXJsVG9Mb2FkLCBm
cmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSkpOworICAgICAgICBpZiAoUGFnZSog
bmV3UGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLT5jcmVhdGVXaW5kb3coZnJhbWUsIHJlcXVlc3Qs
IFdpbmRvd0ZlYXR1cmVzKCksIE5hdmlnYXRpb25BY3Rpb24oKSkpIHsKKyAgICAgICAgICAgIG5l
d1BhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+bG9hZEZyYW1lUmVxdWVzdChyZXF1ZXN0LCBm
YWxzZSwgZmFsc2UsIDAsIDAsIFNlbmRSZWZlcnJlcik7ICAgCiAgICAgICAgICAgICBuZXdQYWdl
LT5jaHJvbWUoKS0+c2hvdygpOworICAgICAgICB9CiAgICAgfQogfQogCkluZGV4OiBXZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDcyMDUzKQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTExLTE1ICBYaWFuemh1IFdhbmcgIDxwaG5p
eHd4ekBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNDQxCisg
ICAgICAgIGNyZWF0ZVdpbmRvdyBtZXRob2Qgc2hvdWxkIG9ubHkgZG8gd2luZG93LWNyZWF0aW5n
IHdpdGhvdXQgVVJMIG5hdmlnYXRpb24uCisgICAgICAgIFBhc3MgVVJMIHJlcXVlc3QgdG8gY3Jl
YXRlVmlldy4KKworICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdDbGllbnQ6OmNyZWF0ZVZpZXcpOgorICAgICAgICAqIHNyYy9DaHJvbWVD
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRl
V2luZG93KToKKwogMjAxMC0xMS0xNSAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAkocmV2aXNpb24gNzIwNTMpCisrKyBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMs
NyBAQCBjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI7CiBjbGFzcyBXZWJTcGVlY2hJbnB1
dExpc3RlbmVyOwogY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFjZTsKIGNsYXNzIFdlYlVSTDsKK2Ns
YXNzIFdlYlVSTFJlcXVlc3Q7CiBjbGFzcyBXZWJWaWV3OwogY2xhc3MgV2ViV2lkZ2V0Owogc3Ry
dWN0IFdlYkNvbnNvbGVNZXNzYWdlOwpAQCAtODQsNiArODUsMTggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgV2ViVmlldyogY3JlYXRlVmlldyhXZWJGcmFtZSogY3JlYXRvciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUpIHsg
cmV0dXJuIDA7IH0KKyAgICAvLyBTb21ldGltZXMgaXQncyBtdWNoIGJldHRlciBmb3IgY2xpZW50
IEFQSSBpZiBhIG5ldyB3aW5kb3cgc3RhcnRzIHdpdGggYQorICAgIC8vIFVSTCwgaGVyZSB3aGVy
ZSB3ZSBrbm93IHdoYXQgVVJMIHdlIGFyZSBnb2luZyB0byBvcGVuLgorICAgIC8vIFRoZSBvbGQg
Y3JlYXRlVmlldygpIHdpbGwgYmUgcmVtb3ZlZCBvbmNlIHRoZSBjaGFuZ2UgYXQgQ2hyb21pdW0g
c2lkZQorICAgIC8vIGlzIGNvbW1pdHRlZC4KKyAgICB2aXJ0dWFsIFdlYlZpZXcqIGNyZWF0ZVZp
ZXcoV2ViRnJhbWUqIGNyZWF0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFdlYldpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBXZWJVUkxSZXF1ZXN0JiByZXF1ZXN0KSB7CisgICAgICAgICh2b2lkKXJl
cXVlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC8vIFRoZSBkZWZhdWx0IGlt
cGxlbWVudGF0aW9uIGlzIHRvIGNhbGwgdGhlIG9sZCB2ZXJzaW9uIG9mIGNyZWF0ZVZpZXcuCisg
ICAgICAgIHJldHVybiBjcmVhdGVWaWV3KGNyZWF0b3IsIGZlYXR1cmVzLCBuYW1lKTsgCisgICAg
fQogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IFdlYlBvcHVwTWVudS4gIEluIHRoZSBzZWNvbmQgZm9y
bSwgdGhlIGNsaWVudCBpcwogICAgIC8vIHJlc3BvbnNpYmxlIGZvciByZW5kZXJpbmcgdGhlIGNv
bnRlbnRzIG9mIHRoZSBwb3B1cCBtZW51LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA3MjA1MykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MiwxOCArMjYyLDE0IEBA
IFBhZ2UqIENocm9tZUNsaWVudEltcGw6OmNyZWF0ZVdpbmRvdygKICAgICBpZiAoIW1fd2ViVmll
dy0+Y2xpZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgV3JhcHBlZFJlc291cmNlUmVx
dWVzdCByZXF1ZXN0OworICAgIGlmICghci5yZXNvdXJjZVJlcXVlc3QoKS5pc0VtcHR5KCkpCisg
ICAgICAgIHJlcXVlc3QuYmluZChyLnJlc291cmNlUmVxdWVzdCgpKTsKICAgICBXZWJWaWV3SW1w
bCogbmV3VmlldyA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oCi0gICAgICAgIG1fd2ViVmll
dy0+Y2xpZW50KCktPmNyZWF0ZVZpZXcoV2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoZnJhbWUpLCBm
ZWF0dXJlcywgci5mcmFtZU5hbWUoKSkpOworICAgICAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5j
cmVhdGVWaWV3KFdlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGZyYW1lKSwgZmVhdHVyZXMsIHIuZnJh
bWVOYW1lKCksIHJlcXVlc3QpKTsKICAgICBpZiAoIW5ld1ZpZXcpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgLy8gVGhlIHJlcXVlc3QgaXMgZW1wdHkgd2hlbiB3ZSBhcmUganVzdCBiZWluZyBh
c2tlZCB0byBvcGVuIGEgYmxhbmsgd2luZG93LgotICAgIC8vIFRoaXMgY29ycmVzcG9uZHMgdG8g
d2luZG93Lm9wZW4oIiIpLCBmb3IgZXhhbXBsZS4KLSAgICBpZiAoIXIucmVzb3VyY2VSZXF1ZXN0
KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFdyYXBwZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChy
LnJlc291cmNlUmVxdWVzdCgpKTsKLSAgICAgICAgbmV3Vmlldy0+bWFpbkZyYW1lKCktPmxvYWRS
ZXF1ZXN0KHJlcXVlc3QpOwotICAgIH0KLQogICAgIHJldHVybiBuZXdWaWV3LT5wYWdlKCk7CiB9
CiAKSW5kZXg6IFdlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwv
Q2hhbmdlTG9nCShyZXZpc2lvbiA3MjA1MykKKysrIFdlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTEtMTUgIFhpYW56aHUgV2FuZyA8cGhu
aXh3eHpAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTQ0MQor
ICAgICAgICBjcmVhdGVXaW5kb3cgbWV0aG9kIHNob3VsZCBvbmx5IGRvIHdpbmRvdy1jcmVhdGlu
ZyB3aXRob3V0IFVSTCBuYXZpZ2F0aW9uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpjcmVh
dGVXaW5kb3cpOgorCiAyMDEwLTExLTE0ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5n
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCkluZGV4OiBXZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCShyZXZpc2lvbiA3
MjA1MykKKysrIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU0LDkgKzE1NCw2IEBAIFBhZ2UqIENocm9tZUNsaWVudEVmbDo6
Y3JlYXRlV2luZG93KEZyYW0KICAgICBpZiAoIW5ld1ZpZXcpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgaWYgKCFmcmFtZUxvYWRSZXF1ZXN0LmlzRW1wdHkoKSkKLSAgICAgICAgZXdrX3ZpZXdf
dXJpX3NldChuZXdWaWV3LCBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotCiAgICAgcmV0dXJuIGV3a192aWV3X2NvcmVfcGFn
ZV9nZXQobmV3Vmlldyk7CiB9CiAKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MjA1MykKKysrIFdlYktpdC9n
dGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTEtMTUg
IFhpYW56aHUgV2FuZyA8cGhuaXh3eHpAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MTQ0MQorICAgICAgICBjcmVhdGVXaW5kb3cgbWV0aG9kIHNob3VsZCBvbmx5
IGRvIHdpbmRvdy1jcmVhdGluZyB3aXRob3V0IFVSTCBuYXZpZ2F0aW9uCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJv
bWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisKIDIwMTAtMTEtMTEgIEpvb25lIEh1ciAgPGpvb25l
QGtsZHAub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCkluZGV4OiBX
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCShyZXZpc2lv
biA3MjA1MykKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDkgKzE1Miw2IEBAIFBhZ2UqIENocm9tZUNsaWVudDo6
Y3JlYXRlV2luZG93KEZyYW1lKiAKICAgICBnX29iamVjdF9zZXQod2ViVmlldywgIndpbmRvdy1m
ZWF0dXJlcyIsIHdlYldpbmRvd0ZlYXR1cmVzLCBOVUxMKTsKICAgICBnX29iamVjdF91bnJlZih3
ZWJXaW5kb3dGZWF0dXJlcyk7CiAKLSAgICBpZiAoIWZyYW1lTG9hZFJlcXVlc3QuaXNFbXB0eSgp
KQotICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfb3Blbih3ZWJWaWV3LCBmcmFtZUxvYWRSZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotCiAgICAg
cmV0dXJuIGNvcmUod2ViVmlldyk7CiB9CiAKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MjA1MykKKysrIFdl
YktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAt
MTEtMTUgIFhpYW56aHUgV2FuZyA8cGhuaXh3eHpAZ21haWwuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00MTQ0MQorICAgICAgICBjcmVhdGVXaW5kb3cgbWV0aG9kIHNob3Vs
ZCBvbmx5IGRvIHdpbmRvdy1jcmVhdGluZyB3aXRob3V0IFVSTCBuYXZpZ2F0aW9uCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJv
bWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisKIDIwMTAtMTEtMTQgIEtlbnQgVGFtdXJhICA8dGtl
bnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCklu
ZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQkocmV2
aXNpb24gNzIwNTMpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjA0LDEyICsyMDQsOCBAQCB2b2lkIFdlYkNocm9tZUNs
aWVudDo6Zm9jdXNlZEZyYW1lQ2hhbmdlCiB7CiB9CiAKLVBhZ2UqIFdlYkNocm9tZUNsaWVudDo6
Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9u
JikKK1BhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwgY29u
c3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywgY29u
c3QgTmF2aWdhdGlvbkFjdGlvbiYpCiB7Ci0gICAgTlNVUkxSZXF1ZXN0ICpVUkxSZXF1ZXN0ID0g
bmlsOwotICAgIGlmICghcmVxdWVzdC5pc0VtcHR5KCkpCi0gICAgICAgIFVSTFJlcXVlc3QgPSBy
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLm5zVVJMUmVxdWVzdCgpOwotICAgIAogICAgIGlkIGRl
bGVnYXRlID0gW21fd2ViVmlldyBVSURlbGVnYXRlXTsKICAgICBXZWJWaWV3ICpuZXdXZWJWaWV3
OwogICAgIApAQCAtMjQ1LDcgKzI0MSw3IEBAIFBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRl
V2luZG93KEZyYW0KICAgICAgICAgaWYgKGhlaWdodCkKICAgICAgICAgICAgIFtkaWN0RmVhdHVy
ZXMgc2V0T2JqZWN0OmhlaWdodCBmb3JLZXk6QCJoZWlnaHQiXTsKICAgICAgICAgCi0gICAgICAg
IG5ld1dlYlZpZXcgPSBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3
OmNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDp3aW5kb3dGZWF0dXJlczopLCBVUkxSZXF1ZXN0LCBk
aWN0RmVhdHVyZXMpOworICAgICAgICBuZXdXZWJWaWV3ID0gQ2FsbFVJRGVsZWdhdGUobV93ZWJW
aWV3LCBAc2VsZWN0b3Iod2ViVmlldzpjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6d2luZG93RmVh
dHVyZXM6KSwgbmlsLCBkaWN0RmVhdHVyZXMpOwogICAgICAgICAKICAgICAgICAgW2RpY3RGZWF0
dXJlcyByZWxlYXNlXTsKICAgICAgICAgW3ggcmVsZWFzZV07CkBAIC0yNjAsOSArMjU2LDkgQEAg
UGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbQogICAgICAgICBbZnVsbHNj
cmVlbiByZWxlYXNlXTsKICAgICAgICAgW2RpYWxvZyByZWxlYXNlXTsKICAgICB9IGVsc2UgaWYg
KGZlYXR1cmVzLmRpYWxvZyAmJiBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdNb2RhbERpYWxvZ1dpdGhSZXF1ZXN0OildKSB7Ci0gICAg
ICAgIG5ld1dlYlZpZXcgPSBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJW
aWV3OmNyZWF0ZVdlYlZpZXdNb2RhbERpYWxvZ1dpdGhSZXF1ZXN0OiksIFVSTFJlcXVlc3QpOwor
ICAgICAgICBuZXdXZWJWaWV3ID0gQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Io
d2ViVmlldzpjcmVhdGVXZWJWaWV3TW9kYWxEaWFsb2dXaXRoUmVxdWVzdDopLCBuaWwpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIG5ld1dlYlZpZXcgPSBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcs
IEBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDopLCBVUkxSZXF1ZXN0
KTsKKyAgICAgICAgbmV3V2ViVmlldyA9IENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgQHNlbGVj
dG9yKHdlYlZpZXc6Y3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0OiksIG5pbCk7CiAgICAgfQogCiAj
aWYgVVNFKFBMVUdJTl9IT1NUX1BST0NFU1MpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQpJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hh
bmdlTG9nCShyZXZpc2lvbiA3MjA1MykKKysrIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0xMS0xNSAgWGlhbnpodSBXYW5nIDxwaG5peHd4
ekBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNDQxCisgICAg
ICAgIGNyZWF0ZVdpbmRvdyBtZXRob2Qgc2hvdWxkIG9ubHkgZG8gd2luZG93LWNyZWF0aW5nIHdp
dGhvdXQgVVJMIG5hdmlnYXRpb24KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAg
ICAgIChvcGVuTmV3V2luZG93KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y3JlYXRlV2luZG93
KToKKwogMjAxMC0xMS0xNCAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdl
YnBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCShyZXZp
c2lvbiA3MjA1MykKKysrIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjQ3LDkgKzIyNDcsMTEgQEAgc3RhdGljIHZvaWQgb3Blbk5ld1dpbmRvdyhjb25zdCBR
VXJsJiB1cgogICAgIGlmIChQYWdlKiBvbGRQYWdlID0gZnJhbWUtPnBhZ2UoKSkgewogICAgICAg
ICBXaW5kb3dGZWF0dXJlcyBmZWF0dXJlczsKICAgICAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rp
b247Ci0gICAgICAgIGlmIChQYWdlKiBuZXdQYWdlID0gb2xkUGFnZS0+Y2hyb21lKCktPmNyZWF0
ZVdpbmRvdyhmcmFtZSwKLSAgICAgICAgICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0KHVybCwgZnJh
bWUpLCBmZWF0dXJlcywgYWN0aW9uKSkKKyAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCByZXF1ZXN0
ID0gZnJhbWVMb2FkUmVxdWVzdCh1cmwsIGZyYW1lKTsKKyAgICAgICAgaWYgKFBhZ2UqIG5ld1Bh
Z2UgPSBvbGRQYWdlLT5jaHJvbWUoKS0+Y3JlYXRlV2luZG93KGZyYW1lLCByZXF1ZXN0LCBmZWF0
dXJlcywgYWN0aW9uKSkgeworICAgICAgICAgICAgbmV3UGFnZS0+bWFpbkZyYW1lKCktPmxvYWRl
cigpLT5sb2FkRnJhbWVSZXF1ZXN0KHJlcXVlc3QsIGZhbHNlLCBmYWxzZSwgMCwgMCwgU2VuZFJl
ZmVycmVyKTsKICAgICAgICAgICAgIG5ld1BhZ2UtPmNocm9tZSgpLT5zaG93KCk7CisgICAgICAg
IH0KICAgICB9CiB9CiAKSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudFF0LmNwcAkocmV2aXNpb24gNzIwNTMpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsMTAgKzE4MSw3IEBAIFBh
Z2UqIENocm9tZUNsaWVudFF0OjpjcmVhdGVXaW5kb3coRnJhbWUKIAogICAgIC8vIEEgY2FsbCB0
byBRV2ViUGFnZTo6bWFpbkZyYW1lKCkgaW1wbGljaXRseSBjcmVhdGVzIHRoZSBtYWluIGZyYW1l
LgogICAgIC8vIE1ha2Ugc3VyZSBpdCBleGlzdHMsIGFzIFdlYkNvcmUgZXhwZWN0cyBpdCB3aGVu
IHJldHVybmluZyBmcm9tIHRoaXMgY2FsbC4KLSAgICBRV2ViRnJhbWUqIG1haW5GcmFtZSA9IG5l
d1BhZ2UtPm1haW5GcmFtZSgpOwotCi0gICAgaWYgKCFyZXF1ZXN0LmlzRW1wdHkoKSkKLSAgICAg
ICAgbWFpbkZyYW1lLT5sb2FkKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpOworICAg
IG5ld1BhZ2UtPm1haW5GcmFtZSgpOwogICAgIHJldHVybiBuZXdQYWdlLT5kLT5wYWdlOwogfQog
CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0No
YW5nZUxvZwkocmV2aXNpb24gNzIwNTMpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTExLTE1ICBYaWFuemh1IFdhbmcgPHBobml4
d3h6QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAg
ICAgICAgY3JlYXRlV2luZG93IG1ldGhvZCBzaG91bGQgb25seSBkbyB3aW5kb3ctY3JlYXRpbmcg
d2l0aG91dCBVUkwgbmF2aWdhdGlvbgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KToK
KwogMjAxMC0xMS0xMiAgSm9obiBLbm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBTdGV2ZSBCbG9jay4KSW5kZXg6IFdlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9uIDcyMDUzKQorKysg
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTgsMTMgKzE5OCwxNCBAQCBzdGF0aWMgQ09NUHRyPElQcm9wZXJ0eUJhZz4gY3Jl
YXRlV2luZG93CiAgICAgcmV0dXJuIENPTVB0cjxJUHJvcGVydHlCYWc+KEFkb3B0Q09NLCBDT01Q
cm9wZXJ0eUJhZzxDT01WYXJpYW50Pjo6YWRvcHQobWFwKSk7CiB9CiAKLVBhZ2UqIFdlYkNocm9t
ZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJh
bWVMb2FkUmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJikKK1BhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1l
KiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJl
cywgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpCiB7CiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRl
PiBkZWxlZ2F0ZSA9IHVpRGVsZWdhdGUoKTsKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIENPTVB0cjxJV2ViTXV0YWJsZVVSTFJlcXVlc3Q+IHJlcXVlc3QoQWRv
cHRDT00sIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbnN0YW5jZShmcmFtZUxvYWRSZXF1
ZXN0LnJlc291cmNlUmVxdWVzdCgpKSk7CisgICAgLy8gSnVzdCBjcmVhdGUgYSBibGFuayByZXF1
ZXN0IGJlY2F1c2UgY3JlYXRlV2luZG93KCkgaXMgb25seSByZXF1aXJlZCB0byBjcmVhdGUgd2lu
ZG93IGJ1dCBub3QgdG8gbG9hZCBVUkwuCisgICAgQ09NUHRyPElXZWJNdXRhYmxlVVJMUmVxdWVz
dD4gcmVxdWVzdChBZG9wdENPTSwgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUluc3RhbmNl
KCkpOwogCiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlUHJpdmF0ZTI+IGRlbGVnYXRlUHJpdmF0
ZShRdWVyeSwgZGVsZWdhdGUpOwogICAgIGlmIChkZWxlZ2F0ZVByaXZhdGUpIHsKSW5kZXg6IFdl
YktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2
aXNpb24gNzIwNTMpCisrKyBXZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTAtMTEtMTUgIFhpYW56aHUgV2FuZyA8cGhuaXh3eHpAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTQ0MQorICAgICAgICBjcmVhdGVX
aW5kb3cgbWV0aG9kIHNob3VsZCBvbmx5IGRvIHdpbmRvdy1jcmVhdGluZyB3aXRob3V0IFVSTCBu
YXZpZ2F0aW9uCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpjcmVhdGVXaW5kb3cpOgorCiAyMDEw
LTExLTA4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hy
b21lQ2xpZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0No
cm9tZUNsaWVudFd4LmNwcAkocmV2aXNpb24gNzIwNTMpCisrKyBXZWJLaXQvd3gvV2ViS2l0U3Vw
cG9ydC9DaHJvbWVDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSwxMSArMTQxLDEw
IEBAIHZvaWQgQ2hyb21lQ2xpZW50V3g6OmZvY3VzZWRGcmFtZUNoYW5nZWQKIHsKIH0KIAotUGFn
ZSogQ2hyb21lQ2xpZW50V3g6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywgY29uc3QgTmF2
aWdhdGlvbkFjdGlvbiYpCitQYWdlKiBDaHJvbWVDbGllbnRXeDo6Y3JlYXRlV2luZG93KEZyYW1l
KiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJl
cywgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpCiB7CiAgICAgUGFnZSogbXlQYWdlID0gMDsKICAg
ICB3eFdlYlZpZXdOZXdXaW5kb3dFdmVudCB3a0V2ZW50KG1fd2ViVmlldyk7Ci0gICAgd2tFdmVu
dC5TZXRVUkwocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKSk7CiAgICAg
CiAgICAgd3hXZWJLaXRXaW5kb3dGZWF0dXJlcyB3a0ZlYXR1cmVzID0gd2tGZWF0dXJlc2Zvcldp
bmRvd0ZlYXR1cmVzKGZlYXR1cmVzKTsKICAgICB3a0V2ZW50LlNldFdpbmRvd0ZlYXR1cmVzKHdr
RmVhdHVyZXMpOwo=
</data>
<flag name="review"
          id="64620"
          type_id="1"
          status="+"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="69524"
          type_id="3"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78309</attachid>
            <date>2011-01-08 07:03:21 -0800</date>
            <delta_ts>2011-01-09 02:22:41 -0800</delta_ts>
            <desc>patch v3 update 2</desc>
            <filename>patch41441-2.txt</filename>
            <type>text/plain</type>
            <size>19768</size>
            <attacher name="Xianzhu Wang">phnixwxz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1MzE5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDEtMDggIFhpYW56aHUg
V2FuZyAgPHdhbmd4aWFuemh1QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQxNDQxCisgICAgICAgIGNyZWF0ZVdpbmRvdyBtZXRob2Qgc2hvdWxkIG9ubHkgZG8g
d2luZG93LWNyZWF0aW5nIHdpdGhvdXQgVVJMIG5hdmlnYXRpb24uCisgICAgICAgIExldCBjbGll
bnQgQVBJcyBrbm93IHdoaWNoIFVSTCBhIG5ldyB3aW5kb3cgd2lsbCBzdGFydCB3aXRoCisKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
V2luZG93KToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpvcGVuTmV3V2luZG93KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisKIDIwMTEt
MDEtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSdWJiZXIt
c3RhbXBlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAkocmV2aXNpb24gNzUzMTkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDczLDggKzM0NzMsNiBAQCBGcmFtZSogY3Jl
YXRlV2luZG93KEZyYW1lKiBvcGVuZXJGcmFtZSwgCiAgICAgaWYgKCFyZXF1ZXN0LmZyYW1lTmFt
ZSgpLmlzRW1wdHkoKSAmJiByZXF1ZXN0LmZyYW1lTmFtZSgpICE9ICJfYmxhbmsiKSB7CiAgICAg
ICAgIEZyYW1lKiBmcmFtZSA9IGxvb2t1cEZyYW1lLT50cmVlKCktPmZpbmQocmVxdWVzdC5mcmFt
ZU5hbWUoKSk7CiAgICAgICAgIGlmIChmcmFtZSAmJiBvcGVuZXJGcmFtZS0+bG9hZGVyKCktPnNo
b3VsZEFsbG93TmF2aWdhdGlvbihmcmFtZSkpIHsKLSAgICAgICAgICAgIGlmICghcmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgZnJhbWUt
PmxvYWRlcigpLT5sb2FkRnJhbWVSZXF1ZXN0KHJlcXVlc3QsIGZhbHNlLCBmYWxzZSwgMCwgMCwg
U2VuZFJlZmVycmVyKTsKICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2Uo
KSkKICAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Zm9jdXMoKTsKICAgICAgICAgICAg
IGNyZWF0ZWQgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2
aXNpb24gNzUzMTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAvLyBGcmFtZSB3YW50cyB0byBjcmVhdGUgdGhlIG5ldyBQYWdlLiAgQWxzbywgdGhlIG5ld2x5
IGNyZWF0ZWQgd2luZG93CiAgICAgICAgIC8vIHNob3VsZCBub3QgYmUgc2hvd24gdG8gdGhlIHVz
ZXIgdW50aWwgdGhlIENocm9tZUNsaWVudCBvZiB0aGUgbmV3bHkKICAgICAgICAgLy8gY3JlYXRl
ZCBQYWdlIGhhcyBpdHMgc2hvdyBtZXRob2QgY2FsbGVkLgorICAgICAgICAvLyBUaGUgRnJhbWVM
b2FkUmVxdWVzdCBwYXJhbWV0ZXIgaXMgb25seSBmb3IgQ2hyb21lQ2xpZW50IHRvIGNoZWNrIGlm
IHRoZQorICAgICAgICAvLyByZXF1ZXN0IGNvdWxkIGJlIGZ1bGZpbGxlZC4gIFRoZSBDaHJvbWVD
bGllbnQgc2hvdWxkIG5vdCBsb2FkIHRoZSByZXF1ZXN0LgogICAgICAgICB2aXJ0dWFsIFBhZ2Uq
IGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5k
b3dGZWF0dXJlcyYsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBzaG93KCkgPSAwOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRN
ZW51Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3NTMxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDkg
KzE1OCwxMCBAQCBzdGF0aWMgdm9pZCBvcGVuTmV3V2luZG93KGNvbnN0IEtVUkwmIHVyCiB7CiAg
ICAgaWYgKFBhZ2UqIG9sZFBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgIEZyYW1lTG9h
ZFJlcXVlc3QgcmVxdWVzdChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVz
b3VyY2VSZXF1ZXN0KHVybFRvTG9hZCwgZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVy
KCkpKTsKLSAgICAgICAgV2luZG93RmVhdHVyZXMgZmVhdHVyZXM7Ci0gICAgICAgIGlmIChQYWdl
KiBuZXdQYWdlID0gb2xkUGFnZS0+Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhmcmFtZSwgcmVxdWVz
dCwgZmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb24oKSkpCisgICAgICAgIGlmIChQYWdlKiBuZXdQ
YWdlID0gb2xkUGFnZS0+Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhmcmFtZSwgcmVxdWVzdCwgV2lu
ZG93RmVhdHVyZXMoKSwgTmF2aWdhdGlvbkFjdGlvbigpKSkgeworICAgICAgICAgICAgbmV3UGFn
ZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5sb2FkRnJhbWVSZXF1ZXN0KHJlcXVlc3QsIGZhbHNl
LCBmYWxzZSwgMCwgMCwgU2VuZFJlZmVycmVyKTsgICAKICAgICAgICAgICAgIG5ld1BhZ2UtPmNo
cm9tZSgpLT5zaG93KCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDc1MzE5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjk2LDE3ICsxNjk2LDExIEBAIEZyYW1l
KiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHIKIHsKICAgICBGcmFtZSogYWN0aXZl
RnJhbWUgPSBhY3RpdmVXaW5kb3ctPmZyYW1lKCk7CiAKLSAgICAvLyBGSVhNRTogSXQncyBtdWNo
IGJldHRlciBmb3IgY2xpZW50IEFQSSBpZiBhIG5ldyB3aW5kb3cgc3RhcnRzIHdpdGggYSBVUkws
IGhlcmUgd2hlcmUgd2UKLSAgICAvLyBrbm93IHdoYXQgVVJMIHdlIGFyZSBnb2luZyB0byBvcGVu
LiBVbmZvcnR1bmF0ZWx5LCB0aGlzIGNvZGUgcGFzc2VzIHRoZSBlbXB0eSBzdHJpbmcKLSAgICAv
LyBmb3IgdGhlIFVSTCwgYnV0IHRoZXJlJ3MgYSByZWFzb24gZm9yIHRoYXQuIEJlZm9yZSBsb2Fk
aW5nIHdlIGhhdmUgdG8gc2V0IHVwIHRoZSBvcGVuZXIsCi0gICAgLy8gb3BlbmVkQnlET00sIGFu
ZCBkaWFsb2dBcmd1bWVudHMgdmFsdWVzLiBBbHNvLCB0byBkZWNpZGUgd2hldGhlciB0byB1c2Ug
dGhlIFVSTCB3ZSBjdXJyZW50bHkKLSAgICAvLyBkbyBhbiBpc0luc2VjdXJlU2NyaXB0QWNjZXNz
IGNhbGwgdXNpbmcgdGhlIHdpbmRvdyB3ZSBjcmVhdGUsIHdoaWNoIGNhbid0IGJlIGRvbmUgYmVm
b3JlCi0gICAgLy8gY3JlYXRpbmcgaXQuIFdlJ2QgaGF2ZSB0byByZXNvbHZlIGFsbCB0aG9zZSBp
c3N1ZXMgdG8gcGFzcyB0aGUgVVJMIGluc3RlYWQgb2YgYW4gZW1wdHkgc3RyaW5nLgotCiAgICAg
Ly8gRm9yIHdoYXRldmVyIHJlYXNvbiwgRmlyZWZveCB1c2VzIHRoZSBmaXJzdCBmcmFtZSB0byBk
ZXRlcm1pbmUgdGhlIG91dGdvaW5nUmVmZXJyZXIuIFdlIHJlcGxpY2F0ZSB0aGF0IGJlaGF2aW9y
IGhlcmUuCiAgICAgU3RyaW5nIHJlZmVycmVyID0gZmlyc3RGcmFtZS0+bG9hZGVyKCktPm91dGdv
aW5nUmVmZXJyZXIoKTsKIAotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KEtVUkwoKSwgcmVm
ZXJyZXIpOworICAgIEtVUkwgY29tcGxldGVkVVJMID0gdXJsU3RyaW5nLmlzRW1wdHkoKSA/IEtV
UkwoUGFyc2VkVVJMU3RyaW5nLCAiIikgOiBmaXJzdEZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0
ZVVSTCh1cmxTdHJpbmcpOworICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGNvbXBsZXRlZFVS
TCwgcmVmZXJyZXIpOwogICAgIEZyYW1lTG9hZGVyOjphZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVx
dWVzdCwgZmlyc3RGcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nT3JpZ2luKCkpOwogICAgIEZyYW1l
TG9hZFJlcXVlc3QgZnJhbWVSZXF1ZXN0KGFjdGl2ZVdpbmRvdy0+c2VjdXJpdHlPcmlnaW4oKSwg
cmVxdWVzdCwgZnJhbWVOYW1lKTsKIApAQCAtMTcyNiw4ICsxNzIwLDYgQEAgRnJhbWUqIERPTVdp
bmRvdzo6Y3JlYXRlV2luZG93KGNvbnN0IFN0cgogICAgIGlmIChmdW5jdGlvbikKICAgICAgICAg
ZnVuY3Rpb24obmV3RnJhbWUtPmRvbVdpbmRvdygpLCBmdW5jdGlvbkNvbnRleHQpOwogCi0gICAg
S1VSTCBjb21wbGV0ZWRVUkwgPSB1cmxTdHJpbmcuaXNFbXB0eSgpID8gS1VSTChQYXJzZWRVUkxT
dHJpbmcsICIiKSA6IGZpcnN0RnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybFN0cmlu
Zyk7Ci0KICAgICBpZiAoY3JlYXRlZCkKICAgICAgICAgbmV3RnJhbWUtPmxvYWRlcigpLT5jaGFu
Z2VMb2NhdGlvbihhY3RpdmVXaW5kb3ctPnNlY3VyaXR5T3JpZ2luKCksIGNvbXBsZXRlZFVSTCwg
cmVmZXJyZXIsIGZhbHNlLCBmYWxzZSk7CiAgICAgZWxzZSBpZiAoIXVybFN0cmluZy5pc0VtcHR5
KCkpIHsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNzUzMTkpCisrKyBXZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDEtMDgg
IFhpYW56aHUgV2FuZyAgPHBobml4d3h6QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAgICAgICAgY3JlYXRlV2luZG93IG1ldGhvZCBzaG91bGQgb25s
eSBkbyB3aW5kb3ctY3JlYXRpbmcgd2l0aG91dCBVUkwgbmF2aWdhdGlvbi4KKyAgICAgICAgUGFz
cyBVUkwgcmVxdWVzdCB0byBjcmVhdGVWaWV3LgorCisgICAgICAgICogcHVibGljL1dlYlZpZXdD
bGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6Y3JlYXRlVmlldyk6Cisg
ICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJv
bWVDbGllbnRJbXBsOjpjcmVhdGVXaW5kb3cpOgorCiAyMDExLTAxLTA4ICBBZGFtIEJhcnRoICA8
YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBkYXRlIENocm9taXVtIERFUFMgdG8gcGlj
a3VwIG5ldyBHWVAgZmlsZXMuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGll
bnQuaAkocmV2aXNpb24gNzUzMTkpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQCBjbGFzcyBXZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXI7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dExpc3RlbmVyOwogY2xhc3MgV2Vi
U3RvcmFnZU5hbWVzcGFjZTsKIGNsYXNzIFdlYlVSTDsKK2NsYXNzIFdlYlVSTFJlcXVlc3Q7CiBj
bGFzcyBXZWJWaWV3OwogY2xhc3MgV2ViV2lkZ2V0Owogc3RydWN0IFdlYkNvbnNvbGVNZXNzYWdl
OwpAQCAtODIsMTAgKzgzLDI4IEBAIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYSBuZXcgcmVsYXRl
ZCBXZWJWaWV3LiAgVGhpcyBtZXRob2QgbXVzdCBjbG9uZSBpdHMgc2Vzc2lvbiBzdG9yYWdlCiAg
ICAgLy8gc28gYW55IHN1YnNlcXVlbnQgY2FsbHMgdG8gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UgY29uZm9ybSB0byB0aGUKICAgICAvLyBXZWJTdG9yYWdlIHNwZWNpZmljYXRpb24uCisg
ICAgLy8gRklYTUU6IFRoaXMgbWV0aG9kIGlzIERFUFJFQ0FURUQgYW5kIHNob3VsZCBiZSByZW1v
dmVkIG9uY2UgdGhlIG5ldworICAgIC8vIGNyZWF0ZVZpZXcoKSAodGhlIG5leHQgbWV0aG9kKSBp
cyBpbXBsZW1lbnRlZCBhdCBDaHJvbWl1bSBzaWRlLgogICAgIHZpcnR1YWwgV2ViVmlldyogY3Jl
YXRlVmlldyhXZWJGcmFtZSogY3JlYXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgV2ViV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUpIHsgcmV0dXJuIDA7IH0KIAorICAg
IC8vIENyZWF0ZSBhIG5ldyByZWxhdGVkIFdlYlZpZXcuICBUaGlzIG1ldGhvZCBtdXN0IGNsb25l
IGl0cyBzZXNzaW9uIHN0b3JhZ2UKKyAgICAvLyBzbyBhbnkgc3Vic2VxdWVudCBjYWxscyB0byBj
cmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSBjb25mb3JtIHRvIHRoZQorICAgIC8vIFdlYlN0
b3JhZ2Ugc3BlY2lmaWNhdGlvbi4KKyAgICAvLyBUaGUgcmVxdWVzdCBwYXJhbWV0ZXIgaXMgb25s
eSBmb3IgdGhlIGNsaWVudCB0byBjaGVjayBpZiB0aGUgcmVxdWVzdAorICAgIC8vIGNvdWxkIGJl
IGZ1bGZpbGxlZC4gIFRoZSBjbGllbnQgc2hvdWxkIG5vdCBsb2FkIHRoZSByZXF1ZXN0LgorICAg
IHZpcnR1YWwgV2ViVmlldyogY3JlYXRlVmlldyhXZWJGcmFtZSogY3JlYXRvciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVVJMUmVxdWVzdCYgcmVxdWVzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViV2luZG93RmVhdHVyZXMmIGZl
YXR1cmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcm
IG5hbWUpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB0ZW1wb3JhcnkgZGVmYXVsdCBp
bXBsZW1lbnRhdGlvbiB3aGljaCBjYWxscyB0aGUgb2xkCisgICAgICAgIC8vIHZlcnNpb24gb2Yg
Y3JlYXRlVmlldygpLiBTaG91bGQgY2hhbmdlIHRvICdyZXR1cm4gMCcgd2hlbiB0aGUgb2xkIG9u
ZQorICAgICAgICAvLyBpcyByZW1vdmVkLgorICAgICAgICAodm9pZClyZXF1ZXN0OworICAgICAg
ICByZXR1cm4gY3JlYXRlVmlldyhjcmVhdG9yLCBmZWF0dXJlcywgbmFtZSk7IAorICAgIH0KKwog
ICAgIC8vIENyZWF0ZSBhIG5ldyBXZWJQb3B1cE1lbnUuICBJbiB0aGUgc2Vjb25kIGZvcm0sIHRo
ZSBjbGllbnQgaXMKICAgICAvLyByZXNwb25zaWJsZSBmb3IgcmVuZGVyaW5nIHRoZSBjb250ZW50
cyBvZiB0aGUgcG9wdXAgbWVudS4KICAgICB2aXJ0dWFsIFdlYldpZGdldCogY3JlYXRlUG9wdXBN
ZW51KFdlYlBvcHVwVHlwZSkgeyByZXR1cm4gMDsgfQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Ny
Yy9DaHJvbWVDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3Jj
L0Nocm9tZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA3NTMxOSkKKysrIFdlYktpdC9jaHJvbWl1
bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MywxOCArMjYz
LDE0IEBAIFBhZ2UqIENocm9tZUNsaWVudEltcGw6OmNyZWF0ZVdpbmRvdygKICAgICBpZiAoIW1f
d2ViVmlldy0+Y2xpZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgV3JhcHBlZFJlc291
cmNlUmVxdWVzdCByZXF1ZXN0OworICAgIGlmICghci5yZXNvdXJjZVJlcXVlc3QoKS5pc0VtcHR5
KCkpCisgICAgICAgIHJlcXVlc3QuYmluZChyLnJlc291cmNlUmVxdWVzdCgpKTsKICAgICBXZWJW
aWV3SW1wbCogbmV3VmlldyA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oCi0gICAgICAgIG1f
d2ViVmlldy0+Y2xpZW50KCktPmNyZWF0ZVZpZXcoV2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoZnJh
bWUpLCBmZWF0dXJlcywgci5mcmFtZU5hbWUoKSkpOworICAgICAgICBtX3dlYlZpZXctPmNsaWVu
dCgpLT5jcmVhdGVWaWV3KFdlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGZyYW1lKSwgcmVxdWVzdCwg
ZmVhdHVyZXMsIHIuZnJhbWVOYW1lKCkpKTsKICAgICBpZiAoIW5ld1ZpZXcpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgLy8gVGhlIHJlcXVlc3QgaXMgZW1wdHkgd2hlbiB3ZSBhcmUganVzdCBi
ZWluZyBhc2tlZCB0byBvcGVuIGEgYmxhbmsgd2luZG93LgotICAgIC8vIFRoaXMgY29ycmVzcG9u
ZHMgdG8gd2luZG93Lm9wZW4oIiIpLCBmb3IgZXhhbXBsZS4KLSAgICBpZiAoIXIucmVzb3VyY2VS
ZXF1ZXN0KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFdyYXBwZWRSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdChyLnJlc291cmNlUmVxdWVzdCgpKTsKLSAgICAgICAgbmV3Vmlldy0+bWFpbkZyYW1lKCkt
PmxvYWRSZXF1ZXN0KHJlcXVlc3QpOwotICAgIH0KLQogICAgIHJldHVybiBuZXdWaWV3LT5wYWdl
KCk7CiB9CiAKSW5kZXg6IFdlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NTMxOSkKKysrIFdlYktpdC9lZmwvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDEtMDggIFhpYW56aHUgV2Fu
ZyA8cGhuaXh3eHpAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MTQ0MQorICAgICAgICBjcmVhdGVXaW5kb3cgbWV0aG9kIHNob3VsZCBvbmx5IGRvIHdpbmRvdy1j
cmVhdGluZyB3aXRob3V0IFVSTCBuYXZpZ2F0aW9uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZs
OjpjcmVhdGVXaW5kb3cpOgorCiAyMDEwLTEyLTI3ICBSYWZhZWwgQW50b2dub2xsaSAgPGFudG9n
bm9sbGlAcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRFZmwuY3BwCShyZXZpc2lvbiA3NTMxOSkKKysrIFdlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDkgKzE1NCw2
IEBAIFBhZ2UqIENocm9tZUNsaWVudEVmbDo6Y3JlYXRlV2luZG93KEZyYW0KICAgICBpZiAoIW5l
d1ZpZXcpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKCFmcmFtZUxvYWRSZXF1ZXN0Lmlz
RW1wdHkoKSkKLSAgICAgICAgZXdrX3ZpZXdfdXJpX3NldChuZXdWaWV3LCBmcmFtZUxvYWRSZXF1
ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotCiAg
ICAgcmV0dXJuIGV3a192aWV3X2NvcmVfcGFnZV9nZXQobmV3Vmlldyk7CiB9CiAKSW5kZXg6IFdl
YktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA3NTMxOSkKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTEtMDEtMDggIFhpYW56aHUgV2FuZyA8cGhuaXh3eHpAZ21haWwu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTQ0MQorICAgICAgICBjcmVh
dGVXaW5kb3cgbWV0aG9kIHNob3VsZCBvbmx5IGRvIHdpbmRvdy1jcmVhdGluZyB3aXRob3V0IFVS
TCBuYXZpZ2F0aW9uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisKIDIw
MTEtMDEtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSdWJi
ZXItc3RhbXBlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDc1MzE5KQorKysgV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjAsOSArMTYwLDYgQEAgUGFnZSogQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUqIAog
ICAgIEdSZWZQdHI8V2ViS2l0V2ViV2luZG93RmVhdHVyZXM+IHdlYldpbmRvd0ZlYXR1cmVzKGFk
b3B0R1JlZihraXROZXcoY29yZUZlYXR1cmVzKSkpOwogICAgIGdfb2JqZWN0X3NldCh3ZWJWaWV3
LCAid2luZG93LWZlYXR1cmVzIiwgd2ViV2luZG93RmVhdHVyZXMuZ2V0KCksIE5VTEwpOwogCi0g
ICAgaWYgKCFmcmFtZUxvYWRSZXF1ZXN0LmlzRW1wdHkoKSkKLSAgICAgICAgd2Via2l0X3dlYl92
aWV3X29wZW4od2ViVmlldywgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLQogICAgIHJldHVybiBjb3JlKHdlYlZpZXcpOwog
fQogCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gNzUzMTkpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTAxLTA4ICBYaWFuemh1IFdhbmcgPHBo
bml4d3h6QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NDEK
KyAgICAgICAgY3JlYXRlV2luZG93IG1ldGhvZCBzaG91bGQgb25seSBkbyB3aW5kb3ctY3JlYXRp
bmcgd2l0aG91dCBVUkwgbmF2aWdhdGlvbgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cp
OgorCiAyMDExLTAxLTA4ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAg
ICAgVHJ5IHRvIGZpeCB0aGUgTGVvcGFyZCBidWlsZC4KSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCShyZXZpc2lvbiA3NTMxOSkKKysrIFdlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTcsMTIgKzE5Nyw4IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpmb2N1c2VkRnJhbWVDaGFu
Z2UKIHsKIH0KIAotUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUqIGZy
YW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJl
cyYgZmVhdHVyZXMsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKQorUGFnZSogV2ViQ2hyb21lQ2xp
ZW50OjpjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0Jiwg
Y29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikK
IHsKLSAgICBOU1VSTFJlcXVlc3QgKlVSTFJlcXVlc3QgPSBuaWw7Ci0gICAgaWYgKCFyZXF1ZXN0
LmlzRW1wdHkoKSkKLSAgICAgICAgVVJMUmVxdWVzdCA9IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0
KCkubnNVUkxSZXF1ZXN0KCk7Ci0gICAgCiAgICAgaWQgZGVsZWdhdGUgPSBbbV93ZWJWaWV3IFVJ
RGVsZWdhdGVdOwogICAgIFdlYlZpZXcgKm5ld1dlYlZpZXc7CiAgICAgCkBAIC0yMzgsNyArMjM0
LDcgQEAgUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbQogICAgICAgICBp
ZiAoaGVpZ2h0KQogICAgICAgICAgICAgW2RpY3RGZWF0dXJlcyBzZXRPYmplY3Q6aGVpZ2h0IGZv
cktleTpAImhlaWdodCJdOwogICAgICAgICAKLSAgICAgICAgbmV3V2ViVmlldyA9IENhbGxVSURl
bGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2ViVmlld1dpdGhSZXF1
ZXN0OndpbmRvd0ZlYXR1cmVzOiksIFVSTFJlcXVlc3QsIGRpY3RGZWF0dXJlcyk7CisgICAgICAg
IG5ld1dlYlZpZXcgPSBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3
OmNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDp3aW5kb3dGZWF0dXJlczopLCBuaWwsIGRpY3RGZWF0
dXJlcyk7CiAgICAgICAgIAogICAgICAgICBbZGljdEZlYXR1cmVzIHJlbGVhc2VdOwogICAgICAg
ICBbeCByZWxlYXNlXTsKQEAgLTI1Myw5ICsyNDksOSBAQCBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6
OmNyZWF0ZVdpbmRvdyhGcmFtCiAgICAgICAgIFtmdWxsc2NyZWVuIHJlbGVhc2VdOwogICAgICAg
ICBbZGlhbG9nIHJlbGVhc2VdOwogICAgIH0gZWxzZSBpZiAoZmVhdHVyZXMuZGlhbG9nICYmIFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2ViVmll
d01vZGFsRGlhbG9nV2l0aFJlcXVlc3Q6KV0pIHsKLSAgICAgICAgbmV3V2ViVmlldyA9IENhbGxV
SURlbGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2ViVmlld01vZGFs
RGlhbG9nV2l0aFJlcXVlc3Q6KSwgVVJMUmVxdWVzdCk7CisgICAgICAgIG5ld1dlYlZpZXcgPSBD
YWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdN
b2RhbERpYWxvZ1dpdGhSZXF1ZXN0OiksIG5pbCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbmV3
V2ViVmlldyA9IENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6Y3Jl
YXRlV2ViVmlld1dpdGhSZXF1ZXN0OiksIFVSTFJlcXVlc3QpOworICAgICAgICBuZXdXZWJWaWV3
ID0gQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpjcmVhdGVXZWJW
aWV3V2l0aFJlcXVlc3Q6KSwgbmlsKTsKICAgICB9CiAKICNpZiBVU0UoUExVR0lOX0hPU1RfUFJP
Q0VTUykgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkluZGV4OiBXZWJLaXQvcXQvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1MzE5
KQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDExLTAxLTA4ICBYaWFuemh1IFdhbmcgPHBobml4d3h6QGdtYWlsLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAgICAgICAgY3JlYXRlV2luZG93IG1ldGhv
ZCBzaG91bGQgb25seSBkbyB3aW5kb3ctY3JlYXRpbmcgd2l0aG91dCBVUkwgbmF2aWdhdGlvbgor
CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKG9wZW5OZXdXaW5kb3cpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudFF0OjpjcmVhdGVXaW5kb3cpOgorCiAyMDExLTAxLTA3ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkg
RXJpYyBTZWlkZWwuCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gNzUzMTkpCisrKyBXZWJL
aXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI2Miw5ICsyMjYyLDEx
IEBAIHN0YXRpYyB2b2lkIG9wZW5OZXdXaW5kb3coY29uc3QgUVVybCYgdXIKICAgICBpZiAoUGFn
ZSogb2xkUGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAgV2luZG93RmVhdHVyZXMgZmVh
dHVyZXM7CiAgICAgICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uOwotICAgICAgICBpZiAoUGFn
ZSogbmV3UGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLT5jcmVhdGVXaW5kb3coZnJhbWUsCi0gICAg
ICAgICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdCh1cmwsIGZyYW1lKSwgZmVhdHVyZXMsIGFjdGlv
bikpCisgICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgcmVxdWVzdCA9IGZyYW1lTG9hZFJlcXVlc3Qo
dXJsLCBmcmFtZSk7CisgICAgICAgIGlmIChQYWdlKiBuZXdQYWdlID0gb2xkUGFnZS0+Y2hyb21l
KCktPmNyZWF0ZVdpbmRvdyhmcmFtZSwgcmVxdWVzdCwgZmVhdHVyZXMsIGFjdGlvbikpIHsKKyAg
ICAgICAgICAgIG5ld1BhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+bG9hZEZyYW1lUmVxdWVz
dChyZXF1ZXN0LCBmYWxzZSwgZmFsc2UsIDAsIDAsIFNlbmRSZWZlcnJlcik7CiAgICAgICAgICAg
ICBuZXdQYWdlLT5jaHJvbWUoKS0+c2hvdygpOworICAgICAgICB9CiAgICAgfQogfQogCkluZGV4
OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAJKHJldmlzaW9u
IDc1MzE5KQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTgyLDEwICsxODIsNyBAQCBQYWdlKiBDaHJvbWVDbGllbnRRdDo6
Y3JlYXRlV2luZG93KEZyYW1lCiAKICAgICAvLyBBIGNhbGwgdG8gUVdlYlBhZ2U6Om1haW5GcmFt
ZSgpIGltcGxpY2l0bHkgY3JlYXRlcyB0aGUgbWFpbiBmcmFtZS4KICAgICAvLyBNYWtlIHN1cmUg
aXQgZXhpc3RzLCBhcyBXZWJDb3JlIGV4cGVjdHMgaXQgd2hlbiByZXR1cm5pbmcgZnJvbSB0aGlz
IGNhbGwuCi0gICAgUVdlYkZyYW1lKiBtYWluRnJhbWUgPSBuZXdQYWdlLT5tYWluRnJhbWUoKTsK
LQotICAgIGlmICghcmVxdWVzdC5pc0VtcHR5KCkpCi0gICAgICAgIG1haW5GcmFtZS0+bG9hZChy
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKTsKKyAgICBuZXdQYWdlLT5tYWluRnJhbWUo
KTsKICAgICByZXR1cm4gbmV3UGFnZS0+ZC0+cGFnZTsKIH0KIApJbmRleDogV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1
MzE5KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAxMS0wMS0wOCAgWGlhbnpodSBXYW5nIDxwaG5peHd4ekBnbWFpbC5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNDQxCisgICAgICAgIGNyZWF0ZVdpbmRvdyBt
ZXRob2Qgc2hvdWxkIG9ubHkgZG8gd2luZG93LWNyZWF0aW5nIHdpdGhvdXQgVVJMIG5hdmlnYXRp
b24KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisKIDIwMTEtMDEtMDcgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBF
cmljIFNlaWRlbC4KSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAJKHJldmlzaW9uIDc1MzE5KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsMTMgKzE5NiwxNCBA
QCBzdGF0aWMgQ09NUHRyPElQcm9wZXJ0eUJhZz4gY3JlYXRlV2luZG93CiAgICAgcmV0dXJuIENP
TVB0cjxJUHJvcGVydHlCYWc+KEFkb3B0Q09NLCBDT01Qcm9wZXJ0eUJhZzxDT01WYXJpYW50Pjo6
YWRvcHQobWFwKSk7CiB9CiAKLVBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZy
YW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgV2lu
ZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikKK1BhZ2UqIFdl
YkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVz
dCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywgY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYpCiB7CiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiBkZWxlZ2F0ZSA9IHVpRGVsZWdhdGUo
KTsKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIENPTVB0cjxJ
V2ViTXV0YWJsZVVSTFJlcXVlc3Q+IHJlcXVlc3QoQWRvcHRDT00sIFdlYk11dGFibGVVUkxSZXF1
ZXN0OjpjcmVhdGVJbnN0YW5jZShmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSk7
CisgICAgLy8gSnVzdCBjcmVhdGUgYSBibGFuayByZXF1ZXN0IGJlY2F1c2UgY3JlYXRlV2luZG93
KCkgaXMgb25seSByZXF1aXJlZCB0byBjcmVhdGUgd2luZG93IGJ1dCBub3QgdG8gbG9hZCBVUkwu
CisgICAgQ09NUHRyPElXZWJNdXRhYmxlVVJMUmVxdWVzdD4gcmVxdWVzdChBZG9wdENPTSwgV2Vi
TXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUluc3RhbmNlKCkpOwogCiAgICAgQ09NUHRyPElXZWJV
SURlbGVnYXRlUHJpdmF0ZTI+IGRlbGVnYXRlUHJpdmF0ZShRdWVyeSwgZGVsZWdhdGUpOwogICAg
IGlmIChkZWxlZ2F0ZVByaXZhdGUpIHsKSW5kZXg6IFdlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gNzUzMTkpCisrKyBXZWJLaXQv
d3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDEtMDgg
IFhpYW56aHUgV2FuZyA8cGhuaXh3eHpAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MTQ0MQorICAgICAgICBjcmVhdGVXaW5kb3cgbWV0aG9kIHNob3VsZCBvbmx5
IGRvIHdpbmRvdy1jcmVhdGluZyB3aXRob3V0IFVSTCBuYXZpZ2F0aW9uCisKKyAgICAgICAgKiBX
ZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudFd4OjpjcmVhdGVXaW5kb3cpOgorCiAyMDExLTAxLTA3ICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgRXJpYyBTZWlkZWwu
CkluZGV4OiBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCShyZXZp
c2lvbiA3NTMxOSkKKysrIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDExICsxNDEsMTAgQEAgdm9pZCBDaHJvbWVDbGllbnRX
eDo6Zm9jdXNlZEZyYW1lQ2hhbmdlZAogewogfQogCi1QYWdlKiBDaHJvbWVDbGllbnRXeDo6Y3Jl
YXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikKK1BhZ2Uq
IENocm9tZUNsaWVudFd4OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1
ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJikKIHsKICAgICBQYWdlKiBteVBhZ2UgPSAwOwogICAgIHd4V2ViVmlld05ld1dpbmRvd0V2
ZW50IHdrRXZlbnQobV93ZWJWaWV3KTsKLSAgICB3a0V2ZW50LlNldFVSTChyZXF1ZXN0LnJlc291
cmNlUmVxdWVzdCgpLnVybCgpLnN0cmluZygpKTsKICAgICAKICAgICB3eFdlYktpdFdpbmRvd0Zl
YXR1cmVzIHdrRmVhdHVyZXMgPSB3a0ZlYXR1cmVzZm9yV2luZG93RmVhdHVyZXMoZmVhdHVyZXMp
OwogICAgIHdrRXZlbnQuU2V0V2luZG93RmVhdHVyZXMod2tGZWF0dXJlcyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78346</attachid>
            <date>2011-01-09 02:22:41 -0800</date>
            <delta_ts>2011-01-09 02:25:55 -0800</delta_ts>
            <desc>patch v3 update 2 with corrected reviewer line</desc>
            <filename>patch41441.txt</filename>
            <type>text/plain</type>
            <size>19762</size>
            <attacher name="Xianzhu Wang">phnixwxz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1MzE5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDEtMDggIFhpYW56aHUg
V2FuZyAgPHBobml4d3h6QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBG
aXNoZXIuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQxNDQxCisgICAgICAgIGNyZWF0ZVdpbmRvdyBtZXRob2Qgc2hvdWxkIG9ubHkgZG8gd2luZG93
LWNyZWF0aW5nIHdpdGhvdXQgVVJMIG5hdmlnYXRpb24uCisgICAgICAgIExldCBjbGllbnQgQVBJ
cyBrbm93IHdoaWNoIFVSTCBhIG5ldyB3aW5kb3cgd2lsbCBzdGFydCB3aXRoCisKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2luZG93
KToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVuTmV3V2luZG93KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisKIDIwMTEtMDEtMDcg
IEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSdWJiZXItc3RhbXBl
ZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAkocmV2aXNpb24gNzUzMTkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDczLDggKzM0NzMsNiBAQCBGcmFtZSogY3JlYXRlV2lu
ZG93KEZyYW1lKiBvcGVuZXJGcmFtZSwgCiAgICAgaWYgKCFyZXF1ZXN0LmZyYW1lTmFtZSgpLmlz
RW1wdHkoKSAmJiByZXF1ZXN0LmZyYW1lTmFtZSgpICE9ICJfYmxhbmsiKSB7CiAgICAgICAgIEZy
YW1lKiBmcmFtZSA9IGxvb2t1cEZyYW1lLT50cmVlKCktPmZpbmQocmVxdWVzdC5mcmFtZU5hbWUo
KSk7CiAgICAgICAgIGlmIChmcmFtZSAmJiBvcGVuZXJGcmFtZS0+bG9hZGVyKCktPnNob3VsZEFs
bG93TmF2aWdhdGlvbihmcmFtZSkpIHsKLSAgICAgICAgICAgIGlmICghcmVxdWVzdC5yZXNvdXJj
ZVJlcXVlc3QoKS51cmwoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRl
cigpLT5sb2FkRnJhbWVSZXF1ZXN0KHJlcXVlc3QsIGZhbHNlLCBmYWxzZSwgMCwgMCwgU2VuZFJl
ZmVycmVyKTsKICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAg
ICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Zm9jdXMoKTsKICAgICAgICAgICAgIGNyZWF0
ZWQgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24g
NzUzMTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDAsNiArMTAwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBG
cmFtZSB3YW50cyB0byBjcmVhdGUgdGhlIG5ldyBQYWdlLiAgQWxzbywgdGhlIG5ld2x5IGNyZWF0
ZWQgd2luZG93CiAgICAgICAgIC8vIHNob3VsZCBub3QgYmUgc2hvd24gdG8gdGhlIHVzZXIgdW50
aWwgdGhlIENocm9tZUNsaWVudCBvZiB0aGUgbmV3bHkKICAgICAgICAgLy8gY3JlYXRlZCBQYWdl
IGhhcyBpdHMgc2hvdyBtZXRob2QgY2FsbGVkLgorICAgICAgICAvLyBUaGUgRnJhbWVMb2FkUmVx
dWVzdCBwYXJhbWV0ZXIgaXMgb25seSBmb3IgQ2hyb21lQ2xpZW50IHRvIGNoZWNrIGlmIHRoZQor
ICAgICAgICAvLyByZXF1ZXN0IGNvdWxkIGJlIGZ1bGZpbGxlZC4gIFRoZSBDaHJvbWVDbGllbnQg
c2hvdWxkIG5vdCBsb2FkIHRoZSByZXF1ZXN0LgogICAgICAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0
ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0
dXJlcyYsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBzaG93KCkgPSAwOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVu
dUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3NTMxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDkgKzE1OCwx
MCBAQCBzdGF0aWMgdm9pZCBvcGVuTmV3V2luZG93KGNvbnN0IEtVUkwmIHVyCiB7CiAgICAgaWYg
KFBhZ2UqIG9sZFBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgIEZyYW1lTG9hZFJlcXVl
c3QgcmVxdWVzdChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VS
ZXF1ZXN0KHVybFRvTG9hZCwgZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpKTsK
LSAgICAgICAgV2luZG93RmVhdHVyZXMgZmVhdHVyZXM7Ci0gICAgICAgIGlmIChQYWdlKiBuZXdQ
YWdlID0gb2xkUGFnZS0+Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhmcmFtZSwgcmVxdWVzdCwgZmVh
dHVyZXMsIE5hdmlnYXRpb25BY3Rpb24oKSkpCisgICAgICAgIGlmIChQYWdlKiBuZXdQYWdlID0g
b2xkUGFnZS0+Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhmcmFtZSwgcmVxdWVzdCwgV2luZG93RmVh
dHVyZXMoKSwgTmF2aWdhdGlvbkFjdGlvbigpKSkgeworICAgICAgICAgICAgbmV3UGFnZS0+bWFp
bkZyYW1lKCktPmxvYWRlcigpLT5sb2FkRnJhbWVSZXF1ZXN0KHJlcXVlc3QsIGZhbHNlLCBmYWxz
ZSwgMCwgMCwgU2VuZFJlZmVycmVyKTsgICAKICAgICAgICAgICAgIG5ld1BhZ2UtPmNocm9tZSgp
LT5zaG93KCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAJKHJldmlzaW9uIDc1MzE5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjk2LDE3ICsxNjk2LDExIEBAIEZyYW1lKiBET01X
aW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHIKIHsKICAgICBGcmFtZSogYWN0aXZlRnJhbWUg
PSBhY3RpdmVXaW5kb3ctPmZyYW1lKCk7CiAKLSAgICAvLyBGSVhNRTogSXQncyBtdWNoIGJldHRl
ciBmb3IgY2xpZW50IEFQSSBpZiBhIG5ldyB3aW5kb3cgc3RhcnRzIHdpdGggYSBVUkwsIGhlcmUg
d2hlcmUgd2UKLSAgICAvLyBrbm93IHdoYXQgVVJMIHdlIGFyZSBnb2luZyB0byBvcGVuLiBVbmZv
cnR1bmF0ZWx5LCB0aGlzIGNvZGUgcGFzc2VzIHRoZSBlbXB0eSBzdHJpbmcKLSAgICAvLyBmb3Ig
dGhlIFVSTCwgYnV0IHRoZXJlJ3MgYSByZWFzb24gZm9yIHRoYXQuIEJlZm9yZSBsb2FkaW5nIHdl
IGhhdmUgdG8gc2V0IHVwIHRoZSBvcGVuZXIsCi0gICAgLy8gb3BlbmVkQnlET00sIGFuZCBkaWFs
b2dBcmd1bWVudHMgdmFsdWVzLiBBbHNvLCB0byBkZWNpZGUgd2hldGhlciB0byB1c2UgdGhlIFVS
TCB3ZSBjdXJyZW50bHkKLSAgICAvLyBkbyBhbiBpc0luc2VjdXJlU2NyaXB0QWNjZXNzIGNhbGwg
dXNpbmcgdGhlIHdpbmRvdyB3ZSBjcmVhdGUsIHdoaWNoIGNhbid0IGJlIGRvbmUgYmVmb3JlCi0g
ICAgLy8gY3JlYXRpbmcgaXQuIFdlJ2QgaGF2ZSB0byByZXNvbHZlIGFsbCB0aG9zZSBpc3N1ZXMg
dG8gcGFzcyB0aGUgVVJMIGluc3RlYWQgb2YgYW4gZW1wdHkgc3RyaW5nLgotCiAgICAgLy8gRm9y
IHdoYXRldmVyIHJlYXNvbiwgRmlyZWZveCB1c2VzIHRoZSBmaXJzdCBmcmFtZSB0byBkZXRlcm1p
bmUgdGhlIG91dGdvaW5nUmVmZXJyZXIuIFdlIHJlcGxpY2F0ZSB0aGF0IGJlaGF2aW9yIGhlcmUu
CiAgICAgU3RyaW5nIHJlZmVycmVyID0gZmlyc3RGcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVm
ZXJyZXIoKTsKIAotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KEtVUkwoKSwgcmVmZXJyZXIp
OworICAgIEtVUkwgY29tcGxldGVkVVJMID0gdXJsU3RyaW5nLmlzRW1wdHkoKSA/IEtVUkwoUGFy
c2VkVVJMU3RyaW5nLCAiIikgOiBmaXJzdEZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1
cmxTdHJpbmcpOworICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGNvbXBsZXRlZFVSTCwgcmVm
ZXJyZXIpOwogICAgIEZyYW1lTG9hZGVyOjphZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdCwg
Zmlyc3RGcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nT3JpZ2luKCkpOwogICAgIEZyYW1lTG9hZFJl
cXVlc3QgZnJhbWVSZXF1ZXN0KGFjdGl2ZVdpbmRvdy0+c2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVz
dCwgZnJhbWVOYW1lKTsKIApAQCAtMTcyNiw4ICsxNzIwLDYgQEAgRnJhbWUqIERPTVdpbmRvdzo6
Y3JlYXRlV2luZG93KGNvbnN0IFN0cgogICAgIGlmIChmdW5jdGlvbikKICAgICAgICAgZnVuY3Rp
b24obmV3RnJhbWUtPmRvbVdpbmRvdygpLCBmdW5jdGlvbkNvbnRleHQpOwogCi0gICAgS1VSTCBj
b21wbGV0ZWRVUkwgPSB1cmxTdHJpbmcuaXNFbXB0eSgpID8gS1VSTChQYXJzZWRVUkxTdHJpbmcs
ICIiKSA6IGZpcnN0RnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybFN0cmluZyk7Ci0K
ICAgICBpZiAoY3JlYXRlZCkKICAgICAgICAgbmV3RnJhbWUtPmxvYWRlcigpLT5jaGFuZ2VMb2Nh
dGlvbihhY3RpdmVXaW5kb3ctPnNlY3VyaXR5T3JpZ2luKCksIGNvbXBsZXRlZFVSTCwgcmVmZXJy
ZXIsIGZhbHNlLCBmYWxzZSk7CiAgICAgZWxzZSBpZiAoIXVybFN0cmluZy5pc0VtcHR5KCkpIHsK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNzUzMTkpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDEtMDggIFhpYW56
aHUgV2FuZyAgPHBobml4d3h6QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDE0NDEKKyAgICAgICAgY3JlYXRlV2luZG93IG1ldGhvZCBzaG91bGQgb25seSBkbyB3
aW5kb3ctY3JlYXRpbmcgd2l0aG91dCBVUkwgbmF2aWdhdGlvbi4KKyAgICAgICAgUGFzcyBVUkwg
cmVxdWVzdCB0byBjcmVhdGVWaWV3LgorCisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6Y3JlYXRlVmlldyk6CisgICAgICAg
ICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGll
bnRJbXBsOjpjcmVhdGVXaW5kb3cpOgorCiAyMDExLTAxLTA4ICBBZGFtIEJhcnRoICA8YWJhcnRo
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBkYXRlIENocm9taXVtIERFUFMgdG8gcGlja3VwIG5l
dyBHWVAgZmlsZXMuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAko
cmV2aXNpb24gNzUzMTkpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQCBjbGFzcyBXZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXI7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dExpc3RlbmVyOwogY2xhc3MgV2ViU3RvcmFn
ZU5hbWVzcGFjZTsKIGNsYXNzIFdlYlVSTDsKK2NsYXNzIFdlYlVSTFJlcXVlc3Q7CiBjbGFzcyBX
ZWJWaWV3OwogY2xhc3MgV2ViV2lkZ2V0Owogc3RydWN0IFdlYkNvbnNvbGVNZXNzYWdlOwpAQCAt
ODIsMTAgKzgzLDI4IEBAIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYSBuZXcgcmVsYXRlZCBXZWJW
aWV3LiAgVGhpcyBtZXRob2QgbXVzdCBjbG9uZSBpdHMgc2Vzc2lvbiBzdG9yYWdlCiAgICAgLy8g
c28gYW55IHN1YnNlcXVlbnQgY2FsbHMgdG8gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Ug
Y29uZm9ybSB0byB0aGUKICAgICAvLyBXZWJTdG9yYWdlIHNwZWNpZmljYXRpb24uCisgICAgLy8g
RklYTUU6IFRoaXMgbWV0aG9kIGlzIERFUFJFQ0FURUQgYW5kIHNob3VsZCBiZSByZW1vdmVkIG9u
Y2UgdGhlIG5ldworICAgIC8vIGNyZWF0ZVZpZXcoKSAodGhlIG5leHQgbWV0aG9kKSBpcyBpbXBs
ZW1lbnRlZCBhdCBDaHJvbWl1bSBzaWRlLgogICAgIHZpcnR1YWwgV2ViVmlldyogY3JlYXRlVmll
dyhXZWJGcmFtZSogY3JlYXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgV2ViV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUpIHsgcmV0dXJuIDA7IH0KIAorICAgIC8vIENy
ZWF0ZSBhIG5ldyByZWxhdGVkIFdlYlZpZXcuICBUaGlzIG1ldGhvZCBtdXN0IGNsb25lIGl0cyBz
ZXNzaW9uIHN0b3JhZ2UKKyAgICAvLyBzbyBhbnkgc3Vic2VxdWVudCBjYWxscyB0byBjcmVhdGVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSBjb25mb3JtIHRvIHRoZQorICAgIC8vIFdlYlN0b3JhZ2Ug
c3BlY2lmaWNhdGlvbi4KKyAgICAvLyBUaGUgcmVxdWVzdCBwYXJhbWV0ZXIgaXMgb25seSBmb3Ig
dGhlIGNsaWVudCB0byBjaGVjayBpZiB0aGUgcmVxdWVzdAorICAgIC8vIGNvdWxkIGJlIGZ1bGZp
bGxlZC4gIFRoZSBjbGllbnQgc2hvdWxkIG5vdCBsb2FkIHRoZSByZXF1ZXN0LgorICAgIHZpcnR1
YWwgV2ViVmlldyogY3JlYXRlVmlldyhXZWJGcmFtZSogY3JlYXRvciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVVJMUmVxdWVzdCYgcmVxdWVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViV2luZG93RmVhdHVyZXMmIGZlYXR1cmVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUp
IHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB0ZW1wb3JhcnkgZGVmYXVsdCBpbXBsZW1l
bnRhdGlvbiB3aGljaCBjYWxscyB0aGUgb2xkCisgICAgICAgIC8vIHZlcnNpb24gb2YgY3JlYXRl
VmlldygpLiBTaG91bGQgY2hhbmdlIHRvICdyZXR1cm4gMCcgd2hlbiB0aGUgb2xkIG9uZQorICAg
ICAgICAvLyBpcyByZW1vdmVkLgorICAgICAgICAodm9pZClyZXF1ZXN0OworICAgICAgICByZXR1
cm4gY3JlYXRlVmlldyhjcmVhdG9yLCBmZWF0dXJlcywgbmFtZSk7IAorICAgIH0KKwogICAgIC8v
IENyZWF0ZSBhIG5ldyBXZWJQb3B1cE1lbnUuICBJbiB0aGUgc2Vjb25kIGZvcm0sIHRoZSBjbGll
bnQgaXMKICAgICAvLyByZXNwb25zaWJsZSBmb3IgcmVuZGVyaW5nIHRoZSBjb250ZW50cyBvZiB0
aGUgcG9wdXAgbWVudS4KICAgICB2aXJ0dWFsIFdlYldpZGdldCogY3JlYXRlUG9wdXBNZW51KFdl
YlBvcHVwVHlwZSkgeyByZXR1cm4gMDsgfQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA3NTMxOSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MywxOCArMjYzLDE0IEBA
IFBhZ2UqIENocm9tZUNsaWVudEltcGw6OmNyZWF0ZVdpbmRvdygKICAgICBpZiAoIW1fd2ViVmll
dy0+Y2xpZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgV3JhcHBlZFJlc291cmNlUmVx
dWVzdCByZXF1ZXN0OworICAgIGlmICghci5yZXNvdXJjZVJlcXVlc3QoKS5pc0VtcHR5KCkpCisg
ICAgICAgIHJlcXVlc3QuYmluZChyLnJlc291cmNlUmVxdWVzdCgpKTsKICAgICBXZWJWaWV3SW1w
bCogbmV3VmlldyA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oCi0gICAgICAgIG1fd2ViVmll
dy0+Y2xpZW50KCktPmNyZWF0ZVZpZXcoV2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoZnJhbWUpLCBm
ZWF0dXJlcywgci5mcmFtZU5hbWUoKSkpOworICAgICAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5j
cmVhdGVWaWV3KFdlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGZyYW1lKSwgcmVxdWVzdCwgZmVhdHVy
ZXMsIHIuZnJhbWVOYW1lKCkpKTsKICAgICBpZiAoIW5ld1ZpZXcpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgLy8gVGhlIHJlcXVlc3QgaXMgZW1wdHkgd2hlbiB3ZSBhcmUganVzdCBiZWluZyBh
c2tlZCB0byBvcGVuIGEgYmxhbmsgd2luZG93LgotICAgIC8vIFRoaXMgY29ycmVzcG9uZHMgdG8g
d2luZG93Lm9wZW4oIiIpLCBmb3IgZXhhbXBsZS4KLSAgICBpZiAoIXIucmVzb3VyY2VSZXF1ZXN0
KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFdyYXBwZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChy
LnJlc291cmNlUmVxdWVzdCgpKTsKLSAgICAgICAgbmV3Vmlldy0+bWFpbkZyYW1lKCktPmxvYWRS
ZXF1ZXN0KHJlcXVlc3QpOwotICAgIH0KLQogICAgIHJldHVybiBuZXdWaWV3LT5wYWdlKCk7CiB9
CiAKSW5kZXg6IFdlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwv
Q2hhbmdlTG9nCShyZXZpc2lvbiA3NTMxOSkKKysrIFdlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDEtMDggIFhpYW56aHUgV2FuZyA8cGhu
aXh3eHpAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTQ0MQor
ICAgICAgICBjcmVhdGVXaW5kb3cgbWV0aG9kIHNob3VsZCBvbmx5IGRvIHdpbmRvdy1jcmVhdGlu
ZyB3aXRob3V0IFVSTCBuYXZpZ2F0aW9uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpjcmVh
dGVXaW5kb3cpOgorCiAyMDEwLTEyLTI3ICBSYWZhZWwgQW50b2dub2xsaSAgPGFudG9nbm9sbGlA
cHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCkluZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRFZmwuY3BwCShyZXZpc2lvbiA3NTMxOSkKKysrIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDkgKzE1NCw2IEBAIFBh
Z2UqIENocm9tZUNsaWVudEVmbDo6Y3JlYXRlV2luZG93KEZyYW0KICAgICBpZiAoIW5ld1ZpZXcp
CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKCFmcmFtZUxvYWRSZXF1ZXN0LmlzRW1wdHko
KSkKLSAgICAgICAgZXdrX3ZpZXdfdXJpX3NldChuZXdWaWV3LCBmcmFtZUxvYWRSZXF1ZXN0LnJl
c291cmNlUmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotCiAgICAgcmV0
dXJuIGV3a192aWV3X2NvcmVfcGFnZV9nZXQobmV3Vmlldyk7CiB9CiAKSW5kZXg6IFdlYktpdC9n
dGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lv
biA3NTMxOSkKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTEtMDEtMDggIFhpYW56aHUgV2FuZyA8cGhuaXh3eHpAZ21haWwuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTQ0MQorICAgICAgICBjcmVhdGVXaW5k
b3cgbWV0aG9kIHNob3VsZCBvbmx5IGRvIHdpbmRvdy1jcmVhdGluZyB3aXRob3V0IFVSTCBuYXZp
Z2F0aW9uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisKIDIwMTEtMDEt
MDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSdWJiZXItc3Rh
bXBlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDc1MzE5KQorKysgV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsOSAr
MTYwLDYgQEAgUGFnZSogQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUqIAogICAgIEdS
ZWZQdHI8V2ViS2l0V2ViV2luZG93RmVhdHVyZXM+IHdlYldpbmRvd0ZlYXR1cmVzKGFkb3B0R1Jl
ZihraXROZXcoY29yZUZlYXR1cmVzKSkpOwogICAgIGdfb2JqZWN0X3NldCh3ZWJWaWV3LCAid2lu
ZG93LWZlYXR1cmVzIiwgd2ViV2luZG93RmVhdHVyZXMuZ2V0KCksIE5VTEwpOwogCi0gICAgaWYg
KCFmcmFtZUxvYWRSZXF1ZXN0LmlzRW1wdHkoKSkKLSAgICAgICAgd2Via2l0X3dlYl92aWV3X29w
ZW4od2ViVmlldywgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKLQogICAgIHJldHVybiBjb3JlKHdlYlZpZXcpOwogfQogCklu
ZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5n
ZUxvZwkocmV2aXNpb24gNzUzMTkpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTAxLTA4ICBYaWFuemh1IFdhbmcgPHBobml4d3h6
QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAgICAg
ICAgY3JlYXRlV2luZG93IG1ldGhvZCBzaG91bGQgb25seSBkbyB3aW5kb3ctY3JlYXRpbmcgd2l0
aG91dCBVUkwgbmF2aWdhdGlvbgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorCiAy
MDExLTAxLTA4ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgVHJ5
IHRvIGZpeCB0aGUgTGVvcGFyZCBidWlsZC4KSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCShyZXZpc2lvbiA3NTMxOSkKKysrIFdlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcs
MTIgKzE5Nyw4IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpmb2N1c2VkRnJhbWVDaGFuZ2UKIHsK
IH0KIAotUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBj
b25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVh
dHVyZXMsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKQorUGFnZSogV2ViQ2hyb21lQ2xpZW50Ojpj
cmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3Qg
V2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikKIHsKLSAg
ICBOU1VSTFJlcXVlc3QgKlVSTFJlcXVlc3QgPSBuaWw7Ci0gICAgaWYgKCFyZXF1ZXN0LmlzRW1w
dHkoKSkKLSAgICAgICAgVVJMUmVxdWVzdCA9IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkubnNV
UkxSZXF1ZXN0KCk7Ci0gICAgCiAgICAgaWQgZGVsZWdhdGUgPSBbbV93ZWJWaWV3IFVJRGVsZWdh
dGVdOwogICAgIFdlYlZpZXcgKm5ld1dlYlZpZXc7CiAgICAgCkBAIC0yMzgsNyArMjM0LDcgQEAg
UGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbQogICAgICAgICBpZiAoaGVp
Z2h0KQogICAgICAgICAgICAgW2RpY3RGZWF0dXJlcyBzZXRPYmplY3Q6aGVpZ2h0IGZvcktleTpA
ImhlaWdodCJdOwogICAgICAgICAKLSAgICAgICAgbmV3V2ViVmlldyA9IENhbGxVSURlbGVnYXRl
KG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0Ondp
bmRvd0ZlYXR1cmVzOiksIFVSTFJlcXVlc3QsIGRpY3RGZWF0dXJlcyk7CisgICAgICAgIG5ld1dl
YlZpZXcgPSBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0
ZVdlYlZpZXdXaXRoUmVxdWVzdDp3aW5kb3dGZWF0dXJlczopLCBuaWwsIGRpY3RGZWF0dXJlcyk7
CiAgICAgICAgIAogICAgICAgICBbZGljdEZlYXR1cmVzIHJlbGVhc2VdOwogICAgICAgICBbeCBy
ZWxlYXNlXTsKQEAgLTI1Myw5ICsyNDksOSBAQCBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0
ZVdpbmRvdyhGcmFtCiAgICAgICAgIFtmdWxsc2NyZWVuIHJlbGVhc2VdOwogICAgICAgICBbZGlh
bG9nIHJlbGVhc2VdOwogICAgIH0gZWxzZSBpZiAoZmVhdHVyZXMuZGlhbG9nICYmIFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2ViVmlld01vZGFs
RGlhbG9nV2l0aFJlcXVlc3Q6KV0pIHsKLSAgICAgICAgbmV3V2ViVmlldyA9IENhbGxVSURlbGVn
YXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2ViVmlld01vZGFsRGlhbG9n
V2l0aFJlcXVlc3Q6KSwgVVJMUmVxdWVzdCk7CisgICAgICAgIG5ld1dlYlZpZXcgPSBDYWxsVUlE
ZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdNb2RhbERp
YWxvZ1dpdGhSZXF1ZXN0OiksIG5pbCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbmV3V2ViVmll
dyA9IENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2Vi
Vmlld1dpdGhSZXF1ZXN0OiksIFVSTFJlcXVlc3QpOworICAgICAgICBuZXdXZWJWaWV3ID0gQ2Fs
bFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpjcmVhdGVXZWJWaWV3V2l0
aFJlcXVlc3Q6KSwgbmlsKTsKICAgICB9CiAKICNpZiBVU0UoUExVR0lOX0hPU1RfUFJPQ0VTUykg
JiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1MzE5KQorKysg
V2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEx
LTAxLTA4ICBYaWFuemh1IFdhbmcgPHBobml4d3h6QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAgICAgICAgY3JlYXRlV2luZG93IG1ldGhvZCBzaG91
bGQgb25seSBkbyB3aW5kb3ctY3JlYXRpbmcgd2l0aG91dCBVUkwgbmF2aWdhdGlvbgorCisgICAg
ICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKG9wZW5OZXdXaW5kb3cpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNocm9tZUNsaWVudFF0OjpjcmVhdGVXaW5kb3cpOgorCiAyMDExLTAxLTA3ICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgRXJpYyBT
ZWlkZWwuCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gNzUzMTkpCisrKyBXZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI2Miw5ICsyMjYyLDExIEBAIHN0
YXRpYyB2b2lkIG9wZW5OZXdXaW5kb3coY29uc3QgUVVybCYgdXIKICAgICBpZiAoUGFnZSogb2xk
UGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAgV2luZG93RmVhdHVyZXMgZmVhdHVyZXM7
CiAgICAgICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uOwotICAgICAgICBpZiAoUGFnZSogbmV3
UGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLT5jcmVhdGVXaW5kb3coZnJhbWUsCi0gICAgICAgICAg
ICAgICAgZnJhbWVMb2FkUmVxdWVzdCh1cmwsIGZyYW1lKSwgZmVhdHVyZXMsIGFjdGlvbikpCisg
ICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgcmVxdWVzdCA9IGZyYW1lTG9hZFJlcXVlc3QodXJsLCBm
cmFtZSk7CisgICAgICAgIGlmIChQYWdlKiBuZXdQYWdlID0gb2xkUGFnZS0+Y2hyb21lKCktPmNy
ZWF0ZVdpbmRvdyhmcmFtZSwgcmVxdWVzdCwgZmVhdHVyZXMsIGFjdGlvbikpIHsKKyAgICAgICAg
ICAgIG5ld1BhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+bG9hZEZyYW1lUmVxdWVzdChyZXF1
ZXN0LCBmYWxzZSwgZmFsc2UsIDAsIDAsIFNlbmRSZWZlcnJlcik7CiAgICAgICAgICAgICBuZXdQ
YWdlLT5jaHJvbWUoKS0+c2hvdygpOworICAgICAgICB9CiAgICAgfQogfQogCkluZGV4OiBXZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAJKHJldmlzaW9uIDc1MzE5
KQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgyLDEwICsxODIsNyBAQCBQYWdlKiBDaHJvbWVDbGllbnRRdDo6Y3JlYXRl
V2luZG93KEZyYW1lCiAKICAgICAvLyBBIGNhbGwgdG8gUVdlYlBhZ2U6Om1haW5GcmFtZSgpIGlt
cGxpY2l0bHkgY3JlYXRlcyB0aGUgbWFpbiBmcmFtZS4KICAgICAvLyBNYWtlIHN1cmUgaXQgZXhp
c3RzLCBhcyBXZWJDb3JlIGV4cGVjdHMgaXQgd2hlbiByZXR1cm5pbmcgZnJvbSB0aGlzIGNhbGwu
Ci0gICAgUVdlYkZyYW1lKiBtYWluRnJhbWUgPSBuZXdQYWdlLT5tYWluRnJhbWUoKTsKLQotICAg
IGlmICghcmVxdWVzdC5pc0VtcHR5KCkpCi0gICAgICAgIG1haW5GcmFtZS0+bG9hZChyZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKTsKKyAgICBuZXdQYWdlLT5tYWluRnJhbWUoKTsKICAg
ICByZXR1cm4gbmV3UGFnZS0+ZC0+cGFnZTsKIH0KIApJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1MzE5KQor
KysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAxMS0wMS0wOCAgWGlhbnpodSBXYW5nIDxwaG5peHd4ekBnbWFpbC5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNDQxCisgICAgICAgIGNyZWF0ZVdpbmRvdyBtZXRob2Qg
c2hvdWxkIG9ubHkgZG8gd2luZG93LWNyZWF0aW5nIHdpdGhvdXQgVVJMIG5hdmlnYXRpb24KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisKIDIwMTEtMDEtMDcgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBFcmljIFNl
aWRlbC4KSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAJKHJldmlzaW9uIDc1MzE5KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsMTMgKzE5NiwxNCBAQCBzdGF0
aWMgQ09NUHRyPElQcm9wZXJ0eUJhZz4gY3JlYXRlV2luZG93CiAgICAgcmV0dXJuIENPTVB0cjxJ
UHJvcGVydHlCYWc+KEFkb3B0Q09NLCBDT01Qcm9wZXJ0eUJhZzxDT01WYXJpYW50Pjo6YWRvcHQo
bWFwKSk7CiB9CiAKLVBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiwg
Y29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgV2luZG93RmVh
dHVyZXMmIGZlYXR1cmVzLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikKK1BhZ2UqIFdlYkNocm9t
ZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNv
bnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpCiB7
CiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiBkZWxlZ2F0ZSA9IHVpRGVsZWdhdGUoKTsKICAg
ICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIENPTVB0cjxJV2ViTXV0
YWJsZVVSTFJlcXVlc3Q+IHJlcXVlc3QoQWRvcHRDT00sIFdlYk11dGFibGVVUkxSZXF1ZXN0Ojpj
cmVhdGVJbnN0YW5jZShmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSk7CisgICAg
Ly8gSnVzdCBjcmVhdGUgYSBibGFuayByZXF1ZXN0IGJlY2F1c2UgY3JlYXRlV2luZG93KCkgaXMg
b25seSByZXF1aXJlZCB0byBjcmVhdGUgd2luZG93IGJ1dCBub3QgdG8gbG9hZCBVUkwuCisgICAg
Q09NUHRyPElXZWJNdXRhYmxlVVJMUmVxdWVzdD4gcmVxdWVzdChBZG9wdENPTSwgV2ViTXV0YWJs
ZVVSTFJlcXVlc3Q6OmNyZWF0ZUluc3RhbmNlKCkpOwogCiAgICAgQ09NUHRyPElXZWJVSURlbGVn
YXRlUHJpdmF0ZTI+IGRlbGVnYXRlUHJpdmF0ZShRdWVyeSwgZGVsZWdhdGUpOwogICAgIGlmIChk
ZWxlZ2F0ZVByaXZhdGUpIHsKSW5kZXg6IFdlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gNzUzMTkpCisrKyBXZWJLaXQvd3gvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDEtMDggIFhpYW56
aHUgV2FuZyA8cGhuaXh3eHpAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MTQ0MQorICAgICAgICBjcmVhdGVXaW5kb3cgbWV0aG9kIHNob3VsZCBvbmx5IGRvIHdp
bmRvdy1jcmVhdGluZyB3aXRob3V0IFVSTCBuYXZpZ2F0aW9uCisKKyAgICAgICAgKiBXZWJLaXRT
dXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dFd4OjpjcmVhdGVXaW5kb3cpOgorCiAyMDExLTAxLTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4
OiBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCShyZXZpc2lvbiA3
NTMxOSkKKysrIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQxLDExICsxNDEsMTAgQEAgdm9pZCBDaHJvbWVDbGllbnRXeDo6Zm9j
dXNlZEZyYW1lQ2hhbmdlZAogewogfQogCi1QYWdlKiBDaHJvbWVDbGllbnRXeDo6Y3JlYXRlV2lu
ZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2luZG93
RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikKK1BhZ2UqIENocm9t
ZUNsaWVudFd4OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0Jiwg
Y29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikK
IHsKICAgICBQYWdlKiBteVBhZ2UgPSAwOwogICAgIHd4V2ViVmlld05ld1dpbmRvd0V2ZW50IHdr
RXZlbnQobV93ZWJWaWV3KTsKLSAgICB3a0V2ZW50LlNldFVSTChyZXF1ZXN0LnJlc291cmNlUmVx
dWVzdCgpLnVybCgpLnN0cmluZygpKTsKICAgICAKICAgICB3eFdlYktpdFdpbmRvd0ZlYXR1cmVz
IHdrRmVhdHVyZXMgPSB3a0ZlYXR1cmVzZm9yV2luZG93RmVhdHVyZXMoZmVhdHVyZXMpOwogICAg
IHdrRXZlbnQuU2V0V2luZG93RmVhdHVyZXMod2tGZWF0dXJlcyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78347</attachid>
            <date>2011-01-09 02:25:55 -0800</date>
            <delta_ts>2011-01-09 03:23:02 -0800</delta_ts>
            <desc>patch v3 update 2 with corrected reviewer lines</desc>
            <filename>patch41441.txt</filename>
            <type>text/plain</type>
            <size>19748</size>
            <attacher name="Xianzhu Wang">phnixwxz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1MzE5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDEtMDggIFhpYW56aHUg
V2FuZyAgPHBobml4d3h6QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBG
aXNoZXIuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQxNDQxCisgICAgICAgIGNyZWF0ZVdpbmRvdyBtZXRob2Qgc2hvdWxkIG9ubHkgZG8gd2luZG93
LWNyZWF0aW5nIHdpdGhvdXQgVVJMIG5hdmlnYXRpb24uCisgICAgICAgIExldCBjbGllbnQgQVBJ
cyBrbm93IHdoaWNoIFVSTCBhIG5ldyB3aW5kb3cgd2lsbCBzdGFydCB3aXRoCisKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2luZG93
KToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVuTmV3V2luZG93KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisKIDIwMTEtMDEtMDcg
IEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSdWJiZXItc3RhbXBl
ZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAkocmV2aXNpb24gNzUzMTkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDczLDggKzM0NzMsNiBAQCBGcmFtZSogY3JlYXRlV2lu
ZG93KEZyYW1lKiBvcGVuZXJGcmFtZSwgCiAgICAgaWYgKCFyZXF1ZXN0LmZyYW1lTmFtZSgpLmlz
RW1wdHkoKSAmJiByZXF1ZXN0LmZyYW1lTmFtZSgpICE9ICJfYmxhbmsiKSB7CiAgICAgICAgIEZy
YW1lKiBmcmFtZSA9IGxvb2t1cEZyYW1lLT50cmVlKCktPmZpbmQocmVxdWVzdC5mcmFtZU5hbWUo
KSk7CiAgICAgICAgIGlmIChmcmFtZSAmJiBvcGVuZXJGcmFtZS0+bG9hZGVyKCktPnNob3VsZEFs
bG93TmF2aWdhdGlvbihmcmFtZSkpIHsKLSAgICAgICAgICAgIGlmICghcmVxdWVzdC5yZXNvdXJj
ZVJlcXVlc3QoKS51cmwoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRl
cigpLT5sb2FkRnJhbWVSZXF1ZXN0KHJlcXVlc3QsIGZhbHNlLCBmYWxzZSwgMCwgMCwgU2VuZFJl
ZmVycmVyKTsKICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAg
ICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Zm9jdXMoKTsKICAgICAgICAgICAgIGNyZWF0
ZWQgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24g
NzUzMTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDAsNiArMTAwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBG
cmFtZSB3YW50cyB0byBjcmVhdGUgdGhlIG5ldyBQYWdlLiAgQWxzbywgdGhlIG5ld2x5IGNyZWF0
ZWQgd2luZG93CiAgICAgICAgIC8vIHNob3VsZCBub3QgYmUgc2hvd24gdG8gdGhlIHVzZXIgdW50
aWwgdGhlIENocm9tZUNsaWVudCBvZiB0aGUgbmV3bHkKICAgICAgICAgLy8gY3JlYXRlZCBQYWdl
IGhhcyBpdHMgc2hvdyBtZXRob2QgY2FsbGVkLgorICAgICAgICAvLyBUaGUgRnJhbWVMb2FkUmVx
dWVzdCBwYXJhbWV0ZXIgaXMgb25seSBmb3IgQ2hyb21lQ2xpZW50IHRvIGNoZWNrIGlmIHRoZQor
ICAgICAgICAvLyByZXF1ZXN0IGNvdWxkIGJlIGZ1bGZpbGxlZC4gIFRoZSBDaHJvbWVDbGllbnQg
c2hvdWxkIG5vdCBsb2FkIHRoZSByZXF1ZXN0LgogICAgICAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0
ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0
dXJlcyYsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBzaG93KCkgPSAwOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVu
dUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3NTMxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDkgKzE1OCwx
MCBAQCBzdGF0aWMgdm9pZCBvcGVuTmV3V2luZG93KGNvbnN0IEtVUkwmIHVyCiB7CiAgICAgaWYg
KFBhZ2UqIG9sZFBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgIEZyYW1lTG9hZFJlcXVl
c3QgcmVxdWVzdChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VS
ZXF1ZXN0KHVybFRvTG9hZCwgZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpKTsK
LSAgICAgICAgV2luZG93RmVhdHVyZXMgZmVhdHVyZXM7Ci0gICAgICAgIGlmIChQYWdlKiBuZXdQ
YWdlID0gb2xkUGFnZS0+Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhmcmFtZSwgcmVxdWVzdCwgZmVh
dHVyZXMsIE5hdmlnYXRpb25BY3Rpb24oKSkpCisgICAgICAgIGlmIChQYWdlKiBuZXdQYWdlID0g
b2xkUGFnZS0+Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhmcmFtZSwgcmVxdWVzdCwgV2luZG93RmVh
dHVyZXMoKSwgTmF2aWdhdGlvbkFjdGlvbigpKSkgeworICAgICAgICAgICAgbmV3UGFnZS0+bWFp
bkZyYW1lKCktPmxvYWRlcigpLT5sb2FkRnJhbWVSZXF1ZXN0KHJlcXVlc3QsIGZhbHNlLCBmYWxz
ZSwgMCwgMCwgU2VuZFJlZmVycmVyKTsgICAKICAgICAgICAgICAgIG5ld1BhZ2UtPmNocm9tZSgp
LT5zaG93KCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAJKHJldmlzaW9uIDc1MzE5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjk2LDE3ICsxNjk2LDExIEBAIEZyYW1lKiBET01X
aW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHIKIHsKICAgICBGcmFtZSogYWN0aXZlRnJhbWUg
PSBhY3RpdmVXaW5kb3ctPmZyYW1lKCk7CiAKLSAgICAvLyBGSVhNRTogSXQncyBtdWNoIGJldHRl
ciBmb3IgY2xpZW50IEFQSSBpZiBhIG5ldyB3aW5kb3cgc3RhcnRzIHdpdGggYSBVUkwsIGhlcmUg
d2hlcmUgd2UKLSAgICAvLyBrbm93IHdoYXQgVVJMIHdlIGFyZSBnb2luZyB0byBvcGVuLiBVbmZv
cnR1bmF0ZWx5LCB0aGlzIGNvZGUgcGFzc2VzIHRoZSBlbXB0eSBzdHJpbmcKLSAgICAvLyBmb3Ig
dGhlIFVSTCwgYnV0IHRoZXJlJ3MgYSByZWFzb24gZm9yIHRoYXQuIEJlZm9yZSBsb2FkaW5nIHdl
IGhhdmUgdG8gc2V0IHVwIHRoZSBvcGVuZXIsCi0gICAgLy8gb3BlbmVkQnlET00sIGFuZCBkaWFs
b2dBcmd1bWVudHMgdmFsdWVzLiBBbHNvLCB0byBkZWNpZGUgd2hldGhlciB0byB1c2UgdGhlIFVS
TCB3ZSBjdXJyZW50bHkKLSAgICAvLyBkbyBhbiBpc0luc2VjdXJlU2NyaXB0QWNjZXNzIGNhbGwg
dXNpbmcgdGhlIHdpbmRvdyB3ZSBjcmVhdGUsIHdoaWNoIGNhbid0IGJlIGRvbmUgYmVmb3JlCi0g
ICAgLy8gY3JlYXRpbmcgaXQuIFdlJ2QgaGF2ZSB0byByZXNvbHZlIGFsbCB0aG9zZSBpc3N1ZXMg
dG8gcGFzcyB0aGUgVVJMIGluc3RlYWQgb2YgYW4gZW1wdHkgc3RyaW5nLgotCiAgICAgLy8gRm9y
IHdoYXRldmVyIHJlYXNvbiwgRmlyZWZveCB1c2VzIHRoZSBmaXJzdCBmcmFtZSB0byBkZXRlcm1p
bmUgdGhlIG91dGdvaW5nUmVmZXJyZXIuIFdlIHJlcGxpY2F0ZSB0aGF0IGJlaGF2aW9yIGhlcmUu
CiAgICAgU3RyaW5nIHJlZmVycmVyID0gZmlyc3RGcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVm
ZXJyZXIoKTsKIAotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KEtVUkwoKSwgcmVmZXJyZXIp
OworICAgIEtVUkwgY29tcGxldGVkVVJMID0gdXJsU3RyaW5nLmlzRW1wdHkoKSA/IEtVUkwoUGFy
c2VkVVJMU3RyaW5nLCAiIikgOiBmaXJzdEZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1
cmxTdHJpbmcpOworICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGNvbXBsZXRlZFVSTCwgcmVm
ZXJyZXIpOwogICAgIEZyYW1lTG9hZGVyOjphZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdCwg
Zmlyc3RGcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nT3JpZ2luKCkpOwogICAgIEZyYW1lTG9hZFJl
cXVlc3QgZnJhbWVSZXF1ZXN0KGFjdGl2ZVdpbmRvdy0+c2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVz
dCwgZnJhbWVOYW1lKTsKIApAQCAtMTcyNiw4ICsxNzIwLDYgQEAgRnJhbWUqIERPTVdpbmRvdzo6
Y3JlYXRlV2luZG93KGNvbnN0IFN0cgogICAgIGlmIChmdW5jdGlvbikKICAgICAgICAgZnVuY3Rp
b24obmV3RnJhbWUtPmRvbVdpbmRvdygpLCBmdW5jdGlvbkNvbnRleHQpOwogCi0gICAgS1VSTCBj
b21wbGV0ZWRVUkwgPSB1cmxTdHJpbmcuaXNFbXB0eSgpID8gS1VSTChQYXJzZWRVUkxTdHJpbmcs
ICIiKSA6IGZpcnN0RnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybFN0cmluZyk7Ci0K
ICAgICBpZiAoY3JlYXRlZCkKICAgICAgICAgbmV3RnJhbWUtPmxvYWRlcigpLT5jaGFuZ2VMb2Nh
dGlvbihhY3RpdmVXaW5kb3ctPnNlY3VyaXR5T3JpZ2luKCksIGNvbXBsZXRlZFVSTCwgcmVmZXJy
ZXIsIGZhbHNlLCBmYWxzZSk7CiAgICAgZWxzZSBpZiAoIXVybFN0cmluZy5pc0VtcHR5KCkpIHsK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNzUzMTkpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDEtMDggIFhpYW56
aHUgV2FuZyAgPHBobml4d3h6QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBGaXNoZXIuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQxNDQxCisgICAgICAgIGNyZWF0ZVdpbmRvdyBtZXRob2Qgc2hvdWxkIG9ubHkgZG8gd2lu
ZG93LWNyZWF0aW5nIHdpdGhvdXQgVVJMIG5hdmlnYXRpb24uCisgICAgICAgIFBhc3MgVVJMIHJl
cXVlc3QgdG8gY3JlYXRlVmlldy4KKworICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OmNyZWF0ZVZpZXcpOgorICAgICAgICAq
IHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50
SW1wbDo6Y3JlYXRlV2luZG93KToKKwogMjAxMS0wMS0wOCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVwZGF0ZSBDaHJvbWl1bSBERVBTIHRvIHBpY2t1cCBuZXcg
R1lQIGZpbGVzLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgJKHJl
dmlzaW9uIDc1MzE5KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcgQEAgY2xhc3MgV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyOwogY2xhc3MgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lcjsKIGNsYXNzIFdlYlN0b3JhZ2VO
YW1lc3BhY2U7CiBjbGFzcyBXZWJVUkw7CitjbGFzcyBXZWJVUkxSZXF1ZXN0OwogY2xhc3MgV2Vi
VmlldzsKIGNsYXNzIFdlYldpZGdldDsKIHN0cnVjdCBXZWJDb25zb2xlTWVzc2FnZTsKQEAgLTgy
LDEwICs4MywyOCBAQCBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlIGEgbmV3IHJlbGF0ZWQgV2ViVmll
dy4gIFRoaXMgbWV0aG9kIG11c3QgY2xvbmUgaXRzIHNlc3Npb24gc3RvcmFnZQogICAgIC8vIHNv
IGFueSBzdWJzZXF1ZW50IGNhbGxzIHRvIGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIGNv
bmZvcm0gdG8gdGhlCiAgICAgLy8gV2ViU3RvcmFnZSBzcGVjaWZpY2F0aW9uLgorICAgIC8vIEZJ
WE1FOiBUaGlzIG1ldGhvZCBpcyBERVBSRUNBVEVEIGFuZCBzaG91bGQgYmUgcmVtb3ZlZCBvbmNl
IHRoZSBuZXcKKyAgICAvLyBjcmVhdGVWaWV3KCkgKHRoZSBuZXh0IG1ldGhvZCkgaXMgaW1wbGVt
ZW50ZWQgYXQgQ2hyb21pdW0gc2lkZS4KICAgICB2aXJ0dWFsIFdlYlZpZXcqIGNyZWF0ZVZpZXco
V2ViRnJhbWUqIGNyZWF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFdlYldpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgV2ViU3RyaW5nJiBuYW1lKSB7IHJldHVybiAwOyB9CiAKKyAgICAvLyBDcmVh
dGUgYSBuZXcgcmVsYXRlZCBXZWJWaWV3LiAgVGhpcyBtZXRob2QgbXVzdCBjbG9uZSBpdHMgc2Vz
c2lvbiBzdG9yYWdlCisgICAgLy8gc28gYW55IHN1YnNlcXVlbnQgY2FsbHMgdG8gY3JlYXRlU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UgY29uZm9ybSB0byB0aGUKKyAgICAvLyBXZWJTdG9yYWdlIHNw
ZWNpZmljYXRpb24uCisgICAgLy8gVGhlIHJlcXVlc3QgcGFyYW1ldGVyIGlzIG9ubHkgZm9yIHRo
ZSBjbGllbnQgdG8gY2hlY2sgaWYgdGhlIHJlcXVlc3QKKyAgICAvLyBjb3VsZCBiZSBmdWxmaWxs
ZWQuICBUaGUgY2xpZW50IHNob3VsZCBub3QgbG9hZCB0aGUgcmVxdWVzdC4KKyAgICB2aXJ0dWFs
IFdlYlZpZXcqIGNyZWF0ZVZpZXcoV2ViRnJhbWUqIGNyZWF0b3IsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdlYlVSTFJlcXVlc3QmIHJlcXVlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYldpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBuYW1lKSB7
CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgdGVtcG9yYXJ5IGRlZmF1bHQgaW1wbGVtZW50
YXRpb24gd2hpY2ggY2FsbHMgdGhlIG9sZAorICAgICAgICAvLyB2ZXJzaW9uIG9mIGNyZWF0ZVZp
ZXcoKS4gU2hvdWxkIGNoYW5nZSB0byAncmV0dXJuIDAnIHdoZW4gdGhlIG9sZCBvbmUKKyAgICAg
ICAgLy8gaXMgcmVtb3ZlZC4KKyAgICAgICAgKHZvaWQpcmVxdWVzdDsKKyAgICAgICAgcmV0dXJu
IGNyZWF0ZVZpZXcoY3JlYXRvciwgZmVhdHVyZXMsIG5hbWUpOyAKKyAgICB9CisKICAgICAvLyBD
cmVhdGUgYSBuZXcgV2ViUG9wdXBNZW51LiAgSW4gdGhlIHNlY29uZCBmb3JtLCB0aGUgY2xpZW50
IGlzCiAgICAgLy8gcmVzcG9uc2libGUgZm9yIHJlbmRlcmluZyB0aGUgY29udGVudHMgb2YgdGhl
IHBvcHVwIG1lbnUuCiAgICAgdmlydHVhbCBXZWJXaWRnZXQqIGNyZWF0ZVBvcHVwTWVudShXZWJQ
b3B1cFR5cGUpIHsgcmV0dXJuIDA7IH0KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmNwcAkocmV2aXNpb24gNzUzMTkpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0No
cm9tZUNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjMsMTggKzI2MywxNCBAQCBQ
YWdlKiBDaHJvbWVDbGllbnRJbXBsOjpjcmVhdGVXaW5kb3coCiAgICAgaWYgKCFtX3dlYlZpZXct
PmNsaWVudCgpKQogICAgICAgICByZXR1cm4gMDsKIAorICAgIFdyYXBwZWRSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdDsKKyAgICBpZiAoIXIucmVzb3VyY2VSZXF1ZXN0KCkuaXNFbXB0eSgpKQorICAg
ICAgICByZXF1ZXN0LmJpbmQoci5yZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgV2ViVmlld0ltcGwq
IG5ld1ZpZXcgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KAotICAgICAgICBtX3dlYlZpZXct
PmNsaWVudCgpLT5jcmVhdGVWaWV3KFdlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGZyYW1lKSwgZmVh
dHVyZXMsIHIuZnJhbWVOYW1lKCkpKTsKKyAgICAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+Y3Jl
YXRlVmlldyhXZWJGcmFtZUltcGw6OmZyb21GcmFtZShmcmFtZSksIHJlcXVlc3QsIGZlYXR1cmVz
LCByLmZyYW1lTmFtZSgpKSk7CiAgICAgaWYgKCFuZXdWaWV3KQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIC8vIFRoZSByZXF1ZXN0IGlzIGVtcHR5IHdoZW4gd2UgYXJlIGp1c3QgYmVpbmcgYXNr
ZWQgdG8gb3BlbiBhIGJsYW5rIHdpbmRvdy4KLSAgICAvLyBUaGlzIGNvcnJlc3BvbmRzIHRvIHdp
bmRvdy5vcGVuKCIiKSwgZm9yIGV4YW1wbGUuCi0gICAgaWYgKCFyLnJlc291cmNlUmVxdWVzdCgp
LmlzRW1wdHkoKSkgewotICAgICAgICBXcmFwcGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qoci5y
ZXNvdXJjZVJlcXVlc3QoKSk7Ci0gICAgICAgIG5ld1ZpZXctPm1haW5GcmFtZSgpLT5sb2FkUmVx
dWVzdChyZXF1ZXN0KTsKLSAgICB9Ci0KICAgICByZXR1cm4gbmV3Vmlldy0+cGFnZSgpOwogfQog
CkluZGV4OiBXZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL0No
YW5nZUxvZwkocmV2aXNpb24gNzUzMTkpCisrKyBXZWJLaXQvZWZsL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTAxLTA4ICBYaWFuemh1IFdhbmcgPHBobml4
d3h6QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNDQxCisgICAg
ICAgIGNyZWF0ZVdpbmRvdyBtZXRob2Qgc2hvdWxkIG9ubHkgZG8gd2luZG93LWNyZWF0aW5nIHdp
dGhvdXQgVVJMIG5hdmlnYXRpb24KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmNyZWF0ZVdp
bmRvdyk6CisKIDIwMTAtMTItMjcgIFJhZmFlbCBBbnRvZ25vbGxpICA8YW50b2dub2xsaUBwcm9m
dXNpb24ubW9iaT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbi4KSW5kZXg6IFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5jcHAJKHJldmlzaW9uIDc1MzE5KQorKysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsOSArMTU0LDYgQEAgUGFnZSog
Q2hyb21lQ2xpZW50RWZsOjpjcmVhdGVXaW5kb3coRnJhbQogICAgIGlmICghbmV3VmlldykKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoIWZyYW1lTG9hZFJlcXVlc3QuaXNFbXB0eSgpKQot
ICAgICAgICBld2tfdmlld191cmlfc2V0KG5ld1ZpZXcsIGZyYW1lTG9hZFJlcXVlc3QucmVzb3Vy
Y2VSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0KICAgICByZXR1cm4g
ZXdrX3ZpZXdfY29yZV9wYWdlX2dldChuZXdWaWV3KTsKIH0KIApJbmRleDogV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1
MzE5KQorKysgV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAxMS0wMS0wOCAgWGlhbnpodSBXYW5nIDxwaG5peHd4ekBnbWFpbC5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTQ0MQorICAgICAgICBjcmVhdGVXaW5kb3cgbWV0
aG9kIHNob3VsZCBvbmx5IGRvIHdpbmRvdy1jcmVhdGluZyB3aXRob3V0IFVSTCBuYXZpZ2F0aW9u
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisKIDIwMTEtMDEtMDcgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBi
eSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDc1MzE5KQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsOSArMTYwLDYg
QEAgUGFnZSogQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUqIAogICAgIEdSZWZQdHI8
V2ViS2l0V2ViV2luZG93RmVhdHVyZXM+IHdlYldpbmRvd0ZlYXR1cmVzKGFkb3B0R1JlZihraXRO
ZXcoY29yZUZlYXR1cmVzKSkpOwogICAgIGdfb2JqZWN0X3NldCh3ZWJWaWV3LCAid2luZG93LWZl
YXR1cmVzIiwgd2ViV2luZG93RmVhdHVyZXMuZ2V0KCksIE5VTEwpOwogCi0gICAgaWYgKCFmcmFt
ZUxvYWRSZXF1ZXN0LmlzRW1wdHkoKSkKLSAgICAgICAgd2Via2l0X3dlYl92aWV3X29wZW4od2Vi
VmlldywgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKLQogICAgIHJldHVybiBjb3JlKHdlYlZpZXcpOwogfQogCkluZGV4OiBX
ZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwko
cmV2aXNpb24gNzUzMTkpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDExLTAxLTA4ICBYaWFuemh1IFdhbmcgPHBobml4d3h6QGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNDQxCisgICAgICAgIGNyZWF0
ZVdpbmRvdyBtZXRob2Qgc2hvdWxkIG9ubHkgZG8gd2luZG93LWNyZWF0aW5nIHdpdGhvdXQgVVJM
IG5hdmlnYXRpb24KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5t
bToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KToKKwogMjAxMS0wMS0w
OCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFRyeSB0byBmaXgg
dGhlIExlb3BhcmQgYnVpbGQuCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5tbQkocmV2aXNpb24gNzUzMTkpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk3LDEyICsxOTcs
OCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9jdXNlZEZyYW1lQ2hhbmdlCiB7CiB9CiAKLVBh
Z2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3QgRnJh
bWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uJikKK1BhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2lu
ZG93KEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0Zl
YXR1cmVzJiBmZWF0dXJlcywgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpCiB7Ci0gICAgTlNVUkxS
ZXF1ZXN0ICpVUkxSZXF1ZXN0ID0gbmlsOwotICAgIGlmICghcmVxdWVzdC5pc0VtcHR5KCkpCi0g
ICAgICAgIFVSTFJlcXVlc3QgPSByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLm5zVVJMUmVxdWVz
dCgpOwotICAgIAogICAgIGlkIGRlbGVnYXRlID0gW21fd2ViVmlldyBVSURlbGVnYXRlXTsKICAg
ICBXZWJWaWV3ICpuZXdXZWJWaWV3OwogICAgIApAQCAtMjM4LDcgKzIzNCw3IEBAIFBhZ2UqIFdl
YkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW0KICAgICAgICAgaWYgKGhlaWdodCkKICAg
ICAgICAgICAgIFtkaWN0RmVhdHVyZXMgc2V0T2JqZWN0OmhlaWdodCBmb3JLZXk6QCJoZWlnaHQi
XTsKICAgICAgICAgCi0gICAgICAgIG5ld1dlYlZpZXcgPSBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZp
ZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDp3aW5kb3dGZWF0
dXJlczopLCBVUkxSZXF1ZXN0LCBkaWN0RmVhdHVyZXMpOworICAgICAgICBuZXdXZWJWaWV3ID0g
Q2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpjcmVhdGVXZWJWaWV3
V2l0aFJlcXVlc3Q6d2luZG93RmVhdHVyZXM6KSwgbmlsLCBkaWN0RmVhdHVyZXMpOwogICAgICAg
ICAKICAgICAgICAgW2RpY3RGZWF0dXJlcyByZWxlYXNlXTsKICAgICAgICAgW3ggcmVsZWFzZV07
CkBAIC0yNTMsOSArMjQ5LDkgQEAgUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3co
RnJhbQogICAgICAgICBbZnVsbHNjcmVlbiByZWxlYXNlXTsKICAgICAgICAgW2RpYWxvZyByZWxl
YXNlXTsKICAgICB9IGVsc2UgaWYgKGZlYXR1cmVzLmRpYWxvZyAmJiBbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdNb2RhbERpYWxvZ1dp
dGhSZXF1ZXN0OildKSB7Ci0gICAgICAgIG5ld1dlYlZpZXcgPSBDYWxsVUlEZWxlZ2F0ZShtX3dl
YlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdNb2RhbERpYWxvZ1dpdGhSZXF1
ZXN0OiksIFVSTFJlcXVlc3QpOworICAgICAgICBuZXdXZWJWaWV3ID0gQ2FsbFVJRGVsZWdhdGUo
bV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpjcmVhdGVXZWJWaWV3TW9kYWxEaWFsb2dXaXRo
UmVxdWVzdDopLCBuaWwpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG5ld1dlYlZpZXcgPSBDYWxs
VUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRo
UmVxdWVzdDopLCBVUkxSZXF1ZXN0KTsKKyAgICAgICAgbmV3V2ViVmlldyA9IENhbGxVSURlbGVn
YXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0
OiksIG5pbCk7CiAgICAgfQogCiAjaWYgVVNFKFBMVUdJTl9IT1NUX1BST0NFU1MpICYmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQpJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NTMxOSkKKysrIFdlYktpdC9x
dC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMS0wOCAg
WGlhbnpodSBXYW5nIDxwaG5peHd4ekBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gRmlzaGVyLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MTQ0MQorICAgICAgICBjcmVhdGVXaW5kb3cgbWV0aG9kIHNob3VsZCBvbmx5IGRv
IHdpbmRvdy1jcmVhdGluZyB3aXRob3V0IFVSTCBuYXZpZ2F0aW9uCisKKyAgICAgICAgKiBBcGkv
cXdlYnBhZ2UuY3BwOgorICAgICAgICAob3Blbk5ld1dpbmRvdyk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50UXQ6OmNyZWF0ZVdpbmRvdyk6CisKIDIwMTEtMDEtMDcgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBFcmljIFNlaWRlbC4KSW5k
ZXg6IFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9B
cGkvcXdlYnBhZ2UuY3BwCShyZXZpc2lvbiA3NTMxOSkKKysrIFdlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjYyLDkgKzIyNjIsMTEgQEAgc3RhdGljIHZvaWQg
b3Blbk5ld1dpbmRvdyhjb25zdCBRVXJsJiB1cgogICAgIGlmIChQYWdlKiBvbGRQYWdlID0gZnJh
bWUtPnBhZ2UoKSkgewogICAgICAgICBXaW5kb3dGZWF0dXJlcyBmZWF0dXJlczsKICAgICAgICAg
TmF2aWdhdGlvbkFjdGlvbiBhY3Rpb247Ci0gICAgICAgIGlmIChQYWdlKiBuZXdQYWdlID0gb2xk
UGFnZS0+Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhmcmFtZSwKLSAgICAgICAgICAgICAgICBmcmFt
ZUxvYWRSZXF1ZXN0KHVybCwgZnJhbWUpLCBmZWF0dXJlcywgYWN0aW9uKSkKKyAgICAgICAgRnJh
bWVMb2FkUmVxdWVzdCByZXF1ZXN0ID0gZnJhbWVMb2FkUmVxdWVzdCh1cmwsIGZyYW1lKTsKKyAg
ICAgICAgaWYgKFBhZ2UqIG5ld1BhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS0+Y3JlYXRlV2luZG93
KGZyYW1lLCByZXF1ZXN0LCBmZWF0dXJlcywgYWN0aW9uKSkgeworICAgICAgICAgICAgbmV3UGFn
ZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5sb2FkRnJhbWVSZXF1ZXN0KHJlcXVlc3QsIGZhbHNl
LCBmYWxzZSwgMCwgMCwgU2VuZFJlZmVycmVyKTsKICAgICAgICAgICAgIG5ld1BhZ2UtPmNocm9t
ZSgpLT5zaG93KCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKSW5kZXg6IFdlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAkocmV2aXNpb24gNzUzMTkpCisrKyBXZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODIsMTAgKzE4Miw3IEBAIFBhZ2UqIENocm9tZUNsaWVudFF0OjpjcmVhdGVXaW5kb3coRnJh
bWUKIAogICAgIC8vIEEgY2FsbCB0byBRV2ViUGFnZTo6bWFpbkZyYW1lKCkgaW1wbGljaXRseSBj
cmVhdGVzIHRoZSBtYWluIGZyYW1lLgogICAgIC8vIE1ha2Ugc3VyZSBpdCBleGlzdHMsIGFzIFdl
YkNvcmUgZXhwZWN0cyBpdCB3aGVuIHJldHVybmluZyBmcm9tIHRoaXMgY2FsbC4KLSAgICBRV2Vi
RnJhbWUqIG1haW5GcmFtZSA9IG5ld1BhZ2UtPm1haW5GcmFtZSgpOwotCi0gICAgaWYgKCFyZXF1
ZXN0LmlzRW1wdHkoKSkKLSAgICAgICAgbWFpbkZyYW1lLT5sb2FkKHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCkudXJsKCkpOworICAgIG5ld1BhZ2UtPm1haW5GcmFtZSgpOwogICAgIHJldHVybiBu
ZXdQYWdlLT5kLT5wYWdlOwogfQogCkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNzUzMTkpCisrKyBXZWJLaXQv
d2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTAxLTA4
ICBYaWFuemh1IFdhbmcgPHBobml4d3h6QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBGaXNoZXIuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQxNDQxCisgICAgICAgIGNyZWF0ZVdpbmRvdyBtZXRob2Qgc2hvdWxkIG9ubHkg
ZG8gd2luZG93LWNyZWF0aW5nIHdpdGhvdXQgVVJMIG5hdmlnYXRpb24KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDaHJvbWVDbGll
bnQ6OmNyZWF0ZVdpbmRvdyk6CisKIDIwMTEtMDEtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6
IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlz
aW9uIDc1MzE5KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsMTMgKzE5NiwxNCBAQCBzdGF0aWMgQ09NUHRyPElQ
cm9wZXJ0eUJhZz4gY3JlYXRlV2luZG93CiAgICAgcmV0dXJuIENPTVB0cjxJUHJvcGVydHlCYWc+
KEFkb3B0Q09NLCBDT01Qcm9wZXJ0eUJhZzxDT01WYXJpYW50Pjo6YWRvcHQobWFwKSk7CiB9CiAK
LVBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVM
b2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1
cmVzLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikKK1BhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3Jl
YXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0Zl
YXR1cmVzJiBmZWF0dXJlcywgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpCiB7CiAgICAgQ09NUHRy
PElXZWJVSURlbGVnYXRlPiBkZWxlZ2F0ZSA9IHVpRGVsZWdhdGUoKTsKICAgICBpZiAoIWRlbGVn
YXRlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIENPTVB0cjxJV2ViTXV0YWJsZVVSTFJlcXVl
c3Q+IHJlcXVlc3QoQWRvcHRDT00sIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbnN0YW5j
ZShmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSk7CisgICAgLy8gSnVzdCBjcmVh
dGUgYSBibGFuayByZXF1ZXN0IGJlY2F1c2UgY3JlYXRlV2luZG93KCkgaXMgb25seSByZXF1aXJl
ZCB0byBjcmVhdGUgd2luZG93IGJ1dCBub3QgdG8gbG9hZCBVUkwuCisgICAgQ09NUHRyPElXZWJN
dXRhYmxlVVJMUmVxdWVzdD4gcmVxdWVzdChBZG9wdENPTSwgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6
OmNyZWF0ZUluc3RhbmNlKCkpOwogCiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlUHJpdmF0ZTI+
IGRlbGVnYXRlUHJpdmF0ZShRdWVyeSwgZGVsZWdhdGUpOwogICAgIGlmIChkZWxlZ2F0ZVByaXZh
dGUpIHsKSW5kZXg6IFdlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4
L0NoYW5nZUxvZwkocmV2aXNpb24gNzUzMTkpCisrKyBXZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDEtMDggIFhpYW56aHUgV2FuZyA8cGhu
aXh3eHpAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NDEKKyAg
ICAgICAgY3JlYXRlV2luZG93IG1ldGhvZCBzaG91bGQgb25seSBkbyB3aW5kb3ctY3JlYXRpbmcg
d2l0aG91dCBVUkwgbmF2aWdhdGlvbgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVD
bGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6Y3JlYXRlV2lu
ZG93KToKKwogMjAxMS0wMS0wNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93eC9X
ZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAkocmV2aXNpb24gNzUzMTkpCisrKyBXZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0MSwxMSArMTQxLDEwIEBAIHZvaWQgQ2hyb21lQ2xpZW50V3g6OmZvY3VzZWRGcmFtZUNoYW5n
ZWQKIHsKIH0KIAotUGFnZSogQ2hyb21lQ2xpZW50V3g6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNv
bnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0
dXJlcywgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpCitQYWdlKiBDaHJvbWVDbGllbnRXeDo6Y3Jl
YXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0Zl
YXR1cmVzJiBmZWF0dXJlcywgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpCiB7CiAgICAgUGFnZSog
bXlQYWdlID0gMDsKICAgICB3eFdlYlZpZXdOZXdXaW5kb3dFdmVudCB3a0V2ZW50KG1fd2ViVmll
dyk7Ci0gICAgd2tFdmVudC5TZXRVUkwocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5z
dHJpbmcoKSk7CiAgICAgCiAgICAgd3hXZWJLaXRXaW5kb3dGZWF0dXJlcyB3a0ZlYXR1cmVzID0g
d2tGZWF0dXJlc2ZvcldpbmRvd0ZlYXR1cmVzKGZlYXR1cmVzKTsKICAgICB3a0V2ZW50LlNldFdp
bmRvd0ZlYXR1cmVzKHdrRmVhdHVyZXMpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>