<?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>50227</bug_id>
          
          <creation_ts>2010-11-30 05:22:29 -0800</creation_ts>
          <short_desc>Web Inspector: Enable switching between revisions of stylesheets</short_desc>
          <delta_ts>2010-11-30 07:59:29 -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>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>
          <dependson>50241</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>314966</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-11-30 05:22:29 -0800</bug_when>
    <thetext>We currently track revisions of stylesheets edited by the user. We should also be able to apply any revision as the &quot;current&quot; one, to revert the stylesheet state to some point in the past.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314979</commentid>
    <comment_count>1</comment_count>
      <attachid>75131</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-11-30 06:00:27 -0800</bug_when>
    <thetext>Created attachment 75131
[PATCH] Suggested solution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314985</commentid>
    <comment_count>2</comment_count>
      <attachid>75131</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-11-30 06:18:20 -0800</bug_when>
    <thetext>Comment on attachment 75131
[PATCH] Suggested solution

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

&gt; WebCore/inspector/front-end/CSSStyleModel.js:168
&gt; +        function callback(styleSheetId, href, content)

Just use styleSheetId from the outer scope without passing it as additional explicit parameter, this way you would avoid callback.bind call below.

&gt; WebCore/inspector/front-end/CSSStyleModel.js:221
&gt; +    return payload ? new WebInspector.CSSStyleDeclaration(payload) : null;

The contract should be that the caller checks for null payload because otherwise we have two null checks instead of one, first one in the parse method and the second one at the call site where we check for null parsed value.

&gt; WebCore/inspector/front-end/CSSStyleModel.js:369
&gt; +    return payload ? new WebInspector.CSSRule(payload) : null;

ditto

&gt; WebCore/inspector/front-end/CSSStyleModel.js:410
&gt; +    if (!payload)

ditto

&gt; WebCore/inspector/front-end/CSSStyleModel.js:530
&gt; +    return payload ? new WebInspector.CSSStyleSheet(payload) : null;

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314988</commentid>
    <comment_count>3</comment_count>
      <attachid>75135</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-11-30 06:30:22 -0800</bug_when>
    <thetext>Created attachment 75135
[PATCH] Comment addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314991</commentid>
    <comment_count>4</comment_count>
      <attachid>75135</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-11-30 06:32:11 -0800</bug_when>
    <thetext>Comment on attachment 75135
[PATCH] Comment addressed

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

&gt; WebCore/inspector/front-end/CSSStyleModel.js:-538
&gt; -        function callback(styleSheetPayload)

Please revert this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314996</commentid>
    <comment_count>5</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-11-30 06:38:50 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 75135 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=75135&amp;action=review
&gt; 
&gt; &gt; WebCore/inspector/front-end/CSSStyleModel.js:-538
&gt; &gt; -        function callback(styleSheetPayload)
&gt; 
&gt; Please revert this.

The code in question was wrong. setStyleSheetText2() does not return a stylesheet payload. Instead, it returns the stylesheet &quot;href&quot; and the new textual contents. Yet, I&apos;m adding back the missing userCallback invocation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314997</commentid>
    <comment_count>6</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-11-30 06:40:44 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 75135 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=75135&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; WebCore/inspector/front-end/CSSStyleModel.js:-538
&gt; &gt; &gt; -        function callback(styleSheetPayload)
&gt; &gt; 
&gt; &gt; Please revert this.
&gt; 
&gt; The code in question was wrong. setStyleSheetText2() does not return a stylesheet payload. Instead, it returns the stylesheet &quot;href&quot; and the new textual contents. Yet, I&apos;m adding back the missing userCallback invocation.

Sorry for the confusion. setStyleSheetText2() does not return anything. It&apos;s getStyleSheetText2() that returns the href and stylesheet contents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315001</commentid>
    <comment_count>7</comment_count>
      <attachid>75140</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-11-30 06:48:29 -0800</bug_when>
    <thetext>Created attachment 75140
[PATCH] Reverted userCallback invocation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315007</commentid>
    <comment_count>8</comment_count>
      <attachid>75140</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-11-30 06:52:54 -0800</bug_when>
    <thetext>Comment on attachment 75140
[PATCH] Reverted userCallback invocation

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

&gt; WebCore/inspector/front-end/CSSStyleModel.js:173
&gt; +            if (userCallback)

Let&apos;s get rid of the unused callbacks. We can add them later once we need them.

&gt; WebCore/inspector/front-end/CSSStyleModel.js:549
&gt;      setText: function(newText, userCallback)

This method is not used, consider removing it completely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315018</commentid>
    <comment_count>9</comment_count>
      <attachid>75144</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-11-30 07:07:07 -0800</bug_when>
    <thetext>Created attachment 75144
[PATCH] Removed unused method and user callback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315035</commentid>
    <comment_count>10</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-11-30 07:29:34 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
        M       WebCore/ChangeLog
        M       WebCore/English.lproj/localizedStrings.js
        M       WebCore/inspector/InspectorStyleSheet.cpp
        M       WebCore/inspector/front-end/CSSStyleModel.js
        M       WebCore/inspector/front-end/ResourcesPanel.js
Committed r72914</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315043</commentid>
    <comment_count>11</comment_count>
      <attachid>75144</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-30 07:50:57 -0800</bug_when>
    <thetext>Comment on attachment 75144
[PATCH] Removed unused method and user callback

I have a much better change that is using universal rollback callback and works both for styles and javascript. It does not introduce dependency from resource panel to style sheet model + does not introduce weird .styleSheetId property. Anyways, I did not land it since setStyleSeetText was not working. Is it fixed now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315045</commentid>
    <comment_count>12</comment_count>
      <attachid>75147</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-30 07:52:33 -0800</bug_when>
    <thetext>Created attachment 75147
[PATCH] My version of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315050</commentid>
    <comment_count>13</comment_count>
      <attachid>75147</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-11-30 07:56:56 -0800</bug_when>
    <thetext>Comment on attachment 75147
[PATCH] My version of the patch.

You need to add:
m_pageStyleSheet-&gt;styleSheetChanged();
after
m_pageStyleSheet-&gt;parseString(text, m_pageStyleSheet-&gt;useStrictParsing());
in
InspectorStyleSheet::reparseStyleSheet(const String&amp; text).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75131</attachid>
            <date>2010-11-30 06:00:27 -0800</date>
            <delta_ts>2010-11-30 06:30:22 -0800</delta_ts>
            <desc>[PATCH] Suggested solution</desc>
            <filename>switchrev.patch</filename>
            <type>text/plain</type>
            <size>7966</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IGQ3NjFhMjZjMzI3ZWQ3N2FlZDhmZTA1M2M3OTEzM2ZhOTY1ZTFiM2YKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUdWUgTm92IDMw
