<?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>107099</bug_id>
          
          <creation_ts>2013-01-16 23:34:46 -0800</creation_ts>
          <short_desc>Coordinated Graphics: Remove m_pendingSyncBackingStores in LayerTreeRenderer.</short_desc>
          <delta_ts>2013-01-30 00:24:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>105787</dependson>
          <blocked>103854</blocked>
    
    <blocked>107073</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dongseong Hwang">dongseong.hwang</reporter>
          <assigned_to name="Dongseong Hwang">dongseong.hwang</assigned_to>
          <cc>benjamin</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>noam</cc>
    
    <cc>ostap73</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>809118</commentid>
    <comment_count>0</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-16 23:34:46 -0800</bug_when>
    <thetext>LayerTreeRenderer difficultly uses m_pendingSyncBackingStores to set a backing
store to TextureMapperLayer, although LayerTreeRenderer easily sets a direct
composited image to TextureMapperLayer. It is because LayerTreeRenderer directly
set a backing store to TextureMapperLayer, instead of GraphicsLayerTextureMapper.

This patch makes LayerTreeRenderer set a backing store to GraphicsLayerTextureMapper
and then GraphicsLayerTextureMapper will set a backing store to TextureMapperLayer
like other members.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809127</commentid>
    <comment_count>1</comment_count>
      <attachid>183130</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-16 23:42:07 -0800</bug_when>
    <thetext>Created attachment 183130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809210</commentid>
    <comment_count>2</comment_count>
      <attachid>183153</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-17 02:17:28 -0800</bug_when>
    <thetext>Created attachment 183153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810002</commentid>
    <comment_count>3</comment_count>
      <attachid>183330</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-17 17:43:40 -0800</bug_when>
    <thetext>Created attachment 183330
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810035</commentid>
    <comment_count>4</comment_count>
      <attachid>183335</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-17 18:02:40 -0800</bug_when>
    <thetext>Created attachment 183335
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815272</commentid>
    <comment_count>5</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-24 02:36:29 -0800</bug_when>
    <thetext>Please put it up for review when it applies :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816198</commentid>
    <comment_count>6</comment_count>
      <attachid>184659</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-24 21:45:17 -0800</bug_when>
    <thetext>Created attachment 184659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816397</commentid>
    <comment_count>7</comment_count>
      <attachid>184704</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-25 02:02:44 -0800</bug_when>
    <thetext>Created attachment 184704
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816527</commentid>
    <comment_count>8</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-25 06:02:20 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Please put it up for review when it applies :)

Now could you review? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816529</commentid>
    <comment_count>9</comment_count>
      <attachid>184704</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-25 06:12:34 -0800</bug_when>
    <thetext>Comment on attachment 184704
Patch

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

I&apos;m fine with this, needs a WK2 owner to review; they might want more explanations...

&gt; Source/WebKit2/ChangeLog:15
&gt; +        LayerTreeRenderer difficultly uses m_pendingSyncBackingStores to set a backing
&gt; +        store to TextureMapperLayer, although LayerTreeRenderer easily sets a direct
&gt; +        composited image to TextureMapperLayer. It is because LayerTreeRenderer directly
&gt; +        set a backing store to TextureMapperLayer, instead of GraphicsLayerTextureMapper.
&gt; +
&gt; +        This patch makes LayerTreeRenderer set a backing store to GraphicsLayerTextureMapper
&gt; +        and then GraphicsLayerTextureMapper will set a backing store to TextureMapperLayer
&gt; +        like other members.

Allow me to propose an alternative wording for the explanation :)
Instead of queuing the setting of backing stores in LayerTreeRenderer, and then setting them directly to TextureMapperLayer,
we allow GraphicsLayerTextureMapper&apos;s existing queuing mechanism to handle that.
Instead of a m_pendingSyncBackingStores queue, we have a m_backingStores queue which can be applied much more easily to the layer tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818312</commentid>
    <comment_count>10</comment_count>
      <attachid>185117</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-28 17:38:49 -0800</bug_when>
    <thetext>Created attachment 185117
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818316</commentid>
    <comment_count>11</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-28 17:47:19 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 184704 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=184704&amp;action=review
&gt; 
&gt; I&apos;m fine with this, needs a WK2 owner to review; they might want more explanations...

Thank you for your favor as well as review!

I&apos;ll ask WK2 owner. Now this bug depends on Bug 105787.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818581</commentid>
    <comment_count>12</comment_count>
      <attachid>185169</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-28 22:59:48 -0800</bug_when>
    <thetext>Created attachment 185169
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819367</commentid>
    <comment_count>13</comment_count>
      <attachid>185169</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-29 14:58:47 -0800</bug_when>
    <thetext>Comment on attachment 185169
Patch

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

I am okay with this for WebKit2, with comments.

Noam, your call for the r+.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h:159
&gt; -    RefPtr&lt;TextureMapperBackingStore&gt; m_backingStore;
&gt; +    TextureMapperBackingStore* m_backingStore;

Just a comment: For this, you must have a strong guarantee that TextureMapperBackingStore always outlive TextureMapperLayer.

Here the guarantee is m_releasedCoordinatedBackingStores. I think the ownership is too convoluted.

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:414
&gt; +    CoordinatedBackingStore* backingStore = 0;
&gt; +    BackingStoreMap::iterator it = m_backingStores.find(graphicsLayer);
&gt; +    if (it != m_backingStores.end())
&gt;          backingStore = it-&gt;value.get();
&gt;      return backingStore;

This is what HashMap::get() is for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819754</commentid>
    <comment_count>14</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-29 21:11:41 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 185169 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185169&amp;action=review
&gt; 
&gt; I am okay with this for WebKit2, with comments.
&gt; 
&gt; Noam, your call for the r+.

Thank you for review!

&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h:159
&gt; &gt; -    RefPtr&lt;TextureMapperBackingStore&gt; m_backingStore;
&gt; &gt; +    TextureMapperBackingStore* m_backingStore;
&gt; 
&gt; Just a comment: For this, you must have a strong guarantee that TextureMapperBackingStore always outlive TextureMapperLayer.
&gt; Here the guarantee is m_releasedCoordinatedBackingStores. I think the ownership is too convoluted.

m_releasedCoordinatedBackingStores is already existing and this bug uses it.
I agree that m_releasedCoordinatedBackingStores is convoluted, so I will remove this twisted lifecycle management after Bug 103854.
It is because Bug 103854 will remove the time gap between setting platform layer and flushing layer scene info.

&gt; &gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:414
&gt; &gt; +    CoordinatedBackingStore* backingStore = 0;
&gt; &gt; +    BackingStoreMap::iterator it = m_backingStores.find(graphicsLayer);
&gt; &gt; +    if (it != m_backingStores.end())
&gt; &gt;          backingStore = it-&gt;value.get();
&gt; &gt;      return backingStore;
&gt; 
&gt; This is what HashMap::get() is for.

Oh, I had put lots of above redundant code. someday I&apos;ll get rid of all. Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819785</commentid>
    <comment_count>15</comment_count>
      <attachid>185396</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-29 21:54:57 -0800</bug_when>
    <thetext>Created attachment 185396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819786</commentid>
    <comment_count>16</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-29 21:55:49 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 185169 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185169&amp;action=review
&gt; 
&gt; I am okay with this for WebKit2, with comments.
&gt; 
&gt; Noam, your call for the r+.

Noam, could you review this bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819794</commentid>
    <comment_count>17</comment_count>
      <attachid>185396</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-29 22:05:58 -0800</bug_when>
    <thetext>Comment on attachment 185396
Patch

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

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:420
&gt; +    if (m_backingStores.get(graphicsLayer))

To test if a key exists in a HashMap/HashSet, the correct thing to do is HashMap::contains().

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:435
&gt; +    if (!m_backingStores.get(graphicsLayer))
&gt;          return;
&gt; -    }
&gt;  
&gt; -    if (!layer-&gt;backingStore())
&gt; -        return; // The layer has no backing store (and no pending addition).
&gt; -
&gt; -    ASSERT(!m_pendingSyncBackingStores.contains(layer));
&gt; -    m_pendingSyncBackingStores.add(layer, 0);
&gt; +    m_releasedCoordinatedBackingStores.append(m_backingStores.take(graphicsLayer));
&gt; +    toGraphicsLayerTextureMapper(graphicsLayer)-&gt;setBackingStore(0);

This particular code should be using iterators. Otherwise you are doing get() twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819820</commentid>
    <comment_count>18</comment_count>
      <attachid>185400</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-29 22:56:14 -0800</bug_when>
    <thetext>Created attachment 185400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819824</commentid>
    <comment_count>19</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-29 22:59:25 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 185396 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185396&amp;action=review
&gt; To test if a key exists in a HashMap/HashSet, the correct thing to do is HashMap::contains().
&gt; This particular code should be using iterators. Otherwise you are doing get() twice.

Oh, you are right! Done.

(In reply to comment #13)
&gt; (From update of attachment 185169 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185169&amp;action=review
&gt; Just a comment: For this, you must have a strong guarantee that TextureMapperBackingStore always outlive TextureMapperLayer.
&gt; Here the guarantee is m_releasedCoordinatedBackingStores. I think the ownership is too convoluted.

After rethinking, I understand this patch does not need to use m_releasedCoordinatedBackingStores. TextureMapperLayer still have RefPtr&lt;TextureMapperBackingStore&gt;.
As I mentioned, m_releasedImageBackings is still alive and I&apos;ll kill in Bug 108296.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819842</commentid>
    <comment_count>20</comment_count>
      <attachid>185400</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-29 23:34:43 -0800</bug_when>
    <thetext>Comment on attachment 185400
Patch

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

Some nitpick in the changelog, otherwise good to go. Also seems that you have addressed all of Benjamin&apos;s concerns.

&gt; Source/WebCore/ChangeLog:12
&gt; +        because of dead code now.

because of dead code now -&gt; because they are no longer used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819845</commentid>
    <comment_count>21</comment_count>
      <attachid>185407</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-29 23:38:45 -0800</bug_when>
    <thetext>Created attachment 185407
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819877</commentid>
    <comment_count>22</comment_count>
      <attachid>185407</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 00:24:30 -0800</bug_when>
    <thetext>Comment on attachment 185407
Patch for landing

Clearing flags on attachment: 185407

Committed r141232: &lt;http://trac.webkit.org/changeset/141232&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819878</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 00:24:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183130</attachid>
            <date>2013-01-16 23:42:07 -0800</date>
            <delta_ts>2013-01-17 02:17:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107099-20130117163903.patch</filename>
            <type>text/plain</type>
            <size>14364</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5OTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2JjMDhlZjk1OWQ3NjZk
OWUxNjEyODcyM2IyYmZiZTQ4NjFlZTJkNy4uOWE5ZGMyOGVhN2FlZDZkMmY0Yzc2YWI4ZWYyMTQ3
MGFhYTU1NmU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMyIEBACiAyMDEzLTAxLTE2ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZW1vdmUgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMgaW4gTGF5ZXJU
cmVlUmVuZGVyZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDcwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEJhY2tpbmdTdG9yZSgpIHNv
IHRoYXQKKyAgICAgICAgTGF5ZXJUcmVlUmVuZGVyZXIgc2V0cyBhIGJhY2tpbmcgc3RvcmUgdG8g
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCisKKyAgICAgICAgUmVtb3ZlIFRleHR1cmVNYXBw
ZXJMYXllcjo6Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCkgYmVjYXVzZQorICAgICAgICBU
ZXh0dXJlTWFwcGVyTGF5ZXIgZG9lcyBub3QgbWFuYWdlIHRoZSBsaWZlIGN5Y2xlIG9mIGEgYmFj
a2luZyBzdG9yZS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHZhcmlhYmxlcyB0ZXN0
cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6Y29tbWl0TGF5ZXJDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXRCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmg6CisgICAgICAgIChHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJhY2tpbmdTdG9yZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpUZXh0dXJlTWFwcGVyTGF5ZXIpOgorICAg
ICAgICAoVGV4dHVyZU1hcHBlckxheWVyKToKKworMjAxMy0wMS0xNiAgSHVhbmcgRG9uZ3N1bmcg
IDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAgICBbVGV4TWFwXSBSZW1vdmUgR3Jh
cGhpY3NMYXllciBpbiBUZXh0dXJlTWFwcGVyTGF5ZXIuCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwNzMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGQ3MzViNTM2
YzRlNWNmMGRlZmI4YWVkMTQxMjZkMTU1MDI3MGExMzUuLjE2Zjk3N2NiZjc2NjVkMDBhMjI3YzM1
Yjg5YTFkOGRiNzY5M2UzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzMCBAQAogMjAxMy0wMS0x
NiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAgICAgICBD
b29yZGluYXRlZCBHcmFwaGljczogUmVtb3ZlIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzIGlu
IExheWVyVHJlZVJlbmRlcmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA3MDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTGF5ZXJUcmVlUmVuZGVyZXIgZGlmZmljdWx0bHkgdXNlcyBtX3BlbmRpbmdT
eW5jQmFja2luZ1N0b3JlcyB0byBzZXQgYSBiYWNraW5nCisgICAgICAgIHN0b3JlIHRvIFRleHR1
cmVNYXBwZXJMYXllciwgYWx0aG91Z2ggTGF5ZXJUcmVlUmVuZGVyZXIgZWFzaWx5IHNldHMgYSBk
aXJlY3QKKyAgICAgICAgY29tcG9zaXRlZCBpbWFnZSB0byBUZXh0dXJlTWFwcGVyTGF5ZXIuIEl0
IGlzIGJlY2F1c2UgTGF5ZXJUcmVlUmVuZGVyZXIgZGlyZWN0bHkKKyAgICAgICAgc2V0IGEgYmFj
a2luZyBzdG9yZSB0byBUZXh0dXJlTWFwcGVyTGF5ZXIsIGluc3RlYWQgb2YgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBMYXllclRyZWVSZW5k
ZXJlciBzZXQgYSBiYWNraW5nIHN0b3JlIHRvIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyCisg
ICAgICAgIGFuZCB0aGVuIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIHdpbGwgc2V0IGEgYmFj
a2luZyBzdG9yZSB0byBUZXh0dXJlTWFwcGVyTGF5ZXIKKyAgICAgICAgbGlrZSBvdGhlciBtZW1i
ZXJzLgorCisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6ZGVsZXRl
TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6Z2V0QmFja2luZ1N0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUJhY2tpbmdT
dG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92
ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVy
ZXI6OmNvbW1pdFBlbmRpbmdCYWNraW5nU3RvcmVPcGVyYXRpb25zKToKKyAgICAgICAgKFdlYktp
dDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnB1cmdlR0xSZXNvdXJjZXMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmg6CisKKzIwMTMtMDEt
MTYgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKICAgICAgICAg
Q29vcmRpbmF0ZWQgR3JhcGhpY3M6IFJlbW92ZSByZWR1bmRhbnQgYmVoYXZpb3JzIGluIExheWVy
VHJlZVJlbmRlcmVyLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA3MDg0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3Bw
CmluZGV4IGYxN2I0ZWJmNDgwMjA2MzNmNjRjYjE3YTZmYWRiM2NiM2RiNTcxZmIuLjJkOTk3YmFl
OTI5MzQyZjQ4M2Q2YWE3ZDVmMmNlZDY3YjVhYWQ1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTIzLDEwICs1MjMsOCBAQCB2b2lkIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpjb21taXRMYXllckNoYW5nZXMoKQogICAgICAgICBtX2xheWVy
LT5zZXRGaWx0ZXJzKGZpbHRlcnMoKSk7CiAjZW5kaWYKIAotICAgIGlmIChtX2NoYW5nZU1hc2sg
JiBCYWNraW5nU3RvcmVDaGFuZ2UpIHsKLSAgICAgICAgQVNTRVJUKG1faGFzT3duQmFja2luZ1N0
b3JlKTsKLSAgICAgICAgbV9sYXllci0+c2V0QmFja2luZ1N0b3JlKG1fYmFja2luZ1N0b3JlKTsK
LSAgICB9CisgICAgaWYgKG1fY2hhbmdlTWFzayAmIEJhY2tpbmdTdG9yZUNoYW5nZSkKKyAgICAg
ICAgbV9sYXllci0+c2V0QmFja2luZ1N0b3JlKG1fYmFja2luZ1N0b3JlLmdldCgpKTsKIAogICAg
IGlmIChtX2NoYW5nZU1hc2sgJiBEZWJ1Z1Zpc3VhbHNDaGFuZ2UpCiAgICAgICAgIG1fbGF5ZXIt
PnNldERlYnVnVmlzdWFscyhpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpLCBkZWJ1Z0JvcmRlckNvbG9y
KCksIGRlYnVnQm9yZGVyV2lkdGgoKSwgaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSk7CkBAIC02
NDcsNiArNjQ1LDE1IEBAIGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEZpbHRl
cnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIH0KICNlbmRpZgogCit2b2lkIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRCYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxUZXh0
dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUpCit7CisgICAgaWYgKG1fYmFja2lu
Z1N0b3JlID09IGJhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNraW5n
U3RvcmUgPSBiYWNraW5nU3RvcmU7CisgICAgbm90aWZ5Q2hhbmdlKEJhY2tpbmdTdG9yZUNoYW5n
ZSk7Cit9CisKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEZpeGVkVG9WaWV3
cG9ydChib29sIGZpeGVkKQogewogICAgIGlmIChtX2ZpeGVkVG9WaWV3cG9ydCA9PSBmaXhlZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggZmZjMTNmZTdjNGZk
NGJmYWQzNzk3N2YzZGJlZjVhNGY0M2EyOThiZS4uN2Y2NDY0OTA3N2VmMDFmNDJmNTU0ODQ1YzQ2
NzVhOWI2YWYwMTk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgK
QEAgLTg4LDYgKzg4LDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IEl0IHdpbGwgYmUgcmVt
b3ZlZCBhZnRlciByZW1vdmluZyBkZXBlbmRlbmN5IG9mIExheWVyVHJlZVJlbmRlcmVyIG9uIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLgogICAgIHZvaWQgc2V0SGFzT3duQmFja2luZ1N0b3Jl
KGJvb2wgYikgeyBtX2hhc093bkJhY2tpbmdTdG9yZSA9IGI7IH0KKyAgICB2b2lkIHNldEJhY2tp
bmdTdG9yZShQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+KTsKIAogICAgIHZv
aWQgc2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wpOwogICAgIGJvb2wgZml4ZWRUb1ZpZXdwb3J0KCkg
Y29uc3QgeyByZXR1cm4gbV9maXhlZFRvVmlld3BvcnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXll
ci5jcHAKaW5kZXggMzAwOWY4MmI3MTg5ZWU0YWZiOWI4ODg4ZWRiMjAwNDg3ZDYxMjlmYS4uNDhi
ZDhjOWQ4MmQyYzAxNjhkNjI3M2E5MzhhOGJhYzdjODk4ZDUyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5jcHAKQEAgLTQ3LDE2ICs0Nyw2IEBAIGNvbnN0IFRleHR1cmVNYXBwZXJMYXllciog
VGV4dHVyZU1hcHBlckxheWVyOjpyb290TGF5ZXIoKSBjb25zdAogICAgIHJldHVybiB0aGlzOwog
fQogCi12b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZl
KCkKLXsKLSAgICBtX2JhY2tpbmdTdG9yZS5jbGVhcigpOwotICAgIG1fY29udGVudHNMYXllciA9
IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKQot
ICAgICAgICBtX2NoaWxkcmVuW2ldLT5jbGVhckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUoKTsKLSAg
ICBpZiAobV9zdGF0ZS5tYXNrTGF5ZXIpCi0gICAgICAgIG1fc3RhdGUubWFza0xheWVyLT5jbGVh
ckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUoKTsKLX0KLQogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6
OmNvbXB1dGVUcmFuc2Zvcm1zUmVjdXJzaXZlKCkKIHsKICAgICBpZiAobV9zdGF0ZS5zaXplLmlz
RW1wdHkoKSAmJiBtX3N0YXRlLm1hc2tzVG9Cb3VuZHMpCkBAIC01NDQsNyArNTM0LDcgQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEZpeGVkVG9WaWV3cG9ydChib29sIGZpeGVkVG9WaWV3
cG9ydCkKICAgICBtX2ZpeGVkVG9WaWV3cG9ydCA9IGZpeGVkVG9WaWV3cG9ydDsKIH0KIAotdm9p
ZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFRleHR1cmVN
YXBwZXJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSkKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVy
OjpzZXRCYWNraW5nU3RvcmUoVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3Jl
KQogewogICAgIG1fYmFja2luZ1N0b3JlID0gYmFja2luZ1N0b3JlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXll
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oCmluZGV4IGNlYTEyODM5ZGIyNzE3OTMwZGRjMzg3OTljZWY2MWZmZTQxZTEyZDgu
LmUwYzgyMzNjODJlNWY3YzYxY2Q5NWNhZmM0MTkxZGUzYTI4NmVmZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckxheWVyLmgKQEAgLTQxLDYgKzQxLDcgQEAgcHVibGljOgogICAgIFRleHR1cmVNYXBwZXJM
YXllcigpCiAgICAgICAgIDogbV9wYXJlbnQoMCkKICAgICAgICAgLCBtX2VmZmVjdFRhcmdldCgw
KQorICAgICAgICAsIG1fYmFja2luZ1N0b3JlKDApCiAgICAgICAgICwgbV9jb250ZW50c0xheWVy
KDApCiAgICAgICAgICwgbV9jdXJyZW50T3BhY2l0eSgxKQogICAgICAgICAsIG1fY2VudGVyWigw
KQpAQCAtNzgsMTYgKzc5LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbnRlbnRzTGF5ZXIo
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIqKTsKICAgICB2b2lkIHNldEFuaW1hdGlvbnMoY29u
c3QgR3JhcGhpY3NMYXllckFuaW1hdGlvbnMmKTsKICAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9y
dChib29sKTsKLSAgICB2b2lkIHNldEJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFRleHR1cmVNYXBw
ZXJCYWNraW5nU3RvcmU+KTsKKyAgICB2b2lkIHNldEJhY2tpbmdTdG9yZShUZXh0dXJlTWFwcGVy
QmFja2luZ1N0b3JlKik7CiAKICAgICB2b2lkIHN5bmNBbmltYXRpb25zKCk7CiAgICAgYm9vbCBk
ZXNjZW5kYW50c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpIGNvbnN0OwogCiAgICAgdm9p
ZCBwYWludCgpOwogCi0gICAgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBi
YWNraW5nU3RvcmUoKSB7IHJldHVybiBtX2JhY2tpbmdTdG9yZTsgfQotICAgIHZvaWQgY2xlYXJC
YWNraW5nU3RvcmVzUmVjdXJzaXZlKCk7Ci0KICAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uRGVs
dGFJZk5lZWRlZChjb25zdCBGbG9hdFNpemUmKTsKIAogICAgIHZvaWQgYXBwbHlBbmltYXRpb25z
UmVjdXJzaXZlbHkoKTsKQEAgLTEzOSw3ICsxMzcsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxU
ZXh0dXJlTWFwcGVyTGF5ZXIqPiBtX2NoaWxkcmVuOwogICAgIFRleHR1cmVNYXBwZXJMYXllciog
bV9wYXJlbnQ7CiAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBtX2VmZmVjdFRhcmdldDsKLSAgICBS
ZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gbV9iYWNraW5nU3RvcmU7CisgICAgVGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZSogbV9iYWNraW5nU3RvcmU7CiAgICAgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXIqIG1fY29udGVudHNMYXllcjsKICAgICBHcmFwaGljc0xheWVyVHJhbnNm
b3JtIG1fY3VycmVudFRyYW5zZm9ybTsKICAgICBmbG9hdCBtX2N1cnJlbnRPcGFjaXR5OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4IDQ1Y2M4MTM1OTc2YTNhZDQyY2M1
ODE4NGVlZjFlYTRmNGZhYzBjZTkuLmIxNDRmN2FjODk5MDdmNTlkYTE5ZmY2YWZkODlkZGJmZDg3
ZjM5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKQEAgLTM3NCw3ICsz
NzQsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpkZWxldGVMYXllcihDb29yZGluYXRlZExh
eWVySUQgbGF5ZXJJRCkKICAgICBPd25QdHI8R3JhcGhpY3NMYXllcj4gbGF5ZXIgPSBtX2xheWVy
cy50YWtlKGxheWVySUQpOwogICAgIEFTU0VSVChsYXllcik7CiAKLSAgICBtX3BlbmRpbmdTeW5j
QmFja2luZ1N0b3Jlcy5yZW1vdmUodG9UZXh0dXJlTWFwcGVyTGF5ZXIobGF5ZXIuZ2V0KCkpKTsK
KyAgICBtX2JhY2tpbmdTdG9yZXMucmVtb3ZlKGxheWVyLmdldCgpKTsKICAgICBtX2ZpeGVkTGF5
ZXJzLnJlbW92ZShsYXllcklEKTsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBtX3N1
cmZhY2VCYWNraW5nU3RvcmVzLnJlbW92ZShsYXllcklEKTsKQEAgLTM5NSwxMiArMzk1LDkgQEAg
dm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0Um9vdExheWVySUQoQ29vcmRpbmF0ZWRMYXllcklE
IGxheWVySUQpCiAKIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKiBMYXllclRyZWVSZW5kZXJlcjo6
Z2V0QmFja2luZ1N0b3JlKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCiB7Ci0gICAgVGV4
dHVyZU1hcHBlckxheWVyKiBsYXllciA9IHRvVGV4dHVyZU1hcHBlckxheWVyKGdyYXBoaWNzTGF5
ZXIpOwotICAgIEFTU0VSVChsYXllcik7Ci0gICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUqIGJh
Y2tpbmdTdG9yZSA9IHN0YXRpY19jYXN0PENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKj4obGF5ZXIt
PmJhY2tpbmdTdG9yZSgpLmdldCgpKTsKLQotICAgIEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3Ig
aXQgPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5maW5kKGxheWVyKTsKLSAgICBpZiAoaXQg
IT0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuZW5kKCkpCisgICAgQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IDA7CisgICAgQmFja2luZ1N0b3JlTWFwOjppdGVyYXRv
ciBpdCA9IG1fYmFja2luZ1N0b3Jlcy5maW5kKGdyYXBoaWNzTGF5ZXIpOworICAgIGlmIChpdCAh
PSBtX2JhY2tpbmdTdG9yZXMuZW5kKCkpCiAgICAgICAgIGJhY2tpbmdTdG9yZSA9IGl0LT52YWx1
ZS5nZXQoKTsKICAgICByZXR1cm4gYmFja2luZ1N0b3JlOwogfQpAQCAtNDE3LDUwICs0MTQsMjIg
QEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cHJlcGFyZUNvbnRlbnRCYWNraW5nU3RvcmUoR3Jh
cGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKIAogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6Y3Jl
YXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKIHsK
LSAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3Jh
cGhpY3NMYXllcik7Ci0gICAgQVNTRVJUKGxheWVyKTsKLQotICAgIC8vIE1ha2Ugc3VyZSB0aGUg
bGF5ZXIgZG9lcyBub3QgYWxyZWFkeSBoYXZlIGEgYmFja2luZyBzdG9yZSAoY29tbWl0dGVkIG9y
IHBlbmRpbmcpLgotICAgIEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdT
eW5jQmFja2luZ1N0b3Jlcy5maW5kKGxheWVyKTsKLSAgICBpZiAoaXQgIT0gbV9wZW5kaW5nU3lu
Y0JhY2tpbmdTdG9yZXMuZW5kKCkpIHsKLSAgICAgICAgaWYgKCFpdC0+dmFsdWUpIHsKLSAgICAg
ICAgICAgIC8vIFRoZXJlIGlzIGEgcGVuZGluZyByZW1vdmFsLCBjYW5jZWwgaXQuCi0gICAgICAg
ICAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5yZW1vdmUoaXQpOwotICAgICAgICB9Ci0g
ICAgICAgIC8vIFRoZXJlIGlzIGFscmVhZHkgYSBwZW5kaW5nIGFkZGl0aW9uLgorICAgIGlmIChn
ZXRCYWNraW5nU3RvcmUoZ3JhcGhpY3NMYXllcikpCiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgaWYgKGxheWVyLT5iYWNraW5nU3RvcmUoKSkKLSAgICAgICAgcmV0dXJuOyAvLyBUaGUgbGF5
ZXIgYWxyZWFkeSBoYXMgYSBiYWNraW5nIHN0b3JlIChhbmQgbm8gcGVuZGluZyByZW1vdmFsKS4K
IAogICAgIFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKENvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKSk7Ci0KICAgICBiYWNraW5nU3RvcmUtPnNldFNp
emUoZ3JhcGhpY3NMYXllci0+c2l6ZSgpKTsKLSAgICBBU1NFUlQoIW1fcGVuZGluZ1N5bmNCYWNr
aW5nU3RvcmVzLmNvbnRhaW5zKGxheWVyKSk7Ci0gICAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9y
ZXMuYWRkKGxheWVyLCBiYWNraW5nU3RvcmUpOworICAgIG1fYmFja2luZ1N0b3Jlcy5hZGQoZ3Jh
cGhpY3NMYXllciwgYmFja2luZ1N0b3JlKTsKKyAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyKGdyYXBoaWNzTGF5ZXIpLT5zZXRCYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKTsKIH0KIAog
dm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlQmFja2luZ1N0b3JlSWZOZWVkZWQoR3JhcGhp
Y3NMYXllciogZ3JhcGhpY3NMYXllcikKIHsKLSAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVy
ID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllcik7Ci0gICAgQVNTRVJUKGxheWVy
KTsKLQotICAgIC8vIENoZWNrIGlmIHRoZSBsYXlvdXQgYWxyZWFkeSBoYXMgYSBiYWNraW5nIHN0
b3JlIChjb21taXR0ZWQgb3IgcGVuZGluZykuCi0gICAgQmFja2luZ1N0b3JlTWFwOjppdGVyYXRv
ciBpdCA9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmZpbmQobGF5ZXIpOwotICAgIGlmIChp
dCAhPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5lbmQoKSkgewotICAgICAgICBpZiAoaXQt
PnZhbHVlKSB7Ci0gICAgICAgICAgICAvLyBUaGVyZSBpcyBhIHBlbmRpbmcgYWRkaXRpb24sIGNh
bmNlbCBpdC4KLSAgICAgICAgICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLnJlbW92ZShp
dCk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhIHBlbmRpbmcgcmVt
b3ZhbC4KKyAgICBpZiAoIWdldEJhY2tpbmdTdG9yZShncmFwaGljc0xheWVyKSkKICAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmICghbGF5ZXItPmJhY2tpbmdTdG9yZSgpKQotICAgICAg
ICByZXR1cm47IC8vIFRoZSBsYXllciBoYXMgbm8gYmFja2luZyBzdG9yZSAoYW5kIG5vIHBlbmRp
bmcgYWRkaXRpb24pLgogCi0gICAgQVNTRVJUKCFtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5j
b250YWlucyhsYXllcikpOwotICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmFkZChsYXll
ciwgMCk7CisgICAgbV9iYWNraW5nU3RvcmVzLnJlbW92ZShncmFwaGljc0xheWVyKTsKKyAgICB0
b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXIpLT5zZXRCYWNraW5nU3Rv
cmUoMCk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlc2V0QmFja2luZ1N0b3JlU2l6
ZVRvTGF5ZXJTaXplKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCkBAIC01NjUsMTUgKzUz
NCw2IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNvbW1pdFBlbmRpbmdCYWNraW5nU3RvcmVP
cGVyYXRpb25zKCkKICAgICAgICAgKCppdCktPmNvbW1pdFRpbGVPcGVyYXRpb25zKG1fdGV4dHVy
ZU1hcHBlci5nZXQoKSk7CiAKICAgICBtX2JhY2tpbmdTdG9yZXNXaXRoUGVuZGluZ0J1ZmZlcnMu
Y2xlYXIoKTsKLQotICAgIHsKLSAgICAgICAgQmFja2luZ1N0b3JlTWFwOjppdGVyYXRvciBlbmQg
PSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5lbmQoKTsKLSAgICAgICAgQmFja2luZ1N0b3Jl
TWFwOjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmJlZ2luKCk7Ci0g
ICAgICAgIGZvciAoO2l0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgIGl0LT5rZXktPnNldEJh
Y2tpbmdTdG9yZShpdC0+dmFsdWUpOwotCi0gICAgICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3Rv
cmVzLmNsZWFyKCk7Ci0gICAgfQogfQogCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpmbHVzaExh
eWVyQ2hhbmdlcygpCkBAIC02MzMsMTEgKzU5Myw2IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6
OnN5bmNSZW1vdGVDb250ZW50KCkKIAogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cHVyZ2VHTFJl
c291cmNlcygpCiB7Ci0gICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9IHRvVGV4dHVyZU1h
cHBlckxheWVyKHJvb3RMYXllcigpKTsKLQotICAgIGlmIChsYXllcikKLSAgICAgICAgbGF5ZXIt
PmNsZWFyQmFja2luZ1N0b3Jlc1JlY3Vyc2l2ZSgpOwotCiAgICAgbV9pbWFnZUJhY2tpbmdzLmNs
ZWFyKCk7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgbV9zdXJmYWNlQmFja2luZ1N0
b3Jlcy5jbGVhcigpOwpAQCAtNjQ4LDcgKzYwMyw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6
OnB1cmdlR0xSZXNvdXJjZXMoKQogICAgIG1fbGF5ZXJzLmNsZWFyKCk7CiAgICAgbV9maXhlZExh
eWVycy5jbGVhcigpOwogICAgIG1fdGV4dHVyZU1hcHBlci5jbGVhcigpOwotICAgIG1fcGVuZGlu
Z1N5bmNCYWNraW5nU3RvcmVzLmNsZWFyKCk7CisgICAgbV9iYWNraW5nU3RvcmVzLmNsZWFyKCk7
CiAgICAgbV9iYWNraW5nU3RvcmVzV2l0aFBlbmRpbmdCdWZmZXJzLmNsZWFyKCk7CiAKICAgICBz
ZXRBY3RpdmUoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKaW5kZXggNmI2
MmVmNTAyZGU5N2I0YzMwMDk5YmM4YzA0NmMwM2RhNmFmOGZiNi4uYWMwZDg3MDVhYzZjYTAxZDBk
YzQ2Njg2OTkyYmM0NjYwZDY4ZmIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5o
CkBAIC0xNjgsOCArMTY4LDggQEAgcHJpdmF0ZToKICAgICBJbWFnZUJhY2tpbmdNYXAgbV9pbWFn
ZUJhY2tpbmdzOwogICAgIFZlY3RvcjxSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+ID4g
bV9yZWxlYXNlZEltYWdlQmFja2luZ3M7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyKiwgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiA+IEJh
Y2tpbmdTdG9yZU1hcDsKLSAgICBCYWNraW5nU3RvcmVNYXAgbV9wZW5kaW5nU3luY0JhY2tpbmdT
dG9yZXM7CisgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBSZWZQ
dHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+ID4gQmFja2luZ1N0b3JlTWFwOworICAgIEJhY2tp
bmdTdG9yZU1hcCBtX2JhY2tpbmdTdG9yZXM7CiAKICAgICBIYXNoU2V0PFJlZlB0cjxDb29yZGlu
YXRlZEJhY2tpbmdTdG9yZT4gPiBtX2JhY2tpbmdTdG9yZXNXaXRoUGVuZGluZ0J1ZmZlcnM7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183153</attachid>
            <date>2013-01-17 02:17:28 -0800</date>
            <delta_ts>2013-01-17 17:43:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107099-20130117191423.patch</filename>
            <type>text/plain</type>
            <size>16734</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5OTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I0NGNmZjdkYTAxOGNm
N2Q5NzNjZTMzNTFlYTE2ODQwZWJiNjI4Ny4uYzRjM2Q4ZDdiMWQyNWYyMWNjODRmMDkwNGQzMGVj
MWNkZDc2YjgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMyIEBACiAyMDEzLTAxLTE3ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZW1vdmUgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMgaW4gTGF5ZXJU
cmVlUmVuZGVyZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDcwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEJhY2tpbmdTdG9yZSgpIHNv
IHRoYXQKKyAgICAgICAgTGF5ZXJUcmVlUmVuZGVyZXIgc2V0cyBhIGJhY2tpbmcgc3RvcmUgdG8g
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCisKKyAgICAgICAgUmVtb3ZlIFRleHR1cmVNYXBw
ZXJMYXllcjo6Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCkgYmVjYXVzZQorICAgICAgICBU
ZXh0dXJlTWFwcGVyTGF5ZXIgZG9lcyBub3QgbWFuYWdlIHRoZSBsaWZlIGN5Y2xlIG9mIGEgYmFj
a2luZyBzdG9yZS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGNvbXBvc2l0aW5nIHRl
c3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpjb21taXRMYXllckNoYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuaDoKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0QmFja2luZ1N0b3JlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlRleHR1cmVNYXBwZXJMYXllcik6Cisg
ICAgICAgIChUZXh0dXJlTWFwcGVyTGF5ZXIpOgorCisyMDEzLTAxLTE3ICBIdWFuZyBEb25nc3Vu
ZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIFtUZXhNYXBdIE1hdGNoIGlu
aXRpYWxpemluZyBtZW1iZXJzIGluIEdyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0gdG8gaW5pdGlhbGl6
aW5nIG1lbWJlcnMgaW4gR3JhcGhpY3NMYXllci4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzA5MAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDczNWI1MzZjNGU1
Y2YwZGVmYjhhZWQxNDEyNmQxNTUwMjcwYTEzNS4uNTllMmVkMmQxNDFiNzFiM2Q0ODZhNDNlODlm
Y2FjZmY0Mjg2MDRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAxLTE3ICBI
dWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3Jk
aW5hdGVkIEdyYXBoaWNzOiBSZW1vdmUgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMgaW4gTGF5
ZXJUcmVlUmVuZGVyZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDcwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBMYXllclRyZWVSZW5kZXJlciBkaWZmaWN1bHRseSB1c2VzIG1fcGVuZGluZ1N5bmNC
YWNraW5nU3RvcmVzIHRvIHNldCBhIGJhY2tpbmcKKyAgICAgICAgc3RvcmUgdG8gVGV4dHVyZU1h
cHBlckxheWVyLCBhbHRob3VnaCBMYXllclRyZWVSZW5kZXJlciBlYXNpbHkgc2V0cyBhIGRpcmVj
dAorICAgICAgICBjb21wb3NpdGVkIGltYWdlIHRvIFRleHR1cmVNYXBwZXJMYXllci4gSXQgaXMg
YmVjYXVzZSBMYXllclRyZWVSZW5kZXJlciBkaXJlY3RseQorICAgICAgICBzZXQgYSBiYWNraW5n
IHN0b3JlIHRvIFRleHR1cmVNYXBwZXJMYXllciwgaW5zdGVhZCBvZiBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIExheWVyVHJlZVJlbmRlcmVy
IHNldCBhIGJhY2tpbmcgc3RvcmUgdG8gR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIKKyAgICAg
ICAgYW5kIHRoZW4gR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgd2lsbCBzZXQgYSBiYWNraW5n
IHN0b3JlIHRvIFRleHR1cmVNYXBwZXJMYXllcgorICAgICAgICBsaWtlIG90aGVyIG1lbWJlcnMu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5k
ZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpkZWxldGVMYXll
cik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpnZXRCYWNraW5nU3RvcmUp
OgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlQmFja2luZ1N0b3Jl
SWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlQmFj
a2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6
cmVtb3ZlSW1hZ2VCYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6
OnJlbW92ZVJlbGVhc2VkQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVzSWZOZWVkZWQpOgorICAgICAg
ICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6Y29tbWl0UGVuZGluZ0JhY2tpbmdTdG9yZU9w
ZXJhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6Zmx1c2hMYXll
ckNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6cHVyZ2VHTFJl
c291cmNlcyk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlUmVuZGVyZXIuaDoKKwogMjAxMy0wMS0xNiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBj
b21wYW55MTAwLm5ldD4KIAogICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogUmVtb3ZlIHJl
ZHVuZGFudCBiZWhhdmlvcnMgaW4gTGF5ZXJUcmVlUmVuZGVyZXIuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBmMTdiNGViZjQ4MDIwNjMzZjY0Y2IxN2E2
ZmFkYjNjYjNkYjU3MWZiLi4yZDk5N2JhZTkyOTM0MmY0ODNkNmFhN2Q1ZjJjZWQ2N2I1YWFkNTY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTUyMywx
MCArNTIzLDggQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Y29tbWl0TGF5ZXJD
aGFuZ2VzKCkKICAgICAgICAgbV9sYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKCkpOwogI2VuZGlm
CiAKLSAgICBpZiAobV9jaGFuZ2VNYXNrICYgQmFja2luZ1N0b3JlQ2hhbmdlKSB7Ci0gICAgICAg
IEFTU0VSVChtX2hhc093bkJhY2tpbmdTdG9yZSk7Ci0gICAgICAgIG1fbGF5ZXItPnNldEJhY2tp
bmdTdG9yZShtX2JhY2tpbmdTdG9yZSk7Ci0gICAgfQorICAgIGlmIChtX2NoYW5nZU1hc2sgJiBC
YWNraW5nU3RvcmVDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldEJhY2tpbmdTdG9yZShtX2Jh
Y2tpbmdTdG9yZS5nZXQoKSk7CiAKICAgICBpZiAobV9jaGFuZ2VNYXNrICYgRGVidWdWaXN1YWxz
Q2hhbmdlKQogICAgICAgICBtX2xheWVyLT5zZXREZWJ1Z1Zpc3VhbHMoaXNTaG93aW5nRGVidWdC
b3JkZXIoKSwgZGVidWdCb3JkZXJDb2xvcigpLCBkZWJ1Z0JvcmRlcldpZHRoKCksIGlzU2hvd2lu
Z1JlcGFpbnRDb3VudGVyKCkpOwpAQCAtNjQ3LDYgKzY0NSwxNSBAQCBib29sIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRl
cnMpCiB9CiAjZW5kaWYKIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QmFj
a2luZ1N0b3JlKFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gYmFja2luZ1N0
b3JlKQoreworICAgIGlmIChtX2JhY2tpbmdTdG9yZSA9PSBiYWNraW5nU3RvcmUpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fYmFja2luZ1N0b3JlID0gYmFja2luZ1N0b3JlOworICAgIG5vdGlm
eUNoYW5nZShCYWNraW5nU3RvcmVDaGFuZ2UpOworfQorCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRGaXhlZFRvVmlld3BvcnQoYm9vbCBmaXhlZCkKIHsKICAgICBpZiAobV9m
aXhlZFRvVmlld3BvcnQgPT0gZml4ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5oCmluZGV4IGZmYzEzZmU3YzRmZDRiZmFkMzc5NzdmM2RiZWY1YTRmNDNhMjk4YmUuLjdm
NjQ2NDkwNzdlZjAxZjQyZjU1NDg0NWM0Njc1YTliNmFmMDE5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC04OCw2ICs4OCw3IEBAIHB1YmxpYzoKIAogICAg
IC8vIEZJWE1FOiBJdCB3aWxsIGJlIHJlbW92ZWQgYWZ0ZXIgcmVtb3ZpbmcgZGVwZW5kZW5jeSBv
ZiBMYXllclRyZWVSZW5kZXJlciBvbiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci4KICAgICB2
b2lkIHNldEhhc093bkJhY2tpbmdTdG9yZShib29sIGIpIHsgbV9oYXNPd25CYWNraW5nU3RvcmUg
PSBiOyB9CisgICAgdm9pZCBzZXRCYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVy
QmFja2luZ1N0b3JlPik7CiAKICAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sKTsKICAg
ICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdwb3J0
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IDMwMDlmODJiNzE4OWVlNGFmYjli
ODg4OGVkYjIwMDQ4N2Q2MTI5ZmEuLjQ4YmQ4YzlkODJkMmMwMTY4ZDYyNzNhOTM4YThiYWM3Yzg5
OGQ1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC00NywxNiArNDcsNiBAQCBj
b25zdCBUZXh0dXJlTWFwcGVyTGF5ZXIqIFRleHR1cmVNYXBwZXJMYXllcjo6cm9vdExheWVyKCkg
Y29uc3QKICAgICByZXR1cm4gdGhpczsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmNs
ZWFyQmFja2luZ1N0b3Jlc1JlY3Vyc2l2ZSgpCi17Ci0gICAgbV9iYWNraW5nU3RvcmUuY2xlYXIo
KTsKLSAgICBtX2NvbnRlbnRzTGF5ZXIgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9jaGlsZHJlbi5zaXplKCk7ICsraSkKLSAgICAgICAgbV9jaGlsZHJlbltpXS0+Y2xlYXJCYWNr
aW5nU3RvcmVzUmVjdXJzaXZlKCk7Ci0gICAgaWYgKG1fc3RhdGUubWFza0xheWVyKQotICAgICAg
ICBtX3N0YXRlLm1hc2tMYXllci0+Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCk7Ci19Ci0K
IHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpjb21wdXRlVHJhbnNmb3Jtc1JlY3Vyc2l2ZSgpCiB7
CiAgICAgaWYgKG1fc3RhdGUuc2l6ZS5pc0VtcHR5KCkgJiYgbV9zdGF0ZS5tYXNrc1RvQm91bmRz
KQpAQCAtNTQ0LDcgKzUzNCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRGaXhlZFRv
Vmlld3BvcnQoYm9vbCBmaXhlZFRvVmlld3BvcnQpCiAgICAgbV9maXhlZFRvVmlld3BvcnQgPSBm
aXhlZFRvVmlld3BvcnQ7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRCYWNraW5n
U3RvcmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUp
Cit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0QmFja2luZ1N0b3JlKFRleHR1cmVNYXBwZXJC
YWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSkKIHsKICAgICBtX2JhY2tpbmdTdG9yZSA9IGJhY2tp
bmdTdG9yZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCBjZWExMjgzOWRiMjcxNzkz
MGRkYzM4Nzk5Y2VmNjFmZmU0MWUxMmQ4Li5lMGM4MjMzYzgyZTVmN2M2MWNkOTVjYWZjNDE5MWRl
M2EyODZlZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC00MSw2ICs0MSw3IEBAIHB1
YmxpYzoKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIoKQogICAgICAgICA6IG1fcGFyZW50KDApCiAg
ICAgICAgICwgbV9lZmZlY3RUYXJnZXQoMCkKKyAgICAgICAgLCBtX2JhY2tpbmdTdG9yZSgwKQog
ICAgICAgICAsIG1fY29udGVudHNMYXllcigwKQogICAgICAgICAsIG1fY3VycmVudE9wYWNpdHko
MSkKICAgICAgICAgLCBtX2NlbnRlclooMCkKQEAgLTc4LDE2ICs3OSwxMyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRDb250ZW50c0xheWVyKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKik7CiAg
ICAgdm9pZCBzZXRBbmltYXRpb25zKGNvbnN0IEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zJik7CiAg
ICAgdm9pZCBzZXRGaXhlZFRvVmlld3BvcnQoYm9vbCk7Ci0gICAgdm9pZCBzZXRCYWNraW5nU3Rv
cmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPik7CisgICAgdm9pZCBzZXRC
YWNraW5nU3RvcmUoVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSopOwogCiAgICAgdm9pZCBzeW5j
QW5pbWF0aW9ucygpOwogICAgIGJvb2wgZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1h
dGlvbnMoKSBjb25zdDsKIAogICAgIHZvaWQgcGFpbnQoKTsKIAotICAgIFBhc3NSZWZQdHI8VGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKCkgeyByZXR1cm4gbV9iYWNraW5n
U3RvcmU7IH0KLSAgICB2b2lkIGNsZWFyQmFja2luZ1N0b3Jlc1JlY3Vyc2l2ZSgpOwotCiAgICAg
dm9pZCBzZXRTY3JvbGxQb3NpdGlvbkRlbHRhSWZOZWVkZWQoY29uc3QgRmxvYXRTaXplJik7CiAK
ICAgICB2b2lkIGFwcGx5QW5pbWF0aW9uc1JlY3Vyc2l2ZWx5KCk7CkBAIC0xMzksNyArMTM3LDcg
QEAgcHJpdmF0ZToKICAgICBWZWN0b3I8VGV4dHVyZU1hcHBlckxheWVyKj4gbV9jaGlsZHJlbjsK
ICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIG1fcGFyZW50OwogICAgIFRleHR1cmVNYXBwZXJMYXll
ciogbV9lZmZlY3RUYXJnZXQ7Ci0gICAgUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+
IG1fYmFja2luZ1N0b3JlOworICAgIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUqIG1fYmFja2lu
Z1N0b3JlOwogICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKiBtX2NvbnRlbnRzTGF5ZXI7
CiAgICAgR3JhcGhpY3NMYXllclRyYW5zZm9ybSBtX2N1cnJlbnRUcmFuc2Zvcm07CiAgICAgZmxv
YXQgbV9jdXJyZW50T3BhY2l0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcApp
bmRleCA0NWNjODEzNTk3NmEzYWQ0MmNjNTgxODRlZWYxZWE0ZjRmYWMwY2U5Li5lNzA5YzI3MDI1
NWM4NzdmMGI1ZDViMTVkN2VkNDhiMzQ4ZDdkMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
UmVuZGVyZXIuY3BwCkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6
ZGVsZXRlTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQpCiAgICAgT3duUHRyPEdyYXBo
aWNzTGF5ZXI+IGxheWVyID0gbV9sYXllcnMudGFrZShsYXllcklEKTsKICAgICBBU1NFUlQobGF5
ZXIpOwogCi0gICAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMucmVtb3ZlKHRvVGV4dHVyZU1h
cHBlckxheWVyKGxheWVyLmdldCgpKSk7CisgICAgbV9iYWNraW5nU3RvcmVzLnJlbW92ZShsYXll
ci5nZXQoKSk7CiAgICAgbV9maXhlZExheWVycy5yZW1vdmUobGF5ZXJJRCk7CiAjaWYgVVNFKEdS
QVBISUNTX1NVUkZBQ0UpCiAgICAgbV9zdXJmYWNlQmFja2luZ1N0b3Jlcy5yZW1vdmUobGF5ZXJJ
RCk7CkBAIC0zOTUsMTIgKzM5NSw5IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNldFJvb3RM
YXllcklEKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklEKQogCiBDb29yZGluYXRlZEJhY2tpbmdT
dG9yZSogTGF5ZXJUcmVlUmVuZGVyZXI6OmdldEJhY2tpbmdTdG9yZShHcmFwaGljc0xheWVyKiBn
cmFwaGljc0xheWVyKQogewotICAgIFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIgPSB0b1RleHR1
cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyKTsKLSAgICBBU1NFUlQobGF5ZXIpOwotICAgIENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBzdGF0aWNfY2FzdDxDb29yZGlu
YXRlZEJhY2tpbmdTdG9yZSo+KGxheWVyLT5iYWNraW5nU3RvcmUoKS5nZXQoKSk7Ci0KLSAgICBC
YWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMu
ZmluZChsYXllcik7Ci0gICAgaWYgKGl0ICE9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmVu
ZCgpKQorICAgIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSAwOworICAg
IEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2JhY2tpbmdTdG9yZXMuZmluZChncmFw
aGljc0xheWVyKTsKKyAgICBpZiAoaXQgIT0gbV9iYWNraW5nU3RvcmVzLmVuZCgpKQogICAgICAg
ICBiYWNraW5nU3RvcmUgPSBpdC0+dmFsdWUuZ2V0KCk7CiAgICAgcmV0dXJuIGJhY2tpbmdTdG9y
ZTsKIH0KQEAgLTQxNyw1MCArNDE0LDIyIEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnByZXBh
cmVDb250ZW50QmFja2luZ1N0b3JlKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCiAKIHZv
aWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKEdyYXBoaWNz
TGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCiB7Ci0gICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9
IHRvVGV4dHVyZU1hcHBlckxheWVyKGdyYXBoaWNzTGF5ZXIpOwotICAgIEFTU0VSVChsYXllcik7
Ci0KLSAgICAvLyBNYWtlIHN1cmUgdGhlIGxheWVyIGRvZXMgbm90IGFscmVhZHkgaGF2ZSBhIGJh
Y2tpbmcgc3RvcmUgKGNvbW1pdHRlZCBvciBwZW5kaW5nKS4KLSAgICBCYWNraW5nU3RvcmVNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuZmluZChsYXllcik7Ci0g
ICAgaWYgKGl0ICE9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmVuZCgpKSB7Ci0gICAgICAg
IGlmICghaXQtPnZhbHVlKSB7Ci0gICAgICAgICAgICAvLyBUaGVyZSBpcyBhIHBlbmRpbmcgcmVt
b3ZhbCwgY2FuY2VsIGl0LgotICAgICAgICAgICAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMu
cmVtb3ZlKGl0KTsKLSAgICAgICAgfQotICAgICAgICAvLyBUaGVyZSBpcyBhbHJlYWR5IGEgcGVu
ZGluZyBhZGRpdGlvbi4KKyAgICBpZiAoZ2V0QmFja2luZ1N0b3JlKGdyYXBoaWNzTGF5ZXIpKQog
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChsYXllci0+YmFja2luZ1N0b3JlKCkpCi0g
ICAgICAgIHJldHVybjsgLy8gVGhlIGxheWVyIGFscmVhZHkgaGFzIGEgYmFja2luZyBzdG9yZSAo
YW5kIG5vIHBlbmRpbmcgcmVtb3ZhbCkuCiAKICAgICBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5n
U3RvcmU+IGJhY2tpbmdTdG9yZShDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkpOwot
CiAgICAgYmFja2luZ1N0b3JlLT5zZXRTaXplKGdyYXBoaWNzTGF5ZXItPnNpemUoKSk7Ci0gICAg
QVNTRVJUKCFtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5jb250YWlucyhsYXllcikpOwotICAg
IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmFkZChsYXllciwgYmFja2luZ1N0b3JlKTsKKyAg
ICBtX2JhY2tpbmdTdG9yZXMuYWRkKGdyYXBoaWNzTGF5ZXIsIGJhY2tpbmdTdG9yZSk7CisgICAg
dG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihncmFwaGljc0xheWVyKS0+c2V0QmFja2luZ1N0
b3JlKGJhY2tpbmdTdG9yZSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZUJh
Y2tpbmdTdG9yZUlmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCiB7Ci0gICAg
VGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9IHRvVGV4dHVyZU1hcHBlckxheWVyKGdyYXBoaWNz
TGF5ZXIpOwotICAgIEFTU0VSVChsYXllcik7Ci0KLSAgICAvLyBDaGVjayBpZiB0aGUgbGF5b3V0
IGFscmVhZHkgaGFzIGEgYmFja2luZyBzdG9yZSAoY29tbWl0dGVkIG9yIHBlbmRpbmcpLgotICAg
IEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jl
cy5maW5kKGxheWVyKTsKLSAgICBpZiAoaXQgIT0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMu
ZW5kKCkpIHsKLSAgICAgICAgaWYgKGl0LT52YWx1ZSkgewotICAgICAgICAgICAgLy8gVGhlcmUg
aXMgYSBwZW5kaW5nIGFkZGl0aW9uLCBjYW5jZWwgaXQuCi0gICAgICAgICAgICBtX3BlbmRpbmdT
eW5jQmFja2luZ1N0b3Jlcy5yZW1vdmUoaXQpOwotICAgICAgICB9Ci0gICAgICAgIC8vIFRoZXJl
IGlzIGFscmVhZHkgYSBwZW5kaW5nIHJlbW92YWwuCisgICAgaWYgKCFnZXRCYWNraW5nU3RvcmUo
Z3JhcGhpY3NMYXllcikpCiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWxheWVy
LT5iYWNraW5nU3RvcmUoKSkKLSAgICAgICAgcmV0dXJuOyAvLyBUaGUgbGF5ZXIgaGFzIG5vIGJh
Y2tpbmcgc3RvcmUgKGFuZCBubyBwZW5kaW5nIGFkZGl0aW9uKS4KIAotICAgIEFTU0VSVCghbV9w
ZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuY29udGFpbnMobGF5ZXIpKTsKLSAgICBtX3BlbmRpbmdT
eW5jQmFja2luZ1N0b3Jlcy5hZGQobGF5ZXIsIDApOworICAgIG1fcmVsZWFzZWRDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZXMuYXBwZW5kKG1fYmFja2luZ1N0b3Jlcy50YWtlKGdyYXBoaWNzTGF5ZXIp
KTsKKyAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXIpLT5zZXRC
YWNraW5nU3RvcmUoMCk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlc2V0QmFja2lu
Z1N0b3JlU2l6ZVRvTGF5ZXJTaXplKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCkBAIC01
MzgsOCArNTA3LDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlSW1hZ2VCYWNraW5n
KENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKIHsKICAgICBBU1NFUlQobV9pbWFn
ZUJhY2tpbmdzLmNvbnRhaW5zKGltYWdlSUQpKTsKIAotICAgIC8vIFdlIGRvbid0IHdhbnQgVGV4
dHVyZU1hcHBlckxheWVyIHJlZmVycyBhIGRhbmdsaW5nIHBvaW50ZXIuCi0gICAgbV9yZWxlYXNl
ZEltYWdlQmFja2luZ3MuYXBwZW5kKG1faW1hZ2VCYWNraW5ncy50YWtlKGltYWdlSUQpKTsKKyAg
ICBtX3JlbGVhc2VkQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVzLmFwcGVuZChtX2ltYWdlQmFja2lu
Z3MudGFrZShpbWFnZUlEKSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmFzc2lnbklt
YWdlQmFja2luZ1RvTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIsIENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nSUQgaW1hZ2VJRCkKQEAgLTU1Myw5ICs1MjEsOSBAQCB2b2lkIExheWVyVHJlZVJlbmRl
cmVyOjphc3NpZ25JbWFnZUJhY2tpbmdUb0xheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBDb29y
ZGluYQogICAgIGxheWVyLT5zZXRDb250ZW50c1RvTWVkaWEoaXQtPnZhbHVlLmdldCgpKTsKIH0K
IAotdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlUmVsZWFzZWRJbWFnZUJhY2tpbmdzSWZO
ZWVkZWQoKQordm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlUmVsZWFzZWRDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZXNJZk5lZWRlZCgpCiB7Ci0gICAgbV9yZWxlYXNlZEltYWdlQmFja2luZ3Mu
Y2xlYXIoKTsKKyAgICBtX3JlbGVhc2VkQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVzLmNsZWFyKCk7
CiB9CiAKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNvbW1pdFBlbmRpbmdCYWNraW5nU3RvcmVP
cGVyYXRpb25zKCkKQEAgLTU2NSwxNSArNTMzLDYgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6
Y29tbWl0UGVuZGluZ0JhY2tpbmdTdG9yZU9wZXJhdGlvbnMoKQogICAgICAgICAoKml0KS0+Y29t
bWl0VGlsZU9wZXJhdGlvbnMobV90ZXh0dXJlTWFwcGVyLmdldCgpKTsKIAogICAgIG1fYmFja2lu
Z1N0b3Jlc1dpdGhQZW5kaW5nQnVmZmVycy5jbGVhcigpOwotCi0gICAgewotICAgICAgICBCYWNr
aW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmVu
ZCgpOwotICAgICAgICBCYWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nU3lu
Y0JhY2tpbmdTdG9yZXMuYmVnaW4oKTsKLSAgICAgICAgZm9yICg7aXQgIT0gZW5kOyArK2l0KQot
ICAgICAgICAgICAgaXQtPmtleS0+c2V0QmFja2luZ1N0b3JlKGl0LT52YWx1ZSk7Ci0KLSAgICAg
ICAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuY2xlYXIoKTsKLSAgICB9CiB9CiAKIHZvaWQg
TGF5ZXJUcmVlUmVuZGVyZXI6OmZsdXNoTGF5ZXJDaGFuZ2VzKCkKQEAgLTU4NSw3ICs1NDQsNyBA
QCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpmbHVzaExheWVyQ2hhbmdlcygpCiAKICAgICBtX3Jv
b3RMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlKEZsb2F0UmVjdCgpKTsKICAgICBjb21taXRQ
ZW5kaW5nQmFja2luZ1N0b3JlT3BlcmF0aW9ucygpOwotICAgIHJlbW92ZVJlbGVhc2VkSW1hZ2VC
YWNraW5nc0lmTmVlZGVkKCk7CisgICAgcmVtb3ZlUmVsZWFzZWRDb29yZGluYXRlZEJhY2tpbmdT
dG9yZXNJZk5lZWRlZCgpOwogCiAgICAgLy8gVGhlIHBlbmRpbmcgdGlsZXMgc3RhdGUgaXMgb24g
aXRzIHdheSBmb3IgdGhlIHNjcmVlbiwgdGVsbCB0aGUgd2ViIHByb2Nlc3MgdG8gcmVuZGVyIHRo
ZSBuZXh0IG9uZS4KICAgICBkaXNwYXRjaE9uTWFpblRocmVhZChiaW5kKCZMYXllclRyZWVSZW5k
ZXJlcjo6cmVuZGVyTmV4dEZyYW1lLCB0aGlzKSk7CkBAIC02MzMsMTEgKzU5Miw2IEBAIHZvaWQg
TGF5ZXJUcmVlUmVuZGVyZXI6OnN5bmNSZW1vdGVDb250ZW50KCkKIAogdm9pZCBMYXllclRyZWVS
ZW5kZXJlcjo6cHVyZ2VHTFJlc291cmNlcygpCiB7Ci0gICAgVGV4dHVyZU1hcHBlckxheWVyKiBs
YXllciA9IHRvVGV4dHVyZU1hcHBlckxheWVyKHJvb3RMYXllcigpKTsKLQotICAgIGlmIChsYXll
cikKLSAgICAgICAgbGF5ZXItPmNsZWFyQmFja2luZ1N0b3Jlc1JlY3Vyc2l2ZSgpOwotCiAgICAg
bV9pbWFnZUJhY2tpbmdzLmNsZWFyKCk7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAg
bV9zdXJmYWNlQmFja2luZ1N0b3Jlcy5jbGVhcigpOwpAQCAtNjQ4LDcgKzYwMiw3IEBAIHZvaWQg
TGF5ZXJUcmVlUmVuZGVyZXI6OnB1cmdlR0xSZXNvdXJjZXMoKQogICAgIG1fbGF5ZXJzLmNsZWFy
KCk7CiAgICAgbV9maXhlZExheWVycy5jbGVhcigpOwogICAgIG1fdGV4dHVyZU1hcHBlci5jbGVh
cigpOwotICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmNsZWFyKCk7CisgICAgbV9iYWNr
aW5nU3RvcmVzLmNsZWFyKCk7CiAgICAgbV9iYWNraW5nU3RvcmVzV2l0aFBlbmRpbmdCdWZmZXJz
LmNsZWFyKCk7CiAKICAgICBzZXRBY3RpdmUoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJl
bmRlcmVyLmgKaW5kZXggNmI2MmVmNTAyZGU5N2I0YzMwMDk5YmM4YzA0NmMwM2RhNmFmOGZiNi4u
ZTQyNjlhNDNjODgzMGU1N2M2ZTNjMGRlOGYwNjBkMDc1YWU5ODFiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVSZW5kZXJlci5oCkBAIC0xNDUsOSArMTQ1LDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHB1cmdlQmFja2luZ1N0b3JlcygpOwogCiAgICAgdm9pZCBhc3NpZ25JbWFnZUJhY2tpbmdUb0xh
eWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsK
LSAgICB2b2lkIHJlbW92ZVJlbGVhc2VkSW1hZ2VCYWNraW5nc0lmTmVlZGVkKCk7CiAgICAgdm9p
ZCBlbnN1cmVSb290TGF5ZXIoKTsKICAgICB2b2lkIGNvbW1pdFBlbmRpbmdCYWNraW5nU3RvcmVP
cGVyYXRpb25zKCk7CisgICAgdm9pZCByZW1vdmVSZWxlYXNlZENvb3JkaW5hdGVkQmFja2luZ1N0
b3Jlc0lmTmVlZGVkKCk7CiAKICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSogZ2V0QmFja2lu
Z1N0b3JlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKICAgICB2b2lkIHByZXBhcmVDb250ZW50
QmFja2luZ1N0b3JlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKQEAgLTE2NiwxMSArMTY2LDEy
IEBAIHByaXZhdGU6CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8Q29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCwgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiA+IEltYWdlQmFja2luZ01hcDsK
ICAgICBJbWFnZUJhY2tpbmdNYXAgbV9pbWFnZUJhY2tpbmdzOwotICAgIFZlY3RvcjxSZWZQdHI8
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+ID4gbV9yZWxlYXNlZEltYWdlQmFja2luZ3M7CiAKLSAg
ICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgUmVmUHRyPENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlPiA+IEJhY2tpbmdTdG9yZU1hcDsKLSAgICBCYWNraW5nU3Rv
cmVNYXAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXM7CisgICAgdHlwZWRlZiBIYXNoTWFwPFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+ID4g
QmFja2luZ1N0b3JlTWFwOworICAgIEJhY2tpbmdTdG9yZU1hcCBtX2JhY2tpbmdTdG9yZXM7CiAK
KyAgICAvLyBXZSBkb24ndCB3YW50IFRleHR1cmVNYXBwZXJMYXllciByZWZlcnMgYSBkYW5nbGlu
ZyBwb2ludGVyLgorICAgIFZlY3RvcjxSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+ID4g
bV9yZWxlYXNlZENvb3JkaW5hdGVkQmFja2luZ1N0b3JlczsKICAgICBIYXNoU2V0PFJlZlB0cjxD
b29yZGluYXRlZEJhY2tpbmdTdG9yZT4gPiBtX2JhY2tpbmdTdG9yZXNXaXRoUGVuZGluZ0J1ZmZl
cnM7CiAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183330</attachid>
            <date>2013-01-17 17:43:40 -0800</date>
            <delta_ts>2013-01-17 18:02:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107099-20130118104033.patch</filename>
            <type>text/plain</type>
            <size>18744</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWJmZGZkZWM1Mzc3ZWRj
MWFmY2QwYzNhNzI5YTcwNGVlY2YyYzhiNC4uZTQxYjQ2ZWRjMjM5ZDk4NDlkZTQ3MmE0Y2JiY2Zj
OTJhODY1NDljYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM0IEBACiAyMDEzLTAxLTE3ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZW1vdmUgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMgaW4gTGF5ZXJU
cmVlUmVuZGVyZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDcwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEJhY2tpbmdTdG9yZSgpIHNv
IHRoYXQKKyAgICAgICAgTGF5ZXJUcmVlUmVuZGVyZXIgc2V0cyBhIGJhY2tpbmcgc3RvcmUgdG8g
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCisKKyAgICAgICAgUmVtb3ZlIFRleHR1cmVNYXBw
ZXJMYXllcjo6Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCkgYmVjYXVzZQorICAgICAgICBU
ZXh0dXJlTWFwcGVyTGF5ZXIgZG9lcyBub3QgbWFuYWdlIHRoZSBsaWZlIGN5Y2xlIG9mIGEgYmFj
a2luZyBzdG9yZS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGNvbXBvc2l0aW5nIHRl
c3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaDoKKyAgICAg
ICAgKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5o
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpUZXh0dXJlTWFwcGVyTGF5
ZXIpOgorICAgICAgICAoVGV4dHVyZU1hcHBlckxheWVyKToKKworMjAxMy0wMS0xNyAgSHVhbmcg
RG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAgICBbVGV4bWFwXSBS
ZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50Lgog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Nzg3CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzZWQ2Y2IyZDRmYTFiZDA0MTQ1ZjA3NGRjOWI5MjJkZGE1YmMyYWYxLi5i
MWU5NWJkMTk5Mzk0ZjJhMzhlYTNmM2M2NTU1Yjc4ZmQyNmQ5MjA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMzMgQEAKIDIwMTMtMDEtMTcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFu
eTEwMC5uZXQ+CiAKKyAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3M6IFJlbW92ZSBtX3BlbmRp
bmdTeW5jQmFja2luZ1N0b3JlcyBpbiBMYXllclRyZWVSZW5kZXJlci4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzA5OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExheWVyVHJlZVJlbmRlcmVyIGRpZmZp
Y3VsdGx5IHVzZXMgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMgdG8gc2V0IGEgYmFja2luZwor
ICAgICAgICBzdG9yZSB0byBUZXh0dXJlTWFwcGVyTGF5ZXIsIGFsdGhvdWdoIExheWVyVHJlZVJl
bmRlcmVyIGVhc2lseSBzZXRzIGEgZGlyZWN0CisgICAgICAgIGNvbXBvc2l0ZWQgaW1hZ2UgdG8g
VGV4dHVyZU1hcHBlckxheWVyLiBJdCBpcyBiZWNhdXNlIExheWVyVHJlZVJlbmRlcmVyIGRpcmVj
dGx5CisgICAgICAgIHNldCBhIGJhY2tpbmcgc3RvcmUgdG8gVGV4dHVyZU1hcHBlckxheWVyLCBp
bnN0ZWFkIG9mIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggbWFrZXMgTGF5ZXJUcmVlUmVuZGVyZXIgc2V0IGEgYmFja2luZyBzdG9yZSB0byBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcgorICAgICAgICBhbmQgdGhlbiBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlciB3aWxsIHNldCBhIGJhY2tpbmcgc3RvcmUgdG8gVGV4dHVyZU1hcHBlckxheWVyCisg
ICAgICAgIGxpa2Ugb3RoZXIgbWVtYmVycy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlUmVuZGVyZXI6OmRlbGV0ZUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
UmVuZGVyZXI6OmdldEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJl
bmRlcmVyOjpjcmVhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVCYWNraW5nU3RvcmVJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVJbWFnZUJhY2tpbmcpOgorICAgICAgICAo
V2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlUmVsZWFzZWRDb29yZGluYXRlZEJhY2tp
bmdTdG9yZXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpj
b21taXRQZW5kaW5nQmFja2luZ1N0b3JlT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZVJlbmRlcmVyOjpmbHVzaExheWVyQ2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZVJlbmRlcmVyOjpwdXJnZUdMUmVzb3VyY2VzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oOgorCisyMDEzLTAxLTE3ICBI
dWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIFtUZXht
YXBdIFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291
bnQuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3
ODcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggMmNk
YmI4ZDg4NGY5ZGE1ZWI4OTJjMDg3NjBhNzRkMGVlYmNkOWIxZC4uOTE5NzVhMDljMzk4YTA3YmQx
NTA3NWIxMjlkZGM3Mzc5ZDY4YjkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuY3BwCkBAIC00MDAsMTMgKzQwMCwzMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCBzaG93KQogdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25s
eSgpCiB7CiAgICAgaWYgKG1faGFzT3duQmFja2luZ1N0b3JlKQotICAgICAgICB1cGRhdGVEZWJ1
Z0JvcmRlckFuZFJlcGFpbnRDb3VudCgpOworICAgICAgICBwcmVwYXJlQmFja2luZ1N0b3JlKCk7
CiAgICAgbV9sYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSh0aGlz
KTsKKyAgICAvLyB1cGRhdGVCYWNraW5nU3RvcmUoKSBtdXN0IGJlIHBlcmZvcm1lZCBhZnRlciBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHko
KSBiZWNhdXNlIHVwZGF0ZUJhY2tpbmdTdG9yZSgpIG5lZWRzIHRvIGdldCBUZXh0dXJlTWFwcGVy
IGZyb20gVGV4dHVyZU1hcHBlckxheWVyLgogICAgIGlmIChtX2hhc093bkJhY2tpbmdTdG9yZSkK
ICAgICAgICAgdXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgZGlkRmx1c2hDb21wb3NpdGluZ1N0
YXRlKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNr
aW5nU3RvcmUoKQoreworICAgIEFTU0VSVChtX2hhc093bkJhY2tpbmdTdG9yZSk7CisgICAgaWYg
KCFzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkpIHsKKyAgICAgICAgbV9iYWNraW5nU3RvcmUuY2xl
YXIoKTsKKyAgICAgICAgbV9jaGFuZ2VNYXNrIHw9IFRleHR1cmVNYXBwZXJMYXllcjo6QmFja2lu
Z1N0b3JlQ2hhbmdlOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUp
IHsKKyAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fY2hhbmdlTWFzayB8PSBUZXh0dXJlTWFw
cGVyTGF5ZXI6OkJhY2tpbmdTdG9yZUNoYW5nZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHVw
ZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCk7Cit9CisKIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCkKIHsKICAg
ICBBU1NFUlQobV9oYXNPd25CYWNraW5nU3RvcmUpOwpAQCAtNDU2LDIwICs0NzMsMTUgQEAgdm9p
ZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6ZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlKCkK
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiB7
CiAgICAgQVNTRVJUKG1faGFzT3duQmFja2luZ1N0b3JlKTsKLSAgICBwcmVwYXJlQmFja2luZ1N0
b3JlKCk7Ci0gICAgbV9sYXllci0+c2V0QmFja2luZ1N0b3JlKG1fYmFja2luZ1N0b3JlKTsKLX0K
LQotdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tpbmdTdG9yZSgp
Ci17CiAgICAgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciA9IG1fbGF5ZXItPnRleHR1cmVN
YXBwZXIoKTsKICAgICBpZiAoIXRleHR1cmVNYXBwZXIpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKSB7Ci0gICAgICAgIG1fYmFja2luZ1N0b3Jl
LmNsZWFyKCk7CisgICAgICAgIEFTU0VSVCghbV9iYWNraW5nU3RvcmUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQorICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAKICAgICBJbnRSZWN0IGRp
cnR5UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwg
bV9zaXplKSk7CiAgICAgaWYgKCFtX25lZWRzRGlzcGxheSkKQEAgLTQ3Nyw5ICs0ODksNiBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKCkKICAg
ICBpZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFt
X2JhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBUZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpOwotCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgQVNTRVJU
KGR5bmFtaWNfY2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdT
dG9yZS5nZXQoKSkpOwogI2VuZGlmCkBAIC01NDUsNiArNTU0LDE1IEBAIGJvb2wgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmls
dGVycykKIH0KICNlbmRpZgogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRC
YWNraW5nU3RvcmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBiYWNraW5n
U3RvcmUpCit7CisgICAgaWYgKG1fYmFja2luZ1N0b3JlID09IGJhY2tpbmdTdG9yZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9iYWNraW5nU3RvcmUgPSBiYWNraW5nU3RvcmU7CisgICAgbm90
aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6QmFja2luZ1N0b3JlQ2hhbmdlKTsKK30KKwog
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UmVwYWludENvdW50KGludCByZXBh
aW50Q291bnQpCiB7CiAgICAgbV9yZXBhaW50Q291bnQgPSByZXBhaW50Q291bnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4IGFmYzUxYTYyYzE1NjZmZjE0NDVl
MTQ3MjUxNGFmMjZhZWQ2YmVmOGMuLjVlMDgxNmU1ZDYzMjFjY2E3OWMyYjI0NzhlOTc3N2VmOTFh
NGZjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC04OSw2
ICs4OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBJdCB3aWxsIGJlIHJlbW92ZWQgYWZ0
ZXIgcmVtb3ZpbmcgZGVwZW5kZW5jeSBvZiBMYXllclRyZWVSZW5kZXJlciBvbiBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci4KICAgICB2b2lkIHNldEhhc093bkJhY2tpbmdTdG9yZShib29sIGIp
IHsgbV9oYXNPd25CYWNraW5nU3RvcmUgPSBiOyB9CisgICAgdm9pZCBzZXRCYWNraW5nU3RvcmUo
UGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPik7CiAKICAgICB2b2lkIHNldEZp
eGVkVG9WaWV3cG9ydChib29sIGZpeGVkKSB7IG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWQ7IH0K
ICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdw
b3J0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IDhlODBiMTk0MjM1OWZiYzhj
YTYwZDgxM2ZiOTczMTZmMzM5MTU2NDIuLjZiM2FhNjI0YTRiNjhjN2Q1YjJhZDRiNjVlNWRjNzk3
ODIwZmFiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC01NCwxNiArNTQsNiBA
QCBjb25zdCBUZXh0dXJlTWFwcGVyTGF5ZXIqIFRleHR1cmVNYXBwZXJMYXllcjo6cm9vdExheWVy
KCkgY29uc3QKICAgICByZXR1cm4gdGhpczsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6
OmNsZWFyQmFja2luZ1N0b3Jlc1JlY3Vyc2l2ZSgpCi17Ci0gICAgbV9iYWNraW5nU3RvcmUuY2xl
YXIoKTsKLSAgICBtX2NvbnRlbnRzTGF5ZXIgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9jaGlsZHJlbi5zaXplKCk7ICsraSkKLSAgICAgICAgbV9jaGlsZHJlbltpXS0+Y2xlYXJC
YWNraW5nU3RvcmVzUmVjdXJzaXZlKCk7Ci0gICAgaWYgKG1fc3RhdGUubWFza0xheWVyKQotICAg
ICAgICBtX3N0YXRlLm1hc2tMYXllci0+Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCk7Ci19
Ci0KIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpjb21wdXRlVHJhbnNmb3Jtc1JlY3Vyc2l2ZSgp
CiB7CiAgICAgaWYgKG1fc3RhdGUuc2l6ZS5pc0VtcHR5KCkgJiYgbV9zdGF0ZS5tYXNrc1RvQm91
bmRzKQpAQCAtNDA4LDYgKzM5OCw5IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENv
bXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdyYXBoaWNzTGF5ZXJUZXh0CiAgICAgaWYg
KGNoYW5nZU1hc2sgJiBBbmltYXRpb25DaGFuZ2UpCiAgICAgICAgIG1fYW5pbWF0aW9ucyA9IGdy
YXBoaWNzTGF5ZXItPm1fYW5pbWF0aW9uczsKIAorICAgIGlmIChjaGFuZ2VNYXNrICYgQmFja2lu
Z1N0b3JlQ2hhbmdlKQorICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IGdyYXBoaWNzTGF5ZXItPm1f
YmFja2luZ1N0b3JlLmdldCgpOworCiAgICAgaWYgKGNoYW5nZU1hc2sgJiBSZXBhaW50Q291bnRD
aGFuZ2UpCiAgICAgICAgIG1fc3RhdGUucmVwYWludENvdW50ID0gZ3JhcGhpY3NMYXllci0+cmVw
YWludENvdW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCA1NzViYjI3ZWI3YTg3
NGMxODRiNTgxZWQyYmQ0MzVkMTAxNWE4M2IxLi5kMDU2MDBjNWEyMTFjMmUwMTc2NzU5ZmU1YjAx
ZWM2MGI3NmM5NDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC03NCwxMiArNzQsMTUg
QEAgcHVibGljOgogICAgICAgICBGaWx0ZXJDaGFuZ2UgPSAgICAgICAgICAgICAgKDFMIDw8IDIz
KSwKIAogICAgICAgICBEZWJ1Z1Zpc3VhbHNDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI0KSwKLSAg
ICAgICAgUmVwYWludENvdW50Q2hhbmdlID0gICAgICAgICgxTCA8PCAyNSkKKyAgICAgICAgUmVw
YWludENvdW50Q2hhbmdlID0gICAgICAgICgxTCA8PCAyNSksCisKKyAgICAgICAgQmFja2luZ1N0
b3JlQ2hhbmdlID0gICAgICAgICgxTCA8PCAyNikKICAgICB9OwogCiAgICAgVGV4dHVyZU1hcHBl
ckxheWVyKCkKICAgICAgICAgOiBtX3BhcmVudCgwKQogICAgICAgICAsIG1fZWZmZWN0VGFyZ2V0
KDApCisgICAgICAgICwgbV9iYWNraW5nU3RvcmUoMCkKICAgICAgICAgLCBtX2NvbnRlbnRzTGF5
ZXIoMCkKICAgICAgICAgLCBtX2N1cnJlbnRPcGFjaXR5KDEpCiAgICAgICAgICwgbV9jZW50ZXJa
KDApCkBAIC05NSwxMCArOTgsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBhaW50KCk7CiAKLSAg
ICB2b2lkIHNldEJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmU+IGJhY2tpbmdTdG9yZSkgeyBtX2JhY2tpbmdTdG9yZSA9IGJhY2tpbmdTdG9yZTsgfQotICAg
IFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKCkgeyBy
ZXR1cm4gbV9iYWNraW5nU3RvcmU7IH0KLSAgICB2b2lkIGNsZWFyQmFja2luZ1N0b3Jlc1JlY3Vy
c2l2ZSgpOwotCiAgICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbkRlbHRhSWZOZWVkZWQoY29uc3Qg
RmxvYXRTaXplJik7CiAKICAgICB2b2lkIGFwcGx5QW5pbWF0aW9uc1JlY3Vyc2l2ZWx5KCk7CkBA
IC0xNTIsNyArMTUxLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8VGV4dHVyZU1hcHBlckxheWVy
Kj4gbV9jaGlsZHJlbjsKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIG1fcGFyZW50OwogICAgIFRl
eHR1cmVNYXBwZXJMYXllciogbV9lZmZlY3RUYXJnZXQ7Ci0gICAgUmVmUHRyPFRleHR1cmVNYXBw
ZXJCYWNraW5nU3RvcmU+IG1fYmFja2luZ1N0b3JlOworICAgIFRleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmUqIG1fYmFja2luZ1N0b3JlOwogICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKiBt
X2NvbnRlbnRzTGF5ZXI7CiAgICAgR3JhcGhpY3NMYXllclRyYW5zZm9ybSBtX2N1cnJlbnRUcmFu
c2Zvcm07CiAgICAgZmxvYXQgbV9jdXJyZW50T3BhY2l0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZVJlbmRlcmVyLmNwcAppbmRleCA0NWNjODEzNTk3NmEzYWQ0MmNjNTgxODRlZWYxZWE0ZjRmYWMw
Y2U5Li5lNzA5YzI3MDI1NWM4NzdmMGI1ZDViMTVkN2VkNDhiMzQ4ZDdkMGQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVS
ZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBMYXll
clRyZWVSZW5kZXJlcjo6ZGVsZXRlTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQpCiAg
ICAgT3duUHRyPEdyYXBoaWNzTGF5ZXI+IGxheWVyID0gbV9sYXllcnMudGFrZShsYXllcklEKTsK
ICAgICBBU1NFUlQobGF5ZXIpOwogCi0gICAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMucmVt
b3ZlKHRvVGV4dHVyZU1hcHBlckxheWVyKGxheWVyLmdldCgpKSk7CisgICAgbV9iYWNraW5nU3Rv
cmVzLnJlbW92ZShsYXllci5nZXQoKSk7CiAgICAgbV9maXhlZExheWVycy5yZW1vdmUobGF5ZXJJ
RCk7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgbV9zdXJmYWNlQmFja2luZ1N0b3Jl
cy5yZW1vdmUobGF5ZXJJRCk7CkBAIC0zOTUsMTIgKzM5NSw5IEBAIHZvaWQgTGF5ZXJUcmVlUmVu
ZGVyZXI6OnNldFJvb3RMYXllcklEKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklEKQogCiBDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZSogTGF5ZXJUcmVlUmVuZGVyZXI6OmdldEJhY2tpbmdTdG9yZShH
cmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQogewotICAgIFRleHR1cmVNYXBwZXJMYXllciog
bGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyKTsKLSAgICBBU1NFUlQo
bGF5ZXIpOwotICAgIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBzdGF0
aWNfY2FzdDxDb29yZGluYXRlZEJhY2tpbmdTdG9yZSo+KGxheWVyLT5iYWNraW5nU3RvcmUoKS5n
ZXQoKSk7Ci0KLSAgICBCYWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nU3lu
Y0JhY2tpbmdTdG9yZXMuZmluZChsYXllcik7Ci0gICAgaWYgKGl0ICE9IG1fcGVuZGluZ1N5bmNC
YWNraW5nU3RvcmVzLmVuZCgpKQorICAgIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKiBiYWNraW5n
U3RvcmUgPSAwOworICAgIEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2JhY2tpbmdT
dG9yZXMuZmluZChncmFwaGljc0xheWVyKTsKKyAgICBpZiAoaXQgIT0gbV9iYWNraW5nU3RvcmVz
LmVuZCgpKQogICAgICAgICBiYWNraW5nU3RvcmUgPSBpdC0+dmFsdWUuZ2V0KCk7CiAgICAgcmV0
dXJuIGJhY2tpbmdTdG9yZTsKIH0KQEAgLTQxNyw1MCArNDE0LDIyIEBAIHZvaWQgTGF5ZXJUcmVl
UmVuZGVyZXI6OnByZXBhcmVDb250ZW50QmFja2luZ1N0b3JlKEdyYXBoaWNzTGF5ZXIqIGdyYXBo
aWNzTGF5ZXIpCiAKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZUlm
TmVlZGVkKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCiB7Ci0gICAgVGV4dHVyZU1hcHBl
ckxheWVyKiBsYXllciA9IHRvVGV4dHVyZU1hcHBlckxheWVyKGdyYXBoaWNzTGF5ZXIpOwotICAg
IEFTU0VSVChsYXllcik7Ci0KLSAgICAvLyBNYWtlIHN1cmUgdGhlIGxheWVyIGRvZXMgbm90IGFs
cmVhZHkgaGF2ZSBhIGJhY2tpbmcgc3RvcmUgKGNvbW1pdHRlZCBvciBwZW5kaW5nKS4KLSAgICBC
YWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMu
ZmluZChsYXllcik7Ci0gICAgaWYgKGl0ICE9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmVu
ZCgpKSB7Ci0gICAgICAgIGlmICghaXQtPnZhbHVlKSB7Ci0gICAgICAgICAgICAvLyBUaGVyZSBp
cyBhIHBlbmRpbmcgcmVtb3ZhbCwgY2FuY2VsIGl0LgotICAgICAgICAgICAgbV9wZW5kaW5nU3lu
Y0JhY2tpbmdTdG9yZXMucmVtb3ZlKGl0KTsKLSAgICAgICAgfQotICAgICAgICAvLyBUaGVyZSBp
cyBhbHJlYWR5IGEgcGVuZGluZyBhZGRpdGlvbi4KKyAgICBpZiAoZ2V0QmFja2luZ1N0b3JlKGdy
YXBoaWNzTGF5ZXIpKQogICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChsYXllci0+YmFj
a2luZ1N0b3JlKCkpCi0gICAgICAgIHJldHVybjsgLy8gVGhlIGxheWVyIGFscmVhZHkgaGFzIGEg
YmFja2luZyBzdG9yZSAoYW5kIG5vIHBlbmRpbmcgcmVtb3ZhbCkuCiAKICAgICBSZWZQdHI8Q29v
cmRpbmF0ZWRCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZShDb29yZGluYXRlZEJhY2tpbmdTdG9y
ZTo6Y3JlYXRlKCkpOwotCiAgICAgYmFja2luZ1N0b3JlLT5zZXRTaXplKGdyYXBoaWNzTGF5ZXIt
PnNpemUoKSk7Ci0gICAgQVNTRVJUKCFtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5jb250YWlu
cyhsYXllcikpOwotICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmFkZChsYXllciwgYmFj
a2luZ1N0b3JlKTsKKyAgICBtX2JhY2tpbmdTdG9yZXMuYWRkKGdyYXBoaWNzTGF5ZXIsIGJhY2tp
bmdTdG9yZSk7CisgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihncmFwaGljc0xheWVy
KS0+c2V0QmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlUmVu
ZGVyZXI6OnJlbW92ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNz
TGF5ZXIpCiB7Ci0gICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9IHRvVGV4dHVyZU1hcHBl
ckxheWVyKGdyYXBoaWNzTGF5ZXIpOwotICAgIEFTU0VSVChsYXllcik7Ci0KLSAgICAvLyBDaGVj
ayBpZiB0aGUgbGF5b3V0IGFscmVhZHkgaGFzIGEgYmFja2luZyBzdG9yZSAoY29tbWl0dGVkIG9y
IHBlbmRpbmcpLgotICAgIEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdT
eW5jQmFja2luZ1N0b3Jlcy5maW5kKGxheWVyKTsKLSAgICBpZiAoaXQgIT0gbV9wZW5kaW5nU3lu
Y0JhY2tpbmdTdG9yZXMuZW5kKCkpIHsKLSAgICAgICAgaWYgKGl0LT52YWx1ZSkgewotICAgICAg
ICAgICAgLy8gVGhlcmUgaXMgYSBwZW5kaW5nIGFkZGl0aW9uLCBjYW5jZWwgaXQuCi0gICAgICAg
ICAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5yZW1vdmUoaXQpOwotICAgICAgICB9Ci0g
ICAgICAgIC8vIFRoZXJlIGlzIGFscmVhZHkgYSBwZW5kaW5nIHJlbW92YWwuCisgICAgaWYgKCFn
ZXRCYWNraW5nU3RvcmUoZ3JhcGhpY3NMYXllcikpCiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoIWxheWVyLT5iYWNraW5nU3RvcmUoKSkKLSAgICAgICAgcmV0dXJuOyAvLyBUaGUg
bGF5ZXIgaGFzIG5vIGJhY2tpbmcgc3RvcmUgKGFuZCBubyBwZW5kaW5nIGFkZGl0aW9uKS4KIAot
ICAgIEFTU0VSVCghbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuY29udGFpbnMobGF5ZXIpKTsK
LSAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5hZGQobGF5ZXIsIDApOworICAgIG1fcmVs
ZWFzZWRDb29yZGluYXRlZEJhY2tpbmdTdG9yZXMuYXBwZW5kKG1fYmFja2luZ1N0b3Jlcy50YWtl
KGdyYXBoaWNzTGF5ZXIpKTsKKyAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBo
aWNzTGF5ZXIpLT5zZXRCYWNraW5nU3RvcmUoMCk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlUmVuZGVy
ZXI6OnJlc2V0QmFja2luZ1N0b3JlU2l6ZVRvTGF5ZXJTaXplKEdyYXBoaWNzTGF5ZXIqIGdyYXBo
aWNzTGF5ZXIpCkBAIC01MzgsOCArNTA3LDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVt
b3ZlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKIHsKICAg
ICBBU1NFUlQobV9pbWFnZUJhY2tpbmdzLmNvbnRhaW5zKGltYWdlSUQpKTsKIAotICAgIC8vIFdl
IGRvbid0IHdhbnQgVGV4dHVyZU1hcHBlckxheWVyIHJlZmVycyBhIGRhbmdsaW5nIHBvaW50ZXIu
Ci0gICAgbV9yZWxlYXNlZEltYWdlQmFja2luZ3MuYXBwZW5kKG1faW1hZ2VCYWNraW5ncy50YWtl
KGltYWdlSUQpKTsKKyAgICBtX3JlbGVhc2VkQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVzLmFwcGVu
ZChtX2ltYWdlQmFja2luZ3MudGFrZShpbWFnZUlEKSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlUmVu
ZGVyZXI6OmFzc2lnbkltYWdlQmFja2luZ1RvTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIsIENv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKQEAgLTU1Myw5ICs1MjEsOSBAQCB2b2lk
IExheWVyVHJlZVJlbmRlcmVyOjphc3NpZ25JbWFnZUJhY2tpbmdUb0xheWVyKEdyYXBoaWNzTGF5
ZXIqIGxheWVyLCBDb29yZGluYQogICAgIGxheWVyLT5zZXRDb250ZW50c1RvTWVkaWEoaXQtPnZh
bHVlLmdldCgpKTsKIH0KIAotdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlUmVsZWFzZWRJ
bWFnZUJhY2tpbmdzSWZOZWVkZWQoKQordm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlUmVs
ZWFzZWRDb29yZGluYXRlZEJhY2tpbmdTdG9yZXNJZk5lZWRlZCgpCiB7Ci0gICAgbV9yZWxlYXNl
ZEltYWdlQmFja2luZ3MuY2xlYXIoKTsKKyAgICBtX3JlbGVhc2VkQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmVzLmNsZWFyKCk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNvbW1pdFBlbmRp
bmdCYWNraW5nU3RvcmVPcGVyYXRpb25zKCkKQEAgLTU2NSwxNSArNTMzLDYgQEAgdm9pZCBMYXll
clRyZWVSZW5kZXJlcjo6Y29tbWl0UGVuZGluZ0JhY2tpbmdTdG9yZU9wZXJhdGlvbnMoKQogICAg
ICAgICAoKml0KS0+Y29tbWl0VGlsZU9wZXJhdGlvbnMobV90ZXh0dXJlTWFwcGVyLmdldCgpKTsK
IAogICAgIG1fYmFja2luZ1N0b3Jlc1dpdGhQZW5kaW5nQnVmZmVycy5jbGVhcigpOwotCi0gICAg
ewotICAgICAgICBCYWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fcGVuZGluZ1N5bmNC
YWNraW5nU3RvcmVzLmVuZCgpOwotICAgICAgICBCYWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuYmVnaW4oKTsKLSAgICAgICAgZm9yICg7aXQg
IT0gZW5kOyArK2l0KQotICAgICAgICAgICAgaXQtPmtleS0+c2V0QmFja2luZ1N0b3JlKGl0LT52
YWx1ZSk7Ci0KLSAgICAgICAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuY2xlYXIoKTsKLSAg
ICB9CiB9CiAKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmZsdXNoTGF5ZXJDaGFuZ2VzKCkKQEAg
LTU4NSw3ICs1NDQsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpmbHVzaExheWVyQ2hhbmdl
cygpCiAKICAgICBtX3Jvb3RMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlKEZsb2F0UmVjdCgp
KTsKICAgICBjb21taXRQZW5kaW5nQmFja2luZ1N0b3JlT3BlcmF0aW9ucygpOwotICAgIHJlbW92
ZVJlbGVhc2VkSW1hZ2VCYWNraW5nc0lmTmVlZGVkKCk7CisgICAgcmVtb3ZlUmVsZWFzZWRDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZXNJZk5lZWRlZCgpOwogCiAgICAgLy8gVGhlIHBlbmRpbmcgdGls
ZXMgc3RhdGUgaXMgb24gaXRzIHdheSBmb3IgdGhlIHNjcmVlbiwgdGVsbCB0aGUgd2ViIHByb2Nl
c3MgdG8gcmVuZGVyIHRoZSBuZXh0IG9uZS4KICAgICBkaXNwYXRjaE9uTWFpblRocmVhZChiaW5k
KCZMYXllclRyZWVSZW5kZXJlcjo6cmVuZGVyTmV4dEZyYW1lLCB0aGlzKSk7CkBAIC02MzMsMTEg
KzU5Miw2IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnN5bmNSZW1vdGVDb250ZW50KCkKIAog
dm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cHVyZ2VHTFJlc291cmNlcygpCiB7Ci0gICAgVGV4dHVy
ZU1hcHBlckxheWVyKiBsYXllciA9IHRvVGV4dHVyZU1hcHBlckxheWVyKHJvb3RMYXllcigpKTsK
LQotICAgIGlmIChsYXllcikKLSAgICAgICAgbGF5ZXItPmNsZWFyQmFja2luZ1N0b3Jlc1JlY3Vy
c2l2ZSgpOwotCiAgICAgbV9pbWFnZUJhY2tpbmdzLmNsZWFyKCk7CiAjaWYgVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCiAgICAgbV9zdXJmYWNlQmFja2luZ1N0b3Jlcy5jbGVhcigpOwpAQCAtNjQ4LDcg
KzYwMiw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnB1cmdlR0xSZXNvdXJjZXMoKQogICAg
IG1fbGF5ZXJzLmNsZWFyKCk7CiAgICAgbV9maXhlZExheWVycy5jbGVhcigpOwogICAgIG1fdGV4
dHVyZU1hcHBlci5jbGVhcigpOwotICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmNsZWFy
KCk7CisgICAgbV9iYWNraW5nU3RvcmVzLmNsZWFyKCk7CiAgICAgbV9iYWNraW5nU3RvcmVzV2l0
aFBlbmRpbmdCdWZmZXJzLmNsZWFyKCk7CiAKICAgICBzZXRBY3RpdmUoZmFsc2UpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKaW5kZXggNmI2MmVmNTAyZGU5N2I0YzMwMDk5YmM4YzA0
NmMwM2RhNmFmOGZiNi4uZTQyNjlhNDNjODgzMGU1N2M2ZTNjMGRlOGYwNjBkMDc1YWU5ODFiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlUmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCkBAIC0xNDUsOSArMTQ1LDkgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpOwogCiAgICAgdm9pZCBhc3NpZ25J
bWFnZUJhY2tpbmdUb0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBDb29yZGluYXRlZElt
YWdlQmFja2luZ0lEKTsKLSAgICB2b2lkIHJlbW92ZVJlbGVhc2VkSW1hZ2VCYWNraW5nc0lmTmVl
ZGVkKCk7CiAgICAgdm9pZCBlbnN1cmVSb290TGF5ZXIoKTsKICAgICB2b2lkIGNvbW1pdFBlbmRp
bmdCYWNraW5nU3RvcmVPcGVyYXRpb25zKCk7CisgICAgdm9pZCByZW1vdmVSZWxlYXNlZENvb3Jk
aW5hdGVkQmFja2luZ1N0b3Jlc0lmTmVlZGVkKCk7CiAKICAgICBDb29yZGluYXRlZEJhY2tpbmdT
dG9yZSogZ2V0QmFja2luZ1N0b3JlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKICAgICB2b2lk
IHByZXBhcmVDb250ZW50QmFja2luZ1N0b3JlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKQEAg
LTE2NiwxMSArMTY2LDEyIEBAIHByaXZhdGU6CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8Q29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmdJRCwgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiA+IElt
YWdlQmFja2luZ01hcDsKICAgICBJbWFnZUJhY2tpbmdNYXAgbV9pbWFnZUJhY2tpbmdzOwotICAg
IFZlY3RvcjxSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+ID4gbV9yZWxlYXNlZEltYWdl
QmFja2luZ3M7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxh
eWVyKiwgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiA+IEJhY2tpbmdTdG9yZU1hcDsK
LSAgICBCYWNraW5nU3RvcmVNYXAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXM7CisgICAgdHlw
ZWRlZiBIYXNoTWFwPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBSZWZQdHI8Q29vcmRpbmF0ZWRC
YWNraW5nU3RvcmU+ID4gQmFja2luZ1N0b3JlTWFwOworICAgIEJhY2tpbmdTdG9yZU1hcCBtX2Jh
Y2tpbmdTdG9yZXM7CiAKKyAgICAvLyBXZSBkb24ndCB3YW50IFRleHR1cmVNYXBwZXJMYXllciBy
ZWZlcnMgYSBkYW5nbGluZyBwb2ludGVyLgorICAgIFZlY3RvcjxSZWZQdHI8Q29vcmRpbmF0ZWRC
YWNraW5nU3RvcmU+ID4gbV9yZWxlYXNlZENvb3JkaW5hdGVkQmFja2luZ1N0b3JlczsKICAgICBI
YXNoU2V0PFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gPiBtX2JhY2tpbmdTdG9yZXNX
aXRoUGVuZGluZ0J1ZmZlcnM7CiAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183335</attachid>
            <date>2013-01-17 18:02:40 -0800</date>
            <delta_ts>2013-01-24 21:45:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107099-20130118105932.patch</filename>
            <type>text/plain</type>
            <size>18780</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWJmZGZkZWM1Mzc3ZWRj
MWFmY2QwYzNhNzI5YTcwNGVlY2YyYzhiNC4uZTQxYjQ2ZWRjMjM5ZDk4NDlkZTQ3MmE0Y2JiY2Zj
OTJhODY1NDljYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM0IEBACiAyMDEzLTAxLTE3ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZW1vdmUgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMgaW4gTGF5ZXJU
cmVlUmVuZGVyZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDcwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEJhY2tpbmdTdG9yZSgpIHNv
IHRoYXQKKyAgICAgICAgTGF5ZXJUcmVlUmVuZGVyZXIgc2V0cyBhIGJhY2tpbmcgc3RvcmUgdG8g
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCisKKyAgICAgICAgUmVtb3ZlIFRleHR1cmVNYXBw
ZXJMYXllcjo6Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCkgYmVjYXVzZQorICAgICAgICBU
ZXh0dXJlTWFwcGVyTGF5ZXIgZG9lcyBub3QgbWFuYWdlIHRoZSBsaWZlIGN5Y2xlIG9mIGEgYmFj
a2luZyBzdG9yZS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGNvbXBvc2l0aW5nIHRl
c3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaDoKKyAgICAg
ICAgKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5o
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpUZXh0dXJlTWFwcGVyTGF5
ZXIpOgorICAgICAgICAoVGV4dHVyZU1hcHBlckxheWVyKToKKworMjAxMy0wMS0xNyAgSHVhbmcg
RG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAgICBbVGV4bWFwXSBS
ZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50Lgog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Nzg3CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzZWQ2Y2IyZDRmYTFiZDA0MTQ1ZjA3NGRjOWI5MjJkZGE1YmMyYWYxLi5i
MWU5NWJkMTk5Mzk0ZjJhMzhlYTNmM2M2NTU1Yjc4ZmQyNmQ5MjA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMzMgQEAKIDIwMTMtMDEtMTcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFu
eTEwMC5uZXQ+CiAKKyAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3M6IFJlbW92ZSBtX3BlbmRp
bmdTeW5jQmFja2luZ1N0b3JlcyBpbiBMYXllclRyZWVSZW5kZXJlci4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzA5OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExheWVyVHJlZVJlbmRlcmVyIGRpZmZp
Y3VsdGx5IHVzZXMgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMgdG8gc2V0IGEgYmFja2luZwor
ICAgICAgICBzdG9yZSB0byBUZXh0dXJlTWFwcGVyTGF5ZXIsIGFsdGhvdWdoIExheWVyVHJlZVJl
bmRlcmVyIGVhc2lseSBzZXRzIGEgZGlyZWN0CisgICAgICAgIGNvbXBvc2l0ZWQgaW1hZ2UgdG8g
VGV4dHVyZU1hcHBlckxheWVyLiBJdCBpcyBiZWNhdXNlIExheWVyVHJlZVJlbmRlcmVyIGRpcmVj
dGx5CisgICAgICAgIHNldCBhIGJhY2tpbmcgc3RvcmUgdG8gVGV4dHVyZU1hcHBlckxheWVyLCBp
bnN0ZWFkIG9mIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggbWFrZXMgTGF5ZXJUcmVlUmVuZGVyZXIgc2V0IGEgYmFja2luZyBzdG9yZSB0byBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcgorICAgICAgICBhbmQgdGhlbiBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlciB3aWxsIHNldCBhIGJhY2tpbmcgc3RvcmUgdG8gVGV4dHVyZU1hcHBlckxheWVyCisg
ICAgICAgIGxpa2Ugb3RoZXIgbWVtYmVycy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlUmVuZGVyZXI6OmRlbGV0ZUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
UmVuZGVyZXI6OmdldEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJl
bmRlcmVyOjpjcmVhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVCYWNraW5nU3RvcmVJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVJbWFnZUJhY2tpbmcpOgorICAgICAgICAo
V2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlUmVsZWFzZWRDb29yZGluYXRlZEJhY2tp
bmdTdG9yZXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpj
b21taXRQZW5kaW5nQmFja2luZ1N0b3JlT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZVJlbmRlcmVyOjpmbHVzaExheWVyQ2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZVJlbmRlcmVyOjpwdXJnZUdMUmVzb3VyY2VzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oOgorCisyMDEzLTAxLTE3ICBI
dWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIFtUZXht
YXBdIFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291
bnQuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3
ODcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggMmNk
YmI4ZDg4NGY5ZGE1ZWI4OTJjMDg3NjBhNzRkMGVlYmNkOWIxZC4uN2QzOTVjMjRhNDk3NTFhMzE4
YTdiOGY0MjA2MDFlYTI1YjEwYjg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuY3BwCkBAIC00MDAsMTMgKzQwMCwzMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCBzaG93KQogdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25s
eSgpCiB7CiAgICAgaWYgKG1faGFzT3duQmFja2luZ1N0b3JlKQotICAgICAgICB1cGRhdGVEZWJ1
Z0JvcmRlckFuZFJlcGFpbnRDb3VudCgpOworICAgICAgICBwcmVwYXJlQmFja2luZ1N0b3JlKCk7
CiAgICAgbV9sYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSh0aGlz
KTsKKyAgICAvLyB1cGRhdGVCYWNraW5nU3RvcmUoKSBtdXN0IGJlIHBlcmZvcm1lZCBhZnRlciBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHko
KSBiZWNhdXNlIHVwZGF0ZUJhY2tpbmdTdG9yZSgpIG5lZWRzIHRvIGdldCBUZXh0dXJlTWFwcGVy
IGZyb20gVGV4dHVyZU1hcHBlckxheWVyLgogICAgIGlmIChtX2hhc093bkJhY2tpbmdTdG9yZSkK
ICAgICAgICAgdXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgZGlkRmx1c2hDb21wb3NpdGluZ1N0
YXRlKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNr
aW5nU3RvcmUoKQoreworICAgIEFTU0VSVChtX2hhc093bkJhY2tpbmdTdG9yZSk7CisgICAgaWYg
KCFzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkpIHsKKyAgICAgICAgbV9iYWNraW5nU3RvcmUuY2xl
YXIoKTsKKyAgICAgICAgbV9jaGFuZ2VNYXNrIHw9IFRleHR1cmVNYXBwZXJMYXllcjo6QmFja2lu
Z1N0b3JlQ2hhbmdlOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUp
IHsKKyAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fY2hhbmdlTWFzayB8PSBUZXh0dXJlTWFw
cGVyTGF5ZXI6OkJhY2tpbmdTdG9yZUNoYW5nZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHVw
ZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCk7Cit9CisKIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCkKIHsKICAg
ICBBU1NFUlQobV9oYXNPd25CYWNraW5nU3RvcmUpOwpAQCAtNDU2LDIwICs0NzMsMTUgQEAgdm9p
ZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6ZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlKCkK
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiB7
CiAgICAgQVNTRVJUKG1faGFzT3duQmFja2luZ1N0b3JlKTsKLSAgICBwcmVwYXJlQmFja2luZ1N0
b3JlKCk7Ci0gICAgbV9sYXllci0+c2V0QmFja2luZ1N0b3JlKG1fYmFja2luZ1N0b3JlKTsKLX0K
LQotdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tpbmdTdG9yZSgp
Ci17CiAgICAgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciA9IG1fbGF5ZXItPnRleHR1cmVN
YXBwZXIoKTsKICAgICBpZiAoIXRleHR1cmVNYXBwZXIpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKSB7Ci0gICAgICAgIG1fYmFja2luZ1N0b3Jl
LmNsZWFyKCk7CisgICAgICAgIEFTU0VSVCghbV9iYWNraW5nU3RvcmUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQorICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAKICAgICBJbnRSZWN0IGRp
cnR5UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwg
bV9zaXplKSk7CiAgICAgaWYgKCFtX25lZWRzRGlzcGxheSkKQEAgLTQ3Nyw5ICs0ODksNiBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKCkKICAg
ICBpZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFt
X2JhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBUZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpOwotCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgQVNTRVJU
KGR5bmFtaWNfY2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdT
dG9yZS5nZXQoKSkpOwogI2VuZGlmCkBAIC01NDUsNiArNTU0LDE2IEBAIGJvb2wgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmls
dGVycykKIH0KICNlbmRpZgogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRC
YWNraW5nU3RvcmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBiYWNraW5n
U3RvcmUpCit7CisgICAgQVNTRVJUKCFtX2hhc093bkJhY2tpbmdTdG9yZSk7CisgICAgaWYgKG1f
YmFja2luZ1N0b3JlID09IGJhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9i
YWNraW5nU3RvcmUgPSBiYWNraW5nU3RvcmU7CisgICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBw
ZXJMYXllcjo6QmFja2luZ1N0b3JlQ2hhbmdlKTsKK30KKwogdm9pZCBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6c2V0UmVwYWludENvdW50KGludCByZXBhaW50Q291bnQpCiB7CiAgICAgbV9y
ZXBhaW50Q291bnQgPSByZXBhaW50Q291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5oCmluZGV4IGFmYzUxYTYyYzE1NjZmZjE0NDVlMTQ3MjUxNGFmMjZhZWQ2YmVmOGMu
LjVlMDgxNmU1ZDYzMjFjY2E3OWMyYjI0NzhlOTc3N2VmOTFhNGZjYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC04OSw2ICs4OSw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIEZJWE1FOiBJdCB3aWxsIGJlIHJlbW92ZWQgYWZ0ZXIgcmVtb3ZpbmcgZGVwZW5kZW5j
eSBvZiBMYXllclRyZWVSZW5kZXJlciBvbiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci4KICAg
ICB2b2lkIHNldEhhc093bkJhY2tpbmdTdG9yZShib29sIGIpIHsgbV9oYXNPd25CYWNraW5nU3Rv
cmUgPSBiOyB9CisgICAgdm9pZCBzZXRCYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFw
cGVyQmFja2luZ1N0b3JlPik7CiAKICAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sIGZp
eGVkKSB7IG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWQ7IH0KICAgICBib29sIGZpeGVkVG9WaWV3
cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuY3BwCmluZGV4IDhlODBiMTk0MjM1OWZiYzhjYTYwZDgxM2ZiOTczMTZmMzM5MTU2
NDIuLjZiM2FhNjI0YTRiNjhjN2Q1YjJhZDRiNjVlNWRjNzk3ODIwZmFiOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC01NCwxNiArNTQsNiBAQCBjb25zdCBUZXh0dXJlTWFwcGVy
TGF5ZXIqIFRleHR1cmVNYXBwZXJMYXllcjo6cm9vdExheWVyKCkgY29uc3QKICAgICByZXR1cm4g
dGhpczsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmNsZWFyQmFja2luZ1N0b3Jlc1Jl
Y3Vyc2l2ZSgpCi17Ci0gICAgbV9iYWNraW5nU3RvcmUuY2xlYXIoKTsKLSAgICBtX2NvbnRlbnRz
TGF5ZXIgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jaGlsZHJlbi5zaXplKCk7
ICsraSkKLSAgICAgICAgbV9jaGlsZHJlbltpXS0+Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZl
KCk7Ci0gICAgaWYgKG1fc3RhdGUubWFza0xheWVyKQotICAgICAgICBtX3N0YXRlLm1hc2tMYXll
ci0+Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCk7Ci19Ci0KIHZvaWQgVGV4dHVyZU1hcHBl
ckxheWVyOjpjb21wdXRlVHJhbnNmb3Jtc1JlY3Vyc2l2ZSgpCiB7CiAgICAgaWYgKG1fc3RhdGUu
c2l6ZS5pc0VtcHR5KCkgJiYgbV9zdGF0ZS5tYXNrc1RvQm91bmRzKQpAQCAtNDA4LDYgKzM5OCw5
IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlz
TGF5ZXJPbmx5KEdyYXBoaWNzTGF5ZXJUZXh0CiAgICAgaWYgKGNoYW5nZU1hc2sgJiBBbmltYXRp
b25DaGFuZ2UpCiAgICAgICAgIG1fYW5pbWF0aW9ucyA9IGdyYXBoaWNzTGF5ZXItPm1fYW5pbWF0
aW9uczsKIAorICAgIGlmIChjaGFuZ2VNYXNrICYgQmFja2luZ1N0b3JlQ2hhbmdlKQorICAgICAg
ICBtX2JhY2tpbmdTdG9yZSA9IGdyYXBoaWNzTGF5ZXItPm1fYmFja2luZ1N0b3JlLmdldCgpOwor
CiAgICAgaWYgKGNoYW5nZU1hc2sgJiBSZXBhaW50Q291bnRDaGFuZ2UpCiAgICAgICAgIG1fc3Rh
dGUucmVwYWludENvdW50ID0gZ3JhcGhpY3NMYXllci0+cmVwYWludENvdW50KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuaAppbmRleCA1NzViYjI3ZWI3YTg3NGMxODRiNTgxZWQyYmQ0MzVkMTAx
NWE4M2IxLi5kMDU2MDBjNWEyMTFjMmUwMTc2NzU5ZmU1YjAxZWM2MGI3NmM5NDdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5oCkBAIC03NCwxMiArNzQsMTUgQEAgcHVibGljOgogICAgICAgICBG
aWx0ZXJDaGFuZ2UgPSAgICAgICAgICAgICAgKDFMIDw8IDIzKSwKIAogICAgICAgICBEZWJ1Z1Zp
c3VhbHNDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI0KSwKLSAgICAgICAgUmVwYWludENvdW50Q2hh
bmdlID0gICAgICAgICgxTCA8PCAyNSkKKyAgICAgICAgUmVwYWludENvdW50Q2hhbmdlID0gICAg
ICAgICgxTCA8PCAyNSksCisKKyAgICAgICAgQmFja2luZ1N0b3JlQ2hhbmdlID0gICAgICAgICgx
TCA8PCAyNikKICAgICB9OwogCiAgICAgVGV4dHVyZU1hcHBlckxheWVyKCkKICAgICAgICAgOiBt
X3BhcmVudCgwKQogICAgICAgICAsIG1fZWZmZWN0VGFyZ2V0KDApCisgICAgICAgICwgbV9iYWNr
aW5nU3RvcmUoMCkKICAgICAgICAgLCBtX2NvbnRlbnRzTGF5ZXIoMCkKICAgICAgICAgLCBtX2N1
cnJlbnRPcGFjaXR5KDEpCiAgICAgICAgICwgbV9jZW50ZXJaKDApCkBAIC05NSwxMCArOTgsNiBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHBhaW50KCk7CiAKLSAgICB2b2lkIHNldEJhY2tpbmdTdG9y
ZShQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSkgeyBt
X2JhY2tpbmdTdG9yZSA9IGJhY2tpbmdTdG9yZTsgfQotICAgIFBhc3NSZWZQdHI8VGV4dHVyZU1h
cHBlckJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKCkgeyByZXR1cm4gbV9iYWNraW5nU3RvcmU7
IH0KLSAgICB2b2lkIGNsZWFyQmFja2luZ1N0b3Jlc1JlY3Vyc2l2ZSgpOwotCiAgICAgdm9pZCBz
ZXRTY3JvbGxQb3NpdGlvbkRlbHRhSWZOZWVkZWQoY29uc3QgRmxvYXRTaXplJik7CiAKICAgICB2
b2lkIGFwcGx5QW5pbWF0aW9uc1JlY3Vyc2l2ZWx5KCk7CkBAIC0xNTIsNyArMTUxLDcgQEAgcHJp
dmF0ZToKICAgICBWZWN0b3I8VGV4dHVyZU1hcHBlckxheWVyKj4gbV9jaGlsZHJlbjsKICAgICBU
ZXh0dXJlTWFwcGVyTGF5ZXIqIG1fcGFyZW50OwogICAgIFRleHR1cmVNYXBwZXJMYXllciogbV9l
ZmZlY3RUYXJnZXQ7Ci0gICAgUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+IG1fYmFj
a2luZ1N0b3JlOworICAgIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUqIG1fYmFja2luZ1N0b3Jl
OwogICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKiBtX2NvbnRlbnRzTGF5ZXI7CiAgICAg
R3JhcGhpY3NMYXllclRyYW5zZm9ybSBtX2N1cnJlbnRUcmFuc2Zvcm07CiAgICAgZmxvYXQgbV9j
dXJyZW50T3BhY2l0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAppbmRleCA0
NWNjODEzNTk3NmEzYWQ0MmNjNTgxODRlZWYxZWE0ZjRmYWMwY2U5Li5lNzA5YzI3MDI1NWM4Nzdm
MGI1ZDViMTVkN2VkNDhiMzQ4ZDdkMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuY3BwCkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6ZGVsZXRl
TGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQpCiAgICAgT3duUHRyPEdyYXBoaWNzTGF5
ZXI+IGxheWVyID0gbV9sYXllcnMudGFrZShsYXllcklEKTsKICAgICBBU1NFUlQobGF5ZXIpOwog
Ci0gICAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMucmVtb3ZlKHRvVGV4dHVyZU1hcHBlckxh
eWVyKGxheWVyLmdldCgpKSk7CisgICAgbV9iYWNraW5nU3RvcmVzLnJlbW92ZShsYXllci5nZXQo
KSk7CiAgICAgbV9maXhlZExheWVycy5yZW1vdmUobGF5ZXJJRCk7CiAjaWYgVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCiAgICAgbV9zdXJmYWNlQmFja2luZ1N0b3Jlcy5yZW1vdmUobGF5ZXJJRCk7CkBA
IC0zOTUsMTIgKzM5NSw5IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNldFJvb3RMYXllcklE
KENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklEKQogCiBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSog
TGF5ZXJUcmVlUmVuZGVyZXI6OmdldEJhY2tpbmdTdG9yZShHcmFwaGljc0xheWVyKiBncmFwaGlj
c0xheWVyKQogewotICAgIFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIgPSB0b1RleHR1cmVNYXBw
ZXJMYXllcihncmFwaGljc0xheWVyKTsKLSAgICBBU1NFUlQobGF5ZXIpOwotICAgIENvb3JkaW5h
dGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBzdGF0aWNfY2FzdDxDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZSo+KGxheWVyLT5iYWNraW5nU3RvcmUoKS5nZXQoKSk7Ci0KLSAgICBCYWNraW5n
U3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuZmluZChs
YXllcik7Ci0gICAgaWYgKGl0ICE9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmVuZCgpKQor
ICAgIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSAwOworICAgIEJhY2tp
bmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2JhY2tpbmdTdG9yZXMuZmluZChncmFwaGljc0xh
eWVyKTsKKyAgICBpZiAoaXQgIT0gbV9iYWNraW5nU3RvcmVzLmVuZCgpKQogICAgICAgICBiYWNr
aW5nU3RvcmUgPSBpdC0+dmFsdWUuZ2V0KCk7CiAgICAgcmV0dXJuIGJhY2tpbmdTdG9yZTsKIH0K
QEAgLTQxNyw1MCArNDE0LDIyIEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnByZXBhcmVDb250
ZW50QmFja2luZ1N0b3JlKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCiAKIHZvaWQgTGF5
ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKEdyYXBoaWNzTGF5ZXIq
IGdyYXBoaWNzTGF5ZXIpCiB7Ci0gICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9IHRvVGV4
dHVyZU1hcHBlckxheWVyKGdyYXBoaWNzTGF5ZXIpOwotICAgIEFTU0VSVChsYXllcik7Ci0KLSAg
ICAvLyBNYWtlIHN1cmUgdGhlIGxheWVyIGRvZXMgbm90IGFscmVhZHkgaGF2ZSBhIGJhY2tpbmcg
c3RvcmUgKGNvbW1pdHRlZCBvciBwZW5kaW5nKS4KLSAgICBCYWNraW5nU3RvcmVNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuZmluZChsYXllcik7Ci0gICAgaWYg
KGl0ICE9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmVuZCgpKSB7Ci0gICAgICAgIGlmICgh
aXQtPnZhbHVlKSB7Ci0gICAgICAgICAgICAvLyBUaGVyZSBpcyBhIHBlbmRpbmcgcmVtb3ZhbCwg
Y2FuY2VsIGl0LgotICAgICAgICAgICAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMucmVtb3Zl
KGl0KTsKLSAgICAgICAgfQotICAgICAgICAvLyBUaGVyZSBpcyBhbHJlYWR5IGEgcGVuZGluZyBh
ZGRpdGlvbi4KKyAgICBpZiAoZ2V0QmFja2luZ1N0b3JlKGdyYXBoaWNzTGF5ZXIpKQogICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGlmIChsYXllci0+YmFja2luZ1N0b3JlKCkpCi0gICAgICAg
IHJldHVybjsgLy8gVGhlIGxheWVyIGFscmVhZHkgaGFzIGEgYmFja2luZyBzdG9yZSAoYW5kIG5v
IHBlbmRpbmcgcmVtb3ZhbCkuCiAKICAgICBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+
IGJhY2tpbmdTdG9yZShDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkpOwotCiAgICAg
YmFja2luZ1N0b3JlLT5zZXRTaXplKGdyYXBoaWNzTGF5ZXItPnNpemUoKSk7Ci0gICAgQVNTRVJU
KCFtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5jb250YWlucyhsYXllcikpOwotICAgIG1fcGVu
ZGluZ1N5bmNCYWNraW5nU3RvcmVzLmFkZChsYXllciwgYmFja2luZ1N0b3JlKTsKKyAgICBtX2Jh
Y2tpbmdTdG9yZXMuYWRkKGdyYXBoaWNzTGF5ZXIsIGJhY2tpbmdTdG9yZSk7CisgICAgdG9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcihncmFwaGljc0xheWVyKS0+c2V0QmFja2luZ1N0b3JlKGJh
Y2tpbmdTdG9yZSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZUJhY2tpbmdT
dG9yZUlmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCiB7Ci0gICAgVGV4dHVy
ZU1hcHBlckxheWVyKiBsYXllciA9IHRvVGV4dHVyZU1hcHBlckxheWVyKGdyYXBoaWNzTGF5ZXIp
OwotICAgIEFTU0VSVChsYXllcik7Ci0KLSAgICAvLyBDaGVjayBpZiB0aGUgbGF5b3V0IGFscmVh
ZHkgaGFzIGEgYmFja2luZyBzdG9yZSAoY29tbWl0dGVkIG9yIHBlbmRpbmcpLgotICAgIEJhY2tp
bmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5maW5k
KGxheWVyKTsKLSAgICBpZiAoaXQgIT0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuZW5kKCkp
IHsKLSAgICAgICAgaWYgKGl0LT52YWx1ZSkgewotICAgICAgICAgICAgLy8gVGhlcmUgaXMgYSBw
ZW5kaW5nIGFkZGl0aW9uLCBjYW5jZWwgaXQuCi0gICAgICAgICAgICBtX3BlbmRpbmdTeW5jQmFj
a2luZ1N0b3Jlcy5yZW1vdmUoaXQpOwotICAgICAgICB9Ci0gICAgICAgIC8vIFRoZXJlIGlzIGFs
cmVhZHkgYSBwZW5kaW5nIHJlbW92YWwuCisgICAgaWYgKCFnZXRCYWNraW5nU3RvcmUoZ3JhcGhp
Y3NMYXllcikpCiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWxheWVyLT5iYWNr
aW5nU3RvcmUoKSkKLSAgICAgICAgcmV0dXJuOyAvLyBUaGUgbGF5ZXIgaGFzIG5vIGJhY2tpbmcg
c3RvcmUgKGFuZCBubyBwZW5kaW5nIGFkZGl0aW9uKS4KIAotICAgIEFTU0VSVCghbV9wZW5kaW5n
U3luY0JhY2tpbmdTdG9yZXMuY29udGFpbnMobGF5ZXIpKTsKLSAgICBtX3BlbmRpbmdTeW5jQmFj
a2luZ1N0b3Jlcy5hZGQobGF5ZXIsIDApOworICAgIG1fcmVsZWFzZWRDb29yZGluYXRlZEJhY2tp
bmdTdG9yZXMuYXBwZW5kKG1fYmFja2luZ1N0b3Jlcy50YWtlKGdyYXBoaWNzTGF5ZXIpKTsKKyAg
ICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXIpLT5zZXRCYWNraW5n
U3RvcmUoMCk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlc2V0QmFja2luZ1N0b3Jl
U2l6ZVRvTGF5ZXJTaXplKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCkBAIC01MzgsOCAr
NTA3LDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlSW1hZ2VCYWNraW5nKENvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKIHsKICAgICBBU1NFUlQobV9pbWFnZUJhY2tp
bmdzLmNvbnRhaW5zKGltYWdlSUQpKTsKIAotICAgIC8vIFdlIGRvbid0IHdhbnQgVGV4dHVyZU1h
cHBlckxheWVyIHJlZmVycyBhIGRhbmdsaW5nIHBvaW50ZXIuCi0gICAgbV9yZWxlYXNlZEltYWdl
QmFja2luZ3MuYXBwZW5kKG1faW1hZ2VCYWNraW5ncy50YWtlKGltYWdlSUQpKTsKKyAgICBtX3Jl
bGVhc2VkQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVzLmFwcGVuZChtX2ltYWdlQmFja2luZ3MudGFr
ZShpbWFnZUlEKSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmFzc2lnbkltYWdlQmFj
a2luZ1RvTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIsIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
SUQgaW1hZ2VJRCkKQEAgLTU1Myw5ICs1MjEsOSBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjph
c3NpZ25JbWFnZUJhY2tpbmdUb0xheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBDb29yZGluYQog
ICAgIGxheWVyLT5zZXRDb250ZW50c1RvTWVkaWEoaXQtPnZhbHVlLmdldCgpKTsKIH0KIAotdm9p
ZCBMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlUmVsZWFzZWRJbWFnZUJhY2tpbmdzSWZOZWVkZWQo
KQordm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlUmVsZWFzZWRDb29yZGluYXRlZEJhY2tp
bmdTdG9yZXNJZk5lZWRlZCgpCiB7Ci0gICAgbV9yZWxlYXNlZEltYWdlQmFja2luZ3MuY2xlYXIo
KTsKKyAgICBtX3JlbGVhc2VkQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVzLmNsZWFyKCk7CiB9CiAK
IHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNvbW1pdFBlbmRpbmdCYWNraW5nU3RvcmVPcGVyYXRp
b25zKCkKQEAgLTU2NSwxNSArNTMzLDYgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6Y29tbWl0
UGVuZGluZ0JhY2tpbmdTdG9yZU9wZXJhdGlvbnMoKQogICAgICAgICAoKml0KS0+Y29tbWl0VGls
ZU9wZXJhdGlvbnMobV90ZXh0dXJlTWFwcGVyLmdldCgpKTsKIAogICAgIG1fYmFja2luZ1N0b3Jl
c1dpdGhQZW5kaW5nQnVmZmVycy5jbGVhcigpOwotCi0gICAgewotICAgICAgICBCYWNraW5nU3Rv
cmVNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmVuZCgpOwot
ICAgICAgICBCYWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nU3luY0JhY2tp
bmdTdG9yZXMuYmVnaW4oKTsKLSAgICAgICAgZm9yICg7aXQgIT0gZW5kOyArK2l0KQotICAgICAg
ICAgICAgaXQtPmtleS0+c2V0QmFja2luZ1N0b3JlKGl0LT52YWx1ZSk7Ci0KLSAgICAgICAgbV9w
ZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuY2xlYXIoKTsKLSAgICB9CiB9CiAKIHZvaWQgTGF5ZXJU
cmVlUmVuZGVyZXI6OmZsdXNoTGF5ZXJDaGFuZ2VzKCkKQEAgLTU4NSw3ICs1NDQsNyBAQCB2b2lk
IExheWVyVHJlZVJlbmRlcmVyOjpmbHVzaExheWVyQ2hhbmdlcygpCiAKICAgICBtX3Jvb3RMYXll
ci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlKEZsb2F0UmVjdCgpKTsKICAgICBjb21taXRQZW5kaW5n
QmFja2luZ1N0b3JlT3BlcmF0aW9ucygpOwotICAgIHJlbW92ZVJlbGVhc2VkSW1hZ2VCYWNraW5n
c0lmTmVlZGVkKCk7CisgICAgcmVtb3ZlUmVsZWFzZWRDb29yZGluYXRlZEJhY2tpbmdTdG9yZXNJ
Zk5lZWRlZCgpOwogCiAgICAgLy8gVGhlIHBlbmRpbmcgdGlsZXMgc3RhdGUgaXMgb24gaXRzIHdh
eSBmb3IgdGhlIHNjcmVlbiwgdGVsbCB0aGUgd2ViIHByb2Nlc3MgdG8gcmVuZGVyIHRoZSBuZXh0
IG9uZS4KICAgICBkaXNwYXRjaE9uTWFpblRocmVhZChiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6
cmVuZGVyTmV4dEZyYW1lLCB0aGlzKSk7CkBAIC02MzMsMTEgKzU5Miw2IEBAIHZvaWQgTGF5ZXJU
cmVlUmVuZGVyZXI6OnN5bmNSZW1vdGVDb250ZW50KCkKIAogdm9pZCBMYXllclRyZWVSZW5kZXJl
cjo6cHVyZ2VHTFJlc291cmNlcygpCiB7Ci0gICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9
IHRvVGV4dHVyZU1hcHBlckxheWVyKHJvb3RMYXllcigpKTsKLQotICAgIGlmIChsYXllcikKLSAg
ICAgICAgbGF5ZXItPmNsZWFyQmFja2luZ1N0b3Jlc1JlY3Vyc2l2ZSgpOwotCiAgICAgbV9pbWFn
ZUJhY2tpbmdzLmNsZWFyKCk7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgbV9zdXJm
YWNlQmFja2luZ1N0b3Jlcy5jbGVhcigpOwpAQCAtNjQ4LDcgKzYwMiw3IEBAIHZvaWQgTGF5ZXJU
cmVlUmVuZGVyZXI6OnB1cmdlR0xSZXNvdXJjZXMoKQogICAgIG1fbGF5ZXJzLmNsZWFyKCk7CiAg
ICAgbV9maXhlZExheWVycy5jbGVhcigpOwogICAgIG1fdGV4dHVyZU1hcHBlci5jbGVhcigpOwot
ICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmNsZWFyKCk7CisgICAgbV9iYWNraW5nU3Rv
cmVzLmNsZWFyKCk7CiAgICAgbV9iYWNraW5nU3RvcmVzV2l0aFBlbmRpbmdCdWZmZXJzLmNsZWFy
KCk7CiAKICAgICBzZXRBY3RpdmUoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVy
LmgKaW5kZXggNmI2MmVmNTAyZGU5N2I0YzMwMDk5YmM4YzA0NmMwM2RhNmFmOGZiNi4uZTQyNjlh
NDNjODgzMGU1N2M2ZTNjMGRlOGYwNjBkMDc1YWU5ODFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVSZW5kZXJlci5oCkBAIC0xNDUsOSArMTQ1LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHB1cmdl
QmFja2luZ1N0b3JlcygpOwogCiAgICAgdm9pZCBhc3NpZ25JbWFnZUJhY2tpbmdUb0xheWVyKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsKLSAgICB2
b2lkIHJlbW92ZVJlbGVhc2VkSW1hZ2VCYWNraW5nc0lmTmVlZGVkKCk7CiAgICAgdm9pZCBlbnN1
cmVSb290TGF5ZXIoKTsKICAgICB2b2lkIGNvbW1pdFBlbmRpbmdCYWNraW5nU3RvcmVPcGVyYXRp
b25zKCk7CisgICAgdm9pZCByZW1vdmVSZWxlYXNlZENvb3JkaW5hdGVkQmFja2luZ1N0b3Jlc0lm
TmVlZGVkKCk7CiAKICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSogZ2V0QmFja2luZ1N0b3Jl
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKICAgICB2b2lkIHByZXBhcmVDb250ZW50QmFja2lu
Z1N0b3JlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKQEAgLTE2NiwxMSArMTY2LDEyIEBAIHBy
aXZhdGU6CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwg
UmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiA+IEltYWdlQmFja2luZ01hcDsKICAgICBJ
bWFnZUJhY2tpbmdNYXAgbV9pbWFnZUJhY2tpbmdzOwotICAgIFZlY3RvcjxSZWZQdHI8Q29vcmRp
bmF0ZWRCYWNraW5nU3RvcmU+ID4gbV9yZWxlYXNlZEltYWdlQmFja2luZ3M7CiAKLSAgICB0eXBl
ZGVmIEhhc2hNYXA8V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgUmVmUHRyPENvb3JkaW5h
dGVkQmFja2luZ1N0b3JlPiA+IEJhY2tpbmdTdG9yZU1hcDsKLSAgICBCYWNraW5nU3RvcmVNYXAg
bV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXM7CisgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXIqLCBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+ID4gQmFja2lu
Z1N0b3JlTWFwOworICAgIEJhY2tpbmdTdG9yZU1hcCBtX2JhY2tpbmdTdG9yZXM7CiAKKyAgICAv
LyBXZSBkb24ndCB3YW50IFRleHR1cmVNYXBwZXJMYXllciByZWZlcnMgYSBkYW5nbGluZyBwb2lu
dGVyLgorICAgIFZlY3RvcjxSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+ID4gbV9yZWxl
YXNlZENvb3JkaW5hdGVkQmFja2luZ1N0b3JlczsKICAgICBIYXNoU2V0PFJlZlB0cjxDb29yZGlu
YXRlZEJhY2tpbmdTdG9yZT4gPiBtX2JhY2tpbmdTdG9yZXNXaXRoUGVuZGluZ0J1ZmZlcnM7CiAK
ICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184659</attachid>
            <date>2013-01-24 21:45:17 -0800</date>
            <delta_ts>2013-01-25 02:02:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107099-20130125144158.patch</filename>
            <type>text/plain</type>
            <size>18688</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI0MTU0Y2MwNWMzZGYx
YzY4MzM2NzU0YjkwMDhlNmQ5MGVmOTMyMi4uNmNmYzRmMTEyYzEwZGFlODk1NjNmZjk0MDYwNjgw
YjM0NTI2ODZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEzLTAxLTE3ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZW1vdmUgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMgaW4gTGF5ZXJU
cmVlUmVuZGVyZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDcwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEJhY2tpbmdTdG9yZSgpIHNv
IHRoYXQKKyAgICAgICAgTGF5ZXJUcmVlUmVuZGVyZXIgc2V0cyBhIGJhY2tpbmcgc3RvcmUgdG8g
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCisKKyAgICAgICAgUmVtb3ZlIFRleHR1cmVNYXBw
ZXJMYXllcjo6Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCkgYmVjYXVzZQorICAgICAgICBU
ZXh0dXJlTWFwcGVyTGF5ZXIgZG9lcyBub3QgbWFuYWdlIHRoZSBsaWZlIGN5Y2xlIG9mIGEgYmFj
a2luZyBzdG9yZS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGNvbXBvc2l0aW5nIHRl
c3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaDoKKyAgICAg
ICAgKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5o
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpUZXh0dXJlTWFwcGVyTGF5
ZXIpOgorICAgICAgICAoVGV4dHVyZU1hcHBlckxheWVyKToKKwogMjAxMy0wMS0yNCAgSHVhbmcg
RG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbVGV4bWFwXSBS
ZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IDU5YmNiZTYyMTI4OTFiMDM5ODcxMTBkYmE5MzdjOWYwODAwZDI3OTcuLjAz
N2MyZTY0NmVlNzQzOWY3YThkYTI5NjdiYmM2MTlhYTc3NjgxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxMy0wMS0xNyAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogUmVtb3ZlIG1fcGVuZGlu
Z1N5bmNCYWNraW5nU3RvcmVzIGluIExheWVyVHJlZVJlbmRlcmVyLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MDk5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGF5ZXJUcmVlUmVuZGVyZXIgZGlmZmlj
dWx0bHkgdXNlcyBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3JlcyB0byBzZXQgYSBiYWNraW5nCisg
ICAgICAgIHN0b3JlIHRvIFRleHR1cmVNYXBwZXJMYXllciwgYWx0aG91Z2ggTGF5ZXJUcmVlUmVu
ZGVyZXIgZWFzaWx5IHNldHMgYSBkaXJlY3QKKyAgICAgICAgY29tcG9zaXRlZCBpbWFnZSB0byBU
ZXh0dXJlTWFwcGVyTGF5ZXIuIEl0IGlzIGJlY2F1c2UgTGF5ZXJUcmVlUmVuZGVyZXIgZGlyZWN0
bHkKKyAgICAgICAgc2V0IGEgYmFja2luZyBzdG9yZSB0byBUZXh0dXJlTWFwcGVyTGF5ZXIsIGlu
c3RlYWQgb2YgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBtYWtlcyBMYXllclRyZWVSZW5kZXJlciBzZXQgYSBiYWNraW5nIHN0b3JlIHRvIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyCisgICAgICAgIGFuZCB0aGVuIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyIHdpbGwgc2V0IGEgYmFja2luZyBzdG9yZSB0byBUZXh0dXJlTWFwcGVyTGF5ZXIKKyAg
ICAgICAgbGlrZSBvdGhlciBtZW1iZXJzLgorCisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXll
clRyZWVSZW5kZXJlcjo6ZGVsZXRlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVS
ZW5kZXJlcjo6Z2V0QmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVu
ZGVyZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZUltYWdlQmFja2luZyk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVSZWxlYXNlZENvb3JkaW5hdGVkQmFja2lu
Z1N0b3Jlc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmNv
bW1pdFBlbmRpbmdCYWNraW5nU3RvcmVPcGVyYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlUmVuZGVyZXI6OmZsdXNoTGF5ZXJDaGFuZ2VzKToKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlUmVuZGVyZXI6OnB1cmdlR0xSZXNvdXJjZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmg6CisKIDIwMTMtMDEtMjQgIEh1
YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgQ29vcmRp
bmF0ZWQgR3JhcGhpY3M6IFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5k
IHJlcGFpbnQgY291bnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNw
cAppbmRleCA1ZTBlNDU0N2JmYjliYjI2NzIwZmI0YmI4MWQxMGM4OWY2NGZiZWFhLi41M2IwYWU5
ODdjM2Y2NjA4ZDBiNmI0MDIwZWI5NmFlYTNmNDNjNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTQwMywxMyArNDAzLDMwIEBAIHZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3cpCiB2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JU
aGlzTGF5ZXJPbmx5KCkKIHsKICAgICBpZiAobV9oYXNPd25CYWNraW5nU3RvcmUpCi0gICAgICAg
IHVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCk7CisgICAgICAgIHByZXBhcmVCYWNr
aW5nU3RvcmUoKTsKICAgICBtX2xheWVyLT5mbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5
ZXJPbmx5KHRoaXMpOworICAgIC8vIHVwZGF0ZUJhY2tpbmdTdG9yZSgpIG11c3QgYmUgcGVyZm9y
bWVkIGFmdGVyIFRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhp
c0xheWVyT25seSgpIGJlY2F1c2UgdXBkYXRlQmFja2luZ1N0b3JlKCkgbmVlZHMgdG8gZ2V0IFRl
eHR1cmVNYXBwZXIgZnJvbSBUZXh0dXJlTWFwcGVyTGF5ZXIuCiAgICAgaWYgKG1faGFzT3duQmFj
a2luZ1N0b3JlKQogICAgICAgICB1cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICBkaWRGbHVzaENv
bXBvc2l0aW5nU3RhdGUoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
cHJlcGFyZUJhY2tpbmdTdG9yZSgpCit7CisgICAgQVNTRVJUKG1faGFzT3duQmFja2luZ1N0b3Jl
KTsKKyAgICBpZiAoIXNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSkgeworICAgICAgICBtX2JhY2tp
bmdTdG9yZS5jbGVhcigpOworICAgICAgICBtX2NoYW5nZU1hc2sgfD0gVGV4dHVyZU1hcHBlckxh
eWVyOjpCYWNraW5nU3RvcmVDaGFuZ2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFtX2Jh
Y2tpbmdTdG9yZSkgeworICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBUZXh0dXJlTWFwcGVy
VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9jaGFuZ2VNYXNrIHw9
IFRleHR1cmVNYXBwZXJMYXllcjo6QmFja2luZ1N0b3JlQ2hhbmdlOworICAgICAgICB9CisgICAg
fQorCisgICAgdXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQoKTsKK30KKwogdm9pZCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291
bnQoKQogewogICAgIEFTU0VSVChtX2hhc093bkJhY2tpbmdTdG9yZSk7CkBAIC00NTcsMjAgKzQ3
NCwxNSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkaWRGbHVzaENvbXBvc2l0
aW5nU3RhdGUoKQogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlQmFja2lu
Z1N0b3JlKCkKIHsKICAgICBBU1NFUlQobV9oYXNPd25CYWNraW5nU3RvcmUpOwotICAgIHByZXBh
cmVCYWNraW5nU3RvcmUoKTsKLSAgICBtX2xheWVyLT5zZXRCYWNraW5nU3RvcmUobV9iYWNraW5n
U3RvcmUpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFj
a2luZ1N0b3JlKCkKLXsKICAgICBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyID0gbV9sYXll
ci0+dGV4dHVyZU1hcHBlcigpOwogICAgIGlmICghdGV4dHVyZU1hcHBlcikKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkpIHsKLSAgICAgICAgbV9i
YWNraW5nU3RvcmUuY2xlYXIoKTsKKyAgICAgICAgQVNTRVJUKCFtX2JhY2tpbmdTdG9yZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CisgICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKIAogICAg
IEludFJlY3QgZGlydHlSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QoRmxvYXRQb2lu
dDo6emVybygpLCBtX3NpemUpKTsKICAgICBpZiAoIW1fbmVlZHNEaXNwbGF5KQpAQCAtNDc4LDkg
KzQ5MCw2IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5n
U3RvcmUoKQogICAgIGlmIChkaXJ0eVJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQotICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IFRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCk7Ci0KICNpZiBQTEFURk9STShRVCkK
ICAgICBBU1NFUlQoZHluYW1pY19jYXN0PFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSo+
KG1fYmFja2luZ1N0b3JlLmdldCgpKSk7CiAjZW5kaWYKQEAgLTU0Niw2ICs1NTUsMTYgQEAgYm9v
bCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVy
YXRpb25zJiBmaWx0ZXJzKQogfQogI2VuZGlmCiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnNldEJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmU+IGJhY2tpbmdTdG9yZSkKK3sKKyAgICBBU1NFUlQoIW1faGFzT3duQmFja2luZ1N0b3JlKTsK
KyAgICBpZiAobV9iYWNraW5nU3RvcmUgPT0gYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2JhY2tpbmdTdG9yZSA9IGJhY2tpbmdTdG9yZTsKKyAgICBub3RpZnlDaGFuZ2Uo
VGV4dHVyZU1hcHBlckxheWVyOjpCYWNraW5nU3RvcmVDaGFuZ2UpOworfQorCiB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRSZXBhaW50Q291bnQoaW50IHJlcGFpbnRDb3VudCkK
IHsKICAgICBtX3JlcGFpbnRDb3VudCA9IHJlcGFpbnRDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggYWZjNTFhNjJjMTU2NmZmMTQ0NWUxNDcyNTE0YWYy
NmFlZDZiZWY4Yy4uNWUwODE2ZTVkNjMyMWNjYTc5YzJiMjQ3OGU5Nzc3ZWY5MWE0ZmNhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAgLTg5LDYgKzg5LDcgQEAg
cHVibGljOgogCiAgICAgLy8gRklYTUU6IEl0IHdpbGwgYmUgcmVtb3ZlZCBhZnRlciByZW1vdmlu
ZyBkZXBlbmRlbmN5IG9mIExheWVyVHJlZVJlbmRlcmVyIG9uIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLgogICAgIHZvaWQgc2V0SGFzT3duQmFja2luZ1N0b3JlKGJvb2wgYikgeyBtX2hhc093
bkJhY2tpbmdTdG9yZSA9IGI7IH0KKyAgICB2b2lkIHNldEJhY2tpbmdTdG9yZShQYXNzUmVmUHRy
PFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+KTsKIAogICAgIHZvaWQgc2V0Rml4ZWRUb1ZpZXdw
b3J0KGJvb2wgZml4ZWQpIHsgbV9maXhlZFRvVmlld3BvcnQgPSBmaXhlZDsgfQogICAgIGJvb2wg
Zml4ZWRUb1ZpZXdwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9maXhlZFRvVmlld3BvcnQ7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggOGU4MGIxOTQyMzU5ZmJjOGNhNjBkODEzZmI5
NzMxNmYzMzkxNTY0Mi4uNmIzYWE2MjRhNGI2OGM3ZDViMmFkNGI2NWU1ZGM3OTc4MjBmYWI4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTU0LDE2ICs1NCw2IEBAIGNvbnN0IFRl
eHR1cmVNYXBwZXJMYXllciogVGV4dHVyZU1hcHBlckxheWVyOjpyb290TGF5ZXIoKSBjb25zdAog
ICAgIHJldHVybiB0aGlzOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Y2xlYXJCYWNr
aW5nU3RvcmVzUmVjdXJzaXZlKCkKLXsKLSAgICBtX2JhY2tpbmdTdG9yZS5jbGVhcigpOwotICAg
IG1fY29udGVudHNMYXllciA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NoaWxk
cmVuLnNpemUoKTsgKytpKQotICAgICAgICBtX2NoaWxkcmVuW2ldLT5jbGVhckJhY2tpbmdTdG9y
ZXNSZWN1cnNpdmUoKTsKLSAgICBpZiAobV9zdGF0ZS5tYXNrTGF5ZXIpCi0gICAgICAgIG1fc3Rh
dGUubWFza0xheWVyLT5jbGVhckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUoKTsKLX0KLQogdm9pZCBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1zUmVjdXJzaXZlKCkKIHsKICAgICBp
ZiAobV9zdGF0ZS5zaXplLmlzRW1wdHkoKSAmJiBtX3N0YXRlLm1hc2tzVG9Cb3VuZHMpCkBAIC00
MDgsNiArMzk4LDkgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdT
dGF0ZUZvclRoaXNMYXllck9ubHkoR3JhcGhpY3NMYXllclRleHQKICAgICBpZiAoY2hhbmdlTWFz
ayAmIEFuaW1hdGlvbkNoYW5nZSkKICAgICAgICAgbV9hbmltYXRpb25zID0gZ3JhcGhpY3NMYXll
ci0+bV9hbmltYXRpb25zOwogCisgICAgaWYgKGNoYW5nZU1hc2sgJiBCYWNraW5nU3RvcmVDaGFu
Z2UpCisgICAgICAgIG1fYmFja2luZ1N0b3JlID0gZ3JhcGhpY3NMYXllci0+bV9iYWNraW5nU3Rv
cmUuZ2V0KCk7CisKICAgICBpZiAoY2hhbmdlTWFzayAmIFJlcGFpbnRDb3VudENoYW5nZSkKICAg
ICAgICAgbV9zdGF0ZS5yZXBhaW50Q291bnQgPSBncmFwaGljc0xheWVyLT5yZXBhaW50Q291bnQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCmluZGV4IDU3NWJiMjdlYjdhODc0YzE4NGI1ODFl
ZDJiZDQzNWQxMDE1YTgzYjEuLmQwNTYwMGM1YTIxMWMyZTAxNzY3NTlmZTViMDFlYzYwYjc2Yzk0
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKQEAgLTc0LDEyICs3NCwxNSBAQCBwdWJsaWM6
CiAgICAgICAgIEZpbHRlckNoYW5nZSA9ICAgICAgICAgICAgICAoMUwgPDwgMjMpLAogCiAgICAg
ICAgIERlYnVnVmlzdWFsc0NoYW5nZSA9ICAgICAgICAoMUwgPDwgMjQpLAotICAgICAgICBSZXBh
aW50Q291bnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KQorICAgICAgICBSZXBhaW50Q291bnRD
aGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KSwKKworICAgICAgICBCYWNraW5nU3RvcmVDaGFuZ2Ug
PSAgICAgICAgKDFMIDw8IDI2KQogICAgIH07CiAKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIoKQog
ICAgICAgICA6IG1fcGFyZW50KDApCiAgICAgICAgICwgbV9lZmZlY3RUYXJnZXQoMCkKKyAgICAg
ICAgLCBtX2JhY2tpbmdTdG9yZSgwKQogICAgICAgICAsIG1fY29udGVudHNMYXllcigwKQogICAg
ICAgICAsIG1fY3VycmVudE9wYWNpdHkoMSkKICAgICAgICAgLCBtX2NlbnRlclooMCkKQEAgLTk1
LDEwICs5OCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcGFpbnQoKTsKIAotICAgIHZvaWQgc2V0
QmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gYmFja2lu
Z1N0b3JlKSB7IG1fYmFja2luZ1N0b3JlID0gYmFja2luZ1N0b3JlOyB9Ci0gICAgUGFzc1JlZlB0
cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUoKSB7IHJldHVybiBtX2Jh
Y2tpbmdTdG9yZTsgfQotICAgIHZvaWQgY2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCk7Ci0K
ICAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uRGVsdGFJZk5lZWRlZChjb25zdCBGbG9hdFNpemUm
KTsKIAogICAgIHZvaWQgYXBwbHlBbmltYXRpb25zUmVjdXJzaXZlbHkoKTsKQEAgLTE1Miw3ICsx
NTEsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqPiBtX2NoaWxk
cmVuOwogICAgIFRleHR1cmVNYXBwZXJMYXllciogbV9wYXJlbnQ7CiAgICAgVGV4dHVyZU1hcHBl
ckxheWVyKiBtX2VmZmVjdFRhcmdldDsKLSAgICBSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZT4gbV9iYWNraW5nU3RvcmU7CisgICAgVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSogbV9i
YWNraW5nU3RvcmU7CiAgICAgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIqIG1fY29udGVudHNM
YXllcjsKICAgICBHcmFwaGljc0xheWVyVHJhbnNmb3JtIG1fY3VycmVudFRyYW5zZm9ybTsKICAg
ICBmbG9hdCBtX2N1cnJlbnRPcGFjaXR5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIu
Y3BwCmluZGV4IDgwNWE4NzM2ZTk0MmJjZjNlNDNlYjQ5MzY1NWUwZWUwMzM5M2E4ZGQuLjg1NjIw
M2MxMWM0YTZiOWI2MjVmMzVmNDRkZDIyNDdiNjM4OWRhZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVSZW5kZXJlci5jcHAKQEAgLTM4Niw3ICszODYsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRl
cmVyOjpkZWxldGVMYXllcihDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCkKICAgICBPd25QdHI8
R3JhcGhpY3NMYXllcj4gbGF5ZXIgPSBtX2xheWVycy50YWtlKGxheWVySUQpOwogICAgIEFTU0VS
VChsYXllcik7CiAKLSAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5yZW1vdmUodG9UZXh0
dXJlTWFwcGVyTGF5ZXIobGF5ZXIuZ2V0KCkpKTsKKyAgICBtX2JhY2tpbmdTdG9yZXMucmVtb3Zl
KGxheWVyLmdldCgpKTsKICAgICBtX2ZpeGVkTGF5ZXJzLnJlbW92ZShsYXllcklEKTsKICNpZiBV
U0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBtX3N1cmZhY2VCYWNraW5nU3RvcmVzLnJlbW92ZShs
YXllcklEKTsKQEAgLTQwNywxMiArNDA3LDkgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0
Um9vdExheWVySUQoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQpCiAKIENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlKiBMYXllclRyZWVSZW5kZXJlcjo6Z2V0QmFja2luZ1N0b3JlKEdyYXBoaWNzTGF5
ZXIqIGdyYXBoaWNzTGF5ZXIpCiB7Ci0gICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9IHRv
VGV4dHVyZU1hcHBlckxheWVyKGdyYXBoaWNzTGF5ZXIpOwotICAgIEFTU0VSVChsYXllcik7Ci0g
ICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IHN0YXRpY19jYXN0PENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlKj4obGF5ZXItPmJhY2tpbmdTdG9yZSgpLmdldCgpKTsKLQot
ICAgIEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0
b3Jlcy5maW5kKGxheWVyKTsKLSAgICBpZiAoaXQgIT0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9y
ZXMuZW5kKCkpCisgICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IDA7
CisgICAgQmFja2luZ1N0b3JlTWFwOjppdGVyYXRvciBpdCA9IG1fYmFja2luZ1N0b3Jlcy5maW5k
KGdyYXBoaWNzTGF5ZXIpOworICAgIGlmIChpdCAhPSBtX2JhY2tpbmdTdG9yZXMuZW5kKCkpCiAg
ICAgICAgIGJhY2tpbmdTdG9yZSA9IGl0LT52YWx1ZS5nZXQoKTsKICAgICByZXR1cm4gYmFja2lu
Z1N0b3JlOwogfQpAQCAtNDI5LDUwICs0MjYsMjIgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6
cHJlcGFyZUNvbnRlbnRCYWNraW5nU3RvcmUoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikK
IAogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoR3Jh
cGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKIHsKLSAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxh
eWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllcik7Ci0gICAgQVNTRVJUKGxh
eWVyKTsKLQotICAgIC8vIE1ha2Ugc3VyZSB0aGUgbGF5ZXIgZG9lcyBub3QgYWxyZWFkeSBoYXZl
IGEgYmFja2luZyBzdG9yZSAoY29tbWl0dGVkIG9yIHBlbmRpbmcpLgotICAgIEJhY2tpbmdTdG9y
ZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5maW5kKGxheWVy
KTsKLSAgICBpZiAoaXQgIT0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuZW5kKCkpIHsKLSAg
ICAgICAgaWYgKCFpdC0+dmFsdWUpIHsKLSAgICAgICAgICAgIC8vIFRoZXJlIGlzIGEgcGVuZGlu
ZyByZW1vdmFsLCBjYW5jZWwgaXQuCi0gICAgICAgICAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0
b3Jlcy5yZW1vdmUoaXQpOwotICAgICAgICB9Ci0gICAgICAgIC8vIFRoZXJlIGlzIGFscmVhZHkg
YSBwZW5kaW5nIGFkZGl0aW9uLgorICAgIGlmIChnZXRCYWNraW5nU3RvcmUoZ3JhcGhpY3NMYXll
cikpCiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGxheWVyLT5iYWNraW5nU3RvcmUo
KSkKLSAgICAgICAgcmV0dXJuOyAvLyBUaGUgbGF5ZXIgYWxyZWFkeSBoYXMgYSBiYWNraW5nIHN0
b3JlIChhbmQgbm8gcGVuZGluZyByZW1vdmFsKS4KIAogICAgIFJlZlB0cjxDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpjcmVhdGUo
KSk7Ci0KICAgICBiYWNraW5nU3RvcmUtPnNldFNpemUoZ3JhcGhpY3NMYXllci0+c2l6ZSgpKTsK
LSAgICBBU1NFUlQoIW1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmNvbnRhaW5zKGxheWVyKSk7
Ci0gICAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuYWRkKGxheWVyLCBiYWNraW5nU3RvcmUp
OworICAgIG1fYmFja2luZ1N0b3Jlcy5hZGQoZ3JhcGhpY3NMYXllciwgYmFja2luZ1N0b3JlKTsK
KyAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXIpLT5zZXRCYWNr
aW5nU3RvcmUoYmFja2luZ1N0b3JlKTsKIH0KIAogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVt
b3ZlQmFja2luZ1N0b3JlSWZOZWVkZWQoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKIHsK
LSAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3Jh
cGhpY3NMYXllcik7Ci0gICAgQVNTRVJUKGxheWVyKTsKLQotICAgIC8vIENoZWNrIGlmIHRoZSBs
YXlvdXQgYWxyZWFkeSBoYXMgYSBiYWNraW5nIHN0b3JlIChjb21taXR0ZWQgb3IgcGVuZGluZyku
Ci0gICAgQmFja2luZ1N0b3JlTWFwOjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ1N5bmNCYWNraW5n
U3RvcmVzLmZpbmQobGF5ZXIpOwotICAgIGlmIChpdCAhPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0
b3Jlcy5lbmQoKSkgewotICAgICAgICBpZiAoaXQtPnZhbHVlKSB7Ci0gICAgICAgICAgICAvLyBU
aGVyZSBpcyBhIHBlbmRpbmcgYWRkaXRpb24sIGNhbmNlbCBpdC4KLSAgICAgICAgICAgIG1fcGVu
ZGluZ1N5bmNCYWNraW5nU3RvcmVzLnJlbW92ZShpdCk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8g
VGhlcmUgaXMgYWxyZWFkeSBhIHBlbmRpbmcgcmVtb3ZhbC4KKyAgICBpZiAoIWdldEJhY2tpbmdT
dG9yZShncmFwaGljc0xheWVyKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICgh
bGF5ZXItPmJhY2tpbmdTdG9yZSgpKQotICAgICAgICByZXR1cm47IC8vIFRoZSBsYXllciBoYXMg
bm8gYmFja2luZyBzdG9yZSAoYW5kIG5vIHBlbmRpbmcgYWRkaXRpb24pLgogCi0gICAgQVNTRVJU
KCFtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5jb250YWlucyhsYXllcikpOwotICAgIG1fcGVu
ZGluZ1N5bmNCYWNraW5nU3RvcmVzLmFkZChsYXllciwgMCk7CisgICAgbV9yZWxlYXNlZENvb3Jk
aW5hdGVkQmFja2luZ1N0b3Jlcy5hcHBlbmQobV9iYWNraW5nU3RvcmVzLnRha2UoZ3JhcGhpY3NM
YXllcikpOworICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoZ3JhcGhpY3NMYXllcikt
PnNldEJhY2tpbmdTdG9yZSgwKTsKIH0KIAogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVzZXRC
YWNraW5nU3RvcmVTaXplVG9MYXllclNpemUoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikK
QEAgLTU1MCw4ICs1MTksNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVJbWFnZUJh
Y2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEKQogewogICAgIEFTU0VSVCht
X2ltYWdlQmFja2luZ3MuY29udGFpbnMoaW1hZ2VJRCkpOwogCi0gICAgLy8gV2UgZG9uJ3Qgd2Fu
dCBUZXh0dXJlTWFwcGVyTGF5ZXIgcmVmZXJzIGEgZGFuZ2xpbmcgcG9pbnRlci4KLSAgICBtX3Jl
bGVhc2VkSW1hZ2VCYWNraW5ncy5hcHBlbmQobV9pbWFnZUJhY2tpbmdzLnRha2UoaW1hZ2VJRCkp
OworICAgIG1fcmVsZWFzZWRDb29yZGluYXRlZEJhY2tpbmdTdG9yZXMuYXBwZW5kKG1faW1hZ2VC
YWNraW5ncy50YWtlKGltYWdlSUQpKTsKIH0KIAogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6YXNz
aWduSW1hZ2VCYWNraW5nVG9MYXllcihHcmFwaGljc0xheWVyKiBsYXllciwgQ29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmdJRCBpbWFnZUlEKQpAQCAtNTY1LDkgKzUzMyw5IEBAIHZvaWQgTGF5ZXJUcmVl
UmVuZGVyZXI6OmFzc2lnbkltYWdlQmFja2luZ1RvTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIs
IENvb3JkaW5hCiAgICAgbGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYShpdC0+dmFsdWUuZ2V0KCkp
OwogfQogCi12b2lkIExheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVSZWxlYXNlZEltYWdlQmFja2lu
Z3NJZk5lZWRlZCgpCit2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVSZWxlYXNlZENvb3Jk
aW5hdGVkQmFja2luZ1N0b3Jlc0lmTmVlZGVkKCkKIHsKLSAgICBtX3JlbGVhc2VkSW1hZ2VCYWNr
aW5ncy5jbGVhcigpOworICAgIG1fcmVsZWFzZWRDb29yZGluYXRlZEJhY2tpbmdTdG9yZXMuY2xl
YXIoKTsKIH0KIAogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6Y29tbWl0UGVuZGluZ0JhY2tpbmdT
dG9yZU9wZXJhdGlvbnMoKQpAQCAtNTc3LDE1ICs1NDUsNiBAQCB2b2lkIExheWVyVHJlZVJlbmRl
cmVyOjpjb21taXRQZW5kaW5nQmFja2luZ1N0b3JlT3BlcmF0aW9ucygpCiAgICAgICAgICgqaXQp
LT5jb21taXRUaWxlT3BlcmF0aW9ucyhtX3RleHR1cmVNYXBwZXIuZ2V0KCkpOwogCiAgICAgbV9i
YWNraW5nU3RvcmVzV2l0aFBlbmRpbmdCdWZmZXJzLmNsZWFyKCk7Ci0KLSAgICB7Ci0gICAgICAg
IEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgZW5kID0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9y
ZXMuZW5kKCk7Ci0gICAgICAgIEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRp
bmdTeW5jQmFja2luZ1N0b3Jlcy5iZWdpbigpOwotICAgICAgICBmb3IgKDtpdCAhPSBlbmQ7ICsr
aXQpCi0gICAgICAgICAgICBpdC0+a2V5LT5zZXRCYWNraW5nU3RvcmUoaXQtPnZhbHVlKTsKLQot
ICAgICAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5jbGVhcigpOwotICAgIH0KIH0KIAog
dm9pZCBMYXllclRyZWVSZW5kZXJlcjo6Zmx1c2hMYXllckNoYW5nZXMoKQpAQCAtNTk3LDcgKzU1
Niw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmZsdXNoTGF5ZXJDaGFuZ2VzKCkKIAogICAg
IG1fcm9vdExheWVyLT5mbHVzaENvbXBvc2l0aW5nU3RhdGUoRmxvYXRSZWN0KCkpOwogICAgIGNv
bW1pdFBlbmRpbmdCYWNraW5nU3RvcmVPcGVyYXRpb25zKCk7Ci0gICAgcmVtb3ZlUmVsZWFzZWRJ
bWFnZUJhY2tpbmdzSWZOZWVkZWQoKTsKKyAgICByZW1vdmVSZWxlYXNlZENvb3JkaW5hdGVkQmFj
a2luZ1N0b3Jlc0lmTmVlZGVkKCk7CiAKICAgICAvLyBUaGUgcGVuZGluZyB0aWxlcyBzdGF0ZSBp
cyBvbiBpdHMgd2F5IGZvciB0aGUgc2NyZWVuLCB0ZWxsIHRoZSB3ZWIgcHJvY2VzcyB0byByZW5k
ZXIgdGhlIG5leHQgb25lLgogICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKGJpbmQoJkxheWVyVHJl
ZVJlbmRlcmVyOjpyZW5kZXJOZXh0RnJhbWUsIHRoaXMpKTsKQEAgLTY0NSwxMSArNjA0LDYgQEAg
dm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c3luY1JlbW90ZUNvbnRlbnQoKQogCiB2b2lkIExheWVy
VHJlZVJlbmRlcmVyOjpwdXJnZUdMUmVzb3VyY2VzKCkKIHsKLSAgICBUZXh0dXJlTWFwcGVyTGF5
ZXIqIGxheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIocm9vdExheWVyKCkpOwotCi0gICAgaWYg
KGxheWVyKQotICAgICAgICBsYXllci0+Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCk7Ci0K
ICAgICBtX2ltYWdlQmFja2luZ3MuY2xlYXIoKTsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
ICAgICBtX3N1cmZhY2VCYWNraW5nU3RvcmVzLmNsZWFyKCk7CkBAIC02NjAsNyArNjE0LDcgQEAg
dm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cHVyZ2VHTFJlc291cmNlcygpCiAgICAgbV9sYXllcnMu
Y2xlYXIoKTsKICAgICBtX2ZpeGVkTGF5ZXJzLmNsZWFyKCk7CiAgICAgbV90ZXh0dXJlTWFwcGVy
LmNsZWFyKCk7Ci0gICAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuY2xlYXIoKTsKKyAgICBt
X2JhY2tpbmdTdG9yZXMuY2xlYXIoKTsKICAgICBtX2JhY2tpbmdTdG9yZXNXaXRoUGVuZGluZ0J1
ZmZlcnMuY2xlYXIoKTsKIAogICAgIHNldEFjdGl2ZShmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJl
ci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlUmVuZGVyZXIuaAppbmRleCBkYmZhNmE4OWVlN2NkOGQ1NDhkZTY3ZjBmYTkyOTRlNjQxOWVk
N2ZmLi5hYmYxMGEwNGM1NDExZGNiYjllMTkzMWYwNjVhOWE3ZDAyOTc3ZGFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVS
ZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTE0OSw5ICsxNDksOSBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGVsZXRlTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEKTsKIAogICAgIHZvaWQgYXNzaWdu
SW1hZ2VCYWNraW5nVG9MYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgQ29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmdJRCk7Ci0gICAgdm9pZCByZW1vdmVSZWxlYXNlZEltYWdlQmFja2luZ3NJZk5l
ZWRlZCgpOwogICAgIHZvaWQgZW5zdXJlUm9vdExheWVyKCk7CiAgICAgdm9pZCBjb21taXRQZW5k
aW5nQmFja2luZ1N0b3JlT3BlcmF0aW9ucygpOworICAgIHZvaWQgcmVtb3ZlUmVsZWFzZWRDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZXNJZk5lZWRlZCgpOwogCiAgICAgQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmUqIGdldEJhY2tpbmdTdG9yZShXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CiAgICAgdm9p
ZCBwcmVwYXJlQ29udGVudEJhY2tpbmdTdG9yZShXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CkBA
IC0xNzAsMTEgKzE3MCwxMiBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRlZiBIYXNoTWFwPENvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nSUQsIFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gPiBJ
bWFnZUJhY2tpbmdNYXA7CiAgICAgSW1hZ2VCYWNraW5nTWFwIG1faW1hZ2VCYWNraW5nczsKLSAg
ICBWZWN0b3I8UmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiA+IG1fcmVsZWFzZWRJbWFn
ZUJhY2tpbmdzOwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllciosIFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gPiBCYWNraW5nU3RvcmVNYXA7
Ci0gICAgQmFja2luZ1N0b3JlTWFwIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzOworICAgIHR5
cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgUmVmUHRyPENvb3JkaW5hdGVk
QmFja2luZ1N0b3JlPiA+IEJhY2tpbmdTdG9yZU1hcDsKKyAgICBCYWNraW5nU3RvcmVNYXAgbV9i
YWNraW5nU3RvcmVzOwogCisgICAgLy8gV2UgZG9uJ3Qgd2FudCBUZXh0dXJlTWFwcGVyTGF5ZXIg
cmVmZXJzIGEgZGFuZ2xpbmcgcG9pbnRlci4KKyAgICBWZWN0b3I8UmVmUHRyPENvb3JkaW5hdGVk
QmFja2luZ1N0b3JlPiA+IG1fcmVsZWFzZWRDb29yZGluYXRlZEJhY2tpbmdTdG9yZXM7CiAgICAg
SGFzaFNldDxSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+ID4gbV9iYWNraW5nU3RvcmVz
V2l0aFBlbmRpbmdCdWZmZXJzOwogCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184704</attachid>
            <date>2013-01-25 02:02:44 -0800</date>
            <delta_ts>2013-01-28 17:38:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107099-20130125185924.patch</filename>
            <type>text/plain</type>
            <size>19192</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc5YzYyMDQ0N2U1ZTEy
YzJlNDIzZmQ4MzQ2Y2Y2ZWU2ZGFiODIwYy4uM2JlNGE3MGUwZTI1ZDJlYjBhY2E5M2VhMGU2Yjhl
Yzg0YWUzOWFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDEzLTAxLTI1ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZW1vdmUgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMgaW4gTGF5ZXJU
cmVlUmVuZGVyZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDcwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEJhY2tpbmdTdG9yZSgpIHNv
IHRoYXQKKyAgICAgICAgTGF5ZXJUcmVlUmVuZGVyZXIgc2V0cyBhIGJhY2tpbmcgc3RvcmUgdG8g
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCisKKyAgICAgICAgUmVtb3ZlIFRleHR1cmVNYXBw
ZXJMYXllcjo6Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCkgYmVjYXVzZQorICAgICAgICBU
ZXh0dXJlTWFwcGVyTGF5ZXIgZG9lcyBub3QgbWFuYWdlIHRoZSBsaWZlIGN5Y2xlIG9mIGEgYmFj
a2luZyBzdG9yZS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGNvbXBvc2l0aW5nIHRl
c3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3Jl
SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tp
bmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAoR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVy
OjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlRleHR1cmVNYXBwZXJMYXllcik6CisgICAgICAgIChU
ZXh0dXJlTWFwcGVyTGF5ZXIpOgorCisyMDEzLTAxLTI1ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRl
bGxhQGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIFtUZXhtYXBdIFJlZmFjdG9yIGNvZGUgcmVs
YXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQuCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDU5
YmNiZTYyMTI4OTFiMDM5ODcxMTBkYmE5MzdjOWYwODAwZDI3OTcuLmEyYjVmZWE5OTQzNDQwYjI1
MzFkNmNjMTZhOWQ2YTBmN2FkYjk3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAx
My0wMS0yNSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAg
ICAgICBDb29yZGluYXRlZCBHcmFwaGljczogUmVtb3ZlIG1fcGVuZGluZ1N5bmNCYWNraW5nU3Rv
cmVzIGluIExheWVyVHJlZVJlbmRlcmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTGF5ZXJUcmVlUmVuZGVyZXIgZGlmZmljdWx0bHkgdXNlcyBtX3Bl
bmRpbmdTeW5jQmFja2luZ1N0b3JlcyB0byBzZXQgYSBiYWNraW5nCisgICAgICAgIHN0b3JlIHRv
IFRleHR1cmVNYXBwZXJMYXllciwgYWx0aG91Z2ggTGF5ZXJUcmVlUmVuZGVyZXIgZWFzaWx5IHNl
dHMgYSBkaXJlY3QKKyAgICAgICAgY29tcG9zaXRlZCBpbWFnZSB0byBUZXh0dXJlTWFwcGVyTGF5
ZXIuIEl0IGlzIGJlY2F1c2UgTGF5ZXJUcmVlUmVuZGVyZXIgZGlyZWN0bHkKKyAgICAgICAgc2V0
IGEgYmFja2luZyBzdG9yZSB0byBUZXh0dXJlTWFwcGVyTGF5ZXIsIGluc3RlYWQgb2YgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBMYXllclRy
ZWVSZW5kZXJlciBzZXQgYSBiYWNraW5nIHN0b3JlIHRvIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyCisgICAgICAgIGFuZCB0aGVuIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIHdpbGwgc2V0
IGEgYmFja2luZyBzdG9yZSB0byBUZXh0dXJlTWFwcGVyTGF5ZXIKKyAgICAgICAgbGlrZSBvdGhl
ciBtZW1iZXJzLgorCisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6
ZGVsZXRlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6Z2V0QmFj
a2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUJh
Y2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6
OnJlbW92ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
UmVuZGVyZXI6OnJlbW92ZUltYWdlQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJl
ZVJlbmRlcmVyOjpyZW1vdmVSZWxlYXNlZENvb3JkaW5hdGVkQmFja2luZ1N0b3Jlc0lmTmVlZGVk
KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmNvbW1pdFBlbmRpbmdCYWNr
aW5nU3RvcmVPcGVyYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6
OmZsdXNoTGF5ZXJDaGFuZ2VzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6
OnB1cmdlR0xSZXNvdXJjZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZVJlbmRlcmVyLmg6CisKIDIwMTMtMDEtMjQgIEh1YW5nIERvbmdzdW5nICA8
bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3M6
IFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBhNjc4Y2Nm
N2U4MTRiNWYyNjdkZTI4ZDBlMjRiNmRlNGM0YmY0MWNhLi5iNzY3ZDkyODQ4MmYyZDI2Njc5MTUx
ZGM2ZjQ1ZDE3YmI0NzQ1NDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5jcHAKQEAgLTQwMiwxNyArNDAyLDMyIEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3cpCiAqLwogdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25s
eSgpCiB7Ci0gICAgdXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnRJZk5lZWRlZCgpOwor
ICAgIHByZXBhcmVCYWNraW5nU3RvcmVJZk5lZWRlZCgpOwogICAgIG1fbGF5ZXItPmZsdXNoQ29t
cG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkodGhpcyk7CiAgICAgdXBkYXRlQmFja2luZ1N0
b3JlSWZOZWVkZWQoKTsKICAgICBkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50
Q291bnRJZk5lZWRlZCgpCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJl
QmFja2luZ1N0b3JlSWZOZWVkZWQoKQogewogICAgIGlmICghbV9oYXNPd25CYWNraW5nU3RvcmUp
CiAgICAgICAgIHJldHVybjsKKyAgICBpZiAoIXNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSkgewor
ICAgICAgICBtX2JhY2tpbmdTdG9yZS5jbGVhcigpOworICAgICAgICBtX2NoYW5nZU1hc2sgfD0g
VGV4dHVyZU1hcHBlckxheWVyOjpCYWNraW5nU3RvcmVDaGFuZ2U7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkgeworICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUg
PSBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpOworICAgICAgICAgICAg
bV9jaGFuZ2VNYXNrIHw9IFRleHR1cmVNYXBwZXJMYXllcjo6QmFja2luZ1N0b3JlQ2hhbmdlOwor
ICAgICAgICB9CisgICAgfQogCisgICAgdXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQo
KTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3Jk
ZXJBbmRSZXBhaW50Q291bnQoKQoreworICAgIEFTU0VSVChtX2hhc093bkJhY2tpbmdTdG9yZSk7
CiAgICAgbV91c2luZ1RpbGVkTGF5ZXIgPSBzaG91bGRIYXZlQmFja2luZ1N0b3JlKCk7CiAgICAg
dXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CiAKQEAgLTQ1NywyMCArNDcyLDE2IEBAIHZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkKIHsK
ICAgICBpZiAoIW1faGFzT3duQmFja2luZ1N0b3JlKQogICAgICAgICByZXR1cm47Ci0gICAgcHJl
cGFyZUJhY2tpbmdTdG9yZSgpOwotICAgIG1fbGF5ZXItPnNldEJhY2tpbmdTdG9yZShtX2JhY2tp
bmdTdG9yZSk7Ci19CiAKLXZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVC
YWNraW5nU3RvcmUoKQotewogICAgIFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIgPSBtX2xh
eWVyLT50ZXh0dXJlTWFwcGVyKCk7CiAgICAgaWYgKCF0ZXh0dXJlTWFwcGVyKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoIXNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSkgewotICAgICAgICBt
X2JhY2tpbmdTdG9yZS5jbGVhcigpOworICAgICAgICBBU1NFUlQoIW1fYmFja2luZ1N0b3JlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwogCiAg
ICAgSW50UmVjdCBkaXJ0eVJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdChGbG9hdFBv
aW50Ojp6ZXJvKCksIG1fc2l6ZSkpOwogICAgIGlmICghbV9uZWVkc0Rpc3BsYXkpCkBAIC00Nzgs
OSArNDg5LDYgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tp
bmdTdG9yZSgpCiAgICAgaWYgKGRpcnR5UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmICghbV9iYWNraW5nU3RvcmUpCi0gICAgICAgIG1fYmFja2luZ1N0b3JlID0gVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsKLQogI2lmIFBMQVRGT1JNKFFU
KQogICAgIEFTU0VSVChkeW5hbWljX2Nhc3Q8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
Kj4obV9iYWNraW5nU3RvcmUuZ2V0KCkpKTsKICNlbmRpZgpAQCAtNTQ2LDYgKzU1NCwxNiBAQCBi
b29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmIGZpbHRlcnMpCiB9CiAjZW5kaWYKIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6c2V0QmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZT4gYmFja2luZ1N0b3JlKQoreworICAgIEFTU0VSVCghbV9oYXNPd25CYWNraW5nU3RvcmUp
OworICAgIGlmIChtX2JhY2tpbmdTdG9yZSA9PSBiYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fYmFja2luZ1N0b3JlID0gYmFja2luZ1N0b3JlOworICAgIG5vdGlmeUNoYW5n
ZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkJhY2tpbmdTdG9yZUNoYW5nZSk7Cit9CisKIHZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFJlcGFpbnRDb3VudChpbnQgcmVwYWludENvdW50
KQogewogICAgIG1fcmVwYWludENvdW50ID0gcmVwYWludENvdW50OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCA0OWI1MDRiNjNiY2QyZTEzM2MxNWYxMDNkMjBi
ZGVlNDNkY2I4NmQ0Li42MmY0NTgwM2NmZWYyYWM0NzJmYTg5YTIwYzAyNzk4YWExMzFjNTU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtODksNiArODksNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTogSXQgd2lsbCBiZSByZW1vdmVkIGFmdGVyIHJlbW92
aW5nIGRlcGVuZGVuY3kgb2YgTGF5ZXJUcmVlUmVuZGVyZXIgb24gR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuCiAgICAgdm9pZCBzZXRIYXNPd25CYWNraW5nU3RvcmUoYm9vbCBiKSB7IG1faGFz
T3duQmFja2luZ1N0b3JlID0gYjsgfQorICAgIHZvaWQgc2V0QmFja2luZ1N0b3JlKFBhc3NSZWZQ
dHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4pOwogCiAgICAgdm9pZCBzZXRGaXhlZFRvVmll
d3BvcnQoYm9vbCBmaXhlZCkgeyBtX2ZpeGVkVG9WaWV3cG9ydCA9IGZpeGVkOyB9CiAgICAgYm9v
bCBmaXhlZFRvVmlld3BvcnQoKSBjb25zdCB7IHJldHVybiBtX2ZpeGVkVG9WaWV3cG9ydDsgfQpA
QCAtMTAwLDkgKzEwMSw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxCZURlc3Ryb3llZCgpOwogICAgIHZvaWQgZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlKCk7Ci0g
ICAgdm9pZCB1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudElmTmVlZGVkKCk7CisgICAg
dm9pZCB1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCgpOwogICAgIHZvaWQgdXBkYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQoKTsKLSAgICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmUoKTsK
KyAgICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmVJZk5lZWRlZCgpOwogICAgIGJvb2wgc2hvdWxk
SGF2ZUJhY2tpbmdTdG9yZSgpIGNvbnN0OwogICAgIHZvaWQgYW5pbWF0aW9uU3RhcnRlZFRpbWVy
RmlyZWQoVGltZXI8R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI+Kik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5jcHAKaW5kZXggOGU4MGIxOTQyMzU5ZmJjOGNhNjBkODEzZmI5NzMxNmYzMzkx
NTY0Mi4uNmIzYWE2MjRhNGI2OGM3ZDViMmFkNGI2NWU1ZGM3OTc4MjBmYWI4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTU0LDE2ICs1NCw2IEBAIGNvbnN0IFRleHR1cmVNYXBw
ZXJMYXllciogVGV4dHVyZU1hcHBlckxheWVyOjpyb290TGF5ZXIoKSBjb25zdAogICAgIHJldHVy
biB0aGlzOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Y2xlYXJCYWNraW5nU3RvcmVz
UmVjdXJzaXZlKCkKLXsKLSAgICBtX2JhY2tpbmdTdG9yZS5jbGVhcigpOwotICAgIG1fY29udGVu
dHNMYXllciA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUo
KTsgKytpKQotICAgICAgICBtX2NoaWxkcmVuW2ldLT5jbGVhckJhY2tpbmdTdG9yZXNSZWN1cnNp
dmUoKTsKLSAgICBpZiAobV9zdGF0ZS5tYXNrTGF5ZXIpCi0gICAgICAgIG1fc3RhdGUubWFza0xh
eWVyLT5jbGVhckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUoKTsKLX0KLQogdm9pZCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1zUmVjdXJzaXZlKCkKIHsKICAgICBpZiAobV9zdGF0
ZS5zaXplLmlzRW1wdHkoKSAmJiBtX3N0YXRlLm1hc2tzVG9Cb3VuZHMpCkBAIC00MDgsNiArMzk4
LDkgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRo
aXNMYXllck9ubHkoR3JhcGhpY3NMYXllclRleHQKICAgICBpZiAoY2hhbmdlTWFzayAmIEFuaW1h
dGlvbkNoYW5nZSkKICAgICAgICAgbV9hbmltYXRpb25zID0gZ3JhcGhpY3NMYXllci0+bV9hbmlt
YXRpb25zOwogCisgICAgaWYgKGNoYW5nZU1hc2sgJiBCYWNraW5nU3RvcmVDaGFuZ2UpCisgICAg
ICAgIG1fYmFja2luZ1N0b3JlID0gZ3JhcGhpY3NMYXllci0+bV9iYWNraW5nU3RvcmUuZ2V0KCk7
CisKICAgICBpZiAoY2hhbmdlTWFzayAmIFJlcGFpbnRDb3VudENoYW5nZSkKICAgICAgICAgbV9z
dGF0ZS5yZXBhaW50Q291bnQgPSBncmFwaGljc0xheWVyLT5yZXBhaW50Q291bnQoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5oCmluZGV4IDU3NWJiMjdlYjdhODc0YzE4NGI1ODFlZDJiZDQzNWQx
MDE1YTgzYjEuLmQwNTYwMGM1YTIxMWMyZTAxNzY3NTlmZTViMDFlYzYwYjc2Yzk0N2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmgKQEAgLTc0LDEyICs3NCwxNSBAQCBwdWJsaWM6CiAgICAgICAg
IEZpbHRlckNoYW5nZSA9ICAgICAgICAgICAgICAoMUwgPDwgMjMpLAogCiAgICAgICAgIERlYnVn
VmlzdWFsc0NoYW5nZSA9ICAgICAgICAoMUwgPDwgMjQpLAotICAgICAgICBSZXBhaW50Q291bnRD
aGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KQorICAgICAgICBSZXBhaW50Q291bnRDaGFuZ2UgPSAg
ICAgICAgKDFMIDw8IDI1KSwKKworICAgICAgICBCYWNraW5nU3RvcmVDaGFuZ2UgPSAgICAgICAg
KDFMIDw8IDI2KQogICAgIH07CiAKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIoKQogICAgICAgICA6
IG1fcGFyZW50KDApCiAgICAgICAgICwgbV9lZmZlY3RUYXJnZXQoMCkKKyAgICAgICAgLCBtX2Jh
Y2tpbmdTdG9yZSgwKQogICAgICAgICAsIG1fY29udGVudHNMYXllcigwKQogICAgICAgICAsIG1f
Y3VycmVudE9wYWNpdHkoMSkKICAgICAgICAgLCBtX2NlbnRlclooMCkKQEAgLTk1LDEwICs5OCw2
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcGFpbnQoKTsKIAotICAgIHZvaWQgc2V0QmFja2luZ1N0
b3JlKFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKSB7
IG1fYmFja2luZ1N0b3JlID0gYmFja2luZ1N0b3JlOyB9Ci0gICAgUGFzc1JlZlB0cjxUZXh0dXJl
TWFwcGVyQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUoKSB7IHJldHVybiBtX2JhY2tpbmdTdG9y
ZTsgfQotICAgIHZvaWQgY2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCk7Ci0KICAgICB2b2lk
IHNldFNjcm9sbFBvc2l0aW9uRGVsdGFJZk5lZWRlZChjb25zdCBGbG9hdFNpemUmKTsKIAogICAg
IHZvaWQgYXBwbHlBbmltYXRpb25zUmVjdXJzaXZlbHkoKTsKQEAgLTE1Miw3ICsxNTEsNyBAQCBw
cml2YXRlOgogICAgIFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqPiBtX2NoaWxkcmVuOwogICAg
IFRleHR1cmVNYXBwZXJMYXllciogbV9wYXJlbnQ7CiAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBt
X2VmZmVjdFRhcmdldDsKLSAgICBSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gbV9i
YWNraW5nU3RvcmU7CisgICAgVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSogbV9iYWNraW5nU3Rv
cmU7CiAgICAgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIqIG1fY29udGVudHNMYXllcjsKICAg
ICBHcmFwaGljc0xheWVyVHJhbnNmb3JtIG1fY3VycmVudFRyYW5zZm9ybTsKICAgICBmbG9hdCBt
X2N1cnJlbnRPcGFjaXR5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4
IDgwNWE4NzM2ZTk0MmJjZjNlNDNlYjQ5MzY1NWUwZWUwMzM5M2E4ZGQuLjg1NjIwM2MxMWM0YTZi
OWI2MjVmMzVmNDRkZDIyNDdiNjM4OWRhZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5k
ZXJlci5jcHAKQEAgLTM4Niw3ICszODYsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpkZWxl
dGVMYXllcihDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCkKICAgICBPd25QdHI8R3JhcGhpY3NM
YXllcj4gbGF5ZXIgPSBtX2xheWVycy50YWtlKGxheWVySUQpOwogICAgIEFTU0VSVChsYXllcik7
CiAKLSAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5yZW1vdmUodG9UZXh0dXJlTWFwcGVy
TGF5ZXIobGF5ZXIuZ2V0KCkpKTsKKyAgICBtX2JhY2tpbmdTdG9yZXMucmVtb3ZlKGxheWVyLmdl
dCgpKTsKICAgICBtX2ZpeGVkTGF5ZXJzLnJlbW92ZShsYXllcklEKTsKICNpZiBVU0UoR1JBUEhJ
Q1NfU1VSRkFDRSkKICAgICBtX3N1cmZhY2VCYWNraW5nU3RvcmVzLnJlbW92ZShsYXllcklEKTsK
QEAgLTQwNywxMiArNDA3LDkgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0Um9vdExheWVy
SUQoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQpCiAKIENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
KiBMYXllclRyZWVSZW5kZXJlcjo6Z2V0QmFja2luZ1N0b3JlKEdyYXBoaWNzTGF5ZXIqIGdyYXBo
aWNzTGF5ZXIpCiB7Ci0gICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9IHRvVGV4dHVyZU1h
cHBlckxheWVyKGdyYXBoaWNzTGF5ZXIpOwotICAgIEFTU0VSVChsYXllcik7Ci0gICAgQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IHN0YXRpY19jYXN0PENvb3JkaW5hdGVk
QmFja2luZ1N0b3JlKj4obGF5ZXItPmJhY2tpbmdTdG9yZSgpLmdldCgpKTsKLQotICAgIEJhY2tp
bmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5maW5k
KGxheWVyKTsKLSAgICBpZiAoaXQgIT0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuZW5kKCkp
CisgICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IDA7CisgICAgQmFj
a2luZ1N0b3JlTWFwOjppdGVyYXRvciBpdCA9IG1fYmFja2luZ1N0b3Jlcy5maW5kKGdyYXBoaWNz
TGF5ZXIpOworICAgIGlmIChpdCAhPSBtX2JhY2tpbmdTdG9yZXMuZW5kKCkpCiAgICAgICAgIGJh
Y2tpbmdTdG9yZSA9IGl0LT52YWx1ZS5nZXQoKTsKICAgICByZXR1cm4gYmFja2luZ1N0b3JlOwog
fQpAQCAtNDI5LDUwICs0MjYsMjIgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cHJlcGFyZUNv
bnRlbnRCYWNraW5nU3RvcmUoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKIAogdm9pZCBM
YXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoR3JhcGhpY3NMYXll
ciogZ3JhcGhpY3NMYXllcikKIHsKLSAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyID0gdG9U
ZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllcik7Ci0gICAgQVNTRVJUKGxheWVyKTsKLQot
ICAgIC8vIE1ha2Ugc3VyZSB0aGUgbGF5ZXIgZG9lcyBub3QgYWxyZWFkeSBoYXZlIGEgYmFja2lu
ZyBzdG9yZSAoY29tbWl0dGVkIG9yIHBlbmRpbmcpLgotICAgIEJhY2tpbmdTdG9yZU1hcDo6aXRl
cmF0b3IgaXQgPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5maW5kKGxheWVyKTsKLSAgICBp
ZiAoaXQgIT0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuZW5kKCkpIHsKLSAgICAgICAgaWYg
KCFpdC0+dmFsdWUpIHsKLSAgICAgICAgICAgIC8vIFRoZXJlIGlzIGEgcGVuZGluZyByZW1vdmFs
LCBjYW5jZWwgaXQuCi0gICAgICAgICAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5yZW1v
dmUoaXQpOwotICAgICAgICB9Ci0gICAgICAgIC8vIFRoZXJlIGlzIGFscmVhZHkgYSBwZW5kaW5n
IGFkZGl0aW9uLgorICAgIGlmIChnZXRCYWNraW5nU3RvcmUoZ3JhcGhpY3NMYXllcikpCiAgICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGxheWVyLT5iYWNraW5nU3RvcmUoKSkKLSAgICAg
ICAgcmV0dXJuOyAvLyBUaGUgbGF5ZXIgYWxyZWFkeSBoYXMgYSBiYWNraW5nIHN0b3JlIChhbmQg
bm8gcGVuZGluZyByZW1vdmFsKS4KIAogICAgIFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9y
ZT4gYmFja2luZ1N0b3JlKENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKSk7Ci0KICAg
ICBiYWNraW5nU3RvcmUtPnNldFNpemUoZ3JhcGhpY3NMYXllci0+c2l6ZSgpKTsKLSAgICBBU1NF
UlQoIW1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmNvbnRhaW5zKGxheWVyKSk7Ci0gICAgbV9w
ZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuYWRkKGxheWVyLCBiYWNraW5nU3RvcmUpOworICAgIG1f
YmFja2luZ1N0b3Jlcy5hZGQoZ3JhcGhpY3NMYXllciwgYmFja2luZ1N0b3JlKTsKKyAgICB0b0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXIpLT5zZXRCYWNraW5nU3RvcmUo
YmFja2luZ1N0b3JlKTsKIH0KIAogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlQmFja2lu
Z1N0b3JlSWZOZWVkZWQoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKIHsKLSAgICBUZXh0
dXJlTWFwcGVyTGF5ZXIqIGxheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXll
cik7Ci0gICAgQVNTRVJUKGxheWVyKTsKLQotICAgIC8vIENoZWNrIGlmIHRoZSBsYXlvdXQgYWxy
ZWFkeSBoYXMgYSBiYWNraW5nIHN0b3JlIChjb21taXR0ZWQgb3IgcGVuZGluZykuCi0gICAgQmFj
a2luZ1N0b3JlTWFwOjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmZp
bmQobGF5ZXIpOwotICAgIGlmIChpdCAhPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5lbmQo
KSkgewotICAgICAgICBpZiAoaXQtPnZhbHVlKSB7Ci0gICAgICAgICAgICAvLyBUaGVyZSBpcyBh
IHBlbmRpbmcgYWRkaXRpb24sIGNhbmNlbCBpdC4KLSAgICAgICAgICAgIG1fcGVuZGluZ1N5bmNC
YWNraW5nU3RvcmVzLnJlbW92ZShpdCk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gVGhlcmUgaXMg
YWxyZWFkeSBhIHBlbmRpbmcgcmVtb3ZhbC4KKyAgICBpZiAoIWdldEJhY2tpbmdTdG9yZShncmFw
aGljc0xheWVyKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghbGF5ZXItPmJh
Y2tpbmdTdG9yZSgpKQotICAgICAgICByZXR1cm47IC8vIFRoZSBsYXllciBoYXMgbm8gYmFja2lu
ZyBzdG9yZSAoYW5kIG5vIHBlbmRpbmcgYWRkaXRpb24pLgogCi0gICAgQVNTRVJUKCFtX3BlbmRp
bmdTeW5jQmFja2luZ1N0b3Jlcy5jb250YWlucyhsYXllcikpOwotICAgIG1fcGVuZGluZ1N5bmNC
YWNraW5nU3RvcmVzLmFkZChsYXllciwgMCk7CisgICAgbV9yZWxlYXNlZENvb3JkaW5hdGVkQmFj
a2luZ1N0b3Jlcy5hcHBlbmQobV9iYWNraW5nU3RvcmVzLnRha2UoZ3JhcGhpY3NMYXllcikpOwor
ICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoZ3JhcGhpY3NMYXllciktPnNldEJhY2tp
bmdTdG9yZSgwKTsKIH0KIAogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVzZXRCYWNraW5nU3Rv
cmVTaXplVG9MYXllclNpemUoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKQEAgLTU1MCw4
ICs1MTksNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVJbWFnZUJhY2tpbmcoQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEKQogewogICAgIEFTU0VSVChtX2ltYWdlQmFj
a2luZ3MuY29udGFpbnMoaW1hZ2VJRCkpOwogCi0gICAgLy8gV2UgZG9uJ3Qgd2FudCBUZXh0dXJl
TWFwcGVyTGF5ZXIgcmVmZXJzIGEgZGFuZ2xpbmcgcG9pbnRlci4KLSAgICBtX3JlbGVhc2VkSW1h
Z2VCYWNraW5ncy5hcHBlbmQobV9pbWFnZUJhY2tpbmdzLnRha2UoaW1hZ2VJRCkpOworICAgIG1f
cmVsZWFzZWRDb29yZGluYXRlZEJhY2tpbmdTdG9yZXMuYXBwZW5kKG1faW1hZ2VCYWNraW5ncy50
YWtlKGltYWdlSUQpKTsKIH0KIAogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6YXNzaWduSW1hZ2VC
YWNraW5nVG9MYXllcihHcmFwaGljc0xheWVyKiBsYXllciwgQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCBpbWFnZUlEKQpAQCAtNTY1LDkgKzUzMyw5IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6
OmFzc2lnbkltYWdlQmFja2luZ1RvTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIsIENvb3JkaW5h
CiAgICAgbGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYShpdC0+dmFsdWUuZ2V0KCkpOwogfQogCi12
b2lkIExheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVSZWxlYXNlZEltYWdlQmFja2luZ3NJZk5lZWRl
ZCgpCit2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVSZWxlYXNlZENvb3JkaW5hdGVkQmFj
a2luZ1N0b3Jlc0lmTmVlZGVkKCkKIHsKLSAgICBtX3JlbGVhc2VkSW1hZ2VCYWNraW5ncy5jbGVh
cigpOworICAgIG1fcmVsZWFzZWRDb29yZGluYXRlZEJhY2tpbmdTdG9yZXMuY2xlYXIoKTsKIH0K
IAogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6Y29tbWl0UGVuZGluZ0JhY2tpbmdTdG9yZU9wZXJh
dGlvbnMoKQpAQCAtNTc3LDE1ICs1NDUsNiBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpjb21t
aXRQZW5kaW5nQmFja2luZ1N0b3JlT3BlcmF0aW9ucygpCiAgICAgICAgICgqaXQpLT5jb21taXRU
aWxlT3BlcmF0aW9ucyhtX3RleHR1cmVNYXBwZXIuZ2V0KCkpOwogCiAgICAgbV9iYWNraW5nU3Rv
cmVzV2l0aFBlbmRpbmdCdWZmZXJzLmNsZWFyKCk7Ci0KLSAgICB7Ci0gICAgICAgIEJhY2tpbmdT
dG9yZU1hcDo6aXRlcmF0b3IgZW5kID0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuZW5kKCk7
Ci0gICAgICAgIEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdTeW5jQmFj
a2luZ1N0b3Jlcy5iZWdpbigpOwotICAgICAgICBmb3IgKDtpdCAhPSBlbmQ7ICsraXQpCi0gICAg
ICAgICAgICBpdC0+a2V5LT5zZXRCYWNraW5nU3RvcmUoaXQtPnZhbHVlKTsKLQotICAgICAgICBt
X3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5jbGVhcigpOwotICAgIH0KIH0KIAogdm9pZCBMYXll
clRyZWVSZW5kZXJlcjo6Zmx1c2hMYXllckNoYW5nZXMoKQpAQCAtNTk3LDcgKzU1Niw3IEBAIHZv
aWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmZsdXNoTGF5ZXJDaGFuZ2VzKCkKIAogICAgIG1fcm9vdExh
eWVyLT5mbHVzaENvbXBvc2l0aW5nU3RhdGUoRmxvYXRSZWN0KCkpOwogICAgIGNvbW1pdFBlbmRp
bmdCYWNraW5nU3RvcmVPcGVyYXRpb25zKCk7Ci0gICAgcmVtb3ZlUmVsZWFzZWRJbWFnZUJhY2tp
bmdzSWZOZWVkZWQoKTsKKyAgICByZW1vdmVSZWxlYXNlZENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
c0lmTmVlZGVkKCk7CiAKICAgICAvLyBUaGUgcGVuZGluZyB0aWxlcyBzdGF0ZSBpcyBvbiBpdHMg
d2F5IGZvciB0aGUgc2NyZWVuLCB0ZWxsIHRoZSB3ZWIgcHJvY2VzcyB0byByZW5kZXIgdGhlIG5l
eHQgb25lLgogICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVy
OjpyZW5kZXJOZXh0RnJhbWUsIHRoaXMpKTsKQEAgLTY0NSwxMSArNjA0LDYgQEAgdm9pZCBMYXll
clRyZWVSZW5kZXJlcjo6c3luY1JlbW90ZUNvbnRlbnQoKQogCiB2b2lkIExheWVyVHJlZVJlbmRl
cmVyOjpwdXJnZUdMUmVzb3VyY2VzKCkKIHsKLSAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVy
ID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIocm9vdExheWVyKCkpOwotCi0gICAgaWYgKGxheWVyKQot
ICAgICAgICBsYXllci0+Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCk7Ci0KICAgICBtX2lt
YWdlQmFja2luZ3MuY2xlYXIoKTsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBtX3N1
cmZhY2VCYWNraW5nU3RvcmVzLmNsZWFyKCk7CkBAIC02NjAsNyArNjE0LDcgQEAgdm9pZCBMYXll
clRyZWVSZW5kZXJlcjo6cHVyZ2VHTFJlc291cmNlcygpCiAgICAgbV9sYXllcnMuY2xlYXIoKTsK
ICAgICBtX2ZpeGVkTGF5ZXJzLmNsZWFyKCk7CiAgICAgbV90ZXh0dXJlTWFwcGVyLmNsZWFyKCk7
Ci0gICAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuY2xlYXIoKTsKKyAgICBtX2JhY2tpbmdT
dG9yZXMuY2xlYXIoKTsKICAgICBtX2JhY2tpbmdTdG9yZXNXaXRoUGVuZGluZ0J1ZmZlcnMuY2xl
YXIoKTsKIAogICAgIHNldEFjdGl2ZShmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuaAppbmRleCBkYmZhNmE4OWVlN2NkOGQ1NDhkZTY3ZjBmYTkyOTRlNjQxOWVkN2ZmLi5hYmYx
MGEwNGM1NDExZGNiYjllMTkzMWYwNjVhOWE3ZDAyOTc3ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZVJlbmRlcmVyLmgKQEAgLTE0OSw5ICsxNDksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVs
ZXRlTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEKTsKIAogICAgIHZvaWQgYXNzaWduSW1hZ2VCYWNr
aW5nVG9MYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCk7Ci0gICAgdm9pZCByZW1vdmVSZWxlYXNlZEltYWdlQmFja2luZ3NJZk5lZWRlZCgpOwog
ICAgIHZvaWQgZW5zdXJlUm9vdExheWVyKCk7CiAgICAgdm9pZCBjb21taXRQZW5kaW5nQmFja2lu
Z1N0b3JlT3BlcmF0aW9ucygpOworICAgIHZvaWQgcmVtb3ZlUmVsZWFzZWRDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZXNJZk5lZWRlZCgpOwogCiAgICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUqIGdl
dEJhY2tpbmdTdG9yZShXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CiAgICAgdm9pZCBwcmVwYXJl
Q29udGVudEJhY2tpbmdTdG9yZShXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CkBAIC0xNzAsMTEg
KzE3MCwxMiBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRlZiBIYXNoTWFwPENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQsIFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gPiBJbWFnZUJhY2tp
bmdNYXA7CiAgICAgSW1hZ2VCYWNraW5nTWFwIG1faW1hZ2VCYWNraW5nczsKLSAgICBWZWN0b3I8
UmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiA+IG1fcmVsZWFzZWRJbWFnZUJhY2tpbmdz
OwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciosIFJl
ZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gPiBCYWNraW5nU3RvcmVNYXA7Ci0gICAgQmFj
a2luZ1N0b3JlTWFwIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzOworICAgIHR5cGVkZWYgSGFz
aE1hcDxXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlPiA+IEJhY2tpbmdTdG9yZU1hcDsKKyAgICBCYWNraW5nU3RvcmVNYXAgbV9iYWNraW5nU3Rv
cmVzOwogCisgICAgLy8gV2UgZG9uJ3Qgd2FudCBUZXh0dXJlTWFwcGVyTGF5ZXIgcmVmZXJzIGEg
ZGFuZ2xpbmcgcG9pbnRlci4KKyAgICBWZWN0b3I8UmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlPiA+IG1fcmVsZWFzZWRDb29yZGluYXRlZEJhY2tpbmdTdG9yZXM7CiAgICAgSGFzaFNldDxS
ZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+ID4gbV9iYWNraW5nU3RvcmVzV2l0aFBlbmRp
bmdCdWZmZXJzOwogCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185117</attachid>
            <date>2013-01-28 17:38:49 -0800</date>
            <delta_ts>2013-01-28 22:59:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107099-20130129103514.patch</filename>
            <type>text/plain</type>
            <size>19149</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2IwMjc0ZWY5ZjU5ZTQy
YTRlNTgyN2ZmMTc5MjM4ZTRjM2FiN2U5Ni4uNzYxODAzN2UzNjkzMGVjYzljY2NjZDk5ZWQyOTg0
YmZmNzY5OTRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDEzLTAxLTI4ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZW1vdmUgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMgaW4gTGF5ZXJU
cmVlUmVuZGVyZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDcwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEJhY2tpbmdTdG9yZSgpIHNv
IHRoYXQKKyAgICAgICAgTGF5ZXJUcmVlUmVuZGVyZXIgc2V0cyBhIGJhY2tpbmcgc3RvcmUgdG8g
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCisKKyAgICAgICAgUmVtb3ZlIFRleHR1cmVNYXBw
ZXJMYXllcjo6Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCkgYmVjYXVzZQorICAgICAgICBU
ZXh0dXJlTWFwcGVyTGF5ZXIgZG9lcyBub3QgbWFuYWdlIHRoZSBsaWZlIGN5Y2xlIG9mIGEgYmFj
a2luZyBzdG9yZS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGNvbXBvc2l0aW5nIHRl
c3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3Jl
SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tp
bmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAoR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVy
OjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlRleHR1cmVNYXBwZXJMYXllcik6CisgICAgICAgIChU
ZXh0dXJlTWFwcGVyTGF5ZXIpOgorCisyMDEzLTAxLTI4ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRl
bGxhQGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIFtUZXhtYXBdIFJlZmFjdG9yIGNvZGUgcmVs
YXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQuCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGYz
NTM2MWRjZGJmZjYwMGJmNDdmZGY4MjljMWJjY2JiOGI5MGRiODguLmNiZjVmMDA0ZmQyMjM2MDMy
YzI0N2VlMWZjNmVkOGJkZjg5YzhkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzMCBAQAogMjAx
My0wMS0yOCAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAg
ICAgICBDb29yZGluYXRlZCBHcmFwaGljczogUmVtb3ZlIG1fcGVuZGluZ1N5bmNCYWNraW5nU3Rv
cmVzIGluIExheWVyVHJlZVJlbmRlcmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiBxdWV1aW5nIHRoZSBzZXR0aW5nIG9mIGJhY2tp
bmcgc3RvcmVzIGluIExheWVyVHJlZVJlbmRlcmVyLAorICAgICAgICBhbmQgdGhlbiBzZXR0aW5n
IHRoZW0gZGlyZWN0bHkgdG8gVGV4dHVyZU1hcHBlckxheWVyLCB3ZSBhbGxvdworICAgICAgICBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcidzIGV4aXN0aW5nIHF1ZXVpbmcgbWVjaGFuaXNtIHRv
IGhhbmRsZSB0aGF0LgorICAgICAgICBJbnN0ZWFkIG9mIGEgbV9wZW5kaW5nU3luY0JhY2tpbmdT
dG9yZXMgcXVldWUsIHdlIGhhdmUgYSBtX2JhY2tpbmdTdG9yZXMKKyAgICAgICAgcXVldWUgd2hp
Y2ggY2FuIGJlIGFwcGxpZWQgbXVjaCBtb3JlIGVhc2lseSB0byB0aGUgbGF5ZXIgdHJlZS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmRlbGV0ZUxheWVyKToK
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmdldEJhY2tpbmdTdG9yZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVCYWNraW5nU3RvcmVJZk5l
ZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVCYWNraW5n
U3RvcmVJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpyZW1v
dmVJbWFnZUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6cmVt
b3ZlUmVsZWFzZWRDb29yZGluYXRlZEJhY2tpbmdTdG9yZXNJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpjb21taXRQZW5kaW5nQmFja2luZ1N0b3JlT3BlcmF0
aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpmbHVzaExheWVyQ2hh
bmdlcyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpwdXJnZUdMUmVzb3Vy
Y2VzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVS
ZW5kZXJlci5oOgorCisyMDEzLTAxLTI4ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBh
bnkxMDAubmV0PgorCiAgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBSZWZhY3RvciBjb2Rl
IHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50LgogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3OTEwCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDEzOGJlNzZiNDdkNzQ5MDI3NThl
YjI5YTc0MjA4MDdlODQ0ODI2M2EuLmExNGQyYTJlOTVkMTAwMjU0Zjc1MGU5YWVhNWRhNTkwODRh
ZGMxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAt
NDAyLDE3ICs0MDIsMzIgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hv
d1JlcGFpbnRDb3VudGVyKGJvb2wgc2hvdykKICovCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKIHsKLSAgICB1
cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudElmTmVlZGVkKCk7CisgICAgcHJlcGFyZUJh
Y2tpbmdTdG9yZUlmTmVlZGVkKCk7CiAgICAgbV9sYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRl
Rm9yVGhpc0xheWVyT25seSh0aGlzKTsKICAgICB1cGRhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgp
OwogICAgIGRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudElmTmVlZGVk
KCkKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmVJ
Zk5lZWRlZCgpCiB7CiAgICAgaWYgKCFtX2hhc093bkJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0
dXJuOworICAgIGlmICghc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKSB7CisgICAgICAgIG1fYmFj
a2luZ1N0b3JlLmNsZWFyKCk7CisgICAgICAgIG1fY2hhbmdlTWFzayB8PSBUZXh0dXJlTWFwcGVy
TGF5ZXI6OkJhY2tpbmdTdG9yZUNoYW5nZTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIW1f
YmFja2luZ1N0b3JlKSB7CisgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IFRleHR1cmVNYXBw
ZXJUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2NoYW5nZU1hc2sg
fD0gVGV4dHVyZU1hcHBlckxheWVyOjpCYWNraW5nU3RvcmVDaGFuZ2U7CisgICAgICAgIH0KKyAg
ICB9CiAKKyAgICB1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCgpOworfQorCit2b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRD
b3VudCgpCit7CisgICAgQVNTRVJUKG1faGFzT3duQmFja2luZ1N0b3JlKTsKICAgICBpZiAoaXNT
aG93aW5nRGVidWdCb3JkZXIoKSkgewogICAgICAgICAvLyBtX3VzaW5nVGlsZWRMYXllciBhZmZl
Y3RzIGxheW91dCB0ZXN0IHJlc3VsdHMgYW5kIG9ubHkgTWFjIHBvcnQgdXNlcyB0aGlzIHZhcmlh
YmxlLgogICAgICAgICBtX3VzaW5nVGlsZWRMYXllciA9IHNob3VsZEhhdmVCYWNraW5nU3RvcmUo
KTsKQEAgLTQ2MSwyMCArNDc2LDE2IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnVwZGF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkKIHsKICAgICBpZiAoIW1faGFzT3duQmFja2lu
Z1N0b3JlKQogICAgICAgICByZXR1cm47Ci0gICAgcHJlcGFyZUJhY2tpbmdTdG9yZSgpOwotICAg
IG1fbGF5ZXItPnNldEJhY2tpbmdTdG9yZShtX2JhY2tpbmdTdG9yZSk7Ci19CiAKLXZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmUoKQotewogICAgIFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIgPSBtX2xheWVyLT50ZXh0dXJlTWFwcGVyKCk7CiAg
ICAgaWYgKCF0ZXh0dXJlTWFwcGVyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXNob3Vs
ZEhhdmVCYWNraW5nU3RvcmUoKSkgewotICAgICAgICBtX2JhY2tpbmdTdG9yZS5jbGVhcigpOwor
ICAgICAgICBBU1NFUlQoIW1fYmFja2luZ1N0b3JlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KyAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwogCiAgICAgSW50UmVjdCBkaXJ0eVJlY3QgPSBl
bmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIG1fc2l6ZSkpOwog
ICAgIGlmICghbV9uZWVkc0Rpc3BsYXkpCkBAIC00ODIsOSArNDkzLDYgQEAgdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tpbmdTdG9yZSgpCiAgICAgaWYgKGRpcnR5
UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9iYWNraW5nU3Rv
cmUpCi0gICAgICAgIG1fYmFja2luZ1N0b3JlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlOjpjcmVhdGUoKTsKLQogI2lmIFBMQVRGT1JNKFFUKQogICAgIEFTU0VSVChkeW5hbWljX2Nh
c3Q8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKj4obV9iYWNraW5nU3RvcmUuZ2V0KCkp
KTsKICNlbmRpZgpAQCAtNTUwLDYgKzU1OCwxNiBAQCBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB9CiAj
ZW5kaWYKIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QmFja2luZ1N0b3Jl
KFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKQorewor
ICAgIEFTU0VSVCghbV9oYXNPd25CYWNraW5nU3RvcmUpOworICAgIGlmIChtX2JhY2tpbmdTdG9y
ZSA9PSBiYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2luZ1N0b3Jl
ID0gYmFja2luZ1N0b3JlOworICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkJh
Y2tpbmdTdG9yZUNoYW5nZSk7Cit9CisKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnNldFJlcGFpbnRDb3VudChpbnQgcmVwYWludENvdW50KQogewogICAgIG1fcmVwYWludENvdW50
ID0gcmVwYWludENvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApp
bmRleCA0OWI1MDRiNjNiY2QyZTEzM2MxNWYxMDNkMjBiZGVlNDNkY2I4NmQ0Li42MmY0NTgwM2Nm
ZWYyYWM0NzJmYTg5YTIwYzAyNzk4YWExMzFjNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuaApAQCAtODksNiArODksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhN
RTogSXQgd2lsbCBiZSByZW1vdmVkIGFmdGVyIHJlbW92aW5nIGRlcGVuZGVuY3kgb2YgTGF5ZXJU
cmVlUmVuZGVyZXIgb24gR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCiAgICAgdm9pZCBzZXRI
YXNPd25CYWNraW5nU3RvcmUoYm9vbCBiKSB7IG1faGFzT3duQmFja2luZ1N0b3JlID0gYjsgfQor
ICAgIHZvaWQgc2V0QmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZT4pOwogCiAgICAgdm9pZCBzZXRGaXhlZFRvVmlld3BvcnQoYm9vbCBmaXhlZCkgeyBtX2Zp
eGVkVG9WaWV3cG9ydCA9IGZpeGVkOyB9CiAgICAgYm9vbCBmaXhlZFRvVmlld3BvcnQoKSBjb25z
dCB7IHJldHVybiBtX2ZpeGVkVG9WaWV3cG9ydDsgfQpAQCAtMTAwLDkgKzEwMSw5IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOwogICAgIHZv
aWQgZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlKCk7Ci0gICAgdm9pZCB1cGRhdGVEZWJ1Z0JvcmRl
ckFuZFJlcGFpbnRDb3VudElmTmVlZGVkKCk7CisgICAgdm9pZCB1cGRhdGVEZWJ1Z0JvcmRlckFu
ZFJlcGFpbnRDb3VudCgpOwogICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKTsK
LSAgICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmUoKTsKKyAgICB2b2lkIHByZXBhcmVCYWNraW5n
U3RvcmVJZk5lZWRlZCgpOwogICAgIGJvb2wgc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpIGNvbnN0
OwogICAgIHZvaWQgYW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQoVGltZXI8R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI+Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggZjk0
YzE2ZDEwOTFjNzhmMGU2ZTM4MmI5MGMzYjZmOWVmMDZkMDNkMy4uNjJhMTQzZjQzMmEwZDUzNDlk
NzlmMmRiODExM2I4ZGFlYjFkMjlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAg
LTU0LDE2ICs1NCw2IEBAIGNvbnN0IFRleHR1cmVNYXBwZXJMYXllciogVGV4dHVyZU1hcHBlckxh
eWVyOjpyb290TGF5ZXIoKSBjb25zdAogICAgIHJldHVybiB0aGlzOwogfQogCi12b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCkKLXsKLSAgICBtX2Jh
Y2tpbmdTdG9yZS5jbGVhcigpOwotICAgIG1fY29udGVudHNMYXllciA9IDA7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKQotICAgICAgICBtX2NoaWxk
cmVuW2ldLT5jbGVhckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUoKTsKLSAgICBpZiAobV9zdGF0ZS5t
YXNrTGF5ZXIpCi0gICAgICAgIG1fc3RhdGUubWFza0xheWVyLT5jbGVhckJhY2tpbmdTdG9yZXNS
ZWN1cnNpdmUoKTsKLX0KLQogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmNvbXB1dGVUcmFuc2Zv
cm1zUmVjdXJzaXZlKCkKIHsKICAgICBpZiAobV9zdGF0ZS5zaXplLmlzRW1wdHkoKSAmJiBtX3N0
YXRlLm1hc2tzVG9Cb3VuZHMpCkBAIC00MzcsNiArNDI3LDkgQEAgdm9pZCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoR3JhcGhpY3NMYXll
clRleHQKICAgICAgICAgbV9zaG91bGRVcGRhdGVDdXJyZW50RmlsdGVyc0Zyb21HcmFwaGljc0xh
eWVyID0gdHJ1ZTsKICNlbmRpZgogCisgICAgaWYgKGNoYW5nZU1hc2sgJiBCYWNraW5nU3RvcmVD
aGFuZ2UpCisgICAgICAgIG1fYmFja2luZ1N0b3JlID0gZ3JhcGhpY3NMYXllci0+bV9iYWNraW5n
U3RvcmUuZ2V0KCk7CisKICAgICBpZiAoY2hhbmdlTWFzayAmIFJlcGFpbnRDb3VudENoYW5nZSkK
ICAgICAgICAgbV9zdGF0ZS5yZXBhaW50Q291bnQgPSBncmFwaGljc0xheWVyLT5yZXBhaW50Q291
bnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCmluZGV4IGU1YmUyYjFhYmQ1Y2Q2ZmM4OWNh
ZTJiNTY1OTIwMTI0NWY3OTVmODMuLmVmYmE2OGE2MTJiZWZlM2M1MzYxNGFjZTA4YzQ1MmQ1N2Jj
ZDU0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKQEAgLTc0LDEyICs3NCwxNSBAQCBwdWJs
aWM6CiAgICAgICAgIEZpbHRlckNoYW5nZSA9ICAgICAgICAgICAgICAoMUwgPDwgMjMpLAogCiAg
ICAgICAgIERlYnVnVmlzdWFsc0NoYW5nZSA9ICAgICAgICAoMUwgPDwgMjQpLAotICAgICAgICBS
ZXBhaW50Q291bnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KQorICAgICAgICBSZXBhaW50Q291
bnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KSwKKworICAgICAgICBCYWNraW5nU3RvcmVDaGFu
Z2UgPSAgICAgICAgKDFMIDw8IDI2KQogICAgIH07CiAKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIo
KQogICAgICAgICA6IG1fcGFyZW50KDApCiAgICAgICAgICwgbV9lZmZlY3RUYXJnZXQoMCkKKyAg
ICAgICAgLCBtX2JhY2tpbmdTdG9yZSgwKQogICAgICAgICAsIG1fY29udGVudHNMYXllcigwKQog
ICAgICAgICAsIG1fY3VycmVudE9wYWNpdHkoMSkKICAgICAgICAgLCBtX2NlbnRlclooMCkKQEAg
LTEwMCwxMCArMTAzLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBwYWludCgpOwogCi0gICAgdm9p
ZCBzZXRCYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBi
YWNraW5nU3RvcmUpIHsgbV9iYWNraW5nU3RvcmUgPSBiYWNraW5nU3RvcmU7IH0KLSAgICBQYXNz
UmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSgpIHsgcmV0dXJu
IG1fYmFja2luZ1N0b3JlOyB9Ci0gICAgdm9pZCBjbGVhckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUo
KTsKLQogICAgIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb25EZWx0YUlmTmVlZGVkKGNvbnN0IEZsb2F0
U2l6ZSYpOwogCiAgICAgdm9pZCBhcHBseUFuaW1hdGlvbnNSZWN1cnNpdmVseSgpOwpAQCAtMTU3
LDcgKzE1Niw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFRleHR1cmVNYXBwZXJMYXllcio+IG1f
Y2hpbGRyZW47CiAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBtX3BhcmVudDsKICAgICBUZXh0dXJl
TWFwcGVyTGF5ZXIqIG1fZWZmZWN0VGFyZ2V0OwotICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyQmFj
a2luZ1N0b3JlPiBtX2JhY2tpbmdTdG9yZTsKKyAgICBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3Jl
KiBtX2JhY2tpbmdTdG9yZTsKICAgICBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciogbV9jb250
ZW50c0xheWVyOwogICAgIEdyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0gbV9jdXJyZW50VHJhbnNmb3Jt
OwogICAgIGZsb2F0IG1fY3VycmVudE9wYWNpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5k
ZXJlci5jcHAKaW5kZXggODA1YTg3MzZlOTQyYmNmM2U0M2ViNDkzNjU1ZTBlZTAzMzkzYThkZC4u
ODU2MjAzYzExYzRhNmI5YjYyNWYzNWY0NGRkMjI0N2I2Mzg5ZGFlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZVJlbmRlcmVyLmNwcApAQCAtMzg2LDcgKzM4Niw3IEBAIHZvaWQgTGF5ZXJUcmVl
UmVuZGVyZXI6OmRlbGV0ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklEKQogICAgIE93
blB0cjxHcmFwaGljc0xheWVyPiBsYXllciA9IG1fbGF5ZXJzLnRha2UobGF5ZXJJRCk7CiAgICAg
QVNTRVJUKGxheWVyKTsKIAotICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLnJlbW92ZSh0
b1RleHR1cmVNYXBwZXJMYXllcihsYXllci5nZXQoKSkpOworICAgIG1fYmFja2luZ1N0b3Jlcy5y
ZW1vdmUobGF5ZXIuZ2V0KCkpOwogICAgIG1fZml4ZWRMYXllcnMucmVtb3ZlKGxheWVySUQpOwog
I2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMucmVt
b3ZlKGxheWVySUQpOwpAQCAtNDA3LDEyICs0MDcsOSBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVy
OjpzZXRSb290TGF5ZXJJRChDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCkKIAogQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmUqIExheWVyVHJlZVJlbmRlcmVyOjpnZXRCYWNraW5nU3RvcmUoR3JhcGhp
Y3NMYXllciogZ3JhcGhpY3NMYXllcikKIHsKLSAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVy
ID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllcik7Ci0gICAgQVNTRVJUKGxheWVy
KTsKLSAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlID0gc3RhdGljX2Nh
c3Q8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUqPihsYXllci0+YmFja2luZ1N0b3JlKCkuZ2V0KCkp
OwotCi0gICAgQmFja2luZ1N0b3JlTWFwOjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ1N5bmNCYWNr
aW5nU3RvcmVzLmZpbmQobGF5ZXIpOwotICAgIGlmIChpdCAhPSBtX3BlbmRpbmdTeW5jQmFja2lu
Z1N0b3Jlcy5lbmQoKSkKKyAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3Jl
ID0gMDsKKyAgICBCYWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9iYWNraW5nU3RvcmVz
LmZpbmQoZ3JhcGhpY3NMYXllcik7CisgICAgaWYgKGl0ICE9IG1fYmFja2luZ1N0b3Jlcy5lbmQo
KSkKICAgICAgICAgYmFja2luZ1N0b3JlID0gaXQtPnZhbHVlLmdldCgpOwogICAgIHJldHVybiBi
YWNraW5nU3RvcmU7CiB9CkBAIC00MjksNTAgKzQyNiwyMiBAQCB2b2lkIExheWVyVHJlZVJlbmRl
cmVyOjpwcmVwYXJlQ29udGVudEJhY2tpbmdTdG9yZShHcmFwaGljc0xheWVyKiBncmFwaGljc0xh
eWVyKQogCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVCYWNraW5nU3RvcmVJZk5lZWRl
ZChHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQogewotICAgIFRleHR1cmVNYXBwZXJMYXll
ciogbGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyKTsKLSAgICBBU1NF
UlQobGF5ZXIpOwotCi0gICAgLy8gTWFrZSBzdXJlIHRoZSBsYXllciBkb2VzIG5vdCBhbHJlYWR5
IGhhdmUgYSBiYWNraW5nIHN0b3JlIChjb21taXR0ZWQgb3IgcGVuZGluZykuCi0gICAgQmFja2lu
Z1N0b3JlTWFwOjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmZpbmQo
bGF5ZXIpOwotICAgIGlmIChpdCAhPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5lbmQoKSkg
ewotICAgICAgICBpZiAoIWl0LT52YWx1ZSkgewotICAgICAgICAgICAgLy8gVGhlcmUgaXMgYSBw
ZW5kaW5nIHJlbW92YWwsIGNhbmNlbCBpdC4KLSAgICAgICAgICAgIG1fcGVuZGluZ1N5bmNCYWNr
aW5nU3RvcmVzLnJlbW92ZShpdCk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gVGhlcmUgaXMgYWxy
ZWFkeSBhIHBlbmRpbmcgYWRkaXRpb24uCisgICAgaWYgKGdldEJhY2tpbmdTdG9yZShncmFwaGlj
c0xheWVyKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAobGF5ZXItPmJhY2tpbmdT
dG9yZSgpKQotICAgICAgICByZXR1cm47IC8vIFRoZSBsYXllciBhbHJlYWR5IGhhcyBhIGJhY2tp
bmcgc3RvcmUgKGFuZCBubyBwZW5kaW5nIHJlbW92YWwpLgogCiAgICAgUmVmUHRyPENvb3JkaW5h
dGVkQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNy
ZWF0ZSgpKTsKLQogICAgIGJhY2tpbmdTdG9yZS0+c2V0U2l6ZShncmFwaGljc0xheWVyLT5zaXpl
KCkpOwotICAgIEFTU0VSVCghbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuY29udGFpbnMobGF5
ZXIpKTsKLSAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5hZGQobGF5ZXIsIGJhY2tpbmdT
dG9yZSk7CisgICAgbV9iYWNraW5nU3RvcmVzLmFkZChncmFwaGljc0xheWVyLCBiYWNraW5nU3Rv
cmUpOworICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoZ3JhcGhpY3NMYXllciktPnNl
dEJhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpOwogfQogCiB2b2lkIExheWVyVHJlZVJlbmRlcmVy
OjpyZW1vdmVCYWNraW5nU3RvcmVJZk5lZWRlZChHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVy
KQogewotICAgIFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXll
cihncmFwaGljc0xheWVyKTsKLSAgICBBU1NFUlQobGF5ZXIpOwotCi0gICAgLy8gQ2hlY2sgaWYg
dGhlIGxheW91dCBhbHJlYWR5IGhhcyBhIGJhY2tpbmcgc3RvcmUgKGNvbW1pdHRlZCBvciBwZW5k
aW5nKS4KLSAgICBCYWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nU3luY0Jh
Y2tpbmdTdG9yZXMuZmluZChsYXllcik7Ci0gICAgaWYgKGl0ICE9IG1fcGVuZGluZ1N5bmNCYWNr
aW5nU3RvcmVzLmVuZCgpKSB7Ci0gICAgICAgIGlmIChpdC0+dmFsdWUpIHsKLSAgICAgICAgICAg
IC8vIFRoZXJlIGlzIGEgcGVuZGluZyBhZGRpdGlvbiwgY2FuY2VsIGl0LgotICAgICAgICAgICAg
bV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMucmVtb3ZlKGl0KTsKLSAgICAgICAgfQotICAgICAg
ICAvLyBUaGVyZSBpcyBhbHJlYWR5IGEgcGVuZGluZyByZW1vdmFsLgorICAgIGlmICghZ2V0QmFj
a2luZ1N0b3JlKGdyYXBoaWNzTGF5ZXIpKQogICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKCFsYXllci0+YmFja2luZ1N0b3JlKCkpCi0gICAgICAgIHJldHVybjsgLy8gVGhlIGxheWVy
IGhhcyBubyBiYWNraW5nIHN0b3JlIChhbmQgbm8gcGVuZGluZyBhZGRpdGlvbikuCiAKLSAgICBB
U1NFUlQoIW1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmNvbnRhaW5zKGxheWVyKSk7Ci0gICAg
bV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuYWRkKGxheWVyLCAwKTsKKyAgICBtX3JlbGVhc2Vk
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmVzLmFwcGVuZChtX2JhY2tpbmdTdG9yZXMudGFrZShncmFw
aGljc0xheWVyKSk7CisgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihncmFwaGljc0xh
eWVyKS0+c2V0QmFja2luZ1N0b3JlKDApOwogfQogCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpy
ZXNldEJhY2tpbmdTdG9yZVNpemVUb0xheWVyU2l6ZShHcmFwaGljc0xheWVyKiBncmFwaGljc0xh
eWVyKQpAQCAtNTUwLDggKzUxOSw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZUlt
YWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQpCiB7CiAgICAgQVNT
RVJUKG1faW1hZ2VCYWNraW5ncy5jb250YWlucyhpbWFnZUlEKSk7CiAKLSAgICAvLyBXZSBkb24n
dCB3YW50IFRleHR1cmVNYXBwZXJMYXllciByZWZlcnMgYSBkYW5nbGluZyBwb2ludGVyLgotICAg
IG1fcmVsZWFzZWRJbWFnZUJhY2tpbmdzLmFwcGVuZChtX2ltYWdlQmFja2luZ3MudGFrZShpbWFn
ZUlEKSk7CisgICAgbV9yZWxlYXNlZENvb3JkaW5hdGVkQmFja2luZ1N0b3Jlcy5hcHBlbmQobV9p
bWFnZUJhY2tpbmdzLnRha2UoaW1hZ2VJRCkpOwogfQogCiB2b2lkIExheWVyVHJlZVJlbmRlcmVy
Ojphc3NpZ25JbWFnZUJhY2tpbmdUb0xheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBDb29yZGlu
YXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQpCkBAIC01NjUsOSArNTMzLDkgQEAgdm9pZCBMYXll
clRyZWVSZW5kZXJlcjo6YXNzaWduSW1hZ2VCYWNraW5nVG9MYXllcihHcmFwaGljc0xheWVyKiBs
YXllciwgQ29vcmRpbmEKICAgICBsYXllci0+c2V0Q29udGVudHNUb01lZGlhKGl0LT52YWx1ZS5n
ZXQoKSk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZVJlbGVhc2VkSW1hZ2VC
YWNraW5nc0lmTmVlZGVkKCkKK3ZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZVJlbGVhc2Vk
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmVzSWZOZWVkZWQoKQogewotICAgIG1fcmVsZWFzZWRJbWFn
ZUJhY2tpbmdzLmNsZWFyKCk7CisgICAgbV9yZWxlYXNlZENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
cy5jbGVhcigpOwogfQogCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpjb21taXRQZW5kaW5nQmFj
a2luZ1N0b3JlT3BlcmF0aW9ucygpCkBAIC01NzcsMTUgKzU0NSw2IEBAIHZvaWQgTGF5ZXJUcmVl
UmVuZGVyZXI6OmNvbW1pdFBlbmRpbmdCYWNraW5nU3RvcmVPcGVyYXRpb25zKCkKICAgICAgICAg
KCppdCktPmNvbW1pdFRpbGVPcGVyYXRpb25zKG1fdGV4dHVyZU1hcHBlci5nZXQoKSk7CiAKICAg
ICBtX2JhY2tpbmdTdG9yZXNXaXRoUGVuZGluZ0J1ZmZlcnMuY2xlYXIoKTsKLQotICAgIHsKLSAg
ICAgICAgQmFja2luZ1N0b3JlTWFwOjppdGVyYXRvciBlbmQgPSBtX3BlbmRpbmdTeW5jQmFja2lu
Z1N0b3Jlcy5lbmQoKTsKLSAgICAgICAgQmFja2luZ1N0b3JlTWFwOjppdGVyYXRvciBpdCA9IG1f
cGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmJlZ2luKCk7Ci0gICAgICAgIGZvciAoO2l0ICE9IGVu
ZDsgKytpdCkKLSAgICAgICAgICAgIGl0LT5rZXktPnNldEJhY2tpbmdTdG9yZShpdC0+dmFsdWUp
OwotCi0gICAgICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmNsZWFyKCk7Ci0gICAgfQog
fQogCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpmbHVzaExheWVyQ2hhbmdlcygpCkBAIC01OTcs
NyArNTU2LDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6Zmx1c2hMYXllckNoYW5nZXMoKQog
CiAgICAgbV9yb290TGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZShGbG9hdFJlY3QoKSk7CiAg
ICAgY29tbWl0UGVuZGluZ0JhY2tpbmdTdG9yZU9wZXJhdGlvbnMoKTsKLSAgICByZW1vdmVSZWxl
YXNlZEltYWdlQmFja2luZ3NJZk5lZWRlZCgpOworICAgIHJlbW92ZVJlbGVhc2VkQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmVzSWZOZWVkZWQoKTsKIAogICAgIC8vIFRoZSBwZW5kaW5nIHRpbGVzIHN0
YXRlIGlzIG9uIGl0cyB3YXkgZm9yIHRoZSBzY3JlZW4sIHRlbGwgdGhlIHdlYiBwcm9jZXNzIHRv
IHJlbmRlciB0aGUgbmV4dCBvbmUuCiAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoYmluZCgmTGF5
ZXJUcmVlUmVuZGVyZXI6OnJlbmRlck5leHRGcmFtZSwgdGhpcykpOwpAQCAtNjQ1LDExICs2MDQs
NiBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzeW5jUmVtb3RlQ29udGVudCgpCiAKIHZvaWQg
TGF5ZXJUcmVlUmVuZGVyZXI6OnB1cmdlR0xSZXNvdXJjZXMoKQogewotICAgIFRleHR1cmVNYXBw
ZXJMYXllciogbGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihyb290TGF5ZXIoKSk7Ci0KLSAg
ICBpZiAobGF5ZXIpCi0gICAgICAgIGxheWVyLT5jbGVhckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUo
KTsKLQogICAgIG1faW1hZ2VCYWNraW5ncy5jbGVhcigpOwogI2lmIFVTRShHUkFQSElDU19TVVJG
QUNFKQogICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMuY2xlYXIoKTsKQEAgLTY2MCw3ICs2MTQs
NyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpwdXJnZUdMUmVzb3VyY2VzKCkKICAgICBtX2xh
eWVycy5jbGVhcigpOwogICAgIG1fZml4ZWRMYXllcnMuY2xlYXIoKTsKICAgICBtX3RleHR1cmVN
YXBwZXIuY2xlYXIoKTsKLSAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5jbGVhcigpOwor
ICAgIG1fYmFja2luZ1N0b3Jlcy5jbGVhcigpOwogICAgIG1fYmFja2luZ1N0b3Jlc1dpdGhQZW5k
aW5nQnVmZmVycy5jbGVhcigpOwogCiAgICAgc2V0QWN0aXZlKGZhbHNlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJl
bmRlcmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVSZW5kZXJlci5oCmluZGV4IGRiZmE2YTg5ZWU3Y2Q4ZDU0OGRlNjdmMGZhOTI5NGU2
NDE5ZWQ3ZmYuLmFiZjEwYTA0YzU0MTFkY2JiOWUxOTMxZjA2NWE5YTdkMDI5NzdkYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZVJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaApAQCAtMTQ5LDkgKzE0OSw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkZWxldGVMYXllcihDb29yZGluYXRlZExheWVySUQpOwogCiAgICAgdm9pZCBh
c3NpZ25JbWFnZUJhY2tpbmdUb0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBDb29yZGlu
YXRlZEltYWdlQmFja2luZ0lEKTsKLSAgICB2b2lkIHJlbW92ZVJlbGVhc2VkSW1hZ2VCYWNraW5n
c0lmTmVlZGVkKCk7CiAgICAgdm9pZCBlbnN1cmVSb290TGF5ZXIoKTsKICAgICB2b2lkIGNvbW1p
dFBlbmRpbmdCYWNraW5nU3RvcmVPcGVyYXRpb25zKCk7CisgICAgdm9pZCByZW1vdmVSZWxlYXNl
ZENvb3JkaW5hdGVkQmFja2luZ1N0b3Jlc0lmTmVlZGVkKCk7CiAKICAgICBDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZSogZ2V0QmFja2luZ1N0b3JlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKICAg
ICB2b2lkIHByZXBhcmVDb250ZW50QmFja2luZ1N0b3JlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIq
KTsKQEAgLTE3MCwxMSArMTcwLDEyIEBAIHByaXZhdGU6CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
PiA+IEltYWdlQmFja2luZ01hcDsKICAgICBJbWFnZUJhY2tpbmdNYXAgbV9pbWFnZUJhY2tpbmdz
OwotICAgIFZlY3RvcjxSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+ID4gbV9yZWxlYXNl
ZEltYWdlQmFja2luZ3M7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6VGV4dHVyZU1h
cHBlckxheWVyKiwgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiA+IEJhY2tpbmdTdG9y
ZU1hcDsKLSAgICBCYWNraW5nU3RvcmVNYXAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXM7Cisg
ICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBSZWZQdHI8Q29vcmRp
bmF0ZWRCYWNraW5nU3RvcmU+ID4gQmFja2luZ1N0b3JlTWFwOworICAgIEJhY2tpbmdTdG9yZU1h
cCBtX2JhY2tpbmdTdG9yZXM7CiAKKyAgICAvLyBXZSBkb24ndCB3YW50IFRleHR1cmVNYXBwZXJM
YXllciByZWZlcnMgYSBkYW5nbGluZyBwb2ludGVyLgorICAgIFZlY3RvcjxSZWZQdHI8Q29vcmRp
bmF0ZWRCYWNraW5nU3RvcmU+ID4gbV9yZWxlYXNlZENvb3JkaW5hdGVkQmFja2luZ1N0b3JlczsK
ICAgICBIYXNoU2V0PFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gPiBtX2JhY2tpbmdT
dG9yZXNXaXRoUGVuZGluZ0J1ZmZlcnM7CiAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185169</attachid>
            <date>2013-01-28 22:59:48 -0800</date>
            <delta_ts>2013-01-29 21:54:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107099-20130129155613.patch</filename>
            <type>text/plain</type>
            <size>19032</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDlkYmM3NTQ3MzM5OTFm
OTgwNzA5ODZhMjhlNmY5Nzg2MjBkZDljOS4uNDkwM2Y0OTY0ZmYyNDI0MmUzYjQxN2JjOGE0M2E3
ZjA0NTYyYjViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDEzLTAxLTI4ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZW1vdmUgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMgaW4gTGF5ZXJU
cmVlUmVuZGVyZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDcwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEJhY2tpbmdTdG9yZSgpIHNv
IHRoYXQKKyAgICAgICAgTGF5ZXJUcmVlUmVuZGVyZXIgc2V0cyBhIGJhY2tpbmcgc3RvcmUgdG8g
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCisKKyAgICAgICAgUmVtb3ZlIFRleHR1cmVNYXBw
ZXJMYXllcjo6Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCkgYmVjYXVzZQorICAgICAgICBU
ZXh0dXJlTWFwcGVyTGF5ZXIgZG9lcyBub3QgbWFuYWdlIHRoZSBsaWZlIGN5Y2xlIG9mIGEgYmFj
a2luZyBzdG9yZS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGNvbXBvc2l0aW5nIHRl
c3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3Jl
SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tp
bmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAoR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVy
OjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlRleHR1cmVNYXBwZXJMYXllcik6CisgICAgICAgIChU
ZXh0dXJlTWFwcGVyTGF5ZXIpOgorCisyMDEzLTAxLTI4ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRl
bGxhQGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIFtUZXhtYXBdIFJlZmFjdG9yIGNvZGUgcmVs
YXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQuCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGU5
MzlmMzY2N2Y5MTlkOWZjYTQxMzVhYzhjOTFlMWE3NzIzZTNlNjYuLjM3ZGNjNDA2MmU4MzJmMjYz
YmQ1OTc3NzY1YWNmMWMwMDYyYTFmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzMCBAQAogMjAx
My0wMS0yOCAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAg
ICAgICBDb29yZGluYXRlZCBHcmFwaGljczogUmVtb3ZlIG1fcGVuZGluZ1N5bmNCYWNraW5nU3Rv
cmVzIGluIExheWVyVHJlZVJlbmRlcmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiBxdWV1aW5nIHRoZSBzZXR0aW5nIG9mIGJhY2tp
bmcgc3RvcmVzIGluIExheWVyVHJlZVJlbmRlcmVyLAorICAgICAgICBhbmQgdGhlbiBzZXR0aW5n
IHRoZW0gZGlyZWN0bHkgdG8gVGV4dHVyZU1hcHBlckxheWVyLCB3ZSBhbGxvdworICAgICAgICBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcidzIGV4aXN0aW5nIHF1ZXVpbmcgbWVjaGFuaXNtIHRv
IGhhbmRsZSB0aGF0LgorICAgICAgICBJbnN0ZWFkIG9mIGEgbV9wZW5kaW5nU3luY0JhY2tpbmdT
dG9yZXMgcXVldWUsIHdlIGhhdmUgYSBtX2JhY2tpbmdTdG9yZXMKKyAgICAgICAgcXVldWUgd2hp
Y2ggY2FuIGJlIGFwcGxpZWQgbXVjaCBtb3JlIGVhc2lseSB0byB0aGUgbGF5ZXIgdHJlZS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmRlbGV0ZUxheWVyKToK
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmdldEJhY2tpbmdTdG9yZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVCYWNraW5nU3RvcmVJZk5l
ZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVCYWNraW5n
U3RvcmVJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpyZW1v
dmVJbWFnZUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6cmVt
b3ZlUmVsZWFzZWRDb29yZGluYXRlZEJhY2tpbmdTdG9yZXNJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpjb21taXRQZW5kaW5nQmFja2luZ1N0b3JlT3BlcmF0
aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpmbHVzaExheWVyQ2hh
bmdlcyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpwdXJnZUdMUmVzb3Vy
Y2VzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVS
ZW5kZXJlci5oOgorCisyMDEzLTAxLTI4ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBh
bnkxMDAubmV0PgorCiAgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBSZWZhY3RvciBjb2Rl
IHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50LgogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3OTEwCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDg4YjBlMDA1Mjk3ZmEyOWRhNjky
ZjZiMzllNzkzYzI2NGI3MTlhZTIuLjgwYWVlZTQ4YmU1ZmNhN2MyNDYzNWQyYzE1NzI2YWEzMDQ1
NDBiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAt
NDAyLDE3ICs0MDIsMzIgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hv
d1JlcGFpbnRDb3VudGVyKGJvb2wgc2hvdykKICovCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKIHsKLSAgICB1
cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudElmTmVlZGVkKCk7CisgICAgcHJlcGFyZUJh
Y2tpbmdTdG9yZUlmTmVlZGVkKCk7CiAgICAgbV9sYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRl
Rm9yVGhpc0xheWVyT25seSh0aGlzKTsKICAgICB1cGRhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgp
OwogICAgIGRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudElmTmVlZGVk
KCkKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmVJ
Zk5lZWRlZCgpCiB7CiAgICAgaWYgKCFtX2hhc093bkJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0
dXJuOworICAgIGlmICghc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKSB7CisgICAgICAgIG1fYmFj
a2luZ1N0b3JlLmNsZWFyKCk7CisgICAgICAgIG1fY2hhbmdlTWFzayB8PSBUZXh0dXJlTWFwcGVy
TGF5ZXI6OkJhY2tpbmdTdG9yZUNoYW5nZTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIW1f
YmFja2luZ1N0b3JlKSB7CisgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IFRleHR1cmVNYXBw
ZXJUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2NoYW5nZU1hc2sg
fD0gVGV4dHVyZU1hcHBlckxheWVyOjpCYWNraW5nU3RvcmVDaGFuZ2U7CisgICAgICAgIH0KKyAg
ICB9CiAKKyAgICB1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCgpOworfQorCit2b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRD
b3VudCgpCit7CisgICAgQVNTRVJUKG1faGFzT3duQmFja2luZ1N0b3JlKTsKICAgICBpZiAoaXNT
aG93aW5nRGVidWdCb3JkZXIoKSkKICAgICAgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CiAK
QEAgLTQ1NywyMCArNDcyLDE2IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVw
ZGF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkKIHsKICAgICBpZiAoIW1faGFzT3duQmFja2luZ1N0
b3JlKQogICAgICAgICByZXR1cm47Ci0gICAgcHJlcGFyZUJhY2tpbmdTdG9yZSgpOwotICAgIG1f
bGF5ZXItPnNldEJhY2tpbmdTdG9yZShtX2JhY2tpbmdTdG9yZSk7Ci19CiAKLXZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmUoKQotewogICAgIFRleHR1
cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIgPSBtX2xheWVyLT50ZXh0dXJlTWFwcGVyKCk7CiAgICAg
aWYgKCF0ZXh0dXJlTWFwcGVyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXNob3VsZEhh
dmVCYWNraW5nU3RvcmUoKSkgewotICAgICAgICBtX2JhY2tpbmdTdG9yZS5jbGVhcigpOworICAg
ICAgICBBU1NFUlQoIW1fYmFja2luZ1N0b3JlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwogCiAgICAgSW50UmVjdCBkaXJ0eVJlY3QgPSBlbmNs
b3NpbmdJbnRSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIG1fc2l6ZSkpOwogICAg
IGlmICghbV9uZWVkc0Rpc3BsYXkpCkBAIC00NzgsOSArNDg5LDYgQEAgdm9pZCBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tpbmdTdG9yZSgpCiAgICAgaWYgKGRpcnR5UmVj
dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9iYWNraW5nU3RvcmUp
Ci0gICAgICAgIG1fYmFja2luZ1N0b3JlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
OjpjcmVhdGUoKTsKLQogI2lmIFBMQVRGT1JNKFFUKQogICAgIEFTU0VSVChkeW5hbWljX2Nhc3Q8
VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKj4obV9iYWNraW5nU3RvcmUuZ2V0KCkpKTsK
ICNlbmRpZgpAQCAtNTQ2LDYgKzU1NCwxNiBAQCBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB9CiAjZW5k
aWYKIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QmFja2luZ1N0b3JlKFBh
c3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKQoreworICAg
IEFTU0VSVCghbV9oYXNPd25CYWNraW5nU3RvcmUpOworICAgIGlmIChtX2JhY2tpbmdTdG9yZSA9
PSBiYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2luZ1N0b3JlID0g
YmFja2luZ1N0b3JlOworICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkJhY2tp
bmdTdG9yZUNoYW5nZSk7Cit9CisKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNl
dFJlcGFpbnRDb3VudChpbnQgcmVwYWludENvdW50KQogewogICAgIG1fcmVwYWludENvdW50ID0g
cmVwYWludENvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRl
eCA0OWI1MDRiNjNiY2QyZTEzM2MxNWYxMDNkMjBiZGVlNDNkY2I4NmQ0Li42MmY0NTgwM2NmZWYy
YWM0NzJmYTg5YTIwYzAyNzk4YWExMzFjNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuaApAQCAtODksNiArODksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTog
SXQgd2lsbCBiZSByZW1vdmVkIGFmdGVyIHJlbW92aW5nIGRlcGVuZGVuY3kgb2YgTGF5ZXJUcmVl
UmVuZGVyZXIgb24gR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCiAgICAgdm9pZCBzZXRIYXNP
d25CYWNraW5nU3RvcmUoYm9vbCBiKSB7IG1faGFzT3duQmFja2luZ1N0b3JlID0gYjsgfQorICAg
IHZvaWQgc2V0QmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9y
ZT4pOwogCiAgICAgdm9pZCBzZXRGaXhlZFRvVmlld3BvcnQoYm9vbCBmaXhlZCkgeyBtX2ZpeGVk
VG9WaWV3cG9ydCA9IGZpeGVkOyB9CiAgICAgYm9vbCBmaXhlZFRvVmlld3BvcnQoKSBjb25zdCB7
IHJldHVybiBtX2ZpeGVkVG9WaWV3cG9ydDsgfQpAQCAtMTAwLDkgKzEwMSw5IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOwogICAgIHZvaWQg
ZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlKCk7Ci0gICAgdm9pZCB1cGRhdGVEZWJ1Z0JvcmRlckFu
ZFJlcGFpbnRDb3VudElmTmVlZGVkKCk7CisgICAgdm9pZCB1cGRhdGVEZWJ1Z0JvcmRlckFuZFJl
cGFpbnRDb3VudCgpOwogICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKTsKLSAg
ICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmUoKTsKKyAgICB2b2lkIHByZXBhcmVCYWNraW5nU3Rv
cmVJZk5lZWRlZCgpOwogICAgIGJvb2wgc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpIGNvbnN0Owog
ICAgIHZvaWQgYW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQoVGltZXI8R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI+Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggZjk0YzE2
ZDEwOTFjNzhmMGU2ZTM4MmI5MGMzYjZmOWVmMDZkMDNkMy4uNjJhMTQzZjQzMmEwZDUzNDlkNzlm
MmRiODExM2I4ZGFlYjFkMjlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTU0
LDE2ICs1NCw2IEBAIGNvbnN0IFRleHR1cmVNYXBwZXJMYXllciogVGV4dHVyZU1hcHBlckxheWVy
Ojpyb290TGF5ZXIoKSBjb25zdAogICAgIHJldHVybiB0aGlzOwogfQogCi12b2lkIFRleHR1cmVN
YXBwZXJMYXllcjo6Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCkKLXsKLSAgICBtX2JhY2tp
bmdTdG9yZS5jbGVhcigpOwotICAgIG1fY29udGVudHNMYXllciA9IDA7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKQotICAgICAgICBtX2NoaWxkcmVu
W2ldLT5jbGVhckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUoKTsKLSAgICBpZiAobV9zdGF0ZS5tYXNr
TGF5ZXIpCi0gICAgICAgIG1fc3RhdGUubWFza0xheWVyLT5jbGVhckJhY2tpbmdTdG9yZXNSZWN1
cnNpdmUoKTsKLX0KLQogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1z
UmVjdXJzaXZlKCkKIHsKICAgICBpZiAobV9zdGF0ZS5zaXplLmlzRW1wdHkoKSAmJiBtX3N0YXRl
Lm1hc2tzVG9Cb3VuZHMpCkBAIC00MzcsNiArNDI3LDkgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5
ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoR3JhcGhpY3NMYXllclRl
eHQKICAgICAgICAgbV9zaG91bGRVcGRhdGVDdXJyZW50RmlsdGVyc0Zyb21HcmFwaGljc0xheWVy
ID0gdHJ1ZTsKICNlbmRpZgogCisgICAgaWYgKGNoYW5nZU1hc2sgJiBCYWNraW5nU3RvcmVDaGFu
Z2UpCisgICAgICAgIG1fYmFja2luZ1N0b3JlID0gZ3JhcGhpY3NMYXllci0+bV9iYWNraW5nU3Rv
cmUuZ2V0KCk7CisKICAgICBpZiAoY2hhbmdlTWFzayAmIFJlcGFpbnRDb3VudENoYW5nZSkKICAg
ICAgICAgbV9zdGF0ZS5yZXBhaW50Q291bnQgPSBncmFwaGljc0xheWVyLT5yZXBhaW50Q291bnQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCmluZGV4IGU1YmUyYjFhYmQ1Y2Q2ZmM4OWNhZTJi
NTY1OTIwMTI0NWY3OTVmODMuLmVmYmE2OGE2MTJiZWZlM2M1MzYxNGFjZTA4YzQ1MmQ1N2JjZDU0
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKQEAgLTc0LDEyICs3NCwxNSBAQCBwdWJsaWM6
CiAgICAgICAgIEZpbHRlckNoYW5nZSA9ICAgICAgICAgICAgICAoMUwgPDwgMjMpLAogCiAgICAg
ICAgIERlYnVnVmlzdWFsc0NoYW5nZSA9ICAgICAgICAoMUwgPDwgMjQpLAotICAgICAgICBSZXBh
aW50Q291bnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KQorICAgICAgICBSZXBhaW50Q291bnRD
aGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KSwKKworICAgICAgICBCYWNraW5nU3RvcmVDaGFuZ2Ug
PSAgICAgICAgKDFMIDw8IDI2KQogICAgIH07CiAKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIoKQog
ICAgICAgICA6IG1fcGFyZW50KDApCiAgICAgICAgICwgbV9lZmZlY3RUYXJnZXQoMCkKKyAgICAg
ICAgLCBtX2JhY2tpbmdTdG9yZSgwKQogICAgICAgICAsIG1fY29udGVudHNMYXllcigwKQogICAg
ICAgICAsIG1fY3VycmVudE9wYWNpdHkoMSkKICAgICAgICAgLCBtX2NlbnRlclooMCkKQEAgLTEw
MCwxMCArMTAzLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBwYWludCgpOwogCi0gICAgdm9pZCBz
ZXRCYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBiYWNr
aW5nU3RvcmUpIHsgbV9iYWNraW5nU3RvcmUgPSBiYWNraW5nU3RvcmU7IH0KLSAgICBQYXNzUmVm
UHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSgpIHsgcmV0dXJuIG1f
YmFja2luZ1N0b3JlOyB9Ci0gICAgdm9pZCBjbGVhckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUoKTsK
LQogICAgIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb25EZWx0YUlmTmVlZGVkKGNvbnN0IEZsb2F0U2l6
ZSYpOwogCiAgICAgdm9pZCBhcHBseUFuaW1hdGlvbnNSZWN1cnNpdmVseSgpOwpAQCAtMTU3LDcg
KzE1Niw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFRleHR1cmVNYXBwZXJMYXllcio+IG1fY2hp
bGRyZW47CiAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBtX3BhcmVudDsKICAgICBUZXh0dXJlTWFw
cGVyTGF5ZXIqIG1fZWZmZWN0VGFyZ2V0OwotICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2lu
Z1N0b3JlPiBtX2JhY2tpbmdTdG9yZTsKKyAgICBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlKiBt
X2JhY2tpbmdTdG9yZTsKICAgICBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciogbV9jb250ZW50
c0xheWVyOwogICAgIEdyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0gbV9jdXJyZW50VHJhbnNmb3JtOwog
ICAgIGZsb2F0IG1fY3VycmVudE9wYWNpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJl
ci5jcHAKaW5kZXggODA1YTg3MzZlOTQyYmNmM2U0M2ViNDkzNjU1ZTBlZTAzMzkzYThkZC4uODU2
MjAzYzExYzRhNmI5YjYyNWYzNWY0NGRkMjI0N2I2Mzg5ZGFlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZVJlbmRlcmVyLmNwcApAQCAtMzg2LDcgKzM4Niw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVu
ZGVyZXI6OmRlbGV0ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklEKQogICAgIE93blB0
cjxHcmFwaGljc0xheWVyPiBsYXllciA9IG1fbGF5ZXJzLnRha2UobGF5ZXJJRCk7CiAgICAgQVNT
RVJUKGxheWVyKTsKIAotICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLnJlbW92ZSh0b1Rl
eHR1cmVNYXBwZXJMYXllcihsYXllci5nZXQoKSkpOworICAgIG1fYmFja2luZ1N0b3Jlcy5yZW1v
dmUobGF5ZXIuZ2V0KCkpOwogICAgIG1fZml4ZWRMYXllcnMucmVtb3ZlKGxheWVySUQpOwogI2lm
IFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMucmVtb3Zl
KGxheWVySUQpOwpAQCAtNDA3LDEyICs0MDcsOSBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpz
ZXRSb290TGF5ZXJJRChDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCkKIAogQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmUqIExheWVyVHJlZVJlbmRlcmVyOjpnZXRCYWNraW5nU3RvcmUoR3JhcGhpY3NM
YXllciogZ3JhcGhpY3NMYXllcikKIHsKLSAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyID0g
dG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllcik7Ci0gICAgQVNTRVJUKGxheWVyKTsK
LSAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlID0gc3RhdGljX2Nhc3Q8
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUqPihsYXllci0+YmFja2luZ1N0b3JlKCkuZ2V0KCkpOwot
Ci0gICAgQmFja2luZ1N0b3JlTWFwOjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ1N5bmNCYWNraW5n
U3RvcmVzLmZpbmQobGF5ZXIpOwotICAgIGlmIChpdCAhPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0
b3Jlcy5lbmQoKSkKKyAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlID0g
MDsKKyAgICBCYWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9iYWNraW5nU3RvcmVzLmZp
bmQoZ3JhcGhpY3NMYXllcik7CisgICAgaWYgKGl0ICE9IG1fYmFja2luZ1N0b3Jlcy5lbmQoKSkK
ICAgICAgICAgYmFja2luZ1N0b3JlID0gaXQtPnZhbHVlLmdldCgpOwogICAgIHJldHVybiBiYWNr
aW5nU3RvcmU7CiB9CkBAIC00MjksNTAgKzQyNiwyMiBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVy
OjpwcmVwYXJlQ29udGVudEJhY2tpbmdTdG9yZShHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVy
KQogCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVCYWNraW5nU3RvcmVJZk5lZWRlZChH
cmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQogewotICAgIFRleHR1cmVNYXBwZXJMYXllciog
bGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyKTsKLSAgICBBU1NFUlQo
bGF5ZXIpOwotCi0gICAgLy8gTWFrZSBzdXJlIHRoZSBsYXllciBkb2VzIG5vdCBhbHJlYWR5IGhh
dmUgYSBiYWNraW5nIHN0b3JlIChjb21taXR0ZWQgb3IgcGVuZGluZykuCi0gICAgQmFja2luZ1N0
b3JlTWFwOjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmZpbmQobGF5
ZXIpOwotICAgIGlmIChpdCAhPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5lbmQoKSkgewot
ICAgICAgICBpZiAoIWl0LT52YWx1ZSkgewotICAgICAgICAgICAgLy8gVGhlcmUgaXMgYSBwZW5k
aW5nIHJlbW92YWwsIGNhbmNlbCBpdC4KLSAgICAgICAgICAgIG1fcGVuZGluZ1N5bmNCYWNraW5n
U3RvcmVzLnJlbW92ZShpdCk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gVGhlcmUgaXMgYWxyZWFk
eSBhIHBlbmRpbmcgYWRkaXRpb24uCisgICAgaWYgKGdldEJhY2tpbmdTdG9yZShncmFwaGljc0xh
eWVyKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAobGF5ZXItPmJhY2tpbmdTdG9y
ZSgpKQotICAgICAgICByZXR1cm47IC8vIFRoZSBsYXllciBhbHJlYWR5IGhhcyBhIGJhY2tpbmcg
c3RvcmUgKGFuZCBubyBwZW5kaW5nIHJlbW92YWwpLgogCiAgICAgUmVmUHRyPENvb3JkaW5hdGVk
QmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0
ZSgpKTsKLQogICAgIGJhY2tpbmdTdG9yZS0+c2V0U2l6ZShncmFwaGljc0xheWVyLT5zaXplKCkp
OwotICAgIEFTU0VSVCghbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuY29udGFpbnMobGF5ZXIp
KTsKLSAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5hZGQobGF5ZXIsIGJhY2tpbmdTdG9y
ZSk7CisgICAgbV9iYWNraW5nU3RvcmVzLmFkZChncmFwaGljc0xheWVyLCBiYWNraW5nU3RvcmUp
OworICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoZ3JhcGhpY3NMYXllciktPnNldEJh
Y2tpbmdTdG9yZShiYWNraW5nU3RvcmUpOwogfQogCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpy
ZW1vdmVCYWNraW5nU3RvcmVJZk5lZWRlZChHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQog
ewotICAgIFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihn
cmFwaGljc0xheWVyKTsKLSAgICBBU1NFUlQobGF5ZXIpOwotCi0gICAgLy8gQ2hlY2sgaWYgdGhl
IGxheW91dCBhbHJlYWR5IGhhcyBhIGJhY2tpbmcgc3RvcmUgKGNvbW1pdHRlZCBvciBwZW5kaW5n
KS4KLSAgICBCYWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nU3luY0JhY2tp
bmdTdG9yZXMuZmluZChsYXllcik7Ci0gICAgaWYgKGl0ICE9IG1fcGVuZGluZ1N5bmNCYWNraW5n
U3RvcmVzLmVuZCgpKSB7Ci0gICAgICAgIGlmIChpdC0+dmFsdWUpIHsKLSAgICAgICAgICAgIC8v
IFRoZXJlIGlzIGEgcGVuZGluZyBhZGRpdGlvbiwgY2FuY2VsIGl0LgotICAgICAgICAgICAgbV9w
ZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMucmVtb3ZlKGl0KTsKLSAgICAgICAgfQotICAgICAgICAv
LyBUaGVyZSBpcyBhbHJlYWR5IGEgcGVuZGluZyByZW1vdmFsLgorICAgIGlmICghZ2V0QmFja2lu
Z1N0b3JlKGdyYXBoaWNzTGF5ZXIpKQogICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KCFsYXllci0+YmFja2luZ1N0b3JlKCkpCi0gICAgICAgIHJldHVybjsgLy8gVGhlIGxheWVyIGhh
cyBubyBiYWNraW5nIHN0b3JlIChhbmQgbm8gcGVuZGluZyBhZGRpdGlvbikuCiAKLSAgICBBU1NF
UlQoIW1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmNvbnRhaW5zKGxheWVyKSk7Ci0gICAgbV9w
ZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuYWRkKGxheWVyLCAwKTsKKyAgICBtX3JlbGVhc2VkQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmVzLmFwcGVuZChtX2JhY2tpbmdTdG9yZXMudGFrZShncmFwaGlj
c0xheWVyKSk7CisgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihncmFwaGljc0xheWVy
KS0+c2V0QmFja2luZ1N0b3JlKDApOwogfQogCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpyZXNl
dEJhY2tpbmdTdG9yZVNpemVUb0xheWVyU2l6ZShHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVy
KQpAQCAtNTUwLDggKzUxOSw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZUltYWdl
QmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQpCiB7CiAgICAgQVNTRVJU
KG1faW1hZ2VCYWNraW5ncy5jb250YWlucyhpbWFnZUlEKSk7CiAKLSAgICAvLyBXZSBkb24ndCB3
YW50IFRleHR1cmVNYXBwZXJMYXllciByZWZlcnMgYSBkYW5nbGluZyBwb2ludGVyLgotICAgIG1f
cmVsZWFzZWRJbWFnZUJhY2tpbmdzLmFwcGVuZChtX2ltYWdlQmFja2luZ3MudGFrZShpbWFnZUlE
KSk7CisgICAgbV9yZWxlYXNlZENvb3JkaW5hdGVkQmFja2luZ1N0b3Jlcy5hcHBlbmQobV9pbWFn
ZUJhY2tpbmdzLnRha2UoaW1hZ2VJRCkpOwogfQogCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjph
c3NpZ25JbWFnZUJhY2tpbmdUb0xheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBDb29yZGluYXRl
ZEltYWdlQmFja2luZ0lEIGltYWdlSUQpCkBAIC01NjUsOSArNTMzLDkgQEAgdm9pZCBMYXllclRy
ZWVSZW5kZXJlcjo6YXNzaWduSW1hZ2VCYWNraW5nVG9MYXllcihHcmFwaGljc0xheWVyKiBsYXll
ciwgQ29vcmRpbmEKICAgICBsYXllci0+c2V0Q29udGVudHNUb01lZGlhKGl0LT52YWx1ZS5nZXQo
KSk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZVJlbGVhc2VkSW1hZ2VCYWNr
aW5nc0lmTmVlZGVkKCkKK3ZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZVJlbGVhc2VkQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmVzSWZOZWVkZWQoKQogewotICAgIG1fcmVsZWFzZWRJbWFnZUJh
Y2tpbmdzLmNsZWFyKCk7CisgICAgbV9yZWxlYXNlZENvb3JkaW5hdGVkQmFja2luZ1N0b3Jlcy5j
bGVhcigpOwogfQogCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpjb21taXRQZW5kaW5nQmFja2lu
Z1N0b3JlT3BlcmF0aW9ucygpCkBAIC01NzcsMTUgKzU0NSw2IEBAIHZvaWQgTGF5ZXJUcmVlUmVu
ZGVyZXI6OmNvbW1pdFBlbmRpbmdCYWNraW5nU3RvcmVPcGVyYXRpb25zKCkKICAgICAgICAgKCpp
dCktPmNvbW1pdFRpbGVPcGVyYXRpb25zKG1fdGV4dHVyZU1hcHBlci5nZXQoKSk7CiAKICAgICBt
X2JhY2tpbmdTdG9yZXNXaXRoUGVuZGluZ0J1ZmZlcnMuY2xlYXIoKTsKLQotICAgIHsKLSAgICAg
ICAgQmFja2luZ1N0b3JlTWFwOjppdGVyYXRvciBlbmQgPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0
b3Jlcy5lbmQoKTsKLSAgICAgICAgQmFja2luZ1N0b3JlTWFwOjppdGVyYXRvciBpdCA9IG1fcGVu
ZGluZ1N5bmNCYWNraW5nU3RvcmVzLmJlZ2luKCk7Ci0gICAgICAgIGZvciAoO2l0ICE9IGVuZDsg
KytpdCkKLSAgICAgICAgICAgIGl0LT5rZXktPnNldEJhY2tpbmdTdG9yZShpdC0+dmFsdWUpOwot
Ci0gICAgICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmNsZWFyKCk7Ci0gICAgfQogfQog
CiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpmbHVzaExheWVyQ2hhbmdlcygpCkBAIC01OTcsNyAr
NTU2LDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6Zmx1c2hMYXllckNoYW5nZXMoKQogCiAg
ICAgbV9yb290TGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZShGbG9hdFJlY3QoKSk7CiAgICAg
Y29tbWl0UGVuZGluZ0JhY2tpbmdTdG9yZU9wZXJhdGlvbnMoKTsKLSAgICByZW1vdmVSZWxlYXNl
ZEltYWdlQmFja2luZ3NJZk5lZWRlZCgpOworICAgIHJlbW92ZVJlbGVhc2VkQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmVzSWZOZWVkZWQoKTsKIAogICAgIC8vIFRoZSBwZW5kaW5nIHRpbGVzIHN0YXRl
IGlzIG9uIGl0cyB3YXkgZm9yIHRoZSBzY3JlZW4sIHRlbGwgdGhlIHdlYiBwcm9jZXNzIHRvIHJl
bmRlciB0aGUgbmV4dCBvbmUuCiAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoYmluZCgmTGF5ZXJU
cmVlUmVuZGVyZXI6OnJlbmRlck5leHRGcmFtZSwgdGhpcykpOwpAQCAtNjQ1LDExICs2MDQsNiBA
QCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzeW5jUmVtb3RlQ29udGVudCgpCiAKIHZvaWQgTGF5
ZXJUcmVlUmVuZGVyZXI6OnB1cmdlR0xSZXNvdXJjZXMoKQogewotICAgIFRleHR1cmVNYXBwZXJM
YXllciogbGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihyb290TGF5ZXIoKSk7Ci0KLSAgICBp
ZiAobGF5ZXIpCi0gICAgICAgIGxheWVyLT5jbGVhckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUoKTsK
LQogICAgIG1faW1hZ2VCYWNraW5ncy5jbGVhcigpOwogI2lmIFVTRShHUkFQSElDU19TVVJGQUNF
KQogICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMuY2xlYXIoKTsKQEAgLTY2MCw3ICs2MTQsNyBA
QCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpwdXJnZUdMUmVzb3VyY2VzKCkKICAgICBtX2xheWVy
cy5jbGVhcigpOwogICAgIG1fZml4ZWRMYXllcnMuY2xlYXIoKTsKICAgICBtX3RleHR1cmVNYXBw
ZXIuY2xlYXIoKTsKLSAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5jbGVhcigpOworICAg
IG1fYmFja2luZ1N0b3Jlcy5jbGVhcigpOwogICAgIG1fYmFja2luZ1N0b3Jlc1dpdGhQZW5kaW5n
QnVmZmVycy5jbGVhcigpOwogCiAgICAgc2V0QWN0aXZlKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRl
cmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVSZW5kZXJlci5oCmluZGV4IGRiZmE2YTg5ZWU3Y2Q4ZDU0OGRlNjdmMGZhOTI5NGU2NDE5
ZWQ3ZmYuLmFiZjEwYTA0YzU0MTFkY2JiOWUxOTMxZjA2NWE5YTdkMDI5NzdkYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZVJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaApAQCAtMTQ5LDkgKzE0OSw5IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkZWxldGVMYXllcihDb29yZGluYXRlZExheWVySUQpOwogCiAgICAgdm9pZCBhc3Np
Z25JbWFnZUJhY2tpbmdUb0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBDb29yZGluYXRl
ZEltYWdlQmFja2luZ0lEKTsKLSAgICB2b2lkIHJlbW92ZVJlbGVhc2VkSW1hZ2VCYWNraW5nc0lm
TmVlZGVkKCk7CiAgICAgdm9pZCBlbnN1cmVSb290TGF5ZXIoKTsKICAgICB2b2lkIGNvbW1pdFBl
bmRpbmdCYWNraW5nU3RvcmVPcGVyYXRpb25zKCk7CisgICAgdm9pZCByZW1vdmVSZWxlYXNlZENv
b3JkaW5hdGVkQmFja2luZ1N0b3Jlc0lmTmVlZGVkKCk7CiAKICAgICBDb29yZGluYXRlZEJhY2tp
bmdTdG9yZSogZ2V0QmFja2luZ1N0b3JlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKICAgICB2
b2lkIHByZXBhcmVDb250ZW50QmFja2luZ1N0b3JlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsK
QEAgLTE3MCwxMSArMTcwLDEyIEBAIHByaXZhdGU6CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8Q29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiA+
IEltYWdlQmFja2luZ01hcDsKICAgICBJbWFnZUJhY2tpbmdNYXAgbV9pbWFnZUJhY2tpbmdzOwot
ICAgIFZlY3RvcjxSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+ID4gbV9yZWxlYXNlZElt
YWdlQmFja2luZ3M7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckxheWVyKiwgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiA+IEJhY2tpbmdTdG9yZU1h
cDsKLSAgICBCYWNraW5nU3RvcmVNYXAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXM7CisgICAg
dHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBSZWZQdHI8Q29vcmRpbmF0
ZWRCYWNraW5nU3RvcmU+ID4gQmFja2luZ1N0b3JlTWFwOworICAgIEJhY2tpbmdTdG9yZU1hcCBt
X2JhY2tpbmdTdG9yZXM7CiAKKyAgICAvLyBXZSBkb24ndCB3YW50IFRleHR1cmVNYXBwZXJMYXll
ciByZWZlcnMgYSBkYW5nbGluZyBwb2ludGVyLgorICAgIFZlY3RvcjxSZWZQdHI8Q29vcmRpbmF0
ZWRCYWNraW5nU3RvcmU+ID4gbV9yZWxlYXNlZENvb3JkaW5hdGVkQmFja2luZ1N0b3JlczsKICAg
ICBIYXNoU2V0PFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gPiBtX2JhY2tpbmdTdG9y
ZXNXaXRoUGVuZGluZ0J1ZmZlcnM7CiAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185396</attachid>
            <date>2013-01-29 21:54:57 -0800</date>
            <delta_ts>2013-01-29 22:56:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107099-20130130145142.patch</filename>
            <type>text/plain</type>
            <size>21078</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjMyZTdiNzdlNTdmY2Jh
NDIwMWE5ZDhhMzVmMWYyNWQzMDY3ZmI0NS4uMWM2MWFlOWJmMzk2MGJiMWYyMTY4NjBmZmU5NTc5
YzZmYzU3NzI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEzLTAxLTI5ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZW1vdmUgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMgaW4gTGF5ZXJU
cmVlUmVuZGVyZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDcwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEJhY2tpbmdTdG9yZSgpIHNv
IHRoYXQKKyAgICAgICAgTGF5ZXJUcmVlUmVuZGVyZXIgc2V0cyBhIGJhY2tpbmcgc3RvcmUgdG8g
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCisKKyAgICAgICAgUmVtb3ZlIFRleHR1cmVNYXBw
ZXJMYXllcjo6Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCkgYmVjYXVzZQorICAgICAgICBU
ZXh0dXJlTWFwcGVyTGF5ZXIgZG9lcyBub3QgbWFuYWdlIHRoZSBsaWZlIGN5Y2xlIG9mIGEgYmFj
a2luZyBzdG9yZS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGNvbXBvc2l0aW5nIHRl
c3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3Jl
SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tp
bmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAoR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVy
OjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlRleHR1cmVNYXBwZXJMYXllcik6CisgICAgICAgIChU
ZXh0dXJlTWFwcGVyTGF5ZXIpOgorCiAyMDEzLTAxLTI5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2UgRGF0YWJhc2VDb250ZXh0IGxvb2t1cCB0byBiZSB0
aHJlYWQtc2FmZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyYTMyMzlkMDhiMTNhMWVlMDVlMGIzYTI4M2FjYjBk
MWRlOWU0YTQ1Li41NDA0OTMwZjMwODk5YjIxZGE0YmY4OGRhYzczMzNiZDE2MmJmNzJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMzMgQEAKIDIwMTMtMDEtMjkgIEh1YW5nIERvbmdzdW5nICA8bHV4
dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKKyAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3M6IFJl
bW92ZSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3JlcyBpbiBMYXllclRyZWVSZW5kZXJlci4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzA5OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RlYWQgb2Yg
cXVldWluZyB0aGUgc2V0dGluZyBvZiBiYWNraW5nIHN0b3JlcyBpbiBMYXllclRyZWVSZW5kZXJl
ciwKKyAgICAgICAgYW5kIHRoZW4gc2V0dGluZyB0aGVtIGRpcmVjdGx5IHRvIFRleHR1cmVNYXBw
ZXJMYXllciwgd2UgYWxsb3cKKyAgICAgICAgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIncyBl
eGlzdGluZyBxdWV1aW5nIG1lY2hhbmlzbSB0byBoYW5kbGUgdGhhdC4KKyAgICAgICAgSW5zdGVh
ZCBvZiBhIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzIHF1ZXVlLCB3ZSBoYXZlIGEgbV9iYWNr
aW5nU3RvcmVzCisgICAgICAgIHF1ZXVlIHdoaWNoIGNhbiBiZSBhcHBsaWVkIG11Y2ggbW9yZSBl
YXNpbHkgdG8gdGhlIGxheWVyIHRyZWUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVy
VHJlZVJlbmRlcmVyOjpkZWxldGVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJl
bmRlcmVyOjpjcmVhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVCYWNraW5nU3RvcmVJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpyZXNldEJhY2tpbmdTdG9yZVNpemVUb0xheWVyU2l6
ZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVUaWxlKToKKyAg
ICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZVRpbGUpOgorICAgICAgICAo
V2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlVGlsZSk6CisgICAgICAgIChXZWJLaXQ6
OkxheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVJbWFnZUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0
OjpMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlUmVsZWFzZWRDb29yZGluYXRlZEJhY2tpbmdTdG9y
ZXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpjb21taXRQ
ZW5kaW5nQmFja2luZ1N0b3JlT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJl
ZVJlbmRlcmVyOjpmbHVzaExheWVyQ2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJl
ZVJlbmRlcmVyOjpwdXJnZUdMUmVzb3VyY2VzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oOgorCisyMDEzLTAxLTI5ICBIdWFuZyBE
b25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIFtXSzJdIENhbGwg
TGF5ZXJUcmVlSG9zdDo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkgd2hlbiBhIGRl
dmljZSBvciBwYWdlIHNjYWxlIGZhY3RvciBpcyBjaGFuZ2VkLgogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3ODAyCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDg4YjBlMDA1Mjk3ZmEyOWRhNjkyZjZiMzll
NzkzYzI2NGI3MTlhZTIuLjgwYWVlZTQ4YmU1ZmNhN2MyNDYzNWQyYzE1NzI2YWEzMDQ1NDBiNjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNDAyLDE3
ICs0MDIsMzIgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hvd1JlcGFp
bnRDb3VudGVyKGJvb2wgc2hvdykKICovCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKIHsKLSAgICB1cGRhdGVE
ZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudElmTmVlZGVkKCk7CisgICAgcHJlcGFyZUJhY2tpbmdT
dG9yZUlmTmVlZGVkKCk7CiAgICAgbV9sYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhp
c0xheWVyT25seSh0aGlzKTsKICAgICB1cGRhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpOwogICAg
IGRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjp1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudElmTmVlZGVkKCkKK3Zv
aWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmVJZk5lZWRl
ZCgpCiB7CiAgICAgaWYgKCFtX2hhc093bkJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuOwor
ICAgIGlmICghc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKSB7CisgICAgICAgIG1fYmFja2luZ1N0
b3JlLmNsZWFyKCk7CisgICAgICAgIG1fY2hhbmdlTWFzayB8PSBUZXh0dXJlTWFwcGVyTGF5ZXI6
OkJhY2tpbmdTdG9yZUNoYW5nZTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIW1fYmFja2lu
Z1N0b3JlKSB7CisgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IFRleHR1cmVNYXBwZXJUaWxl
ZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2NoYW5nZU1hc2sgfD0gVGV4
dHVyZU1hcHBlckxheWVyOjpCYWNraW5nU3RvcmVDaGFuZ2U7CisgICAgICAgIH0KKyAgICB9CiAK
KyAgICB1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCgpOworfQorCit2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCgp
Cit7CisgICAgQVNTRVJUKG1faGFzT3duQmFja2luZ1N0b3JlKTsKICAgICBpZiAoaXNTaG93aW5n
RGVidWdCb3JkZXIoKSkKICAgICAgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CiAKQEAgLTQ1
NywyMCArNDcyLDE2IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZUJh
Y2tpbmdTdG9yZUlmTmVlZGVkKCkKIHsKICAgICBpZiAoIW1faGFzT3duQmFja2luZ1N0b3JlKQog
ICAgICAgICByZXR1cm47Ci0gICAgcHJlcGFyZUJhY2tpbmdTdG9yZSgpOwotICAgIG1fbGF5ZXIt
PnNldEJhY2tpbmdTdG9yZShtX2JhY2tpbmdTdG9yZSk7Ci19CiAKLXZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmUoKQotewogICAgIFRleHR1cmVNYXBw
ZXIqIHRleHR1cmVNYXBwZXIgPSBtX2xheWVyLT50ZXh0dXJlTWFwcGVyKCk7CiAgICAgaWYgKCF0
ZXh0dXJlTWFwcGVyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXNob3VsZEhhdmVCYWNr
aW5nU3RvcmUoKSkgewotICAgICAgICBtX2JhY2tpbmdTdG9yZS5jbGVhcigpOworICAgICAgICBB
U1NFUlQoIW1fYmFja2luZ1N0b3JlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBBU1NF
UlQobV9iYWNraW5nU3RvcmUpOwogCiAgICAgSW50UmVjdCBkaXJ0eVJlY3QgPSBlbmNsb3NpbmdJ
bnRSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIG1fc2l6ZSkpOwogICAgIGlmICgh
bV9uZWVkc0Rpc3BsYXkpCkBAIC00NzgsOSArNDg5LDYgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tpbmdTdG9yZSgpCiAgICAgaWYgKGRpcnR5UmVjdC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9iYWNraW5nU3RvcmUpCi0gICAg
ICAgIG1fYmFja2luZ1N0b3JlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVh
dGUoKTsKLQogI2lmIFBMQVRGT1JNKFFUKQogICAgIEFTU0VSVChkeW5hbWljX2Nhc3Q8VGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKj4obV9iYWNraW5nU3RvcmUuZ2V0KCkpKTsKICNlbmRp
ZgpAQCAtNTQ2LDYgKzU1NCwxNiBAQCBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB9CiAjZW5kaWYKIAor
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QmFja2luZ1N0b3JlKFBhc3NSZWZQ
dHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKQoreworICAgIEFTU0VS
VCghbV9oYXNPd25CYWNraW5nU3RvcmUpOworICAgIGlmIChtX2JhY2tpbmdTdG9yZSA9PSBiYWNr
aW5nU3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2luZ1N0b3JlID0gYmFja2lu
Z1N0b3JlOworICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkJhY2tpbmdTdG9y
ZUNoYW5nZSk7Cit9CisKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFJlcGFp
bnRDb3VudChpbnQgcmVwYWludENvdW50KQogewogICAgIG1fcmVwYWludENvdW50ID0gcmVwYWlu
dENvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCA0OWI1
MDRiNjNiY2QyZTEzM2MxNWYxMDNkMjBiZGVlNDNkY2I4NmQ0Li42MmY0NTgwM2NmZWYyYWM0NzJm
YTg5YTIwYzAyNzk4YWExMzFjNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuaApAQCAtODksNiArODksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTogSXQgd2ls
bCBiZSByZW1vdmVkIGFmdGVyIHJlbW92aW5nIGRlcGVuZGVuY3kgb2YgTGF5ZXJUcmVlUmVuZGVy
ZXIgb24gR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCiAgICAgdm9pZCBzZXRIYXNPd25CYWNr
aW5nU3RvcmUoYm9vbCBiKSB7IG1faGFzT3duQmFja2luZ1N0b3JlID0gYjsgfQorICAgIHZvaWQg
c2V0QmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4pOwog
CiAgICAgdm9pZCBzZXRGaXhlZFRvVmlld3BvcnQoYm9vbCBmaXhlZCkgeyBtX2ZpeGVkVG9WaWV3
cG9ydCA9IGZpeGVkOyB9CiAgICAgYm9vbCBmaXhlZFRvVmlld3BvcnQoKSBjb25zdCB7IHJldHVy
biBtX2ZpeGVkVG9WaWV3cG9ydDsgfQpAQCAtMTAwLDkgKzEwMSw5IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOwogICAgIHZvaWQgZGlkRmx1
c2hDb21wb3NpdGluZ1N0YXRlKCk7Ci0gICAgdm9pZCB1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFp
bnRDb3VudElmTmVlZGVkKCk7CisgICAgdm9pZCB1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRD
b3VudCgpOwogICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKTsKLSAgICB2b2lk
IHByZXBhcmVCYWNraW5nU3RvcmUoKTsKKyAgICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmVJZk5l
ZWRlZCgpOwogICAgIGJvb2wgc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpIGNvbnN0OwogICAgIHZv
aWQgYW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQoVGltZXI8R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI+Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggZjk0YzE2ZDEwOTFj
NzhmMGU2ZTM4MmI5MGMzYjZmOWVmMDZkMDNkMy4uNjJhMTQzZjQzMmEwZDUzNDlkNzlmMmRiODEx
M2I4ZGFlYjFkMjlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTU0LDE2ICs1
NCw2IEBAIGNvbnN0IFRleHR1cmVNYXBwZXJMYXllciogVGV4dHVyZU1hcHBlckxheWVyOjpyb290
TGF5ZXIoKSBjb25zdAogICAgIHJldHVybiB0aGlzOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJM
YXllcjo6Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCkKLXsKLSAgICBtX2JhY2tpbmdTdG9y
ZS5jbGVhcigpOwotICAgIG1fY29udGVudHNMYXllciA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKQotICAgICAgICBtX2NoaWxkcmVuW2ldLT5j
bGVhckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUoKTsKLSAgICBpZiAobV9zdGF0ZS5tYXNrTGF5ZXIp
Ci0gICAgICAgIG1fc3RhdGUubWFza0xheWVyLT5jbGVhckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUo
KTsKLX0KLQogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1zUmVjdXJz
aXZlKCkKIHsKICAgICBpZiAobV9zdGF0ZS5zaXplLmlzRW1wdHkoKSAmJiBtX3N0YXRlLm1hc2tz
VG9Cb3VuZHMpCkBAIC00MzcsNiArNDI3LDkgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZs
dXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoR3JhcGhpY3NMYXllclRleHQKICAg
ICAgICAgbV9zaG91bGRVcGRhdGVDdXJyZW50RmlsdGVyc0Zyb21HcmFwaGljc0xheWVyID0gdHJ1
ZTsKICNlbmRpZgogCisgICAgaWYgKGNoYW5nZU1hc2sgJiBCYWNraW5nU3RvcmVDaGFuZ2UpCisg
ICAgICAgIG1fYmFja2luZ1N0b3JlID0gZ3JhcGhpY3NMYXllci0+bV9iYWNraW5nU3RvcmUuZ2V0
KCk7CisKICAgICBpZiAoY2hhbmdlTWFzayAmIFJlcGFpbnRDb3VudENoYW5nZSkKICAgICAgICAg
bV9zdGF0ZS5yZXBhaW50Q291bnQgPSBncmFwaGljc0xheWVyLT5yZXBhaW50Q291bnQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5oCmluZGV4IGU1YmUyYjFhYmQ1Y2Q2ZmM4OWNhZTJiNTY1OTIw
MTI0NWY3OTVmODMuLmVmYmE2OGE2MTJiZWZlM2M1MzYxNGFjZTA4YzQ1MmQ1N2JjZDU0OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmgKQEAgLTc0LDEyICs3NCwxNSBAQCBwdWJsaWM6CiAgICAg
ICAgIEZpbHRlckNoYW5nZSA9ICAgICAgICAgICAgICAoMUwgPDwgMjMpLAogCiAgICAgICAgIERl
YnVnVmlzdWFsc0NoYW5nZSA9ICAgICAgICAoMUwgPDwgMjQpLAotICAgICAgICBSZXBhaW50Q291
bnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KQorICAgICAgICBSZXBhaW50Q291bnRDaGFuZ2Ug
PSAgICAgICAgKDFMIDw8IDI1KSwKKworICAgICAgICBCYWNraW5nU3RvcmVDaGFuZ2UgPSAgICAg
ICAgKDFMIDw8IDI2KQogICAgIH07CiAKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIoKQogICAgICAg
ICA6IG1fcGFyZW50KDApCiAgICAgICAgICwgbV9lZmZlY3RUYXJnZXQoMCkKKyAgICAgICAgLCBt
X2JhY2tpbmdTdG9yZSgwKQogICAgICAgICAsIG1fY29udGVudHNMYXllcigwKQogICAgICAgICAs
IG1fY3VycmVudE9wYWNpdHkoMSkKICAgICAgICAgLCBtX2NlbnRlclooMCkKQEAgLTEwMCwxMCAr
MTAzLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBwYWludCgpOwogCi0gICAgdm9pZCBzZXRCYWNr
aW5nU3RvcmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBiYWNraW5nU3Rv
cmUpIHsgbV9iYWNraW5nU3RvcmUgPSBiYWNraW5nU3RvcmU7IH0KLSAgICBQYXNzUmVmUHRyPFRl
eHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSgpIHsgcmV0dXJuIG1fYmFja2lu
Z1N0b3JlOyB9Ci0gICAgdm9pZCBjbGVhckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUoKTsKLQogICAg
IHZvaWQgc2V0U2Nyb2xsUG9zaXRpb25EZWx0YUlmTmVlZGVkKGNvbnN0IEZsb2F0U2l6ZSYpOwog
CiAgICAgdm9pZCBhcHBseUFuaW1hdGlvbnNSZWN1cnNpdmVseSgpOwpAQCAtMTU3LDcgKzE1Niw3
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFRleHR1cmVNYXBwZXJMYXllcio+IG1fY2hpbGRyZW47
CiAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBtX3BhcmVudDsKICAgICBUZXh0dXJlTWFwcGVyTGF5
ZXIqIG1fZWZmZWN0VGFyZ2V0OwotICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3Jl
PiBtX2JhY2tpbmdTdG9yZTsKKyAgICBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlKiBtX2JhY2tp
bmdTdG9yZTsKICAgICBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciogbV9jb250ZW50c0xheWVy
OwogICAgIEdyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0gbV9jdXJyZW50VHJhbnNmb3JtOwogICAgIGZs
b2F0IG1fY3VycmVudE9wYWNpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAK
aW5kZXggODA1YTg3MzZlOTQyYmNmM2U0M2ViNDkzNjU1ZTBlZTAzMzkzYThkZC4uNmQ1MzJmNzY5
ODcxZTFhMDc0ZGY3N2E2ZjczZjU3N2I5ZWNlYTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZVJlbmRlcmVyLmNwcApAQCAtMzg2LDcgKzM4Niw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6
OmRlbGV0ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklEKQogICAgIE93blB0cjxHcmFw
aGljc0xheWVyPiBsYXllciA9IG1fbGF5ZXJzLnRha2UobGF5ZXJJRCk7CiAgICAgQVNTRVJUKGxh
eWVyKTsKIAotICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLnJlbW92ZSh0b1RleHR1cmVN
YXBwZXJMYXllcihsYXllci5nZXQoKSkpOworICAgIG1fYmFja2luZ1N0b3Jlcy5yZW1vdmUobGF5
ZXIuZ2V0KCkpOwogICAgIG1fZml4ZWRMYXllcnMucmVtb3ZlKGxheWVySUQpOwogI2lmIFVTRShH
UkFQSElDU19TVVJGQUNFKQogICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMucmVtb3ZlKGxheWVy
SUQpOwpAQCAtNDA1LDE4ICs0MDUsNiBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzZXRSb290
TGF5ZXJJRChDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCkKICAgICBtX3Jvb3RMYXllci0+YWRk
Q2hpbGQobGF5ZXIpOwogfQogCi1Db29yZGluYXRlZEJhY2tpbmdTdG9yZSogTGF5ZXJUcmVlUmVu
ZGVyZXI6OmdldEJhY2tpbmdTdG9yZShHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQotewot
ICAgIFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihncmFw
aGljc0xheWVyKTsKLSAgICBBU1NFUlQobGF5ZXIpOwotICAgIENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlKiBiYWNraW5nU3RvcmUgPSBzdGF0aWNfY2FzdDxDb29yZGluYXRlZEJhY2tpbmdTdG9yZSo+
KGxheWVyLT5iYWNraW5nU3RvcmUoKS5nZXQoKSk7Ci0KLSAgICBCYWNraW5nU3RvcmVNYXA6Oml0
ZXJhdG9yIGl0ID0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuZmluZChsYXllcik7Ci0gICAg
aWYgKGl0ICE9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmVuZCgpKQotICAgICAgICBiYWNr
aW5nU3RvcmUgPSBpdC0+dmFsdWUuZ2V0KCk7Ci0gICAgcmV0dXJuIGJhY2tpbmdTdG9yZTsKLX0K
LQogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cHJlcGFyZUNvbnRlbnRCYWNraW5nU3RvcmUoR3Jh
cGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKIHsKICAgICBpZiAoIWxheWVyU2hvdWxkSGF2ZUJh
Y2tpbmdTdG9yZShncmFwaGljc0xheWVyKSkgewpAQCAtNDI5LDU1ICs0MTcsMjcgQEAgdm9pZCBM
YXllclRyZWVSZW5kZXJlcjo6cHJlcGFyZUNvbnRlbnRCYWNraW5nU3RvcmUoR3JhcGhpY3NMYXll
ciogZ3JhcGhpY3NMYXllcikKIAogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlQmFja2lu
Z1N0b3JlSWZOZWVkZWQoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKIHsKLSAgICBUZXh0
dXJlTWFwcGVyTGF5ZXIqIGxheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXll
cik7Ci0gICAgQVNTRVJUKGxheWVyKTsKLQotICAgIC8vIE1ha2Ugc3VyZSB0aGUgbGF5ZXIgZG9l
cyBub3QgYWxyZWFkeSBoYXZlIGEgYmFja2luZyBzdG9yZSAoY29tbWl0dGVkIG9yIHBlbmRpbmcp
LgotICAgIEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdTeW5jQmFja2lu
Z1N0b3Jlcy5maW5kKGxheWVyKTsKLSAgICBpZiAoaXQgIT0gbV9wZW5kaW5nU3luY0JhY2tpbmdT
dG9yZXMuZW5kKCkpIHsKLSAgICAgICAgaWYgKCFpdC0+dmFsdWUpIHsKLSAgICAgICAgICAgIC8v
IFRoZXJlIGlzIGEgcGVuZGluZyByZW1vdmFsLCBjYW5jZWwgaXQuCi0gICAgICAgICAgICBtX3Bl
bmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5yZW1vdmUoaXQpOwotICAgICAgICB9Ci0gICAgICAgIC8v
IFRoZXJlIGlzIGFscmVhZHkgYSBwZW5kaW5nIGFkZGl0aW9uLgorICAgIGlmIChtX2JhY2tpbmdT
dG9yZXMuZ2V0KGdyYXBoaWNzTGF5ZXIpKQogICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlm
IChsYXllci0+YmFja2luZ1N0b3JlKCkpCi0gICAgICAgIHJldHVybjsgLy8gVGhlIGxheWVyIGFs
cmVhZHkgaGFzIGEgYmFja2luZyBzdG9yZSAoYW5kIG5vIHBlbmRpbmcgcmVtb3ZhbCkuCiAKICAg
ICBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZShDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkpOwotCiAgICAgYmFja2luZ1N0b3JlLT5zZXRTaXplKGdy
YXBoaWNzTGF5ZXItPnNpemUoKSk7Ci0gICAgQVNTRVJUKCFtX3BlbmRpbmdTeW5jQmFja2luZ1N0
b3Jlcy5jb250YWlucyhsYXllcikpOwotICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmFk
ZChsYXllciwgYmFja2luZ1N0b3JlKTsKKyAgICBtX2JhY2tpbmdTdG9yZXMuYWRkKGdyYXBoaWNz
TGF5ZXIsIGJhY2tpbmdTdG9yZSk7CisgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihn
cmFwaGljc0xheWVyKS0+c2V0QmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSk7CiB9CiAKIHZvaWQg
TGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKEdyYXBoaWNzTGF5
ZXIqIGdyYXBoaWNzTGF5ZXIpCiB7Ci0gICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9IHRv
VGV4dHVyZU1hcHBlckxheWVyKGdyYXBoaWNzTGF5ZXIpOwotICAgIEFTU0VSVChsYXllcik7Ci0K
LSAgICAvLyBDaGVjayBpZiB0aGUgbGF5b3V0IGFscmVhZHkgaGFzIGEgYmFja2luZyBzdG9yZSAo
Y29tbWl0dGVkIG9yIHBlbmRpbmcpLgotICAgIEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQg
PSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5maW5kKGxheWVyKTsKLSAgICBpZiAoaXQgIT0g
bV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuZW5kKCkpIHsKLSAgICAgICAgaWYgKGl0LT52YWx1
ZSkgewotICAgICAgICAgICAgLy8gVGhlcmUgaXMgYSBwZW5kaW5nIGFkZGl0aW9uLCBjYW5jZWwg
aXQuCi0gICAgICAgICAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5yZW1vdmUoaXQpOwot
ICAgICAgICB9Ci0gICAgICAgIC8vIFRoZXJlIGlzIGFscmVhZHkgYSBwZW5kaW5nIHJlbW92YWwu
CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZXMuZ2V0KGdyYXBoaWNzTGF5ZXIpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgfQogCi0gICAgaWYgKCFsYXllci0+YmFja2luZ1N0b3JlKCkpCi0gICAgICAg
IHJldHVybjsgLy8gVGhlIGxheWVyIGhhcyBubyBiYWNraW5nIHN0b3JlIChhbmQgbm8gcGVuZGlu
ZyBhZGRpdGlvbikuCi0KLSAgICBBU1NFUlQoIW1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmNv
bnRhaW5zKGxheWVyKSk7Ci0gICAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuYWRkKGxheWVy
LCAwKTsKKyAgICBtX3JlbGVhc2VkQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVzLmFwcGVuZChtX2Jh
Y2tpbmdTdG9yZXMudGFrZShncmFwaGljc0xheWVyKSk7CisgICAgdG9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcihncmFwaGljc0xheWVyKS0+c2V0QmFja2luZ1N0b3JlKDApOwogfQogCiB2b2lk
IExheWVyVHJlZVJlbmRlcmVyOjpyZXNldEJhY2tpbmdTdG9yZVNpemVUb0xheWVyU2l6ZShHcmFw
aGljc0xheWVyKiBncmFwaGljc0xheWVyKQogewotICAgIENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
KiBiYWNraW5nU3RvcmUgPSBnZXRCYWNraW5nU3RvcmUoZ3JhcGhpY3NMYXllcik7CisgICAgUmVm
UHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBtX2JhY2tpbmdTdG9y
ZXMuZ2V0KGdyYXBoaWNzTGF5ZXIpOwogICAgIEFTU0VSVChiYWNraW5nU3RvcmUpOwogICAgIGJh
Y2tpbmdTdG9yZS0+c2V0U2l6ZShncmFwaGljc0xheWVyLT5zaXplKCkpOwogfQpAQCAtNDg1LDcg
KzQ0NSw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlc2V0QmFja2luZ1N0b3JlU2l6ZVRv
TGF5ZXJTaXplKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzCiB2b2lkIExheWVyVHJlZVJlbmRlcmVy
OjpjcmVhdGVUaWxlKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklELCB1aW50MzJfdCB0aWxlSUQs
IGZsb2F0IHNjYWxlKQogewogICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGxh
eWVySUQpOwotICAgIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBnZXRC
YWNraW5nU3RvcmUobGF5ZXIpOworICAgIFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4g
YmFja2luZ1N0b3JlID0gbV9iYWNraW5nU3RvcmVzLmdldChsYXllcik7CiAgICAgQVNTRVJUKGJh
Y2tpbmdTdG9yZSk7CiAgICAgYmFja2luZ1N0b3JlLT5jcmVhdGVUaWxlKHRpbGVJRCwgc2NhbGUp
OwogICAgIHJlc2V0QmFja2luZ1N0b3JlU2l6ZVRvTGF5ZXJTaXplKGxheWVyKTsKQEAgLTQ5NCw3
ICs0NTQsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVUaWxlKENvb3JkaW5hdGVk
TGF5ZXJJRCBsYXllcklELCB1aW50MzJfdCB0aWxlSUQsCiB2b2lkIExheWVyVHJlZVJlbmRlcmVy
OjpyZW1vdmVUaWxlKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklELCB1aW50MzJfdCB0aWxlSUQp
CiB7CiAgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBsYXllckJ5SUQobGF5ZXJJRCk7Ci0gICAg
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IGdldEJhY2tpbmdTdG9yZShs
YXllcik7CisgICAgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUg
PSBtX2JhY2tpbmdTdG9yZXMuZ2V0KGxheWVyKTsKICAgICBpZiAoIWJhY2tpbmdTdG9yZSkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC01MDYsNyArNDY2LDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJl
cjo6cmVtb3ZlVGlsZShDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCwgdWludDMyX3QgdGlsZUlE
KQogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlVGlsZShDb29yZGluYXRlZExheWVySUQg
bGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBjb25zdCBUaWxlVXBkYXRlJiB1cGRhdGUpCiB7CiAg
ICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBsYXllckJ5SUQobGF5ZXJJRCk7Ci0gICAgUmVmUHRy
PENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBnZXRCYWNraW5nU3RvcmUo
bGF5ZXIpOworICAgIFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3Jl
ID0gbV9iYWNraW5nU3RvcmVzLmdldChsYXllcik7CiAgICAgQVNTRVJUKGJhY2tpbmdTdG9yZSk7
CiAgICAgYmFja2luZ1N0b3JlLT51cGRhdGVUaWxlKHRpbGVJRCwgdXBkYXRlLnNvdXJjZVJlY3Qs
IHVwZGF0ZS50aWxlUmVjdCwgdXBkYXRlLnN1cmZhY2UsIHVwZGF0ZS5vZmZzZXQpOwogICAgIHJl
c2V0QmFja2luZ1N0b3JlU2l6ZVRvTGF5ZXJTaXplKGxheWVyKTsKQEAgLTU1MCw4ICs1MTAsNyBA
QCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmdJRCBpbWFnZUlEKQogewogICAgIEFTU0VSVChtX2ltYWdlQmFja2luZ3MuY29u
dGFpbnMoaW1hZ2VJRCkpOwogCi0gICAgLy8gV2UgZG9uJ3Qgd2FudCBUZXh0dXJlTWFwcGVyTGF5
ZXIgcmVmZXJzIGEgZGFuZ2xpbmcgcG9pbnRlci4KLSAgICBtX3JlbGVhc2VkSW1hZ2VCYWNraW5n
cy5hcHBlbmQobV9pbWFnZUJhY2tpbmdzLnRha2UoaW1hZ2VJRCkpOworICAgIG1fcmVsZWFzZWRD
b29yZGluYXRlZEJhY2tpbmdTdG9yZXMuYXBwZW5kKG1faW1hZ2VCYWNraW5ncy50YWtlKGltYWdl
SUQpKTsKIH0KIAogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6YXNzaWduSW1hZ2VCYWNraW5nVG9M
YXllcihHcmFwaGljc0xheWVyKiBsYXllciwgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFn
ZUlEKQpAQCAtNTY1LDkgKzUyNCw5IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmFzc2lnbklt
YWdlQmFja2luZ1RvTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIsIENvb3JkaW5hCiAgICAgbGF5
ZXItPnNldENvbnRlbnRzVG9NZWRpYShpdC0+dmFsdWUuZ2V0KCkpOwogfQogCi12b2lkIExheWVy
VHJlZVJlbmRlcmVyOjpyZW1vdmVSZWxlYXNlZEltYWdlQmFja2luZ3NJZk5lZWRlZCgpCit2b2lk
IExheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVSZWxlYXNlZENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
c0lmTmVlZGVkKCkKIHsKLSAgICBtX3JlbGVhc2VkSW1hZ2VCYWNraW5ncy5jbGVhcigpOworICAg
IG1fcmVsZWFzZWRDb29yZGluYXRlZEJhY2tpbmdTdG9yZXMuY2xlYXIoKTsKIH0KIAogdm9pZCBM
YXllclRyZWVSZW5kZXJlcjo6Y29tbWl0UGVuZGluZ0JhY2tpbmdTdG9yZU9wZXJhdGlvbnMoKQpA
QCAtNTc3LDE1ICs1MzYsNiBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpjb21taXRQZW5kaW5n
QmFja2luZ1N0b3JlT3BlcmF0aW9ucygpCiAgICAgICAgICgqaXQpLT5jb21taXRUaWxlT3BlcmF0
aW9ucyhtX3RleHR1cmVNYXBwZXIuZ2V0KCkpOwogCiAgICAgbV9iYWNraW5nU3RvcmVzV2l0aFBl
bmRpbmdCdWZmZXJzLmNsZWFyKCk7Ci0KLSAgICB7Ci0gICAgICAgIEJhY2tpbmdTdG9yZU1hcDo6
aXRlcmF0b3IgZW5kID0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuZW5kKCk7Ci0gICAgICAg
IEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jl
cy5iZWdpbigpOwotICAgICAgICBmb3IgKDtpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBp
dC0+a2V5LT5zZXRCYWNraW5nU3RvcmUoaXQtPnZhbHVlKTsKLQotICAgICAgICBtX3BlbmRpbmdT
eW5jQmFja2luZ1N0b3Jlcy5jbGVhcigpOwotICAgIH0KIH0KIAogdm9pZCBMYXllclRyZWVSZW5k
ZXJlcjo6Zmx1c2hMYXllckNoYW5nZXMoKQpAQCAtNTk3LDcgKzU0Nyw3IEBAIHZvaWQgTGF5ZXJU
cmVlUmVuZGVyZXI6OmZsdXNoTGF5ZXJDaGFuZ2VzKCkKIAogICAgIG1fcm9vdExheWVyLT5mbHVz
aENvbXBvc2l0aW5nU3RhdGUoRmxvYXRSZWN0KCkpOwogICAgIGNvbW1pdFBlbmRpbmdCYWNraW5n
U3RvcmVPcGVyYXRpb25zKCk7Ci0gICAgcmVtb3ZlUmVsZWFzZWRJbWFnZUJhY2tpbmdzSWZOZWVk
ZWQoKTsKKyAgICByZW1vdmVSZWxlYXNlZENvb3JkaW5hdGVkQmFja2luZ1N0b3Jlc0lmTmVlZGVk
KCk7CiAKICAgICAvLyBUaGUgcGVuZGluZyB0aWxlcyBzdGF0ZSBpcyBvbiBpdHMgd2F5IGZvciB0
aGUgc2NyZWVuLCB0ZWxsIHRoZSB3ZWIgcHJvY2VzcyB0byByZW5kZXIgdGhlIG5leHQgb25lLgog
ICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpyZW5kZXJO
ZXh0RnJhbWUsIHRoaXMpKTsKQEAgLTY0NSwxMSArNTk1LDYgQEAgdm9pZCBMYXllclRyZWVSZW5k
ZXJlcjo6c3luY1JlbW90ZUNvbnRlbnQoKQogCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpwdXJn
ZUdMUmVzb3VyY2VzKCkKIHsKLSAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyID0gdG9UZXh0
dXJlTWFwcGVyTGF5ZXIocm9vdExheWVyKCkpOwotCi0gICAgaWYgKGxheWVyKQotICAgICAgICBs
YXllci0+Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCk7Ci0KICAgICBtX2ltYWdlQmFja2lu
Z3MuY2xlYXIoKTsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBtX3N1cmZhY2VCYWNr
aW5nU3RvcmVzLmNsZWFyKCk7CkBAIC02NjAsNyArNjA1LDcgQEAgdm9pZCBMYXllclRyZWVSZW5k
ZXJlcjo6cHVyZ2VHTFJlc291cmNlcygpCiAgICAgbV9sYXllcnMuY2xlYXIoKTsKICAgICBtX2Zp
eGVkTGF5ZXJzLmNsZWFyKCk7CiAgICAgbV90ZXh0dXJlTWFwcGVyLmNsZWFyKCk7Ci0gICAgbV9w
ZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuY2xlYXIoKTsKKyAgICBtX2JhY2tpbmdTdG9yZXMuY2xl
YXIoKTsKICAgICBtX2JhY2tpbmdTdG9yZXNXaXRoUGVuZGluZ0J1ZmZlcnMuY2xlYXIoKTsKIAog
ICAgIHNldEFjdGl2ZShmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAppbmRl
eCBkYmZhNmE4OWVlN2NkOGQ1NDhkZTY3ZjBmYTkyOTRlNjQxOWVkN2ZmLi4xZWExN2I5MDk0ZTQ4
NmUyNDgzOGUwYzAzZDI3M2RmOTU2YzAzNGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRl
cmVyLmgKQEAgLTE0OSwxMSArMTQ5LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVMYXll
cihDb29yZGluYXRlZExheWVySUQpOwogCiAgICAgdm9pZCBhc3NpZ25JbWFnZUJhY2tpbmdUb0xh
eWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsK
LSAgICB2b2lkIHJlbW92ZVJlbGVhc2VkSW1hZ2VCYWNraW5nc0lmTmVlZGVkKCk7CiAgICAgdm9p
ZCBlbnN1cmVSb290TGF5ZXIoKTsKICAgICB2b2lkIGNvbW1pdFBlbmRpbmdCYWNraW5nU3RvcmVP
cGVyYXRpb25zKCk7CisgICAgdm9pZCByZW1vdmVSZWxlYXNlZENvb3JkaW5hdGVkQmFja2luZ1N0
b3Jlc0lmTmVlZGVkKCk7CiAKLSAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSogZ2V0QmFja2lu
Z1N0b3JlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKICAgICB2b2lkIHByZXBhcmVDb250ZW50
QmFja2luZ1N0b3JlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKICAgICB2b2lkIGNyZWF0ZUJh
Y2tpbmdTdG9yZUlmTmVlZGVkKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKICAgICB2b2lkIHJl
bW92ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKQEAgLTE3
MCwxMSArMTY5LDEyIEBAIHByaXZhdGU6CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8Q29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmdJRCwgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiA+IEltYWdl
QmFja2luZ01hcDsKICAgICBJbWFnZUJhY2tpbmdNYXAgbV9pbWFnZUJhY2tpbmdzOwotICAgIFZl
Y3RvcjxSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+ID4gbV9yZWxlYXNlZEltYWdlQmFj
a2luZ3M7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVy
KiwgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiA+IEJhY2tpbmdTdG9yZU1hcDsKLSAg
ICBCYWNraW5nU3RvcmVNYXAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXM7CisgICAgdHlwZWRl
ZiBIYXNoTWFwPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmU+ID4gQmFja2luZ1N0b3JlTWFwOworICAgIEJhY2tpbmdTdG9yZU1hcCBtX2JhY2tp
bmdTdG9yZXM7CiAKKyAgICAvLyBXZSBkb24ndCB3YW50IFRleHR1cmVNYXBwZXJMYXllciByZWZl
cnMgYSBkYW5nbGluZyBwb2ludGVyLgorICAgIFZlY3RvcjxSZWZQdHI8Q29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmU+ID4gbV9yZWxlYXNlZENvb3JkaW5hdGVkQmFja2luZ1N0b3JlczsKICAgICBIYXNo
U2V0PFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gPiBtX2JhY2tpbmdTdG9yZXNXaXRo
UGVuZGluZ0J1ZmZlcnM7CiAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185400</attachid>
            <date>2013-01-29 22:56:14 -0800</date>
            <delta_ts>2013-01-29 23:38:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107099-20130130155258.patch</filename>
            <type>text/plain</type>
            <size>18551</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjMyZTdiNzdlNTdmY2Jh
NDIwMWE5ZDhhMzVmMWYyNWQzMDY3ZmI0NS4uZjE1NmI0NzA4MDQ4MTk0OTFjZmViNTA2Yjk4ZGJk
NzI2ZTBjZGIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEzLTAxLTI5ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZW1vdmUgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMgaW4gTGF5ZXJU
cmVlUmVuZGVyZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDcwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEJhY2tpbmdTdG9yZSgpIHNv
IHRoYXQKKyAgICAgICAgTGF5ZXJUcmVlUmVuZGVyZXIgc2V0cyBhIGJhY2tpbmcgc3RvcmUgdG8g
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCisKKyAgICAgICAgUmVtb3ZlIHRocmVlIG1ldGhv
ZHMgb2YgVGV4dHVyZU1hcHBlckxheWVyIHJlbGF0ZWQgdG8gYSBiYWNraW5nIHN0b3JlCisgICAg
ICAgIGJlY2F1c2Ugb2YgZGVhZCBjb2RlIG5vdy4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0
aW5nIGNvbXBvc2l0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5
ZXJPbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpw
cmVwYXJlQmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJB
bmRSZXBhaW50Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAg
ICAgICAoR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
Lmg6CisgICAgICAgIChUZXh0dXJlTWFwcGVyTGF5ZXIpOgorCiAyMDEzLTAxLTI5ICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2UgRGF0YWJhc2VDb250ZXh0
IGxvb2t1cCB0byBiZSB0aHJlYWQtc2FmZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyYTMyMzlkMDhiMTNhMWVl
MDVlMGIzYTI4M2FjYjBkMWRlOWU0YTQ1Li5mZjkwNDI2NGVlYTQ1N2M0ODFkNGVjMDFjMTdiZjNl
YThmNmU0YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzQgQEAKIDIwMTMtMDEtMjkgIEh1YW5n
IERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKKyAgICAgICAgQ29vcmRpbmF0
ZWQgR3JhcGhpY3M6IFJlbW92ZSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3JlcyBpbiBMYXllclRy
ZWVSZW5kZXJlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwNzA5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEluc3RlYWQgb2YgcXVldWluZyB0aGUgc2V0dGluZyBvZiBiYWNraW5nIHN0b3JlcyBpbiBM
YXllclRyZWVSZW5kZXJlciwKKyAgICAgICAgYW5kIHRoZW4gc2V0dGluZyB0aGVtIGRpcmVjdGx5
IHRvIFRleHR1cmVNYXBwZXJMYXllciwgd2UgYWxsb3cKKyAgICAgICAgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIncyBleGlzdGluZyBxdWV1aW5nIG1lY2hhbmlzbSB0byBoYW5kbGUgdGhhdC4K
KyAgICAgICAgSW5zdGVhZCBvZiBhIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzIHF1ZXVlLCB3
ZSBoYXZlIGEgbV9iYWNraW5nU3RvcmVzCisgICAgICAgIHF1ZXVlIHdoaWNoIGNhbiBiZSBhcHBs
aWVkIG11Y2ggbW9yZSBlYXNpbHkgdG8gdGhlIGxheWVyIHRyZWUuCisKKyAgICAgICAgSW4gYWRk
aXRpb24sIExheWVyVHJlZVJlbmRlcmVyOjpwdXJnZUdMUmVzb3VyY2VzKCkgZG9lcyBub3QgY2Fs
bAorICAgICAgICBUZXh0dXJlTWFwcGVyTGF5ZXI6OmNsZWFyQmFja2luZ1N0b3Jlc1JlY3Vyc2l2
ZSgpIGJlY2F1c2UKKyAgICAgICAgVGV4dHVyZU1hcHBlckxheWVyIHdpbGwgYmUgZGVzdHJ1Y3Rl
ZCBzb29uLgorCisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6ZGVs
ZXRlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlQmFj
a2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6
cmVtb3ZlQmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVS
ZW5kZXJlcjo6cmVzZXRCYWNraW5nU3RvcmVTaXplVG9MYXllclNpemUpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlVGlsZSk6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVUaWxlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
UmVuZGVyZXI6OnVwZGF0ZVRpbGUpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJl
cjo6Y29tbWl0UGVuZGluZ0JhY2tpbmdTdG9yZU9wZXJhdGlvbnMpOgorICAgICAgICAoV2ViS2l0
OjpMYXllclRyZWVSZW5kZXJlcjo6cHVyZ2VHTFJlc291cmNlcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaDoKKworMjAxMy0wMS0y
OSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAgICBb
V0syXSBDYWxsIExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgp
IHdoZW4gYSBkZXZpY2Ugb3IgcGFnZSBzY2FsZSBmYWN0b3IgaXMgY2hhbmdlZC4KICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzgwMgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA4OGIwZTAwNTI5N2ZhMjlk
YTY5MmY2YjM5ZTc5M2MyNjRiNzE5YWUyLi44MGFlZWU0OGJlNWZjYTdjMjQ2MzVkMmMxNTcyNmFh
MzA0NTQwYjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAK
QEAgLTQwMiwxNyArNDAyLDMyIEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNl
dFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3cpCiAqLwogdm9pZCBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpCiB7Ci0g
ICAgdXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnRJZk5lZWRlZCgpOworICAgIHByZXBh
cmVCYWNraW5nU3RvcmVJZk5lZWRlZCgpOwogICAgIG1fbGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdT
dGF0ZUZvclRoaXNMYXllck9ubHkodGhpcyk7CiAgICAgdXBkYXRlQmFja2luZ1N0b3JlSWZOZWVk
ZWQoKTsKICAgICBkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnRJZk5l
ZWRlZCgpCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0
b3JlSWZOZWVkZWQoKQogewogICAgIGlmICghbV9oYXNPd25CYWNraW5nU3RvcmUpCiAgICAgICAg
IHJldHVybjsKKyAgICBpZiAoIXNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSkgeworICAgICAgICBt
X2JhY2tpbmdTdG9yZS5jbGVhcigpOworICAgICAgICBtX2NoYW5nZU1hc2sgfD0gVGV4dHVyZU1h
cHBlckxheWVyOjpCYWNraW5nU3RvcmVDaGFuZ2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYg
KCFtX2JhY2tpbmdTdG9yZSkgeworICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBUZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9jaGFuZ2VN
YXNrIHw9IFRleHR1cmVNYXBwZXJMYXllcjo6QmFja2luZ1N0b3JlQ2hhbmdlOworICAgICAgICB9
CisgICAgfQogCisgICAgdXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQoKTsKK30KKwor
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBh
aW50Q291bnQoKQoreworICAgIEFTU0VSVChtX2hhc093bkJhY2tpbmdTdG9yZSk7CiAgICAgaWYg
KGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkpCiAgICAgICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygp
OwogCkBAIC00NTcsMjAgKzQ3MiwxNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
Ojp1cGRhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpCiB7CiAgICAgaWYgKCFtX2hhc093bkJhY2tp
bmdTdG9yZSkKICAgICAgICAgcmV0dXJuOwotICAgIHByZXBhcmVCYWNraW5nU3RvcmUoKTsKLSAg
ICBtX2xheWVyLT5zZXRCYWNraW5nU3RvcmUobV9iYWNraW5nU3RvcmUpOwotfQogCi12b2lkIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKCkKLXsKICAgICBU
ZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyID0gbV9sYXllci0+dGV4dHVyZU1hcHBlcigpOwog
ICAgIGlmICghdGV4dHVyZU1hcHBlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFzaG91
bGRIYXZlQmFja2luZ1N0b3JlKCkpIHsKLSAgICAgICAgbV9iYWNraW5nU3RvcmUuY2xlYXIoKTsK
KyAgICAgICAgQVNTRVJUKCFtX2JhY2tpbmdTdG9yZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CisgICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKIAogICAgIEludFJlY3QgZGlydHlSZWN0ID0g
ZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBtX3NpemUpKTsK
ICAgICBpZiAoIW1fbmVlZHNEaXNwbGF5KQpAQCAtNDc4LDkgKzQ4OSw2IEBAIHZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmUoKQogICAgIGlmIChkaXJ0
eVJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fYmFja2luZ1N0
b3JlKQotICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZTo6Y3JlYXRlKCk7Ci0KICNpZiBQTEFURk9STShRVCkKICAgICBBU1NFUlQoZHluYW1pY19j
YXN0PFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSo+KG1fYmFja2luZ1N0b3JlLmdldCgp
KSk7CiAjZW5kaWYKQEAgLTU0Niw2ICs1NTQsMTYgQEAgYm9vbCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogfQog
I2VuZGlmCiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEJhY2tpbmdTdG9y
ZShQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSkKK3sK
KyAgICBBU1NFUlQoIW1faGFzT3duQmFja2luZ1N0b3JlKTsKKyAgICBpZiAobV9iYWNraW5nU3Rv
cmUgPT0gYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2JhY2tpbmdTdG9y
ZSA9IGJhY2tpbmdTdG9yZTsKKyAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpC
YWNraW5nU3RvcmVDaGFuZ2UpOworfQorCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzZXRSZXBhaW50Q291bnQoaW50IHJlcGFpbnRDb3VudCkKIHsKICAgICBtX3JlcGFpbnRDb3Vu
dCA9IHJlcGFpbnRDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgK
aW5kZXggNDliNTA0YjYzYmNkMmUxMzNjMTVmMTAzZDIwYmRlZTQzZGNiODZkNC4uNjJmNDU4MDNj
ZmVmMmFjNDcyZmE4OWEyMGMwMjc5OGFhMTMxYzU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljOgogCiAgICAgLy8gRklY
TUU6IEl0IHdpbGwgYmUgcmVtb3ZlZCBhZnRlciByZW1vdmluZyBkZXBlbmRlbmN5IG9mIExheWVy
VHJlZVJlbmRlcmVyIG9uIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLgogICAgIHZvaWQgc2V0
SGFzT3duQmFja2luZ1N0b3JlKGJvb2wgYikgeyBtX2hhc093bkJhY2tpbmdTdG9yZSA9IGI7IH0K
KyAgICB2b2lkIHNldEJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmU+KTsKIAogICAgIHZvaWQgc2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgZml4ZWQpIHsgbV9m
aXhlZFRvVmlld3BvcnQgPSBmaXhlZDsgfQogICAgIGJvb2wgZml4ZWRUb1ZpZXdwb3J0KCkgY29u
c3QgeyByZXR1cm4gbV9maXhlZFRvVmlld3BvcnQ7IH0KQEAgLTEwMCw5ICsxMDEsOSBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKICAgICB2
b2lkIGRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpOwotICAgIHZvaWQgdXBkYXRlRGVidWdCb3Jk
ZXJBbmRSZXBhaW50Q291bnRJZk5lZWRlZCgpOworICAgIHZvaWQgdXBkYXRlRGVidWdCb3JkZXJB
bmRSZXBhaW50Q291bnQoKTsKICAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCk7
Ci0gICAgdm9pZCBwcmVwYXJlQmFja2luZ1N0b3JlKCk7CisgICAgdm9pZCBwcmVwYXJlQmFja2lu
Z1N0b3JlSWZOZWVkZWQoKTsKICAgICBib29sIHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSBjb25z
dDsKICAgICB2b2lkIGFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKFRpbWVyPEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyPiopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IGY5
NGMxNmQxMDkxYzc4ZjBlNmUzODJiOTBjM2I2ZjllZjA2ZDAzZDMuLjRhYjI1MDg5ZmRhZTQ5YzZh
Nzc5ODk2Y2FkMmRiOTEzNzZhNDQ4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBA
IC01NCwxNiArNTQsNiBAQCBjb25zdCBUZXh0dXJlTWFwcGVyTGF5ZXIqIFRleHR1cmVNYXBwZXJM
YXllcjo6cm9vdExheWVyKCkgY29uc3QKICAgICByZXR1cm4gdGhpczsKIH0KIAotdm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OmNsZWFyQmFja2luZ1N0b3Jlc1JlY3Vyc2l2ZSgpCi17Ci0gICAgbV9i
YWNraW5nU3RvcmUuY2xlYXIoKTsKLSAgICBtX2NvbnRlbnRzTGF5ZXIgPSAwOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9jaGlsZHJlbi5zaXplKCk7ICsraSkKLSAgICAgICAgbV9jaGls
ZHJlbltpXS0+Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCk7Ci0gICAgaWYgKG1fc3RhdGUu
bWFza0xheWVyKQotICAgICAgICBtX3N0YXRlLm1hc2tMYXllci0+Y2xlYXJCYWNraW5nU3RvcmVz
UmVjdXJzaXZlKCk7Ci19Ci0KIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpjb21wdXRlVHJhbnNm
b3Jtc1JlY3Vyc2l2ZSgpCiB7CiAgICAgaWYgKG1fc3RhdGUuc2l6ZS5pc0VtcHR5KCkgJiYgbV9z
dGF0ZS5tYXNrc1RvQm91bmRzKQpAQCAtNDM3LDYgKzQyNyw5IEBAIHZvaWQgVGV4dHVyZU1hcHBl
ckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdyYXBoaWNzTGF5
ZXJUZXh0CiAgICAgICAgIG1fc2hvdWxkVXBkYXRlQ3VycmVudEZpbHRlcnNGcm9tR3JhcGhpY3NM
YXllciA9IHRydWU7CiAjZW5kaWYKIAorICAgIGlmIChjaGFuZ2VNYXNrICYgQmFja2luZ1N0b3Jl
Q2hhbmdlKQorICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IGdyYXBoaWNzTGF5ZXItPm1fYmFja2lu
Z1N0b3JlOworCiAgICAgaWYgKGNoYW5nZU1hc2sgJiBSZXBhaW50Q291bnRDaGFuZ2UpCiAgICAg
ICAgIG1fc3RhdGUucmVwYWludENvdW50ID0gZ3JhcGhpY3NMYXllci0+cmVwYWludENvdW50KCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCBlNWJlMmIxYWJkNWNkNmZjODljYWUyYjU2
NTkyMDEyNDVmNzk1ZjgzLi43N2RhMjY5YjM2YTI5ODkyNmZiNzk4NWRmZWE4MTIyZTI0MGMyOWQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC03NCw3ICs3NCw5IEBAIHB1YmxpYzoKICAg
ICAgICAgRmlsdGVyQ2hhbmdlID0gICAgICAgICAgICAgICgxTCA8PCAyMyksCiAKICAgICAgICAg
RGVidWdWaXN1YWxzQ2hhbmdlID0gICAgICAgICgxTCA8PCAyNCksCi0gICAgICAgIFJlcGFpbnRD
b3VudENoYW5nZSA9ICAgICAgICAoMUwgPDwgMjUpCisgICAgICAgIFJlcGFpbnRDb3VudENoYW5n
ZSA9ICAgICAgICAoMUwgPDwgMjUpLAorCisgICAgICAgIEJhY2tpbmdTdG9yZUNoYW5nZSA9ICAg
ICAgICAoMUwgPDwgMjYpCiAgICAgfTsKIAogICAgIFRleHR1cmVNYXBwZXJMYXllcigpCkBAIC0x
MDAsMTAgKzEwMiw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcGFpbnQoKTsKIAotICAgIHZvaWQg
c2V0QmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gYmFj
a2luZ1N0b3JlKSB7IG1fYmFja2luZ1N0b3JlID0gYmFja2luZ1N0b3JlOyB9Ci0gICAgUGFzc1Jl
ZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUoKSB7IHJldHVybiBt
X2JhY2tpbmdTdG9yZTsgfQotICAgIHZvaWQgY2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCk7
Ci0KICAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uRGVsdGFJZk5lZWRlZChjb25zdCBGbG9hdFNp
emUmKTsKIAogICAgIHZvaWQgYXBwbHlBbmltYXRpb25zUmVjdXJzaXZlbHkoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZVJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAppbmRleCA4MDVhODczNmU5NDJiY2YzZTQzZWI0OTM2
NTVlMGVlMDMzOTNhOGRkLi5kZmYxNmFjZjFiNTMwZjg2NTJmMjNjNTYyMmMxYzdhMTdhNjRiZDVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCkBAIC0zODYsNyArMzg2LDcg
QEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6ZGVsZXRlTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklE
IGxheWVySUQpCiAgICAgT3duUHRyPEdyYXBoaWNzTGF5ZXI+IGxheWVyID0gbV9sYXllcnMudGFr
ZShsYXllcklEKTsKICAgICBBU1NFUlQobGF5ZXIpOwogCi0gICAgbV9wZW5kaW5nU3luY0JhY2tp
bmdTdG9yZXMucmVtb3ZlKHRvVGV4dHVyZU1hcHBlckxheWVyKGxheWVyLmdldCgpKSk7CisgICAg
bV9iYWNraW5nU3RvcmVzLnJlbW92ZShsYXllci5nZXQoKSk7CiAgICAgbV9maXhlZExheWVycy5y
ZW1vdmUobGF5ZXJJRCk7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgbV9zdXJmYWNl
QmFja2luZ1N0b3Jlcy5yZW1vdmUobGF5ZXJJRCk7CkBAIC00MDUsMTggKzQwNSw2IEBAIHZvaWQg
TGF5ZXJUcmVlUmVuZGVyZXI6OnNldFJvb3RMYXllcklEKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXll
cklEKQogICAgIG1fcm9vdExheWVyLT5hZGRDaGlsZChsYXllcik7CiB9CiAKLUNvb3JkaW5hdGVk
QmFja2luZ1N0b3JlKiBMYXllclRyZWVSZW5kZXJlcjo6Z2V0QmFja2luZ1N0b3JlKEdyYXBoaWNz
TGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCi17Ci0gICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9
IHRvVGV4dHVyZU1hcHBlckxheWVyKGdyYXBoaWNzTGF5ZXIpOwotICAgIEFTU0VSVChsYXllcik7
Ci0gICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IHN0YXRpY19jYXN0
PENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKj4obGF5ZXItPmJhY2tpbmdTdG9yZSgpLmdldCgpKTsK
LQotICAgIEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdTeW5jQmFja2lu
Z1N0b3Jlcy5maW5kKGxheWVyKTsKLSAgICBpZiAoaXQgIT0gbV9wZW5kaW5nU3luY0JhY2tpbmdT
dG9yZXMuZW5kKCkpCi0gICAgICAgIGJhY2tpbmdTdG9yZSA9IGl0LT52YWx1ZS5nZXQoKTsKLSAg
ICByZXR1cm4gYmFja2luZ1N0b3JlOwotfQotCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpwcmVw
YXJlQ29udGVudEJhY2tpbmdTdG9yZShHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQogewog
ICAgIGlmICghbGF5ZXJTaG91bGRIYXZlQmFja2luZ1N0b3JlKGdyYXBoaWNzTGF5ZXIpKSB7CkBA
IC00MjksNTUgKzQxNywyNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpwcmVwYXJlQ29udGVu
dEJhY2tpbmdTdG9yZShHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQogCiB2b2lkIExheWVy
VHJlZVJlbmRlcmVyOjpjcmVhdGVCYWNraW5nU3RvcmVJZk5lZWRlZChHcmFwaGljc0xheWVyKiBn
cmFwaGljc0xheWVyKQogewotICAgIFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIgPSB0b1RleHR1
cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyKTsKLSAgICBBU1NFUlQobGF5ZXIpOwotCi0gICAg
Ly8gTWFrZSBzdXJlIHRoZSBsYXllciBkb2VzIG5vdCBhbHJlYWR5IGhhdmUgYSBiYWNraW5nIHN0
b3JlIChjb21taXR0ZWQgb3IgcGVuZGluZykuCi0gICAgQmFja2luZ1N0b3JlTWFwOjppdGVyYXRv
ciBpdCA9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmZpbmQobGF5ZXIpOwotICAgIGlmIChp
dCAhPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5lbmQoKSkgewotICAgICAgICBpZiAoIWl0
LT52YWx1ZSkgewotICAgICAgICAgICAgLy8gVGhlcmUgaXMgYSBwZW5kaW5nIHJlbW92YWwsIGNh
bmNlbCBpdC4KLSAgICAgICAgICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLnJlbW92ZShp
dCk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhIHBlbmRpbmcgYWRk
aXRpb24uCisgICAgaWYgKG1fYmFja2luZ1N0b3Jlcy5jb250YWlucyhncmFwaGljc0xheWVyKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAobGF5ZXItPmJhY2tpbmdTdG9yZSgpKQot
ICAgICAgICByZXR1cm47IC8vIFRoZSBsYXllciBhbHJlYWR5IGhhcyBhIGJhY2tpbmcgc3RvcmUg
KGFuZCBubyBwZW5kaW5nIHJlbW92YWwpLgogCiAgICAgUmVmUHRyPENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlPiBiYWNraW5nU3RvcmUoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpKTsK
LQogICAgIGJhY2tpbmdTdG9yZS0+c2V0U2l6ZShncmFwaGljc0xheWVyLT5zaXplKCkpOwotICAg
IEFTU0VSVCghbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuY29udGFpbnMobGF5ZXIpKTsKLSAg
ICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5hZGQobGF5ZXIsIGJhY2tpbmdTdG9yZSk7Cisg
ICAgbV9iYWNraW5nU3RvcmVzLmFkZChncmFwaGljc0xheWVyLCBiYWNraW5nU3RvcmUpOworICAg
IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoZ3JhcGhpY3NMYXllciktPnNldEJhY2tpbmdT
dG9yZShiYWNraW5nU3RvcmUpOwogfQogCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVC
YWNraW5nU3RvcmVJZk5lZWRlZChHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQogewotICAg
IFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihncmFwaGlj
c0xheWVyKTsKLSAgICBBU1NFUlQobGF5ZXIpOwotCi0gICAgLy8gQ2hlY2sgaWYgdGhlIGxheW91
dCBhbHJlYWR5IGhhcyBhIGJhY2tpbmcgc3RvcmUgKGNvbW1pdHRlZCBvciBwZW5kaW5nKS4KLSAg
ICBCYWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9y
ZXMuZmluZChsYXllcik7Ci0gICAgaWYgKGl0ICE9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVz
LmVuZCgpKSB7Ci0gICAgICAgIGlmIChpdC0+dmFsdWUpIHsKLSAgICAgICAgICAgIC8vIFRoZXJl
IGlzIGEgcGVuZGluZyBhZGRpdGlvbiwgY2FuY2VsIGl0LgotICAgICAgICAgICAgbV9wZW5kaW5n
U3luY0JhY2tpbmdTdG9yZXMucmVtb3ZlKGl0KTsKLSAgICAgICAgfQotICAgICAgICAvLyBUaGVy
ZSBpcyBhbHJlYWR5IGEgcGVuZGluZyByZW1vdmFsLgorICAgIFJlZlB0cjxDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gbV9iYWNraW5nU3RvcmVzLnRha2UoZ3JhcGhpY3NM
YXllcik7CisgICAgaWYgKCFiYWNraW5nU3RvcmUpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAK
LSAgICBpZiAoIWxheWVyLT5iYWNraW5nU3RvcmUoKSkKLSAgICAgICAgcmV0dXJuOyAvLyBUaGUg
bGF5ZXIgaGFzIG5vIGJhY2tpbmcgc3RvcmUgKGFuZCBubyBwZW5kaW5nIGFkZGl0aW9uKS4KLQot
ICAgIEFTU0VSVCghbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuY29udGFpbnMobGF5ZXIpKTsK
LSAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5hZGQobGF5ZXIsIDApOworICAgIHRvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIoZ3JhcGhpY3NMYXllciktPnNldEJhY2tpbmdTdG9yZSgw
KTsKIH0KIAogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVzZXRCYWNraW5nU3RvcmVTaXplVG9M
YXllclNpemUoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKIHsKLSAgICBDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlID0gZ2V0QmFja2luZ1N0b3JlKGdyYXBoaWNzTGF5
ZXIpOworICAgIFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0g
bV9iYWNraW5nU3RvcmVzLmdldChncmFwaGljc0xheWVyKTsKICAgICBBU1NFUlQoYmFja2luZ1N0
b3JlKTsKICAgICBiYWNraW5nU3RvcmUtPnNldFNpemUoZ3JhcGhpY3NMYXllci0+c2l6ZSgpKTsK
IH0KQEAgLTQ4NSw3ICs0NDUsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpyZXNldEJhY2tp
bmdTdG9yZVNpemVUb0xheWVyU2l6ZShHcmFwaGljc0xheWVyKiBncmFwaGljcwogdm9pZCBMYXll
clRyZWVSZW5kZXJlcjo6Y3JlYXRlVGlsZShDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCwgdWlu
dDMyX3QgdGlsZUlELCBmbG9hdCBzY2FsZSkKIHsKICAgICBHcmFwaGljc0xheWVyKiBsYXllciA9
IGxheWVyQnlJRChsYXllcklEKTsKLSAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSogYmFja2lu
Z1N0b3JlID0gZ2V0QmFja2luZ1N0b3JlKGxheWVyKTsKKyAgICBSZWZQdHI8Q29vcmRpbmF0ZWRC
YWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IG1fYmFja2luZ1N0b3Jlcy5nZXQobGF5ZXIpOwog
ICAgIEFTU0VSVChiYWNraW5nU3RvcmUpOwogICAgIGJhY2tpbmdTdG9yZS0+Y3JlYXRlVGlsZSh0
aWxlSUQsIHNjYWxlKTsKICAgICByZXNldEJhY2tpbmdTdG9yZVNpemVUb0xheWVyU2l6ZShsYXll
cik7CkBAIC00OTQsNyArNDU0LDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlVGls
ZShDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELAogdm9pZCBMYXll
clRyZWVSZW5kZXJlcjo6cmVtb3ZlVGlsZShDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCwgdWlu
dDMyX3QgdGlsZUlEKQogewogICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGxh
eWVySUQpOwotICAgIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBnZXRC
YWNraW5nU3RvcmUobGF5ZXIpOworICAgIFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4g
YmFja2luZ1N0b3JlID0gbV9iYWNraW5nU3RvcmVzLmdldChsYXllcik7CiAgICAgaWYgKCFiYWNr
aW5nU3RvcmUpCiAgICAgICAgIHJldHVybjsKIApAQCAtNTA2LDcgKzQ2Niw3IEBAIHZvaWQgTGF5
ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQsIHVp
bnQzMl90IHRpbGVJRCkKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnVwZGF0ZVRpbGUoQ29vcmRp
bmF0ZWRMYXllcklEIGxheWVySUQsIHVpbnQzMl90IHRpbGVJRCwgY29uc3QgVGlsZVVwZGF0ZSYg
dXBkYXRlKQogewogICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGxheWVySUQp
OwotICAgIFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gZ2V0
QmFja2luZ1N0b3JlKGxheWVyKTsKKyAgICBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+
IGJhY2tpbmdTdG9yZSA9IG1fYmFja2luZ1N0b3Jlcy5nZXQobGF5ZXIpOwogICAgIEFTU0VSVChi
YWNraW5nU3RvcmUpOwogICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRlVGlsZSh0aWxlSUQsIHVwZGF0
ZS5zb3VyY2VSZWN0LCB1cGRhdGUudGlsZVJlY3QsIHVwZGF0ZS5zdXJmYWNlLCB1cGRhdGUub2Zm
c2V0KTsKICAgICByZXNldEJhY2tpbmdTdG9yZVNpemVUb0xheWVyU2l6ZShsYXllcik7CkBAIC01
NzcsMTUgKzUzNyw2IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNvbW1pdFBlbmRpbmdCYWNr
aW5nU3RvcmVPcGVyYXRpb25zKCkKICAgICAgICAgKCppdCktPmNvbW1pdFRpbGVPcGVyYXRpb25z
KG1fdGV4dHVyZU1hcHBlci5nZXQoKSk7CiAKICAgICBtX2JhY2tpbmdTdG9yZXNXaXRoUGVuZGlu
Z0J1ZmZlcnMuY2xlYXIoKTsKLQotICAgIHsKLSAgICAgICAgQmFja2luZ1N0b3JlTWFwOjppdGVy
YXRvciBlbmQgPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5lbmQoKTsKLSAgICAgICAgQmFj
a2luZ1N0b3JlTWFwOjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmJl
Z2luKCk7Ci0gICAgICAgIGZvciAoO2l0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgIGl0LT5r
ZXktPnNldEJhY2tpbmdTdG9yZShpdC0+dmFsdWUpOwotCi0gICAgICAgIG1fcGVuZGluZ1N5bmNC
YWNraW5nU3RvcmVzLmNsZWFyKCk7Ci0gICAgfQogfQogCiB2b2lkIExheWVyVHJlZVJlbmRlcmVy
OjpmbHVzaExheWVyQ2hhbmdlcygpCkBAIC02NDUsMTIgKzU5Niw4IEBAIHZvaWQgTGF5ZXJUcmVl
UmVuZGVyZXI6OnN5bmNSZW1vdGVDb250ZW50KCkKIAogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6
cHVyZ2VHTFJlc291cmNlcygpCiB7Ci0gICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9IHRv
VGV4dHVyZU1hcHBlckxheWVyKHJvb3RMYXllcigpKTsKLQotICAgIGlmIChsYXllcikKLSAgICAg
ICAgbGF5ZXItPmNsZWFyQmFja2luZ1N0b3Jlc1JlY3Vyc2l2ZSgpOwotCiAgICAgbV9pbWFnZUJh
Y2tpbmdzLmNsZWFyKCk7CisgICAgbV9yZWxlYXNlZEltYWdlQmFja2luZ3MuY2xlYXIoKTsKICNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBtX3N1cmZhY2VCYWNraW5nU3RvcmVzLmNsZWFy
KCk7CiAjZW5kaWYKQEAgLTY2MCw3ICs2MDcsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpw
dXJnZUdMUmVzb3VyY2VzKCkKICAgICBtX2xheWVycy5jbGVhcigpOwogICAgIG1fZml4ZWRMYXll
cnMuY2xlYXIoKTsKICAgICBtX3RleHR1cmVNYXBwZXIuY2xlYXIoKTsKLSAgICBtX3BlbmRpbmdT
eW5jQmFja2luZ1N0b3Jlcy5jbGVhcigpOworICAgIG1fYmFja2luZ1N0b3Jlcy5jbGVhcigpOwog
ICAgIG1fYmFja2luZ1N0b3Jlc1dpdGhQZW5kaW5nQnVmZmVycy5jbGVhcigpOwogCiAgICAgc2V0
QWN0aXZlKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCmluZGV4IGRiZmE2
YTg5ZWU3Y2Q4ZDU0OGRlNjdmMGZhOTI5NGU2NDE5ZWQ3ZmYuLjFjZDhiYTNhNTQwN2NjZjYwZjQx
OWM3ZDQ2YjE5NzQ0OGZjYWIzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaApA
QCAtMTUzLDcgKzE1Myw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVSb290TGF5ZXIoKTsK
ICAgICB2b2lkIGNvbW1pdFBlbmRpbmdCYWNraW5nU3RvcmVPcGVyYXRpb25zKCk7CiAKLSAgICBD
b29yZGluYXRlZEJhY2tpbmdTdG9yZSogZ2V0QmFja2luZ1N0b3JlKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXIqKTsKICAgICB2b2lkIHByZXBhcmVDb250ZW50QmFja2luZ1N0b3JlKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXIqKTsKICAgICB2b2lkIGNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXIqKTsKICAgICB2b2lkIHJlbW92ZUJhY2tpbmdTdG9yZUlmTmVlZGVk
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKQEAgLTE3Miw4ICsxNzEsOCBAQCBwcml2YXRlOgog
ICAgIEltYWdlQmFja2luZ01hcCBtX2ltYWdlQmFja2luZ3M7CiAgICAgVmVjdG9yPFJlZlB0cjxD
b29yZGluYXRlZEJhY2tpbmdTdG9yZT4gPiBtX3JlbGVhc2VkSW1hZ2VCYWNraW5nczsKIAotICAg
IHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqLCBSZWZQdHI8Q29v
cmRpbmF0ZWRCYWNraW5nU3RvcmU+ID4gQmFja2luZ1N0b3JlTWFwOwotICAgIEJhY2tpbmdTdG9y
ZU1hcCBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3JlczsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2Vi
Q29yZTo6R3JhcGhpY3NMYXllciosIFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gPiBC
YWNraW5nU3RvcmVNYXA7CisgICAgQmFja2luZ1N0b3JlTWFwIG1fYmFja2luZ1N0b3JlczsKIAog
ICAgIEhhc2hTZXQ8UmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiA+IG1fYmFja2luZ1N0
b3Jlc1dpdGhQZW5kaW5nQnVmZmVyczsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185407</attachid>
            <date>2013-01-29 23:38:45 -0800</date>
            <delta_ts>2013-01-30 00:24:30 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-107099-20130130163530.patch</filename>
            <type>text/plain</type>
            <size>18558</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjMyZTdiNzdlNTdmY2Jh
NDIwMWE5ZDhhMzVmMWYyNWQzMDY3ZmI0NS4uOGRhNzc1NjQ2NmU4MmI5MDkyMjc5OWJmNjM4MDA0
MzI5MzM4YmYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEzLTAxLTI5ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZW1vdmUgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMgaW4gTGF5ZXJU
cmVlUmVuZGVyZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDcwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4KKworICAg
ICAgICBBZGQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEJhY2tpbmdTdG9yZSgpIHNv
IHRoYXQKKyAgICAgICAgTGF5ZXJUcmVlUmVuZGVyZXIgc2V0cyBhIGJhY2tpbmcgc3RvcmUgdG8g
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCisKKyAgICAgICAgUmVtb3ZlIHRocmVlIG1ldGhv
ZHMgb2YgVGV4dHVyZU1hcHBlckxheWVyIHJlbGF0ZWQgdG8gYSBiYWNraW5nIHN0b3JlCisgICAg
ICAgIGJlY2F1c2UgdGhleSBhcmUgbm8gbG9uZ2VyIHVzZWQuCisKKyAgICAgICAgQ292ZXJlZCBi
eSBleGlzdGluZyBjb21wb3NpdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9y
VGhpc0xheWVyT25seSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6cHJlcGFyZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVn
Qm9yZGVyQW5kUmVwYWludENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjp1cGRhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QmFja2luZ1N0b3JlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
aDoKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xh
eWVyT25seSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlckxheWVyKToKKwogMjAxMy0wMS0yOSAg
TWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdlIERhdGFiYXNl
Q29udGV4dCBsb29rdXAgdG8gYmUgdGhyZWFkLXNhZmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmEzMjM5ZDA4
YjEzYTFlZTA1ZTBiM2EyODNhY2IwZDFkZTllNGE0NS4uMzFhNTNmOTZmMTIyYTE1YzlkNzYzMTE4
YjlkMTBiZDcwYmM2YzU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM0IEBACiAyMDEzLTAxLTI5
ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIENv
b3JkaW5hdGVkIEdyYXBoaWNzOiBSZW1vdmUgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMgaW4g
TGF5ZXJUcmVlUmVuZGVyZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDcwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4K
KworICAgICAgICBJbnN0ZWFkIG9mIHF1ZXVpbmcgdGhlIHNldHRpbmcgb2YgYmFja2luZyBzdG9y
ZXMgaW4gTGF5ZXJUcmVlUmVuZGVyZXIsCisgICAgICAgIGFuZCB0aGVuIHNldHRpbmcgdGhlbSBk
aXJlY3RseSB0byBUZXh0dXJlTWFwcGVyTGF5ZXIsIHdlIGFsbG93CisgICAgICAgIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyJ3MgZXhpc3RpbmcgcXVldWluZyBtZWNoYW5pc20gdG8gaGFuZGxl
IHRoYXQuCisgICAgICAgIEluc3RlYWQgb2YgYSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3JlcyBx
dWV1ZSwgd2UgaGF2ZSBhIG1fYmFja2luZ1N0b3JlcworICAgICAgICBxdWV1ZSB3aGljaCBjYW4g
YmUgYXBwbGllZCBtdWNoIG1vcmUgZWFzaWx5IHRvIHRoZSBsYXllciB0cmVlLgorCisgICAgICAg
IEluIGFkZGl0aW9uLCBMYXllclRyZWVSZW5kZXJlcjo6cHVyZ2VHTFJlc291cmNlcygpIGRvZXMg
bm90IGNhbGwKKyAgICAgICAgVGV4dHVyZU1hcHBlckxheWVyOjpjbGVhckJhY2tpbmdTdG9yZXNS
ZWN1cnNpdmUoKSBiZWNhdXNlCisgICAgICAgIFRleHR1cmVNYXBwZXJMYXllciB3aWxsIGJlIGRl
c3RydWN0ZWQgc29vbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZVJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVy
ZXI6OmRlbGV0ZUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmNy
ZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVu
ZGVyZXI6OnJlbW92ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlUmVuZGVyZXI6OnJlc2V0QmFja2luZ1N0b3JlU2l6ZVRvTGF5ZXJTaXplKToKKyAgICAg
ICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZVRpbGUpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlVGlsZSk6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZVJlbmRlcmVyOjp1cGRhdGVUaWxlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
UmVuZGVyZXI6OmNvbW1pdFBlbmRpbmdCYWNraW5nU3RvcmVPcGVyYXRpb25zKToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnB1cmdlR0xSZXNvdXJjZXMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmg6CisKKzIw
MTMtMDEtMjkgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKICAg
ICAgICAgW1dLMl0gQ2FsbCBMYXllclRyZWVIb3N0OjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNo
YW5nZWQoKSB3aGVuIGEgZGV2aWNlIG9yIHBhZ2Ugc2NhbGUgZmFjdG9yIGlzIGNoYW5nZWQuCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc4MDIKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggODhiMGUwMDUy
OTdmYTI5ZGE2OTJmNmIzOWU3OTNjMjY0YjcxOWFlMi4uODBhZWVlNDhiZTVmY2E3YzI0NjM1ZDJj
MTU3MjZhYTMwNDU0MGI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuY3BwCkBAIC00MDIsMTcgKzQwMiwzMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCBzaG93KQogKi8KIHZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHko
KQogewotICAgIHVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50SWZOZWVkZWQoKTsKKyAg
ICBwcmVwYXJlQmFja2luZ1N0b3JlSWZOZWVkZWQoKTsKICAgICBtX2xheWVyLT5mbHVzaENvbXBv
c2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KHRoaXMpOwogICAgIHVwZGF0ZUJhY2tpbmdTdG9y
ZUlmTmVlZGVkKCk7CiAgICAgZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlKCk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENv
dW50SWZOZWVkZWQoKQordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUJh
Y2tpbmdTdG9yZUlmTmVlZGVkKCkKIHsKICAgICBpZiAoIW1faGFzT3duQmFja2luZ1N0b3JlKQog
ICAgICAgICByZXR1cm47CisgICAgaWYgKCFzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkpIHsKKyAg
ICAgICAgbV9iYWNraW5nU3RvcmUuY2xlYXIoKTsKKyAgICAgICAgbV9jaGFuZ2VNYXNrIHw9IFRl
eHR1cmVNYXBwZXJMYXllcjo6QmFja2luZ1N0b3JlQ2hhbmdlOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGlmICghbV9iYWNraW5nU3RvcmUpIHsKKyAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlID0g
VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1f
Y2hhbmdlTWFzayB8PSBUZXh0dXJlTWFwcGVyTGF5ZXI6OkJhY2tpbmdTdG9yZUNoYW5nZTsKKyAg
ICAgICAgfQorICAgIH0KIAorICAgIHVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVy
QW5kUmVwYWludENvdW50KCkKK3sKKyAgICBBU1NFUlQobV9oYXNPd25CYWNraW5nU3RvcmUpOwog
ICAgIGlmIChpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpKQogICAgICAgICB1cGRhdGVEZWJ1Z0luZGlj
YXRvcnMoKTsKIApAQCAtNDU3LDIwICs0NzIsMTYgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6dXBkYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKQogewogICAgIGlmICghbV9oYXNP
d25CYWNraW5nU3RvcmUpCiAgICAgICAgIHJldHVybjsKLSAgICBwcmVwYXJlQmFja2luZ1N0b3Jl
KCk7Ci0gICAgbV9sYXllci0+c2V0QmFja2luZ1N0b3JlKG1fYmFja2luZ1N0b3JlKTsKLX0KIAot
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tpbmdTdG9yZSgpCi17
CiAgICAgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciA9IG1fbGF5ZXItPnRleHR1cmVNYXBw
ZXIoKTsKICAgICBpZiAoIXRleHR1cmVNYXBwZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
ICghc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKSB7Ci0gICAgICAgIG1fYmFja2luZ1N0b3JlLmNs
ZWFyKCk7CisgICAgICAgIEFTU0VSVCghbV9iYWNraW5nU3RvcmUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQorICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAKICAgICBJbnRSZWN0IGRpcnR5
UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9z
aXplKSk7CiAgICAgaWYgKCFtX25lZWRzRGlzcGxheSkKQEAgLTQ3OCw5ICs0ODksNiBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKCkKICAgICBp
ZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2Jh
Y2tpbmdTdG9yZSkKLSAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBUZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmU6OmNyZWF0ZSgpOwotCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgQVNTRVJUKGR5
bmFtaWNfY2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9y
ZS5nZXQoKSkpOwogI2VuZGlmCkBAIC01NDYsNiArNTU0LDE2IEBAIGJvb2wgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVy
cykKIH0KICNlbmRpZgogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRCYWNr
aW5nU3RvcmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBiYWNraW5nU3Rv
cmUpCit7CisgICAgQVNTRVJUKCFtX2hhc093bkJhY2tpbmdTdG9yZSk7CisgICAgaWYgKG1fYmFj
a2luZ1N0b3JlID09IGJhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNr
aW5nU3RvcmUgPSBiYWNraW5nU3RvcmU7CisgICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJM
YXllcjo6QmFja2luZ1N0b3JlQ2hhbmdlKTsKK30KKwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6c2V0UmVwYWludENvdW50KGludCByZXBhaW50Q291bnQpCiB7CiAgICAgbV9yZXBh
aW50Q291bnQgPSByZXBhaW50Q291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5oCmluZGV4IDQ5YjUwNGI2M2JjZDJlMTMzYzE1ZjEwM2QyMGJkZWU0M2RjYjg2ZDQuLjYy
ZjQ1ODAzY2ZlZjJhYzQ3MmZhODlhMjBjMDI3OThhYTEzMWM1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC04OSw2ICs4OSw3IEBAIHB1YmxpYzoKIAogICAg
IC8vIEZJWE1FOiBJdCB3aWxsIGJlIHJlbW92ZWQgYWZ0ZXIgcmVtb3ZpbmcgZGVwZW5kZW5jeSBv
ZiBMYXllclRyZWVSZW5kZXJlciBvbiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci4KICAgICB2
b2lkIHNldEhhc093bkJhY2tpbmdTdG9yZShib29sIGIpIHsgbV9oYXNPd25CYWNraW5nU3RvcmUg
PSBiOyB9CisgICAgdm9pZCBzZXRCYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVy
QmFja2luZ1N0b3JlPik7CiAKICAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sIGZpeGVk
KSB7IG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWQ7IH0KICAgICBib29sIGZpeGVkVG9WaWV3cG9y
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9CkBAIC0xMDAsOSArMTAxLDkg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7
CiAgICAgdm9pZCBkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKTsKLSAgICB2b2lkIHVwZGF0ZURl
YnVnQm9yZGVyQW5kUmVwYWludENvdW50SWZOZWVkZWQoKTsKKyAgICB2b2lkIHVwZGF0ZURlYnVn
Qm9yZGVyQW5kUmVwYWludENvdW50KCk7CiAgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmVJZk5l
ZWRlZCgpOwotICAgIHZvaWQgcHJlcGFyZUJhY2tpbmdTdG9yZSgpOworICAgIHZvaWQgcHJlcGFy
ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCk7CiAgICAgYm9vbCBzaG91bGRIYXZlQmFja2luZ1N0b3Jl
KCkgY29uc3Q7CiAgICAgdm9pZCBhbmltYXRpb25TdGFydGVkVGltZXJGaXJlZChUaW1lcjxHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcj4qKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApp
bmRleCBmOTRjMTZkMTA5MWM3OGYwZTZlMzgyYjkwYzNiNmY5ZWYwNmQwM2QzLi40YWIyNTA4OWZk
YWU0OWM2YTc3OTg5NmNhZDJkYjkxMzc2YTQ0ODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmNwcApAQCAtNTQsMTYgKzU0LDYgQEAgY29uc3QgVGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJl
TWFwcGVyTGF5ZXI6OnJvb3RMYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLXZv
aWQgVGV4dHVyZU1hcHBlckxheWVyOjpjbGVhckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUoKQotewot
ICAgIG1fYmFja2luZ1N0b3JlLmNsZWFyKCk7Ci0gICAgbV9jb250ZW50c0xheWVyID0gMDsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kpCi0gICAgICAg
IG1fY2hpbGRyZW5baV0tPmNsZWFyQmFja2luZ1N0b3Jlc1JlY3Vyc2l2ZSgpOwotICAgIGlmICht
X3N0YXRlLm1hc2tMYXllcikKLSAgICAgICAgbV9zdGF0ZS5tYXNrTGF5ZXItPmNsZWFyQmFja2lu
Z1N0b3Jlc1JlY3Vyc2l2ZSgpOwotfQotCiB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Y29tcHV0
ZVRyYW5zZm9ybXNSZWN1cnNpdmUoKQogewogICAgIGlmIChtX3N0YXRlLnNpemUuaXNFbXB0eSgp
ICYmIG1fc3RhdGUubWFza3NUb0JvdW5kcykKQEAgLTQzNyw2ICs0MjcsOSBAQCB2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seShHcmFw
aGljc0xheWVyVGV4dAogICAgICAgICBtX3Nob3VsZFVwZGF0ZUN1cnJlbnRGaWx0ZXJzRnJvbUdy
YXBoaWNzTGF5ZXIgPSB0cnVlOwogI2VuZGlmCiAKKyAgICBpZiAoY2hhbmdlTWFzayAmIEJhY2tp
bmdTdG9yZUNoYW5nZSkKKyAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBncmFwaGljc0xheWVyLT5t
X2JhY2tpbmdTdG9yZTsKKwogICAgIGlmIChjaGFuZ2VNYXNrICYgUmVwYWludENvdW50Q2hhbmdl
KQogICAgICAgICBtX3N0YXRlLnJlcGFpbnRDb3VudCA9IGdyYXBoaWNzTGF5ZXItPnJlcGFpbnRD
b3VudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKaW5kZXggZTViZTJiMWFiZDVjZDZmYzg5
Y2FlMmI1NjU5MjAxMjQ1Zjc5NWY4My4uNzdkYTI2OWIzNmEyOTg5MjZmYjc5ODVkZmVhODEyMmUy
NDBjMjlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtNzQsNyArNzQsOSBAQCBwdWJs
aWM6CiAgICAgICAgIEZpbHRlckNoYW5nZSA9ICAgICAgICAgICAgICAoMUwgPDwgMjMpLAogCiAg
ICAgICAgIERlYnVnVmlzdWFsc0NoYW5nZSA9ICAgICAgICAoMUwgPDwgMjQpLAotICAgICAgICBS
ZXBhaW50Q291bnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KQorICAgICAgICBSZXBhaW50Q291
bnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KSwKKworICAgICAgICBCYWNraW5nU3RvcmVDaGFu
Z2UgPSAgICAgICAgKDFMIDw8IDI2KQogICAgIH07CiAKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIo
KQpAQCAtMTAwLDEwICsxMDIsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBhaW50KCk7CiAKLSAg
ICB2b2lkIHNldEJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmU+IGJhY2tpbmdTdG9yZSkgeyBtX2JhY2tpbmdTdG9yZSA9IGJhY2tpbmdTdG9yZTsgfQotICAg
IFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKCkgeyBy
ZXR1cm4gbV9iYWNraW5nU3RvcmU7IH0KLSAgICB2b2lkIGNsZWFyQmFja2luZ1N0b3Jlc1JlY3Vy
c2l2ZSgpOwotCiAgICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbkRlbHRhSWZOZWVkZWQoY29uc3Qg
RmxvYXRTaXplJik7CiAKICAgICB2b2lkIGFwcGx5QW5pbWF0aW9uc1JlY3Vyc2l2ZWx5KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKaW5kZXggODA1YTg3MzZlOTQyYmNmM2U0
M2ViNDkzNjU1ZTBlZTAzMzkzYThkZC4uZGZmMTZhY2YxYjUzMGY4NjUyZjIzYzU2MjJjMWM3YTE3
YTY0YmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcApAQCAtMzg2LDcg
KzM4Niw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmRlbGV0ZUxheWVyKENvb3JkaW5hdGVk
TGF5ZXJJRCBsYXllcklEKQogICAgIE93blB0cjxHcmFwaGljc0xheWVyPiBsYXllciA9IG1fbGF5
ZXJzLnRha2UobGF5ZXJJRCk7CiAgICAgQVNTRVJUKGxheWVyKTsKIAotICAgIG1fcGVuZGluZ1N5
bmNCYWNraW5nU3RvcmVzLnJlbW92ZSh0b1RleHR1cmVNYXBwZXJMYXllcihsYXllci5nZXQoKSkp
OworICAgIG1fYmFja2luZ1N0b3Jlcy5yZW1vdmUobGF5ZXIuZ2V0KCkpOwogICAgIG1fZml4ZWRM
YXllcnMucmVtb3ZlKGxheWVySUQpOwogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIG1f
c3VyZmFjZUJhY2tpbmdTdG9yZXMucmVtb3ZlKGxheWVySUQpOwpAQCAtNDA1LDE4ICs0MDUsNiBA
QCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzZXRSb290TGF5ZXJJRChDb29yZGluYXRlZExheWVy
SUQgbGF5ZXJJRCkKICAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQobGF5ZXIpOwogfQogCi1Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZSogTGF5ZXJUcmVlUmVuZGVyZXI6OmdldEJhY2tpbmdTdG9yZShH
cmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQotewotICAgIFRleHR1cmVNYXBwZXJMYXllciog
bGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyKTsKLSAgICBBU1NFUlQo
bGF5ZXIpOwotICAgIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBzdGF0
aWNfY2FzdDxDb29yZGluYXRlZEJhY2tpbmdTdG9yZSo+KGxheWVyLT5iYWNraW5nU3RvcmUoKS5n
ZXQoKSk7Ci0KLSAgICBCYWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nU3lu
Y0JhY2tpbmdTdG9yZXMuZmluZChsYXllcik7Ci0gICAgaWYgKGl0ICE9IG1fcGVuZGluZ1N5bmNC
YWNraW5nU3RvcmVzLmVuZCgpKQotICAgICAgICBiYWNraW5nU3RvcmUgPSBpdC0+dmFsdWUuZ2V0
KCk7Ci0gICAgcmV0dXJuIGJhY2tpbmdTdG9yZTsKLX0KLQogdm9pZCBMYXllclRyZWVSZW5kZXJl
cjo6cHJlcGFyZUNvbnRlbnRCYWNraW5nU3RvcmUoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXll
cikKIHsKICAgICBpZiAoIWxheWVyU2hvdWxkSGF2ZUJhY2tpbmdTdG9yZShncmFwaGljc0xheWVy
KSkgewpAQCAtNDI5LDU1ICs0MTcsMjcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cHJlcGFy
ZUNvbnRlbnRCYWNraW5nU3RvcmUoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKIAogdm9p
ZCBMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoR3JhcGhpY3NM
YXllciogZ3JhcGhpY3NMYXllcikKIHsKLSAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyID0g
dG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllcik7Ci0gICAgQVNTRVJUKGxheWVyKTsK
LQotICAgIC8vIE1ha2Ugc3VyZSB0aGUgbGF5ZXIgZG9lcyBub3QgYWxyZWFkeSBoYXZlIGEgYmFj
a2luZyBzdG9yZSAoY29tbWl0dGVkIG9yIHBlbmRpbmcpLgotICAgIEJhY2tpbmdTdG9yZU1hcDo6
aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5maW5kKGxheWVyKTsKLSAg
ICBpZiAoaXQgIT0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuZW5kKCkpIHsKLSAgICAgICAg
aWYgKCFpdC0+dmFsdWUpIHsKLSAgICAgICAgICAgIC8vIFRoZXJlIGlzIGEgcGVuZGluZyByZW1v
dmFsLCBjYW5jZWwgaXQuCi0gICAgICAgICAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5y
ZW1vdmUoaXQpOwotICAgICAgICB9Ci0gICAgICAgIC8vIFRoZXJlIGlzIGFscmVhZHkgYSBwZW5k
aW5nIGFkZGl0aW9uLgorICAgIGlmIChtX2JhY2tpbmdTdG9yZXMuY29udGFpbnMoZ3JhcGhpY3NM
YXllcikpCiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGxheWVyLT5iYWNraW5nU3Rv
cmUoKSkKLSAgICAgICAgcmV0dXJuOyAvLyBUaGUgbGF5ZXIgYWxyZWFkeSBoYXMgYSBiYWNraW5n
IHN0b3JlIChhbmQgbm8gcGVuZGluZyByZW1vdmFsKS4KIAogICAgIFJlZlB0cjxDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpjcmVh
dGUoKSk7Ci0KICAgICBiYWNraW5nU3RvcmUtPnNldFNpemUoZ3JhcGhpY3NMYXllci0+c2l6ZSgp
KTsKLSAgICBBU1NFUlQoIW1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmNvbnRhaW5zKGxheWVy
KSk7Ci0gICAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuYWRkKGxheWVyLCBiYWNraW5nU3Rv
cmUpOworICAgIG1fYmFja2luZ1N0b3Jlcy5hZGQoZ3JhcGhpY3NMYXllciwgYmFja2luZ1N0b3Jl
KTsKKyAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXIpLT5zZXRC
YWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKTsKIH0KIAogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6
cmVtb3ZlQmFja2luZ1N0b3JlSWZOZWVkZWQoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikK
IHsKLSAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIo
Z3JhcGhpY3NMYXllcik7Ci0gICAgQVNTRVJUKGxheWVyKTsKLQotICAgIC8vIENoZWNrIGlmIHRo
ZSBsYXlvdXQgYWxyZWFkeSBoYXMgYSBiYWNraW5nIHN0b3JlIChjb21taXR0ZWQgb3IgcGVuZGlu
ZykuCi0gICAgQmFja2luZ1N0b3JlTWFwOjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ1N5bmNCYWNr
aW5nU3RvcmVzLmZpbmQobGF5ZXIpOwotICAgIGlmIChpdCAhPSBtX3BlbmRpbmdTeW5jQmFja2lu
Z1N0b3Jlcy5lbmQoKSkgewotICAgICAgICBpZiAoaXQtPnZhbHVlKSB7Ci0gICAgICAgICAgICAv
LyBUaGVyZSBpcyBhIHBlbmRpbmcgYWRkaXRpb24sIGNhbmNlbCBpdC4KLSAgICAgICAgICAgIG1f
cGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLnJlbW92ZShpdCk7Ci0gICAgICAgIH0KLSAgICAgICAg
Ly8gVGhlcmUgaXMgYWxyZWFkeSBhIHBlbmRpbmcgcmVtb3ZhbC4KKyAgICBSZWZQdHI8Q29vcmRp
bmF0ZWRCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IG1fYmFja2luZ1N0b3Jlcy50YWtlKGdy
YXBoaWNzTGF5ZXIpOworICAgIGlmICghYmFja2luZ1N0b3JlKQogICAgICAgICByZXR1cm47Ci0g
ICAgfQogCi0gICAgaWYgKCFsYXllci0+YmFja2luZ1N0b3JlKCkpCi0gICAgICAgIHJldHVybjsg
Ly8gVGhlIGxheWVyIGhhcyBubyBiYWNraW5nIHN0b3JlIChhbmQgbm8gcGVuZGluZyBhZGRpdGlv
bikuCi0KLSAgICBBU1NFUlQoIW1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmNvbnRhaW5zKGxh
eWVyKSk7Ci0gICAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuYWRkKGxheWVyLCAwKTsKKyAg
ICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXIpLT5zZXRCYWNraW5n
U3RvcmUoMCk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlc2V0QmFja2luZ1N0b3Jl
U2l6ZVRvTGF5ZXJTaXplKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCiB7Ci0gICAgQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IGdldEJhY2tpbmdTdG9yZShncmFw
aGljc0xheWVyKTsKKyAgICBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+IGJhY2tpbmdT
dG9yZSA9IG1fYmFja2luZ1N0b3Jlcy5nZXQoZ3JhcGhpY3NMYXllcik7CiAgICAgQVNTRVJUKGJh
Y2tpbmdTdG9yZSk7CiAgICAgYmFja2luZ1N0b3JlLT5zZXRTaXplKGdyYXBoaWNzTGF5ZXItPnNp
emUoKSk7CiB9CkBAIC00ODUsNyArNDQ1LDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVz
ZXRCYWNraW5nU3RvcmVTaXplVG9MYXllclNpemUoR3JhcGhpY3NMYXllciogZ3JhcGhpY3MKIHZv
aWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVy
SUQsIHVpbnQzMl90IHRpbGVJRCwgZmxvYXQgc2NhbGUpCiB7CiAgICAgR3JhcGhpY3NMYXllciog
bGF5ZXIgPSBsYXllckJ5SUQobGF5ZXJJRCk7Ci0gICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUq
IGJhY2tpbmdTdG9yZSA9IGdldEJhY2tpbmdTdG9yZShsYXllcik7CisgICAgUmVmUHRyPENvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBtX2JhY2tpbmdTdG9yZXMuZ2V0KGxh
eWVyKTsKICAgICBBU1NFUlQoYmFja2luZ1N0b3JlKTsKICAgICBiYWNraW5nU3RvcmUtPmNyZWF0
ZVRpbGUodGlsZUlELCBzY2FsZSk7CiAgICAgcmVzZXRCYWNraW5nU3RvcmVTaXplVG9MYXllclNp
emUobGF5ZXIpOwpAQCAtNDk0LDcgKzQ1NCw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNy
ZWF0ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQsIHVpbnQzMl90IHRpbGVJRCwKIHZv
aWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVy
SUQsIHVpbnQzMl90IHRpbGVJRCkKIHsKICAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxheWVy
QnlJRChsYXllcklEKTsKLSAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3Jl
ID0gZ2V0QmFja2luZ1N0b3JlKGxheWVyKTsKKyAgICBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5n
U3RvcmU+IGJhY2tpbmdTdG9yZSA9IG1fYmFja2luZ1N0b3Jlcy5nZXQobGF5ZXIpOwogICAgIGlm
ICghYmFja2luZ1N0b3JlKQogICAgICAgICByZXR1cm47CiAKQEAgLTUwNiw3ICs0NjYsNyBAQCB2
b2lkIExheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVUaWxlKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXll
cklELCB1aW50MzJfdCB0aWxlSUQpCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjp1cGRhdGVUaWxl
KENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklELCB1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFRpbGVV
cGRhdGUmIHVwZGF0ZSkKIHsKICAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJRChs
YXllcklEKTsKLSAgICBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9y
ZSA9IGdldEJhY2tpbmdTdG9yZShsYXllcik7CisgICAgUmVmUHRyPENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlPiBiYWNraW5nU3RvcmUgPSBtX2JhY2tpbmdTdG9yZXMuZ2V0KGxheWVyKTsKICAgICBB
U1NFUlQoYmFja2luZ1N0b3JlKTsKICAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZVRpbGUodGlsZUlE
LCB1cGRhdGUuc291cmNlUmVjdCwgdXBkYXRlLnRpbGVSZWN0LCB1cGRhdGUuc3VyZmFjZSwgdXBk
YXRlLm9mZnNldCk7CiAgICAgcmVzZXRCYWNraW5nU3RvcmVTaXplVG9MYXllclNpemUobGF5ZXIp
OwpAQCAtNTc3LDE1ICs1MzcsNiBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpjb21taXRQZW5k
aW5nQmFja2luZ1N0b3JlT3BlcmF0aW9ucygpCiAgICAgICAgICgqaXQpLT5jb21taXRUaWxlT3Bl
cmF0aW9ucyhtX3RleHR1cmVNYXBwZXIuZ2V0KCkpOwogCiAgICAgbV9iYWNraW5nU3RvcmVzV2l0
aFBlbmRpbmdCdWZmZXJzLmNsZWFyKCk7Ci0KLSAgICB7Ci0gICAgICAgIEJhY2tpbmdTdG9yZU1h
cDo6aXRlcmF0b3IgZW5kID0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuZW5kKCk7Ci0gICAg
ICAgIEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0
b3Jlcy5iZWdpbigpOwotICAgICAgICBmb3IgKDtpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAg
ICBpdC0+a2V5LT5zZXRCYWNraW5nU3RvcmUoaXQtPnZhbHVlKTsKLQotICAgICAgICBtX3BlbmRp
bmdTeW5jQmFja2luZ1N0b3Jlcy5jbGVhcigpOwotICAgIH0KIH0KIAogdm9pZCBMYXllclRyZWVS
ZW5kZXJlcjo6Zmx1c2hMYXllckNoYW5nZXMoKQpAQCAtNjQ1LDEyICs1OTYsOCBAQCB2b2lkIExh
eWVyVHJlZVJlbmRlcmVyOjpzeW5jUmVtb3RlQ29udGVudCgpCiAKIHZvaWQgTGF5ZXJUcmVlUmVu
ZGVyZXI6OnB1cmdlR0xSZXNvdXJjZXMoKQogewotICAgIFRleHR1cmVNYXBwZXJMYXllciogbGF5
ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihyb290TGF5ZXIoKSk7Ci0KLSAgICBpZiAobGF5ZXIp
Ci0gICAgICAgIGxheWVyLT5jbGVhckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUoKTsKLQogICAgIG1f
aW1hZ2VCYWNraW5ncy5jbGVhcigpOworICAgIG1fcmVsZWFzZWRJbWFnZUJhY2tpbmdzLmNsZWFy
KCk7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgbV9zdXJmYWNlQmFja2luZ1N0b3Jl
cy5jbGVhcigpOwogI2VuZGlmCkBAIC02NjAsNyArNjA3LDcgQEAgdm9pZCBMYXllclRyZWVSZW5k
ZXJlcjo6cHVyZ2VHTFJlc291cmNlcygpCiAgICAgbV9sYXllcnMuY2xlYXIoKTsKICAgICBtX2Zp
eGVkTGF5ZXJzLmNsZWFyKCk7CiAgICAgbV90ZXh0dXJlTWFwcGVyLmNsZWFyKCk7Ci0gICAgbV9w
ZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuY2xlYXIoKTsKKyAgICBtX2JhY2tpbmdTdG9yZXMuY2xl
YXIoKTsKICAgICBtX2JhY2tpbmdTdG9yZXNXaXRoUGVuZGluZ0J1ZmZlcnMuY2xlYXIoKTsKIAog
ICAgIHNldEFjdGl2ZShmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAppbmRl
eCBkYmZhNmE4OWVlN2NkOGQ1NDhkZTY3ZjBmYTkyOTRlNjQxOWVkN2ZmLi4xY2Q4YmEzYTU0MDdj
Y2Y2MGY0MTljN2Q0NmIxOTc0NDhmY2FiMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRl
cmVyLmgKQEAgLTE1Myw3ICsxNTMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZW5zdXJlUm9vdExh
eWVyKCk7CiAgICAgdm9pZCBjb21taXRQZW5kaW5nQmFja2luZ1N0b3JlT3BlcmF0aW9ucygpOwog
Ci0gICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUqIGdldEJhY2tpbmdTdG9yZShXZWJDb3JlOjpH
cmFwaGljc0xheWVyKik7CiAgICAgdm9pZCBwcmVwYXJlQ29udGVudEJhY2tpbmdTdG9yZShXZWJD
b3JlOjpHcmFwaGljc0xheWVyKik7CiAgICAgdm9pZCBjcmVhdGVCYWNraW5nU3RvcmVJZk5lZWRl
ZChXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CiAgICAgdm9pZCByZW1vdmVCYWNraW5nU3RvcmVJ
Zk5lZWRlZChXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CkBAIC0xNzIsOCArMTcxLDggQEAgcHJp
dmF0ZToKICAgICBJbWFnZUJhY2tpbmdNYXAgbV9pbWFnZUJhY2tpbmdzOwogICAgIFZlY3RvcjxS
ZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+ID4gbV9yZWxlYXNlZEltYWdlQmFja2luZ3M7
CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgUmVm
UHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiA+IEJhY2tpbmdTdG9yZU1hcDsKLSAgICBCYWNr
aW5nU3RvcmVNYXAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXM7CisgICAgdHlwZWRlZiBIYXNo
TWFwPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU+ID4gQmFja2luZ1N0b3JlTWFwOworICAgIEJhY2tpbmdTdG9yZU1hcCBtX2JhY2tpbmdTdG9y
ZXM7CiAKICAgICBIYXNoU2V0PFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gPiBtX2Jh
Y2tpbmdTdG9yZXNXaXRoUGVuZGluZ0J1ZmZlcnM7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>