<?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>67883</bug_id>
          
          <creation_ts>2011-09-09 22:25:57 -0700</creation_ts>
          <short_desc>Move root layer creation semantics to the outside of chromium compositor</short_desc>
          <delta_ts>2011-09-14 19:33:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>67440</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Shawn Singh">shawnsingh</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>465221</commentid>
    <comment_count>0</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-09-09 22:25:57 -0700</bug_when>
    <thetext>I will upload a patch right now.   Basically it creates a &quot;RootLayerFactory&quot; that is used by the WebViewImpl class.   This factory removes the need to explicitly instantiate GraphicsLayers for the rootLayer inside the chromium compositor.  This change is part of gradually isolating chromium compositor from the rest of WebKit.

There is one problem;  I am using PassOwnPtr objects where they shouldn&apos;t be...  I know this will fail the style guidlines, but I didn&apos;t see any examples in the code how to do it properly.  The problem is that I have 2 or 3 levels of indirection to pass the pointer, before it gets to the final owner.  What type of pointer should be used in that case?

If someone can please give me an &quot;easy answer&quot; of how to fix this problem, I&apos;ll do it.  Otherwise, I&apos;ll probably take far longer to figure it out given my upcoming schedule.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465227</commentid>
    <comment_count>1</comment_count>
      <attachid>106963</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-09-09 22:36:53 -0700</bug_when>
    <thetext>Created attachment 106963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465229</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-09 22:39:54 -0700</bug_when>
    <thetext>Attachment 106963 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebKit/chromium/src/WebViewImpl.cpp:2659:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit/chromium/src/WebViewImpl.cpp:2660:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit/chromium/src/WebViewImpl.cpp:2662:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit/chromium/src/RootLayerFactory.cpp:40:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit/chromium/src/RootLayerFactory.cpp:51:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Total errors found: 5 in 10 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>465235</commentid>
    <comment_count>3</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-09 23:01:47 -0700</bug_when>
    <thetext>Keep it in an OwnPtr while storing the object in a local and use .release() in your return statement. In the middle of functions like this, the local variable has ownership so it is appropriate to use OwnPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465332</commentid>
    <comment_count>4</comment_count>
      <attachid>106984</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-09-10 14:35:14 -0700</bug_when>
    <thetext>Created attachment 106984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465658</commentid>
    <comment_count>5</comment_count>
      <attachid>106984</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-09-12 10:19:32 -0700</bug_when>
    <thetext>Comment on attachment 106984
Patch

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

This is a minor nit, because I have an aversion to &quot;you have to set X before class Y works&quot; complexity; eventually somebody will violate that calling convention constraint so it&apos;s always better to just make that not be possible.

If the goal is to be able to mock out CCLayerTreeHost without needing a GraphicsLayer, an alternate solution would be to have NonCompositedContentHost::create() create the graphics layers and pass them to the constructor rather than having the constructor do it.  MockNonCompositedContentHost::create() could skip that step and pass null to its base class constructor.  You would still pass a NonCompositedContentHost to the CCLayerTreeHost::create function, so that you could pass a mock instead, but you wouldn&apos;t need to create and set all these layers just to construct a CCLayerTreeHost.

Just a suggestion of an alternate approach.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465668</commentid>
    <comment_count>6</comment_count>
      <attachid>106984</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-12 10:38:53 -0700</bug_when>
    <thetext>Comment on attachment 106984
Patch

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

This gets part of the way there, but it doesn&apos;t quite get there.  In particular I want to see the logic in CCLayerTreeHost::setRootLayer() moved out - we don&apos;t need that call at all if the GraphicsLayer manipulations are done elsewhere.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:43
&gt; +PassRefPtr&lt;CCLayerTreeHost&gt; CCLayerTreeHost::create(CCLayerTreeHostClient* client, PassOwnPtr&lt;GraphicsLayer&gt; topLevelRootLayer, PassOwnPtr&lt;NonCompositedContentHost&gt; nonCompositedContentHost, const CCSettings&amp; settings)

we really want to remove knowledge of NonCompositedContentHost completely from CCLayerTreeHost.  This patch removes part of the dependency, but these functions still rely on it:

CCLayerTreeHost::invalidateRootLayerRect()
CCLayerTreeHost::setRootLayer()
CCLayerTreeHost::setViewport()

which are all called from WebViewImpl, and a caller in LayerRendererChromium that I&apos;m fixing separately.

