<?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>112586</bug_id>
          
          <creation_ts>2013-03-18 09:55:51 -0700</creation_ts>
          <short_desc>Web Inspector: Switch Drawer animation from JavaScript to CSS transitions.</short_desc>
          <delta_ts>2013-03-20 04:34:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Dmitry Zvorygin">zvorygin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>857221</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Zvorygin">zvorygin</who>
    <bug_when>2013-03-18 09:55:51 -0700</bug_when>
    <thetext>This simplifies code, and gives smoother animation for free.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857266</commentid>
    <comment_count>1</comment_count>
      <attachid>193598</attachid>
    <who name="Dmitry Zvorygin">zvorygin</who>
    <bug_when>2013-03-18 10:23:50 -0700</bug_when>
    <thetext>Created attachment 193598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858006</commentid>
    <comment_count>2</comment_count>
      <attachid>193598</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-03-19 00:46:02 -0700</bug_when>
    <thetext>Comment on attachment 193598
Patch

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

&gt; Source/WebCore/inspector/front-end/Drawer.js:-104
&gt; -        function animationFinished()

Why was this function removed?

&gt; Source/WebCore/inspector/front-end/Drawer.js:130
&gt; +        this.animationFinished = function()

Please make it a named function
function animationFinshed()
{
 ...
}
this._animationFinished = animationFinished;

&gt; Source/WebCore/inspector/front-end/Drawer.js:141
&gt; +        if (this._viewStatusBar.style.opacity == 0 || animationType == WebInspector.Drawer.AnimationType.Immediately )

What does this condition check: this._viewStatusBar.style.opacity == 0 ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858173</commentid>
    <comment_count>3</comment_count>
      <attachid>193598</attachid>
    <who name="Dmitry Zvorygin">zvorygin</who>
    <bug_when>2013-03-19 04:53:05 -0700</bug_when>
    <thetext>Comment on attachment 193598
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/Drawer.js:-104
&gt;&gt; -        function animationFinished()
&gt; 
&gt; Why was this function removed?

By mistake.
Restored, although everything seemed to work fine without this function.

&gt;&gt; Source/WebCore/inspector/front-end/Drawer.js:130
&gt;&gt; +        this.animationFinished = function()
&gt; 
&gt; Please make it a named function
&gt; function animationFinshed()
&gt; {
&gt;  ...
&gt; }
&gt; this._animationFinished = animationFinished;

Done.

&gt;&gt; Source/WebCore/inspector/front-end/Drawer.js:141
&gt;&gt; +        if (this._viewStatusBar.style.opacity == 0 || animationType == WebInspector.Drawer.AnimationType.Immediately )
&gt; 
&gt; What does this condition check: this._viewStatusBar.style.opacity == 0 ?

Added comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858174</commentid>
    <comment_count>4</comment_count>
      <attachid>193794</attachid>
    <who name="Dmitry Zvorygin">zvorygin</who>
    <bug_when>2013-03-19 04:54:42 -0700</bug_when>
    <thetext>Created attachment 193794
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858187</commentid>
    <comment_count>5</comment_count>
      <attachid>193794</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-03-19 05:21:08 -0700</bug_when>
    <thetext>Comment on attachment 193794
Patch

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

&gt; Source/WebCore/inspector/front-end/Drawer.js:114
&gt; +        if (this._viewStatusBar.style.opacity == 1 || animationType == WebInspector.Drawer.AnimationType.Immediately )

We use === everywhere.

Also, an extraneous whitespace before &apos;)&apos;

&gt; Source/WebCore/inspector/front-end/Drawer.js:156
&gt; +        if (this._viewStatusBar.style.opacity == 0 || animationType == WebInspector.Drawer.AnimationType.Immediately )

I seem to have seen this somewhere? :) Is the diff/patch correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858193</commentid>
    <comment_count>6</comment_count>
      <attachid>193802</attachid>
    <who name="Dmitry Zvorygin">zvorygin</who>
    <bug_when>2013-03-19 05:34:44 -0700</bug_when>
    <thetext>Created attachment 193802
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858298</commentid>
    <comment_count>7</comment_count>
      <attachid>193802</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-03-19 08:11:19 -0700</bug_when>
    <thetext>Comment on attachment 193802
Patch

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

&gt; Source/WebCore/inspector/front-end/Drawer.js:155
&gt; +        // So we have to finish animation manually.

But when does this actually happen?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858352</commentid>
    <comment_count>8</comment_count>
      <attachid>193802</attachid>
    <who name="Dmitry Zvorygin">zvorygin</who>
    <bug_when>2013-03-19 09:33:34 -0700</bug_when>
    <thetext>Comment on attachment 193802
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/Drawer.js:155
&gt;&gt; +        // So we have to finish animation manually.
&gt; 
&gt; But when does this actually happen?

Honestly, I can&apos;t invent situation when opacity can unsynchronize with drawer state, but if it happens, we wouldn&apos;t receive webkitTransitionEnd, and thuis wouldn&apos;t perform important cleanup.

I can remove opacity check assuming that such situation will newer happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858365</commentid>
    <comment_count>9</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-03-19 09:46:36 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 193802 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=193802&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/inspector/front-end/Drawer.js:155
&gt; &gt;&gt; +        // So we have to finish animation manually.
&gt; &gt; 
&gt; &gt; But when does this actually happen?
&gt; 
&gt; Honestly, I can&apos;t invent situation when opacity can unsynchronize with drawer state, but if it happens, we wouldn&apos;t receive webkitTransitionEnd, and thuis wouldn&apos;t perform important cleanup.
&gt; 
&gt; I can remove opacity check assuming that such situation will newer happen.

Sounds like a good time to use console.assert :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859219</commentid>
    <comment_count>10</comment_count>
      <attachid>194012</attachid>
    <who name="Dmitry Zvorygin">zvorygin</who>
    <bug_when>2013-03-20 03:23:42 -0700</bug_when>
    <thetext>Created attachment 194012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859246</commentid>
    <comment_count>11</comment_count>
      <attachid>194012</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-20 04:34:14 -0700</bug_when>
    <thetext>Comment on attachment 194012
Patch

Clearing flags on attachment: 194012

Committed r146326: &lt;http://trac.webkit.org/changeset/146326&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859247</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-20 04:34:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193598</attachid>
            <date>2013-03-18 10:23:50 -0700</date>
            <delta_ts>2013-03-19 04:54:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112586-20130318211940.patch</filename>
            <type>text/plain</type>
            <size>11818</size>
            <attacher name="Dmitry Zvorygin">zvorygin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1ODkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTEzMTJiMTdiNDIyN2Uw
YjQ4OTcyMWY5ZDc4ZjQ4MTFhYjhkOGJlMC4uZDFmMTIxNGM0NmVkNzYyOTc5NTlmNzZiMWFmZWIy
NDJjYzEzMjM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEzLTAzLTE4ICBEbWl0
cnkgWnZvcnlnaW4gIDx6dm9yeWdpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogU3dpdGNoIERyYXdlciBhbmltYXRpb24gZnJvbSBKYXZhU2NyaXB0IHRvIENTUyB0cmFu
c2l0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMjU4NgorCisgICAgICAgIFRoaXMgaXMgcHJlcmVxdWlzaXRlIHRvIG1ha2UgRHJhd2VyIHdv
cmsgaW4gb3ZlcmxheSBtb2RlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EcmF3ZXIuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRHJhd2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EcmF3ZXIucHJvdG90
eXBlLnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRyYXdlci5wcm90b3R5cGUuaGlkZS50
aGlzLmFuaW1hdGlvbkZpbmlzaGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EcmF3ZXIucHJv
dG90eXBlLmhpZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRyYXdlci5wcm90b3R5cGUuaW1t
ZWRpYXRlbHlGaW5pc2hBbmltYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRyYXdlci5w
cm90b3R5cGUuX2dldEFuaW1hdGlvblN0eWxlcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9VSVV0aWxzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmNzczoKKyAgICAgICAgKC5hbmltYXRlLXNsb3cgKik6CisgICAgICAgICguYW5pbWF0ZSAjbWFp
bik6CisgICAgICAgICguYW5pbWF0ZSAjZmxvYXRpbmctc3RhdHVzLWJhci1jb250YWluZXIpOgor
ICAgICAgICAoLmFuaW1hdGUgI2RyYXdlcik6CisgICAgICAgICguYW5pbWF0ZSAjYm90dG9tLXN0
YXR1cy1iYXItY29udGFpbmVyID4gKik6CisKIDIwMTMtMDMtMTUgIE5vYW0gUm9zZW50aGFsICA8
bm9hbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtUZXhtYXBdIENoYW5nZSBicmlnaHRuZXNzIGZp
bHRlciB0byBtYXRjaCBuZXcgc3BlYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9EcmF3ZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RyYXdlci5qcwppbmRleCA5OTdlNTEyYjFlZTU4ZTA1MWUxMjQ4OGVjMjE5NmMyNjUwZDQ5
NzQzLi4zM2FjNmUwMTA5Njc1MDBlMDdhOGNkNGQ2Mjk3OGQyMDY3ZDdiNGQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RyYXdlci5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RyYXdlci5qcwpAQCAtNDUsNiArNDUsNyBA
QCBXZWJJbnNwZWN0b3IuRHJhd2VyID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX2RyYXdlckNvbnRl
bnRzRWxlbWVudC5jbGFzc05hbWUgPSAiZHJhd2VyLWNvbnRlbnRzIjsKICAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fZHJhd2VyQ29udGVudHNFbGVtZW50KTsKICAgICB0aGlzLl92
aWV3U3RhdHVzQmFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdGhpcy5f
dmlld1N0YXR1c0Jhci5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgdGhp
cy5pbW1lZGlhdGVseUZpbmlzaEFuaW1hdGlvbi5iaW5kKHRoaXMpLCBmYWxzZSk7CiAgICAgdGhp
cy5fYm90dG9tU3RhdHVzQmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvdHRvbS1zdGF0
dXMtYmFyLWNvbnRhaW5lciIpOwogfQogCkBAIC05NCwyNCArOTUsMTggQEAgV2ViSW5zcGVjdG9y
LkRyYXdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAg
ICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5fY29uc3RyYWluSGVpZ2h0KHRoaXMuX3NhdmVkSGVpZ2h0
IHx8IHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQpOwotICAgICAgICB2YXIgYW5pbWF0aW9ucyA9
IFsKLSAgICAgICAgICAgIHtlbGVtZW50OiB0aGlzLmVsZW1lbnQsIGVuZDoge2hlaWdodDogaGVp
Z2h0fX0sCi0gICAgICAgICAgICB7ZWxlbWVudDogdGhpcy5fbWFpbkVsZW1lbnQsIGVuZDoge2Jv
dHRvbTogaGVpZ2h0fX0sCi0gICAgICAgICAgICB7ZWxlbWVudDogdGhpcy5fZmxvYXRpbmdTdGF0
dXNCYXJDb250YWluZXIsIHN0YXJ0OiB7InBhZGRpbmctbGVmdCI6IHRoaXMuX2JvdHRvbVN0YXR1
c0Jhci5vZmZzZXRMZWZ0fSwgZW5kOiB7InBhZGRpbmctbGVmdCI6IDB9fSwKLSAgICAgICAgICAg
IHtlbGVtZW50OiB0aGlzLl92aWV3U3RhdHVzQmFyLCBzdGFydDoge29wYWNpdHk6IDB9LCBlbmQ6
IHtvcGFjaXR5OiAxfX0KLSAgICAgICAgXTsKLQotICAgICAgICBmdW5jdGlvbiBhbmltYXRpb25G
aW5pc2hlZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JW
aWV3LmN1cnJlbnRQYW5lbCgpLmRvUmVzaXplKCk7Ci0gICAgICAgICAgICBpZiAodGhpcy5fdmll
dyAmJiB0aGlzLl92aWV3LmFmdGVyU2hvdykKLSAgICAgICAgICAgICAgICB0aGlzLl92aWV3LmFm
dGVyU2hvdygpOwotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2N1cnJlbnRBbmltYXRpb247Ci0g
ICAgICAgIH0KIAotICAgICAgICB0aGlzLl9jdXJyZW50QW5pbWF0aW9uID0gV2ViSW5zcGVjdG9y
LmFuaW1hdGVTdHlsZShhbmltYXRpb25zLCB0aGlzLl9hbmltYXRpb25EdXJhdGlvbihhbmltYXRp
b25UeXBlKSwgYW5pbWF0aW9uRmluaXNoZWQuYmluZCh0aGlzKSk7Ci0gICAgICAgIGlmIChhbmlt
YXRpb25UeXBlID09PSBXZWJJbnNwZWN0b3IuRHJhd2VyLkFuaW1hdGlvblR5cGUuSW1tZWRpYXRl
bHkpCi0gICAgICAgICAgICB0aGlzLl9jdXJyZW50QW5pbWF0aW9uLmZvcmNlQ29tcGxldGUoKTsK
KyAgICAgICAgdGhpcy5fZmxvYXRpbmdTdGF0dXNCYXJDb250YWluZXIuc3R5bGUucGFkZGluZ0xl
ZnQgPSB0aGlzLl9ib3R0b21TdGF0dXNCYXIub2Zmc2V0TGVmdCArICJweCI7CisKKyAgICAgICAg
dGhpcy5fZ2V0QW5pbWF0aW9uU3R5bGVzKGFuaW1hdGlvblR5cGUpLmZvckVhY2goZG9jdW1lbnQu
Ym9keS5hZGRTdHlsZUNsYXNzLCBkb2N1bWVudC5ib2R5KTsKKworICAgICAgICBpZiAodGhpcy5f
dmlld1N0YXR1c0Jhci5zdHlsZS5vcGFjaXR5ID09IDEgfHwgYW5pbWF0aW9uVHlwZSA9PSBXZWJJ
bnNwZWN0b3IuRHJhd2VyLkFuaW1hdGlvblR5cGUuSW1tZWRpYXRlbHkgKQorICAgICAgICAgICAg
dGhpcy5pbW1lZGlhdGVseUZpbmlzaEFuaW1hdGlvbigpOworCisgICAgICAgIHRoaXMuZWxlbWVu
dC5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAicHgiOworICAgICAgICB0aGlzLl9tYWluRWxlbWVu
dC5zdHlsZS5ib3R0b20gPSBoZWlnaHQgKyAicHgiOworICAgICAgICB0aGlzLl9mbG9hdGluZ1N0
YXR1c0JhckNvbnRhaW5lci5zdHlsZS5wYWRkaW5nTGVmdCA9IDA7CisgICAgICAgIHRoaXMuX3Zp
ZXdTdGF0dXNCYXIuc3R5bGUub3BhY2l0eSA9IDE7CiAgICAgfSwKIAogICAgIGhpZGU6IGZ1bmN0
aW9uKGFuaW1hdGlvblR5cGUpCkBAIC0xMzAsMTQgKzEyNSw5IEBAIFdlYkluc3BlY3Rvci5EcmF3
ZXIucHJvdG90eXBlID0gewogICAgICAgICBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5jdXJy
ZW50UGFuZWwoKS5zdGF0dXNCYXJSZXNpemVkKCk7CiAgICAgICAgIGRvY3VtZW50LmJvZHkuYWRk
U3R5bGVDbGFzcygiZHJhd2VyLXZpc2libGUiKTsKIAotICAgICAgICB2YXIgYW5pbWF0aW9ucyA9
IFsKLSAgICAgICAgICAgIHtlbGVtZW50OiB0aGlzLl9tYWluRWxlbWVudCwgZW5kOiB7Ym90dG9t
OiAwfX0sCi0gICAgICAgICAgICB7ZWxlbWVudDogdGhpcy5lbGVtZW50LCBlbmQ6IHtoZWlnaHQ6
IDB9fSwKLSAgICAgICAgICAgIHtlbGVtZW50OiB0aGlzLl9mbG9hdGluZ1N0YXR1c0JhckNvbnRh
aW5lciwgc3RhcnQ6IHsicGFkZGluZy1sZWZ0IjogMH0sIGVuZDogeyJwYWRkaW5nLWxlZnQiOiB0
aGlzLl9ib3R0b21TdGF0dXNCYXIub2Zmc2V0TGVmdH0gfSwKLSAgICAgICAgICAgIHtlbGVtZW50
OiB0aGlzLl92aWV3U3RhdHVzQmFyLCBzdGFydDoge29wYWNpdHk6IDF9LCBlbmQ6IHtvcGFjaXR5
OiAwfX0KLSAgICAgICAgXTsKKyAgICAgICAgdGhpcy5fZ2V0QW5pbWF0aW9uU3R5bGVzKGFuaW1h
dGlvblR5cGUpLmZvckVhY2goZG9jdW1lbnQuYm9keS5hZGRTdHlsZUNsYXNzLCBkb2N1bWVudC5i
b2R5KTsKIAotICAgICAgICBmdW5jdGlvbiBhbmltYXRpb25GaW5pc2hlZCgpCisgICAgICAgIHRo
aXMuYW5pbWF0aW9uRmluaXNoZWQgPSBmdW5jdGlvbigpCiAgICAgICAgIHsKICAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LmN1cnJlbnRQYW5lbCgpLmRvUmVzaXplKCk7CiAg
ICAgICAgICAgICB0aGlzLl92aWV3LmRldGFjaCgpOwpAQCAtMTQ2LDEyICsxMzYsMTUgQEAgV2Vi
SW5zcGVjdG9yLkRyYXdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9ib3R0b21T
dGF0dXNCYXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhbmVsLXN0YXR1
cy1iYXIiKSk7CiAgICAgICAgICAgICB0aGlzLl9kcmF3ZXJDb250ZW50c0VsZW1lbnQucmVtb3Zl
Q2hpbGRyZW4oKTsKICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlU3R5bGVDbGFzcygi
ZHJhd2VyLXZpc2libGUiKTsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9jdXJyZW50QW5pbWF0
aW9uOwotICAgICAgICB9CisgICAgICAgIH0uYmluZCh0aGlzKTsKIAotICAgICAgICB0aGlzLl9j
dXJyZW50QW5pbWF0aW9uID0gV2ViSW5zcGVjdG9yLmFuaW1hdGVTdHlsZShhbmltYXRpb25zLCB0
aGlzLl9hbmltYXRpb25EdXJhdGlvbihhbmltYXRpb25UeXBlKSwgYW5pbWF0aW9uRmluaXNoZWQu
YmluZCh0aGlzKSk7Ci0gICAgICAgIGlmIChhbmltYXRpb25UeXBlID09PSBXZWJJbnNwZWN0b3Iu
RHJhd2VyLkFuaW1hdGlvblR5cGUuSW1tZWRpYXRlbHkpCi0gICAgICAgICAgICB0aGlzLl9jdXJy
ZW50QW5pbWF0aW9uLmZvcmNlQ29tcGxldGUoKTsKKyAgICAgICAgaWYgKHRoaXMuX3ZpZXdTdGF0
dXNCYXIuc3R5bGUub3BhY2l0eSA9PSAwIHx8IGFuaW1hdGlvblR5cGUgPT0gV2ViSW5zcGVjdG9y
LkRyYXdlci5BbmltYXRpb25UeXBlLkltbWVkaWF0ZWx5ICkKKyAgICAgICAgICAgIHRoaXMuaW1t
ZWRpYXRlbHlGaW5pc2hBbmltYXRpb24oKTsKKworICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUu
aGVpZ2h0ID0gMDsKKyAgICAgICAgdGhpcy5fbWFpbkVsZW1lbnQuc3R5bGUuYm90dG9tID0gMDsK
KyAgICAgICAgdGhpcy5fZmxvYXRpbmdTdGF0dXNCYXJDb250YWluZXIuc3R5bGUucGFkZGluZ0xl
ZnQgPSB0aGlzLl9ib3R0b21TdGF0dXNCYXIub2Zmc2V0TGVmdCArICJweCI7CisgICAgICAgIHRo
aXMuX3ZpZXdTdGF0dXNCYXIuc3R5bGUub3BhY2l0eSA9IDA7CiAgICAgfSwKIAogICAgIHJlc2l6
ZTogZnVuY3Rpb24oKQpAQCAtMTY4LDE5ICsxNjEsMjMgQEAgV2ViSW5zcGVjdG9yLkRyYXdlci5w
cm90b3R5cGUgPSB7CiAKICAgICBpbW1lZGlhdGVseUZpbmlzaEFuaW1hdGlvbjogZnVuY3Rpb24o
KQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRBbmltYXRpb24pCi0gICAgICAgICAg
ICB0aGlzLl9jdXJyZW50QW5pbWF0aW9uLmZvcmNlQ29tcGxldGUoKTsKKyAgICAgICAgZG9jdW1l
bnQuYm9keS5yZW1vdmVTdHlsZUNsYXNzKCJhbmltYXRlIik7CisgICAgICAgIGRvY3VtZW50LmJv
ZHkucmVtb3ZlU3R5bGVDbGFzcygiYW5pbWF0ZS1zbG93Iik7CisgICAgICAgIGlmICh0aGlzLmFu
aW1hdGlvbkZpbmlzaGVkKSB7CisgICAgICAgICAgICB0aGlzLmFuaW1hdGlvbkZpbmlzaGVkKCk7
CisgICAgICAgICAgICBkZWxldGUgdGhpcy5hbmltYXRpb25GaW5pc2hlZDsKKyAgICAgICAgfQog
ICAgIH0sCiAKLSAgICBfYW5pbWF0aW9uRHVyYXRpb246IGZ1bmN0aW9uKGFuaW1hdGlvblR5cGUp
CisgICAgX2dldEFuaW1hdGlvblN0eWxlczogZnVuY3Rpb24oYW5pbWF0aW9uVHlwZSkKICAgICB7
CiAgICAgICAgIHN3aXRjaCAoYW5pbWF0aW9uVHlwZSkgewogICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5EcmF3ZXIuQW5pbWF0aW9uVHlwZS5TbG93OgotICAgICAgICAgICAgcmV0dXJuIDIwMDA7
CisgICAgICAgICAgICByZXR1cm4gWyJhbmltYXRlIiwgImFuaW1hdGUtc2xvdyJdOwogICAgICAg
ICBjYXNlIFdlYkluc3BlY3Rvci5EcmF3ZXIuQW5pbWF0aW9uVHlwZS5Ob3JtYWw6Ci0gICAgICAg
ICAgICByZXR1cm4gMjUwOworICAgICAgICAgICAgcmV0dXJuIFsiYW5pbWF0ZSJdOwogICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gW107
CiAgICAgICAgIH0KICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1VJVXRpbHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1VJVXRpbHMuanMKaW5kZXggOGVjYTAwM2U4ZDBiNWNkNjQ5MGVhNDVlYjA0NTkwMjZjY2Ni
MTg5MS4uMTNkZWFhMDY2MTQxNGJjNzFiYzEyODFmYzM1NjZlNDRkNmE5ZjhmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlVdGlscy5qcwpAQCAtMTUwLDExMSAr
MTUwLDYgQEAgV2ViSW5zcGVjdG9yLkdsYXNzUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgfQogfQog
Ci1XZWJJbnNwZWN0b3IuYW5pbWF0ZVN0eWxlID0gZnVuY3Rpb24oYW5pbWF0aW9ucywgZHVyYXRp
b24sIGNhbGxiYWNrKQotewotICAgIHZhciBpbnRlcnZhbDsKLSAgICB2YXIgY29tcGxldGUgPSAw
OwotICAgIHZhciBoYXNDb21wbGV0ZWQgPSBmYWxzZTsKLQotICAgIGNvbnN0IGludGVydmFsRHVy
YXRpb24gPSAoMTAwMCAvIDMwKTsgLy8gMzAgZnJhbWVzIHBlciBzZWNvbmQuCi0gICAgY29uc3Qg
YW5pbWF0aW9uc0xlbmd0aCA9IGFuaW1hdGlvbnMubGVuZ3RoOwotICAgIGNvbnN0IHByb3BlcnR5
VW5pdCA9IHtvcGFjaXR5OiAiIn07Ci0gICAgY29uc3QgZGVmYXVsdFVuaXQgPSAicHgiOwotCi0g
ICAgZnVuY3Rpb24gY3ViaWNJbk91dCh0LCBiLCBjLCBkKQotICAgIHsKLSAgICAgICAgaWYgKCh0
Lz1kLzIpIDwgMSkgcmV0dXJuIGMvMip0KnQqdCArIGI7Ci0gICAgICAgIHJldHVybiBjLzIqKCh0
LT0yKSp0KnQgKyAyKSArIGI7Ci0gICAgfQotCi0gICAgLy8gUHJlLXByb2Nlc3MgYW5pbWF0aW9u
cy4KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFuaW1hdGlvbnNMZW5ndGg7ICsraSkgewotICAg
ICAgICB2YXIgYW5pbWF0aW9uID0gYW5pbWF0aW9uc1tpXTsKLSAgICAgICAgdmFyIGVsZW1lbnQg
PSBudWxsLCBzdGFydCA9IG51bGwsIGVuZCA9IG51bGwsIGtleSA9IG51bGw7Ci0gICAgICAgIGZv
ciAoa2V5IGluIGFuaW1hdGlvbikgewotICAgICAgICAgICAgaWYgKGtleSA9PT0gImVsZW1lbnQi
KQotICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBhbmltYXRpb25ba2V5XTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKGtleSA9PT0gInN0YXJ0IikKLSAgICAgICAgICAgICAgICBzdGFydCA9IGFuaW1h
dGlvbltrZXldOwotICAgICAgICAgICAgZWxzZSBpZiAoa2V5ID09PSAiZW5kIikKLSAgICAgICAg
ICAgICAgICBlbmQgPSBhbmltYXRpb25ba2V5XTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgh
ZWxlbWVudCB8fCAhZW5kKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKCFz
dGFydCkgewotICAgICAgICAgICAgdmFyIGNvbXB1dGVkU3R5bGUgPSBlbGVtZW50Lm93bmVyRG9j
dW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTsKLSAgICAgICAgICAg
IHN0YXJ0ID0ge307Ci0gICAgICAgICAgICBmb3IgKGtleSBpbiBlbmQpCi0gICAgICAgICAgICAg
ICAgc3RhcnRba2V5XSA9IHBhcnNlSW50KGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShr
ZXkpLCAxMCk7Ci0gICAgICAgICAgICBhbmltYXRpb24uc3RhcnQgPSBzdGFydDsKLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBmb3IgKGtleSBpbiBzdGFydCkKLSAgICAgICAgICAgICAgICBl
bGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGtleSwgc3RhcnRba2V5XSArIChrZXkgaW4gcHJvcGVy
dHlVbml0ID8gcHJvcGVydHlVbml0W2tleV0gOiBkZWZhdWx0VW5pdCkpOwotICAgIH0KLQotICAg
IGZ1bmN0aW9uIGFuaW1hdGVMb29wKCkKLSAgICB7Ci0gICAgICAgIGlmIChoYXNDb21wbGV0ZWQp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICAvLyBBZHZhbmNlIGZvcndh
cmQuCi0gICAgICAgIGNvbXBsZXRlICs9IGludGVydmFsRHVyYXRpb247Ci0gICAgICAgIHZhciBu
ZXh0ID0gY29tcGxldGUgKyBpbnRlcnZhbER1cmF0aW9uOwotCi0gICAgICAgIC8vIE1ha2Ugc3R5
bGUgY2hhbmdlcy4KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbmltYXRpb25zTGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgIHZhciBhbmltYXRpb24gPSBhbmltYXRpb25zW2ldOwotICAg
ICAgICAgICAgdmFyIGVsZW1lbnQgPSBhbmltYXRpb24uZWxlbWVudDsKLSAgICAgICAgICAgIHZh
ciBzdGFydCA9IGFuaW1hdGlvbi5zdGFydDsKLSAgICAgICAgICAgIHZhciBlbmQgPSBhbmltYXRp
b24uZW5kOwotICAgICAgICAgICAgaWYgKCFlbGVtZW50IHx8ICFlbmQpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHZhciBzdHlsZSA9IGVsZW1lbnQuc3R5bGU7Ci0g
ICAgICAgICAgICBmb3IgKGtleSBpbiBlbmQpIHsKLSAgICAgICAgICAgICAgICB2YXIgZW5kVmFs
dWUgPSBlbmRba2V5XTsKLSAgICAgICAgICAgICAgICBpZiAobmV4dCA8IGR1cmF0aW9uKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHZhciBzdGFydFZhbHVlID0gc3RhcnRba2V5XTsKLSAgICAgICAg
ICAgICAgICAgICAgdmFyIG5ld1ZhbHVlID0gY3ViaWNJbk91dChjb21wbGV0ZSwgc3RhcnRWYWx1
ZSwgZW5kVmFsdWUgLSBzdGFydFZhbHVlLCBkdXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAg
IHN0eWxlLnNldFByb3BlcnR5KGtleSwgbmV3VmFsdWUgKyAoa2V5IGluIHByb3BlcnR5VW5pdCA/
IHByb3BlcnR5VW5pdFtrZXldIDogZGVmYXVsdFVuaXQpKTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgc3R5bGUuc2V0UHJvcGVydHkoa2V5LCBlbmRWYWx1ZSAr
IChrZXkgaW4gcHJvcGVydHlVbml0ID8gcHJvcGVydHlVbml0W2tleV0gOiBkZWZhdWx0VW5pdCkp
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRW5kIGNvbmRpdGlvbi4K
LSAgICAgICAgaWYgKGNvbXBsZXRlID49IGR1cmF0aW9uKSB7Ci0gICAgICAgICAgICBoYXNDb21w
bGV0ZWQgPSB0cnVlOwotICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7Ci0gICAg
ICAgICAgICBpZiAoY2FsbGJhY2spCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZvcmNlQ29tcGxldGUoKQotICAgIHsKLSAgICAg
ICAgaWYgKGhhc0NvbXBsZXRlZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBjb21w
bGV0ZSA9IGR1cmF0aW9uOwotICAgICAgICBhbmltYXRlTG9vcCgpOwotICAgIH0KLQotICAgIGZ1
bmN0aW9uIGNhbmNlbCgpCi0gICAgewotICAgICAgICBoYXNDb21wbGV0ZWQgPSB0cnVlOwotICAg
ICAgICBjbGVhckludGVydmFsKGludGVydmFsKTsKLSAgICB9Ci0KLSAgICBpbnRlcnZhbCA9IHNl
dEludGVydmFsKGFuaW1hdGVMb29wLCBpbnRlcnZhbER1cmF0aW9uKTsKLSAgICByZXR1cm4gewot
ICAgICAgICBjYW5jZWw6IGNhbmNlbCwKLSAgICAgICAgZm9yY2VDb21wbGV0ZTogZm9yY2VDb21w
bGV0ZQotICAgIH07Ci19Ci0KIFdlYkluc3BlY3Rvci5pc0JlaW5nRWRpdGVkID0gZnVuY3Rpb24o
ZWxlbWVudCkKIHsKICAgICBpZiAoZWxlbWVudC5oYXNTdHlsZUNsYXNzKCJ0ZXh0LXByb21wdCIp
IHx8IGVsZW1lbnQubm9kZU5hbWUgPT09ICJJTlBVVCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKaW5kZXggYWI4YzI2YmRmOTdiNzljMGIy
MGNmZjQ4N2VlMDMzY2EwOGVjODBiZi4uNzUwMjA3MjFiMDk3MTViNGIzMjE5ZmNhZmI5OWJlYWFh
YmQ3NTk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmNzcwpAQCAtNTc2LDYgKzU3NiwxNCBAQCBib2R5Om5vdCgucGxhdGZvcm0tbWFjKSAu
dG9vbGJhci1pdGVtLmNsb3NlLWxlZnQgewogICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwog
fQogCisuYW5pbWF0ZS1zbG93ICogeworICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjog
Mi41cyAhaW1wb3J0YW50OworfQorCisuYW5pbWF0ZSAjbWFpbiB7CisgICAgLXdlYmtpdC10cmFu
c2l0aW9uOiBib3R0b20gMjUwbXMgbGluZWFyOworfQorCiBib2R5LnNob3ctdG9vbGJhci1pY29u
cyAjbWFpbiB7CiAgICAgdG9wOiA1NnB4OwogfQpAQCAtNjQ0LDYgKzY1MiwxMCBAQCBib2R5LmRy
YXdlci12aXNpYmxlICNtYWluLXBhbmVscyB7CiAgICAgaGVpZ2h0OiAyNHB4OwogfQogCisuYW5p
bWF0ZSAjZmxvYXRpbmctc3RhdHVzLWJhci1jb250YWluZXIgeworICAgIC13ZWJraXQtdHJhbnNp
dGlvbjogcGFkZGluZyAyNTBtcyBsaW5lYXI7Cit9CisKIGJvZHkuZHJhd2VyLXZpc2libGUgI2Zs
b2F0aW5nLXN0YXR1cy1iYXItY29udGFpbmVyIHsKICAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7
CiB9CkBAIC04ODgsNiArOTAwLDEwIEBAIGJvZHkucG9ydC1xdCAuZG9jay1zdGF0dXMtYmFyLWl0
ZW0gewogICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogfQogCisuYW5pbWF0ZSAjZHJhd2Vy
IHsKKyAgICAtd2Via2l0LXRyYW5zaXRpb246IGhlaWdodCAyNTBtcyBsaW5lYXI7Cit9CisKICNk
cmF3ZXItY29udGVudHMgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICB0b3A6IDA7CkBA
IC0yNDk2LDYgKzI1MTIsMTAgQEAgYm9keS5wbGF0Zm9ybS1tYWMgLnNlYXJjaC1kcmF3ZXItaGVh
ZGVyIGlucHV0W3R5cGU9ImNoZWNrYm94Il0uc2VhcmNoLWNvbmZpZy1jaGUKICAgICBvdmVyZmxv
dzogaGlkZGVuOwogfQogCisuYW5pbWF0ZSAjYm90dG9tLXN0YXR1cy1iYXItY29udGFpbmVyID4g
KiB7CisgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDI1MG1zIGxpbmVhcjsKK30KKwog
LnNlYXJjaC1zdGF0dXMtYmFyLWl0ZW0gewogICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAg
ICBjdXJzb3I6IHBvaW50ZXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193794</attachid>
            <date>2013-03-19 04:54:42 -0700</date>
            <delta_ts>2013-03-19 05:34:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112586-20130319155033.patch</filename>
            <type>text/plain</type>
            <size>12122</size>
            <attacher name="Dmitry Zvorygin">zvorygin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1ODkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTEzMTJiMTdiNDIyN2Uw
YjQ4OTcyMWY5ZDc4ZjQ4MTFhYjhkOGJlMC4uZDFmMTIxNGM0NmVkNzYyOTc5NTlmNzZiMWFmZWIy
NDJjYzEzMjM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEzLTAzLTE4ICBEbWl0
cnkgWnZvcnlnaW4gIDx6dm9yeWdpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogU3dpdGNoIERyYXdlciBhbmltYXRpb24gZnJvbSBKYXZhU2NyaXB0IHRvIENTUyB0cmFu
c2l0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMjU4NgorCisgICAgICAgIFRoaXMgaXMgcHJlcmVxdWlzaXRlIHRvIG1ha2UgRHJhd2VyIHdv
cmsgaW4gb3ZlcmxheSBtb2RlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EcmF3ZXIuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRHJhd2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EcmF3ZXIucHJvdG90
eXBlLnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRyYXdlci5wcm90b3R5cGUuaGlkZS50
aGlzLmFuaW1hdGlvbkZpbmlzaGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EcmF3ZXIucHJv
dG90eXBlLmhpZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRyYXdlci5wcm90b3R5cGUuaW1t
ZWRpYXRlbHlGaW5pc2hBbmltYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRyYXdlci5w
cm90b3R5cGUuX2dldEFuaW1hdGlvblN0eWxlcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9VSVV0aWxzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmNzczoKKyAgICAgICAgKC5hbmltYXRlLXNsb3cgKik6CisgICAgICAgICguYW5pbWF0ZSAjbWFp
bik6CisgICAgICAgICguYW5pbWF0ZSAjZmxvYXRpbmctc3RhdHVzLWJhci1jb250YWluZXIpOgor
ICAgICAgICAoLmFuaW1hdGUgI2RyYXdlcik6CisgICAgICAgICguYW5pbWF0ZSAjYm90dG9tLXN0
YXR1cy1iYXItY29udGFpbmVyID4gKik6CisKIDIwMTMtMDMtMTUgIE5vYW0gUm9zZW50aGFsICA8
bm9hbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtUZXhtYXBdIENoYW5nZSBicmlnaHRuZXNzIGZp
bHRlciB0byBtYXRjaCBuZXcgc3BlYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9EcmF3ZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RyYXdlci5qcwppbmRleCA5OTdlNTEyYjFlZTU4ZTA1MWUxMjQ4OGVjMjE5NmMyNjUwZDQ5
NzQzLi4wMjk3YzBmNjYxZmJkNjk0Y2E1N2RmMzQ3MWJiYzU2MDZiNDgxMjBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RyYXdlci5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RyYXdlci5qcwpAQCAtNDUsNiArNDUsNyBA
QCBXZWJJbnNwZWN0b3IuRHJhd2VyID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX2RyYXdlckNvbnRl
bnRzRWxlbWVudC5jbGFzc05hbWUgPSAiZHJhd2VyLWNvbnRlbnRzIjsKICAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fZHJhd2VyQ29udGVudHNFbGVtZW50KTsKICAgICB0aGlzLl92
aWV3U3RhdHVzQmFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdGhpcy5f
dmlld1N0YXR1c0Jhci5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgdGhp
cy5pbW1lZGlhdGVseUZpbmlzaEFuaW1hdGlvbi5iaW5kKHRoaXMpLCBmYWxzZSk7CiAgICAgdGhp
cy5fYm90dG9tU3RhdHVzQmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvdHRvbS1zdGF0
dXMtYmFyLWNvbnRhaW5lciIpOwogfQogCkBAIC05NCwyNCArOTUsMjkgQEAgV2ViSW5zcGVjdG9y
LkRyYXdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAg
ICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5fY29uc3RyYWluSGVpZ2h0KHRoaXMuX3NhdmVkSGVpZ2h0
IHx8IHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQpOwotICAgICAgICB2YXIgYW5pbWF0aW9ucyA9
IFsKLSAgICAgICAgICAgIHtlbGVtZW50OiB0aGlzLmVsZW1lbnQsIGVuZDoge2hlaWdodDogaGVp
Z2h0fX0sCi0gICAgICAgICAgICB7ZWxlbWVudDogdGhpcy5fbWFpbkVsZW1lbnQsIGVuZDoge2Jv
dHRvbTogaGVpZ2h0fX0sCi0gICAgICAgICAgICB7ZWxlbWVudDogdGhpcy5fZmxvYXRpbmdTdGF0
dXNCYXJDb250YWluZXIsIHN0YXJ0OiB7InBhZGRpbmctbGVmdCI6IHRoaXMuX2JvdHRvbVN0YXR1
c0Jhci5vZmZzZXRMZWZ0fSwgZW5kOiB7InBhZGRpbmctbGVmdCI6IDB9fSwKLSAgICAgICAgICAg
IHtlbGVtZW50OiB0aGlzLl92aWV3U3RhdHVzQmFyLCBzdGFydDoge29wYWNpdHk6IDB9LCBlbmQ6
IHtvcGFjaXR5OiAxfX0KLSAgICAgICAgXTsKKworICAgICAgICB0aGlzLl9mbG9hdGluZ1N0YXR1
c0JhckNvbnRhaW5lci5zdHlsZS5wYWRkaW5nTGVmdCA9IHRoaXMuX2JvdHRvbVN0YXR1c0Jhci5v
ZmZzZXRMZWZ0ICsgInB4IjsKKworICAgICAgICB0aGlzLl9nZXRBbmltYXRpb25TdHlsZXMoYW5p
bWF0aW9uVHlwZSkuZm9yRWFjaChkb2N1bWVudC5ib2R5LmFkZFN0eWxlQ2xhc3MsIGRvY3VtZW50
LmJvZHkpOwogCiAgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGlvbkZpbmlzaGVkKCkKICAgICAgICAg
ewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuY3VycmVudFBhbmVsKCku
ZG9SZXNpemUoKTsKICAgICAgICAgICAgIGlmICh0aGlzLl92aWV3ICYmIHRoaXMuX3ZpZXcuYWZ0
ZXJTaG93KQogICAgICAgICAgICAgICAgIHRoaXMuX3ZpZXcuYWZ0ZXJTaG93KCk7Ci0gICAgICAg
ICAgICBkZWxldGUgdGhpcy5fY3VycmVudEFuaW1hdGlvbjsKICAgICAgICAgfQogCi0gICAgICAg
IHRoaXMuX2N1cnJlbnRBbmltYXRpb24gPSBXZWJJbnNwZWN0b3IuYW5pbWF0ZVN0eWxlKGFuaW1h
dGlvbnMsIHRoaXMuX2FuaW1hdGlvbkR1cmF0aW9uKGFuaW1hdGlvblR5cGUpLCBhbmltYXRpb25G
aW5pc2hlZC5iaW5kKHRoaXMpKTsKLSAgICAgICAgaWYgKGFuaW1hdGlvblR5cGUgPT09IFdlYklu
c3BlY3Rvci5EcmF3ZXIuQW5pbWF0aW9uVHlwZS5JbW1lZGlhdGVseSkKLSAgICAgICAgICAgIHRo
aXMuX2N1cnJlbnRBbmltYXRpb24uZm9yY2VDb21wbGV0ZSgpOworICAgICAgICB0aGlzLl9hbmlt
YXRpb25GaW5pc2hlZCA9IGFuaW1hdGlvbkZpbmlzaGVkLmJpbmQodGhpcyk7CisKKyAgICAgICAg
Ly8gSWYgb3BhY2l0eSBpcyBhbHJlYWR5IHNldCB0byBkZXNpcmVkLCBubyB0cmFuc2l0aW9uIGlz
IG1hZGUsIGFuZCBubyB3ZWJraXRUcmFuc2l0aW9uRW5kIGlzIGRpc3BhdGNoZWQuCisgICAgICAg
IC8vIFNvIHdlIGhhdmUgdG8gZmluaXNoIGFuaW1hdGlvbiBtYW51YWxseS4KKyAgICAgICAgaWYg
KHRoaXMuX3ZpZXdTdGF0dXNCYXIuc3R5bGUub3BhY2l0eSA9PSAxIHx8IGFuaW1hdGlvblR5cGUg
PT0gV2ViSW5zcGVjdG9yLkRyYXdlci5BbmltYXRpb25UeXBlLkltbWVkaWF0ZWx5ICkKKyAgICAg
ICAgICAgIHRoaXMuaW1tZWRpYXRlbHlGaW5pc2hBbmltYXRpb24oKTsKKworICAgICAgICB0aGlz
LmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgInB4IjsKKyAgICAgICAgdGhpcy5fbWFp
bkVsZW1lbnQuc3R5bGUuYm90dG9tID0gaGVpZ2h0ICsgInB4IjsKKyAgICAgICAgdGhpcy5fZmxv
YXRpbmdTdGF0dXNCYXJDb250YWluZXIuc3R5bGUucGFkZGluZ0xlZnQgPSAwOworICAgICAgICB0
aGlzLl92aWV3U3RhdHVzQmFyLnN0eWxlLm9wYWNpdHkgPSAxOwogICAgIH0sCiAKICAgICBoaWRl
OiBmdW5jdGlvbihhbmltYXRpb25UeXBlKQpAQCAtMTMwLDEyICsxMzYsNyBAQCBXZWJJbnNwZWN0
b3IuRHJhd2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmluc3BlY3RvclZp
ZXcuY3VycmVudFBhbmVsKCkuc3RhdHVzQmFyUmVzaXplZCgpOwogICAgICAgICBkb2N1bWVudC5i
b2R5LmFkZFN0eWxlQ2xhc3MoImRyYXdlci12aXNpYmxlIik7CiAKLSAgICAgICAgdmFyIGFuaW1h
dGlvbnMgPSBbCi0gICAgICAgICAgICB7ZWxlbWVudDogdGhpcy5fbWFpbkVsZW1lbnQsIGVuZDog
e2JvdHRvbTogMH19LAotICAgICAgICAgICAge2VsZW1lbnQ6IHRoaXMuZWxlbWVudCwgZW5kOiB7
aGVpZ2h0OiAwfX0sCi0gICAgICAgICAgICB7ZWxlbWVudDogdGhpcy5fZmxvYXRpbmdTdGF0dXNC
YXJDb250YWluZXIsIHN0YXJ0OiB7InBhZGRpbmctbGVmdCI6IDB9LCBlbmQ6IHsicGFkZGluZy1s
ZWZ0IjogdGhpcy5fYm90dG9tU3RhdHVzQmFyLm9mZnNldExlZnR9IH0sCi0gICAgICAgICAgICB7
ZWxlbWVudDogdGhpcy5fdmlld1N0YXR1c0Jhciwgc3RhcnQ6IHtvcGFjaXR5OiAxfSwgZW5kOiB7
b3BhY2l0eTogMH19Ci0gICAgICAgIF07CisgICAgICAgIHRoaXMuX2dldEFuaW1hdGlvblN0eWxl
cyhhbmltYXRpb25UeXBlKS5mb3JFYWNoKGRvY3VtZW50LmJvZHkuYWRkU3R5bGVDbGFzcywgZG9j
dW1lbnQuYm9keSk7CiAKICAgICAgICAgZnVuY3Rpb24gYW5pbWF0aW9uRmluaXNoZWQoKQogICAg
ICAgICB7CkBAIC0xNDYsMTIgKzE0NywxOSBAQCBXZWJJbnNwZWN0b3IuRHJhd2VyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2JvdHRvbVN0YXR1c0Jhci5hcHBlbmRDaGlsZChkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicGFuZWwtc3RhdHVzLWJhciIpKTsKICAgICAgICAgICAgIHRo
aXMuX2RyYXdlckNvbnRlbnRzRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICAgICAg
ZG9jdW1lbnQuYm9keS5yZW1vdmVTdHlsZUNsYXNzKCJkcmF3ZXItdmlzaWJsZSIpOwotICAgICAg
ICAgICAgZGVsZXRlIHRoaXMuX2N1cnJlbnRBbmltYXRpb247CiAgICAgICAgIH0KIAotICAgICAg
ICB0aGlzLl9jdXJyZW50QW5pbWF0aW9uID0gV2ViSW5zcGVjdG9yLmFuaW1hdGVTdHlsZShhbmlt
YXRpb25zLCB0aGlzLl9hbmltYXRpb25EdXJhdGlvbihhbmltYXRpb25UeXBlKSwgYW5pbWF0aW9u
RmluaXNoZWQuYmluZCh0aGlzKSk7Ci0gICAgICAgIGlmIChhbmltYXRpb25UeXBlID09PSBXZWJJ
bnNwZWN0b3IuRHJhd2VyLkFuaW1hdGlvblR5cGUuSW1tZWRpYXRlbHkpCi0gICAgICAgICAgICB0
aGlzLl9jdXJyZW50QW5pbWF0aW9uLmZvcmNlQ29tcGxldGUoKTsKKyAgICAgICAgdGhpcy5fYW5p
bWF0aW9uRmluaXNoZWQgPSBhbmltYXRpb25GaW5pc2hlZC5iaW5kKHRoaXMpOworCisgICAgICAg
IC8vIElmIG9wYWNpdHkgaXMgYWxyZWFkeSBzZXQgdG8gZGVzaXJlZCwgbm8gdHJhbnNpdGlvbiBp
cyBtYWRlLCBhbmQgbm8gd2Via2l0VHJhbnNpdGlvbkVuZCBpcyBkaXNwYXRjaGVkLgorICAgICAg
ICAvLyBTbyB3ZSBoYXZlIHRvIGZpbmlzaCBhbmltYXRpb24gbWFudWFsbHkuCisgICAgICAgIGlm
ICh0aGlzLl92aWV3U3RhdHVzQmFyLnN0eWxlLm9wYWNpdHkgPT0gMCB8fCBhbmltYXRpb25UeXBl
ID09IFdlYkluc3BlY3Rvci5EcmF3ZXIuQW5pbWF0aW9uVHlwZS5JbW1lZGlhdGVseSApCisgICAg
ICAgICAgICB0aGlzLmltbWVkaWF0ZWx5RmluaXNoQW5pbWF0aW9uKCk7CisKKyAgICAgICAgdGhp
cy5lbGVtZW50LnN0eWxlLmhlaWdodCA9IDA7CisgICAgICAgIHRoaXMuX21haW5FbGVtZW50LnN0
eWxlLmJvdHRvbSA9IDA7CisgICAgICAgIHRoaXMuX2Zsb2F0aW5nU3RhdHVzQmFyQ29udGFpbmVy
LnN0eWxlLnBhZGRpbmdMZWZ0ID0gdGhpcy5fYm90dG9tU3RhdHVzQmFyLm9mZnNldExlZnQgKyAi
cHgiOworICAgICAgICB0aGlzLl92aWV3U3RhdHVzQmFyLnN0eWxlLm9wYWNpdHkgPSAwOwogICAg
IH0sCiAKICAgICByZXNpemU6IGZ1bmN0aW9uKCkKQEAgLTE2OCwxOSArMTc2LDIzIEBAIFdlYklu
c3BlY3Rvci5EcmF3ZXIucHJvdG90eXBlID0gewogCiAgICAgaW1tZWRpYXRlbHlGaW5pc2hBbmlt
YXRpb246IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9jdXJyZW50QW5pbWF0
aW9uKQotICAgICAgICAgICAgdGhpcy5fY3VycmVudEFuaW1hdGlvbi5mb3JjZUNvbXBsZXRlKCk7
CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlU3R5bGVDbGFzcygiYW5pbWF0ZSIpOworICAg
ICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZVN0eWxlQ2xhc3MoImFuaW1hdGUtc2xvdyIpOworICAg
ICAgICBpZiAodGhpcy5fYW5pbWF0aW9uRmluaXNoZWQpIHsKKyAgICAgICAgICAgIHRoaXMuX2Fu
aW1hdGlvbkZpbmlzaGVkKCk7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fYW5pbWF0aW9uRmlu
aXNoZWQ7CisgICAgICAgIH0KICAgICB9LAogCi0gICAgX2FuaW1hdGlvbkR1cmF0aW9uOiBmdW5j
dGlvbihhbmltYXRpb25UeXBlKQorICAgIF9nZXRBbmltYXRpb25TdHlsZXM6IGZ1bmN0aW9uKGFu
aW1hdGlvblR5cGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKGFuaW1hdGlvblR5cGUpIHsKICAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuRHJhd2VyLkFuaW1hdGlvblR5cGUuU2xvdzoKLSAgICAg
ICAgICAgIHJldHVybiAyMDAwOworICAgICAgICAgICAgcmV0dXJuIFsiYW5pbWF0ZSIsICJhbmlt
YXRlLXNsb3ciXTsKICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuRHJhd2VyLkFuaW1hdGlvblR5
cGUuTm9ybWFsOgotICAgICAgICAgICAgcmV0dXJuIDI1MDsKKyAgICAgICAgICAgIHJldHVybiBb
ImFuaW1hdGUiXTsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgICB9CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzCmluZGV4IDhlY2EwMDNlOGQwYjVjZDY0
OTBlYTQ1ZWIwNDU5MDI2Y2NjYjE4OTEuLjEzZGVhYTA2NjE0MTRiYzcxYmMxMjgxZmMzNTY2ZTQ0
ZDZhOWY4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VUlVdGlscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRp
bHMuanMKQEAgLTE1MCwxMTEgKzE1MCw2IEBAIFdlYkluc3BlY3Rvci5HbGFzc1BhbmUucHJvdG90
eXBlID0gewogICAgIH0KIH0KIAotV2ViSW5zcGVjdG9yLmFuaW1hdGVTdHlsZSA9IGZ1bmN0aW9u
KGFuaW1hdGlvbnMsIGR1cmF0aW9uLCBjYWxsYmFjaykKLXsKLSAgICB2YXIgaW50ZXJ2YWw7Ci0g
ICAgdmFyIGNvbXBsZXRlID0gMDsKLSAgICB2YXIgaGFzQ29tcGxldGVkID0gZmFsc2U7Ci0KLSAg
ICBjb25zdCBpbnRlcnZhbER1cmF0aW9uID0gKDEwMDAgLyAzMCk7IC8vIDMwIGZyYW1lcyBwZXIg
c2Vjb25kLgotICAgIGNvbnN0IGFuaW1hdGlvbnNMZW5ndGggPSBhbmltYXRpb25zLmxlbmd0aDsK
LSAgICBjb25zdCBwcm9wZXJ0eVVuaXQgPSB7b3BhY2l0eTogIiJ9OwotICAgIGNvbnN0IGRlZmF1
bHRVbml0ID0gInB4IjsKLQotICAgIGZ1bmN0aW9uIGN1YmljSW5PdXQodCwgYiwgYywgZCkKLSAg
ICB7Ci0gICAgICAgIGlmICgodC89ZC8yKSA8IDEpIHJldHVybiBjLzIqdCp0KnQgKyBiOwotICAg
ICAgICByZXR1cm4gYy8yKigodC09MikqdCp0ICsgMikgKyBiOwotICAgIH0KLQotICAgIC8vIFBy
ZS1wcm9jZXNzIGFuaW1hdGlvbnMuCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbmltYXRpb25z
TGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdmFyIGFuaW1hdGlvbiA9IGFuaW1hdGlvbnNbaV07Ci0g
ICAgICAgIHZhciBlbGVtZW50ID0gbnVsbCwgc3RhcnQgPSBudWxsLCBlbmQgPSBudWxsLCBrZXkg
PSBudWxsOwotICAgICAgICBmb3IgKGtleSBpbiBhbmltYXRpb24pIHsKLSAgICAgICAgICAgIGlm
IChrZXkgPT09ICJlbGVtZW50IikKLSAgICAgICAgICAgICAgICBlbGVtZW50ID0gYW5pbWF0aW9u
W2tleV07Ci0gICAgICAgICAgICBlbHNlIGlmIChrZXkgPT09ICJzdGFydCIpCi0gICAgICAgICAg
ICAgICAgc3RhcnQgPSBhbmltYXRpb25ba2V5XTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGtleSA9
PT0gImVuZCIpCi0gICAgICAgICAgICAgICAgZW5kID0gYW5pbWF0aW9uW2tleV07Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoIWVsZW1lbnQgfHwgIWVuZCkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgIGlmICghc3RhcnQpIHsKLSAgICAgICAgICAgIHZhciBjb21wdXRlZFN0eWxl
ID0gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxl
bWVudCk7Ci0gICAgICAgICAgICBzdGFydCA9IHt9OwotICAgICAgICAgICAgZm9yIChrZXkgaW4g
ZW5kKQotICAgICAgICAgICAgICAgIHN0YXJ0W2tleV0gPSBwYXJzZUludChjb21wdXRlZFN0eWxl
LmdldFByb3BlcnR5VmFsdWUoa2V5KSwgMTApOwotICAgICAgICAgICAgYW5pbWF0aW9uLnN0YXJ0
ID0gc3RhcnQ7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgZm9yIChrZXkgaW4gc3RhcnQp
Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShrZXksIHN0YXJ0W2tl
eV0gKyAoa2V5IGluIHByb3BlcnR5VW5pdCA/IHByb3BlcnR5VW5pdFtrZXldIDogZGVmYXVsdFVu
aXQpKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBhbmltYXRlTG9vcCgpCi0gICAgewotICAgICAg
ICBpZiAoaGFzQ29tcGxldGVkKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAg
ICAgLy8gQWR2YW5jZSBmb3J3YXJkLgotICAgICAgICBjb21wbGV0ZSArPSBpbnRlcnZhbER1cmF0
aW9uOwotICAgICAgICB2YXIgbmV4dCA9IGNvbXBsZXRlICsgaW50ZXJ2YWxEdXJhdGlvbjsKLQot
ICAgICAgICAvLyBNYWtlIHN0eWxlIGNoYW5nZXMuCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYW5pbWF0aW9uc0xlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgYW5pbWF0aW9uID0g
YW5pbWF0aW9uc1tpXTsKLSAgICAgICAgICAgIHZhciBlbGVtZW50ID0gYW5pbWF0aW9uLmVsZW1l
bnQ7Ci0gICAgICAgICAgICB2YXIgc3RhcnQgPSBhbmltYXRpb24uc3RhcnQ7Ci0gICAgICAgICAg
ICB2YXIgZW5kID0gYW5pbWF0aW9uLmVuZDsKLSAgICAgICAgICAgIGlmICghZWxlbWVudCB8fCAh
ZW5kKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICB2YXIgc3R5bGUg
PSBlbGVtZW50LnN0eWxlOwotICAgICAgICAgICAgZm9yIChrZXkgaW4gZW5kKSB7Ci0gICAgICAg
ICAgICAgICAgdmFyIGVuZFZhbHVlID0gZW5kW2tleV07Ci0gICAgICAgICAgICAgICAgaWYgKG5l
eHQgPCBkdXJhdGlvbikgewotICAgICAgICAgICAgICAgICAgICB2YXIgc3RhcnRWYWx1ZSA9IHN0
YXJ0W2tleV07Ci0gICAgICAgICAgICAgICAgICAgIHZhciBuZXdWYWx1ZSA9IGN1YmljSW5PdXQo
Y29tcGxldGUsIHN0YXJ0VmFsdWUsIGVuZFZhbHVlIC0gc3RhcnRWYWx1ZSwgZHVyYXRpb24pOwot
ICAgICAgICAgICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShrZXksIG5ld1ZhbHVlICsgKGtl
eSBpbiBwcm9wZXJ0eVVuaXQgPyBwcm9wZXJ0eVVuaXRba2V5XSA6IGRlZmF1bHRVbml0KSk7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHN0eWxlLnNldFByb3Bl
cnR5KGtleSwgZW5kVmFsdWUgKyAoa2V5IGluIHByb3BlcnR5VW5pdCA/IHByb3BlcnR5VW5pdFtr
ZXldIDogZGVmYXVsdFVuaXQpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
IC8vIEVuZCBjb25kaXRpb24uCi0gICAgICAgIGlmIChjb21wbGV0ZSA+PSBkdXJhdGlvbikgewot
ICAgICAgICAgICAgaGFzQ29tcGxldGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGNsZWFySW50ZXJ2
YWwoaW50ZXJ2YWwpOwotICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQotICAgICAgICAgICAgICAg
IGNhbGxiYWNrKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmb3JjZUNvbXBs
ZXRlKCkKLSAgICB7Ci0gICAgICAgIGlmIChoYXNDb21wbGV0ZWQpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgY29tcGxldGUgPSBkdXJhdGlvbjsKLSAgICAgICAgYW5pbWF0ZUxvb3Ao
KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjYW5jZWwoKQotICAgIHsKLSAgICAgICAgaGFzQ29t
cGxldGVkID0gdHJ1ZTsKLSAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7Ci0gICAgfQot
Ci0gICAgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChhbmltYXRlTG9vcCwgaW50ZXJ2YWxEdXJhdGlv
bik7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgY2FuY2VsOiBjYW5jZWwsCi0gICAgICAgIGZvcmNl
Q29tcGxldGU6IGZvcmNlQ29tcGxldGUKLSAgICB9OwotfQotCiBXZWJJbnNwZWN0b3IuaXNCZWlu
Z0VkaXRlZCA9IGZ1bmN0aW9uKGVsZW1lbnQpCiB7CiAgICAgaWYgKGVsZW1lbnQuaGFzU3R5bGVD
bGFzcygidGV4dC1wcm9tcHQiKSB8fCBlbGVtZW50Lm5vZGVOYW1lID09PSAiSU5QVVQiKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3Nz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4
IGFiOGMyNmJkZjk3Yjc5YzBiMjBjZmY0ODdlZTAzM2NhMDhlYzgwYmYuLjc1MDIwNzIxYjA5NzE1
YjRiMzIxOWZjYWZiOTliZWFhYWJkNzU5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAgLTU3Niw2ICs1NzYsMTQgQEAgYm9keTpu
b3QoLnBsYXRmb3JtLW1hYykgLnRvb2xiYXItaXRlbS5jbG9zZS1sZWZ0IHsKICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiB3aGl0ZTsKIH0KIAorLmFuaW1hdGUtc2xvdyAqIHsKKyAgICAtd2Via2l0LXRy
YW5zaXRpb24tZHVyYXRpb246IDIuNXMgIWltcG9ydGFudDsKK30KKworLmFuaW1hdGUgI21haW4g
eworICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYm90dG9tIDI1MG1zIGxpbmVhcjsKK30KKwogYm9k
eS5zaG93LXRvb2xiYXItaWNvbnMgI21haW4gewogICAgIHRvcDogNTZweDsKIH0KQEAgLTY0NCw2
ICs2NTIsMTAgQEAgYm9keS5kcmF3ZXItdmlzaWJsZSAjbWFpbi1wYW5lbHMgewogICAgIGhlaWdo
dDogMjRweDsKIH0KIAorLmFuaW1hdGUgI2Zsb2F0aW5nLXN0YXR1cy1iYXItY29udGFpbmVyIHsK
KyAgICAtd2Via2l0LXRyYW5zaXRpb246IHBhZGRpbmcgMjUwbXMgbGluZWFyOworfQorCiBib2R5
LmRyYXdlci12aXNpYmxlICNmbG9hdGluZy1zdGF0dXMtYmFyLWNvbnRhaW5lciB7CiAgICAgZGlz
cGxheTogLXdlYmtpdC1mbGV4OwogfQpAQCAtODg4LDYgKzkwMCwxMCBAQCBib2R5LnBvcnQtcXQg
LmRvY2stc3RhdHVzLWJhci1pdGVtIHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKIH0K
IAorLmFuaW1hdGUgI2RyYXdlciB7CisgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBoZWlnaHQgMjUw
bXMgbGluZWFyOworfQorCiAjZHJhd2VyLWNvbnRlbnRzIHsKICAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CiAgICAgdG9wOiAwOwpAQCAtMjQ5Niw2ICsyNTEyLDEwIEBAIGJvZHkucGxhdGZvcm0tbWFj
IC5zZWFyY2gtZHJhd2VyLWhlYWRlciBpbnB1dFt0eXBlPSJjaGVja2JveCJdLnNlYXJjaC1jb25m
aWctY2hlCiAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKIH0KIAorLmFuaW1hdGUgI2JvdHRvbS1zdGF0
dXMtYmFyLWNvbnRhaW5lciA+ICogeworICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAy
NTBtcyBsaW5lYXI7Cit9CisKIC5zZWFyY2gtc3RhdHVzLWJhci1pdGVtIHsKICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CiAgICAgY3Vyc29yOiBwb2ludGVyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193802</attachid>
            <date>2013-03-19 05:34:44 -0700</date>
            <delta_ts>2013-03-20 03:23:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112586-20130319163034.patch</filename>
            <type>text/plain</type>
            <size>12124</size>
            <attacher name="Dmitry Zvorygin">zvorygin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1ODkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTEzMTJiMTdiNDIyN2Uw
YjQ4OTcyMWY5ZDc4ZjQ4MTFhYjhkOGJlMC4uZDFmMTIxNGM0NmVkNzYyOTc5NTlmNzZiMWFmZWIy
NDJjYzEzMjM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEzLTAzLTE4ICBEbWl0
cnkgWnZvcnlnaW4gIDx6dm9yeWdpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogU3dpdGNoIERyYXdlciBhbmltYXRpb24gZnJvbSBKYXZhU2NyaXB0IHRvIENTUyB0cmFu
c2l0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMjU4NgorCisgICAgICAgIFRoaXMgaXMgcHJlcmVxdWlzaXRlIHRvIG1ha2UgRHJhd2VyIHdv
cmsgaW4gb3ZlcmxheSBtb2RlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EcmF3ZXIuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRHJhd2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EcmF3ZXIucHJvdG90
eXBlLnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRyYXdlci5wcm90b3R5cGUuaGlkZS50
aGlzLmFuaW1hdGlvbkZpbmlzaGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EcmF3ZXIucHJv
dG90eXBlLmhpZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRyYXdlci5wcm90b3R5cGUuaW1t
ZWRpYXRlbHlGaW5pc2hBbmltYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRyYXdlci5w
cm90b3R5cGUuX2dldEFuaW1hdGlvblN0eWxlcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9VSVV0aWxzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmNzczoKKyAgICAgICAgKC5hbmltYXRlLXNsb3cgKik6CisgICAgICAgICguYW5pbWF0ZSAjbWFp
bik6CisgICAgICAgICguYW5pbWF0ZSAjZmxvYXRpbmctc3RhdHVzLWJhci1jb250YWluZXIpOgor
ICAgICAgICAoLmFuaW1hdGUgI2RyYXdlcik6CisgICAgICAgICguYW5pbWF0ZSAjYm90dG9tLXN0
YXR1cy1iYXItY29udGFpbmVyID4gKik6CisKIDIwMTMtMDMtMTUgIE5vYW0gUm9zZW50aGFsICA8
bm9hbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtUZXhtYXBdIENoYW5nZSBicmlnaHRuZXNzIGZp
bHRlciB0byBtYXRjaCBuZXcgc3BlYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9EcmF3ZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RyYXdlci5qcwppbmRleCA5OTdlNTEyYjFlZTU4ZTA1MWUxMjQ4OGVjMjE5NmMyNjUwZDQ5
NzQzLi44YmNlNGUyNmMzMGEyMmZkZjY5MWY2NWJjYjFkYmVkYWVkZmM3NDUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RyYXdlci5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RyYXdlci5qcwpAQCAtNDUsNiArNDUsNyBA
QCBXZWJJbnNwZWN0b3IuRHJhd2VyID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX2RyYXdlckNvbnRl
bnRzRWxlbWVudC5jbGFzc05hbWUgPSAiZHJhd2VyLWNvbnRlbnRzIjsKICAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fZHJhd2VyQ29udGVudHNFbGVtZW50KTsKICAgICB0aGlzLl92
aWV3U3RhdHVzQmFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdGhpcy5f
dmlld1N0YXR1c0Jhci5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgdGhp
cy5pbW1lZGlhdGVseUZpbmlzaEFuaW1hdGlvbi5iaW5kKHRoaXMpLCBmYWxzZSk7CiAgICAgdGhp
cy5fYm90dG9tU3RhdHVzQmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvdHRvbS1zdGF0
dXMtYmFyLWNvbnRhaW5lciIpOwogfQogCkBAIC05NCwyNCArOTUsMjkgQEAgV2ViSW5zcGVjdG9y
LkRyYXdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAg
ICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5fY29uc3RyYWluSGVpZ2h0KHRoaXMuX3NhdmVkSGVpZ2h0
IHx8IHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQpOwotICAgICAgICB2YXIgYW5pbWF0aW9ucyA9
IFsKLSAgICAgICAgICAgIHtlbGVtZW50OiB0aGlzLmVsZW1lbnQsIGVuZDoge2hlaWdodDogaGVp
Z2h0fX0sCi0gICAgICAgICAgICB7ZWxlbWVudDogdGhpcy5fbWFpbkVsZW1lbnQsIGVuZDoge2Jv
dHRvbTogaGVpZ2h0fX0sCi0gICAgICAgICAgICB7ZWxlbWVudDogdGhpcy5fZmxvYXRpbmdTdGF0
dXNCYXJDb250YWluZXIsIHN0YXJ0OiB7InBhZGRpbmctbGVmdCI6IHRoaXMuX2JvdHRvbVN0YXR1
c0Jhci5vZmZzZXRMZWZ0fSwgZW5kOiB7InBhZGRpbmctbGVmdCI6IDB9fSwKLSAgICAgICAgICAg
IHtlbGVtZW50OiB0aGlzLl92aWV3U3RhdHVzQmFyLCBzdGFydDoge29wYWNpdHk6IDB9LCBlbmQ6
IHtvcGFjaXR5OiAxfX0KLSAgICAgICAgXTsKKworICAgICAgICB0aGlzLl9mbG9hdGluZ1N0YXR1
c0JhckNvbnRhaW5lci5zdHlsZS5wYWRkaW5nTGVmdCA9IHRoaXMuX2JvdHRvbVN0YXR1c0Jhci5v
ZmZzZXRMZWZ0ICsgInB4IjsKKworICAgICAgICB0aGlzLl9nZXRBbmltYXRpb25TdHlsZXMoYW5p
bWF0aW9uVHlwZSkuZm9yRWFjaChkb2N1bWVudC5ib2R5LmFkZFN0eWxlQ2xhc3MsIGRvY3VtZW50
LmJvZHkpOwogCiAgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGlvbkZpbmlzaGVkKCkKICAgICAgICAg
ewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuY3VycmVudFBhbmVsKCku
ZG9SZXNpemUoKTsKICAgICAgICAgICAgIGlmICh0aGlzLl92aWV3ICYmIHRoaXMuX3ZpZXcuYWZ0
ZXJTaG93KQogICAgICAgICAgICAgICAgIHRoaXMuX3ZpZXcuYWZ0ZXJTaG93KCk7Ci0gICAgICAg
ICAgICBkZWxldGUgdGhpcy5fY3VycmVudEFuaW1hdGlvbjsKICAgICAgICAgfQogCi0gICAgICAg
IHRoaXMuX2N1cnJlbnRBbmltYXRpb24gPSBXZWJJbnNwZWN0b3IuYW5pbWF0ZVN0eWxlKGFuaW1h
dGlvbnMsIHRoaXMuX2FuaW1hdGlvbkR1cmF0aW9uKGFuaW1hdGlvblR5cGUpLCBhbmltYXRpb25G
aW5pc2hlZC5iaW5kKHRoaXMpKTsKLSAgICAgICAgaWYgKGFuaW1hdGlvblR5cGUgPT09IFdlYklu
c3BlY3Rvci5EcmF3ZXIuQW5pbWF0aW9uVHlwZS5JbW1lZGlhdGVseSkKLSAgICAgICAgICAgIHRo
aXMuX2N1cnJlbnRBbmltYXRpb24uZm9yY2VDb21wbGV0ZSgpOworICAgICAgICB0aGlzLl9hbmlt
YXRpb25GaW5pc2hlZCA9IGFuaW1hdGlvbkZpbmlzaGVkLmJpbmQodGhpcyk7CisKKyAgICAgICAg
Ly8gSWYgb3BhY2l0eSBpcyBhbHJlYWR5IHNldCB0byBkZXNpcmVkLCBubyB0cmFuc2l0aW9uIGlz
IG1hZGUsIGFuZCBubyB3ZWJraXRUcmFuc2l0aW9uRW5kIGlzIGRpc3BhdGNoZWQuCisgICAgICAg
IC8vIFNvIHdlIGhhdmUgdG8gZmluaXNoIGFuaW1hdGlvbiBtYW51YWxseS4KKyAgICAgICAgaWYg
KHRoaXMuX3ZpZXdTdGF0dXNCYXIuc3R5bGUub3BhY2l0eSA9PT0gMSB8fCBhbmltYXRpb25UeXBl
ID09PSBXZWJJbnNwZWN0b3IuRHJhd2VyLkFuaW1hdGlvblR5cGUuSW1tZWRpYXRlbHkpCisgICAg
ICAgICAgICB0aGlzLmltbWVkaWF0ZWx5RmluaXNoQW5pbWF0aW9uKCk7CisKKyAgICAgICAgdGhp
cy5lbGVtZW50LnN0eWxlLmhlaWdodCA9IGhlaWdodCArICJweCI7CisgICAgICAgIHRoaXMuX21h
aW5FbGVtZW50LnN0eWxlLmJvdHRvbSA9IGhlaWdodCArICJweCI7CisgICAgICAgIHRoaXMuX2Zs
b2F0aW5nU3RhdHVzQmFyQ29udGFpbmVyLnN0eWxlLnBhZGRpbmdMZWZ0ID0gMDsKKyAgICAgICAg
dGhpcy5fdmlld1N0YXR1c0Jhci5zdHlsZS5vcGFjaXR5ID0gMTsKICAgICB9LAogCiAgICAgaGlk
ZTogZnVuY3Rpb24oYW5pbWF0aW9uVHlwZSkKQEAgLTEzMCwxMiArMTM2LDcgQEAgV2ViSW5zcGVj
dG9yLkRyYXdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JW
aWV3LmN1cnJlbnRQYW5lbCgpLnN0YXR1c0JhclJlc2l6ZWQoKTsKICAgICAgICAgZG9jdW1lbnQu
Ym9keS5hZGRTdHlsZUNsYXNzKCJkcmF3ZXItdmlzaWJsZSIpOwogCi0gICAgICAgIHZhciBhbmlt
YXRpb25zID0gWwotICAgICAgICAgICAge2VsZW1lbnQ6IHRoaXMuX21haW5FbGVtZW50LCBlbmQ6
IHtib3R0b206IDB9fSwKLSAgICAgICAgICAgIHtlbGVtZW50OiB0aGlzLmVsZW1lbnQsIGVuZDog
e2hlaWdodDogMH19LAotICAgICAgICAgICAge2VsZW1lbnQ6IHRoaXMuX2Zsb2F0aW5nU3RhdHVz
QmFyQ29udGFpbmVyLCBzdGFydDogeyJwYWRkaW5nLWxlZnQiOiAwfSwgZW5kOiB7InBhZGRpbmct
bGVmdCI6IHRoaXMuX2JvdHRvbVN0YXR1c0Jhci5vZmZzZXRMZWZ0fSB9LAotICAgICAgICAgICAg
e2VsZW1lbnQ6IHRoaXMuX3ZpZXdTdGF0dXNCYXIsIHN0YXJ0OiB7b3BhY2l0eTogMX0sIGVuZDog
e29wYWNpdHk6IDB9fQotICAgICAgICBdOworICAgICAgICB0aGlzLl9nZXRBbmltYXRpb25TdHls
ZXMoYW5pbWF0aW9uVHlwZSkuZm9yRWFjaChkb2N1bWVudC5ib2R5LmFkZFN0eWxlQ2xhc3MsIGRv
Y3VtZW50LmJvZHkpOwogCiAgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGlvbkZpbmlzaGVkKCkKICAg
ICAgICAgewpAQCAtMTQ2LDEyICsxNDcsMTkgQEAgV2ViSW5zcGVjdG9yLkRyYXdlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9ib3R0b21TdGF0dXNCYXIuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhbmVsLXN0YXR1cy1iYXIiKSk7CiAgICAgICAgICAgICB0
aGlzLl9kcmF3ZXJDb250ZW50c0VsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgICAg
IGRvY3VtZW50LmJvZHkucmVtb3ZlU3R5bGVDbGFzcygiZHJhd2VyLXZpc2libGUiKTsKLSAgICAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9jdXJyZW50QW5pbWF0aW9uOwogICAgICAgICB9CiAKLSAgICAg
ICAgdGhpcy5fY3VycmVudEFuaW1hdGlvbiA9IFdlYkluc3BlY3Rvci5hbmltYXRlU3R5bGUoYW5p
bWF0aW9ucywgdGhpcy5fYW5pbWF0aW9uRHVyYXRpb24oYW5pbWF0aW9uVHlwZSksIGFuaW1hdGlv
bkZpbmlzaGVkLmJpbmQodGhpcykpOwotICAgICAgICBpZiAoYW5pbWF0aW9uVHlwZSA9PT0gV2Vi
SW5zcGVjdG9yLkRyYXdlci5BbmltYXRpb25UeXBlLkltbWVkaWF0ZWx5KQotICAgICAgICAgICAg
dGhpcy5fY3VycmVudEFuaW1hdGlvbi5mb3JjZUNvbXBsZXRlKCk7CisgICAgICAgIHRoaXMuX2Fu
aW1hdGlvbkZpbmlzaGVkID0gYW5pbWF0aW9uRmluaXNoZWQuYmluZCh0aGlzKTsKKworICAgICAg
ICAvLyBJZiBvcGFjaXR5IGlzIGFscmVhZHkgc2V0IHRvIGRlc2lyZWQsIG5vIHRyYW5zaXRpb24g
aXMgbWFkZSwgYW5kIG5vIHdlYmtpdFRyYW5zaXRpb25FbmQgaXMgZGlzcGF0Y2hlZC4KKyAgICAg
ICAgLy8gU28gd2UgaGF2ZSB0byBmaW5pc2ggYW5pbWF0aW9uIG1hbnVhbGx5LgorICAgICAgICBp
ZiAodGhpcy5fdmlld1N0YXR1c0Jhci5zdHlsZS5vcGFjaXR5ID09PSAwIHx8IGFuaW1hdGlvblR5
cGUgPT09IFdlYkluc3BlY3Rvci5EcmF3ZXIuQW5pbWF0aW9uVHlwZS5JbW1lZGlhdGVseSkKKyAg
ICAgICAgICAgIHRoaXMuaW1tZWRpYXRlbHlGaW5pc2hBbmltYXRpb24oKTsKKworICAgICAgICB0
aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gMDsKKyAgICAgICAgdGhpcy5fbWFpbkVsZW1lbnQu
c3R5bGUuYm90dG9tID0gMDsKKyAgICAgICAgdGhpcy5fZmxvYXRpbmdTdGF0dXNCYXJDb250YWlu
ZXIuc3R5bGUucGFkZGluZ0xlZnQgPSB0aGlzLl9ib3R0b21TdGF0dXNCYXIub2Zmc2V0TGVmdCAr
ICJweCI7CisgICAgICAgIHRoaXMuX3ZpZXdTdGF0dXNCYXIuc3R5bGUub3BhY2l0eSA9IDA7CiAg
ICAgfSwKIAogICAgIHJlc2l6ZTogZnVuY3Rpb24oKQpAQCAtMTY4LDE5ICsxNzYsMjMgQEAgV2Vi
SW5zcGVjdG9yLkRyYXdlci5wcm90b3R5cGUgPSB7CiAKICAgICBpbW1lZGlhdGVseUZpbmlzaEFu
aW1hdGlvbjogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRBbmlt
YXRpb24pCi0gICAgICAgICAgICB0aGlzLl9jdXJyZW50QW5pbWF0aW9uLmZvcmNlQ29tcGxldGUo
KTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVTdHlsZUNsYXNzKCJhbmltYXRlIik7Cisg
ICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlU3R5bGVDbGFzcygiYW5pbWF0ZS1zbG93Iik7Cisg
ICAgICAgIGlmICh0aGlzLl9hbmltYXRpb25GaW5pc2hlZCkgeworICAgICAgICAgICAgdGhpcy5f
YW5pbWF0aW9uRmluaXNoZWQoKTsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9hbmltYXRpb25G
aW5pc2hlZDsKKyAgICAgICAgfQogICAgIH0sCiAKLSAgICBfYW5pbWF0aW9uRHVyYXRpb246IGZ1
bmN0aW9uKGFuaW1hdGlvblR5cGUpCisgICAgX2dldEFuaW1hdGlvblN0eWxlczogZnVuY3Rpb24o
YW5pbWF0aW9uVHlwZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoYW5pbWF0aW9uVHlwZSkgewog
ICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5EcmF3ZXIuQW5pbWF0aW9uVHlwZS5TbG93OgotICAg
ICAgICAgICAgcmV0dXJuIDIwMDA7CisgICAgICAgICAgICByZXR1cm4gWyJhbmltYXRlIiwgImFu
aW1hdGUtc2xvdyJdOwogICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5EcmF3ZXIuQW5pbWF0aW9u
VHlwZS5Ob3JtYWw6Ci0gICAgICAgICAgICByZXR1cm4gMjUwOworICAgICAgICAgICAgcmV0dXJu
IFsiYW5pbWF0ZSJdOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgIH0KICAgICB9LAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRpbHMuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRpbHMuanMKaW5kZXggOGVjYTAwM2U4ZDBiNWNk
NjQ5MGVhNDVlYjA0NTkwMjZjY2NiMTg5MS4uMTNkZWFhMDY2MTQxNGJjNzFiYzEyODFmYzM1NjZl
NDRkNmE5ZjhmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9VSVV0aWxzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlV
dGlscy5qcwpAQCAtMTUwLDExMSArMTUwLDYgQEAgV2ViSW5zcGVjdG9yLkdsYXNzUGFuZS5wcm90
b3R5cGUgPSB7CiAgICAgfQogfQogCi1XZWJJbnNwZWN0b3IuYW5pbWF0ZVN0eWxlID0gZnVuY3Rp
b24oYW5pbWF0aW9ucywgZHVyYXRpb24sIGNhbGxiYWNrKQotewotICAgIHZhciBpbnRlcnZhbDsK
LSAgICB2YXIgY29tcGxldGUgPSAwOwotICAgIHZhciBoYXNDb21wbGV0ZWQgPSBmYWxzZTsKLQot
ICAgIGNvbnN0IGludGVydmFsRHVyYXRpb24gPSAoMTAwMCAvIDMwKTsgLy8gMzAgZnJhbWVzIHBl
ciBzZWNvbmQuCi0gICAgY29uc3QgYW5pbWF0aW9uc0xlbmd0aCA9IGFuaW1hdGlvbnMubGVuZ3Ro
OwotICAgIGNvbnN0IHByb3BlcnR5VW5pdCA9IHtvcGFjaXR5OiAiIn07Ci0gICAgY29uc3QgZGVm
YXVsdFVuaXQgPSAicHgiOwotCi0gICAgZnVuY3Rpb24gY3ViaWNJbk91dCh0LCBiLCBjLCBkKQot
ICAgIHsKLSAgICAgICAgaWYgKCh0Lz1kLzIpIDwgMSkgcmV0dXJuIGMvMip0KnQqdCArIGI7Ci0g
ICAgICAgIHJldHVybiBjLzIqKCh0LT0yKSp0KnQgKyAyKSArIGI7Ci0gICAgfQotCi0gICAgLy8g
UHJlLXByb2Nlc3MgYW5pbWF0aW9ucy4KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFuaW1hdGlv
bnNMZW5ndGg7ICsraSkgewotICAgICAgICB2YXIgYW5pbWF0aW9uID0gYW5pbWF0aW9uc1tpXTsK
LSAgICAgICAgdmFyIGVsZW1lbnQgPSBudWxsLCBzdGFydCA9IG51bGwsIGVuZCA9IG51bGwsIGtl
eSA9IG51bGw7Ci0gICAgICAgIGZvciAoa2V5IGluIGFuaW1hdGlvbikgewotICAgICAgICAgICAg
aWYgKGtleSA9PT0gImVsZW1lbnQiKQotICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBhbmltYXRp
b25ba2V5XTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGtleSA9PT0gInN0YXJ0IikKLSAgICAgICAg
ICAgICAgICBzdGFydCA9IGFuaW1hdGlvbltrZXldOwotICAgICAgICAgICAgZWxzZSBpZiAoa2V5
ID09PSAiZW5kIikKLSAgICAgICAgICAgICAgICBlbmQgPSBhbmltYXRpb25ba2V5XTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmICghZWxlbWVudCB8fCAhZW5kKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0KLSAgICAgICAgaWYgKCFzdGFydCkgewotICAgICAgICAgICAgdmFyIGNvbXB1dGVkU3R5
bGUgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShl
bGVtZW50KTsKLSAgICAgICAgICAgIHN0YXJ0ID0ge307Ci0gICAgICAgICAgICBmb3IgKGtleSBp
biBlbmQpCi0gICAgICAgICAgICAgICAgc3RhcnRba2V5XSA9IHBhcnNlSW50KGNvbXB1dGVkU3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZShrZXkpLCAxMCk7Ci0gICAgICAgICAgICBhbmltYXRpb24uc3Rh
cnQgPSBzdGFydDsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBmb3IgKGtleSBpbiBzdGFy
dCkKLSAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGtleSwgc3RhcnRb
a2V5XSArIChrZXkgaW4gcHJvcGVydHlVbml0ID8gcHJvcGVydHlVbml0W2tleV0gOiBkZWZhdWx0
VW5pdCkpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGFuaW1hdGVMb29wKCkKLSAgICB7Ci0gICAg
ICAgIGlmIChoYXNDb21wbGV0ZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAg
ICAgICAvLyBBZHZhbmNlIGZvcndhcmQuCi0gICAgICAgIGNvbXBsZXRlICs9IGludGVydmFsRHVy
YXRpb247Ci0gICAgICAgIHZhciBuZXh0ID0gY29tcGxldGUgKyBpbnRlcnZhbER1cmF0aW9uOwot
Ci0gICAgICAgIC8vIE1ha2Ugc3R5bGUgY2hhbmdlcy4KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBhbmltYXRpb25zTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBhbmltYXRpb24g
PSBhbmltYXRpb25zW2ldOwotICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBhbmltYXRpb24uZWxl
bWVudDsKLSAgICAgICAgICAgIHZhciBzdGFydCA9IGFuaW1hdGlvbi5zdGFydDsKLSAgICAgICAg
ICAgIHZhciBlbmQgPSBhbmltYXRpb24uZW5kOwotICAgICAgICAgICAgaWYgKCFlbGVtZW50IHx8
ICFlbmQpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHZhciBzdHls
ZSA9IGVsZW1lbnQuc3R5bGU7Ci0gICAgICAgICAgICBmb3IgKGtleSBpbiBlbmQpIHsKLSAgICAg
ICAgICAgICAgICB2YXIgZW5kVmFsdWUgPSBlbmRba2V5XTsKLSAgICAgICAgICAgICAgICBpZiAo
bmV4dCA8IGR1cmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdGFydFZhbHVlID0g
c3RhcnRba2V5XTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIG5ld1ZhbHVlID0gY3ViaWNJbk91
dChjb21wbGV0ZSwgc3RhcnRWYWx1ZSwgZW5kVmFsdWUgLSBzdGFydFZhbHVlLCBkdXJhdGlvbik7
Ci0gICAgICAgICAgICAgICAgICAgIHN0eWxlLnNldFByb3BlcnR5KGtleSwgbmV3VmFsdWUgKyAo
a2V5IGluIHByb3BlcnR5VW5pdCA/IHByb3BlcnR5VW5pdFtrZXldIDogZGVmYXVsdFVuaXQpKTsK
LSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3R5bGUuc2V0UHJv
cGVydHkoa2V5LCBlbmRWYWx1ZSArIChrZXkgaW4gcHJvcGVydHlVbml0ID8gcHJvcGVydHlVbml0
W2tleV0gOiBkZWZhdWx0VW5pdCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gRW5kIGNvbmRpdGlvbi4KLSAgICAgICAgaWYgKGNvbXBsZXRlID49IGR1cmF0aW9uKSB7
Ci0gICAgICAgICAgICBoYXNDb21wbGV0ZWQgPSB0cnVlOwotICAgICAgICAgICAgY2xlYXJJbnRl
cnZhbChpbnRlcnZhbCk7Ci0gICAgICAgICAgICBpZiAoY2FsbGJhY2spCi0gICAgICAgICAgICAg
ICAgY2FsbGJhY2soKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZvcmNlQ29t
cGxldGUoKQotICAgIHsKLSAgICAgICAgaWYgKGhhc0NvbXBsZXRlZCkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBjb21wbGV0ZSA9IGR1cmF0aW9uOwotICAgICAgICBhbmltYXRlTG9v
cCgpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGNhbmNlbCgpCi0gICAgewotICAgICAgICBoYXND
b21wbGV0ZWQgPSB0cnVlOwotICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTsKLSAgICB9
Ci0KLSAgICBpbnRlcnZhbCA9IHNldEludGVydmFsKGFuaW1hdGVMb29wLCBpbnRlcnZhbER1cmF0
aW9uKTsKLSAgICByZXR1cm4gewotICAgICAgICBjYW5jZWw6IGNhbmNlbCwKLSAgICAgICAgZm9y
Y2VDb21wbGV0ZTogZm9yY2VDb21wbGV0ZQotICAgIH07Ci19Ci0KIFdlYkluc3BlY3Rvci5pc0Jl
aW5nRWRpdGVkID0gZnVuY3Rpb24oZWxlbWVudCkKIHsKICAgICBpZiAoZWxlbWVudC5oYXNTdHls
ZUNsYXNzKCJ0ZXh0LXByb21wdCIpIHx8IGVsZW1lbnQubm9kZU5hbWUgPT09ICJJTlBVVCIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5j
c3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKaW5k
ZXggYWI4YzI2YmRmOTdiNzljMGIyMGNmZjQ4N2VlMDMzY2EwOGVjODBiZi4uNzUwMjA3MjFiMDk3
MTViNGIzMjE5ZmNhZmI5OWJlYWFhYmQ3NTk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwpAQCAtNTc2LDYgKzU3NiwxNCBAQCBib2R5
Om5vdCgucGxhdGZvcm0tbWFjKSAudG9vbGJhci1pdGVtLmNsb3NlLWxlZnQgewogICAgIGJhY2tn
cm91bmQtY29sb3I6IHdoaXRlOwogfQogCisuYW5pbWF0ZS1zbG93ICogeworICAgIC13ZWJraXQt
dHJhbnNpdGlvbi1kdXJhdGlvbjogMi41cyAhaW1wb3J0YW50OworfQorCisuYW5pbWF0ZSAjbWFp
biB7CisgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBib3R0b20gMjUwbXMgbGluZWFyOworfQorCiBi
b2R5LnNob3ctdG9vbGJhci1pY29ucyAjbWFpbiB7CiAgICAgdG9wOiA1NnB4OwogfQpAQCAtNjQ0
LDYgKzY1MiwxMCBAQCBib2R5LmRyYXdlci12aXNpYmxlICNtYWluLXBhbmVscyB7CiAgICAgaGVp
Z2h0OiAyNHB4OwogfQogCisuYW5pbWF0ZSAjZmxvYXRpbmctc3RhdHVzLWJhci1jb250YWluZXIg
eworICAgIC13ZWJraXQtdHJhbnNpdGlvbjogcGFkZGluZyAyNTBtcyBsaW5lYXI7Cit9CisKIGJv
ZHkuZHJhd2VyLXZpc2libGUgI2Zsb2F0aW5nLXN0YXR1cy1iYXItY29udGFpbmVyIHsKICAgICBk
aXNwbGF5OiAtd2Via2l0LWZsZXg7CiB9CkBAIC04ODgsNiArOTAwLDEwIEBAIGJvZHkucG9ydC1x
dCAuZG9jay1zdGF0dXMtYmFyLWl0ZW0gewogICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwog
fQogCisuYW5pbWF0ZSAjZHJhd2VyIHsKKyAgICAtd2Via2l0LXRyYW5zaXRpb246IGhlaWdodCAy
NTBtcyBsaW5lYXI7Cit9CisKICNkcmF3ZXItY29udGVudHMgewogICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKICAgICB0b3A6IDA7CkBAIC0yNDk2LDYgKzI1MTIsMTAgQEAgYm9keS5wbGF0Zm9ybS1t
YWMgLnNlYXJjaC1kcmF3ZXItaGVhZGVyIGlucHV0W3R5cGU9ImNoZWNrYm94Il0uc2VhcmNoLWNv
bmZpZy1jaGUKICAgICBvdmVyZmxvdzogaGlkZGVuOwogfQogCisuYW5pbWF0ZSAjYm90dG9tLXN0
YXR1cy1iYXItY29udGFpbmVyID4gKiB7CisgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5
IDI1MG1zIGxpbmVhcjsKK30KKwogLnNlYXJjaC1zdGF0dXMtYmFyLWl0ZW0gewogICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKICAgICBjdXJzb3I6IHBvaW50ZXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194012</attachid>
            <date>2013-03-20 03:23:42 -0700</date>
            <delta_ts>2013-03-20 04:34:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112586-20130320141931.patch</filename>
            <type>text/plain</type>
            <size>11846</size>
            <attacher name="Dmitry Zvorygin">zvorygin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1ODkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTEzMTJiMTdiNDIyN2Uw
YjQ4OTcyMWY5ZDc4ZjQ4MTFhYjhkOGJlMC4uZDFmMTIxNGM0NmVkNzYyOTc5NTlmNzZiMWFmZWIy
NDJjYzEzMjM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEzLTAzLTE4ICBEbWl0
cnkgWnZvcnlnaW4gIDx6dm9yeWdpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogU3dpdGNoIERyYXdlciBhbmltYXRpb24gZnJvbSBKYXZhU2NyaXB0IHRvIENTUyB0cmFu
c2l0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMjU4NgorCisgICAgICAgIFRoaXMgaXMgcHJlcmVxdWlzaXRlIHRvIG1ha2UgRHJhd2VyIHdv
cmsgaW4gb3ZlcmxheSBtb2RlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EcmF3ZXIuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRHJhd2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EcmF3ZXIucHJvdG90
eXBlLnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRyYXdlci5wcm90b3R5cGUuaGlkZS50
aGlzLmFuaW1hdGlvbkZpbmlzaGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EcmF3ZXIucHJv
dG90eXBlLmhpZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRyYXdlci5wcm90b3R5cGUuaW1t
ZWRpYXRlbHlGaW5pc2hBbmltYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRyYXdlci5w
cm90b3R5cGUuX2dldEFuaW1hdGlvblN0eWxlcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9VSVV0aWxzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmNzczoKKyAgICAgICAgKC5hbmltYXRlLXNsb3cgKik6CisgICAgICAgICguYW5pbWF0ZSAjbWFp
bik6CisgICAgICAgICguYW5pbWF0ZSAjZmxvYXRpbmctc3RhdHVzLWJhci1jb250YWluZXIpOgor
ICAgICAgICAoLmFuaW1hdGUgI2RyYXdlcik6CisgICAgICAgICguYW5pbWF0ZSAjYm90dG9tLXN0
YXR1cy1iYXItY29udGFpbmVyID4gKik6CisKIDIwMTMtMDMtMTUgIE5vYW0gUm9zZW50aGFsICA8
bm9hbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtUZXhtYXBdIENoYW5nZSBicmlnaHRuZXNzIGZp
bHRlciB0byBtYXRjaCBuZXcgc3BlYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9EcmF3ZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RyYXdlci5qcwppbmRleCA5OTdlNTEyYjFlZTU4ZTA1MWUxMjQ4OGVjMjE5NmMyNjUwZDQ5
NzQzLi5jNTgyYjVjZTVkODQ2NWM0YzBkZTllNDQ2NDc1NjNiNWI4NmU3YjkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RyYXdlci5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RyYXdlci5qcwpAQCAtNDUsNiArNDUsNyBA
QCBXZWJJbnNwZWN0b3IuRHJhd2VyID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX2RyYXdlckNvbnRl
bnRzRWxlbWVudC5jbGFzc05hbWUgPSAiZHJhd2VyLWNvbnRlbnRzIjsKICAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fZHJhd2VyQ29udGVudHNFbGVtZW50KTsKICAgICB0aGlzLl92
aWV3U3RhdHVzQmFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdGhpcy5f
dmlld1N0YXR1c0Jhci5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgdGhp
cy5pbW1lZGlhdGVseUZpbmlzaEFuaW1hdGlvbi5iaW5kKHRoaXMpLCBmYWxzZSk7CiAgICAgdGhp
cy5fYm90dG9tU3RhdHVzQmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvdHRvbS1zdGF0
dXMtYmFyLWNvbnRhaW5lciIpOwogfQogCkBAIC05NCwyNCArOTUsMzAgQEAgV2ViSW5zcGVjdG9y
LkRyYXdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAg
ICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5fY29uc3RyYWluSGVpZ2h0KHRoaXMuX3NhdmVkSGVpZ2h0
IHx8IHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQpOwotICAgICAgICB2YXIgYW5pbWF0aW9ucyA9
IFsKLSAgICAgICAgICAgIHtlbGVtZW50OiB0aGlzLmVsZW1lbnQsIGVuZDoge2hlaWdodDogaGVp
Z2h0fX0sCi0gICAgICAgICAgICB7ZWxlbWVudDogdGhpcy5fbWFpbkVsZW1lbnQsIGVuZDoge2Jv
dHRvbTogaGVpZ2h0fX0sCi0gICAgICAgICAgICB7ZWxlbWVudDogdGhpcy5fZmxvYXRpbmdTdGF0
dXNCYXJDb250YWluZXIsIHN0YXJ0OiB7InBhZGRpbmctbGVmdCI6IHRoaXMuX2JvdHRvbVN0YXR1
c0Jhci5vZmZzZXRMZWZ0fSwgZW5kOiB7InBhZGRpbmctbGVmdCI6IDB9fSwKLSAgICAgICAgICAg
IHtlbGVtZW50OiB0aGlzLl92aWV3U3RhdHVzQmFyLCBzdGFydDoge29wYWNpdHk6IDB9LCBlbmQ6
IHtvcGFjaXR5OiAxfX0KLSAgICAgICAgXTsKKworICAgICAgICB0aGlzLl9mbG9hdGluZ1N0YXR1
c0JhckNvbnRhaW5lci5zdHlsZS5wYWRkaW5nTGVmdCA9IHRoaXMuX2JvdHRvbVN0YXR1c0Jhci5v
ZmZzZXRMZWZ0ICsgInB4IjsKKworICAgICAgICB0aGlzLl9nZXRBbmltYXRpb25TdHlsZXMoYW5p
bWF0aW9uVHlwZSkuZm9yRWFjaChkb2N1bWVudC5ib2R5LmFkZFN0eWxlQ2xhc3MsIGRvY3VtZW50
LmJvZHkpOwogCiAgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGlvbkZpbmlzaGVkKCkKICAgICAgICAg
ewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuY3VycmVudFBhbmVsKCku
ZG9SZXNpemUoKTsKICAgICAgICAgICAgIGlmICh0aGlzLl92aWV3ICYmIHRoaXMuX3ZpZXcuYWZ0
ZXJTaG93KQogICAgICAgICAgICAgICAgIHRoaXMuX3ZpZXcuYWZ0ZXJTaG93KCk7Ci0gICAgICAg
ICAgICBkZWxldGUgdGhpcy5fY3VycmVudEFuaW1hdGlvbjsKICAgICAgICAgfQogCi0gICAgICAg
IHRoaXMuX2N1cnJlbnRBbmltYXRpb24gPSBXZWJJbnNwZWN0b3IuYW5pbWF0ZVN0eWxlKGFuaW1h
dGlvbnMsIHRoaXMuX2FuaW1hdGlvbkR1cmF0aW9uKGFuaW1hdGlvblR5cGUpLCBhbmltYXRpb25G
aW5pc2hlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fYW5pbWF0aW9uRmluaXNoZWQgPSBh
bmltYXRpb25GaW5pc2hlZC5iaW5kKHRoaXMpOworCisgICAgICAgIC8vIEFzc2VydCB0aGF0IHRy
YW5zaXRpb24gd2lsbCBiZSBkb25lIGFuZCB3ZSByZWNlaXZlIHRyYW5zaXRpb25FbmQgZXZlbnQK
KyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fdmlld1N0YXR1c0Jhci5zdHlsZS5vcGFjaXR5
ICE9IDEpOworCiAgICAgICAgIGlmIChhbmltYXRpb25UeXBlID09PSBXZWJJbnNwZWN0b3IuRHJh
d2VyLkFuaW1hdGlvblR5cGUuSW1tZWRpYXRlbHkpCi0gICAgICAgICAgICB0aGlzLl9jdXJyZW50
QW5pbWF0aW9uLmZvcmNlQ29tcGxldGUoKTsKKyAgICAgICAgICAgIHRoaXMuaW1tZWRpYXRlbHlG
aW5pc2hBbmltYXRpb24oKTsKKworICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0g
aGVpZ2h0ICsgInB4IjsKKyAgICAgICAgdGhpcy5fbWFpbkVsZW1lbnQuc3R5bGUuYm90dG9tID0g
aGVpZ2h0ICsgInB4IjsKKyAgICAgICAgdGhpcy5fZmxvYXRpbmdTdGF0dXNCYXJDb250YWluZXIu
c3R5bGUucGFkZGluZ0xlZnQgPSAwOworICAgICAgICB0aGlzLl92aWV3U3RhdHVzQmFyLnN0eWxl
Lm9wYWNpdHkgPSAxOwogICAgIH0sCiAKICAgICBoaWRlOiBmdW5jdGlvbihhbmltYXRpb25UeXBl
KQpAQCAtMTMwLDEyICsxMzcsNyBAQCBXZWJJbnNwZWN0b3IuRHJhd2VyLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuY3VycmVudFBhbmVsKCkuc3RhdHVz
QmFyUmVzaXplZCgpOwogICAgICAgICBkb2N1bWVudC5ib2R5LmFkZFN0eWxlQ2xhc3MoImRyYXdl
ci12aXNpYmxlIik7CiAKLSAgICAgICAgdmFyIGFuaW1hdGlvbnMgPSBbCi0gICAgICAgICAgICB7
ZWxlbWVudDogdGhpcy5fbWFpbkVsZW1lbnQsIGVuZDoge2JvdHRvbTogMH19LAotICAgICAgICAg
ICAge2VsZW1lbnQ6IHRoaXMuZWxlbWVudCwgZW5kOiB7aGVpZ2h0OiAwfX0sCi0gICAgICAgICAg
ICB7ZWxlbWVudDogdGhpcy5fZmxvYXRpbmdTdGF0dXNCYXJDb250YWluZXIsIHN0YXJ0OiB7InBh
ZGRpbmctbGVmdCI6IDB9LCBlbmQ6IHsicGFkZGluZy1sZWZ0IjogdGhpcy5fYm90dG9tU3RhdHVz
QmFyLm9mZnNldExlZnR9IH0sCi0gICAgICAgICAgICB7ZWxlbWVudDogdGhpcy5fdmlld1N0YXR1
c0Jhciwgc3RhcnQ6IHtvcGFjaXR5OiAxfSwgZW5kOiB7b3BhY2l0eTogMH19Ci0gICAgICAgIF07
CisgICAgICAgIHRoaXMuX2dldEFuaW1hdGlvblN0eWxlcyhhbmltYXRpb25UeXBlKS5mb3JFYWNo
KGRvY3VtZW50LmJvZHkuYWRkU3R5bGVDbGFzcywgZG9jdW1lbnQuYm9keSk7CiAKICAgICAgICAg
ZnVuY3Rpb24gYW5pbWF0aW9uRmluaXNoZWQoKQogICAgICAgICB7CkBAIC0xNDYsMTIgKzE0OCwy
MCBAQCBXZWJJbnNwZWN0b3IuRHJhd2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMu
X2JvdHRvbVN0YXR1c0Jhci5hcHBlbmRDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFu
ZWwtc3RhdHVzLWJhciIpKTsKICAgICAgICAgICAgIHRoaXMuX2RyYXdlckNvbnRlbnRzRWxlbWVu
dC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVTdHls
ZUNsYXNzKCJkcmF3ZXItdmlzaWJsZSIpOwotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2N1cnJl
bnRBbmltYXRpb247CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9jdXJyZW50QW5pbWF0aW9u
ID0gV2ViSW5zcGVjdG9yLmFuaW1hdGVTdHlsZShhbmltYXRpb25zLCB0aGlzLl9hbmltYXRpb25E
dXJhdGlvbihhbmltYXRpb25UeXBlKSwgYW5pbWF0aW9uRmluaXNoZWQuYmluZCh0aGlzKSk7Cisg
ICAgICAgIHRoaXMuX2FuaW1hdGlvbkZpbmlzaGVkID0gYW5pbWF0aW9uRmluaXNoZWQuYmluZCh0
aGlzKTsKKworICAgICAgICAvLyBBc3NlcnQgdGhhdCB0cmFuc2l0aW9uIHdpbGwgYmUgZG9uZSBh
bmQgd2UgcmVjZWl2ZSB0cmFuc2l0aW9uRW5kIGV2ZW50CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRoaXMuX3ZpZXdTdGF0dXNCYXIuc3R5bGUub3BhY2l0eSAhPSAwKTsKKwogICAgICAgICBpZiAo
YW5pbWF0aW9uVHlwZSA9PT0gV2ViSW5zcGVjdG9yLkRyYXdlci5BbmltYXRpb25UeXBlLkltbWVk
aWF0ZWx5KQotICAgICAgICAgICAgdGhpcy5fY3VycmVudEFuaW1hdGlvbi5mb3JjZUNvbXBsZXRl
KCk7CisgICAgICAgICAgICB0aGlzLmltbWVkaWF0ZWx5RmluaXNoQW5pbWF0aW9uKCk7CisKKyAg
ICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodCA9IDA7CisgICAgICAgIHRoaXMuX21haW5F
bGVtZW50LnN0eWxlLmJvdHRvbSA9IDA7CisgICAgICAgIHRoaXMuX2Zsb2F0aW5nU3RhdHVzQmFy
Q29udGFpbmVyLnN0eWxlLnBhZGRpbmdMZWZ0ID0gdGhpcy5fYm90dG9tU3RhdHVzQmFyLm9mZnNl
dExlZnQgKyAicHgiOworICAgICAgICB0aGlzLl92aWV3U3RhdHVzQmFyLnN0eWxlLm9wYWNpdHkg
PSAwOwogICAgIH0sCiAKICAgICByZXNpemU6IGZ1bmN0aW9uKCkKQEAgLTE2OCwxOSArMTc4LDIz
IEBAIFdlYkluc3BlY3Rvci5EcmF3ZXIucHJvdG90eXBlID0gewogCiAgICAgaW1tZWRpYXRlbHlG
aW5pc2hBbmltYXRpb246IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9jdXJy
ZW50QW5pbWF0aW9uKQotICAgICAgICAgICAgdGhpcy5fY3VycmVudEFuaW1hdGlvbi5mb3JjZUNv
bXBsZXRlKCk7CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlU3R5bGVDbGFzcygiYW5pbWF0
ZSIpOworICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZVN0eWxlQ2xhc3MoImFuaW1hdGUtc2xv
dyIpOworICAgICAgICBpZiAodGhpcy5fYW5pbWF0aW9uRmluaXNoZWQpIHsKKyAgICAgICAgICAg
IHRoaXMuX2FuaW1hdGlvbkZpbmlzaGVkKCk7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fYW5p
bWF0aW9uRmluaXNoZWQ7CisgICAgICAgIH0KICAgICB9LAogCi0gICAgX2FuaW1hdGlvbkR1cmF0
aW9uOiBmdW5jdGlvbihhbmltYXRpb25UeXBlKQorICAgIF9nZXRBbmltYXRpb25TdHlsZXM6IGZ1
bmN0aW9uKGFuaW1hdGlvblR5cGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKGFuaW1hdGlvblR5
cGUpIHsKICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuRHJhd2VyLkFuaW1hdGlvblR5cGUuU2xv
dzoKLSAgICAgICAgICAgIHJldHVybiAyMDAwOworICAgICAgICAgICAgcmV0dXJuIFsiYW5pbWF0
ZSIsICJhbmltYXRlLXNsb3ciXTsKICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuRHJhd2VyLkFu
aW1hdGlvblR5cGUuTm9ybWFsOgotICAgICAgICAgICAgcmV0dXJuIDI1MDsKKyAgICAgICAgICAg
IHJldHVybiBbImFuaW1hdGUiXTsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgICB9CiAgICAgfSwKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzCmluZGV4IDhlY2EwMDNl
OGQwYjVjZDY0OTBlYTQ1ZWIwNDU5MDI2Y2NjYjE4OTEuLjEzZGVhYTA2NjE0MTRiYzcxYmMxMjgx
ZmMzNTY2ZTQ0ZDZhOWY4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVUlVdGlscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1VJVXRpbHMuanMKQEAgLTE1MCwxMTEgKzE1MCw2IEBAIFdlYkluc3BlY3Rvci5HbGFzc1Bh
bmUucHJvdG90eXBlID0gewogICAgIH0KIH0KIAotV2ViSW5zcGVjdG9yLmFuaW1hdGVTdHlsZSA9
IGZ1bmN0aW9uKGFuaW1hdGlvbnMsIGR1cmF0aW9uLCBjYWxsYmFjaykKLXsKLSAgICB2YXIgaW50
ZXJ2YWw7Ci0gICAgdmFyIGNvbXBsZXRlID0gMDsKLSAgICB2YXIgaGFzQ29tcGxldGVkID0gZmFs
c2U7Ci0KLSAgICBjb25zdCBpbnRlcnZhbER1cmF0aW9uID0gKDEwMDAgLyAzMCk7IC8vIDMwIGZy
YW1lcyBwZXIgc2Vjb25kLgotICAgIGNvbnN0IGFuaW1hdGlvbnNMZW5ndGggPSBhbmltYXRpb25z
Lmxlbmd0aDsKLSAgICBjb25zdCBwcm9wZXJ0eVVuaXQgPSB7b3BhY2l0eTogIiJ9OwotICAgIGNv
bnN0IGRlZmF1bHRVbml0ID0gInB4IjsKLQotICAgIGZ1bmN0aW9uIGN1YmljSW5PdXQodCwgYiwg
YywgZCkKLSAgICB7Ci0gICAgICAgIGlmICgodC89ZC8yKSA8IDEpIHJldHVybiBjLzIqdCp0KnQg
KyBiOwotICAgICAgICByZXR1cm4gYy8yKigodC09MikqdCp0ICsgMikgKyBiOwotICAgIH0KLQot
ICAgIC8vIFByZS1wcm9jZXNzIGFuaW1hdGlvbnMuCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBh
bmltYXRpb25zTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdmFyIGFuaW1hdGlvbiA9IGFuaW1hdGlv
bnNbaV07Ci0gICAgICAgIHZhciBlbGVtZW50ID0gbnVsbCwgc3RhcnQgPSBudWxsLCBlbmQgPSBu
dWxsLCBrZXkgPSBudWxsOwotICAgICAgICBmb3IgKGtleSBpbiBhbmltYXRpb24pIHsKLSAgICAg
ICAgICAgIGlmIChrZXkgPT09ICJlbGVtZW50IikKLSAgICAgICAgICAgICAgICBlbGVtZW50ID0g
YW5pbWF0aW9uW2tleV07Ci0gICAgICAgICAgICBlbHNlIGlmIChrZXkgPT09ICJzdGFydCIpCi0g
ICAgICAgICAgICAgICAgc3RhcnQgPSBhbmltYXRpb25ba2V5XTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKGtleSA9PT0gImVuZCIpCi0gICAgICAgICAgICAgICAgZW5kID0gYW5pbWF0aW9uW2tleV07
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWVsZW1lbnQgfHwgIWVuZCkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgIGlmICghc3RhcnQpIHsKLSAgICAgICAgICAgIHZhciBjb21w
dXRlZFN0eWxlID0gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUoZWxlbWVudCk7Ci0gICAgICAgICAgICBzdGFydCA9IHt9OwotICAgICAgICAgICAgZm9y
IChrZXkgaW4gZW5kKQotICAgICAgICAgICAgICAgIHN0YXJ0W2tleV0gPSBwYXJzZUludChjb21w
dXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoa2V5KSwgMTApOwotICAgICAgICAgICAgYW5pbWF0
aW9uLnN0YXJ0ID0gc3RhcnQ7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgZm9yIChrZXkg
aW4gc3RhcnQpCi0gICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShrZXks
IHN0YXJ0W2tleV0gKyAoa2V5IGluIHByb3BlcnR5VW5pdCA/IHByb3BlcnR5VW5pdFtrZXldIDog
ZGVmYXVsdFVuaXQpKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBhbmltYXRlTG9vcCgpCi0gICAg
ewotICAgICAgICBpZiAoaGFzQ29tcGxldGVkKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAKLSAgICAgICAgLy8gQWR2YW5jZSBmb3J3YXJkLgotICAgICAgICBjb21wbGV0ZSArPSBpbnRl
cnZhbER1cmF0aW9uOwotICAgICAgICB2YXIgbmV4dCA9IGNvbXBsZXRlICsgaW50ZXJ2YWxEdXJh
dGlvbjsKLQotICAgICAgICAvLyBNYWtlIHN0eWxlIGNoYW5nZXMuCi0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgYW5pbWF0aW9uc0xlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgYW5p
bWF0aW9uID0gYW5pbWF0aW9uc1tpXTsKLSAgICAgICAgICAgIHZhciBlbGVtZW50ID0gYW5pbWF0
aW9uLmVsZW1lbnQ7Ci0gICAgICAgICAgICB2YXIgc3RhcnQgPSBhbmltYXRpb24uc3RhcnQ7Ci0g
ICAgICAgICAgICB2YXIgZW5kID0gYW5pbWF0aW9uLmVuZDsKLSAgICAgICAgICAgIGlmICghZWxl
bWVudCB8fCAhZW5kKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICB2
YXIgc3R5bGUgPSBlbGVtZW50LnN0eWxlOwotICAgICAgICAgICAgZm9yIChrZXkgaW4gZW5kKSB7
Ci0gICAgICAgICAgICAgICAgdmFyIGVuZFZhbHVlID0gZW5kW2tleV07Ci0gICAgICAgICAgICAg
ICAgaWYgKG5leHQgPCBkdXJhdGlvbikgewotICAgICAgICAgICAgICAgICAgICB2YXIgc3RhcnRW
YWx1ZSA9IHN0YXJ0W2tleV07Ci0gICAgICAgICAgICAgICAgICAgIHZhciBuZXdWYWx1ZSA9IGN1
YmljSW5PdXQoY29tcGxldGUsIHN0YXJ0VmFsdWUsIGVuZFZhbHVlIC0gc3RhcnRWYWx1ZSwgZHVy
YXRpb24pOwotICAgICAgICAgICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShrZXksIG5ld1Zh
bHVlICsgKGtleSBpbiBwcm9wZXJ0eVVuaXQgPyBwcm9wZXJ0eVVuaXRba2V5XSA6IGRlZmF1bHRV
bml0KSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHN0eWxl
LnNldFByb3BlcnR5KGtleSwgZW5kVmFsdWUgKyAoa2V5IGluIHByb3BlcnR5VW5pdCA/IHByb3Bl
cnR5VW5pdFtrZXldIDogZGVmYXVsdFVuaXQpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIEVuZCBjb25kaXRpb24uCi0gICAgICAgIGlmIChjb21wbGV0ZSA+PSBkdXJh
dGlvbikgewotICAgICAgICAgICAgaGFzQ29tcGxldGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOwotICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQotICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBm
b3JjZUNvbXBsZXRlKCkKLSAgICB7Ci0gICAgICAgIGlmIChoYXNDb21wbGV0ZWQpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgY29tcGxldGUgPSBkdXJhdGlvbjsKLSAgICAgICAgYW5p
bWF0ZUxvb3AoKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjYW5jZWwoKQotICAgIHsKLSAgICAg
ICAgaGFzQ29tcGxldGVkID0gdHJ1ZTsKLSAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7
Ci0gICAgfQotCi0gICAgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChhbmltYXRlTG9vcCwgaW50ZXJ2
YWxEdXJhdGlvbik7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgY2FuY2VsOiBjYW5jZWwsCi0gICAg
ICAgIGZvcmNlQ29tcGxldGU6IGZvcmNlQ29tcGxldGUKLSAgICB9OwotfQotCiBXZWJJbnNwZWN0
b3IuaXNCZWluZ0VkaXRlZCA9IGZ1bmN0aW9uKGVsZW1lbnQpCiB7CiAgICAgaWYgKGVsZW1lbnQu
aGFzU3R5bGVDbGFzcygidGV4dC1wcm9tcHQiKSB8fCBlbGVtZW50Lm5vZGVOYW1lID09PSAiSU5Q
VVQiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
Y3NzCmluZGV4IGFiOGMyNmJkZjk3Yjc5YzBiMjBjZmY0ODdlZTAzM2NhMDhlYzgwYmYuLjc1MDIw
NzIxYjA5NzE1YjRiMzIxOWZjYWZiOTliZWFhYWJkNzU5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAgLTU3Niw2ICs1NzYsMTQg
QEAgYm9keTpub3QoLnBsYXRmb3JtLW1hYykgLnRvb2xiYXItaXRlbS5jbG9zZS1sZWZ0IHsKICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKIH0KIAorLmFuaW1hdGUtc2xvdyAqIHsKKyAgICAt
d2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDIuNXMgIWltcG9ydGFudDsKK30KKworLmFuaW1h
dGUgI21haW4geworICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYm90dG9tIDI1MG1zIGxpbmVhcjsK
K30KKwogYm9keS5zaG93LXRvb2xiYXItaWNvbnMgI21haW4gewogICAgIHRvcDogNTZweDsKIH0K
QEAgLTY0NCw2ICs2NTIsMTAgQEAgYm9keS5kcmF3ZXItdmlzaWJsZSAjbWFpbi1wYW5lbHMgewog
ICAgIGhlaWdodDogMjRweDsKIH0KIAorLmFuaW1hdGUgI2Zsb2F0aW5nLXN0YXR1cy1iYXItY29u
dGFpbmVyIHsKKyAgICAtd2Via2l0LXRyYW5zaXRpb246IHBhZGRpbmcgMjUwbXMgbGluZWFyOwor
fQorCiBib2R5LmRyYXdlci12aXNpYmxlICNmbG9hdGluZy1zdGF0dXMtYmFyLWNvbnRhaW5lciB7
CiAgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogfQpAQCAtODg4LDYgKzkwMCwxMCBAQCBib2R5
LnBvcnQtcXQgLmRvY2stc3RhdHVzLWJhci1pdGVtIHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3
aGl0ZTsKIH0KIAorLmFuaW1hdGUgI2RyYXdlciB7CisgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBo
ZWlnaHQgMjUwbXMgbGluZWFyOworfQorCiAjZHJhd2VyLWNvbnRlbnRzIHsKICAgICBwb3NpdGlv
bjogYWJzb2x1dGU7CiAgICAgdG9wOiAwOwpAQCAtMjQ5Niw2ICsyNTEyLDEwIEBAIGJvZHkucGxh
dGZvcm0tbWFjIC5zZWFyY2gtZHJhd2VyLWhlYWRlciBpbnB1dFt0eXBlPSJjaGVja2JveCJdLnNl
YXJjaC1jb25maWctY2hlCiAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKIH0KIAorLmFuaW1hdGUgI2Jv
dHRvbS1zdGF0dXMtYmFyLWNvbnRhaW5lciA+ICogeworICAgIC13ZWJraXQtdHJhbnNpdGlvbjog
b3BhY2l0eSAyNTBtcyBsaW5lYXI7Cit9CisKIC5zZWFyY2gtc3RhdHVzLWJhci1pdGVtIHsKICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgY3Vyc29yOiBwb2ludGVyOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>