IDE2OjQ4OjU1IDIwMTAgKzAzMDAKCiAgICBTd2l0Y2hSZXZpc2lvbnMKCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDAzNjJmMjkuLjU0MmVk
NDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMTEtMzAgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBFbmFibGUgc3dpdGNoaW5nIGJldHdlZW4gcmV2aXNpb25z
IG9mIHN0eWxlc2hlZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MDIyNworCisgICAgICAgIERyaXZlLWJ5IGZpeDogc3R5bGVTaGVldENoYW5nZWQo
KSBjYWxsIG5lZWRlZCBhZnRlciBhIHN0eWxlc2hlZXQgcmVwYXJzaW5nIG9uIHNldFN0eWxlU2hl
ZXRUZXh0MigpLgorCisgICAgICAgICogRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpz
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OnJlcGFyc2VTdHlsZVNoZWV0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuc2V0U3R5bGVTaGVldFRleHQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9zdHlsZVNoZWV0Q2hh
bmdlZC5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90
b3R5cGUuX3N0eWxlU2hlZXRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHls
ZURlY2xhcmF0aW9uLnBhcnNlUGF5bG9hZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTUnVs
ZS5wYXJzZVBheWxvYWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5LnBhcnNl
UGF5bG9hZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5wYXJzZVBheWxv
YWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQucHJvdG90eXBlLnNldFRl
eHQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VSZXZpc2lvblRyZWVFbGVtZW50LnByb3RvdHlw
ZS5vbmF0dGFjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VSZXZpc2lvblRyZWVF
bGVtZW50LnByb3RvdHlwZS5fb25kcmFnc3RhcnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
c291cmNlUmV2aXNpb25UcmVlRWxlbWVudC5wcm90b3R5cGUuX2hhbmRsZUNvbnRleHRNZW51RXZl
bnQpOgorCiAyMDEwLTExLTMwICBIZWxkZXIgQ29ycmVpYSAgPGhlbGRlckBzZW5jaGEuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9XZWJDb3Jl
L0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCA1ZmZlODYxMjliMTIxMDIx
YjUwNjg5YmViNzFkZWIxNzE1YWNiMDkxLi5mMTY0NGNkZjY2N2RlNzQ5MjY3OGNiMWEyOGRjNjQy
YzNhZjQ1N2NmIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDkyCnpjbVg+eW0tKlR9PF8m
amhsdjVlWDcqWkxFNylscnZmSClzYVctdyRqNmEhZ0JLJCRYeiUqaCo1TUpLO0cheSRgYgpObTMq
dTU9MzZ6ZDBzK1JxOGNfZk0KCmRlbHRhIDE0CldjbWNhTWtOTD00PF8mamhIc3tzODJtfUIqJjxE
RSEKCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IGVjMWJi
MzkuLjViNjdhMjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
CkBAIC01ODgsNiArNTg4LDcgQEAgdm9pZCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpyZXBhcnNlU3R5
bGVTaGVldChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6
ZSA9IG1fcGFnZVN0eWxlU2hlZXQtPmxlbmd0aCgpOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBt
X3BhZ2VTdHlsZVNoZWV0LT5yZW1vdmUoaSk7CiAgICAgbV9wYWdlU3R5bGVTaGVldC0+cGFyc2VT
dHJpbmcodGV4dCwgbV9wYWdlU3R5bGVTaGVldC0+dXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBt
X3BhZ2VTdHlsZVNoZWV0LT5zdHlsZVNoZWV0Q2hhbmdlZCgpOwogICAgIG1faW5zcGVjdG9yU3R5
bGVzLmNsZWFyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9DU1NTdHlsZU1vZGVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxl
TW9kZWwuanMKaW5kZXggYmFmNDRjOS4uN2M0ZjkwYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKQEAgLTE1NSwxOCArMTU1LDI1IEBAIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5hZGRSdWxlMihub2RlSWQsIHNlbGVjdG9yLCBjYWxsYmFjay5iaW5kKHRoaXMsIHN1Y2Nlc3ND
YWxsYmFjaywgZmFpbHVyZUNhbGxiYWNrLCBzZWxlY3RvcikpOwogICAgIH0sCiAKKyAgICBzZXRT
dHlsZVNoZWV0VGV4dDogZnVuY3Rpb24oc3R5bGVTaGVldElkLCBuZXdUZXh0KQorICAgIHsKKyAg
ICAgICAgSW5zcGVjdG9yQmFja2VuZC5zZXRTdHlsZVNoZWV0VGV4dDIoc3R5bGVTaGVldElkLCBu
ZXdUZXh0LCB0aGlzLl9zdHlsZVNoZWV0Q2hhbmdlZC5iaW5kKHRoaXMsIHN0eWxlU2hlZXRJZCwg
dHJ1ZSkpOworICAgIH0sCisKICAgICBfc3R5bGVTaGVldENoYW5nZWQ6IGZ1bmN0aW9uKHN0eWxl
U2hlZXRJZCwgbWFqb3JDaGFuZ2UpCiAgICAgewogICAgICAgICBpZiAoIW1ham9yQ2hhbmdlIHx8
ICFzdHlsZVNoZWV0SWQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZnVuY3Rpb24g
Y2FsbGJhY2soaHJlZiwgY29udGVudCkKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soc3R5bGVT
aGVldElkLCBocmVmLCBjb250ZW50KQogICAgICAgICB7CiAgICAgICAgICAgICB2YXIgcmVzb3Vy
Y2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlRm9yVVJMKGhyZWYpOwot
ICAgICAgICAgICAgaWYgKHJlc291cmNlICYmIHJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQpCisgICAgICAgICAgICBpZiAocmVzb3VyY2UgJiYg
cmVzb3VyY2UudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU3R5bGVzaGVldCkg
eworICAgICAgICAgICAgICAgIHJlc291cmNlLnN0eWxlU2hlZXRJZCA9IHN0eWxlU2hlZXRJZDsK
ICAgICAgICAgICAgICAgICByZXNvdXJjZS5jb250ZW50ID0gY29udGVudDsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfQotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFN0eWxlU2hlZXRUZXh0
MihzdHlsZVNoZWV0SWQsIGNhbGxiYWNrKTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRT
dHlsZVNoZWV0VGV4dDIoc3R5bGVTaGVldElkLCBjYWxsYmFjay5iaW5kKG51bGwsIHN0eWxlU2hl
ZXRJZCkpOwogICAgIH0KIH0KIApAQCAtMjExLDcgKzIxOCw3IEBAIFdlYkluc3BlY3Rvci5DU1NT
dHlsZURlY2xhcmF0aW9uID0gZnVuY3Rpb24ocGF5bG9hZCkKIAogV2ViSW5zcGVjdG9yLkNTU1N0
eWxlRGVjbGFyYXRpb24ucGFyc2VQYXlsb2FkID0gZnVuY3Rpb24ocGF5bG9hZCkKIHsKLSAgICBy
ZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uKHBheWxvYWQpOworICAg
IHJldHVybiBwYXlsb2FkID8gbmV3IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uKHBh
eWxvYWQpIDogbnVsbDsKIH0KIAogV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ucHJv
dG90eXBlID0gewpAQCAtMzU5LDcgKzM2Niw3IEBAIFdlYkluc3BlY3Rvci5DU1NSdWxlID0gZnVu
Y3Rpb24ocGF5bG9hZCkKIAogV2ViSW5zcGVjdG9yLkNTU1J1bGUucGFyc2VQYXlsb2FkID0gZnVu
Y3Rpb24ocGF5bG9hZCkKIHsKLSAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5DU1NSdWxlKHBh
eWxvYWQpOworICAgIHJldHVybiBwYXlsb2FkID8gbmV3IFdlYkluc3BlY3Rvci5DU1NSdWxlKHBh
eWxvYWQpIDogbnVsbDsKIH0KIAogV2ViSW5zcGVjdG9yLkNTU1J1bGUucHJvdG90eXBlID0gewpA
QCAtNDAwLDYgKzQwNyw5IEBAIFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eSA9IGZ1bmN0aW9uKG93
bmVyU3R5bGUsIGluZGV4LCBuYW1lLCB2YWx1ZSwgcHJpb3JpdHksIHN0CiAKIFdlYkluc3BlY3Rv
ci5DU1NQcm9wZXJ0eS5wYXJzZVBheWxvYWQgPSBmdW5jdGlvbihvd25lclN0eWxlLCBpbmRleCwg
cGF5bG9hZCkKIHsKKyAgICBpZiAoIXBheWxvYWQpCisgICAgICAgIHJldHVybiBudWxsOworCiAg
ICAgdmFyIHJlc3VsdCA9IG5ldyBXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkoCiAgICAgICAgIG93
bmVyU3R5bGUsIGluZGV4LCBwYXlsb2FkLm5hbWUsIHBheWxvYWQudmFsdWUsIHBheWxvYWQucHJp
b3JpdHksIHBheWxvYWQuc3RhdHVzLCBwYXlsb2FkLnBhcnNlZE9rLCBwYXlsb2FkLmltcGxpY2l0
LCBwYXlsb2FkLnNob3J0aGFuZE5hbWUsIHBheWxvYWQudGV4dCk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTUxNSw2ICs1MjUsMTEgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQgPSBmdW5j
dGlvbihwYXlsb2FkKQogICAgICAgICB0aGlzLl90ZXh0ID0gcGF5bG9hZC50ZXh0OwogfQogCitX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5wYXJzZVBheWxvYWQgPSBmdW5jdGlvbihwYXlsb2Fk
KQoreworICAgIHJldHVybiBwYXlsb2FkID8gbmV3IFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0
KHBheWxvYWQpIDogbnVsbDsKK30KKwogV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQuY3JlYXRl
Rm9ySWQgPSBmdW5jdGlvbihzdHlsZVNoZWV0SWQsIHVzZXJDYWxsYmFjaykKIHsKICAgICBmdW5j
dGlvbiBjYWxsYmFjayhzdHlsZVNoZWV0UGF5bG9hZCkKQEAgLTUzNSwxNiArNTUwLDYgQEAgV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQucHJvdG90eXBlID0gewogCiAgICAgc2V0VGV4dDogZnVu
Y3Rpb24obmV3VGV4dCwgdXNlckNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gY2Fs
bGJhY2soc3R5bGVTaGVldFBheWxvYWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghc3R5
bGVTaGVldFBheWxvYWQpCi0gICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKG51bGwpOwotICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKG5ldyBXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVTaGVldChzdHlsZVNoZWV0UGF5bG9hZCkpOwotICAgICAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5jc3NNb2RlbC5fc3R5bGVTaGVldENoYW5nZWQodGhpcy5pZCwgdHJ1ZSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNl
dFN0eWxlU2hlZXRUZXh0Mih0aGlzLmlkLCBuZXdUZXh0LCBjYWxsYmFjay5iaW5kKHRoaXMpKTsK
KyAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnNldFN0eWxlU2hlZXRUZXh0KHRoaXMuaWQs
IG5ld1RleHQsIHVzZXJDYWxsYmFjayk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCmluZGV4IDVjNWM1ZDYuLjc0MjczYzAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKQEAgLTEwOTQs
NiArMTA5NCw3IEBAIFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlVHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogICAgICAgICB2YXIgcmV2aXNpb25SZXNvdXJjZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UobnVsbCwgdGhpcy5fcmVzb3VyY2UudXJsKTsKICAgICAgICAgcmV2aXNpb25SZXNv
dXJjZS50eXBlID0gdGhpcy5fcmVzb3VyY2UudHlwZTsKICAgICAgICAgcmV2aXNpb25SZXNvdXJj
ZS5sb2FkZXIgPSB0aGlzLl9yZXNvdXJjZS5sb2FkZXI7CisgICAgICAgIHJldmlzaW9uUmVzb3Vy
Y2Uuc3R5bGVTaGVldElkID0gdGhpcy5fcmVzb3VyY2Uuc3R5bGVTaGVldElkOwogICAgICAgICBp
ZiAodGhpcy5fcmVzb3VyY2UuZmluaXNoZWQpCiAgICAgICAgICAgICByZXZpc2lvblJlc291cmNl
LmZpbmlzaGVkID0gdHJ1ZTsKICAgICAgICAgZWxzZSB7CkBAIC0xMjYxLDYgKzEyNjIsNyBAQCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VSZXZpc2lvblRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgV2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uYXR0
YWNoLmNhbGwodGhpcyk7CiAgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmRyYWdnYWJsZSA9
IHRydWU7CiAgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRy
YWdzdGFydCIsIHRoaXMuX29uZHJhZ3N0YXJ0LmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAg
dGhpcy5saXN0SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlz
Ll9oYW5kbGVDb250ZXh0TWVudUV2ZW50LmJpbmQodGhpcyksIHRydWUpOwogICAgIH0sCiAKICAg
ICBvbnNlbGVjdDogZnVuY3Rpb24oKQpAQCAtMTI3NCw2ICsxMjc2LDE3IEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVJldmlzaW9uVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBldmVu
dC5kYXRhVHJhbnNmZXIuc2V0RGF0YSgidGV4dC9wbGFpbiIsIHRoaXMuX3Jlc291cmNlLmNvbnRl
bnQpOwogICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9ICJjb3B5IjsK
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIF9oYW5kbGVDb250ZXh0TWVudUV2
ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fcmVzb3VyY2Uu
c3R5bGVTaGVldElkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBjb250ZXh0
TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAgdmFyIGl0ZW1B
Y3Rpb24gPSBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuc2V0U3R5bGVTaGVldFRleHQuYmluZChXZWJJ
bnNwZWN0b3IuY3NzTW9kZWwsIHRoaXMuX3Jlc291cmNlLnN0eWxlU2hlZXRJZCwgdGhpcy5fcmVz
b3VyY2UuY29udGVudCk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJSZXZlcnQgdG8gdGhpcyByZXZpc2lvbiIpLCBpdGVtQWN0aW9uKTsKKyAg
ICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CiAgICAgfQogfQogCg==
</data>
<flag name="review"
          id="65873"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75135</attachid>
            <date>2010-11-30 06:30:22 -0800</date>
            <delta_ts>2010-11-30 06:48:29 -0800</delta_ts>
            <desc>[PATCH] Comment addressed</desc>
            <filename>switchrev.patch</filename>
            <type>text/plain</type>
            <size>6204</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDAxMDYwN2U5Y2ZmZjMyMmQ1MWQzZjc5ODhmZTVkZWY4Y2ZlNGJjY2IKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUdWUgTm92IDMw