&gt; Source/WebKit/chromium/src/RootLayerFactory.h:47
&gt; +class RootLayerFactory {

This isn&apos;t a very useful class - it&apos;s just 2 static functions without any state.  It isn&apos;t even really a factory, since with the factory pattern you create an object that vends objects.  It looks like you&apos;ve moved the layer hierarchy management to WebViewImpl so it&apos;d be better to go ahead and put these functions there as well (although I do hate growing that file).

What about making an instantiable class that can create the root and non composited layers and set up the tree?  WebViewImpl would create an instance of this class, and then pass that (and only that) to CCLayerTreeHost::create()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466691</commentid>
    <comment_count>7</comment_count>
      <attachid>107260</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-13 16:54:01 -0700</bug_when>
    <thetext>Created attachment 107260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466693</commentid>
    <comment_count>8</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-13 16:59:32 -0700</bug_when>
    <thetext>This patch moves the root layer logic into NonCompositedContentHost. It seemed the most meaningful place to put it (I initially created a RootLayerHelper class, but it was just forwarding all calls to NonCompositedContentHost anyway).

One change this patch contains is that it removes the &quot;root&quot; layer, which doesn&apos;t seem used for anything except to add the NonCompositedContentHost&apos;s layer as a child. Removing it didn&apos;t seem to affect any test, but simplifies the code a bit. I have a version of this patch without this change if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466773</commentid>
    <comment_count>9</comment_count>
      <attachid>107260</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-13 18:51:55 -0700</bug_when>
    <thetext>Comment on attachment 107260
Patch

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

This looks really great.  Unfortunately since I had to revert the contents texture manager patch this patch doesn&apos;t seem to apply to current ToT.  I have an updated version of that patch up here: https://bugs.webkit.org/show_bug.cgi?id=67440 so hopefully it&apos;ll land soon and unblock this one.

Left some comments, not touching review? flag yet until the dependent patch lands.

&gt; Source/WebCore/platform/graphics/chromium/NonCompositedContentHost.cpp:82
&gt; +void NonCompositedContentHost::clearRenderSurfacesRecursive(LayerChromium* layer)

this function feels misplaced - CCLayerTreeHost has a pointer to the root of the LayerChromium tree and should be the only class that has to deal with the implementation details of them

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2790
&gt; +        m_nonCompositedContentHost-&gt;setVisible(visible);
&gt; +        m_layerTreeHost-&gt;setVisible(visible);

this seems like a bit of a code smell - especially since the order of calls here is essential (NonCompositedContentHost::setVisible protects textures and then CCLayerTreeHost::setVisible deletes all unprotected textures beyond a given threshold).

Maybe instead of treating this as an abstract thing (tell the NCCH and LTH about the new visibility) it&apos;d be better to make the nonCompositedContentHost more explicit? something like:

if (!visible)
  m_nonCompositedContentHost-&gt;protectVisibleRootTileTextures();
m_layerTreeHost-&gt;setVisible(visible)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467496</commentid>
    <comment_count>10</comment_count>
      <attachid>107429</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-14 17:47:33 -0700</bug_when>
    <thetext>Created attachment 107429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467497</commentid>
    <comment_count>11</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-14 17:50:59 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 107260 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=107260&amp;action=review
&gt; 
&gt; This looks really great.  Unfortunately since I had to revert the contents texture manager patch this patch doesn&apos;t seem to apply to current ToT.  I have an updated version of that patch up here: https://bugs.webkit.org/show_bug.cgi?id=67440 so hopefully it&apos;ll land soon and unblock this one.
&gt; 
&gt; Left some comments, not touching review? flag yet until the dependent patch lands.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/NonCompositedContentHost.cpp:82
&gt; &gt; +void NonCompositedContentHost::clearRenderSurfacesRecursive(LayerChromium* layer)
&gt; 
&gt; this function feels misplaced - CCLayerTreeHost has a pointer to the root of the LayerChromium tree and should be the only class that has to deal with the implementation details of them

After discussion, what I implemented clears the renderSurfaces as soon as it can (in commitTo), or on destruction. The good thing is that we have the list of layers that need to be cleared without having to traverse the tree.

&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2790
&gt; &gt; +        m_nonCompositedContentHost-&gt;setVisible(visible);
&gt; &gt; +        m_layerTreeHost-&gt;setVisible(visible);
&gt; 
&gt; this seems like a bit of a code smell - especially since the order of calls here is essential (NonCompositedContentHost::setVisible protects textures and then CCLayerTreeHost::setVisible deletes all unprotected textures beyond a given threshold).
&gt; 
&gt; Maybe instead of treating this as an abstract thing (tell the NCCH and LTH about the new visibility) it&apos;d be better to make the nonCompositedContentHost more explicit? something like:
&gt; 
&gt; if (!visible)
&gt;   m_nonCompositedContentHost-&gt;protectVisibleRootTileTextures();
&gt; m_layerTreeHost-&gt;setVisible(visible)

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467498</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-14 17:52:44 -0700</bug_when>
    <thetext>I think I&apos;ve given you the gift of merge conflicts, this patch doesn&apos;t seem to apply.  This is probably due to https://bugs.webkit.org/show_bug.cgi?id=68121 which I forgot to CC you on - sorry!

Can you double check this still works after http://trac.webkit.org/changeset/95135 ? I&apos;ll still review this iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467503</commentid>
    <comment_count>13</comment_count>
      <attachid>107429</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-14 18:00:14 -0700</bug_when>
    <thetext>Comment on attachment 107429
Patch

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

R=me with a few nits.

&gt; Source/WebCore/platform/graphics/chromium/NonCompositedContentHost.h:42
&gt; +class LayerChromium;

I don&apos;t think you need this fwd decl

&gt; Source/WebCore/platform/graphics/chromium/NonCompositedContentHost.h:72
&gt; +    WebCore::IntSize m_viewportSize;

Just IntSize, we&apos;re in the WebCore namespace here.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:411
&gt; +    for (int surfaceIndex = m_updateList.size() - 1; surfaceIndex &gt;= 0 ; --surfaceIndex) {

nit: I don&apos;t think iteration order matters here, so I&apos;d just loop through in the normal order [0, m_updateList.size()). Makes it a bit easier to spot check that this is supposed to hit every entry in the list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467512</commentid>
    <comment_count>14</comment_count>
      <attachid>107434</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-14 18:15:35 -0700</bug_when>
    <thetext>Created attachment 107434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467513</commentid>
    <comment_count>15</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-14 18:16:28 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 107429 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=107429&amp;action=review
&gt; 
&gt; R=me with a few nits.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/NonCompositedContentHost.h:42
&gt; &gt; +class LayerChromium;
&gt; 
&gt; I don&apos;t think you need this fwd decl

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/NonCompositedContentHost.h:72
&gt; &gt; +    WebCore::IntSize m_viewportSize;
&gt; 
&gt; Just IntSize, we&apos;re in the WebCore namespace here.

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:411
&gt; &gt; +    for (int surfaceIndex = m_updateList.size() - 1; surfaceIndex &gt;= 0 ; --surfaceIndex) {
&gt; 
&gt; nit: I don&apos;t think iteration order matters here, so I&apos;d just loop through in the normal order [0, m_updateList.size()). Makes it a bit easier to spot check that this is supposed to hit every entry in the list.

Done (busted for copy&amp;paste).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467516</commentid>
    <comment_count>16</comment_count>
      <attachid>107434</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-14 18:19:17 -0700</bug_when>
    <thetext>Comment on attachment 107434
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467526</commentid>
    <comment_count>17</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-14 18:35:44 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; I think I&apos;ve given you the gift of merge conflicts, this patch doesn&apos;t seem to apply.  This is probably due to https://bugs.webkit.org/show_bug.cgi?id=68121 which I forgot to CC you on - sorry!

That was trivial merge (in latest patch).

&gt; 
&gt; Can you double check this still works after http://trac.webkit.org/changeset/95135 ? I&apos;ll still review this iteration.

I tried merging that, and after solving the conflicts (and removing the setLayerTreeHost(0) call) everything seems to work just fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467545</commentid>
    <comment_count>18</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-14 19:33:12 -0700</bug_when>
    <thetext>Committed r95152: &lt;http://trac.webkit.org/changeset/95152&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106963</attachid>
            <date>2011-09-09 22:36:53 -0700</date>
            <delta_ts>2011-09-10 14:35:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67883-20110909223652.patch</filename>
            <type>text/plain</type>
            <size>16116</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ4NTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NmMzYTkzY2YyMGVkNjM0
YzQ5ZmEyMWI5ZGE0NzliY2M0OTY5Y2JmLi5mYThkZTg5YjE5NjlkMjk5MzY3YzMxYzJmMzAwMTMz
N2VkNzkyODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDktMDkgIFNoYXdu
IFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ3JlYXRlZCBhIFJv
b3RMYXllckZhY3RvcnkgY2xhc3MgYW5kIG1vdmVkIHRoZSBjcmVhdGlvbiBvZgorICAgICAgICBH
cmFwaGljc0xheWVycyBpbnN0YW5jZXMgdG8gdGhlIG91dHNpZGUgb2YgY2hyb21pdW0gY29tcG9z
aXRvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3
ODgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
c2VtYW50aWMgY2hhbmdlcyB0byB0aGUgY29kZS4gIEV4aXN0aW5nIHRlc3RzIHNob3VsZCBjYXRj
aCBlcnJvcnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21w
b3NpdGVkQ29udGVudEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oOgorICAgICAgICAo
V2ViQ29yZTo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzZXRHcmFwaGljc0xheWVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKwogMjAxMS0wOS0wOSAgUGF2
ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBpbnRyb2R1Y2UgSmF2YVNjcmlwdFNvdXJjZUZyYW1lIGNsYXNzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKaW5kZXggNzc3MzM4YTM5NmMwZDllYTAw
OGNiMzg1YjU2MzIxZDE2MzIzYTUyMC4uY2ExMTZhNDY3ZTI3MzYzYzU5NWFjZGFkMDczYjVmNTNk
Y2M3YjJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCkBA
IC0zNywxMiArMzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBOb25Db21wb3NpdGVkQ29udGVu
dEhvc3Q6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdChQYXNzT3duUHRyPExheWVyUGFpbnRlckNo
cm9taXVtPiBjb250ZW50UGFpbnQpCiAgICAgOiBtX2NvbnRlbnRQYWludChjb250ZW50UGFpbnQp
CiB7Ci0gICAgbV9ncmFwaGljc0xheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKHRoaXMpOwot
I2lmbmRlZiBOREVCVUcKLSAgICBtX2dyYXBoaWNzTGF5ZXItPnNldE5hbWUoIm5vbi1jb21wb3Np
dGVkIGNvbnRlbnQiKTsKLSNlbmRpZgotICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0RHJhd3NDb250
ZW50KHRydWUpOwotICAgIG1fZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpLT5zZXRJc1Jv
b3RMYXllcih0cnVlKTsKKyAgICAvLyBtX2dyYXBoaWNzTGF5ZXIgaXMgbm90IGluaXRpYWxpemVk
IGhlcmUuIEl0IHJlbGllcyBvbiBleHBsaWNpdGx5IHNldHRpbmcgdmlhIHNldEdyYXBoaWNzTGF5
ZXIoKS4KKyAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB0byBhdm9pZCBhIGN5Y2xpYyBkZXBlbmRl
bmN5IGJldHdlZW4gdGhlIGNvbnRlbnQgaG9zdCBhbmQgdGhlIGdyYXBoaWNzIGxheWVyLgogfQog
CiBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6On5Ob25Db21wb3NpdGVkQ29udGVudEhvc3QoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaAppbmRleCA0NjczNjA5ZDI2MzVk
ZWY1YmQ0Mjc4OTViYzViYzMxNTk2M2U0ZTYwLi41OTdkMWE3MjRhOWNkYWFhNGNlNDEwYmQ2NjQ4
ODczZDY5MjQ2OWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaApA
QCAtNTIsNyArNTIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlRW50aXJlTGF5ZXIo
KTsKICAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50Jik7CiAgICAgdm9p
ZCBwcm90ZWN0VmlzaWJsZVRpbGVUZXh0dXJlcygpOwotCisgIAorICAgIC8vIFRoaXMgY2Fubm90
IGdvIGluIHRoZSBjb25zdHJ1Y3RvciBiZWNhdXNlIGl0IGNyZWF0ZXMgYSBjeWNsaWMgZGVwZW5k
ZW5jeSAodGhlIGxheWVyIG5lZWRzIHRoaXMgaG9zdCB0byBleGlzdCBiZWZvcmUgYmVpbmcgY3Jl
YXRlZCkKKyAgICB2b2lkIHNldEdyYXBoaWNzTGF5ZXIoUGFzc093blB0cjxHcmFwaGljc0xheWVy
PiBub25Db21wb3NpdGVkTGF5ZXIpIHsgbV9ncmFwaGljc0xheWVyID0gbm9uQ29tcG9zaXRlZExh
eWVyOyB9CiAgICAgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcigpIGNvbnN0IHsgcmV0dXJu
IG1fZ3JhcGhpY3NMYXllci5nZXQoKTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5jcHAKaW5kZXggNTYzODQ1ZDFlMjJkZWY1Yzc4NDI5NTNlMTkzNjZkM2JlODcxMzZi
Ni4uNGE3MWJiZmZmODdiYTAyMDhlMjdmZDRhMDJlMTU2OTcyMGZkMzgxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC00MCwxOSArNDAsMjAgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gQ0NMYXllclRyZWVIb3N0Ojpj
cmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IENDU2V0dGluZ3MmIHNl
dHRpbmdzKQorUGFzc1JlZlB0cjxDQ0xheWVyVHJlZUhvc3Q+IENDTGF5ZXJUcmVlSG9zdDo6Y3Jl
YXRlKENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBQYXNzT3duUHRyPEdyYXBoaWNzTGF5
ZXI+IHRvcExldmVsUm9vdExheWVyLCBQYXNzT3duUHRyPE5vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dD4gbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykK
IHsKLSAgICBSZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBsYXllclRyZWVIb3N0ID0gYWRvcHRSZWYo
bmV3IENDTGF5ZXJUcmVlSG9zdChjbGllbnQsIHNldHRpbmdzKSk7CisgICAgUmVmUHRyPENDTGF5
ZXJUcmVlSG9zdD4gbGF5ZXJUcmVlSG9zdCA9IGFkb3B0UmVmKG5ldyBDQ0xheWVyVHJlZUhvc3Qo
Y2xpZW50LCB0b3BMZXZlbFJvb3RMYXllciwgbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LCBzZXR0
aW5ncykpOwogICAgIGlmICghbGF5ZXJUcmVlSG9zdC0+aW5pdGlhbGl6ZSgpKQogICAgICAgICBy
ZXR1cm4gMDsKICAgICByZXR1cm4gbGF5ZXJUcmVlSG9zdDsKIH0KIAotQ0NMYXllclRyZWVIb3N0
OjpDQ0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IEND
U2V0dGluZ3MmIHNldHRpbmdzKQorQ0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QoQ0NM
YXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gcm9v
dExheWVyLCBQYXNzT3duUHRyPE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdD4gbm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0LCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykKICAgICA6IG1fYW5pbWF0
aW5nKGZhbHNlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9mcmFtZU51bWJlcigw
KQotICAgICwgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QoTm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0OjpjcmVhdGUobV9jbGllbnQtPmNyZWF0ZVJvb3RMYXllclBhaW50ZXIoKSkpCisgICAgLCBt
X3Jvb3RMYXllcihyb290TGF5ZXIpCisgICAgLCBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdChu
b25Db21wb3NpdGVkQ29udGVudEhvc3QpCiAgICAgLCBtX3NldHRpbmdzKHNldHRpbmdzKQogICAg
ICwgbV96b29tQW5pbWF0b3JTY2FsZSgxKQogICAgICwgbV92aXNpYmxlKHRydWUpCkBAIC03NSwx
NCArNzYsNiBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZSgpCiAgICAgLy8gVXBk
YXRlIG1fc2V0dGluZ3MgYmFzZWQgb24gY2FwYWJpbGl0aWVzIHRoYXQgd2UgZ290IGJhY2sgZnJv
bSB0aGUgcmVuZGVyZXIuCiAgICAgbV9zZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBtX3By
b3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdBY2NlbGVyYXRlZFBhaW50aW5n
OwogCi0gICAgbV9yb290TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoMCk7Ci0jaWZuZGVm
IE5ERUJVRwotICAgIG1fcm9vdExheWVyLT5zZXROYW1lKCJyb290IGxheWVyIik7Ci0jZW5kaWYK
LSAgICBtX3Jvb3RMYXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKLQotICAgIG1fcm9vdExh
eWVyLT5hZGRDaGlsZChtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+Z3JhcGhpY3NMYXllcigp
KTsKLQogICAgIC8vIFdlIGNoYW5nZWQgdGhlIHJvb3QgbGF5ZXIuIFRlbGwgdGhlIHByb3h5IGEg
Y29tbWl0IGlzIG5lZWRlZC4KICAgICBtX3Byb3h5LT5zZXROZWVkc0NvbW1pdEFuZFJlZHJhdygp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGM2ZWQ4NWZhOWQyZDUxYTIwNzk2
ZjlhMjNmODg2Zjc2MTljMGFkNmMuLjAzMTkyM2ZkYmM3MDY3MmYxYWU0ZDI3NTA1M2NmMjBmZDFh
OWY0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0yNSw4ICsyNSwxMSBAQAog
I2lmbmRlZiBDQ0xheWVyVHJlZUhvc3RfaAogI2RlZmluZSBDQ0xheWVyVHJlZUhvc3RfaAogCisj
aW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgog
I2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgor
I2luY2x1ZGUgIk5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oIgogI2luY2x1ZGUgImNjL0NDUHJv
eHkuaCIKIAogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC00NSw4ICs0OCw2IEBAIGNs
YXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKIGNsYXNzIExheWVy
UGFpbnRlckNocm9taXVtOwogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOwotY2xhc3MgR3Jh
cGhpY3NMYXllcjsKLWNsYXNzIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDsKIGNsYXNzIFRleHR1
cmVNYW5hZ2VyOwogCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RDbGllbnQgewpAQCAtOTQsNyArOTUs
NyBAQCBzdHJ1Y3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyB7CiAKIGNsYXNzIENDTGF5ZXJU
cmVlSG9zdCA6IHB1YmxpYyBSZWZDb3VudGVkPENDTGF5ZXJUcmVlSG9zdD4gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gY3JlYXRlKENDTGF5ZXJUcmVl
SG9zdENsaWVudCosIGNvbnN0IENDU2V0dGluZ3MmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
Q0xheWVyVHJlZUhvc3Q+IGNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqLCBQYXNzT3duUHRy
PEdyYXBoaWNzTGF5ZXI+IHRvcExldmVsUm9vdExheWVyLCBQYXNzT3duUHRyPE5vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdD4sIGNvbnN0IENDU2V0dGluZ3MmKTsKICAgICB2aXJ0dWFsIH5DQ0xheWVy
VHJlZUhvc3QoKTsKIAogICAgIC8vIENDTGF5ZXJUcmVlSG9zdCBpbnRlcmZhY2UgdG8gQ0NQcm94
eS4KQEAgLTE1OCw3ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVMYXllcnMoKTsK
IAogcHJvdGVjdGVkOgotICAgIENDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQq
LCBjb25zdCBDQ1NldHRpbmdzJik7CisgICAgQ0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9z
dENsaWVudCosIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gcm9vdExheWVyLCBQYXNzT3duUHRy
PE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdD4sIGNvbnN0IENDU2V0dGluZ3MmKTsKIAogcHJpdmF0
ZToKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBMYXllckxpc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGM1ODcwNGZjZTc3YTkyMjkzMDUwMWFiZjFk
ZjIxMmZiMzVlMjE4OWIuLjI1ZWNhZTVjYTM2NmVkYmJjYjQxOTFjZTljNzAwZWExODIzYzkyODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDktMDkg
IFNoYXduIFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ3JlYXRl
ZCBhIFJvb3RMYXllckZhY3RvcnkgY2xhc3MgYW5kIG1vdmVkIHRoZSBjcmVhdGlvbiBvZgorICAg
ICAgICBHcmFwaGljc0xheWVycyBpbnN0YW5jZXMgdG8gdGhlIG91dHNpZGUgb2YgY2hyb21pdW0g
Y29tcG9zaXRvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY3ODgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUp
OgorICAgICAgICAqIHNyYy9Sb290TGF5ZXJGYWN0b3J5Lmg6CisgICAgICAgICogc3JjL1Jvb3RM
YXllckZhY3RvcnkuY3BwOgorCiAyMDExLTA5LTA5ICBNYXJ0aW4gS29zaWJhICA8bWtvc2liYUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgRXhwb3NpbmcgdGhlIGlzTGluayBtZXRob2Qgb24gV2Vi
Tm9kZSBmb3IgdGhlIENocm9taXVtIHBvcnQgb24gQW5kcm9pZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAppbmRleCA1NjQyMmFlNGExNmUwY2IxOWU2ZDUxOWExZGM3OTc1ZmJlZGJmYzI1Li5h
M2U3OGZmNGZjYmVkNTMzMGFjYzU5YjE1NDkwNjFlNjg0OGU3MjY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCkBAIC00MDgsNiArNDA4LDggQEAKICAgICAgICAgICAgICAgICAnc3JjL1Bs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvUGxhdGZv
cm1TdXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9SZXNvdXJjZUhhbmRsZS5jcHAn
LAorICAgICAgICAgICAgICAgICdzcmMvUm9vdExheWVyRmFjdG9yeS5jcHAnLAorICAgICAgICAg
ICAgICAgICdzcmMvUm9vdExheWVyRmFjdG9yeS5oJywKICAgICAgICAgICAgICAgICAnc3JjL1Nj
cm9sbGJhckdyb3VwLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9TY3JvbGxiYXJHcm91cC5o
JywKICAgICAgICAgICAgICAgICAnc3JjL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Jvb3RMYXllckZhY3RvcnkuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUm9vdExheWVyRmFjdG9yeS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGM0ODhhZDQ0MGIxODkzOTYwODUyMzg2NjQ1ZjU3M2EzM2ExNmJjMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Jvb3RMYXllckZhY3RvcnkuY3Bw
CkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUm9vdExheWVy
RmFjdG9yeS5oIgorCisjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBSb290TGF5ZXJGYWN0b3J5
OjpjcmVhdGVUb3BMZXZlbFJvb3RMYXllcihHcmFwaGljc0xheWVyKiBub25Db21wb3NpdGVkQ29u
dGVudExheWVyKQoreworICAgIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gcm9vdExheWVyID0g
R3JhcGhpY3NMYXllcjo6Y3JlYXRlKDApOworI2lmbmRlZiBOREVCVUcKKyAgICByb290TGF5ZXIt
PnNldE5hbWUoInJvb3QgbGF5ZXIiKTsKKyNlbmRpZgorICAgIHJvb3RMYXllci0+c2V0RHJhd3ND
b250ZW50KGZhbHNlKTsKKyAgICByb290TGF5ZXItPmFkZENoaWxkKG5vbkNvbXBvc2l0ZWRDb250
ZW50TGF5ZXIpOworICAgIHJldHVybiByb290TGF5ZXI7Cit9CisKK1Bhc3NPd25QdHI8R3JhcGhp
Y3NMYXllcj4gUm9vdExheWVyRmFjdG9yeTo6Y3JlYXRlTm9uQ29tcG9zaXRlZFJvb3RMYXllcihO
b25Db21wb3NpdGVkQ29udGVudEhvc3QqIGhvc3QpCit7CisgICAgUGFzc093blB0cjxHcmFwaGlj
c0xheWVyPiBub25Db21wb3NpdGVkUm9vdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGhv
c3QpOworI2lmbmRlZiBOREVCVUcKKyAgICBub25Db21wb3NpdGVkUm9vdExheWVyLT5zZXROYW1l
KCJub24tY29tcG9zaXRlZCBjb250ZW50Iik7CisjZW5kaWYKKyAgICBub25Db21wb3NpdGVkUm9v
dExheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgbm9uQ29tcG9zaXRlZFJvb3RMYXll
ci0+cGxhdGZvcm1MYXllcigpLT5zZXRJc1Jvb3RMYXllcih0cnVlKTsKKyAgICByZXR1cm4gbm9u
Q29tcG9zaXRlZFJvb3RMYXllcjsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1Jvb3RMYXllckZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Jv
b3RMYXllckZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWE2Y2M0MDdhZmM3MWYwNzUyNDNlODZkM2Q5
ZGI3NWE0NzdlOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvUm9vdExheWVyRmFjdG9yeS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJvb3RMYXllckZh
Y3RvcnlfaAorI2RlZmluZSBSb290TGF5ZXJGYWN0b3J5X2gKKworI2luY2x1ZGUgIkdyYXBoaWNz
TGF5ZXIuaCIKKyNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIk5v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3JhcGhpY3NMYXllcjsKK2NsYXNzIE5vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdDsKKworLy8gRklYTUU6IFRoaXMgY2xhc3MgbWF5IG9yIG1heSBu
b3QgYmUgd29ydGgga2VlcGluZy4gRm9yIG5vdyBpdCBpcworLy8gYSBzdGVwIHRvd2FyZHMgc2Vw
YXJhdGluZyBXZWJDb3JlIGZyb20gdGhlIENocm9taXVtIENvbXBvc2l0b3IuCisvLyBXZSBzaG91
bGQgcmUtdmlzaXQgd2hldGhlciB0aGlzIGlzIGFwcHJvcHJpYXRlIGFmdGVyIHRoYXQgc2VwYXJh
dGlvbi4KK2NsYXNzIFJvb3RMYXllckZhY3RvcnkgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
T3duUHRyPEdyYXBoaWNzTGF5ZXI+IGNyZWF0ZVRvcExldmVsUm9vdExheWVyKEdyYXBoaWNzTGF5
ZXIqIG5vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPEdy
YXBoaWNzTGF5ZXI+IGNyZWF0ZU5vbkNvbXBvc2l0ZWRSb290TGF5ZXIoTm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDczOGQ3YTNkOTVk
YzUzZWY4MTJlZDQzOWQyYjE5YzE4YzgyYmY3YzkuLjM4ZDg0MTljODQwZWY1MjU0YzZlMzM4YTFk
MDJlMTljMWY4OWUyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAKQEAgLTc3LDYgKzc3LDcgQEAKICNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5o
IgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5
bGUuaCIKKyNpbmNsdWRlICJOb25Db21wb3NpdGVkQ29udGVudEhvc3QuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwTG9hZERl
ZmVycmVyLmgiCkBAIC05MSw2ICs5Miw3IEBACiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgi
CiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisj
aW5jbHVkZSAiUm9vdExheWVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudEltcGwu
aCIKQEAgLTI2NjIsNyArMjY2NCwxMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgIGNjU2V0dGluZ3Muc2hv
d0ZQU0NvdW50ZXIgPSBzZXR0aW5ncygpLT5zaG93RlBTQ291bnRlcigpOwogICAgICAgICBjY1Nl
dHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSA9IHNldHRpbmdzKCktPnNob3dQbGF0Zm9ybUxh
eWVyVHJlZSgpOwogCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IENDTGF5ZXJUcmVlSG9zdDo6
Y3JlYXRlKHRoaXMsIGNjU2V0dGluZ3MpOworICAgICAgICBQYXNzT3duUHRyPE5vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdD4gbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0ID0gTm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0OjpjcmVhdGUoV2ViVmlld0ltcGxDb250ZW50UGFpbnRlcjo6Y3JlYXRlKHRoaXMp
KTsKKyAgICAgICAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBub25Db21wb3NpdGVkUm9vdExh
eWVyID0gUm9vdExheWVyRmFjdG9yeTo6Y3JlYXRlTm9uQ29tcG9zaXRlZFJvb3RMYXllcihub25D
b21wb3NpdGVkQ29udGVudEhvc3QuZ2V0KCkpOworICAgICAgICBub25Db21wb3NpdGVkQ29udGVu
dEhvc3QtPnNldEdyYXBoaWNzTGF5ZXIobm9uQ29tcG9zaXRlZFJvb3RMYXllcik7CisgICAgICAg
IFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gdG9wTGV2ZWxSb290TGF5ZXIgPSBSb290TGF5ZXJG
YWN0b3J5OjpjcmVhdGVUb3BMZXZlbFJvb3RMYXllcihub25Db21wb3NpdGVkQ29udGVudEhvc3Qt
PmdyYXBoaWNzTGF5ZXIoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IENDTGF5ZXJUcmVl
SG9zdDo6Y3JlYXRlKHRoaXMsIHRvcExldmVsUm9vdExheWVyLCBub25Db21wb3NpdGVkQ29udGVu
dEhvc3QsIGNjU2V0dGluZ3MpOwogICAgICAgICBpZiAobV9sYXllclRyZWVIb3N0KSB7CiAgICAg
ICAgICAgICB1cGRhdGVMYXllclRyZWVWaWV3cG9ydCgpOwogICAgICAgICAgICAgbV9jbGllbnQt
PmRpZEFjdGl2YXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZyh0cnVlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106984</attachid>
            <date>2011-09-10 14:35:14 -0700</date>
            <delta_ts>2011-09-12 10:38:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67883-20110910143513.patch</filename>
            <type>text/plain</type>
            <size>16146</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ4NTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NmMzYTkzY2YyMGVkNjM0
YzQ5ZmEyMWI5ZGE0NzliY2M0OTY5Y2JmLi5mYThkZTg5YjE5NjlkMjk5MzY3YzMxYzJmMzAwMTMz
N2VkNzkyODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDktMDkgIFNoYXdu
IFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ3JlYXRlZCBhIFJv
b3RMYXllckZhY3RvcnkgY2xhc3MgYW5kIG1vdmVkIHRoZSBjcmVhdGlvbiBvZgorICAgICAgICBH
cmFwaGljc0xheWVycyBpbnN0YW5jZXMgdG8gdGhlIG91dHNpZGUgb2YgY2hyb21pdW0gY29tcG9z
aXRvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3
ODgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
c2VtYW50aWMgY2hhbmdlcyB0byB0aGUgY29kZS4gIEV4aXN0aW5nIHRlc3RzIHNob3VsZCBjYXRj
aCBlcnJvcnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21w
b3NpdGVkQ29udGVudEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oOgorICAgICAgICAo
V2ViQ29yZTo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzZXRHcmFwaGljc0xheWVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKwogMjAxMS0wOS0wOSAgUGF2
ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBpbnRyb2R1Y2UgSmF2YVNjcmlwdFNvdXJjZUZyYW1lIGNsYXNzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKaW5kZXggNzc3MzM4YTM5NmMwZDllYTAw
OGNiMzg1YjU2MzIxZDE2MzIzYTUyMC4uY2ExMTZhNDY3ZTI3MzYzYzU5NWFjZGFkMDczYjVmNTNk
Y2M3YjJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCkBA
IC0zNywxMiArMzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBOb25Db21wb3NpdGVkQ29udGVu
dEhvc3Q6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdChQYXNzT3duUHRyPExheWVyUGFpbnRlckNo
cm9taXVtPiBjb250ZW50UGFpbnQpCiAgICAgOiBtX2NvbnRlbnRQYWludChjb250ZW50UGFpbnQp
CiB7Ci0gICAgbV9ncmFwaGljc0xheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKHRoaXMpOwot
I2lmbmRlZiBOREVCVUcKLSAgICBtX2dyYXBoaWNzTGF5ZXItPnNldE5hbWUoIm5vbi1jb21wb3Np
dGVkIGNvbnRlbnQiKTsKLSNlbmRpZgotICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0RHJhd3NDb250
ZW50KHRydWUpOwotICAgIG1fZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpLT5zZXRJc1Jv
b3RMYXllcih0cnVlKTsKKyAgICAvLyBtX2dyYXBoaWNzTGF5ZXIgaXMgbm90IGluaXRpYWxpemVk
IGhlcmUuIEl0IHJlbGllcyBvbiBleHBsaWNpdGx5IHNldHRpbmcgdmlhIHNldEdyYXBoaWNzTGF5
ZXIoKS4KKyAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB0byBhdm9pZCBhIGN5Y2xpYyBkZXBlbmRl
bmN5IGJldHdlZW4gdGhlIGNvbnRlbnQgaG9zdCBhbmQgdGhlIGdyYXBoaWNzIGxheWVyLgogfQog
CiBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6On5Ob25Db21wb3NpdGVkQ29udGVudEhvc3QoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaAppbmRleCA0NjczNjA5ZDI2MzVk
ZWY1YmQ0Mjc4OTViYzViYzMxNTk2M2U0ZTYwLi41OTdkMWE3MjRhOWNkYWFhNGNlNDEwYmQ2NjQ4
ODczZDY5MjQ2OWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaApA
QCAtNTIsNyArNTIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlRW50aXJlTGF5ZXIo
KTsKICAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50Jik7CiAgICAgdm9p
ZCBwcm90ZWN0VmlzaWJsZVRpbGVUZXh0dXJlcygpOwotCisgIAorICAgIC8vIFRoaXMgY2Fubm90
IGdvIGluIHRoZSBjb25zdHJ1Y3RvciBiZWNhdXNlIGl0IGNyZWF0ZXMgYSBjeWNsaWMgZGVwZW5k
ZW5jeSAodGhlIGxheWVyIG5lZWRzIHRoaXMgaG9zdCB0byBleGlzdCBiZWZvcmUgYmVpbmcgY3Jl
YXRlZCkKKyAgICB2b2lkIHNldEdyYXBoaWNzTGF5ZXIoUGFzc093blB0cjxHcmFwaGljc0xheWVy
PiBub25Db21wb3NpdGVkTGF5ZXIpIHsgbV9ncmFwaGljc0xheWVyID0gbm9uQ29tcG9zaXRlZExh
eWVyOyB9CiAgICAgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcigpIGNvbnN0IHsgcmV0dXJu
IG1fZ3JhcGhpY3NMYXllci5nZXQoKTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5jcHAKaW5kZXggNTYzODQ1ZDFlMjJkZWY1Yzc4NDI5NTNlMTkzNjZkM2JlODcxMzZi
Ni4uNGE3MWJiZmZmODdiYTAyMDhlMjdmZDRhMDJlMTU2OTcyMGZkMzgxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC00MCwxOSArNDAsMjAgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gQ0NMYXllclRyZWVIb3N0Ojpj
cmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IENDU2V0dGluZ3MmIHNl
dHRpbmdzKQorUGFzc1JlZlB0cjxDQ0xheWVyVHJlZUhvc3Q+IENDTGF5ZXJUcmVlSG9zdDo6Y3Jl
YXRlKENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBQYXNzT3duUHRyPEdyYXBoaWNzTGF5
ZXI+IHRvcExldmVsUm9vdExheWVyLCBQYXNzT3duUHRyPE5vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dD4gbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykK
IHsKLSAgICBSZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBsYXllclRyZWVIb3N0ID0gYWRvcHRSZWYo
bmV3IENDTGF5ZXJUcmVlSG9zdChjbGllbnQsIHNldHRpbmdzKSk7CisgICAgUmVmUHRyPENDTGF5
ZXJUcmVlSG9zdD4gbGF5ZXJUcmVlSG9zdCA9IGFkb3B0UmVmKG5ldyBDQ0xheWVyVHJlZUhvc3Qo
Y2xpZW50LCB0b3BMZXZlbFJvb3RMYXllciwgbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LCBzZXR0
aW5ncykpOwogICAgIGlmICghbGF5ZXJUcmVlSG9zdC0+aW5pdGlhbGl6ZSgpKQogICAgICAgICBy
ZXR1cm4gMDsKICAgICByZXR1cm4gbGF5ZXJUcmVlSG9zdDsKIH0KIAotQ0NMYXllclRyZWVIb3N0
OjpDQ0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IEND
U2V0dGluZ3MmIHNldHRpbmdzKQorQ0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QoQ0NM
YXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gcm9v
dExheWVyLCBQYXNzT3duUHRyPE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdD4gbm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0LCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykKICAgICA6IG1fYW5pbWF0
aW5nKGZhbHNlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9mcmFtZU51bWJlcigw
KQotICAgICwgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QoTm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0OjpjcmVhdGUobV9jbGllbnQtPmNyZWF0ZVJvb3RMYXllclBhaW50ZXIoKSkpCisgICAgLCBt
X3Jvb3RMYXllcihyb290TGF5ZXIpCisgICAgLCBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdChu
b25Db21wb3NpdGVkQ29udGVudEhvc3QpCiAgICAgLCBtX3NldHRpbmdzKHNldHRpbmdzKQogICAg
ICwgbV96b29tQW5pbWF0b3JTY2FsZSgxKQogICAgICwgbV92aXNpYmxlKHRydWUpCkBAIC03NSwx
NCArNzYsNiBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZSgpCiAgICAgLy8gVXBk
YXRlIG1fc2V0dGluZ3MgYmFzZWQgb24gY2FwYWJpbGl0aWVzIHRoYXQgd2UgZ290IGJhY2sgZnJv
bSB0aGUgcmVuZGVyZXIuCiAgICAgbV9zZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBtX3By
b3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdBY2NlbGVyYXRlZFBhaW50aW5n
OwogCi0gICAgbV9yb290TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoMCk7Ci0jaWZuZGVm
IE5ERUJVRwotICAgIG1fcm9vdExheWVyLT5zZXROYW1lKCJyb290IGxheWVyIik7Ci0jZW5kaWYK
LSAgICBtX3Jvb3RMYXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKLQotICAgIG1fcm9vdExh
eWVyLT5hZGRDaGlsZChtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+Z3JhcGhpY3NMYXllcigp
KTsKLQogICAgIC8vIFdlIGNoYW5nZWQgdGhlIHJvb3QgbGF5ZXIuIFRlbGwgdGhlIHByb3h5IGEg
Y29tbWl0IGlzIG5lZWRlZC4KICAgICBtX3Byb3h5LT5zZXROZWVkc0NvbW1pdEFuZFJlZHJhdygp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGM2ZWQ4NWZhOWQyZDUxYTIwNzk2
ZjlhMjNmODg2Zjc2MTljMGFkNmMuLjAzMTkyM2ZkYmM3MDY3MmYxYWU0ZDI3NTA1M2NmMjBmZDFh
OWY0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0yNSw4ICsyNSwxMSBAQAog
I2lmbmRlZiBDQ0xheWVyVHJlZUhvc3RfaAogI2RlZmluZSBDQ0xheWVyVHJlZUhvc3RfaAogCisj
aW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgog
I2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgor
I2luY2x1ZGUgIk5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oIgogI2luY2x1ZGUgImNjL0NDUHJv
eHkuaCIKIAogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC00NSw4ICs0OCw2IEBAIGNs
YXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKIGNsYXNzIExheWVy
UGFpbnRlckNocm9taXVtOwogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOwotY2xhc3MgR3Jh
cGhpY3NMYXllcjsKLWNsYXNzIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDsKIGNsYXNzIFRleHR1
cmVNYW5hZ2VyOwogCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RDbGllbnQgewpAQCAtOTQsNyArOTUs
NyBAQCBzdHJ1Y3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyB7CiAKIGNsYXNzIENDTGF5ZXJU
cmVlSG9zdCA6IHB1YmxpYyBSZWZDb3VudGVkPENDTGF5ZXJUcmVlSG9zdD4gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gY3JlYXRlKENDTGF5ZXJUcmVl
SG9zdENsaWVudCosIGNvbnN0IENDU2V0dGluZ3MmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
Q0xheWVyVHJlZUhvc3Q+IGNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqLCBQYXNzT3duUHRy
PEdyYXBoaWNzTGF5ZXI+IHRvcExldmVsUm9vdExheWVyLCBQYXNzT3duUHRyPE5vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdD4sIGNvbnN0IENDU2V0dGluZ3MmKTsKICAgICB2aXJ0dWFsIH5DQ0xheWVy
VHJlZUhvc3QoKTsKIAogICAgIC8vIENDTGF5ZXJUcmVlSG9zdCBpbnRlcmZhY2UgdG8gQ0NQcm94
eS4KQEAgLTE1OCw3ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVMYXllcnMoKTsK
IAogcHJvdGVjdGVkOgotICAgIENDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQq
LCBjb25zdCBDQ1NldHRpbmdzJik7CisgICAgQ0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9z
dENsaWVudCosIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gcm9vdExheWVyLCBQYXNzT3duUHRy
PE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdD4sIGNvbnN0IENDU2V0dGluZ3MmKTsKIAogcHJpdmF0
ZToKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBMYXllckxpc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGM1ODcwNGZjZTc3YTkyMjkzMDUwMWFiZjFk
ZjIxMmZiMzVlMjE4OWIuLjI1ZWNhZTVjYTM2NmVkYmJjYjQxOTFjZTljNzAwZWExODIzYzkyODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDktMDkg
IFNoYXduIFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ3JlYXRl
ZCBhIFJvb3RMYXllckZhY3RvcnkgY2xhc3MgYW5kIG1vdmVkIHRoZSBjcmVhdGlvbiBvZgorICAg
ICAgICBHcmFwaGljc0xheWVycyBpbnN0YW5jZXMgdG8gdGhlIG91dHNpZGUgb2YgY2hyb21pdW0g
Y29tcG9zaXRvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY3ODgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUp
OgorICAgICAgICAqIHNyYy9Sb290TGF5ZXJGYWN0b3J5Lmg6CisgICAgICAgICogc3JjL1Jvb3RM
YXllckZhY3RvcnkuY3BwOgorCiAyMDExLTA5LTA5ICBNYXJ0aW4gS29zaWJhICA8bWtvc2liYUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgRXhwb3NpbmcgdGhlIGlzTGluayBtZXRob2Qgb24gV2Vi
Tm9kZSBmb3IgdGhlIENocm9taXVtIHBvcnQgb24gQW5kcm9pZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAppbmRleCA1NjQyMmFlNGExNmUwY2IxOWU2ZDUxOWExZGM3OTc1ZmJlZGJmYzI1Li5h
M2U3OGZmNGZjYmVkNTMzMGFjYzU5YjE1NDkwNjFlNjg0OGU3MjY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCkBAIC00MDgsNiArNDA4LDggQEAKICAgICAgICAgICAgICAgICAnc3JjL1Bs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvUGxhdGZv
cm1TdXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9SZXNvdXJjZUhhbmRsZS5jcHAn
LAorICAgICAgICAgICAgICAgICdzcmMvUm9vdExheWVyRmFjdG9yeS5jcHAnLAorICAgICAgICAg
ICAgICAgICdzcmMvUm9vdExheWVyRmFjdG9yeS5oJywKICAgICAgICAgICAgICAgICAnc3JjL1Nj
cm9sbGJhckdyb3VwLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9TY3JvbGxiYXJHcm91cC5o
JywKICAgICAgICAgICAgICAgICAnc3JjL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Jvb3RMYXllckZhY3RvcnkuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUm9vdExheWVyRmFjdG9yeS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzQ3YjQ2YWVlZmQ2MjE2MWIzMzM2NzE1MTIxNDA5OTYzMmFlOGYyYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Jvb3RMYXllckZhY3RvcnkuY3Bw
CkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUm9vdExheWVy
RmFjdG9yeS5oIgorCisjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBSb290TGF5ZXJGYWN0b3J5
OjpjcmVhdGVUb3BMZXZlbFJvb3RMYXllcihHcmFwaGljc0xheWVyKiBub25Db21wb3NpdGVkQ29u
dGVudExheWVyKQoreworICAgIE93blB0cjxHcmFwaGljc0xheWVyPiByb290TGF5ZXIgPSBHcmFw
aGljc0xheWVyOjpjcmVhdGUoMCk7CisjaWZuZGVmIE5ERUJVRworICAgIHJvb3RMYXllci0+c2V0
TmFtZSgicm9vdCBsYXllciIpOworI2VuZGlmCisgICAgcm9vdExheWVyLT5zZXREcmF3c0NvbnRl
bnQoZmFsc2UpOworICAgIHJvb3RMYXllci0+YWRkQ2hpbGQobm9uQ29tcG9zaXRlZENvbnRlbnRM
YXllcik7CisgICAgcmV0dXJuIHJvb3RMYXllci5yZWxlYXNlKCk7Cit9CisKK1Bhc3NPd25QdHI8
R3JhcGhpY3NMYXllcj4gUm9vdExheWVyRmFjdG9yeTo6Y3JlYXRlTm9uQ29tcG9zaXRlZFJvb3RM
YXllcihOb25Db21wb3NpdGVkQ29udGVudEhvc3QqIGhvc3QpCit7CisgICAgT3duUHRyPEdyYXBo
aWNzTGF5ZXI+IG5vbkNvbXBvc2l0ZWRSb290TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUo
aG9zdCk7CisjaWZuZGVmIE5ERUJVRworICAgIG5vbkNvbXBvc2l0ZWRSb290TGF5ZXItPnNldE5h
bWUoIm5vbi1jb21wb3NpdGVkIGNvbnRlbnQiKTsKKyNlbmRpZgorICAgIG5vbkNvbXBvc2l0ZWRS
b290TGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICBub25Db21wb3NpdGVkUm9vdExh
eWVyLT5wbGF0Zm9ybUxheWVyKCktPnNldElzUm9vdExheWVyKHRydWUpOworICAgIHJldHVybiBu
b25Db21wb3NpdGVkUm9vdExheWVyLnJlbGVhc2UoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1Jvb3RMYXllckZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1Jvb3RMYXllckZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWE2Y2M0MDdhZmM3MWYw
NzUyNDNlODZkM2Q5ZGI3NWE0NzdlOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvUm9vdExheWVyRmFjdG9yeS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFJvb3RMYXllckZhY3RvcnlfaAorI2RlZmluZSBSb290TGF5ZXJGYWN0b3J5X2gKKworI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgor
I2luY2x1ZGUgIk5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3JhcGhpY3NMYXllcjsK
K2NsYXNzIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDsKKworLy8gRklYTUU6IFRoaXMgY2xhc3Mg
bWF5IG9yIG1heSBub3QgYmUgd29ydGgga2VlcGluZy4gRm9yIG5vdyBpdCBpcworLy8gYSBzdGVw
IHRvd2FyZHMgc2VwYXJhdGluZyBXZWJDb3JlIGZyb20gdGhlIENocm9taXVtIENvbXBvc2l0b3Iu
CisvLyBXZSBzaG91bGQgcmUtdmlzaXQgd2hldGhlciB0aGlzIGlzIGFwcHJvcHJpYXRlIGFmdGVy
IHRoYXQgc2VwYXJhdGlvbi4KK2NsYXNzIFJvb3RMYXllckZhY3RvcnkgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IGNyZWF0ZVRvcExldmVsUm9vdExheWVy
KEdyYXBoaWNzTGF5ZXIqIG5vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIpOworICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IGNyZWF0ZU5vbkNvbXBvc2l0ZWRSb290TGF5ZXIoTm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4
IDczOGQ3YTNkOTVkYzUzZWY4MTJlZDQzOWQyYjE5YzE4YzgyYmY3YzkuLmM1NTNmOTUwMjU0Zjli
OGU2ZGZhNTllMWJjYTk3OTZmZjJmZjhjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKQEAgLTc3LDYgKzc3LDcgQEAKICNpbmNsdWRlICJMYXllclBhaW50
ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJO
b2RlUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJOb25Db21wb3NpdGVkQ29udGVudEhvc3QuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGFn
ZUdyb3VwTG9hZERlZmVycmVyLmgiCkBAIC05MSw2ICs5Miw3IEBACiAjaW5jbHVkZSAiUHJvZ3Jl
c3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlc291cmNl
SGFuZGxlLmgiCisjaW5jbHVkZSAiUm9vdExheWVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTcGVlY2hJbnB1
dENsaWVudEltcGwuaCIKQEAgLTI2NjIsNyArMjY2NCwxMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpz
ZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgIGNj
U2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgPSBzZXR0aW5ncygpLT5zaG93RlBTQ291bnRlcigpOwog
ICAgICAgICBjY1NldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSA9IHNldHRpbmdzKCktPnNo
b3dQbGF0Zm9ybUxheWVyVHJlZSgpOwogCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IENDTGF5
ZXJUcmVlSG9zdDo6Y3JlYXRlKHRoaXMsIGNjU2V0dGluZ3MpOworICAgICAgICBPd25QdHI8Tm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0PiBub25Db21wb3NpdGVkQ29udGVudEhvc3QgPSBOb25Db21w
b3NpdGVkQ29udGVudEhvc3Q6OmNyZWF0ZShXZWJWaWV3SW1wbENvbnRlbnRQYWludGVyOjpjcmVh
dGUodGhpcykpOworICAgICAgICBPd25QdHI8R3JhcGhpY3NMYXllcj4gbm9uQ29tcG9zaXRlZFJv
b3RMYXllciA9IFJvb3RMYXllckZhY3Rvcnk6OmNyZWF0ZU5vbkNvbXBvc2l0ZWRSb290TGF5ZXIo
bm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmdldCgpKTsKKyAgICAgICAgbm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0LT5zZXRHcmFwaGljc0xheWVyKG5vbkNvbXBvc2l0ZWRSb290TGF5ZXIucmVsZWFz
ZSgpKTsKKyAgICAgICAgT3duUHRyPEdyYXBoaWNzTGF5ZXI+IHRvcExldmVsUm9vdExheWVyID0g
Um9vdExheWVyRmFjdG9yeTo6Y3JlYXRlVG9wTGV2ZWxSb290TGF5ZXIobm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0LT5ncmFwaGljc0xheWVyKCkpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBD
Q0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0aGlzLCB0b3BMZXZlbFJvb3RMYXllci5yZWxlYXNlKCks
IG5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5yZWxlYXNlKCksIGNjU2V0dGluZ3MpOwogICAgICAg
ICBpZiAobV9sYXllclRyZWVIb3N0KSB7CiAgICAgICAgICAgICB1cGRhdGVMYXllclRyZWVWaWV3
cG9ydCgpOwogICAgICAgICAgICAgbV9jbGllbnQtPmRpZEFjdGl2YXRlQWNjZWxlcmF0ZWRDb21w
b3NpdGluZyh0cnVlKTsK
</data>
<flag name="review"
          id="103559"
          type_id="1"
          status="-"
          setter="jamesr"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107260</attachid>
            <date>2011-09-13 16:54:01 -0700</date>
            <delta_ts>2011-09-14 17:47:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67883-20110913165400.patch</filename>
            <type>text/plain</type>
            <size>20689</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ5OTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiYTI1N2JkYTk0MjQzYjA5
ZDUwNDM4NjkxZTdlOWY5MzUzMDE4MTY0Li41YmNkYjViYjQzOGJiMGZlNjlmMWJkNWY5Mzk0ZDZm
MmE0YzI0YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDktMTMgIEFudG9p
bmUgTGFib3VyICA8cGltYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbW92ZSB0aGUgZGVw
ZW5kZW5jeSBvbiBHcmFwaGljc0xheWVyIGZyb20gQ0NMYXllclRyZWVIb3N0LgorICAgICAgICBN
b3ZlIHJvb3QgbGF5ZXIgbWFuYWdlbWVudCBpbnRvIHRoZSBOb25Db21wb3NpdGVkQ29udGVudEhv
c3QuCisgICAgICAgIEhhdmUgV2ViVmlld0ltcGwgY3JlYXRlIGEgTm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0IGV4cGxpY2l0bHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02Nzg4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENvdmVyZWQgYnkgY29tcG9zaXRpbmcvIGxheW91dCB0ZXN0cy4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFJvb3RM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFZp
ZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0
VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmNs
ZWFyUmVuZGVyU3VyZmFjZXNSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0OjppbnZhbGlkYXRlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnRvcExldmVsUm9vdExheWVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6Y29tbWl0VG8pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpkaWRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OnNldFZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dDo6c2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0
ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJD
b250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnJvb3RMYXll
cik6CisKIDIwMTEtMDktMTIgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMTAwNTQ2MTU+IEZsb2F0cyBpbiBydWJ5IHRleHQgaW50cnVk
ZSBpbnRvIHRoZSBiYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNw
cAppbmRleCA3NzczMzhhMzk2YzBkOWVhMDA4Y2IzODViNTYzMjFkMTYzMjNhNTIwLi5lNWEzYjA3
MjIyODQ1ZGEzZjMwNjdkNTJjNzBmYmQ1ZGM1OTRlZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL05vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKQEAgLTQ5LDI0ICs0OSw1MyBAQCBOb25Db21wb3NpdGVk
Q29udGVudEhvc3Q6On5Ob25Db21wb3NpdGVkQ29udGVudEhvc3QoKQogewogfQogCi12b2lkIE5v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVj
dCkKK3ZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzZXRSb290TGF5ZXIoR3JhcGhpY3NM
YXllciogbGF5ZXIpCiB7Ci0gICAgbV9ncmFwaGljc0xheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJl
Y3QoRmxvYXRSZWN0KHJlY3QpKTsKKyAgICBtX2dyYXBoaWNzTGF5ZXItPnJlbW92ZUFsbENoaWxk
cmVuKCk7CisgICAgbV9ncmFwaGljc0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICBpZiAo
bGF5ZXIpCisgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+YWRkQ2hpbGQobGF5ZXIpOworICAgIGVs
c2UgeworICAgICAgICBjbGVhclJlbmRlclN1cmZhY2VzUmVjdXJzaXZlKG1fZ3JhcGhpY3NMYXll
ci0+cGxhdGZvcm1MYXllcigpKTsKKyAgICAgICAgbV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxh
eWVyKCktPnNldExheWVyVHJlZUhvc3QoMCk7CisgICAgfQogfQogCi12b2lkIE5vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdDo6aW52YWxpZGF0ZUVudGlyZUxheWVyKCkKK3ZvaWQgTm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0OjpzZXRWaWV3cG9ydChjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGNv
bnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9u
KQogewotICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgYm9vbCB2
aXNpYmxlUmVjdENoYW5nZWQgPSBtX3ZpZXdwb3J0U2l6ZSAhPSB2aWV3cG9ydFNpemU7CisKKyAg
ICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKKyAgICBtX2dyYXBoaWNzTGF5ZXItPnBs
YXRmb3JtTGF5ZXIoKS0+c2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24pOworICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0U2l6ZShjb250ZW50c1NpemUpOworCisgICAgaWYgKHZpc2libGVS
ZWN0Q2hhbmdlZCkKKyAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsK
IH0KIAotdm9pZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFNjcm9sbFBvc2l0aW9uKGNv
bnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbikKK3ZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKLSAgICBtX2dyYXBoaWNzTGF5ZXItPnBs
YXRmb3JtTGF5ZXIoKS0+c2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24pOworICAgIGlm
ICghdmlzaWJsZSkKKyAgICAgICAgbV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCktPnBy
b3RlY3RWaXNpYmxlVGlsZVRleHR1cmVzKCk7CiB9CiAKLXZvaWQgTm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0Ojpwcm90ZWN0VmlzaWJsZVRpbGVUZXh0dXJlcygpCit2b2lkIE5vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdDo6Y2xlYXJSZW5kZXJTdXJmYWNlc1JlY3Vyc2l2ZShMYXllckNocm9taXVtKiBs
YXllcikKIHsKLSAgICBtX2dyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS0+cHJvdGVjdFZp
c2libGVUaWxlVGV4dHVyZXMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxheWVyLT5j
aGlsZHJlbigpLnNpemUoKTsgKytpKQorICAgICAgICBjbGVhclJlbmRlclN1cmZhY2VzUmVjdXJz
aXZlKGxheWVyLT5jaGlsZHJlbigpW2ldLmdldCgpKTsKKworICAgIGlmIChsYXllci0+cmVwbGlj
YUxheWVyKCkpCisgICAgICAgIGNsZWFyUmVuZGVyU3VyZmFjZXNSZWN1cnNpdmUobGF5ZXItPnJl
cGxpY2FMYXllcigpKTsKKworICAgIGlmIChsYXllci0+bWFza0xheWVyKCkpCisgICAgICAgIGNs
ZWFyUmVuZGVyU3VyZmFjZXNSZWN1cnNpdmUobGF5ZXItPm1hc2tMYXllcigpKTsKKworICAgIGxh
eWVyLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKK30KKwordm9pZCBOb25Db21wb3NpdGVkQ29udGVu
dEhvc3Q6OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgbV9ncmFw
aGljc0xheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QoRmxvYXRSZWN0KHJlY3QpKTsKIH0KIAog
dm9pZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29u
c3QgR3JhcGhpY3NMYXllciosIGRvdWJsZSAvKiB0aW1lICovKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21w
b3NpdGVkQ29udGVudEhvc3QuaAppbmRleCA0NjczNjA5ZDI2MzVkZWY1YmQ0Mjc4OTViYzViYzMx
NTk2M2U0ZTYwLi4zM2Q4MzY5MGI4NDZiOTc0NDE4NzA2ZjMxNzRkMjhlNmMyOWIxZjRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21w
b3NpdGVkQ29udGVudEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaApAQCAtMjcsNiArMjcsNyBAQAog
I2RlZmluZSBOb25Db21wb3NpdGVkQ29udGVudEhvc3RfaAogCiAjaW5jbHVkZSAiR3JhcGhpY3NM
YXllckNsaWVudC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKIAogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTM2LDcgKzM3LDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0xheWVyOwogY2xhc3MgR3JhcGhpY3ND
b250ZXh0OworY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OworY2xhc3MgTGF5ZXJDaHJv
bWl1bTsKIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwogCiBjbGFzcyBOb25Db21wb3NpdGVk
Q29udGVudEhvc3QgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCB7CkBAIC00OSwxNCArNTIs
MTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfk5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCgpOwog
CiAgICAgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0Jik7Ci0gICAgdm9pZCBpbnZh
bGlkYXRlRW50aXJlTGF5ZXIoKTsKLSAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IElu
dFBvaW50Jik7Ci0gICAgdm9pZCBwcm90ZWN0VmlzaWJsZVRpbGVUZXh0dXJlcygpOwotCi0gICAg
R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhcGhpY3NM
YXllci5nZXQoKTsgfQorICAgIHZvaWQgc2V0Um9vdExheWVyKEdyYXBoaWNzTGF5ZXIqKTsKKyAg
ICB2b2lkIHNldFZpZXdwb3J0KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgSW50
U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pOworICAg
IHZvaWQgc2V0VmlzaWJsZShib29sKTsKKyAgICBHcmFwaGljc0xheWVyKiB0b3BMZXZlbFJvb3RM
YXllcigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhcGhpY3NMYXllci5nZXQoKTsgfQogCiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdChQYXNzT3duUHRyPExheWVy
UGFpbnRlckNocm9taXVtPiBjb250ZW50UGFpbnQpOworICAgIHZvaWQgY2xlYXJSZW5kZXJTdXJm
YWNlc1JlY3Vyc2l2ZShMYXllckNocm9taXVtKik7CiAKICAgICAvLyBHcmFwaGljc0xheWVyQ2xp
ZW50CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgR3JhcGhp
Y3NMYXllciosIGRvdWJsZSB0aW1lKTsKQEAgLTY3LDYgKzcwLDcgQEAgcHJpdmF0ZToKIAogICAg
IE93blB0cjxHcmFwaGljc0xheWVyPiBtX2dyYXBoaWNzTGF5ZXI7CiAgICAgT3duUHRyPExheWVy
UGFpbnRlckNocm9taXVtPiBtX2NvbnRlbnRQYWludDsKKyAgICBXZWJDb3JlOjpJbnRTaXplIG1f
dmlld3BvcnRTaXplOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggN2I4Y2I0MWY0ZGFlZTA0YmI2ZjUyMmU0ZDZjNTI5ZDI0
OTA1NWUyYy4uZmYyYTM2YTAyM2ExZjQ1NmE0NzY5NWExY2MyNTg3Y2JmODVhYjM0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAi
TGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCiAjaW5j
bHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCi0jaW5jbHVkZSAiTm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0LmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIlRyZWVTeW5j
aHJvbml6ZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKQEAgLTQw
LDE5ICszOSwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8Q0NMYXll
clRyZWVIb3N0PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQq
IGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCitQYXNzUmVmUHRyPENDTGF5ZXJU
cmVlSG9zdD4gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBj
bGllbnQsIFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyLCBjb25zdCBDQ1NldHRp
bmdzJiBzZXR0aW5ncykKIHsKLSAgICBSZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBsYXllclRyZWVI
b3N0ID0gYWRvcHRSZWYobmV3IENDTGF5ZXJUcmVlSG9zdChjbGllbnQsIHNldHRpbmdzKSk7Cisg
ICAgUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gbGF5ZXJUcmVlSG9zdCA9IGFkb3B0UmVmKG5ldyBD
Q0xheWVyVHJlZUhvc3QoY2xpZW50LCByb290TGF5ZXIsIHNldHRpbmdzKSk7CiAgICAgaWYgKCFs
YXllclRyZWVIb3N0LT5pbml0aWFsaXplKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVy
biBsYXllclRyZWVIb3N0OwogfQogCi1DQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChD
Q0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3Mp
CitDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQq
IGNsaWVudCwgUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiByb290TGF5ZXIsIGNvbnN0IENDU2V0
dGluZ3MmIHNldHRpbmdzKQogICAgIDogbV9hbmltYXRpbmcoZmFsc2UpCiAgICAgLCBtX2NsaWVu
dChjbGllbnQpCiAgICAgLCBtX2ZyYW1lTnVtYmVyKDApCi0gICAgLCBtX25vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdChOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmNyZWF0ZShtX2NsaWVudC0+Y3Jl
YXRlUm9vdExheWVyUGFpbnRlcigpKSkKKyAgICAsIG1fcm9vdExheWVyKHJvb3RMYXllcikKICAg
ICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCiAgICAgLCBtX3pvb21BbmltYXRvclNjYWxlKDEpCiAg
ICAgLCBtX3Zpc2libGUodHJ1ZSkKQEAgLTc1LDE0ICs3NCw2IEBAIGJvb2wgQ0NMYXllclRyZWVI
b3N0Ojppbml0aWFsaXplKCkKICAgICAvLyBVcGRhdGUgbV9zZXR0aW5ncyBiYXNlZCBvbiBjYXBh
YmlsaXRpZXMgdGhhdCB3ZSBnb3QgYmFjayBmcm9tIHRoZSByZW5kZXJlci4KICAgICBtX3NldHRp
bmdzLmFjY2VsZXJhdGVQYWludGluZyA9IG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRp
ZXMoKS51c2luZ0FjY2VsZXJhdGVkUGFpbnRpbmc7CiAKLSAgICBtX3Jvb3RMYXllciA9IEdyYXBo
aWNzTGF5ZXI6OmNyZWF0ZSgwKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgbV9yb290TGF5ZXItPnNl
dE5hbWUoInJvb3QgbGF5ZXIiKTsKLSNlbmRpZgotICAgIG1fcm9vdExheWVyLT5zZXREcmF3c0Nv
bnRlbnQoZmFsc2UpOwotCi0gICAgbV9yb290TGF5ZXItPmFkZENoaWxkKG1fbm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0LT5ncmFwaGljc0xheWVyKCkpOwotCiAgICAgLy8gV2UgY2hhbmdlZCB0aGUg
cm9vdCBsYXllci4gVGVsbCB0aGUgcHJveHkgYSBjb21taXQgaXMgbmVlZGVkLgogICAgIG1fcHJv
eHktPnNldE5lZWRzQ29tbWl0QW5kUmVkcmF3KCk7CiAKQEAgLTEzNSw3ICsxMjYsNyBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0VG8oQ0NMYXllclRyZWVIb3N0SW1wbCogaG9zdEltcGwp
CiAKICAgICAvLyBTeW5jaHJvbml6ZSB0cmVlcywgaWYgb25lIGV4aXN0cyBhdCBhbGwuLi4KICAg
ICBpZiAocm9vdExheWVyKCkpCi0gICAgICAgIGhvc3RJbXBsLT5zZXRSb290TGF5ZXIoVHJlZVN5
bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhyb290TGF5ZXIoKS0+cGxhdGZvcm1MYXllcigp
LCBob3N0SW1wbC0+cm9vdExheWVyKCkpKTsKKyAgICAgICAgaG9zdEltcGwtPnNldFJvb3RMYXll
cihUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKHJvb3RMYXllcigpLCBob3N0SW1w
bC0+cm9vdExheWVyKCkpKTsKICAgICBlbHNlCiAgICAgICAgIGhvc3RJbXBsLT5zZXRSb290TGF5
ZXIoMCk7CiAKQEAgLTE2Miw3ICsxNTMsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGlkUmVj
cmVhdGVHcmFwaGljc0NvbnRleHQoYm9vbCBzdWNjZXNzKQogICAgIG1fY29udGVudHNUZXh0dXJl
TWFuYWdlci0+ZXZpY3RBbmREZWxldGVBbGxUZXh0dXJlcygwKTsKIAogICAgIGlmIChyb290TGF5
ZXIoKSkKLSAgICAgICAgcm9vdExheWVyKCktPnBsYXRmb3JtTGF5ZXIoKS0+Y2xlYW51cFJlc291
cmNlc1JlY3Vyc2l2ZSgpOworICAgICAgICByb290TGF5ZXIoKS0+Y2xlYW51cFJlc291cmNlc1Jl
Y3Vyc2l2ZSgpOwogICAgIG1fY2xpZW50LT5kaWRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dChzdWNj
ZXNzKTsKIH0KIApAQCAtMTkwLDExICsxODEsNiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Zmlu
aXNoQWxsUmVuZGVyaW5nKCkKICAgICBtX3Byb3h5LT5maW5pc2hBbGxSZW5kZXJpbmcoKTsKIH0K
IAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmludmFsaWRhdGVSb290TGF5ZXJSZWN0KGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCkKLXsKLSAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+aW52
YWxpZGF0ZVJlY3QoZGlydHlSZWN0KTsKLX0KLQogY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxp
dGllcyYgQ0NMYXllclRyZWVIb3N0OjpsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpOwpAQCAt
MjMwLDQ1ICsyMTYsOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNSZWRyYXcoKQog
I2VuZGlmCiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpjbGVhclJlbmRlclN1cmZhY2VzUmVj
dXJzaXZlKExheWVyQ2hyb21pdW0qIGxheWVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldFZp
ZXdwb3J0KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGxheWVyLT5jaGlsZHJlbigpLnNpemUoKTsgKytpKQotICAgICAgICBjbGVhclJl
bmRlclN1cmZhY2VzUmVjdXJzaXZlKGxheWVyLT5jaGlsZHJlbigpW2ldLmdldCgpKTsKLQotICAg
IGlmIChsYXllci0+cmVwbGljYUxheWVyKCkpCi0gICAgICAgIGNsZWFyUmVuZGVyU3VyZmFjZXNS
ZWN1cnNpdmUobGF5ZXItPnJlcGxpY2FMYXllcigpKTsKLQotICAgIGlmIChsYXllci0+bWFza0xh
eWVyKCkpCi0gICAgICAgIGNsZWFyUmVuZGVyU3VyZmFjZXNSZWN1cnNpdmUobGF5ZXItPm1hc2tM
YXllcigpKTsKLQotICAgIGxheWVyLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKLX0KLQotCi12b2lk
IENDTGF5ZXJUcmVlSG9zdDo6c2V0Um9vdExheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQotewot
ICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5ncmFwaGljc0xheWVyKCktPnJlbW92ZUFs
bENoaWxkcmVuKCk7Ci0gICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPmludmFsaWRhdGVF
bnRpcmVMYXllcigpOwotICAgIGlmIChsYXllcikKLSAgICAgICAgbV9ub25Db21wb3NpdGVkQ29u
dGVudEhvc3QtPmdyYXBoaWNzTGF5ZXIoKS0+YWRkQ2hpbGQobGF5ZXIpOwotICAgIGVsc2Ugewot
ICAgICAgICBjbGVhclJlbmRlclN1cmZhY2VzUmVjdXJzaXZlKHJvb3RMYXllcigpLT5wbGF0Zm9y
bUxheWVyKCkpOwotICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+Z3JhcGhpY3NM
YXllcigpLT5wbGF0Zm9ybUxheWVyKCktPnNldExheWVyVHJlZUhvc3QoMCk7Ci0gICAgICAgIG1f
cm9vdExheWVyLT5wbGF0Zm9ybUxheWVyKCktPnNldExheWVyVHJlZUhvc3QoMCk7Ci0gICAgfQot
fQotCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0Vmlld3BvcnQoY29uc3QgSW50U2l6ZSYgdmll
d3BvcnRTaXplLCBjb25zdCBJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IEludFBvaW50JiBz
Y3JvbGxQb3NpdGlvbikKLXsKLSAgICBib29sIHZpc2libGVSZWN0Q2hhbmdlZCA9IG1fdmlld3Bv
cnRTaXplICE9IHZpZXdwb3J0U2l6ZTsKLQogICAgIG1fdmlld3BvcnRTaXplID0gdmlld3BvcnRT
aXplOwotICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRTY3JvbGxQb3NpdGlvbihz
Y3JvbGxQb3NpdGlvbik7Ci0gICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPmdyYXBoaWNz
TGF5ZXIoKS0+c2V0U2l6ZShjb250ZW50c1NpemUpOwotCi0gICAgaWYgKHZpc2libGVSZWN0Q2hh
bmdlZCkKLSAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPmludmFsaWRhdGVFbnRp
cmVMYXllcigpOwotCiAgICAgc2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKTsKIH0KIApAQCAtMjc4
LDcgKzIyOCw2IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJs
ZSkKICAgICBpZiAodmlzaWJsZSkKICAgICAgICAgbV9wcm94eS0+c2V0TmVlZHNDb21taXRBbmRS
ZWRyYXcoKTsKICAgICBlbHNlIHsKLSAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3Qt
PnByb3RlY3RWaXNpYmxlVGlsZVRleHR1cmVzKCk7CiAgICAgICAgIG1fY29udGVudHNUZXh0dXJl
TWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdChUZXh0dXJlTWFuYWdlcjo6bG93TGltaXRCeXRl
cygpKTsKICAgICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0
dXJlcygpOwogICAgICAgICBtX3Byb3h5LT5zZXROZWVkc0NvbW1pdCgpOwpAQCAtMzExLDcgKzI2
MCw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQogICAgIGlmICh2aWV3
cG9ydFNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZUxheWVy
cyhyb290TGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpKTsKKyAgICB1cGRhdGVMYXllcnMocm9vdExh
eWVyKCkpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hy
b21pdW0qIHJvb3RMYXllcikKQEAgLTM5NCw3ICszNDMsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVy
TGlzdAogICAgICAgICAgICAgaWYgKGxheWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIEludFJlY3QgZGVmYXVsdENvbnRlbnRS
ZWN0ID0gSW50UmVjdChyb290TGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpLT5zY3JvbGxQb3NpdGlv
bigpLCB2aWV3cG9ydFNpemUoKSk7CisgICAgICAgICAgICBJbnRSZWN0IGRlZmF1bHRDb250ZW50
UmVjdCA9IEludFJlY3Qocm9vdExheWVyKCktPnNjcm9sbFBvc2l0aW9uKCksIHZpZXdwb3J0U2l6
ZSgpKTsKIAogICAgICAgICAgICAgSW50UmVjdCB0YXJnZXRTdXJmYWNlUmVjdCA9IGxheWVyLT50
YXJnZXRSZW5kZXJTdXJmYWNlKCkgPyBsYXllci0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5jb250
ZW50UmVjdCgpIDogZGVmYXVsdENvbnRlbnRSZWN0OwogICAgICAgICAgICAgaWYgKGxheWVyLT51
c2VzTGF5ZXJTY2lzc29yKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGM3MTNm
MDNlN2FkMjMxNzlhYzg3NzYzMGEyM2M5ZjQ3ODFiNzFjNTcuLmM3YjQwMjVjNzMwMDQyMWMxMDcz
YzU5MzM4Y2Y2NGI1NTZlODcwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC00
NSw4ICs0NSw2IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgTGF5ZXJDaHJvbWl1
bTsKIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOwotY2xhc3MgR3JhcGhpY3NMYXllcjsKLWNsYXNzIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dDsKIGNsYXNzIFRleHR1cmVNYW5hZ2VyOwogCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RDbGllbnQg
ewpAQCAtOTQsNyArOTIsNyBAQCBzdHJ1Y3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyB7CiAK
IGNsYXNzIENDTGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBSZWZDb3VudGVkPENDTGF5ZXJUcmVlSG9z
dD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gY3Jl
YXRlKENDTGF5ZXJUcmVlSG9zdENsaWVudCosIGNvbnN0IENDU2V0dGluZ3MmKTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxDQ0xheWVyVHJlZUhvc3Q+IGNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGll
bnQqLCBQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IHJvb3RMYXllciwgY29uc3QgQ0NTZXR0aW5n
cyYpOwogICAgIHZpcnR1YWwgfkNDTGF5ZXJUcmVlSG9zdCgpOwogCiAgICAgLy8gQ0NMYXllclRy
ZWVIb3N0IGludGVyZmFjZSB0byBDQ1Byb3h5LgpAQCAtMTI5LDcgKzEyNyw2IEBAIHB1YmxpYzoK
IAogICAgIGludCBmcmFtZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVOdW1iZXI7IH0K
IAotICAgIHZvaWQgaW52YWxpZGF0ZVJvb3RMYXllclJlY3QoY29uc3QgSW50UmVjdCYgZGlydHlS
ZWN0KTsKICAgICB2b2lkIHNldFpvb21BbmltYXRvclNjYWxlKGRvdWJsZSk7CiAKICAgICBjb25z
dCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkg
Y29uc3Q7CkBAIC0xNDAsMjcgKzEzNywyNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZWVkc0Nv
bW1pdEFuZFJlZHJhdygpOwogICAgIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKIAotICAgIHZvaWQg
c2V0Um9vdExheWVyKEdyYXBoaWNzTGF5ZXIqKTsKLSAgICBHcmFwaGljc0xheWVyKiByb290TGF5
ZXIoKSB7IHJldHVybiBtX3Jvb3RMYXllci5nZXQoKTsgfQotICAgIGNvbnN0IEdyYXBoaWNzTGF5
ZXIqIHJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdExheWVyLmdldCgpOyB9CisgICAg
TGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKCkgeyByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7IH0K
KyAgICBjb25zdCBMYXllckNocm9taXVtKiByb290TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jv
b3RMYXllci5nZXQoKTsgfQogCiAgICAgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25z
dCB7IHJldHVybiBtX3NldHRpbmdzOyB9CiAKLSAgICB2b2lkIHNldFZpZXdwb3J0KGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgSW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBJ
bnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pOworICAgIHZvaWQgc2V0Vmlld3BvcnQoY29uc3QgSW50
U2l6ZSYgdmlld3BvcnRTaXplKTsKIAogICAgIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRTaXplOyB9CiAgICAgVGV4dHVyZU1hbmFnZXIqIGNv
bnRlbnRzVGV4dHVyZU1hbmFnZXIoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0VmlzaWJsZShib29s
KTsKIAotICAgIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCogbm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0KCkgY29uc3QgeyByZXR1cm4gbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QuZ2V0KCk7IH0K
LQogICAgIHZvaWQgdXBkYXRlTGF5ZXJzKCk7CiAKICAgICB2b2lkIGRlbGV0ZUNvbnRlbnRzVGV4
dHVyZXMoR3JhcGhpY3NDb250ZXh0M0QqKTsKIAogcHJvdGVjdGVkOgotICAgIENDTGF5ZXJUcmVl
SG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqLCBjb25zdCBDQ1NldHRpbmdzJik7CisgICAgQ0NM
YXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCosIFBhc3NSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gcm9vdExheWVyLCBjb25zdCBDQ1NldHRpbmdzJik7CiAKIHByaXZhdGU6CiAgICAgdHlw
ZWRlZiBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gTGF5ZXJMaXN0OwpAQCAtMTg0LDgg
KzE3OCw3IEBAIHByaXZhdGU6CiAKICAgICBPd25QdHI8Q0NQcm94eT4gbV9wcm94eTsKIAotICAg
IE93blB0cjxHcmFwaGljc0xheWVyPiBtX3Jvb3RMYXllcjsKLSAgICBPd25QdHI8Tm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0PiBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDsKKyAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gbV9yb290TGF5ZXI7CiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBt
X2NvbnRlbnRzVGV4dHVyZU1hbmFnZXI7CiAKICAgICBMYXllckxpc3QgbV91cGRhdGVMaXN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAzNzlmOWQ1MGZjMTU4NjA2MGZlNTcwZDUyZGY4
MDhhZGFiNDQwMjVkLi43ZTYzZWZiYjIxZWQ2ZDA3NjMwMmJlZDBmYTc2ZGY0Mzc0NGZmOTIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTA5LTEzICBB
bnRvaW5lIExhYm91ciAgPHBpbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgdGhl
IGRlcGVuZGVuY3kgb24gR3JhcGhpY3NMYXllciBmcm9tIENDTGF5ZXJUcmVlSG9zdC4KKyAgICAg
ICAgTW92ZSByb290IGxheWVyIG1hbmFnZW1lbnQgaW50byB0aGUgTm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0LgorICAgICAgICBIYXZlIFdlYlZpZXdJbXBsIGNyZWF0ZSBhIE5vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdCBleHBsaWNpdGx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Njc4ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpzZXRSb290R3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjppbnZhbGlkYXRlUm9vdExheWVyUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6dXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6c2V0VmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAgKiBzcmMvV2Vi
Vmlld0ltcGwuaDoKKwogMjAxMS0wOS0wOCAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOmNyZWF0
ZUdyYXBoaWNzQ29udGV4dEZvckFub3RoZXJUaHJlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA2OWI3NTgxMWQ4MGU4NTU4ZGNjNWEwOWQwNjk0OTBk
NTE3OWMzOTdhLi5mYjhjMDkwMjBmODZkMTk5NTYzNTU4YTRlYTUxM2M3MjcyYzIzMmY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC03NCw5ICs3NCwx
MSBAQAogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJLZXlib2Fy
ZENvZGVzLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIkxheWVyQ2hy
b21pdW0uaCIKICNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRl
ICJOb25Db21wb3NpdGVkQ29udGVudEhvc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwTG9hZERlZmVycmVyLmgiCkBAIC0y
NTQ5LDggKzI1NTEsOCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRSb290R3JhcGhpY3NMYXllcihH
cmFwaGljc0xheWVyKiBsYXllcikKICAgICBtX3Jvb3RHcmFwaGljc0xheWVyID0gbGF5ZXI7CiAK
ICAgICBzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUobGF5ZXIpOwotICAgIGlmICht
X2xheWVyVHJlZUhvc3QpCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKGxh
eWVyKTsKKyAgICBpZiAobV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QpCisgICAgICAgIG1fbm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRSb290TGF5ZXIobGF5ZXIpOwogCiAgICAgSW50UmVj
dCBkYW1hZ2VkUmVjdCgwLCAwLCBtX3NpemUud2lkdGgsIG1fc2l6ZS5oZWlnaHQpOwogICAgIGlm
ICghbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpCkBAIC0yNTg1LDcgKzI1ODcsNyBA
QCB2b2lkIFdlYlZpZXdJbXBsOjppbnZhbGlkYXRlUm9vdExheWVyUmVjdChjb25zdCBJbnRSZWN0
JiByZWN0KQogICAgIEZyYW1lVmlldyogdmlldyA9IHBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXco
KTsKICAgICBJbnRSZWN0IGRpcnR5UmVjdCA9IHZpZXctPndpbmRvd1RvQ29udGVudHMocmVjdCk7
CiAgICAgdXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPmlu
dmFsaWRhdGVSb290TGF5ZXJSZWN0KGRpcnR5UmVjdCk7CisgICAgbV9ub25Db21wb3NpdGVkQ29u
dGVudEhvc3QtPmludmFsaWRhdGVSZWN0KGRpcnR5UmVjdCk7CiAgICAgc2V0Um9vdExheWVyTmVl
ZHNEaXNwbGF5KCk7CiB9CiAKQEAgLTI2NTQsNyArMjY1Niw4IEBAIHZvaWQgV2ViVmlld0ltcGw6
OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAg
Y2NTZXR0aW5ncy5zaG93RlBTQ291bnRlciA9IHNldHRpbmdzKCktPnNob3dGUFNDb3VudGVyKCk7
CiAgICAgICAgIGNjU2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVlID0gc2V0dGluZ3MoKS0+
c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKCk7CiAKLSAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gQ0NM
YXllclRyZWVIb3N0OjpjcmVhdGUodGhpcywgY2NTZXR0aW5ncyk7CisgICAgICAgIG1fbm9uQ29t
cG9zaXRlZENvbnRlbnRIb3N0ID0gTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpjcmVhdGUoV2Vi
Vmlld0ltcGxDb250ZW50UGFpbnRlcjo6Y3JlYXRlKHRoaXMpKTsKKyAgICAgICAgbV9sYXllclRy
ZWVIb3N0ID0gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUodGhpcywgbV9ub25Db21wb3NpdGVkQ29u
dGVudEhvc3QtPnRvcExldmVsUm9vdExheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSwgY2NTZXR0aW5n
cyk7CiAgICAgICAgIGlmIChtX2xheWVyVHJlZUhvc3QpIHsKICAgICAgICAgICAgIHVwZGF0ZUxh
eWVyVHJlZVZpZXdwb3J0KCk7CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQWN0aXZhdGVBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nKHRydWUpOwpAQCAtMjczOCw3ICsyNzQxLDggQEAgdm9pZCBXZWJW
aWV3SW1wbDo6dXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKQogICAgIEludFJlY3QgdmlzaWJsZVJl
Y3QgPSB2aWV3LT52aXNpYmxlQ29udGVudFJlY3QodHJ1ZSAvKiBpbmNsdWRlIHNjcm9sbGJhcnMg
Ki8pOwogICAgIEludFBvaW50IHNjcm9sbCh2aWV3LT5zY3JvbGxYKCksIHZpZXctPnNjcm9sbFko
KSk7CiAKLSAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0KHZpc2libGVSZWN0LnNpemUo
KSwgdmlldy0+Y29udGVudHNTaXplKCksIHNjcm9sbCk7CisgICAgbV9ub25Db21wb3NpdGVkQ29u
dGVudEhvc3QtPnNldFZpZXdwb3J0KHZpc2libGVSZWN0LnNpemUoKSwgdmlldy0+Y29udGVudHNT
aXplKCksIHNjcm9sbCk7CisgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydCh2aXNpYmxl
UmVjdC5zaXplKCkpOwogfQogCiBXZWJHcmFwaGljc0NvbnRleHQzRCogV2ViVmlld0ltcGw6Omdy
YXBoaWNzQ29udGV4dDNEKCkKQEAgLTI3ODAsOCArMjc4NCwxMSBAQCB2b2lkIFdlYlZpZXdJbXBs
OjpzZXRWaXNpYmlsaXR5U3RhdGUoV2ViUGFnZVZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5U3Rh
dGUsCiAjZW5kaWYKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBpZiAo
aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+c2V0VmlzaWJsZSh2aXNpYmlsaXR5U3RhdGUgPT0gV2ViUGFnZVZpc2liaWxpdHlTdGF0ZVZp
c2libGUpOworICAgIGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkgeworICAg
ICAgICBib29sIHZpc2libGUgPSB2aXNpYmlsaXR5U3RhdGUgPT0gV2ViUGFnZVZpc2liaWxpdHlT
dGF0ZVZpc2libGU7CisgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRWaXNp
YmxlKHZpc2libGUpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpc2libGUodmlzaWJs
ZSk7CisgICAgfQogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oCmluZGV4IGZhNWFlYjgxYzAyMTk5MTY0YmE4ZTA5OWMyNDBiNzllOWY4YjNiNmIuLjY5
NDFmMzI0Mjk5MmQxMzU3ZjI5MWJlNDVhYzE4MjRlMDZiZGY5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNjAsNiArNjAsNyBAQCBjbGFzcyBHcmFwaGlj
c0NvbnRleHQzRDsKIGNsYXNzIEhpc3RvcnlJdGVtOwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNs
YXNzIEtleWJvYXJkRXZlbnQ7CitjbGFzcyBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q7CiBjbGFz
cyBQYWdlOwogY2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50OwogY2xhc3MgUG9wdXBDb250YWlu
ZXI7CkBAIC01NzIsNiArNTczLDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fcm9vdExheWVyU2Nyb2xsRGFtYWdl
OworICAgIE93blB0cjxXZWJDb3JlOjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q+IG1fbm9uQ29t
cG9zaXRlZENvbnRlbnRIb3N0OwogICAgIFJlZlB0cjxXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q+
IG1fbGF5ZXJUcmVlSG9zdDsKICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBtX3Jvb3RHcmFw
aGljc0xheWVyOwogICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107429</attachid>
            <date>2011-09-14 17:47:33 -0700</date>
            <delta_ts>2011-09-14 18:15:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67883-20110914174732.patch</filename>
            <type>text/plain</type>
            <size>21469</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUxMTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MTU4ZGU2N2RlMWIwMjJk
MTI0M2I3YjA5ZDczNzRlNWQ3ZWIzZjM0Li5mMTQ2NmE0NDllNDNhZTEyNTk3ODFlM2U2NWI3ODZl
MWJlZjVjMmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDktMTMgIEFudG9p
bmUgTGFib3VyICA8cGltYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbW92ZSB0aGUgZGVw
ZW5kZW5jeSBvbiBHcmFwaGljc0xheWVyIGZyb20gQ0NMYXllclRyZWVIb3N0LgorICAgICAgICBN
b3ZlIHJvb3QgbGF5ZXIgbWFuYWdlbWVudCBpbnRvIHRoZSBOb25Db21wb3NpdGVkQ29udGVudEhv
c3QuCisgICAgICAgIEhhdmUgV2ViVmlld0ltcGwgY3JlYXRlIGEgTm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0IGV4cGxpY2l0bHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02Nzg4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENvdmVyZWQgYnkgY29tcG9zaXRpbmcvIGxheW91dCB0ZXN0cy4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFJvb3RM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFZp
ZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0
VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmNs
ZWFyUmVuZGVyU3VyZmFjZXNSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0OjppbnZhbGlkYXRlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnRvcExldmVsUm9vdExheWVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6Y29tbWl0VG8pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpkaWRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OnNldFZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dDo6c2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0
ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJD
b250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnJvb3RMYXll
cik6CisKIDIwMTEtMDktMTQgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnppcCBpbml0aWFsaXphdGlvbiBsaXN0cyBhbmQgY29uc3RydWN0b3Jz
IGluIEpTQ2VsbCBoaWVyYXJjaHkgKDYvNykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29u
dGVudEhvc3QuY3BwCmluZGV4IDc3NzMzOGEzOTZjMGQ5ZWEwMDhjYjM4NWI1NjMyMWQxNjMyM2E1
MjAuLmU4NTRmMzZhNzVlZmFjMTZhYWE0ZmYyZGUxOTg4YmZkMGE3MGUwYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcApAQCAtNDksMTkgKzQ5LDI2IEBAIE5v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6fk5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCgpCiB7CiB9
CiAKLXZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjppbnZhbGlkYXRlUmVjdChjb25zdCBJ
bnRSZWN0JiByZWN0KQotewotICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5S
ZWN0KEZsb2F0UmVjdChyZWN0KSk7Ci19Ci0KLXZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0
OjppbnZhbGlkYXRlRW50aXJlTGF5ZXIoKQordm9pZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6
OnNldFJvb3RMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKIHsKKyAgICBtX2dyYXBoaWNzTGF5
ZXItPnJlbW92ZUFsbENoaWxkcmVuKCk7CiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXROZWVkc0Rp
c3BsYXkoKTsKKyAgICBpZiAobGF5ZXIpCisgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+YWRkQ2hp
bGQobGF5ZXIpOworICAgIGVsc2UKKyAgICAgICAgbV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxh
eWVyKCktPnNldExheWVyVHJlZUhvc3QoMCk7CiB9CiAKLXZvaWQgTm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0OjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24p
Cit2b2lkIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0Vmlld3BvcnQoY29uc3QgSW50U2l6
ZSYgdmlld3BvcnRTaXplLCBjb25zdCBJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IEludFBv
aW50JiBzY3JvbGxQb3NpdGlvbikKIHsKKyAgICBib29sIHZpc2libGVSZWN0Q2hhbmdlZCA9IG1f
dmlld3BvcnRTaXplICE9IHZpZXdwb3J0U2l6ZTsKKworICAgIG1fdmlld3BvcnRTaXplID0gdmll
d3BvcnRTaXplOwogICAgIG1fZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpLT5zZXRTY3Jv
bGxQb3NpdGlvbihzY3JvbGxQb3NpdGlvbik7CisgICAgbV9ncmFwaGljc0xheWVyLT5zZXRTaXpl
KGNvbnRlbnRzU2l6ZSk7CisKKyAgICBpZiAodmlzaWJsZVJlY3RDaGFuZ2VkKQorICAgICAgICBt
X2dyYXBoaWNzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwogfQogCiB2b2lkIE5vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdDo6cHJvdGVjdFZpc2libGVUaWxlVGV4dHVyZXMoKQpAQCAtNjksNiArNzYs
MTEgQEAgdm9pZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnByb3RlY3RWaXNpYmxlVGlsZVRl
eHR1cmVzKCkKICAgICBtX2dyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS0+cHJvdGVjdFZp
c2libGVUaWxlVGV4dHVyZXMoKTsKIH0KIAordm9pZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6
OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgbV9ncmFwaGljc0xh
eWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QoRmxvYXRSZWN0KHJlY3QpKTsKK30KKwogdm9pZCBO
b25Db21wb3NpdGVkQ29udGVudEhvc3Q6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgR3Jh
cGhpY3NMYXllciosIGRvdWJsZSAvKiB0aW1lICovKQogewogICAgIC8vIEludGVudGlvbmFsbHkg
bGVmdCBlbXB0eSBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IGFuaW1hdGlvbnMgb24gdGhlIG5vbi1j
b21wb3NpdGVkIGNvbnRlbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5o
CmluZGV4IDQ2NzM2MDlkMjYzNWRlZjViZDQyNzg5NWJjNWJjMzE1OTYzZTRlNjAuLmQ2YmQ4ZmI4
N2NlNDc0MTAzMTkxZGZjNTYxYTRmMzg4NzlmZGExNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdC5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIE5vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdF9oCiAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCisjaW5j
bHVkZSAiSW50U2l6ZS5oIgogCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgpAQCAtMzYsNyArMzcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEdyYXBoaWNzTGF5ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBJbnRQ
b2ludDsKIGNsYXNzIEludFJlY3Q7CitjbGFzcyBMYXllckNocm9taXVtOwogY2xhc3MgTGF5ZXJQ
YWludGVyQ2hyb21pdW07CiAKIGNsYXNzIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCA6IHB1Ymxp
YyBHcmFwaGljc0xheWVyQ2xpZW50IHsKQEAgLTQ5LDExICs1MiwxMCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KCk7CiAKICAgICB2b2lkIGludmFsaWRh
dGVSZWN0KGNvbnN0IEludFJlY3QmKTsKLSAgICB2b2lkIGludmFsaWRhdGVFbnRpcmVMYXllcigp
OwotICAgIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmKTsKKyAgICB2b2lk
IHNldFJvb3RMYXllcihHcmFwaGljc0xheWVyKik7CisgICAgdm9pZCBzZXRWaWV3cG9ydChjb25z
dCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29u
c3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKTsKICAgICB2b2lkIHByb3RlY3RWaXNpYmxlVGls
ZVRleHR1cmVzKCk7Ci0KLSAgICBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9ncmFwaGljc0xheWVyLmdldCgpOyB9CisgICAgR3JhcGhpY3NMYXllciogdG9w
TGV2ZWxSb290TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2dyYXBoaWNzTGF5ZXIuZ2V0KCk7IH0K
IAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBOb25Db21wb3NpdGVkQ29udGVudEhvc3QoUGFzc093
blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gY29udGVudFBhaW50KTsKQEAgLTY3LDYgKzY5LDcg
QEAgcHJpdmF0ZToKIAogICAgIE93blB0cjxHcmFwaGljc0xheWVyPiBtX2dyYXBoaWNzTGF5ZXI7
CiAgICAgT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBtX2NvbnRlbnRQYWludDsKKyAgICBX
ZWJDb3JlOjpJbnRTaXplIG1fdmlld3BvcnRTaXplOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggY2VhNTc5YzkzNjk3M2Mx
ZWJiYTgyZmY4OGRjMDgxNGRkOWRjYWRiMC4uMzVjMWY3Y2ExMjk2OGYzYTkxNjVmOTY4OTdkNGMy
MTc5NWU0ODQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0yOSw3ICsy
OSw2IEBACiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUGFpbnRl
ckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCi0jaW5jbHVk
ZSAiTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgog
I2luY2x1ZGUgIlRyZWVTeW5jaHJvbml6ZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhv
c3RDb21tb24uaCIKQEAgLTQwLDE5ICszOSwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVBhc3NSZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZShDQ0xh
eWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCitQ
YXNzUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUoQ0NMYXll
clRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9vdExh
eWVyLCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAgICBSZWZQdHI8Q0NMYXllclRy
ZWVIb3N0PiBsYXllclRyZWVIb3N0ID0gYWRvcHRSZWYobmV3IENDTGF5ZXJUcmVlSG9zdChjbGll
bnQsIHNldHRpbmdzKSk7CisgICAgUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gbGF5ZXJUcmVlSG9z
dCA9IGFkb3B0UmVmKG5ldyBDQ0xheWVyVHJlZUhvc3QoY2xpZW50LCByb290TGF5ZXIsIHNldHRp
bmdzKSk7CiAgICAgaWYgKCFsYXllclRyZWVIb3N0LT5pbml0aWFsaXplKCkpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIHJldHVybiBsYXllclRyZWVIb3N0OwogfQogCi1DQ0xheWVyVHJlZUhvc3Q6
OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NT
ZXR0aW5ncyYgc2V0dGluZ3MpCitDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChDQ0xh
eWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiByb290
TGF5ZXIsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQogICAgIDogbV9hbmltYXRpbmcoZmFs
c2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2ZyYW1lTnVtYmVyKDApCi0gICAg
LCBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdChOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmNy
ZWF0ZShtX2NsaWVudC0+Y3JlYXRlUm9vdExheWVyUGFpbnRlcigpKSkKKyAgICAsIG1fcm9vdExh
eWVyKHJvb3RMYXllcikKICAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCiAgICAgLCBtX3pvb21B
bmltYXRvclNjYWxlKDEpCiAgICAgLCBtX3Zpc2libGUodHJ1ZSkKQEAgLTc1LDE0ICs3NCw2IEBA
IGJvb2wgQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKCkKICAgICAvLyBVcGRhdGUgbV9zZXR0
aW5ncyBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgdGhhdCB3ZSBnb3QgYmFjayBmcm9tIHRoZSByZW5k
ZXJlci4KICAgICBtX3NldHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9IG1fcHJveHktPmxheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ0FjY2VsZXJhdGVkUGFpbnRpbmc7CiAKLSAgICBt
X3Jvb3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgwKTsKLSNpZm5kZWYgTkRFQlVHCi0g
ICAgbV9yb290TGF5ZXItPnNldE5hbWUoInJvb3QgbGF5ZXIiKTsKLSNlbmRpZgotICAgIG1fcm9v
dExheWVyLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOwotCi0gICAgbV9yb290TGF5ZXItPmFkZENo
aWxkKG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5ncmFwaGljc0xheWVyKCkpOwotCiAgICAg
Ly8gV2UgY2hhbmdlZCB0aGUgcm9vdCBsYXllci4gVGVsbCB0aGUgcHJveHkgYSBjb21taXQgaXMg
bmVlZGVkLgogICAgIG1fcHJveHktPnNldE5lZWRzQ29tbWl0QW5kUmVkcmF3KCk7CiAKQEAgLTk2
LDcgKzg3LDcgQEAgQ0NMYXllclRyZWVIb3N0Ojp+Q0NMYXllclRyZWVIb3N0KCkKICAgICBUUkFD
RV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp+Q0NMYXllclRyZWVIb3N0IiwgdGhpcywgMCk7CiAg
ICAgbV9wcm94eS0+c3RvcCgpOwogICAgIG1fcHJveHkuY2xlYXIoKTsKLSAgICBtX3VwZGF0ZUxp
c3QuY2xlYXIoKTsKKyAgICBjbGVhclBlbmRpbmdVcGRhdGUoKTsKICAgICBBU1NFUlQoIW1fY29u
dGVudHNUZXh0dXJlTWFuYWdlciB8fCAhbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5jdXJyZW50
TWVtb3J5VXNlQnl0ZXMoKSk7CiAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLmNsZWFyKCk7
CiB9CkBAIC0xMjUsNyArMTE2LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdFRvKEND
TGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbXBsKQogICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIo
KS0+ZGVsZXRlRXZpY3RlZFRleHR1cmVzKGhvc3RJbXBsLT5jb250ZXh0KCkpOwogCiAgICAgdXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhtX3VwZGF0ZUxpc3QsIGhvc3RJbXBsLT5jb250ZXh0KCkp
OwotICAgIG1fdXBkYXRlTGlzdC5jbGVhcigpOworICAgIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOwog
CiAgICAgaG9zdEltcGwtPnNldFZpc2libGUobV92aXNpYmxlKTsKICAgICBob3N0SW1wbC0+c2V0
Wm9vbUFuaW1hdG9yU2NhbGUobV96b29tQW5pbWF0b3JTY2FsZSk7CkBAIC0xMzYsNyArMTI3LDcg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdFRvKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhv
c3RJbXBsKQogCiAgICAgLy8gU3luY2hyb25pemUgdHJlZXMsIGlmIG9uZSBleGlzdHMgYXQgYWxs
Li4uCiAgICAgaWYgKHJvb3RMYXllcigpKQotICAgICAgICBob3N0SW1wbC0+c2V0Um9vdExheWVy
KFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMocm9vdExheWVyKCktPnBsYXRmb3Jt
TGF5ZXIoKSwgaG9zdEltcGwtPnJvb3RMYXllcigpKSk7CisgICAgICAgIGhvc3RJbXBsLT5zZXRS
b290TGF5ZXIoVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhyb290TGF5ZXIoKSwg
aG9zdEltcGwtPnJvb3RMYXllcigpKSk7CiAgICAgZWxzZQogICAgICAgICBob3N0SW1wbC0+c2V0
Um9vdExheWVyKDApOwogCkBAIC0xNjMsNyArMTU0LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OmRpZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2VzcykKICAgICBtX2NvbnRlbnRz
VGV4dHVyZU1hbmFnZXItPmV2aWN0QW5kRGVsZXRlQWxsVGV4dHVyZXMoMCk7CiAKICAgICBpZiAo
cm9vdExheWVyKCkpCi0gICAgICAgIHJvb3RMYXllcigpLT5wbGF0Zm9ybUxheWVyKCktPmNsZWFu
dXBSZXNvdXJjZXNSZWN1cnNpdmUoKTsKKyAgICAgICAgcm9vdExheWVyKCktPmNsZWFudXBSZXNv
dXJjZXNSZWN1cnNpdmUoKTsKICAgICBtX2NsaWVudC0+ZGlkUmVjcmVhdGVHcmFwaGljc0NvbnRl
eHQoc3VjY2Vzcyk7CiB9CiAKQEAgLTE5MSwxMSArMTgyLDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OmZpbmlzaEFsbFJlbmRlcmluZygpCiAgICAgbV9wcm94eS0+ZmluaXNoQWxsUmVuZGVyaW5n
KCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjppbnZhbGlkYXRlUm9vdExheWVyUmVjdChj
b25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCi17Ci0gICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhv
c3QtPmludmFsaWRhdGVSZWN0KGRpcnR5UmVjdCk7Ci19Ci0KIGNvbnN0IExheWVyUmVuZGVyZXJD
YXBhYmlsaXRpZXMmIENDTGF5ZXJUcmVlSG9zdDo6bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMo
KTsKQEAgLTIzMSw0NSArMjE3LDkgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzUmVk
cmF3KCkKICNlbmRpZgogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y2xlYXJSZW5kZXJTdXJm
YWNlc1JlY3Vyc2l2ZShMYXllckNocm9taXVtKiBsYXllcikKLXsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGxheWVyLT5jaGlsZHJlbigpLnNpemUoKTsgKytpKQotICAgICAgICBjbGVhclJl
bmRlclN1cmZhY2VzUmVjdXJzaXZlKGxheWVyLT5jaGlsZHJlbigpW2ldLmdldCgpKTsKLQotICAg
IGlmIChsYXllci0+cmVwbGljYUxheWVyKCkpCi0gICAgICAgIGNsZWFyUmVuZGVyU3VyZmFjZXNS
ZWN1cnNpdmUobGF5ZXItPnJlcGxpY2FMYXllcigpKTsKLQotICAgIGlmIChsYXllci0+bWFza0xh
eWVyKCkpCi0gICAgICAgIGNsZWFyUmVuZGVyU3VyZmFjZXNSZWN1cnNpdmUobGF5ZXItPm1hc2tM
YXllcigpKTsKLQotICAgIGxheWVyLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKLX0KLQotCi12b2lk
IENDTGF5ZXJUcmVlSG9zdDo6c2V0Um9vdExheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQotewot
ICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5ncmFwaGljc0xheWVyKCktPnJlbW92ZUFs
bENoaWxkcmVuKCk7Ci0gICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPmludmFsaWRhdGVF
bnRpcmVMYXllcigpOwotICAgIGlmIChsYXllcikKLSAgICAgICAgbV9ub25Db21wb3NpdGVkQ29u
dGVudEhvc3QtPmdyYXBoaWNzTGF5ZXIoKS0+YWRkQ2hpbGQobGF5ZXIpOwotICAgIGVsc2Ugewot
ICAgICAgICBjbGVhclJlbmRlclN1cmZhY2VzUmVjdXJzaXZlKHJvb3RMYXllcigpLT5wbGF0Zm9y
bUxheWVyKCkpOwotICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+Z3JhcGhpY3NM
YXllcigpLT5wbGF0Zm9ybUxheWVyKCktPnNldExheWVyVHJlZUhvc3QoMCk7Ci0gICAgICAgIG1f
cm9vdExheWVyLT5wbGF0Zm9ybUxheWVyKCktPnNldExheWVyVHJlZUhvc3QoMCk7Ci0gICAgfQot
fQotCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0Vmlld3BvcnQoY29uc3QgSW50U2l6ZSYgdmll
d3BvcnRTaXplLCBjb25zdCBJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IEludFBvaW50JiBz
Y3JvbGxQb3NpdGlvbikKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRWaWV3cG9ydChjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUpCiB7Ci0gICAgYm9vbCB2aXNpYmxlUmVjdENoYW5nZWQgPSBt
X3ZpZXdwb3J0U2l6ZSAhPSB2aWV3cG9ydFNpemU7Ci0KICAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZp
ZXdwb3J0U2l6ZTsKLSAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0U2Nyb2xsUG9z
aXRpb24oc2Nyb2xsUG9zaXRpb24pOwotICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5n
cmFwaGljc0xheWVyKCktPnNldFNpemUoY29udGVudHNTaXplKTsKLQotICAgIGlmICh2aXNpYmxl
UmVjdENoYW5nZWQpCi0gICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5pbnZhbGlk
YXRlRW50aXJlTGF5ZXIoKTsKLQogICAgIHNldE5lZWRzQ29tbWl0QW5kUmVkcmF3KCk7CiB9CiAK
QEAgLTI3OSw3ICsyMjksNiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZShib29s
IHZpc2libGUpCiAgICAgaWYgKHZpc2libGUpCiAgICAgICAgIG1fcHJveHktPnNldE5lZWRzQ29t
bWl0QW5kUmVkcmF3KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0LT5wcm90ZWN0VmlzaWJsZVRpbGVUZXh0dXJlcygpOwogICAgICAgICBtX2NvbnRlbnRz
VGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQoVGV4dHVyZU1hbmFnZXI6Omxvd0xp
bWl0Qnl0ZXMoKSk7CiAgICAgICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0
QWxsVGV4dHVyZXMoKTsKICAgICAgICAgbV9wcm94eS0+c2V0TmVlZHNDb21taXQoKTsKQEAgLTMx
Miw3ICsyNjEsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKICAgICBp
ZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRh
dGVMYXllcnMocm9vdExheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgdXBkYXRlTGF5ZXJz
KHJvb3RMYXllcigpKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhM
YXllckNocm9taXVtKiByb290TGF5ZXIpCkBAIC0zOTUsNyArMzQ0LDcgQEAgdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QKICAgICAgICAgICAgIGlmIChsYXllci0+Ym91bmRzKCkuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBJbnRSZWN0IGRlZmF1bHRD
b250ZW50UmVjdCA9IEludFJlY3Qocm9vdExheWVyKCktPnBsYXRmb3JtTGF5ZXIoKS0+c2Nyb2xs
UG9zaXRpb24oKSwgdmlld3BvcnRTaXplKCkpOworICAgICAgICAgICAgSW50UmVjdCBkZWZhdWx0
Q29udGVudFJlY3QgPSBJbnRSZWN0KHJvb3RMYXllcigpLT5zY3JvbGxQb3NpdGlvbigpLCB2aWV3
cG9ydFNpemUoKSk7CiAKICAgICAgICAgICAgIEludFJlY3QgdGFyZ2V0U3VyZmFjZVJlY3QgPSBs
YXllci0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpID8gbGF5ZXItPnRhcmdldFJlbmRlclN1cmZhY2Uo
KS0+Y29udGVudFJlY3QoKSA6IGRlZmF1bHRDb250ZW50UmVjdDsKICAgICAgICAgICAgIGlmIChs
YXllci0+dXNlc0xheWVyU2Npc3NvcigpKQpAQCAtNDU3LDQgKzQwNiwxNCBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhMYXllckNocm9taXVtKiBsYXll
ciwgR3JhcGhpY3NDbwogICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhj
b250ZXh0KTsKIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSgp
Cit7CisgICAgZm9yIChpbnQgc3VyZmFjZUluZGV4ID0gbV91cGRhdGVMaXN0LnNpemUoKSAtIDE7
IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJv
bWl1bSogbGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKKyAgICAgICAg
QVNTRVJUKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBsYXllci0+Y2xlYXJSZW5k
ZXJTdXJmYWNlKCk7CisgICAgfQorICAgIG1fdXBkYXRlTGlzdC5jbGVhcigpOworfQorCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGM3MTNmMDNlN2FkMjMxNzlhYzg3NzYzMGEy
M2M5ZjQ3ODFiNzFjNTcuLjY5ZmQ2MTQ4NTAyMDA1YzE5MTYwNjI3YzFiYzdhYjBlOTk2MDllNDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC00NSw4ICs0NSw2IEBAIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDNEOwogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKIGNsYXNzIExheWVyUGFpbnRl
ckNocm9taXVtOwogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOwotY2xhc3MgR3JhcGhpY3NM
YXllcjsKLWNsYXNzIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDsKIGNsYXNzIFRleHR1cmVNYW5h
Z2VyOwogCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RDbGllbnQgewpAQCAtOTQsNyArOTIsNyBAQCBz
dHJ1Y3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyB7CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9z
dCA6IHB1YmxpYyBSZWZDb3VudGVkPENDTGF5ZXJUcmVlSG9zdD4gewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gY3JlYXRlKENDTGF5ZXJUcmVlSG9zdENs
aWVudCosIGNvbnN0IENDU2V0dGluZ3MmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDQ0xheWVy
VHJlZUhvc3Q+IGNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqLCBQYXNzUmVmUHRyPExheWVy
Q2hyb21pdW0+IHJvb3RMYXllciwgY29uc3QgQ0NTZXR0aW5ncyYpOwogICAgIHZpcnR1YWwgfkND
TGF5ZXJUcmVlSG9zdCgpOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0IGludGVyZmFjZSB0byBD
Q1Byb3h5LgpAQCAtMTI5LDcgKzEyNyw2IEBAIHB1YmxpYzoKIAogICAgIGludCBmcmFtZU51bWJl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVOdW1iZXI7IH0KIAotICAgIHZvaWQgaW52YWxpZGF0
ZVJvb3RMYXllclJlY3QoY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKICAgICB2b2lkIHNldFpv
b21BbmltYXRvclNjYWxlKGRvdWJsZSk7CiAKICAgICBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3Q7CkBAIC0xNDAsMjcgKzEz
NywyNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOwogICAg
IHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKIAotICAgIHZvaWQgc2V0Um9vdExheWVyKEdyYXBoaWNz
TGF5ZXIqKTsKLSAgICBHcmFwaGljc0xheWVyKiByb290TGF5ZXIoKSB7IHJldHVybiBtX3Jvb3RM
YXllci5nZXQoKTsgfQotICAgIGNvbnN0IEdyYXBoaWNzTGF5ZXIqIHJvb3RMYXllcigpIGNvbnN0
IHsgcmV0dXJuIG1fcm9vdExheWVyLmdldCgpOyB9CisgICAgTGF5ZXJDaHJvbWl1bSogcm9vdExh
eWVyKCkgeyByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBMYXllckNocm9t
aXVtKiByb290TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RMYXllci5nZXQoKTsgfQogCiAg
ICAgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdz
OyB9CiAKLSAgICB2b2lkIHNldFZpZXdwb3J0KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwg
Y29uc3QgSW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRp
b24pOworICAgIHZvaWQgc2V0Vmlld3BvcnQoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKTsK
IAogICAgIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmll
d3BvcnRTaXplOyB9CiAgICAgVGV4dHVyZU1hbmFnZXIqIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIo
KSBjb25zdDsKIAogICAgIHZvaWQgc2V0VmlzaWJsZShib29sKTsKIAotICAgIE5vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdCogbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KCkgY29uc3QgeyByZXR1cm4g
bV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QuZ2V0KCk7IH0KLQogICAgIHZvaWQgdXBkYXRlTGF5
ZXJzKCk7CiAKICAgICB2b2lkIGRlbGV0ZUNvbnRlbnRzVGV4dHVyZXMoR3JhcGhpY3NDb250ZXh0
M0QqKTsKIAogcHJvdGVjdGVkOgotICAgIENDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RD
bGllbnQqLCBjb25zdCBDQ1NldHRpbmdzJik7CisgICAgQ0NMYXllclRyZWVIb3N0KENDTGF5ZXJU
cmVlSG9zdENsaWVudCosIFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyLCBjb25z
dCBDQ1NldHRpbmdzJik7CiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPExh
eWVyQ2hyb21pdW0+ID4gTGF5ZXJMaXN0OwpAQCAtMTY5LDggKzE2Myw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSopOwogICAgIHZvaWQgdXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhjb25zdCBMYXllckxpc3QmLCBHcmFwaGljc0NvbnRleHQzRCopOwog
ICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhMYXllckNocm9taXVtKiwgR3JhcGhp
Y3NDb250ZXh0M0QqKTsKLQotICAgIHZvaWQgY2xlYXJSZW5kZXJTdXJmYWNlc1JlY3Vyc2l2ZShM
YXllckNocm9taXVtKik7CisgICAgdm9pZCBjbGVhclBlbmRpbmdVcGRhdGUoKTsKIAogICAgIGJv
b2wgaW5pdGlhbGl6ZSgpOwogCkBAIC0xODQsOCArMTc3LDcgQEAgcHJpdmF0ZToKIAogICAgIE93
blB0cjxDQ1Byb3h5PiBtX3Byb3h5OwogCi0gICAgT3duUHRyPEdyYXBoaWNzTGF5ZXI+IG1fcm9v
dExheWVyOwotICAgIE93blB0cjxOb25Db21wb3NpdGVkQ29udGVudEhvc3Q+IG1fbm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jvb3RMYXllcjsK
ICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fY29udGVudHNUZXh0dXJlTWFuYWdlcjsKIAog
ICAgIExheWVyTGlzdCBtX3VwZGF0ZUxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGYwNGY5Mjg3ZGNiYjFhZmRhNTY5ZjAyZGZjODVlYmRiNzhkNTRlN2QuLjY4NDhjMDAxN2U2ZWM4
Mzc3N2I2NmUxZDgwMDliYjdjNzI4ZTdhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTEtMDktMTMgIEFudG9pbmUgTGFib3VyICA8cGltYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJlbW92ZSB0aGUgZGVwZW5kZW5jeSBvbiBHcmFwaGljc0xheWVy
IGZyb20gQ0NMYXllclRyZWVIb3N0LgorICAgICAgICBNb3ZlIHJvb3QgbGF5ZXIgbWFuYWdlbWVu
dCBpbnRvIHRoZSBOb25Db21wb3NpdGVkQ29udGVudEhvc3QuCisgICAgICAgIEhhdmUgV2ViVmll
d0ltcGwgY3JlYXRlIGEgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0IGV4cGxpY2l0bHkuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Nzg4MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYlZpZXdJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFJvb3RHcmFwaGljc0xh
eWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmludmFsaWRhdGVSb290TGF5ZXJS
ZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp1cGRhdGVMYXll
clRyZWVWaWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRWaXNpYmls
aXR5U3RhdGUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDExLTA5LTEzICBF
cmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX1NW
R19VU0UgYXMgPHVzZT4gaXMgcmVxdWlyZWQgYnkgSFRNTDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA2OWI3NTgxMWQ4MGU4NTU4ZGNjNWEwOWQwNjk0
OTBkNTE3OWMzOTdhLi41MTI5ZGYyYjBkMTNhOWNjODQ3ZjBjMWIwZTQxM2VkMGZhMzg2MGJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC03NCw5ICs3
NCwxMSBAQAogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJLZXli
b2FyZENvZGVzLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIkxheWVy
Q2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUg
Ik1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKKyNpbmNs
dWRlICJOb25Db21wb3NpdGVkQ29udGVudEhvc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwTG9hZERlZmVycmVyLmgiCkBA
IC0yNTQ5LDggKzI1NTEsOCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRSb290R3JhcGhpY3NMYXll
cihHcmFwaGljc0xheWVyKiBsYXllcikKICAgICBtX3Jvb3RHcmFwaGljc0xheWVyID0gbGF5ZXI7
CiAKICAgICBzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUobGF5ZXIpOwotICAgIGlm
IChtX2xheWVyVHJlZUhvc3QpCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVy
KGxheWVyKTsKKyAgICBpZiAobV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QpCisgICAgICAgIG1f
bm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRSb290TGF5ZXIobGF5ZXIpOwogCiAgICAgSW50
UmVjdCBkYW1hZ2VkUmVjdCgwLCAwLCBtX3NpemUud2lkdGgsIG1fc2l6ZS5oZWlnaHQpOwogICAg
IGlmICghbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpCkBAIC0yNTg1LDcgKzI1ODcs
NyBAQCB2b2lkIFdlYlZpZXdJbXBsOjppbnZhbGlkYXRlUm9vdExheWVyUmVjdChjb25zdCBJbnRS
ZWN0JiByZWN0KQogICAgIEZyYW1lVmlldyogdmlldyA9IHBhZ2UoKS0+bWFpbkZyYW1lKCktPnZp
ZXcoKTsKICAgICBJbnRSZWN0IGRpcnR5UmVjdCA9IHZpZXctPndpbmRvd1RvQ29udGVudHMocmVj
dCk7CiAgICAgdXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKTsKLSAgICBtX2xheWVyVHJlZUhvc3Qt
PmludmFsaWRhdGVSb290TGF5ZXJSZWN0KGRpcnR5UmVjdCk7CisgICAgbV9ub25Db21wb3NpdGVk
Q29udGVudEhvc3QtPmludmFsaWRhdGVSZWN0KGRpcnR5UmVjdCk7CiAgICAgc2V0Um9vdExheWVy
TmVlZHNEaXNwbGF5KCk7CiB9CiAKQEAgLTI2NTQsNyArMjY1Niw4IEBAIHZvaWQgV2ViVmlld0lt
cGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAg
ICAgY2NTZXR0aW5ncy5zaG93RlBTQ291bnRlciA9IHNldHRpbmdzKCktPnNob3dGUFNDb3VudGVy
KCk7CiAgICAgICAgIGNjU2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVlID0gc2V0dGluZ3Mo
KS0+c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKCk7CiAKLSAgICAgICAgbV9sYXllclRyZWVIb3N0ID0g
Q0NMYXllclRyZWVIb3N0OjpjcmVhdGUodGhpcywgY2NTZXR0aW5ncyk7CisgICAgICAgIG1fbm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0ID0gTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpjcmVhdGUo
V2ViVmlld0ltcGxDb250ZW50UGFpbnRlcjo6Y3JlYXRlKHRoaXMpKTsKKyAgICAgICAgbV9sYXll
clRyZWVIb3N0ID0gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUodGhpcywgbV9ub25Db21wb3NpdGVk
Q29udGVudEhvc3QtPnRvcExldmVsUm9vdExheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSwgY2NTZXR0
aW5ncyk7CiAgICAgICAgIGlmIChtX2xheWVyVHJlZUhvc3QpIHsKICAgICAgICAgICAgIHVwZGF0
ZUxheWVyVHJlZVZpZXdwb3J0KCk7CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQWN0aXZhdGVB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nKHRydWUpOwpAQCAtMjczOCw3ICsyNzQxLDggQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6dXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKQogICAgIEludFJlY3QgdmlzaWJs
ZVJlY3QgPSB2aWV3LT52aXNpYmxlQ29udGVudFJlY3QodHJ1ZSAvKiBpbmNsdWRlIHNjcm9sbGJh
cnMgKi8pOwogICAgIEludFBvaW50IHNjcm9sbCh2aWV3LT5zY3JvbGxYKCksIHZpZXctPnNjcm9s
bFkoKSk7CiAKLSAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0KHZpc2libGVSZWN0LnNp
emUoKSwgdmlldy0+Y29udGVudHNTaXplKCksIHNjcm9sbCk7CisgICAgbV9ub25Db21wb3NpdGVk
Q29udGVudEhvc3QtPnNldFZpZXdwb3J0KHZpc2libGVSZWN0LnNpemUoKSwgdmlldy0+Y29udGVu
dHNTaXplKCksIHNjcm9sbCk7CisgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydCh2aXNp
YmxlUmVjdC5zaXplKCkpOwogfQogCiBXZWJHcmFwaGljc0NvbnRleHQzRCogV2ViVmlld0ltcGw6
OmdyYXBoaWNzQ29udGV4dDNEKCkKQEAgLTI3ODAsOCArMjc4NCwxMiBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpzZXRWaXNpYmlsaXR5U3RhdGUoV2ViUGFnZVZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5
U3RhdGUsCiAjZW5kaWYKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBp
ZiAoaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkpCi0gICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+c2V0VmlzaWJsZSh2aXNpYmlsaXR5U3RhdGUgPT0gV2ViUGFnZVZpc2liaWxpdHlTdGF0
ZVZpc2libGUpOworICAgIGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkgewor
ICAgICAgICBib29sIHZpc2libGUgPSB2aXNpYmlsaXR5U3RhdGUgPT0gV2ViUGFnZVZpc2liaWxp
dHlTdGF0ZVZpc2libGU7CisgICAgICAgIGlmICghdmlzaWJsZSkKKyAgICAgICAgICAgIG1fbm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0LT5wcm90ZWN0VmlzaWJsZVRpbGVUZXh0dXJlcygpOworICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpc2libGUodmlzaWJsZSk7CisgICAgfQogI2VuZGlm
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IGZhNWFl
YjgxYzAyMTk5MTY0YmE4ZTA5OWMyNDBiNzllOWY4YjNiNmIuLjY5NDFmMzI0Mjk5MmQxMzU3ZjI5
MWJlNDVhYzE4MjRlMDZiZGY5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaApAQCAtNjAsNiArNjAsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNz
IEhpc3RvcnlJdGVtOwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7
CitjbGFzcyBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q7CiBjbGFzcyBQYWdlOwogY2xhc3MgUGxh
dGZvcm1LZXlib2FyZEV2ZW50OwogY2xhc3MgUG9wdXBDb250YWluZXI7CkBAIC01NzIsNiArNTcz
LDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBX
ZWJDb3JlOjpJbnRSZWN0IG1fcm9vdExheWVyU2Nyb2xsRGFtYWdlOworICAgIE93blB0cjxXZWJD
b3JlOjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q+IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0
OwogICAgIFJlZlB0cjxXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q+IG1fbGF5ZXJUcmVlSG9zdDsK
ICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBtX3Jvb3RHcmFwaGljc0xheWVyOwogICAgIGJv
b2wgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107434</attachid>
            <date>2011-09-14 18:15:35 -0700</date>
            <delta_ts>2011-09-14 18:19:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67883-20110914181534.patch</filename>
            <type>text/plain</type>
            <size>21335</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUxNDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyYjMwNDBkOWUyYTJkZDg5
YmUwOGRjZDEwZjFlZTQyOGFjNmZmNjEyLi43YWM2MmU0NmQyMzdjNmRjZmFkM2Y0ODA5NjViYjgw
MTE0ZGIzZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDktMTMgIEFudG9p
bmUgTGFib3VyICA8cGltYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbW92ZSB0aGUgZGVw
ZW5kZW5jeSBvbiBHcmFwaGljc0xheWVyIGZyb20gQ0NMYXllclRyZWVIb3N0LgorICAgICAgICBN
b3ZlIHJvb3QgbGF5ZXIgbWFuYWdlbWVudCBpbnRvIHRoZSBOb25Db21wb3NpdGVkQ29udGVudEhv
c3QuCisgICAgICAgIEhhdmUgV2ViVmlld0ltcGwgY3JlYXRlIGEgTm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0IGV4cGxpY2l0bHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02Nzg4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENvdmVyZWQgYnkgY29tcG9zaXRpbmcvIGxheW91dCB0ZXN0cy4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFJvb3RM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFZp
ZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0
VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmNs
ZWFyUmVuZGVyU3VyZmFjZXNSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0OjppbnZhbGlkYXRlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnRvcExldmVsUm9vdExheWVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6Y29tbWl0VG8pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpkaWRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OnNldFZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dDo6c2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0
ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJD
b250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnJvb3RMYXll
cik6CisKIDIwMTEtMDktMTQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
IAogICAgICAgICBUcnkgdG8gZml4IEdUSysgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0LmNwcAppbmRleCA3NzczMzhhMzk2YzBkOWVhMDA4Y2IzODViNTYzMjFk
MTYzMjNhNTIwLi5lODU0ZjM2YTc1ZWZhYzE2YWFhNGZmMmRlMTk4OGJmZDBhNzBlMGE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21w
b3NpdGVkQ29udGVudEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKQEAgLTQ5LDE5ICs0OSwy
NiBAQCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6On5Ob25Db21wb3NpdGVkQ29udGVudEhvc3Qo
KQogewogfQogCi12b2lkIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6aW52YWxpZGF0ZVJlY3Qo
Y29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBtX2dyYXBoaWNzTGF5ZXItPnNldE5lZWRzRGlz
cGxheUluUmVjdChGbG9hdFJlY3QocmVjdCkpOwotfQotCi12b2lkIE5vbkNvbXBvc2l0ZWRDb250
ZW50SG9zdDo6aW52YWxpZGF0ZUVudGlyZUxheWVyKCkKK3ZvaWQgTm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0OjpzZXRSb290TGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiB7CisgICAgbV9ncmFw
aGljc0xheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOwogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0
TmVlZHNEaXNwbGF5KCk7CisgICAgaWYgKGxheWVyKQorICAgICAgICBtX2dyYXBoaWNzTGF5ZXIt
PmFkZENoaWxkKGxheWVyKTsKKyAgICBlbHNlCisgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+cGxh
dGZvcm1MYXllcigpLT5zZXRMYXllclRyZWVIb3N0KDApOwogfQogCi12b2lkIE5vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdDo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBv
c2l0aW9uKQordm9pZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFZpZXdwb3J0KGNvbnN0
IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgSW50U2l6ZSYgY29udGVudHNTaXplLCBjb25z
dCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCiB7CisgICAgYm9vbCB2aXNpYmxlUmVjdENoYW5n
ZWQgPSBtX3ZpZXdwb3J0U2l6ZSAhPSB2aWV3cG9ydFNpemU7CisKKyAgICBtX3ZpZXdwb3J0U2l6
ZSA9IHZpZXdwb3J0U2l6ZTsKICAgICBtX2dyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS0+
c2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24pOworICAgIG1fZ3JhcGhpY3NMYXllci0+
c2V0U2l6ZShjb250ZW50c1NpemUpOworCisgICAgaWYgKHZpc2libGVSZWN0Q2hhbmdlZCkKKyAg
ICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAogdm9pZCBOb25D
b21wb3NpdGVkQ29udGVudEhvc3Q6OnByb3RlY3RWaXNpYmxlVGlsZVRleHR1cmVzKCkKQEAgLTY5
LDYgKzc2LDExIEBAIHZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Ojpwcm90ZWN0VmlzaWJs
ZVRpbGVUZXh0dXJlcygpCiAgICAgbV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCktPnBy
b3RlY3RWaXNpYmxlVGlsZVRleHR1cmVzKCk7CiB9CiAKK3ZvaWQgTm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0OjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIG1fZ3Jh
cGhpY3NMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KEZsb2F0UmVjdChyZWN0KSk7Cit9CisK
IHZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Ojpub3RpZnlBbmltYXRpb25TdGFydGVkKGNv
bnN0IEdyYXBoaWNzTGF5ZXIqLCBkb3VibGUgLyogdGltZSAqLykKIHsKICAgICAvLyBJbnRlbnRp
b25hbGx5IGxlZnQgZW1wdHkgc2luY2Ugd2UgZG9uJ3Qgc3VwcG9ydCBhbmltYXRpb25zIG9uIHRo
ZSBub24tY29tcG9zaXRlZCBjb250ZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVu
dEhvc3QuaAppbmRleCA0NjczNjA5ZDI2MzVkZWY1YmQ0Mjc4OTViYzViYzMxNTk2M2U0ZTYwLi44
OWE4ZmNlY2ExNWQwYjE5OGFkOTczYTU5MDU0Zjc3ZDZmNjM4MzI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVu
dEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9O
b25Db21wb3NpdGVkQ29udGVudEhvc3QuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBOb25D
b21wb3NpdGVkQ29udGVudEhvc3RfaAogCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5o
IgorI2luY2x1ZGUgIkludFNpemUuaCIKIAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTM2LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBHcmFwaGljc0xheWVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xh
c3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07
CiAKQEAgLTQ5LDExICs1MSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Tm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0KCk7CiAKICAgICB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3Qm
KTsKLSAgICB2b2lkIGludmFsaWRhdGVFbnRpcmVMYXllcigpOwotICAgIHZvaWQgc2V0U2Nyb2xs
UG9zaXRpb24oY29uc3QgSW50UG9pbnQmKTsKKyAgICB2b2lkIHNldFJvb3RMYXllcihHcmFwaGlj
c0xheWVyKik7CisgICAgdm9pZCBzZXRWaWV3cG9ydChjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNp
emUsIGNvbnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgSW50UG9pbnQmIHNjcm9sbFBv
c2l0aW9uKTsKICAgICB2b2lkIHByb3RlY3RWaXNpYmxlVGlsZVRleHR1cmVzKCk7Ci0KLSAgICBH
cmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9ncmFwaGljc0xh
eWVyLmdldCgpOyB9CisgICAgR3JhcGhpY3NMYXllciogdG9wTGV2ZWxSb290TGF5ZXIoKSBjb25z
dCB7IHJldHVybiBtX2dyYXBoaWNzTGF5ZXIuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBOb25Db21wb3NpdGVkQ29udGVudEhvc3QoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJv
bWl1bT4gY29udGVudFBhaW50KTsKQEAgLTY3LDYgKzY4LDcgQEAgcHJpdmF0ZToKIAogICAgIE93
blB0cjxHcmFwaGljc0xheWVyPiBtX2dyYXBoaWNzTGF5ZXI7CiAgICAgT3duUHRyPExheWVyUGFp
bnRlckNocm9taXVtPiBtX2NvbnRlbnRQYWludDsKKyAgICBJbnRTaXplIG1fdmlld3BvcnRTaXpl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5jcHAKaW5kZXggY2VhNTc5YzkzNjk3M2MxZWJiYTgyZmY4OGRjMDgxNGRkOWRjYWRiMC4uZTgy
MWFlYjQzMjAzZDM5NGFkMDJkYmU4ZjlkNjA0YzZiZjQyN2NiYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1
bS5oIgogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmgiCi0jaW5jbHVkZSAiTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Lmgi
CiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIlRyZWVTeW5jaHJvbml6ZXIuaCIK
ICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKQEAgLTQwLDE5ICszOSwxOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBD
Q0xheWVyVHJlZUhvc3Q6OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29u
c3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCitQYXNzUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gQ0NM
YXllclRyZWVIb3N0OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIFBhc3NS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyLCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5n
cykKIHsKLSAgICBSZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBsYXllclRyZWVIb3N0ID0gYWRvcHRS
ZWYobmV3IENDTGF5ZXJUcmVlSG9zdChjbGllbnQsIHNldHRpbmdzKSk7CisgICAgUmVmUHRyPEND
TGF5ZXJUcmVlSG9zdD4gbGF5ZXJUcmVlSG9zdCA9IGFkb3B0UmVmKG5ldyBDQ0xheWVyVHJlZUhv
c3QoY2xpZW50LCByb290TGF5ZXIsIHNldHRpbmdzKSk7CiAgICAgaWYgKCFsYXllclRyZWVIb3N0
LT5pbml0aWFsaXplKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBsYXllclRyZWVI
b3N0OwogfQogCi1DQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhv
c3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCitDQ0xheWVyVHJl
ZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgUGFz
c1JlZlB0cjxMYXllckNocm9taXVtPiByb290TGF5ZXIsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRp
bmdzKQogICAgIDogbV9hbmltYXRpbmcoZmFsc2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAg
ICAgLCBtX2ZyYW1lTnVtYmVyKDApCi0gICAgLCBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdChO
b25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmNyZWF0ZShtX2NsaWVudC0+Y3JlYXRlUm9vdExheWVy
UGFpbnRlcigpKSkKKyAgICAsIG1fcm9vdExheWVyKHJvb3RMYXllcikKICAgICAsIG1fc2V0dGlu
Z3Moc2V0dGluZ3MpCiAgICAgLCBtX3pvb21BbmltYXRvclNjYWxlKDEpCiAgICAgLCBtX3Zpc2li
bGUodHJ1ZSkKQEAgLTc1LDE0ICs3NCw2IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojppbml0aWFs
aXplKCkKICAgICAvLyBVcGRhdGUgbV9zZXR0aW5ncyBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgdGhh
dCB3ZSBnb3QgYmFjayBmcm9tIHRoZSByZW5kZXJlci4KICAgICBtX3NldHRpbmdzLmFjY2VsZXJh
dGVQYWludGluZyA9IG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ0Fj
Y2VsZXJhdGVkUGFpbnRpbmc7CiAKLSAgICBtX3Jvb3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNy
ZWF0ZSgwKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgbV9yb290TGF5ZXItPnNldE5hbWUoInJvb3Qg
bGF5ZXIiKTsKLSNlbmRpZgotICAgIG1fcm9vdExheWVyLT5zZXREcmF3c0NvbnRlbnQoZmFsc2Up
OwotCi0gICAgbV9yb290TGF5ZXItPmFkZENoaWxkKG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0
LT5ncmFwaGljc0xheWVyKCkpOwotCiAgICAgLy8gV2UgY2hhbmdlZCB0aGUgcm9vdCBsYXllci4g
VGVsbCB0aGUgcHJveHkgYSBjb21taXQgaXMgbmVlZGVkLgogICAgIG1fcHJveHktPnNldE5lZWRz
Q29tbWl0QW5kUmVkcmF3KCk7CiAKQEAgLTk2LDcgKzg3LDcgQEAgQ0NMYXllclRyZWVIb3N0Ojp+
Q0NMYXllclRyZWVIb3N0KCkKICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp+Q0NM
YXllclRyZWVIb3N0IiwgdGhpcywgMCk7CiAgICAgbV9wcm94eS0+c3RvcCgpOwogICAgIG1fcHJv
eHkuY2xlYXIoKTsKLSAgICBtX3VwZGF0ZUxpc3QuY2xlYXIoKTsKKyAgICBjbGVhclBlbmRpbmdV
cGRhdGUoKTsKICAgICBBU1NFUlQoIW1fY29udGVudHNUZXh0dXJlTWFuYWdlciB8fCAhbV9jb250
ZW50c1RleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7CiAgICAgbV9jb250
ZW50c1RleHR1cmVNYW5hZ2VyLmNsZWFyKCk7CiB9CkBAIC0xMjUsNyArMTE2LDcgQEAgdm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OmNvbW1pdFRvKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbXBsKQog
ICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+ZGVsZXRlRXZpY3RlZFRleHR1cmVzKGhvc3RJ
bXBsLT5jb250ZXh0KCkpOwogCiAgICAgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX3VwZGF0
ZUxpc3QsIGhvc3RJbXBsLT5jb250ZXh0KCkpOwotICAgIG1fdXBkYXRlTGlzdC5jbGVhcigpOwor
ICAgIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOwogCiAgICAgaG9zdEltcGwtPnNldFZpc2libGUobV92
aXNpYmxlKTsKICAgICBob3N0SW1wbC0+c2V0Wm9vbUFuaW1hdG9yU2NhbGUobV96b29tQW5pbWF0
b3JTY2FsZSk7CkBAIC0xMzYsNyArMTI3LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbW1p
dFRvKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbXBsKQogCiAgICAgLy8gU3luY2hyb25pemUg
dHJlZXMsIGlmIG9uZSBleGlzdHMgYXQgYWxsLi4uCiAgICAgaWYgKHJvb3RMYXllcigpKQotICAg
ICAgICBob3N0SW1wbC0+c2V0Um9vdExheWVyKFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXpl
VHJlZXMocm9vdExheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSwgaG9zdEltcGwtPnJvb3RMYXllcigp
KSk7CisgICAgICAgIGhvc3RJbXBsLT5zZXRSb290TGF5ZXIoVHJlZVN5bmNocm9uaXplcjo6c3lu
Y2hyb25pemVUcmVlcyhyb290TGF5ZXIoKSwgaG9zdEltcGwtPnJvb3RMYXllcigpKSk7CiAgICAg
ZWxzZQogICAgICAgICBob3N0SW1wbC0+c2V0Um9vdExheWVyKDApOwogCkBAIC0xNjMsNyArMTU0
LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRpZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0KGJv
b2wgc3VjY2VzcykKICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPmV2aWN0QW5kRGVsZXRl
QWxsVGV4dHVyZXMoMCk7CiAKICAgICBpZiAocm9vdExheWVyKCkpCi0gICAgICAgIHJvb3RMYXll
cigpLT5wbGF0Zm9ybUxheWVyKCktPmNsZWFudXBSZXNvdXJjZXNSZWN1cnNpdmUoKTsKKyAgICAg
ICAgcm9vdExheWVyKCktPmNsZWFudXBSZXNvdXJjZXNSZWN1cnNpdmUoKTsKICAgICBtX2NsaWVu
dC0+ZGlkUmVjcmVhdGVHcmFwaGljc0NvbnRleHQoc3VjY2Vzcyk7CiB9CiAKQEAgLTE5MSwxMSAr
MTgyLDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaEFsbFJlbmRlcmluZygpCiAgICAg
bV9wcm94eS0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0
OjppbnZhbGlkYXRlUm9vdExheWVyUmVjdChjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCi17Ci0g
ICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPmludmFsaWRhdGVSZWN0KGRpcnR5UmVjdCk7
Ci19Ci0KIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIENDTGF5ZXJUcmVlSG9zdDo6
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJveHkt
PmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKQEAgLTIzMSw0NSArMjE3LDkgQEAgdm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzUmVkcmF3KCkKICNlbmRpZgogfQogCi12b2lkIENDTGF5
ZXJUcmVlSG9zdDo6Y2xlYXJSZW5kZXJTdXJmYWNlc1JlY3Vyc2l2ZShMYXllckNocm9taXVtKiBs
YXllcikKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxheWVyLT5jaGlsZHJlbigpLnNp
emUoKTsgKytpKQotICAgICAgICBjbGVhclJlbmRlclN1cmZhY2VzUmVjdXJzaXZlKGxheWVyLT5j
aGlsZHJlbigpW2ldLmdldCgpKTsKLQotICAgIGlmIChsYXllci0+cmVwbGljYUxheWVyKCkpCi0g
ICAgICAgIGNsZWFyUmVuZGVyU3VyZmFjZXNSZWN1cnNpdmUobGF5ZXItPnJlcGxpY2FMYXllcigp
KTsKLQotICAgIGlmIChsYXllci0+bWFza0xheWVyKCkpCi0gICAgICAgIGNsZWFyUmVuZGVyU3Vy
ZmFjZXNSZWN1cnNpdmUobGF5ZXItPm1hc2tMYXllcigpKTsKLQotICAgIGxheWVyLT5jbGVhclJl
bmRlclN1cmZhY2UoKTsKLX0KLQotCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0Um9vdExheWVy
KEdyYXBoaWNzTGF5ZXIqIGxheWVyKQotewotICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0
LT5ncmFwaGljc0xheWVyKCktPnJlbW92ZUFsbENoaWxkcmVuKCk7Ci0gICAgbV9ub25Db21wb3Np
dGVkQ29udGVudEhvc3QtPmludmFsaWRhdGVFbnRpcmVMYXllcigpOwotICAgIGlmIChsYXllcikK
LSAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPmdyYXBoaWNzTGF5ZXIoKS0+YWRk
Q2hpbGQobGF5ZXIpOwotICAgIGVsc2UgewotICAgICAgICBjbGVhclJlbmRlclN1cmZhY2VzUmVj
dXJzaXZlKHJvb3RMYXllcigpLT5wbGF0Zm9ybUxheWVyKCkpOwotICAgICAgICBtX25vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdC0+Z3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUxheWVyKCktPnNldExh
eWVyVHJlZUhvc3QoMCk7Ci0gICAgICAgIG1fcm9vdExheWVyLT5wbGF0Zm9ybUxheWVyKCktPnNl
dExheWVyVHJlZUhvc3QoMCk7Ci0gICAgfQotfQotCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0
Vmlld3BvcnQoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBJbnRTaXplJiBjb250
ZW50c1NpemUsIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbikKK3ZvaWQgQ0NMYXllclRy
ZWVIb3N0OjpzZXRWaWV3cG9ydChjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiB7Ci0gICAg
Ym9vbCB2aXNpYmxlUmVjdENoYW5nZWQgPSBtX3ZpZXdwb3J0U2l6ZSAhPSB2aWV3cG9ydFNpemU7
Ci0KICAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKLSAgICBtX25vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdC0+c2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24pOwotICAgIG1f
bm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5ncmFwaGljc0xheWVyKCktPnNldFNpemUoY29udGVu
dHNTaXplKTsKLQotICAgIGlmICh2aXNpYmxlUmVjdENoYW5nZWQpCi0gICAgICAgIG1fbm9uQ29t
cG9zaXRlZENvbnRlbnRIb3N0LT5pbnZhbGlkYXRlRW50aXJlTGF5ZXIoKTsKLQogICAgIHNldE5l
ZWRzQ29tbWl0QW5kUmVkcmF3KCk7CiB9CiAKQEAgLTI3OSw3ICsyMjksNiBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgaWYgKHZpc2libGUpCiAg
ICAgICAgIG1fcHJveHktPnNldE5lZWRzQ29tbWl0QW5kUmVkcmF3KCk7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5wcm90ZWN0VmlzaWJsZVRpbGVUZXh0
dXJlcygpOwogICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRv
TGltaXQoVGV4dHVyZU1hbmFnZXI6Omxvd0xpbWl0Qnl0ZXMoKSk7CiAgICAgICAgIG1fY29udGVu
dHNUZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKICAgICAgICAgbV9wcm94
eS0+c2V0TmVlZHNDb21taXQoKTsKQEAgLTMxMiw3ICsyNjEsNyBAQCB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6dXBkYXRlTGF5ZXJzKCkKICAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVMYXllcnMocm9vdExheWVyKCktPnBsYXRmb3Jt
TGF5ZXIoKSk7CisgICAgdXBkYXRlTGF5ZXJzKHJvb3RMYXllcigpKTsKIH0KIAogdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCkBAIC0z
OTUsNyArMzQ0LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhj
b25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QKICAgICAgICAgICAgIGlmIChs
YXllci0+Ym91bmRzKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgICAgICBJbnRSZWN0IGRlZmF1bHRDb250ZW50UmVjdCA9IEludFJlY3Qocm9vdExheWVy
KCktPnBsYXRmb3JtTGF5ZXIoKS0+c2Nyb2xsUG9zaXRpb24oKSwgdmlld3BvcnRTaXplKCkpOwor
ICAgICAgICAgICAgSW50UmVjdCBkZWZhdWx0Q29udGVudFJlY3QgPSBJbnRSZWN0KHJvb3RMYXll
cigpLT5zY3JvbGxQb3NpdGlvbigpLCB2aWV3cG9ydFNpemUoKSk7CiAKICAgICAgICAgICAgIElu
dFJlY3QgdGFyZ2V0U3VyZmFjZVJlY3QgPSBsYXllci0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpID8g
bGF5ZXItPnRhcmdldFJlbmRlclN1cmZhY2UoKS0+Y29udGVudFJlY3QoKSA6IGRlZmF1bHRDb250
ZW50UmVjdDsKICAgICAgICAgICAgIGlmIChsYXllci0+dXNlc0xheWVyU2Npc3NvcigpKQpAQCAt
NDU3LDQgKzQwNiwxNCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhMYXllckNocm9taXVtKiBsYXllciwgR3JhcGhpY3NDbwogICAgICAgICBsYXllci0+
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0KTsKIH0KIAordm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSgpCit7CisgICAgZm9yIChzaXplX3Qgc3VyZmFjZUlu
ZGV4ID0gMDsgc3VyZmFjZUluZGV4IDwgbV91cGRhdGVMaXN0LnNpemUoKTsgKytzdXJmYWNlSW5k
ZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFj
ZUluZGV4XS5nZXQoKTsKKyAgICAgICAgQVNTRVJUKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwor
ICAgICAgICBsYXllci0+Y2xlYXJSZW5kZXJTdXJmYWNlKCk7CisgICAgfQorICAgIG1fdXBkYXRl
TGlzdC5jbGVhcigpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDM3
N2Y2OTFkMjE2ZWE4ZWE2NTM3ZWJlMDE2NDViNzkyNTE1ZTM5OTUuLmI1MjNmNzc1ZDljY2I2YzNm
Y2RmNzJmY2QwZGEwMDI0ZjMzYzJmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBA
IC00NCw4ICs0NCw2IEBAIGNsYXNzIENDVGhyZWFkOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7
CiBjbGFzcyBMYXllckNocm9taXVtOwogY2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07Ci1jbGFz
cyBHcmFwaGljc0xheWVyOwotY2xhc3MgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OwogY2xhc3Mg
VGV4dHVyZU1hbmFnZXI7CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdENsaWVudCB7CkBAIC05Myw3
ICs5MSw3IEBAIHN0cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzIHsKIAogY2xhc3MgQ0NM
YXllclRyZWVIb3N0IDogcHVibGljIFJlZkNvdW50ZWQ8Q0NMYXllclRyZWVIb3N0PiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBjcmVhdGUoQ0NMYXll
clRyZWVIb3N0Q2xpZW50KiwgY29uc3QgQ0NTZXR0aW5ncyYpOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENDTGF5ZXJUcmVlSG9zdD4gY3JlYXRlKENDTGF5ZXJUcmVlSG9zdENsaWVudCosIFBhc3NS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyLCBjb25zdCBDQ1NldHRpbmdzJik7CiAgICAg
dmlydHVhbCB+Q0NMYXllclRyZWVIb3N0KCk7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3QgaW50
ZXJmYWNlIHRvIENDUHJveHkuCkBAIC0xMjgsNyArMTI2LDYgQEAgcHVibGljOgogCiAgICAgaW50
IGZyYW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZU51bWJlcjsgfQogCi0gICAgdm9p
ZCBpbnZhbGlkYXRlUm9vdExheWVyUmVjdChjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOwogICAg
IHZvaWQgc2V0Wm9vbUFuaW1hdG9yU2NhbGUoZG91YmxlKTsKIAogICAgIGNvbnN0IExheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdDsKQEAg
LTEzOSwyNyArMTM2LDI0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRzQ29tbWl0QW5kUmVk
cmF3KCk7CiAgICAgdm9pZCBzZXROZWVkc1JlZHJhdygpOwogCi0gICAgdm9pZCBzZXRSb290TGF5
ZXIoR3JhcGhpY3NMYXllciopOwotICAgIEdyYXBoaWNzTGF5ZXIqIHJvb3RMYXllcigpIHsgcmV0
dXJuIG1fcm9vdExheWVyLmdldCgpOyB9Ci0gICAgY29uc3QgR3JhcGhpY3NMYXllciogcm9vdExh
eWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7IH0KKyAgICBMYXllckNocm9t
aXVtKiByb290TGF5ZXIoKSB7IHJldHVybiBtX3Jvb3RMYXllci5nZXQoKTsgfQorICAgIGNvbnN0
IExheWVyQ2hyb21pdW0qIHJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdExheWVyLmdl
dCgpOyB9CiAKICAgICBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJu
IG1fc2V0dGluZ3M7IH0KIAotICAgIHZvaWQgc2V0Vmlld3BvcnQoY29uc3QgSW50U2l6ZSYgdmll
d3BvcnRTaXplLCBjb25zdCBJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IEludFBvaW50JiBz
Y3JvbGxQb3NpdGlvbik7CisgICAgdm9pZCBzZXRWaWV3cG9ydChjb25zdCBJbnRTaXplJiB2aWV3
cG9ydFNpemUpOwogCiAgICAgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV92aWV3cG9ydFNpemU7IH0KICAgICBUZXh0dXJlTWFuYWdlciogY29udGVudHNUZXh0
dXJlTWFuYWdlcigpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogCi0gICAg
Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KiBub25Db21wb3NpdGVkQ29udGVudEhvc3QoKSBjb25z
dCB7IHJldHVybiBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5nZXQoKTsgfQotCiAgICAgdm9p
ZCB1cGRhdGVMYXllcnMoKTsKIAogICAgIHZvaWQgZGVsZXRlQ29udGVudHNUZXh0dXJlcyhHcmFw
aGljc0NvbnRleHQzRCopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgQ0NMYXllclRyZWVIb3N0KENDTGF5
ZXJUcmVlSG9zdENsaWVudCosIGNvbnN0IENDU2V0dGluZ3MmKTsKKyAgICBDQ0xheWVyVHJlZUhv
c3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiwgUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiByb290
TGF5ZXIsIGNvbnN0IENDU2V0dGluZ3MmKTsKIAogcHJpdmF0ZToKICAgICB0eXBlZGVmIFZlY3Rv
cjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBMYXllckxpc3Q7CkBAIC0xNjgsOCArMTYyLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKik7CiAgICAgdm9p
ZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnN0IExheWVyTGlzdCYsIEdyYXBoaWNzQ29u
dGV4dDNEKik7CiAgICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKExheWVyQ2hyb21p
dW0qLCBHcmFwaGljc0NvbnRleHQzRCopOwotCi0gICAgdm9pZCBjbGVhclJlbmRlclN1cmZhY2Vz
UmVjdXJzaXZlKExheWVyQ2hyb21pdW0qKTsKKyAgICB2b2lkIGNsZWFyUGVuZGluZ1VwZGF0ZSgp
OwogCiAgICAgYm9vbCBpbml0aWFsaXplKCk7CiAKQEAgLTE4MSw4ICsxNzQsNyBAQCBwcml2YXRl
OgogCiAgICAgT3duUHRyPENDUHJveHk+IG1fcHJveHk7CiAKLSAgICBPd25QdHI8R3JhcGhpY3NM
YXllcj4gbV9yb290TGF5ZXI7Ci0gICAgT3duUHRyPE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdD4g
bV9ub25Db21wb3NpdGVkQ29udGVudEhvc3Q7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1f
cm9vdExheWVyOwogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gbV9jb250ZW50c1RleHR1cmVN
YW5hZ2VyOwogCiAgICAgTGF5ZXJMaXN0IG1fdXBkYXRlTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggN2E3N2VkMDZhNTEyMjNlMzJiNDc4MTY4ZGI3NzNiNmUyZTBmZWRlNC4uOWIz
NWUwOGE1MmNmYjc2YmE1NzhhMTRiOGY2NDI0ODc0MjEwMjg3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0wOS0xMyAgQW50b2luZSBMYWJvdXIgIDxw
aW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBkZXBlbmRlbmN5IG9uIEdy
YXBoaWNzTGF5ZXIgZnJvbSBDQ0xheWVyVHJlZUhvc3QuCisgICAgICAgIE1vdmUgcm9vdCBsYXll
ciBtYW5hZ2VtZW50IGludG8gdGhlIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC4KKyAgICAgICAg
SGF2ZSBXZWJWaWV3SW1wbCBjcmVhdGUgYSBOb25Db21wb3NpdGVkQ29udGVudEhvc3QgZXhwbGlj
aXRseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3
ODgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Um9v
dEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aW52YWxpZGF0
ZVJvb3RMYXllclJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0SXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnNldFZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIw
MTEtMDktMTQgIE5lYm9qc2EgQ2lyaWMgIDxjaXJhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBD
aGFuZ2VkIFdlYktpdC5neXAgdG8gdXNlIHRoZSBuZXcgZ3JpdCB2ZXJzaW9uIG9mIHRoZSBzY3Jp
cHRzIHRoYXQgaGFuZGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKaW5kZXggNjliNzU4MTFkODBlODU1OGRjYzVhMDlkMDY5NDkwZDUxNzljMzk3YS4uNTEyOWRm
MmIwZDEzYTljYzg0N2YwYzFiMGU0MTNlZDBmYTM4NjBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNzQsOSArNzQsMTEgQEAKICNpbmNsdWRlICJJ
bnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRDb2Rlcy5oIgogI2luY2x1
ZGUgIktleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5jbHVk
ZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAiTm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgog
I2luY2x1ZGUgIlBhZ2VHcm91cExvYWREZWZlcnJlci5oIgpAQCAtMjU0OSw4ICsyNTUxLDggQEAg
dm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5
ZXIpCiAgICAgbV9yb290R3JhcGhpY3NMYXllciA9IGxheWVyOwogCiAgICAgc2V0SXNBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQWN0aXZlKGxheWVyKTsKLSAgICBpZiAobV9sYXllclRyZWVIb3N0KQot
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihsYXllcik7CisgICAgaWYgKG1f
bm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KQorICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50
SG9zdC0+c2V0Um9vdExheWVyKGxheWVyKTsKIAogICAgIEludFJlY3QgZGFtYWdlZFJlY3QoMCwg
MCwgbV9zaXplLndpZHRoLCBtX3NpemUuaGVpZ2h0KTsKICAgICBpZiAoIW1faXNBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQWN0aXZlKQpAQCAtMjU4NSw3ICsyNTg3LDcgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6aW52YWxpZGF0ZVJvb3RMYXllclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7CiAgICAgSW50UmVjdCBk
aXJ0eVJlY3QgPSB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKHJlY3QpOwogICAgIHVwZGF0ZUxheWVy
VHJlZVZpZXdwb3J0KCk7Ci0gICAgbV9sYXllclRyZWVIb3N0LT5pbnZhbGlkYXRlUm9vdExheWVy
UmVjdChkaXJ0eVJlY3QpOworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5pbnZhbGlk
YXRlUmVjdChkaXJ0eVJlY3QpOwogICAgIHNldFJvb3RMYXllck5lZWRzRGlzcGxheSgpOwogfQog
CkBAIC0yNjU0LDcgKzI2NTYsOCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgIGNjU2V0dGluZ3Muc2hvd0ZQ
U0NvdW50ZXIgPSBzZXR0aW5ncygpLT5zaG93RlBTQ291bnRlcigpOwogICAgICAgICBjY1NldHRp
bmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSA9IHNldHRpbmdzKCktPnNob3dQbGF0Zm9ybUxheWVy
VHJlZSgpOwogCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IENDTGF5ZXJUcmVlSG9zdDo6Y3Jl
YXRlKHRoaXMsIGNjU2V0dGluZ3MpOworICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dCA9IE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Y3JlYXRlKFdlYlZpZXdJbXBsQ29udGVudFBh
aW50ZXI6OmNyZWF0ZSh0aGlzKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IENDTGF5ZXJU
cmVlSG9zdDo6Y3JlYXRlKHRoaXMsIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT50b3BMZXZl
bFJvb3RMYXllcigpLT5wbGF0Zm9ybUxheWVyKCksIGNjU2V0dGluZ3MpOwogICAgICAgICBpZiAo
bV9sYXllclRyZWVIb3N0KSB7CiAgICAgICAgICAgICB1cGRhdGVMYXllclRyZWVWaWV3cG9ydCgp
OwogICAgICAgICAgICAgbV9jbGllbnQtPmRpZEFjdGl2YXRlQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Zyh0cnVlKTsKQEAgLTI3MzgsNyArMjc0MSw4IEBAIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZUxh
eWVyVHJlZVZpZXdwb3J0KCkKICAgICBJbnRSZWN0IHZpc2libGVSZWN0ID0gdmlldy0+dmlzaWJs
ZUNvbnRlbnRSZWN0KHRydWUgLyogaW5jbHVkZSBzY3JvbGxiYXJzICovKTsKICAgICBJbnRQb2lu
dCBzY3JvbGwodmlldy0+c2Nyb2xsWCgpLCB2aWV3LT5zY3JvbGxZKCkpOwogCi0gICAgbV9sYXll
clRyZWVIb3N0LT5zZXRWaWV3cG9ydCh2aXNpYmxlUmVjdC5zaXplKCksIHZpZXctPmNvbnRlbnRz
U2l6ZSgpLCBzY3JvbGwpOworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRWaWV3
cG9ydCh2aXNpYmxlUmVjdC5zaXplKCksIHZpZXctPmNvbnRlbnRzU2l6ZSgpLCBzY3JvbGwpOwor
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnQodmlzaWJsZVJlY3Quc2l6ZSgpKTsKIH0K
IAogV2ViR3JhcGhpY3NDb250ZXh0M0QqIFdlYlZpZXdJbXBsOjpncmFwaGljc0NvbnRleHQzRCgp
CkBAIC0yNzgwLDggKzI3ODQsMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0VmlzaWJpbGl0eVN0
YXRlKFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlLAogI2VuZGlmCiAKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0FjdGl2ZSgpKQotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpc2libGUodmlz
aWJpbGl0eVN0YXRlID09IFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlKTsKKyAgICBpZiAo
aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkpIHsKKyAgICAgICAgYm9vbCB2aXNpYmxl
ID0gdmlzaWJpbGl0eVN0YXRlID09IFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlOworICAg
ICAgICBpZiAoIXZpc2libGUpCisgICAgICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dC0+cHJvdGVjdFZpc2libGVUaWxlVGV4dHVyZXMoKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5zZXRWaXNpYmxlKHZpc2libGUpOworICAgIH0KICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCBmYTVhZWI4MWMwMjE5OTE2NGJhOGUwOTlj
MjQwYjc5ZTlmOGIzYjZiLi42OTQxZjMyNDI5OTJkMTM1N2YyOTFiZTQ1YWMxODI0ZTA2YmRmOTk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTYwLDYgKzYw
LDcgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNz
IEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBLZXlib2FyZEV2ZW50OworY2xhc3MgTm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0OwogY2xhc3MgUGFnZTsKIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDsK
IGNsYXNzIFBvcHVwQ29udGFpbmVyOwpAQCAtNTcyLDYgKzU3Myw3IEBAIHByaXZhdGU6CiAKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgV2ViQ29yZTo6SW50UmVjdCBtX3Jv
b3RMYXllclNjcm9sbERhbWFnZTsKKyAgICBPd25QdHI8V2ViQ29yZTo6Tm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0PiBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDsKICAgICBSZWZQdHI8V2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0PiBtX2xheWVyVHJlZUhvc3Q7CiAgICAgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciogbV9yb290R3JhcGhpY3NMYXllcjsKICAgICBib29sIG1faXNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQWN0aXZlOwo=
</data>
<flag name="review"
          id="104130"
          type_id="1"
          status="+"
          setter="jamesr"
    />
    <flag name="commit-queue"
          id="104132"
          type_id="3"
          status="+"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>