IDE2OjQ4OjU1IDIwMTAgKzAzMDAKCiAgICBTd2l0Y2hSZXZpc2lvbnMKCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDAzNjJmMjkuLjA5ZjZk
N2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMTEtMzAgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBFbmFibGUgc3dpdGNoaW5nIGJldHdlZW4gcmV2aXNpb25z
IG9mIHN0eWxlc2hlZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MDIyNworCisgICAgICAgIERyaXZlLWJ5IGZpeDogc3R5bGVTaGVldENoYW5nZWQo
KSBjYWxsIG5lZWRlZCBhZnRlciBhIHN0eWxlc2hlZXQgcmVwYXJzaW5nIG9uIHNldFN0eWxlU2hl
ZXRUZXh0MigpLgorCisgICAgICAgICogRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpz
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OnJlcGFyc2VTdHlsZVNoZWV0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuc2V0U3R5bGVTaGVldFRleHQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9zdHlsZVNoZWV0Q2hh
bmdlZC5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90
b3R5cGUuX3N0eWxlU2hlZXRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHls
ZVNoZWV0LnByb3RvdHlwZS5zZXRUZXh0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlUmV2aXNp
b25UcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJlc291cmNlUmV2aXNpb25UcmVlRWxlbWVudC5wcm90b3R5cGUuX29uZHJhZ3N0YXJ0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVJldmlzaW9uVHJlZUVsZW1lbnQucHJvdG90eXBl
Ll9oYW5kbGVDb250ZXh0TWVudUV2ZW50KToKKwogMjAxMC0xMS0zMCAgSGVsZGVyIENvcnJlaWEg
IDxoZWxkZXJAc2VuY2hhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRl
IENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6
ZWRTdHJpbmdzLmpzIGIvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMK
aW5kZXggNWZmZTg2MTI5YjEyMTAyMWI1MDY4OWJlYjcxZGViMTcxNWFjYjA5MS4uZjE2NDRjZGY2
NjdkZTc0OTI2NzhjYjFhMjhkYzY0MmMzYWY0NTdjZiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApk
ZWx0YSA5Mgp6Y21YPnltLSpUfTxfJmpobHY1ZVg3KlpMRTcpbHJ2Zkgpc2FXLXckajZhIWdCSyQk
WHolKmgqNU1KSztHIXkkYGIKTm0zKnU1PTM2emQwcytScThjX2ZNCgpkZWx0YSAxNApXY21jYU1r
Tkw9NDxfJmpoSHN7czgybX1CKiY8REUhCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVNoZWV0LmNwcAppbmRleCBlYzFiYjM5Li41YjY3YTI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNTg4LDYgKzU4OCw3IEBAIHZvaWQgSW5zcGVjdG9y
U3R5bGVTaGVldDo6cmVwYXJzZVN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIGZv
ciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBtX3BhZ2VTdHlsZVNoZWV0LT5sZW5ndGgoKTsgaSA8
IHNpemU7ICsraSkKICAgICAgICAgbV9wYWdlU3R5bGVTaGVldC0+cmVtb3ZlKGkpOwogICAgIG1f
cGFnZVN0eWxlU2hlZXQtPnBhcnNlU3RyaW5nKHRleHQsIG1fcGFnZVN0eWxlU2hlZXQtPnVzZVN0
cmljdFBhcnNpbmcoKSk7CisgICAgbV9wYWdlU3R5bGVTaGVldC0+c3R5bGVTaGVldENoYW5nZWQo
KTsKICAgICBtX2luc3BlY3RvclN0eWxlcy5jbGVhcigpOwogfQogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCmluZGV4IGJhZjQ0YzkuLjM1ZmY5NmEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCkBAIC0xNTUs
NiArMTU1LDExIEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgSW5zcGVjdG9yQmFja2VuZC5hZGRSdWxlMihub2RlSWQsIHNlbGVjdG9yLCBjYWxsYmFj
ay5iaW5kKHRoaXMsIHN1Y2Nlc3NDYWxsYmFjaywgZmFpbHVyZUNhbGxiYWNrLCBzZWxlY3Rvcikp
OwogICAgIH0sCiAKKyAgICBzZXRTdHlsZVNoZWV0VGV4dDogZnVuY3Rpb24oc3R5bGVTaGVldElk
LCBuZXdUZXh0KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5zZXRTdHlsZVNoZWV0
VGV4dDIoc3R5bGVTaGVldElkLCBuZXdUZXh0LCB0aGlzLl9zdHlsZVNoZWV0Q2hhbmdlZC5iaW5k
KHRoaXMsIHN0eWxlU2hlZXRJZCwgdHJ1ZSkpOworICAgIH0sCisKICAgICBfc3R5bGVTaGVldENo
YW5nZWQ6IGZ1bmN0aW9uKHN0eWxlU2hlZXRJZCwgbWFqb3JDaGFuZ2UpCiAgICAgewogICAgICAg
ICBpZiAoIW1ham9yQ2hhbmdlIHx8ICFzdHlsZVNoZWV0SWQpCkBAIC0xNjMsOCArMTY4LDEwIEBA
IFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgZnVuY3Rp
b24gY2FsbGJhY2soaHJlZiwgY29udGVudCkKICAgICAgICAgewogICAgICAgICAgICAgdmFyIHJl
c291cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlTWFuYWdlci5yZXNvdXJjZUZvclVSTChocmVm
KTsKLSAgICAgICAgICAgIGlmIChyZXNvdXJjZSAmJiByZXNvdXJjZS50eXBlID09PSBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0KQorICAgICAgICAgICAgaWYgKHJlc291cmNl
ICYmIHJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlN0eWxlc2hl
ZXQpIHsKKyAgICAgICAgICAgICAgICByZXNvdXJjZS5zdHlsZVNoZWV0SWQgPSBzdHlsZVNoZWV0
SWQ7CiAgICAgICAgICAgICAgICAgcmVzb3VyY2UuY29udGVudCA9IGNvbnRlbnQ7CisgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRTdHlsZVNoZWV0
VGV4dDIoc3R5bGVTaGVldElkLCBjYWxsYmFjayk7CiAgICAgfQpAQCAtNTM1LDE2ICs1NDIsNiBA
QCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5wcm90b3R5cGUgPSB7CiAKICAgICBzZXRUZXh0
OiBmdW5jdGlvbihuZXdUZXh0LCB1c2VyQ2FsbGJhY2spCiAgICAgewotICAgICAgICBmdW5jdGlv
biBjYWxsYmFjayhzdHlsZVNoZWV0UGF5bG9hZCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KCFzdHlsZVNoZWV0UGF5bG9hZCkKLSAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobnVsbCk7
Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobmV3IFdl
Ykluc3BlY3Rvci5DU1NTdHlsZVNoZWV0KHN0eWxlU2hlZXRQYXlsb2FkKSk7Ci0gICAgICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLl9zdHlsZVNoZWV0Q2hhbmdlZCh0aGlzLmlkLCB0
cnVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIEluc3BlY3RvckJhY2tl
bmQuc2V0U3R5bGVTaGVldFRleHQyKHRoaXMuaWQsIG5ld1RleHQsIGNhbGxiYWNrLmJpbmQodGhp
cykpOworICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuc2V0U3R5bGVTaGVldFRleHQodGhp
cy5pZCwgbmV3VGV4dCwgdXNlckNhbGxiYWNrKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXggNWM1YzVkNi4uNzQyNzNjMCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpz
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpAQCAt
MTA5NCw2ICsxMDk0LDcgQEAgV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHZhciByZXZpc2lvblJlc291cmNlID0gbmV3IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZShudWxsLCB0aGlzLl9yZXNvdXJjZS51cmwpOwogICAgICAgICByZXZpc2lv
blJlc291cmNlLnR5cGUgPSB0aGlzLl9yZXNvdXJjZS50eXBlOwogICAgICAgICByZXZpc2lvblJl
c291cmNlLmxvYWRlciA9IHRoaXMuX3Jlc291cmNlLmxvYWRlcjsKKyAgICAgICAgcmV2aXNpb25S
ZXNvdXJjZS5zdHlsZVNoZWV0SWQgPSB0aGlzLl9yZXNvdXJjZS5zdHlsZVNoZWV0SWQ7CiAgICAg
ICAgIGlmICh0aGlzLl9yZXNvdXJjZS5maW5pc2hlZCkKICAgICAgICAgICAgIHJldmlzaW9uUmVz
b3VyY2UuZmluaXNoZWQgPSB0cnVlOwogICAgICAgICBlbHNlIHsKQEAgLTEyNjEsNiArMTI2Miw3
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVJldmlzaW9uVHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgICAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGUu
b25hdHRhY2guY2FsbCh0aGlzKTsKICAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuZHJhZ2dh
YmxlID0gdHJ1ZTsKICAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiZHJhZ3N0YXJ0IiwgdGhpcy5fb25kcmFnc3RhcnQuYmluZCh0aGlzKSwgZmFsc2UpOworICAg
ICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIs
IHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSwgdHJ1ZSk7CiAgICAgfSwK
IAogICAgIG9uc2VsZWN0OiBmdW5jdGlvbigpCkBAIC0xMjc0LDYgKzEyNzYsMTcgQEAgV2ViSW5z
cGVjdG9yLlJlc291cmNlUmV2aXNpb25UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKCJ0ZXh0L3BsYWluIiwgdGhpcy5fcmVzb3VyY2Uu
Y29udGVudCk7CiAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gImNv
cHkiOwogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgX2hhbmRsZUNvbnRleHRN
ZW51RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9yZXNv
dXJjZS5zdHlsZVNoZWV0SWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGNv
bnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudSgpOworICAgICAgICB2YXIg
aXRlbUFjdGlvbiA9IFdlYkluc3BlY3Rvci5jc3NNb2RlbC5zZXRTdHlsZVNoZWV0VGV4dC5iaW5k
KFdlYkluc3BlY3Rvci5jc3NNb2RlbCwgdGhpcy5fcmVzb3VyY2Uuc3R5bGVTaGVldElkLCB0aGlz
Ll9yZXNvdXJjZS5jb250ZW50KTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlJldmVydCB0byB0aGlzIHJldmlzaW9uIiksIGl0ZW1BY3Rpb24p
OworICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsKICAgICB9CiB9CiAK
</data>
<flag name="review"
          id="65878"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75140</attachid>
            <date>2010-11-30 06:48:29 -0800</date>
            <delta_ts>2010-11-30 07:07:07 -0800</delta_ts>
            <desc>[PATCH] Reverted userCallback invocation</desc>
            <filename>switchrev.patch</filename>
            <type>text/plain</type>
            <size>6479</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDI2ODA5MzY4ODEzNWRjYTZiYjhjMGU5OTMyZmMzYWVhZGJkYTE3MGQKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUdWUgTm92IDMw
IDE2OjQ4OjU1IDIwMTAgKzAzMDAKCiAgICBTd2l0Y2hSZXZpc2lvbnMKCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDAzNjJmMjkuLjA5ZjZk
N2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMTEtMzAgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBFbmFibGUgc3dpdGNoaW5nIGJldHdlZW4gcmV2aXNpb25z
IG9mIHN0eWxlc2hlZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MDIyNworCisgICAgICAgIERyaXZlLWJ5IGZpeDogc3R5bGVTaGVldENoYW5nZWQo
KSBjYWxsIG5lZWRlZCBhZnRlciBhIHN0eWxlc2hlZXQgcmVwYXJzaW5nIG9uIHNldFN0eWxlU2hl
ZXRUZXh0MigpLgorCisgICAgICAgICogRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpz
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OnJlcGFyc2VTdHlsZVNoZWV0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuc2V0U3R5bGVTaGVldFRleHQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9zdHlsZVNoZWV0Q2hh
bmdlZC5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90
b3R5cGUuX3N0eWxlU2hlZXRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHls
ZVNoZWV0LnByb3RvdHlwZS5zZXRUZXh0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlUmV2aXNp
b25UcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJlc291cmNlUmV2aXNpb25UcmVlRWxlbWVudC5wcm90b3R5cGUuX29uZHJhZ3N0YXJ0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVJldmlzaW9uVHJlZUVsZW1lbnQucHJvdG90eXBl
Ll9oYW5kbGVDb250ZXh0TWVudUV2ZW50KToKKwogMjAxMC0xMS0zMCAgSGVsZGVyIENvcnJlaWEg
IDxoZWxkZXJAc2VuY2hhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRl
IENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6
ZWRTdHJpbmdzLmpzIGIvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMK
aW5kZXggNWZmZTg2MTI5YjEyMTAyMWI1MDY4OWJlYjcxZGViMTcxNWFjYjA5MS4uZjE2NDRjZGY2
NjdkZTc0OTI2NzhjYjFhMjhkYzY0MmMzYWY0NTdjZiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApk
ZWx0YSA5Mgp6Y21YPnltLSpUfTxfJmpobHY1ZVg3KlpMRTcpbHJ2Zkgpc2FXLXckajZhIWdCSyQk
WHolKmgqNU1KSztHIXkkYGIKTm0zKnU1PTM2emQwcytScThjX2ZNCgpkZWx0YSAxNApXY21jYU1r
Tkw9NDxfJmpoSHN7czgybX1CKiY8REUhCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVNoZWV0LmNwcAppbmRleCBlYzFiYjM5Li41YjY3YTI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNTg4LDYgKzU4OCw3IEBAIHZvaWQgSW5zcGVjdG9y
U3R5bGVTaGVldDo6cmVwYXJzZVN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIGZv
ciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBtX3BhZ2VTdHlsZVNoZWV0LT5sZW5ndGgoKTsgaSA8
IHNpemU7ICsraSkKICAgICAgICAgbV9wYWdlU3R5bGVTaGVldC0+cmVtb3ZlKGkpOwogICAgIG1f
cGFnZVN0eWxlU2hlZXQtPnBhcnNlU3RyaW5nKHRleHQsIG1fcGFnZVN0eWxlU2hlZXQtPnVzZVN0
cmljdFBhcnNpbmcoKSk7CisgICAgbV9wYWdlU3R5bGVTaGVldC0+c3R5bGVTaGVldENoYW5nZWQo
KTsKICAgICBtX2luc3BlY3RvclN0eWxlcy5jbGVhcigpOwogfQogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCmluZGV4IGJhZjQ0YzkuLmI5NGU1MTIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCkBAIC0xNTUs
MTYgKzE1NSwyOSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIEluc3BlY3RvckJhY2tlbmQuYWRkUnVsZTIobm9kZUlkLCBzZWxlY3RvciwgY2FsbGJh
Y2suYmluZCh0aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGZhaWx1cmVDYWxsYmFjaywgc2VsZWN0b3Ip
KTsKICAgICB9LAogCi0gICAgX3N0eWxlU2hlZXRDaGFuZ2VkOiBmdW5jdGlvbihzdHlsZVNoZWV0
SWQsIG1ham9yQ2hhbmdlKQorICAgIHNldFN0eWxlU2hlZXRUZXh0OiBmdW5jdGlvbihzdHlsZVNo
ZWV0SWQsIG5ld1RleHQsIHVzZXJDYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGlmICghbWFqb3JD
aGFuZ2UgfHwgIXN0eWxlU2hlZXRJZCkKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5zZXRTdHls
ZVNoZWV0VGV4dDIoc3R5bGVTaGVldElkLCBuZXdUZXh0LCB0aGlzLl9zdHlsZVNoZWV0Q2hhbmdl
ZC5iaW5kKHRoaXMsIHN0eWxlU2hlZXRJZCwgdHJ1ZSwgdXNlckNhbGxiYWNrKSk7CisgICAgfSwK
KworICAgIF9zdHlsZVNoZWV0Q2hhbmdlZDogZnVuY3Rpb24oc3R5bGVTaGVldElkLCBtYWpvckNo
YW5nZSwgdXNlckNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgaWYgKCFtYWpvckNoYW5nZSB8fCAh
c3R5bGVTaGVldElkKSB7CisgICAgICAgICAgICBpZiAodXNlckNhbGxiYWNrKQorICAgICAgICAg
ICAgICAgIHVzZXJDYWxsYmFjayhudWxsLCBudWxsKTsKICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGhyZWYsIGNvbnRlbnQpCiAgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICh1c2VyQ2FsbGJhY2spCisgICAgICAgICAgICAgICAgdXNl
ckNhbGxiYWNrKGhyZWYsIGNvbnRlbnQpOworCiAgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBX
ZWJJbnNwZWN0b3IucmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlRm9yVVJMKGhyZWYpOwotICAgICAg
ICAgICAgaWYgKHJlc291cmNlICYmIHJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5UeXBlLlN0eWxlc2hlZXQpCisgICAgICAgICAgICBpZiAocmVzb3VyY2UgJiYgcmVzb3Vy
Y2UudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU3R5bGVzaGVldCkgeworICAg
ICAgICAgICAgICAgIHJlc291cmNlLnN0eWxlU2hlZXRJZCA9IHN0eWxlU2hlZXRJZDsKICAgICAg
ICAgICAgICAgICByZXNvdXJjZS5jb250ZW50ID0gY29udGVudDsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFN0eWxlU2hlZXRUZXh0MihzdHls
ZVNoZWV0SWQsIGNhbGxiYWNrKTsKICAgICB9CkBAIC01MzUsMTYgKzU0OCw2IEBAIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZVNoZWV0LnByb3RvdHlwZSA9IHsKIAogICAgIHNldFRleHQ6IGZ1bmN0aW9u
KG5ld1RleHQsIHVzZXJDYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNr
KHN0eWxlU2hlZXRQYXlsb2FkKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXN0eWxlU2hl
ZXRQYXlsb2FkKQotICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhudWxsKTsKLSAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhuZXcgV2ViSW5zcGVjdG9y
LkNTU1N0eWxlU2hlZXQoc3R5bGVTaGVldFBheWxvYWQpKTsKLSAgICAgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IuY3NzTW9kZWwuX3N0eWxlU2hlZXRDaGFuZ2VkKHRoaXMuaWQsIHRydWUpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5zZXRTdHls
ZVNoZWV0VGV4dDIodGhpcy5pZCwgbmV3VGV4dCwgY2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAg
ICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5zZXRTdHlsZVNoZWV0VGV4dCh0aGlzLmlkLCBuZXdU
ZXh0LCB1c2VyQ2FsbGJhY2spOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwppbmRleCA1YzVjNWQ2Li43NDI3M2MwIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC0xMDk0LDYgKzEw
OTQsNyBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKICAgICAgICAgdmFyIHJldmlzaW9uUmVzb3VyY2UgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291
cmNlKG51bGwsIHRoaXMuX3Jlc291cmNlLnVybCk7CiAgICAgICAgIHJldmlzaW9uUmVzb3VyY2Uu
dHlwZSA9IHRoaXMuX3Jlc291cmNlLnR5cGU7CiAgICAgICAgIHJldmlzaW9uUmVzb3VyY2UubG9h
ZGVyID0gdGhpcy5fcmVzb3VyY2UubG9hZGVyOworICAgICAgICByZXZpc2lvblJlc291cmNlLnN0
eWxlU2hlZXRJZCA9IHRoaXMuX3Jlc291cmNlLnN0eWxlU2hlZXRJZDsKICAgICAgICAgaWYgKHRo
aXMuX3Jlc291cmNlLmZpbmlzaGVkKQogICAgICAgICAgICAgcmV2aXNpb25SZXNvdXJjZS5maW5p
c2hlZCA9IHRydWU7CiAgICAgICAgIGVsc2UgewpAQCAtMTI2MSw2ICsxMjYyLDcgQEAgV2ViSW5z
cGVjdG9yLlJlc291cmNlUmV2aXNpb25UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaC5j
YWxsKHRoaXMpOwogICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5kcmFnZ2FibGUgPSB0cnVl
OwogICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkcmFnc3Rh
cnQiLCB0aGlzLl9vbmRyYWdzdGFydC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMu
bGlzdEl0ZW1FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFu
ZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpLCB0cnVlKTsKICAgICB9LAogCiAgICAgb25z
ZWxlY3Q6IGZ1bmN0aW9uKCkKQEAgLTEyNzQsNiArMTI3NiwxNyBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VSZXZpc2lvblRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgZXZlbnQuZGF0
YVRyYW5zZmVyLnNldERhdGEoInRleHQvcGxhaW4iLCB0aGlzLl9yZXNvdXJjZS5jb250ZW50KTsK
ICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSAiY29weSI7CiAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0sCisKKyAgICBfaGFuZGxlQ29udGV4dE1lbnVFdmVudDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3Jlc291cmNlLnN0eWxl
U2hlZXRJZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgY29udGV4dE1lbnUg
PSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KCk7CisgICAgICAgIHZhciBpdGVtQWN0aW9u
ID0gV2ViSW5zcGVjdG9yLmNzc01vZGVsLnNldFN0eWxlU2hlZXRUZXh0LmJpbmQoV2ViSW5zcGVj
dG9yLmNzc01vZGVsLCB0aGlzLl9yZXNvdXJjZS5zdHlsZVNoZWV0SWQsIHRoaXMuX3Jlc291cmNl
LmNvbnRlbnQpOworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUmV2ZXJ0IHRvIHRoaXMgcmV2aXNpb24iKSwgaXRlbUFjdGlvbik7CisgICAgICAg
IGNvbnRleHRNZW51LnNob3coZXZlbnQpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75144</attachid>
            <date>2010-11-30 07:07:07 -0800</date>
            <delta_ts>2010-11-30 07:50:57 -0800</delta_ts>
            <desc>[PATCH] Removed unused method and user callback</desc>
            <filename>switchrev.patch</filename>
            <type>text/plain</type>
            <size>6190</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IGZhYmM1YjU2ODZiNjVlMzkzNzI1ODNiNjg3OTgxOWZmNzEyNzBlN2IKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUdWUgTm92IDMw
IDE2OjQ4OjU1IDIwMTAgKzAzMDAKCiAgICBTd2l0Y2hSZXZpc2lvbnMKCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDAzNjJmMjkuLjY2ZjAz
MTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMTEtMzAgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBFbmFibGUgc3dpdGNoaW5nIGJldHdlZW4gcmV2aXNpb25z
IG9mIHN0eWxlc2hlZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MDIyNworCisgICAgICAgIERyaXZlLWJ5IGZpeDogc3R5bGVTaGVldENoYW5nZWQo
KSBjYWxsIG5lZWRlZCBhZnRlciBhIHN0eWxlc2hlZXQgcmVwYXJzaW5nIG9uIHNldFN0eWxlU2hl
ZXRUZXh0MigpLgorCisgICAgICAgICogRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpz
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OnJlcGFyc2VTdHlsZVNoZWV0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuc2V0U3R5bGVTaGVldFRleHQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9zdHlsZVNoZWV0Q2hh
bmdlZC5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90
b3R5cGUuX3N0eWxlU2hlZXRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHls
ZVNoZWV0LnByb3RvdHlwZS5nZXRUZXh0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlUmV2aXNp
b25UcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJlc291cmNlUmV2aXNpb25UcmVlRWxlbWVudC5wcm90b3R5cGUuX29uZHJhZ3N0YXJ0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVJldmlzaW9uVHJlZUVsZW1lbnQucHJvdG90eXBl
Ll9oYW5kbGVDb250ZXh0TWVudUV2ZW50KToKKwogMjAxMC0xMS0zMCAgSGVsZGVyIENvcnJlaWEg
IDxoZWxkZXJAc2VuY2hhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRl
IENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6
ZWRTdHJpbmdzLmpzIGIvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMK
aW5kZXggNWZmZTg2MTI5YjEyMTAyMWI1MDY4OWJlYjcxZGViMTcxNWFjYjA5MS4uZjE2NDRjZGY2
NjdkZTc0OTI2NzhjYjFhMjhkYzY0MmMzYWY0NTdjZiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApk
ZWx0YSA5Mgp6Y21YPnltLSpUfTxfJmpobHY1ZVg3KlpMRTcpbHJ2Zkgpc2FXLXckajZhIWdCSyQk
WHolKmgqNU1KSztHIXkkYGIKTm0zKnU1PTM2emQwcytScThjX2ZNCgpkZWx0YSAxNApXY21jYU1r
Tkw9NDxfJmpoSHN7czgybX1CKiY8REUhCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVNoZWV0LmNwcAppbmRleCBlYzFiYjM5Li41YjY3YTI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNTg4LDYgKzU4OCw3IEBAIHZvaWQgSW5zcGVjdG9y
U3R5bGVTaGVldDo6cmVwYXJzZVN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIGZv
ciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBtX3BhZ2VTdHlsZVNoZWV0LT5sZW5ndGgoKTsgaSA8
IHNpemU7ICsraSkKICAgICAgICAgbV9wYWdlU3R5bGVTaGVldC0+cmVtb3ZlKGkpOwogICAgIG1f
cGFnZVN0eWxlU2hlZXQtPnBhcnNlU3RyaW5nKHRleHQsIG1fcGFnZVN0eWxlU2hlZXQtPnVzZVN0
cmljdFBhcnNpbmcoKSk7CisgICAgbV9wYWdlU3R5bGVTaGVldC0+c3R5bGVTaGVldENoYW5nZWQo
KTsKICAgICBtX2luc3BlY3RvclN0eWxlcy5jbGVhcigpOwogfQogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCmluZGV4IGJhZjQ0YzkuLmI1NGM0NTUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCkBAIC0xNTUs
NiArMTU1LDExIEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgSW5zcGVjdG9yQmFja2VuZC5hZGRSdWxlMihub2RlSWQsIHNlbGVjdG9yLCBjYWxsYmFj
ay5iaW5kKHRoaXMsIHN1Y2Nlc3NDYWxsYmFjaywgZmFpbHVyZUNhbGxiYWNrLCBzZWxlY3Rvcikp
OwogICAgIH0sCiAKKyAgICBzZXRTdHlsZVNoZWV0VGV4dDogZnVuY3Rpb24oc3R5bGVTaGVldElk
LCBuZXdUZXh0KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5zZXRTdHlsZVNoZWV0
VGV4dDIoc3R5bGVTaGVldElkLCBuZXdUZXh0LCB0aGlzLl9zdHlsZVNoZWV0Q2hhbmdlZC5iaW5k
KHRoaXMsIHN0eWxlU2hlZXRJZCwgdHJ1ZSkpOworICAgIH0sCisKICAgICBfc3R5bGVTaGVldENo
YW5nZWQ6IGZ1bmN0aW9uKHN0eWxlU2hlZXRJZCwgbWFqb3JDaGFuZ2UpCiAgICAgewogICAgICAg
ICBpZiAoIW1ham9yQ2hhbmdlIHx8ICFzdHlsZVNoZWV0SWQpCkBAIC0xNjMsOCArMTY4LDEwIEBA
IFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgZnVuY3Rp
b24gY2FsbGJhY2soaHJlZiwgY29udGVudCkKICAgICAgICAgewogICAgICAgICAgICAgdmFyIHJl
c291cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlTWFuYWdlci5yZXNvdXJjZUZvclVSTChocmVm
KTsKLSAgICAgICAgICAgIGlmIChyZXNvdXJjZSAmJiByZXNvdXJjZS50eXBlID09PSBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0KQorICAgICAgICAgICAgaWYgKHJlc291cmNl
ICYmIHJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlN0eWxlc2hl
ZXQpIHsKKyAgICAgICAgICAgICAgICByZXNvdXJjZS5zdHlsZVNoZWV0SWQgPSBzdHlsZVNoZWV0
SWQ7CiAgICAgICAgICAgICAgICAgcmVzb3VyY2UuY29udGVudCA9IGNvbnRlbnQ7CisgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRTdHlsZVNoZWV0
VGV4dDIoc3R5bGVTaGVldElkLCBjYWxsYmFjayk7CiAgICAgfQpAQCAtNTMxLDIwICs1MzgsNSBA
QCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5wcm90b3R5cGUgPSB7CiAgICAgZ2V0VGV4dDog
ZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RleHQ7Ci0gICAgfSwKLQot
ICAgIHNldFRleHQ6IGZ1bmN0aW9uKG5ld1RleHQsIHVzZXJDYWxsYmFjaykKLSAgICB7Ci0gICAg
ICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHN0eWxlU2hlZXRQYXlsb2FkKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoIXN0eWxlU2hlZXRQYXlsb2FkKQotICAgICAgICAgICAgICAgIHVzZXJDYWxs
YmFjayhudWxsKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHVzZXJDYWxs
YmFjayhuZXcgV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQoc3R5bGVTaGVldFBheWxvYWQpKTsK
LSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuX3N0eWxlU2hlZXRDaGFuZ2Vk
KHRoaXMuaWQsIHRydWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgSW5z
cGVjdG9yQmFja2VuZC5zZXRTdHlsZVNoZWV0VGV4dDIodGhpcy5pZCwgbmV3VGV4dCwgY2FsbGJh
Y2suYmluZCh0aGlzKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlc1BhbmVsLmpzCmluZGV4IDVjNWM1ZDYuLjc0MjczYzAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKQEAgLTEwOTQsNiArMTA5NCw3
IEBAIFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
ICAgICAgICB2YXIgcmV2aXNpb25SZXNvdXJjZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2Uo
bnVsbCwgdGhpcy5fcmVzb3VyY2UudXJsKTsKICAgICAgICAgcmV2aXNpb25SZXNvdXJjZS50eXBl
ID0gdGhpcy5fcmVzb3VyY2UudHlwZTsKICAgICAgICAgcmV2aXNpb25SZXNvdXJjZS5sb2FkZXIg
PSB0aGlzLl9yZXNvdXJjZS5sb2FkZXI7CisgICAgICAgIHJldmlzaW9uUmVzb3VyY2Uuc3R5bGVT
aGVldElkID0gdGhpcy5fcmVzb3VyY2Uuc3R5bGVTaGVldElkOwogICAgICAgICBpZiAodGhpcy5f
cmVzb3VyY2UuZmluaXNoZWQpCiAgICAgICAgICAgICByZXZpc2lvblJlc291cmNlLmZpbmlzaGVk
ID0gdHJ1ZTsKICAgICAgICAgZWxzZSB7CkBAIC0xMjYxLDYgKzEyNjIsNyBAQCBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VSZXZpc2lvblRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uYXR0YWNoLmNhbGwo
dGhpcyk7CiAgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmRyYWdnYWJsZSA9IHRydWU7CiAg
ICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdzdGFydCIs
IHRoaXMuX29uZHJhZ3N0YXJ0LmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5saXN0
SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9oYW5kbGVD
b250ZXh0TWVudUV2ZW50LmJpbmQodGhpcyksIHRydWUpOwogICAgIH0sCiAKICAgICBvbnNlbGVj
dDogZnVuY3Rpb24oKQpAQCAtMTI3NCw2ICsxMjc2LDE3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVJldmlzaW9uVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBldmVudC5kYXRhVHJh
bnNmZXIuc2V0RGF0YSgidGV4dC9wbGFpbiIsIHRoaXMuX3Jlc291cmNlLmNvbnRlbnQpOwogICAg
ICAgICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9ICJjb3B5IjsKICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIF9oYW5kbGVDb250ZXh0TWVudUV2ZW50OiBmdW5j
dGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fcmVzb3VyY2Uuc3R5bGVTaGVl
dElkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5l
dyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAgdmFyIGl0ZW1BY3Rpb24gPSBX
ZWJJbnNwZWN0b3IuY3NzTW9kZWwuc2V0U3R5bGVTaGVldFRleHQuYmluZChXZWJJbnNwZWN0b3Iu
Y3NzTW9kZWwsIHRoaXMuX3Jlc291cmNlLnN0eWxlU2hlZXRJZCwgdGhpcy5fcmVzb3VyY2UuY29u
dGVudCk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJSZXZlcnQgdG8gdGhpcyByZXZpc2lvbiIpLCBpdGVtQWN0aW9uKTsKKyAgICAgICAgY29u
dGV4dE1lbnUuc2hvdyhldmVudCk7CiAgICAgfQogfQogCg==
</data>
<flag name="review"
          id="65890"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75147</attachid>
            <date>2010-11-30 07:52:33 -0800</date>
            <delta_ts>2010-11-30 07:56:56 -0800</delta_ts>
            <desc>[PATCH] My version of the patch.</desc>
            <filename>revert_history</filename>
            <type>text/plain</type>
            <size>15477</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIv
V2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggMDA2ZDY5Ni4u
ZDdkZWUzOSAxMDA2NDQKQmluYXJ5IGZpbGVzIGEvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2Fs
aXplZFN0cmluZ3MuanMgYW5kIGIvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmlu
Z3MuanMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRs
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCBlODA4NmE2Li44ZTQ4YmZk
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTIxNCw3ICsyMTQsNyBAQCBtb2R1bGUgY29y
ZSB7CiAgICAgICAgIFtoYW5kbGVyPUNTU10gdm9pZCBnZXRBbGxTdHlsZXMyKG91dCBBcnJheSBz
dHlsZVNoZWV0SWRzKTsKICAgICAgICAgW2hhbmRsZXI9Q1NTXSB2b2lkIGdldFN0eWxlU2hlZXQy
KGluIFN0cmluZyBzdHlsZVNoZWV0SWQsIG91dCBWYWx1ZSBzdHlsZVNoZWV0KTsKICAgICAgICAg
W2hhbmRsZXI9Q1NTXSB2b2lkIGdldFN0eWxlU2hlZXRUZXh0MihpbiBTdHJpbmcgc3R5bGVTaGVl
dElkLCBvdXQgU3RyaW5nIHVybCwgb3V0IFN0cmluZyB0ZXh0KTsKLSAgICAgICAgW2hhbmRsZXI9
Q1NTXSB2b2lkIHNldFN0eWxlU2hlZXRUZXh0MihpbiBTdHJpbmcgc3R5bGVTaGVldElkLCBpbiBT
dHJpbmcgdGV4dCk7CisgICAgICAgIFtoYW5kbGVyPUNTU10gdm9pZCBzZXRTdHlsZVNoZWV0VGV4
dDIoaW4gU3RyaW5nIHN0eWxlU2hlZXRJZCwgaW4gU3RyaW5nIHRleHQsIG91dCBib29sZWFuIHN1
Y2Nlc3MpOwogICAgICAgICBbaGFuZGxlcj1DU1NdIHZvaWQgc2V0UHJvcGVydHlUZXh0MihpbiBP
YmplY3Qgc3R5bGVJZCwgaW4gbG9uZyBwcm9wZXJ0eUluZGV4LCBpbiBTdHJpbmcgdGV4dCwgaW4g
Ym9vbGVhbiBvdmVyd3JpdGUsIG91dCBWYWx1ZSBzdHlsZSk7CiAgICAgICAgIFtoYW5kbGVyPUNT
U10gdm9pZCB0b2dnbGVQcm9wZXJ0eTIoaW4gT2JqZWN0IHN0eWxlSWQsIGluIGxvbmcgcHJvcGVy
dHlJbmRleCwgaW4gYm9vbGVhbiBkaXNhYmxlLCBvdXQgVmFsdWUgc3R5bGUpOwogICAgICAgICBb
aGFuZGxlcj1DU1NdIHZvaWQgc2V0UnVsZVNlbGVjdG9yMihpbiBPYmplY3QgcnVsZUlkLCBpbiBT
dHJpbmcgc2VsZWN0b3IsIG91dCBWYWx1ZSBydWxlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmNwcAppbmRleCBmZDFkZWI1Li4zMWQ5NTFhIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0yODUsMTQgKzI4NSwxNiBAQCB2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpnZXRTdHlsZVNoZWV0VGV4dDIoY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQs
IFN0cmluZyogdQogICAgIGluc3BlY3RvclN0eWxlU2hlZXQtPnRleHQocmVzdWx0KTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRleHQyKGNvbnN0IFN0cmluZyYg
c3R5bGVTaGVldElkLCBjb25zdCBTdHJpbmcmIHRleHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50
OjpzZXRTdHlsZVNoZWV0VGV4dDIoY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNvbnN0IFN0
cmluZyYgdGV4dCwgYm9vbCogc3VjY2VzcykKIHsKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBp
bnNwZWN0b3JTdHlsZVNoZWV0ID0gc3R5bGVTaGVldEZvcklkKHN0eWxlU2hlZXRJZCk7Ci0gICAg
aWYgKCFpbnNwZWN0b3JTdHlsZVNoZWV0KQorICAgIGlmICghaW5zcGVjdG9yU3R5bGVTaGVldCkg
eworICAgICAgICAqc3VjY2VzcyA9IGZhbHNlOwogICAgICAgICByZXR1cm47CisgICAgfQogCi0g
ICAgYm9vbCBzdWNjZXNzID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+c2V0VGV4dCh0ZXh0KTsKLSAg
ICBpZiAoc3VjY2VzcykKKyAgICAqc3VjY2VzcyA9IGluc3BlY3RvclN0eWxlU2hlZXQtPnNldFRl
eHQodGV4dCk7CisgICAgaWYgKCpzdWNjZXNzKQogICAgICAgICBpbnNwZWN0b3JTdHlsZVNoZWV0
LT5yZXBhcnNlU3R5bGVTaGVldCh0ZXh0KTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmgKaW5kZXggNmU4ZjI0NC4uMmQyZWZiNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEFsbFN0
eWxlczIoUmVmUHRyPEluc3BlY3RvckFycmF5Piogc3R5bGVzKTsKICAgICB2b2lkIGdldFN0eWxl
U2hlZXQyKGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
KiByZXN1bHQpOwogICAgIHZvaWQgZ2V0U3R5bGVTaGVldFRleHQyKGNvbnN0IFN0cmluZyYgc3R5
bGVTaGVldElkLCBTdHJpbmcqIHVybCwgU3RyaW5nKiByZXN1bHQpOwotICAgIHZvaWQgc2V0U3R5
bGVTaGVldFRleHQyKGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBjb25zdCBTdHJpbmcmIHRl
eHQpOworICAgIHZvaWQgc2V0U3R5bGVTaGVldFRleHQyKGNvbnN0IFN0cmluZyYgc3R5bGVTaGVl
dElkLCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wqIHN1Y2Nlc3MpOwogICAgIHZvaWQgc2V0UHJv
cGVydHlUZXh0Mihjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgbG9uZyBw
cm9wZXJ0eUluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgb3ZlcndyaXRlLCBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwogICAgIHZvaWQgdG9nZ2xlUHJvcGVydHkyKGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBsb25nIHByb3BlcnR5SW5kZXgsIGJv
b2wgZGlzYWJsZSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKICAgICB2b2lkIHNl
dFJ1bGVTZWxlY3RvcjIoY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJ1bGVJZCwgY29u
c3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKaW5kZXggYmFmNDRj
OS4uMjNlZDdhOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0
eWxlTW9kZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9k
ZWwuanMKQEAgLTE2NCw5ICsxNjQsMTggQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJv
dG90eXBlID0gewogICAgICAgICB7CiAgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlRm9yVVJMKGhyZWYpOwogICAgICAgICAgICAg
aWYgKHJlc291cmNlICYmIHJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5U
eXBlLlN0eWxlc2hlZXQpCi0gICAgICAgICAgICAgICAgcmVzb3VyY2UuY29udGVudCA9IGNvbnRl
bnQ7CisgICAgICAgICAgICAgICAgcmVzb3VyY2Uuc2V0Q29udGVudChjb250ZW50LCB0aGlzLl9v
blJldmVydC5iaW5kKHRoaXMsIHN0eWxlU2hlZXRJZCkpOwogICAgICAgICB9Ci0gICAgICAgIElu
c3BlY3RvckJhY2tlbmQuZ2V0U3R5bGVTaGVldFRleHQyKHN0eWxlU2hlZXRJZCwgY2FsbGJhY2sp
OworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFN0eWxlU2hlZXRUZXh0MihzdHlsZVNoZWV0
SWQsIGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgIH0sCisKKyAgICBfb25SZXZlcnQ6IGZ1bmN0
aW9uKHN0eWxlU2hlZXRJZCwgY29udGVudFRvUmV2ZXJ0VG8pCisgICAgeworICAgICAgICBmdW5j
dGlvbiBjYWxsYmFjayhzdWNjZXNzKQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl9zdHls
ZVNoZWV0Q2hhbmdlZChzdHlsZVNoZWV0SWQsIHRydWUpOworICAgICAgICB9CisgICAgICAgIElu
c3BlY3RvckJhY2tlbmQuc2V0U3R5bGVTaGVldFRleHQyKHN0eWxlU2hlZXRJZCwgY29udGVudFRv
UmV2ZXJ0VG8sIGNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCmluZGV4IDQyMTdjZDYuLjljZDM4YmIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcworKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKQEAgLTYyNSwyMiArNjI1LDY5IEBAIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9j
b250ZW50OwogICAgIH0sCiAKLSAgICBzZXQgY29udGVudChjb250ZW50KQorICAgIGdldCBjb250
ZW50VGltZXN0YW1wKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50VGltZXN0
YW1wOworICAgIH0sCisKKyAgICBzZXRJbml0aWFsQ29udGVudDogZnVuY3Rpb24oY29udGVudCkK
ICAgICB7Ci0gICAgICAgIHZhciBkYXRhID0geyBvbGRDb250ZW50OiB0aGlzLl9jb250ZW50LCBv
bGRDb250ZW50VGltZXN0YW1wOiB0aGlzLl9jb250ZW50VGltZXN0YW1wIH07CiAgICAgICAgIHRo
aXMuX2NvbnRlbnQgPSBjb250ZW50OwotICAgICAgICB0aGlzLl9jb250ZW50VGltZXN0YW1wID0g
bmV3IERhdGUoKTsKKyAgICB9LAorCisgICAgaXNMb2NhbGx5TW9kaWZpZWQ6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIHJldHVybiAhIXRoaXMuX2Jhc2VSZXZpc2lvbjsKKyAgICB9LAorCisg
ICAgc2V0Q29udGVudDogZnVuY3Rpb24obmV3Q29udGVudCwgb25SZXZlcnQpCisgICAgeworICAg
ICAgICB2YXIgcmV2aXNpb25SZXNvdXJjZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2UobnVs
bCwgdGhpcy51cmwpOworICAgICAgICByZXZpc2lvblJlc291cmNlLnR5cGUgPSB0aGlzLnR5cGU7
CisgICAgICAgIHJldmlzaW9uUmVzb3VyY2UubG9hZGVyID0gdGhpcy5sb2FkZXI7CisgICAgICAg
IHJldmlzaW9uUmVzb3VyY2UudGltZXN0YW1wID0gdGhpcy50aW1lc3RhbXA7CisgICAgICAgIHJl
dmlzaW9uUmVzb3VyY2UuX2NvbnRlbnQgPSB0aGlzLl9jb250ZW50OworICAgICAgICByZXZpc2lv
blJlc291cmNlLl9hY3R1YWxSZXNvdXJjZSA9IHRoaXM7CisgICAgICAgIHJldmlzaW9uUmVzb3Vy
Y2UuX2ZpcmVPblJldmVydCA9IG9uUmV2ZXJ0OworCisgICAgICAgIGlmICh0aGlzLmZpbmlzaGVk
KQorICAgICAgICAgICAgcmV2aXNpb25SZXNvdXJjZS5maW5pc2hlZCA9IHRydWU7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgZnVuY3Rpb24gZmluaXNoZWQoKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZmluaXNoZWQiLCBmaW5p
c2hlZCk7CisgICAgICAgICAgICAgICAgcmV2aXNpb25SZXNvdXJjZS5maW5pc2hlZCA9IHRydWU7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImZpbmlz
aGVkIiwgZmluaXNoZWQuYmluZCh0aGlzKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRo
aXMuX2Jhc2VSZXZpc2lvbikKKyAgICAgICAgICAgIHRoaXMuX2Jhc2VSZXZpc2lvbiA9IHJldmlz
aW9uUmVzb3VyY2U7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldmlzaW9uUmVzb3VyY2Uu
X2Jhc2VSZXZpc2lvbiA9IHRoaXMuX2Jhc2VSZXZpc2lvbjsKKworICAgICAgICB2YXIgZGF0YSA9
IHsgcmV2aXNpb246IHJldmlzaW9uUmVzb3VyY2UgfTsKKyAgICAgICAgdGhpcy5fY29udGVudCA9
IG5ld0NvbnRlbnQ7CisgICAgICAgIHRoaXMudGltZXN0YW1wID0gbmV3IERhdGUoKTsKICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImNvbnRlbnQtY2hhbmdlZCIsIGRhdGEp
OwogICAgIH0sCiAKLSAgICBnZXQgY29udGVudFRpbWVzdGFtcCgpCisgICAgcmV2ZXJ0VG9UaGlz
OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFRpbWVzdGFt
cDsKKyAgICAgICAgaWYgKCF0aGlzLl9hY3R1YWxSZXNvdXJjZSB8fCAhdGhpcy5fZmlyZU9uUmV2
ZXJ0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGNv
bnRlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChjb250ZW50KQorICAgICAgICAgICAg
ICAgIHRoaXMuX2ZpcmVPblJldmVydChjb250ZW50KTsKKyAgICAgICAgfQorICAgICAgICB0aGlz
LnJlcXVlc3RDb250ZW50KGNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0sCiAKLSAgICBzZXRJ
bml0aWFsQ29udGVudDogZnVuY3Rpb24oY29udGVudCkKKyAgICBnZXQgYmFzZVJldmlzaW9uKCkK
ICAgICB7Ci0gICAgICAgIHRoaXMuX2NvbnRlbnQgPSBjb250ZW50OworICAgICAgICByZXR1cm4g
dGhpcy5fYmFzZVJldmlzaW9uOwogICAgIH0sCiAKICAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rp
b24oY2FsbGJhY2spCkBAIC02ODEsNyArNzI4LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9jb250ZW50UmVxdWVzdGVkOwog
ICAgICAgICB9CiAgICAgICAgIFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucmVxdWVzdENv
bnRlbnQodGhpcywgdGhpcy5fY29udGVudEVuY29kZWQsIG9uUmVzb3VyY2VDb250ZW50LmJpbmQo
dGhpcykpOwotICAgIH0KKyAgICB9ICAgIAogfQogCiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCmluZGV4IDVjNWM1ZDYu
LmQ2ZjcxNzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZXNQYW5lbC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFu
ZWwuanMKQEAgLTM2OSwxMyArMzY5LDEzIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHZhciB2aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlTWFu
YWdlci5yZXNvdXJjZVZpZXdGb3JSZXNvdXJjZShyZXNvdXJjZSk7CiAKICAgICAgICAgLy8gQ29u
c2lkZXIgcmVuZGVyaW5nIGRpZmYgbWFya3VwIGhlcmUuCi0gICAgICAgIGlmIChyZXNvdXJjZS5f
YmFzZVJldmlzaW9uICYmIHJlc291cmNlLmNvbnRlbnQgJiYgdmlldyBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5Tb3VyY2VWaWV3KSB7CisgICAgICAgIGlmIChyZXNvdXJjZS5iYXNlUmV2aXNpb24g
JiYgdmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3KSB7CiAgICAgICAgICAg
ICBmdW5jdGlvbiBjYWxsYmFjayhiYXNlQ29udGVudCkKICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICBpZiAoYmFzZUNvbnRlbnQpCiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5
RGlmZk1hcmt1cCh2aWV3LCBiYXNlQ29udGVudCwgcmVzb3VyY2UuY29udGVudCk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICByZXNvdXJjZS5fYmFzZVJldmlzaW9uLnJlcXVlc3RDb250ZW50
KGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICAgICAgcmVzb3VyY2UuYmFzZVJldmlzaW9u
LnJlcXVlc3RDb250ZW50KGNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgICAgICB9CiAgICAgICAg
IHRoaXMuX2lubmVyU2hvd1ZpZXcodmlldyk7CiAgICAgfSwKQEAgLTEwOTEsMjggKzEwOTEsNyBA
QCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAog
ICAgIF9jb250ZW50Q2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIg
cmV2aXNpb25SZXNvdXJjZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2UobnVsbCwgdGhpcy5f
cmVzb3VyY2UudXJsKTsKLSAgICAgICAgcmV2aXNpb25SZXNvdXJjZS50eXBlID0gdGhpcy5fcmVz
b3VyY2UudHlwZTsKLSAgICAgICAgcmV2aXNpb25SZXNvdXJjZS5sb2FkZXIgPSB0aGlzLl9yZXNv
dXJjZS5sb2FkZXI7Ci0gICAgICAgIGlmICh0aGlzLl9yZXNvdXJjZS5maW5pc2hlZCkKLSAgICAg
ICAgICAgIHJldmlzaW9uUmVzb3VyY2UuZmluaXNoZWQgPSB0cnVlOwotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIGZ1bmN0aW9uIGZpbmlzaGVkKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICByZXZpc2lvblJlc291cmNlLmZpbmlzaGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoImZpbmlzaGVkIiwg
ZmluaXNoZWQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF0aGlzLl9yZXNvdXJjZS5fYmFz
ZVJldmlzaW9uKQotICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2UuX2Jhc2VSZXZpc2lvbiA9IHJl
dmlzaW9uUmVzb3VyY2U7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldmlzaW9uUmVzb3Vy
Y2UuX2Jhc2VSZXZpc2lvbiA9IHRoaXMuX3Jlc291cmNlLl9iYXNlUmV2aXNpb247Ci0KLSAgICAg
ICAgaWYgKGV2ZW50LmRhdGEub2xkQ29udGVudCkKLSAgICAgICAgICAgIHJldmlzaW9uUmVzb3Vy
Y2Uuc2V0SW5pdGlhbENvbnRlbnQoZXZlbnQuZGF0YS5vbGRDb250ZW50KTsKLSAgICAgICAgdGhp
cy5pbnNlcnRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlUmV2aXNpb25UcmVlRWxlbWVu
dCh0aGlzLl9zdG9yYWdlUGFuZWwsIHJldmlzaW9uUmVzb3VyY2UsIGV2ZW50LmRhdGEub2xkQ29u
dGVudFRpbWVzdGFtcCksIDApOwotCisgICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGQobmV3IFdlYklu
c3BlY3Rvci5SZXNvdXJjZVJldmlzaW9uVHJlZUVsZW1lbnQodGhpcy5fc3RvcmFnZVBhbmVsLCBl
dmVudC5kYXRhLnJldmlzaW9uKSwgMCk7CiAgICAgICAgIHZhciBvbGRWaWV3ID0gV2ViSW5zcGVj
dG9yLlJlc291cmNlTWFuYWdlci5leGlzdGluZ1Jlc291cmNlVmlld0ZvclJlc291cmNlKHRoaXMu
X3Jlc291cmNlKTsKICAgICAgICAgaWYgKG9sZFZpZXcpIHsKICAgICAgICAgICAgIHZhciBuZXdW
aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5yZWNyZWF0ZVJlc291cmNlVmlldyh0
aGlzLl9yZXNvdXJjZSk7CkBAIC0xMjQ2LDEzICsxMjI1LDEzIEBAIFdlYkluc3BlY3Rvci5BcHBs
aWNhdGlvbkNhY2hlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogfQogV2ViSW5zcGVjdG9yLkFw
cGxpY2F0aW9uQ2FjaGVUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVj
dG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlOwogCi1XZWJJbnNwZWN0b3IuUmVz
b3VyY2VSZXZpc2lvblRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc3RvcmFnZVBhbmVsLCByZXNvdXJj
ZSwgdGltZXN0YW1wKQorV2ViSW5zcGVjdG9yLlJlc291cmNlUmV2aXNpb25UcmVlRWxlbWVudCA9
IGZ1bmN0aW9uKHN0b3JhZ2VQYW5lbCwgcmV2aXNpb24pCiB7Ci0gICAgdmFyIHRpdGxlID0gdGlt
ZXN0YW1wID8gdGltZXN0YW1wLnRvTG9jYWxlVGltZVN0cmluZygpIDogIihvcmlnaW5hbCkiOwot
ICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywgc3RvcmFn
ZVBhbmVsLCBudWxsLCB0aXRsZSwgInJlc291cmNlLXNpZGViYXItdHJlZS1pdGVtIHJlc291cmNl
cy1jYXRlZ29yeS0iICsgcmVzb3VyY2UuY2F0ZWdvcnkubmFtZSk7Ci0gICAgaWYgKHRpbWVzdGFt
cCkKLSAgICAgICAgdGhpcy50b29sdGlwID0gdGltZXN0YW1wLnRvTG9jYWxlU3RyaW5nKCk7Ci0g
ICAgdGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZTsKKyAgICB2YXIgdGl0bGUgPSByZXZpc2lvbi50
aW1lc3RhbXAgPyByZXZpc2lvbi50aW1lc3RhbXAudG9Mb2NhbGVUaW1lU3RyaW5nKCkgOiAiKG9y
aWdpbmFsKSI7CisgICAgV2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQuY2FsbCh0
aGlzLCBzdG9yYWdlUGFuZWwsIG51bGwsIHRpdGxlLCAicmVzb3VyY2Utc2lkZWJhci10cmVlLWl0
ZW0gcmVzb3VyY2VzLWNhdGVnb3J5LSIgKyByZXZpc2lvbi5jYXRlZ29yeS5uYW1lKTsKKyAgICBp
ZiAocmV2aXNpb24udGltZXN0YW1wKQorICAgICAgICB0aGlzLnRvb2x0aXAgPSByZXZpc2lvbi50
aW1lc3RhbXAudG9Mb2NhbGVTdHJpbmcoKTsKKyAgICB0aGlzLl9yZXNvdXJjZSA9IHJldmlzaW9u
OwogfQogCiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VSZXZpc2lvblRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKQEAgLTEyNjEsNiArMTI0MCw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVJldmlzaW9u
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3Jh
Z2VUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2guY2FsbCh0aGlzKTsKICAgICAgICAgdGhp
cy5saXN0SXRlbUVsZW1lbnQuZHJhZ2dhYmxlID0gdHJ1ZTsKICAgICAgICAgdGhpcy5saXN0SXRl
bUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IiwgdGhpcy5fb25kcmFnc3RhcnQu
YmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmlu
ZCh0aGlzKSwgdHJ1ZSk7CiAgICAgfSwKIAogICAgIG9uc2VsZWN0OiBmdW5jdGlvbigpCkBAIC0x
Mjc0LDYgKzEyNTQsMTMgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlUmV2aXNpb25UcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKCJ0ZXh0
L3BsYWluIiwgdGhpcy5fcmVzb3VyY2UuY29udGVudCk7CiAgICAgICAgIGV2ZW50LmRhdGFUcmFu
c2Zlci5lZmZlY3RBbGxvd2VkID0gImNvcHkiOwogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
LAorCisgICAgX2hhbmRsZUNvbnRleHRNZW51RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsK
KyAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudSgp
OworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
UmV2ZXJ0IHRvIHRoaXMgcmV2aXNpb24iKSwgdGhpcy5fcmVzb3VyY2UucmV2ZXJ0VG9UaGlzLmJp
bmQodGhpcy5fcmVzb3VyY2UpKTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0
c1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpp
bmRleCAwYTNjN2E5Li42MWEyZjI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0c1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
Y3JpcHRzUGFuZWwuanMKQEAgLTMwNiw3ICszMDYsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIFByZWZlcmVuY2VzLmNhbkVkaXRTY3Jp
cHRTb3VyY2U7CiAgICAgfSwKIAotICAgIGVkaXRTY3JpcHRTb3VyY2U6IGZ1bmN0aW9uKHNvdXJj
ZUlELCBuZXdDb250ZW50LCBsaW5lLCBsaW5lc0NvdW50VG9TaGlmdCwgY29tbWl0RWRpdGluZ0Nh
bGxiYWNrLCBjYW5jZWxFZGl0aW5nQ2FsbGJhY2spCisgICAgZWRpdFNjcmlwdFNvdXJjZTogZnVu
Y3Rpb24oZWRpdERhdGEsIGNvbW1pdEVkaXRpbmdDYWxsYmFjaywgY2FuY2VsRWRpdGluZ0NhbGxi
YWNrKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmNhbkVkaXRTY3JpcHRzKCkpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0zMjMsMTggKzMyMywxOSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBpZiAoY2FsbEZyYW1lcyAmJiBjYWxs
RnJhbWVzLmxlbmd0aCkKICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWJ1Z2dlclBhdXNlZChj
YWxsRnJhbWVzKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgY2FuY2Vs
RWRpdGluZ0NhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgaWYgKGNhbmNlbEVkaXRpbmdDYWxs
YmFjaykKKyAgICAgICAgICAgICAgICAgICAgY2FuY2VsRWRpdGluZ0NhbGxiYWNrKCk7CiAgICAg
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmxvZyhuZXdCb2R5T3JFcnJvck1lc3NhZ2UsIFdlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuV2FybmluZyk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJyZWFrcG9pbnRzLmxlbmd0aDsg
KytpKSB7CiAgICAgICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBicmVha3BvaW50c1tpXTsK
ICAgICAgICAgICAgICAgICB2YXIgbmV3TGluZSA9IGJyZWFrcG9pbnQubGluZTsKLSAgICAgICAg
ICAgICAgICBpZiAoc3VjY2VzcyAmJiBicmVha3BvaW50LmxpbmUgPj0gbGluZSkKLSAgICAgICAg
ICAgICAgICAgICAgbmV3TGluZSArPSBsaW5lc0NvdW50VG9TaGlmdDsKLSAgICAgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuYnJlYWtwb2ludE1hbmFnZXIuc2V0QnJlYWtwb2ludChzb3VyY2VJRCwg
YnJlYWtwb2ludC51cmwsIG5ld0xpbmUsIGJyZWFrcG9pbnQuZW5hYmxlZCwgYnJlYWtwb2ludC5j
b25kaXRpb24pOworICAgICAgICAgICAgICAgIGlmIChzdWNjZXNzICYmIGJyZWFrcG9pbnQubGlu
ZSA+PSBlZGl0RGF0YS5saW5lKQorICAgICAgICAgICAgICAgICAgICBuZXdMaW5lICs9IGVkaXRE
YXRhLmxpbmVzQ291bnRUb1NoaWZ0OworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5icmVh
a3BvaW50TWFuYWdlci5zZXRCcmVha3BvaW50KGVkaXREYXRhLnNvdXJjZUlELCBicmVha3BvaW50
LnVybCwgbmV3TGluZSwgYnJlYWtwb2ludC5lbmFibGVkLCBicmVha3BvaW50LmNvbmRpdGlvbik7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH07Ci0gICAgICAgIEluc3BlY3RvckJhY2tlbmQuZWRp
dFNjcmlwdFNvdXJjZShzb3VyY2VJRCwgbmV3Q29udGVudCwgbXljYWxsYmFjay5iaW5kKHRoaXMp
KTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5lZGl0U2NyaXB0U291cmNlKGVkaXREYXRhLnNv
dXJjZUlELCBlZGl0RGF0YS5jb250ZW50LCBteWNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0s
CiAKICAgICBzZWxlY3RlZENhbGxGcmFtZUlkOiBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Tb3VyY2VWaWV3LmpzCmluZGV4IGU3NjRjZjguLjk2MTYzMjEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VWaWV3LmpzCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VWaWV3LmpzCkBAIC0xNDcsMTQgKzE0NywyOCBA
QCBXZWJJbnNwZWN0b3IuU291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAg
bGluZXMucHVzaCh0ZXh0TW9kZWwubGluZShpKSk7CiAgICAgICAgIH0KIAotICAgICAgICB2YXIg
bGluZXNDb3VudFRvU2hpZnQgPSBuZXdDb250ZW50LnNwbGl0KCJcbiIpLmxlbmd0aCAtIDE7Ci0g
ICAgICAgIHZhciBuZXdDb250ZW50ID0gbGluZXMuam9pbigiXG4iKTsKLSAgICAgICAgV2ViSW5z
cGVjdG9yLnBhbmVscy5zY3JpcHRzLmVkaXRTY3JpcHRTb3VyY2UodGhpcy5fc291cmNlSURGb3JM
aW5lKGxpbmUpLCBuZXdDb250ZW50LCBsaW5lLCBsaW5lc0NvdW50VG9TaGlmdCwgdGhpcy5fZWRp
dExpbmVDb21wbGV0ZS5iaW5kKHRoaXMsIG5ld0NvbnRlbnQpLCBjYW5jZWxFZGl0aW5nQ2FsbGJh
Y2spOworICAgICAgICB2YXIgZWRpdERhdGEgPSB7fTsKKyAgICAgICAgZWRpdERhdGEuc291cmNl
SUQgPSB0aGlzLl9zb3VyY2VJREZvckxpbmUobGluZSk7CisgICAgICAgIGVkaXREYXRhLmNvbnRl
bnQgPSBsaW5lcy5qb2luKCJcbiIpOworICAgICAgICBlZGl0RGF0YS5saW5lID0gbGluZTsKKyAg
ICAgICAgZWRpdERhdGEubGluZXNDb3VudFRvU2hpZnQgPSBuZXdDb250ZW50LnNwbGl0KCJcbiIp
Lmxlbmd0aCAtIDE7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLmVkaXRT
Y3JpcHRTb3VyY2UoZWRpdERhdGEsIHRoaXMuX2VkaXRMaW5lQ29tcGxldGUuYmluZCh0aGlzLCBl
ZGl0RGF0YSksIGNhbmNlbEVkaXRpbmdDYWxsYmFjayk7CisgICAgfSwKKworICAgIF9lZGl0TGlu
ZUNvbXBsZXRlOiBmdW5jdGlvbihlZGl0RGF0YSwgbmV3Q29udGVudCkKKyAgICB7CisgICAgICAg
IHRoaXMucmVzb3VyY2Uuc2V0Q29udGVudChuZXdDb250ZW50LCB0aGlzLl9yZXZlcnRFZGl0TGlu
ZS5iaW5kKHRoaXMsIGVkaXREYXRhKSk7CiAgICAgfSwKIAotICAgIF9lZGl0TGluZUNvbXBsZXRl
OiBmdW5jdGlvbihuZXdDb250ZW50KQorICAgIF9yZXZlcnRFZGl0TGluZTogZnVuY3Rpb24oZWRp
dERhdGEsIGNvbnRlbnRUb1JldmVydFRvKQogICAgIHsKLSAgICAgICAgdGhpcy5yZXNvdXJjZS5j
b250ZW50ID0gbmV3Q29udGVudDsKKyAgICAgICAgdmFyIG5ld0VkaXREYXRhID0ge307CisgICAg
ICAgIG5ld0VkaXREYXRhLnNvdXJjZUlEID0gZWRpdERhdGEuc291cmNlSUQ7CisgICAgICAgIG5l
d0VkaXREYXRhLmNvbnRlbnQgPSBlZGl0RGF0YS5jb250ZW50OworICAgICAgICBuZXdFZGl0RGF0
YS5saW5lID0gZWRpdERhdGEubGluZTsKKyAgICAgICAgbmV3RWRpdERhdGEubGluZXNDb3VudFRv
U2hpZnQgPSAtZWRpdERhdGEubGluZXNDb3VudFRvU2hpZnQ7CisgICAgICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMuc2NyaXB0cy5lZGl0U2NyaXB0U291cmNlKG5ld0VkaXREYXRhLCB0aGlzLl9lZGl0
TGluZUNvbXBsZXRlLmJpbmQodGhpcywgbmV3RWRpdERhdGEpKTsKICAgICB9LAogCiAgICAgX3Nv
dXJjZUlERm9yTGluZTogZnVuY3Rpb24obGluZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>