<?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>59789</bug_id>
          
          <creation_ts>2011-04-29 02:34:56 -0700</creation_ts>
          <short_desc>Web Inspector: CSS editing breaks when entering &quot;color: rgb(1&quot;</short_desc>
          <delta_ts>2011-04-29 08:35:31 -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="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</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>395185</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-04-29 02:34:56 -0700</bug_when>
    <thetext>It throws error in the devtools console and does not work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395187</commentid>
    <comment_count>1</comment_count>
      <attachid>91656</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-04-29 02:51:22 -0700</bug_when>
    <thetext>Created attachment 91656
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395192</commentid>
    <comment_count>2</comment_count>
      <attachid>91656</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-04-29 03:11:43 -0700</bug_when>
    <thetext>Comment on attachment 91656
Patch

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

&gt; LayoutTests/inspector/styles/styles-add-invalid-property.html:31
&gt; +        treeElement.valueElement.textContent = &quot;rgb(&quot;;

This should be &quot;rgb(1&quot;, as per the failing case in the reported issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395255</commentid>
    <comment_count>3</comment_count>
      <attachid>91677</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-04-29 07:25:26 -0700</bug_when>
    <thetext>Created attachment 91677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395260</commentid>
    <comment_count>4</comment_count>
      <attachid>91677</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-04-29 07:44:00 -0700</bug_when>
    <thetext>Comment on attachment 91677
Patch

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

These are the primary issues I noticed.

&gt; LayoutTests/inspector/styles/styles-commit-editing.html:25
&gt; +        treeElement.valueElement.textContent = &quot;rgb(1&quot;;

doesn&apos;t the following sequence work?
treeElement.valueElement.textContent = &quot;rgb(&quot;;
treeElement.valueElement.dispatchEvent(InspectorTest.createKeyEvent(&quot;U+0031&quot;));

This could save us a fortune (and a ForTest method).

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1644
&gt; +            } else if (event.keyCode === WebInspector.KeyboardShortcut.Keys.Esc.code || event.keyIdentifier === &quot;Escape&quot;)

A better approach is to fix this to check a single event.keyIdentifier === &quot;U+001B&quot;. This way we won&apos;t have to add two hacks.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1941
&gt; +        return typeof this.originalPropertyText === &quot;string&quot;;

If you don&apos;t use any other type than &quot;string&quot;, why is the original condition changed?

&gt; Source/WebCore/inspector/front-end/inspector.js:1555
&gt; +        

a new blank line might not be necessary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395269</commentid>
    <comment_count>5</comment_count>
      <attachid>91684</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-04-29 08:20:00 -0700</bug_when>
    <thetext>Created attachment 91684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395270</commentid>
    <comment_count>6</comment_count>
      <attachid>91685</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-04-29 08:23:53 -0700</bug_when>
    <thetext>Created attachment 91685
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395271</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-04-29 08:25:31 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 91677 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=91677&amp;action=review
&gt; 
&gt; These are the primary issues I noticed.
&gt; 
&gt; &gt; LayoutTests/inspector/styles/styles-commit-editing.html:25
&gt; &gt; +        treeElement.valueElement.textContent = &quot;rgb(1&quot;;
&gt; 
&gt; doesn&apos;t the following sequence work?
&gt; treeElement.valueElement.textContent = &quot;rgb(&quot;;
&gt; treeElement.valueElement.dispatchEvent(InspectorTest.createKeyEvent(&quot;U+0031&quot;));
&gt; 

I need this to be processed synchronously, while key event handler only schedules a timer.

&gt; This could save us a fortune (and a ForTest method).
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1644
&gt; &gt; +            } else if (event.keyCode === WebInspector.KeyboardShortcut.Keys.Esc.code || event.keyIdentifier === &quot;Escape&quot;)
&gt; 
&gt; A better approach is to fix this to check a single event.keyIdentifier === &quot;U+001B&quot;. This way we won&apos;t have to add two hacks.
&gt; 

Done.

&gt; &gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1941
&gt; &gt; +        return typeof this.originalPropertyText === &quot;string&quot;;
&gt; 
&gt; If you don&apos;t use any other type than &quot;string&quot;, why is the original condition changed?
&gt; 

I like searching for this.originalPropertyText occurrences more + it is compiler friendly.

&gt; &gt; Source/WebCore/inspector/front-end/inspector.js:1555
&gt; &gt; +        
&gt; 
&gt; a new blank line might not be necessary

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395276</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-04-29 08:35:31 -0700</bug_when>
    <thetext>Committed r85324: &lt;http://trac.webkit.org/changeset/85324&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91656</attachid>
            <date>2011-04-29 02:51:22 -0700</date>
            <delta_ts>2011-04-29 07:25:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59789-20110429135120.patch</filename>
            <type>text/plain</type>
            <size>6474</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODUzMTIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkN2E1NDA1ZGJjZDg2ZGIwMjk3MTRh
YmQzZDQ5OWY2NzhlYmMxMjY3Li5kOGY2NThkMzdiNDZlZmVkMzFlZDg0MDI1ODFhNDJjMWQzMDZj
MmEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDQtMjkgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENTUyBlZGl0aW5nIGJyZWFrcyB3aGVuIGVudGVy
aW5nICJjb2xvcjogcmdiKDEiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01OTc4OQorCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRk
LWludmFsaWQtcHJvcGVydHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3Ivc3R5bGVzL3N0eWxlcy1hZGQtaW52YWxpZC1wcm9wZXJ0eS5odG1sOiBBZGRlZC4KKwogMjAx
MS0wNC0yOCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5za2lw
IHNvbWUgdGVzdHMgdGhhdCB3ZXJlIGZhaWxpbmcgZHVlIHRvIGxvY2FsIGlzc3VlcyBvbiB0aGUg
Ym90cyB0aGF0IGhhdmUgYmVlbiByZXNvbHZlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLWludmFsaWQtcHJvcGVydHktZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLWludmFsaWQtcHJvcGVydHkt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhYjk4YjJjMjNiY2M1YTBiNzJmYjE5Yzc3OWZmYjY0
YWY1YzU1OWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVz
L3N0eWxlcy1hZGQtaW52YWxpZC1wcm9wZXJ0eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMyBA
QAorVGVzdHMgdGhhdCBhZGRpbmcgYW4gaW52YWxpZCBwcm9wZXJ0eSByZXRhaW5zIGl0cyBzeW50
YXguCisKK1RleHQKK0JlZm9yZSBhcHBlbmQ6CitbZXhwYW5kZWRdIGVsZW1lbnQuc3R5bGUgeyAo
KQorZm9udC1zaXplOiAxMnB4OworCis9PT09PT09PSBNYXRjaGVkIENTUyBSdWxlcyA9PT09PT09
PQorW2V4cGFuZGVkXSBkaXYgeyAodXNlciBhZ2VudCBzdHlsZXNoZWV0KQorZGlzcGxheTogYmxv
Y2s7CisKKworQWZ0ZXIgYXBwZW5kOgorW2V4cGFuZGVkXSBlbGVtZW50LnN0eWxlIHsgKCkKK2Zv
bnQtc2l6ZTogMTJweDsKK2NvbG9yOiByZ2IoOworCis9PT09PT09PSBNYXRjaGVkIENTUyBSdWxl
cyA9PT09PT09PQorW2V4cGFuZGVkXSBkaXYgeyAodXNlciBhZ2VudCBzdHlsZXNoZWV0KQorZGlz
cGxheTogYmxvY2s7CisKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5
bGVzL3N0eWxlcy1hZGQtaW52YWxpZC1wcm9wZXJ0eS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtYWRkLWludmFsaWQtcHJvcGVydHkuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
OTU4YTBiMDE3N2FiOTRhYzY0ZDk4NDdkMGE2YTBmMGVkZWNkYjQzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLWludmFsaWQtcHJvcGVy
dHkuaHRtbApAQCAtMCwwICsxLDY2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIFdlYkluc3BlY3Rv
ci5zaG93UGFuZWwoImVsZW1lbnRzIik7CisgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0
aElkKCJpbnNwZWN0ZWQiLCBzdGVwMCk7CisKKyAgICB2YXIgdHJlZUVsZW1lbnQ7CisgICAgdmFy
IHNlY3Rpb247CisKKyAgICBmdW5jdGlvbiBzdGVwMCgpCisgICAgeworICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiQmVmb3JlIGFwcGVuZDoiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKHRydWUpOworICAgICAgICBzZWN0aW9uID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5zaWRlYmFyUGFuZXMuc3R5bGVzLnNlY3Rpb25zWzBd
WzFdOworICAgICAgICBzZWN0aW9uLmV4cGFuZCgpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1
bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoc3RlcDEpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0
ZXAxKCkKKyAgICB7CisgICAgICAgIC8vIENyZWF0ZSBhbmQgaW5jcmVtZW50LgorICAgICAgICB0
cmVlRWxlbWVudCA9IHNlY3Rpb24uYWRkTmV3QmxhbmtQcm9wZXJ0eSgpOworICAgICAgICB0cmVl
RWxlbWVudC5zdGFydEVkaXRpbmcoKTsKKyAgICAgICAgdHJlZUVsZW1lbnQubmFtZUVsZW1lbnQu
dGV4dENvbnRlbnQgPSAiY29sb3IiOworICAgICAgICB0cmVlRWxlbWVudC5uYW1lRWxlbWVudC5k
aXNwYXRjaEV2ZW50KEluc3BlY3RvclRlc3QuY3JlYXRlS2V5RXZlbnQoIkVudGVyIikpOworICAg
ICAgICB0cmVlRWxlbWVudC52YWx1ZUVsZW1lbnQudGV4dENvbnRlbnQgPSAicmdiKCI7CisgICAg
ICAgIHRyZWVFbGVtZW50LnZhbHVlRWxlbWVudC5kaXNwYXRjaEV2ZW50KEluc3BlY3RvclRlc3Qu
Y3JlYXRlS2V5RXZlbnQoIkVudGVyIikpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVy
UGVuZGluZ0Rpc3BhdGNoZXMoc3RlcDIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAyKCkK
KyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgib3RoZXIiLCBz
dGVwMyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgIHsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0aElkKCJpbnNwZWN0ZWQiLCBzdGVwNCk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gc3RlcDQoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIkFmdGVyIGFwcGVuZDoiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU2VsZWN0
ZWRFbGVtZW50U3R5bGVzKHRydWUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVz
dCgpOworICAgIH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKzxwPgorVGVzdHMgdGhhdCBhZGRpbmcgYW4gaW52YWxpZCBwcm9wZXJ0eSByZXRh
aW5zIGl0cyBzeW50YXguCis8L3A+CisKKzxkaXYgaWQ9Imluc3BlY3RlZCIgc3R5bGU9ImZvbnQt
c2l6ZTogMTJweCI+VGV4dDwvZGl2PgorPGRpdiBpZD0ib3RoZXIiPjwvZGl2PgorCis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2ExYzFiOWUzMjRjOTU3ODg1N2I5YmFiMDk1YzQzMGVm
OTM2ZjA3NS4uMzQ5MjFjNTFhNTFlODdkZThjODZiMTI4NGIzOTYwYjI5MzViOGJjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDIxIEBACiAyMDExLTA0LTI5ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRt
YW5AZ29vZ2xlLmNvbT4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBDU1MgZWRpdGluZyBicmVha3Mgd2hlbiBlbnRlcmluZyAi
Y29sb3I6IHJnYigxIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTk3ODkKKworICAgICAgICBUZXN0OiBpbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1hZGQt
aW52YWxpZC1wcm9wZXJ0eS5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NT
U1N0eWxlTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkucHJvdG90
eXBlLnNldFRleHQuY2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5
LnByb3RvdHlwZS5zZXRUZXh0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxl
c1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVl
RWxlbWVudC5wcm90b3R5cGUuc3R5bGVUZXh0LnVwZGF0ZUludGVyZmFjZS5uZXdTdHlsZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSk6
CisKKzIwMTEtMDQtMjkgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCiAg
ICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogYWRkICJvcGVuIGxpbmsgaW4gbmV3IHRhYiIgYWN0aW9uIGludG8gdGhlIG5ldHdvcmsg
YW5kIHJlc291cmNlcyBwYW5lbHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKaW5kZXggZTg1ZmI2ZGVjZmE3MjA5OThmMzBlOTBi
OTgyMTRiZGEzOWFkY2E2MC4uMjY3NzFiNzIzZjc3NjRlZjRhOTIzZDNlYzk4NTljMTgxODY2ZWQ5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHls
ZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5
bGVNb2RlbC5qcwpAQCAtNTMyLDcgKzUzMiw2IEBAIFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuX2Zp
cmVTdHlsZVNoZWV0Q2hhbmdlZChzdHlsZS5pZC5zdHlsZVNoZWV0SWQsIG1ham9yQ2hhbmdlLCB1
c2VyQ2FsbGJhY2sgPyB1c2VyQ2FsbGJhY2suYmluZCh0aGlzLCBzdHlsZSkgOiBudWxsKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihKU09OLnN0
cmluZ2lmeShlcnJvcikpOwogICAgICAgICAgICAgICAgIGlmICh1c2VyQ2FsbGJhY2spCiAgICAg
ICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhudWxsKTsKICAgICAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBh
bmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQ
YW5lLmpzCmluZGV4IDg4ODhkMmNhYzVkODk4MzVhNTRlZGMxZWE1ODJiOTVjNTQzMDllYjguLjdl
YTU5OWZmYjA0NzAwZTQ0MGQ2NTc5NDUxMmZjZGRmZmE3NmJlYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpA
QCAtMTk1MSwxMiArMTk1MSw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1l
bnQucHJvdG90eXBlID0gewogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW5ld1N0eWxlKSB7
CiAgICAgICAgICAgICAgICAgLy8gVGhlIHVzZXIgdHlwZWQgc29tZXRoaW5nLCBidXQgaXQgZGlk
bid0IHBhcnNlLiBKdXN0IGFib3J0IGFuZCByZXN0b3JlCi0gICAgICAgICAgICAgICAgLy8gdGhl
IG9yaWdpbmFsIHRpdGxlIGZvciB0aGlzIHByb3BlcnR5LiAgSWYgdGhpcyB3YXMgYSBuZXcgYXR0
cmlidXRlIGFuZAotICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkbid0IHBhcnNlLCB0aGVuIGp1
c3QgcmVtb3ZlIGl0LgotICAgICAgICAgICAgICAgIGlmICh0aGlzLl9uZXdQcm9wZXJ0eSkgewot
ICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZW1vdmVDaGlsZCh0aGlzKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAvLyB0aGUgb3JpZ2luYWwgdGl0bGUgZm9yIHRoaXMgcHJvcGVydHkuCiAgICAgICAgICAgICAg
ICAgaWYgKHVwZGF0ZUludGVyZmFjZSkKICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVU
aXRsZSgpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91677</attachid>
            <date>2011-04-29 07:25:26 -0700</date>
            <delta_ts>2011-04-29 08:19:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59789-20110429182524.patch</filename>
            <type>text/plain</type>
            <size>21169</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODUzMTIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkN2E1NDA1ZGJjZDg2ZGIwMjk3MTRh
YmQzZDQ5OWY2NzhlYmMxMjY3Li5jODk0NTEzMGFiNDQ4MGJkZTMwMTEwY2NhNzNmYTUyNjhlYTRk
OTY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQtMjkgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENTUyBlZGl0aW5nIGJyZWFrcyB3aGVuIGVudGVy
aW5nICJjb2xvcjogcmdiKDEiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01OTc4OQorCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRk
LWludmFsaWQtcHJvcGVydHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3Ivc3R5bGVzL3N0eWxlcy1hZGQtaW52YWxpZC1wcm9wZXJ0eS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1jYW5jZWwtZWRpdGluZy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNhbmNlbC1lZGl0aW5n
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNvbW1pdC1l
ZGl0aW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9z
dHlsZXMtY29tbWl0LWVkaXRpbmcuaHRtbDogQWRkZWQuCisKIDIwMTEtMDQtMjggIEFkYW0gUm9i
ZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVuc2tpcCBzb21lIHRlc3RzIHRoYXQg
d2VyZSBmYWlsaW5nIGR1ZSB0byBsb2NhbCBpc3N1ZXMgb24gdGhlIGJvdHMgdGhhdCBoYXZlIGJl
ZW4gcmVzb2x2ZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5
bGVzLWFkZC1pbnZhbGlkLXByb3BlcnR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMvc3R5bGVzLWFkZC1pbnZhbGlkLXByb3BlcnR5LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xZmNjM2I2NWNmZmUyYWI3ZTQyNjhmMzc5NDY4Yzc1MjY3N2U2ZTA3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLWludmFs
aWQtcHJvcGVydHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3RzIHRoYXQgYWRk
aW5nIGFuIGludmFsaWQgcHJvcGVydHkgcmV0YWlucyBpdHMgc3ludGF4LgorCitUZXh0CitCZWZv
cmUgYXBwZW5kOgorW2V4cGFuZGVkXSBlbGVtZW50LnN0eWxlIHsgKCkKK2ZvbnQtc2l6ZTogMTJw
eDsKKworPT09PT09PT0gTWF0Y2hlZCBDU1MgUnVsZXMgPT09PT09PT0KK1tleHBhbmRlZF0gZGl2
IHsgKHVzZXIgYWdlbnQgc3R5bGVzaGVldCkKK2Rpc3BsYXk6IGJsb2NrOworCisKK0FmdGVyIGFw
cGVuZDoKK1tleHBhbmRlZF0gZWxlbWVudC5zdHlsZSB7ICgpCitmb250LXNpemU6IDEycHg7CisK
Kz09PT09PT09IE1hdGNoZWQgQ1NTIFJ1bGVzID09PT09PT09CitbZXhwYW5kZWRdIGRpdiB7ICh1
c2VyIGFnZW50IHN0eWxlc2hlZXQpCitkaXNwbGF5OiBibG9jazsKKworCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWFkZC1pbnZhbGlkLXByb3BlcnR5
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1hZGQtaW52YWxpZC1w
cm9wZXJ0eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhZjRmZmUxNDI4MzBjZmRlOWM0NzIxNGUyYThkMzky
NGJiNmRjNTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVz
L3N0eWxlcy1hZGQtaW52YWxpZC1wcm9wZXJ0eS5odG1sCkBAIC0wLDAgKzEsNzYgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2VsZW1lbnRzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsKKyAgICBJ
bnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVXaXRoSWQoImluc3BlY3RlZCIsIHN0ZXAwKTsKKworICAg
IHZhciB0cmVlRWxlbWVudDsKKyAgICB2YXIgc2VjdGlvbjsKKworICAgIGZ1bmN0aW9uIHN0ZXAw
KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJCZWZvcmUgYXBwZW5k
OiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1
ZSk7CisgICAgICAgIHNlY3Rpb24gPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnNpZGVi
YXJQYW5lcy5zdHlsZXMuc2VjdGlvbnNbMF1bMV07CisgICAgICAgIHNlY3Rpb24uZXhwYW5kKCk7
CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzdGVwMSk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgLy8gQ3JlYXRl
IGFuZCBpbmNyZW1lbnQuCisgICAgICAgIHRyZWVFbGVtZW50ID0gc2VjdGlvbi5hZGROZXdCbGFu
a1Byb3BlcnR5KCk7CisgICAgICAgIHRyZWVFbGVtZW50LnN0YXJ0RWRpdGluZygpOworICAgICAg
ICB0cmVlRWxlbWVudC5uYW1lRWxlbWVudC50ZXh0Q29udGVudCA9ICJjb2xvciI7CisgICAgICAg
IHRyZWVFbGVtZW50Lm5hbWVFbGVtZW50LmRpc3BhdGNoRXZlbnQoSW5zcGVjdG9yVGVzdC5jcmVh
dGVLZXlFdmVudCgiRW50ZXIiKSk7CisKKyAgICAgICAgLy8gVXBkYXRlIGluY3JlbWVudGFsbHkg
dG8gYSB2YWxpZCB2YWx1ZS4gCisgICAgICAgIHRyZWVFbGVtZW50LnZhbHVlRWxlbWVudC50ZXh0
Q29udGVudCA9ICJyZ2IoIjsKKyAgICAgICAgdHJlZUVsZW1lbnQua2lja0ZyZWVGbG93U3R5bGVF
ZGl0Rm9yVGVzdCgpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3Bh
dGNoZXMoc3RlcDIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICB7CisgICAg
ICAgIC8vIENvbW1pdCBpbnZhbGlkIHZhbHVlLiAKKyAgICAgICAgdHJlZUVsZW1lbnQudmFsdWVF
bGVtZW50LnRleHRDb250ZW50ID0gInJnYigxIjsKKyAgICAgICAgdHJlZUVsZW1lbnQudmFsdWVF
bGVtZW50LmRpc3BhdGNoRXZlbnQoSW5zcGVjdG9yVGVzdC5jcmVhdGVLZXlFdmVudCgiRW50ZXIi
KSk7CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzdGVw
Myk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgIHsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5zZWxlY3ROb2RlV2l0aElkKCJvdGhlciIsIHN0ZXA0KTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBzdGVwNCgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVX
aXRoSWQoImluc3BlY3RlZCIsIHN0ZXA1KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNSgp
CisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWZ0ZXIgYXBwZW5kOiIp
OworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1ZSk7
CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorCis8L3Nj
cmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyB0
aGF0IGFkZGluZyBhbiBpbnZhbGlkIHByb3BlcnR5IHJldGFpbnMgaXRzIHN5bnRheC4KKzwvcD4K
KworPGRpdiBpZD0iaW5zcGVjdGVkIiBzdHlsZT0iZm9udC1zaXplOiAxMnB4Ij5UZXh0PC9kaXY+
Cis8ZGl2IGlkPSJvdGhlciI+PC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNhbmNlbC1lZGl0aW5nLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNhbmNlbC1lZGl0
aW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzc0OWRlMjlkNGU5MjUzYmNkNzA1NmZlMjNh
ZDExZmZhZmNjMGQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0
eWxlcy9zdHlsZXMtY2FuY2VsLWVkaXRpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAK
K1Rlc3RzIHRoYXQgZWRpdGluZyBpcyBjYW5jZWxlZCBwcm9wZXJseSBhZnRlciBpbmNyZW1lbnRh
bCBlZGl0aW5nLgorCitUZXh0CitbZXhwYW5kZWRdIGVsZW1lbnQuc3R5bGUgeyAoKQorY29sb3I6
IHJlZDsKKworPT09PT09PT0gTWF0Y2hlZCBDU1MgUnVsZXMgPT09PT09PT0KK1tleHBhbmRlZF0g
ZGl2IHsgKHVzZXIgYWdlbnQgc3R5bGVzaGVldCkKK2Rpc3BsYXk6IGJsb2NrOworCisKK0FmdGVy
IGFwcGVuZDoKK1tleHBhbmRlZF0gZWxlbWVudC5zdHlsZSB7ICgpCitjb2xvcjogcmVkOworCis9
PT09PT09PSBNYXRjaGVkIENTUyBSdWxlcyA9PT09PT09PQorW2V4cGFuZGVkXSBkaXYgeyAodXNl
ciBhZ2VudCBzdHlsZXNoZWV0KQorZGlzcGxheTogYmxvY2s7CisKKworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1jYW5jZWwtZWRpdGluZy5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY2FuY2VsLWVkaXRpbmcuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMjFlZTIzZDQ3NDY2NjY0YmVkMDBjZmUwOTI4OGYyYzA0MDVkNjFhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY2FuY2Vs
LWVkaXRpbmcuaHRtbApAQCAtMCwwICsxLDY0IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIFdlYklu
c3BlY3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIik7CisgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3RO
b2RlV2l0aElkKCJpbnNwZWN0ZWQiLCBzdGVwMSk7CisKKyAgICB2YXIgdHJlZUVsZW1lbnQ7Cisg
ICAgdmFyIHNlY3Rpb247CisKKyAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgeworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1ZSk7CisgICAgICAgIHRy
ZWVFbGVtZW50ID0gSW5zcGVjdG9yVGVzdC5nZXRFbGVtZW50U3R5bGVQcm9wZXJ0eVRyZWVJdGVt
KCJjb2xvciIpOworCisgICAgICAgIHRyZWVFbGVtZW50LnN0YXJ0RWRpdGluZygpOworICAgICAg
ICB0cmVlRWxlbWVudC5uYW1lRWxlbWVudC50ZXh0Q29udGVudCA9ICJjb2xvciI7CisgICAgICAg
IHRyZWVFbGVtZW50Lm5hbWVFbGVtZW50LmRpc3BhdGNoRXZlbnQoSW5zcGVjdG9yVGVzdC5jcmVh
dGVLZXlFdmVudCgiRW50ZXIiKSk7CisKKyAgICAgICAgLy8gVXBkYXRlIGluY3JlbWVudGFsbHks
IGRvIG5vdCBjb21taXQuCisgICAgICAgIHRyZWVFbGVtZW50LnZhbHVlRWxlbWVudC50ZXh0Q29u
dGVudCA9ICJncmVlbiI7CisgICAgICAgIHRyZWVFbGVtZW50LmtpY2tGcmVlRmxvd1N0eWxlRWRp
dEZvclRlc3QoKTsKKworICAgICAgICAvLyBDYW5jZWwgZWRpdGluZy4KKyAgICAgICAgdHJlZUVs
ZW1lbnQudmFsdWVFbGVtZW50LmZpcnN0Q2hpbGQuc2VsZWN0KCk7CisgICAgICAgIHRyZWVFbGVt
ZW50LnZhbHVlRWxlbWVudC5kaXNwYXRjaEV2ZW50KEluc3BlY3RvclRlc3QuY3JlYXRlS2V5RXZl
bnQoIkVzY2FwZSIpKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdEaXNw
YXRjaGVzKHN0ZXAyKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgeworICAg
ICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVXaXRoSWQoIm90aGVyIiwgc3RlcDMpOworICAg
IH0KKworICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
c2VsZWN0Tm9kZVdpdGhJZCgiaW5zcGVjdGVkIiwgc3RlcDQpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHN0ZXA0KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJBZnRl
ciBhcHBlbmQ6Iik7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0
eWxlcyh0cnVlKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9
Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8
cD4KK1Rlc3RzIHRoYXQgZWRpdGluZyBpcyBjYW5jZWxlZCBwcm9wZXJseSBhZnRlciBpbmNyZW1l
bnRhbCBlZGl0aW5nLgorPC9wPgorCis8ZGl2IGlkPSJpbnNwZWN0ZWQiIHN0eWxlPSJjb2xvcjog
cmVkIj5UZXh0PC9kaXY+Cis8ZGl2IGlkPSJvdGhlciI+PC9kaXY+CisKKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNvbW1p
dC1lZGl0aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5
bGVzLWNvbW1pdC1lZGl0aW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzk4ZmYzMjljODQy
ZjA5MGZkNzVkYWZiOTJiOTJjNjg3ZjAyYjNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY29tbWl0LWVkaXRpbmctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMjEgQEAKK1Rlc3RzIHRoYXQgZWRpdGluZyBpcyBjYW5jZWxlZCBwcm9wZXJseSBh
ZnRlciBpbmNyZW1lbnRhbCBlZGl0aW5nLgorCitUZXh0CitbZXhwYW5kZWRdIGVsZW1lbnQuc3R5
bGUgeyAoKQorY29sb3I6IHJlZDsKKworPT09PT09PT0gTWF0Y2hlZCBDU1MgUnVsZXMgPT09PT09
PT0KK1tleHBhbmRlZF0gZGl2IHsgKHVzZXIgYWdlbnQgc3R5bGVzaGVldCkKK2Rpc3BsYXk6IGJs
b2NrOworCisKK0FmdGVyIGFwcGVuZDoKK1tleHBhbmRlZF0gZWxlbWVudC5zdHlsZSB7ICgpCitj
b2xvcjogZ3JlZW47CisKKz09PT09PT09IE1hdGNoZWQgQ1NTIFJ1bGVzID09PT09PT09CitbZXhw
YW5kZWRdIGRpdiB7ICh1c2VyIGFnZW50IHN0eWxlc2hlZXQpCitkaXNwbGF5OiBibG9jazsKKwor
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNvbW1p
dC1lZGl0aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1jb21t
aXQtZWRpdGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiYjM2NjRjZWQ0MmMxNjJiMTNjZTg4MDRjNTMx
ODc2OTE0Y2U3NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5
bGVzL3N0eWxlcy1jb21taXQtZWRpdGluZy5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9y
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2VsZW1lbnRzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsKKyAgICBJbnNw
ZWN0b3JUZXN0LnNlbGVjdE5vZGVXaXRoSWQoImluc3BlY3RlZCIsIHN0ZXAxKTsKKworICAgIHZh
ciB0cmVlRWxlbWVudDsKKyAgICB2YXIgc2VjdGlvbjsKKworICAgIGZ1bmN0aW9uIHN0ZXAxKCkK
KyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0
cnVlKTsKKyAgICAgICAgdHJlZUVsZW1lbnQgPSBJbnNwZWN0b3JUZXN0LmdldEVsZW1lbnRTdHls
ZVByb3BlcnR5VHJlZUl0ZW0oImNvbG9yIik7CisKKyAgICAgICAgdHJlZUVsZW1lbnQuc3RhcnRF
ZGl0aW5nKCk7CisgICAgICAgIHRyZWVFbGVtZW50Lm5hbWVFbGVtZW50LnRleHRDb250ZW50ID0g
ImNvbG9yIjsKKyAgICAgICAgdHJlZUVsZW1lbnQubmFtZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChJ
bnNwZWN0b3JUZXN0LmNyZWF0ZUtleUV2ZW50KCJFbnRlciIpKTsKKworICAgICAgICAvLyBVcGRh
dGUgaW5jcmVtZW50YWxseSwgZG8gbm90IGNvbW1pdC4KKyAgICAgICAgdHJlZUVsZW1lbnQudmFs
dWVFbGVtZW50LnRleHRDb250ZW50ID0gInJnYigxIjsKKyAgICAgICAgdHJlZUVsZW1lbnQua2lj
a0ZyZWVGbG93U3R5bGVFZGl0Rm9yVGVzdCgpOworCisgICAgICAgIC8vIENvbW1pdCBlZGl0aW5n
LgorICAgICAgICB0cmVlRWxlbWVudC52YWx1ZUVsZW1lbnQudGV4dENvbnRlbnQgPSAiZ3JlZW4i
OworICAgICAgICB0cmVlRWxlbWVudC52YWx1ZUVsZW1lbnQuZmlyc3RDaGlsZC5zZWxlY3QoKTsK
KyAgICAgICAgdHJlZUVsZW1lbnQudmFsdWVFbGVtZW50LmRpc3BhdGNoRXZlbnQoSW5zcGVjdG9y
VGVzdC5jcmVhdGVLZXlFdmVudCgiRW50ZXIiKSk7CisgICAgICAgIEluc3BlY3RvclRlc3QucnVu
QWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzdGVwMik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3Rl
cDIoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0aElkKCJvdGhl
ciIsIHN0ZXAzKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgeworICAgICAg
ICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVXaXRoSWQoImluc3BlY3RlZCIsIHN0ZXA0KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNCgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiQWZ0ZXIgYXBwZW5kOiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBT
ZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1ZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxl
dGVUZXN0KCk7CisgICAgfQorfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyB0aGF0IGVkaXRpbmcgaXMgY2FuY2VsZWQgcHJvcGVy
bHkgYWZ0ZXIgaW5jcmVtZW50YWwgZWRpdGluZy4KKzwvcD4KKworPGRpdiBpZD0iaW5zcGVjdGVk
IiBzdHlsZT0iY29sb3I6IHJlZCI+VGV4dDwvZGl2PgorPGRpdiBpZD0ib3RoZXIiPjwvZGl2Pgor
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2ExYzFiOWUzMjRjOTU3ODg1N2I5YmFi
MDk1YzQzMGVmOTM2ZjA3NS4uM2ZkZDUzZWE5OTYwNjEzZWM3ZTZkZGEyYWQ1MmVlOGE3NjgyNDQw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI4IEBACiAyMDExLTA0LTI5ICBQYXZlbCBGZWxkbWFu
ICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDU1MgZWRpdGluZyBicmVha3Mgd2hlbiBl
bnRlcmluZyAiY29sb3I6IHJnYigxIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTk3ODkKKworICAgICAgICBUZXN0czogaW5zcGVjdG9yL3N0eWxlcy9z
dHlsZXMtYWRkLWludmFsaWQtcHJvcGVydHkuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9y
L3N0eWxlcy9zdHlsZXMtY2FuY2VsLWVkaXRpbmcuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtY29tbWl0LWVkaXRpbmcuaHRtbAorCisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNT
U1Byb3BlcnR5LnByb3RvdHlwZS5zZXRUZXh0LmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5DU1NQcm9wZXJ0eS5wcm90b3R5cGUuc2V0VGV4dCk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
dHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLnNlbGVjdEVsZW1lbnQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUuc3R5
bGVUZXh0LnVwZGF0ZUludGVyZmFjZS5tYWpvckNoYW5nZS5pc1JldmVydC5vcmlnaW5hbFByb3Bl
cnR5VGV4dCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nLmRlZmF1bHRGaW5pc2hIYW5kbGVyKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcua2V5RG93bkV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyk6CisKKzIwMTEtMDQtMjkgIFBh
dmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCiAgICAgICAgIFJldmlld2VkIGJ5
IFl1cnkgU2VtaWtoYXRza3kuCiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkICJvcGVuIGxp
bmsgaW4gbmV3IHRhYiIgYWN0aW9uIGludG8gdGhlIG5ldHdvcmsgYW5kIHJlc291cmNlcyBwYW5l
bHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0
eWxlTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxl
TW9kZWwuanMKaW5kZXggZTg1ZmI2ZGVjZmE3MjA5OThmMzBlOTBiOTgyMTRiZGEzOWFkY2E2MC4u
MjY3NzFiNzIzZjc3NjRlZjRhOTIzZDNlYzk4NTljMTgxODY2ZWQ5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwpAQCAtNTMy
LDcgKzUzMiw2IEBAIFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdl
ZChzdHlsZS5pZC5zdHlsZVNoZWV0SWQsIG1ham9yQ2hhbmdlLCB1c2VyQ2FsbGJhY2sgPyB1c2Vy
Q2FsbGJhY2suYmluZCh0aGlzLCBzdHlsZSkgOiBudWxsKTsKICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihKU09OLnN0cmluZ2lmeShlcnJvcikpOwog
ICAgICAgICAgICAgICAgIGlmICh1c2VyQ2FsbGJhY2spCiAgICAgICAgICAgICAgICAgICAgIHVz
ZXJDYWxsYmFjayhudWxsKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCmluZGV4IDg4ODhk
MmNhYzVkODk4MzVhNTRlZGMxZWE1ODJiOTVjNTQzMDllYjguLjA3NzZkMmYzYTExMzMyZWQ2NmEw
MjFiYjMwYzZhN2FjMmJiMGMxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtMTY0MSw3ICsxNjQxLDcg
QEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICAgICAgLy8gRW50ZXIgb3IgY29sb24gKGZvciBuYW1lKS9zZW1pY29sb24gb3V0
c2lkZSBvZiBzdHJpbmcgKGZvciB2YWx1ZSkuCiAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVu
dERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gIm1vdmUtZm9yd2FyZCI7Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleUNvZGUgPT09IFdlYkluc3BlY3Rvci5LZXlib2Fy
ZFNob3J0Y3V0LktleXMuRXNjLmNvZGUpCisgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50Lmtl
eUNvZGUgPT09IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMuRXNjLmNvZGUgfHwg
ZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkVzY2FwZSIpCiAgICAgICAgICAgICAgICAgcmV0dXJu
ICJjYW5jZWwiOwogICAgICAgICAgICAgZWxzZSBpZiAoIWlzRWRpdGluZ05hbWUgJiYgdGhpcy5f
bmV3UHJvcGVydHkgJiYgZXZlbnQua2V5Q29kZSA9PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQuS2V5cy5CYWNrc3BhY2UuY29kZSkgewogICAgICAgICAgICAgICAgIC8vIEZvciBhIG5l
dyBwcm9wZXJ0eSwgd2hlbiBCYWNrc3BhY2UgaXMgcHJlc3NlZCBhdCB0aGUgYmVnaW5uaW5nIG9m
IG5ldyBwcm9wZXJ0eSB2YWx1ZSwgbW92ZSBiYWNrIHRvIHRoZSBwcm9wZXJ0eSBuYW1lLgpAQCAt
MTY3OSw2ICsxNjc5LDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gIm1vdmUtZm9yd2FyZCI7CiAgICAgICAg
IH0KIAorICAgICAgICBkZWxldGUgdGhpcy5vcmlnaW5hbFByb3BlcnR5VGV4dDsKICAgICAgICAg
V2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5zdGFydEVkaXRpbmdTdHlsZSgpOwogICAgICAg
ICBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKHNlbGVjdEVsZW1lbnQsIHsKICAgICAgICAgICAg
IGNvbnRleHQ6IGNvbnRleHQsCkBAIC0xNzAyLDcgKzE3MDMsNyBAQCBXZWJJbnNwZWN0b3IuU3R5
bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fYXBwbHlG
cmVlRmxvd1N0eWxlVGV4dEVkaXQoKTsKICAgICB9LAogCi0gICAgX2FwcGx5RnJlZUZsb3dTdHls
ZVRleHRFZGl0OiBmdW5jdGlvbigpCisgICAgX2FwcGx5RnJlZUZsb3dTdHlsZVRleHRFZGl0OiBm
dW5jdGlvbihub3cpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fYXBwbHlGcmVlRmxvd1N0eWxl
VGV4dEVkaXRUaW1lcikKICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9hcHBseUZyZWVG
bG93U3R5bGVUZXh0RWRpdFRpbWVyKTsKQEAgLTE3MTEsNyArMTcxMiwxNSBAQCBXZWJJbnNwZWN0
b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgewogICAg
ICAgICAgICAgdGhpcy5hcHBseVN0eWxlVGV4dCh0aGlzLm5hbWVFbGVtZW50LnRleHRDb250ZW50
ICsgIjogIiArIHRoaXMudmFsdWVFbGVtZW50LnRleHRDb250ZW50KTsKICAgICAgICAgfQotICAg
ICAgICB0aGlzLl9hcHBseUZyZWVGbG93U3R5bGVUZXh0RWRpdFRpbWVyID0gc2V0VGltZW91dChh
cHBseS5iaW5kKHRoaXMpLCAxMDApOworICAgICAgICBpZiAobm93KQorICAgICAgICAgICAgYXBw
bHkuY2FsbCh0aGlzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fYXBwbHlGcmVl
Rmxvd1N0eWxlVGV4dEVkaXRUaW1lciA9IHNldFRpbWVvdXQoYXBwbHkuYmluZCh0aGlzKSwgMTAw
KTsKKyAgICB9LAorCisgICAga2lja0ZyZWVGbG93U3R5bGVFZGl0Rm9yVGVzdDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdGhpcy5fYXBwbHlGcmVlRmxvd1N0eWxlVGV4dEVkaXQodHJ1ZSk7
CiAgICAgfSwKIAogICAgIF9oYW5kbGVVcE9yRG93bktleVByZXNzZWQ6IGZ1bmN0aW9uKGV2ZW50
KQpAQCAtMTc2OSwxMiArMTc3OCw2IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgZXZlbnQuaGFuZGxlZCA9IHRydWU7CiAg
ICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogCi0gICAgICAgICAgICBpZiAoISgi
b3JpZ2luYWxQcm9wZXJ0eVRleHQiIGluIHRoaXMpKSB7Ci0gICAgICAgICAgICAgICAgLy8gUmVt
ZW1iZXIgdGhlIHJ1bGUncyBvcmlnaW5hbCBDU1MgdGV4dCBvbiBbUGFnZV0oVXB8RG93biksIHNv
IGl0IGNhbiBiZSByZXN0b3JlZAotICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBlZGl0aW5nIGlz
IGNhbmNlbGVkLgotICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luYWxQcm9wZXJ0eVRleHQgPSB0
aGlzLnByb3BlcnR5LnByb3BlcnR5VGV4dDsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAg
Ly8gU3ludGhlc2l6ZSBwcm9wZXJ0eSB0ZXh0IGRpc3JlZ2FyZGluZyBhbnkgY29tbWVudHMsIGN1
c3RvbSB3aGl0ZXNwYWNlIGV0Yy4KICAgICAgICAgICAgIHRoaXMuYXBwbHlTdHlsZVRleHQodGhp
cy5uYW1lRWxlbWVudC50ZXh0Q29udGVudCArICI6ICIgKyB0aGlzLnZhbHVlRWxlbWVudC50ZXh0
Q29udGVudCk7CiAgICAgICAgIH0KQEAgLTE3OTUsMjUgKzE3OTgsMjkgQEAgV2ViSW5zcGVjdG9y
LlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChlZGl0
ZWRFbGVtZW50LnBhcmVudEVsZW1lbnQpCiAgICAgICAgICAgICBlZGl0ZWRFbGVtZW50LnBhcmVu
dEVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiY2hpbGQtZWRpdGluZyIpOwogCi0gICAgICAgIGRl
bGV0ZSB0aGlzLm9yaWdpbmFsUHJvcGVydHlUZXh0OwogICAgICAgICBXZWJJbnNwZWN0b3IucGFu
ZWxzLmVsZW1lbnRzLmVuZEVkaXRpbmdTdHlsZSgpOwogICAgIH0sCiAKICAgICBlZGl0aW5nQ2Fu
Y2VsbGVkOiBmdW5jdGlvbihlbGVtZW50LCBjb250ZXh0KQogICAgIHsKICAgICAgICAgdGhpcy5f
cmVtb3ZlUHJvbXB0KCk7Ci0gICAgICAgIGlmICgib3JpZ2luYWxQcm9wZXJ0eVRleHQiIGluIHRo
aXMpCi0gICAgICAgICAgICB0aGlzLmFwcGx5U3R5bGVUZXh0KHRoaXMub3JpZ2luYWxQcm9wZXJ0
eVRleHQsIHRydWUpOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgdGhpcy5fcmV2ZXJ0U3R5bGVV
cG9uRWRpdGluZ0NhbmNlbGVkKHRoaXMub3JpZ2luYWxQcm9wZXJ0eVRleHQpOworICAgICAgICAv
LyBUaGlzIHNob3VsZCBoYXBwZW4gbGFzdCwgYXMgaXQgY2xlYXJzIHRoZSBpbmZvIG5lY2Vzc2Fy
eSB0byByZXN0b3JlIHRoZSBwcm9wZXJ0eSB2YWx1ZSBhZnRlciBbUGFnZV1VcC9Eb3duIGNoYW5n
ZXMuCisgICAgICAgIHRoaXMuZWRpdGluZ0VuZGVkKGNvbnRleHQpOworICAgIH0sCisKKyAgICBf
cmV2ZXJ0U3R5bGVVcG9uRWRpdGluZ0NhbmNlbGVkOiBmdW5jdGlvbihvcmlnaW5hbFByb3BlcnR5
VGV4dCkKKyAgICB7CisgICAgICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxQcm9wZXJ0eVRleHQgPT09
ICJzdHJpbmciKSB7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5vcmlnaW5hbFByb3BlcnR5VGV4
dDsKKyAgICAgICAgICAgIHRoaXMuYXBwbHlTdHlsZVRleHQob3JpZ2luYWxQcm9wZXJ0eVRleHQs
IHRydWUsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICh0
aGlzLl9uZXdQcm9wZXJ0eSkKICAgICAgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnJlbW92
ZUNoaWxkKHRoaXMpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRoaXMudXBk
YXRlVGl0bGUoKTsKICAgICAgICAgfQotCi0gICAgICAgIC8vIFRoaXMgc2hvdWxkIGhhcHBlbiBs
YXN0LCBhcyBpdCBjbGVhcnMgdGhlIGluZm8gbmVjZXNzYXJ5IHRvIHJlc3RvcmUgdGhlIHByb3Bl
cnR5IHZhbHVlIGFmdGVyIFtQYWdlXVVwL0Rvd24gY2hhbmdlcy4KLSAgICAgICAgdGhpcy5lZGl0
aW5nRW5kZWQoY29udGV4dCk7Ci0gICAgfSwKKyAgICB9LCAKIAogICAgIGVkaXRpbmdDb21taXR0
ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIHVzZXJJbnB1dCwgcHJldmlvdXNDb250ZW50LCBjb250ZXh0
LCBtb3ZlRGlyZWN0aW9uKQogICAgIHsKQEAgLTE4NTYsNyArMTg2Myw3IEBAIFdlYkluc3BlY3Rv
ci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlUZXh0ID0gdGhpcy5uYW1lRWxlbWVu
dC50ZXh0Q29udGVudCArICI6ICIgKyB1c2VySW5wdXQ7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0aGlzLmFwcGx5U3R5bGVUZXh0KHByb3BlcnR5VGV4dCwgdHJ1ZSk7CisgICAgICAgICAg
ICB0aGlzLmFwcGx5U3R5bGVUZXh0KHByb3BlcnR5VGV4dCwgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoIWlzRGF0YVBhc3RlZCAmJiAhdGhpcy5fbmV3UHJv
cGVydHkpCiAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgpOwpAQCAtMTkyNywzOCAr
MTkzNCw0MCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKLSAgICBfaGFzQmVlbkFwcGxpZWRUb1BhZ2VWaWFV
cERvd246IGZ1bmN0aW9uKCkKKyAgICBfaGFzQmVlbk1vZGlmaWVkSW5jcmVtZW50YWxseTogZnVu
Y3Rpb24oKQogICAgIHsKICAgICAgICAgLy8gTmV3IHByb3BlcnRpZXMgYXBwbGllZCB2aWEgdXAv
ZG93biBoYXZlIGFuIG9yaWdpbmFsUHJvcGVydHlUZXh0IGFuZCB3aWxsIGJlIGRlbGV0ZWQgbGF0
ZXIKICAgICAgICAgLy8gb24sIGlmIGNhbmNlbGxlZCwgd2hlbiB0aGUgZW1wdHkgc3RyaW5nIGdl
dHMgYXBwbGllZCBhcyB0aGVpciBzdHlsZSB0ZXh0LgotICAgICAgICByZXR1cm4gKCJvcmlnaW5h
bFByb3BlcnR5VGV4dCIgaW4gdGhpcyk7CisgICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5vcmln
aW5hbFByb3BlcnR5VGV4dCA9PT0gInN0cmluZyI7CiAgICAgfSwKIAotICAgIGFwcGx5U3R5bGVU
ZXh0OiBmdW5jdGlvbihzdHlsZVRleHQsIHVwZGF0ZUludGVyZmFjZSkKKyAgICBhcHBseVN0eWxl
VGV4dDogZnVuY3Rpb24oc3R5bGVUZXh0LCB1cGRhdGVJbnRlcmZhY2UsIG1ham9yQ2hhbmdlLCBp
c1JldmVydCkKICAgICB7CisgICAgICAgIC8vIExlYXZlIGEgd2F5IHRvIGNhbmNlbCBlZGl0aW5n
IGFmdGVyIGluY3JlbWVudGFsIGNoYW5nZXMuCisgICAgICAgIGlmICghaXNSZXZlcnQgJiYgIXVw
ZGF0ZUludGVyZmFjZSAmJiAhdGhpcy5faGFzQmVlbk1vZGlmaWVkSW5jcmVtZW50YWxseSgpKSB7
CisgICAgICAgICAgICAvLyBSZW1lbWJlciB0aGUgcnVsZSdzIG9yaWdpbmFsIENTUyB0ZXh0IG9u
IFtQYWdlXShVcHxEb3duKSwgc28gaXQgY2FuIGJlIHJlc3RvcmVkCisgICAgICAgICAgICAvLyBp
ZiB0aGUgZWRpdGluZyBpcyBjYW5jZWxlZC4KKyAgICAgICAgICAgIHRoaXMub3JpZ2luYWxQcm9w
ZXJ0eVRleHQgPSB0aGlzLnByb3BlcnR5LnByb3BlcnR5VGV4dDsKKyAgICAgICAgfQorCiAgICAg
ICAgIHZhciBzZWN0aW9uID0gdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uOwogICAgICAgICB2YXIg
ZWxlbWVudHNQYW5lbCA9IFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHM7CiAgICAgICAgIHN0
eWxlVGV4dCA9IHN0eWxlVGV4dC5yZXBsYWNlKC9ccy9nLCAiICIpLnRyaW0oKTsgLy8gUmVwbGFj
ZSAmbmJzcDsgd2l0aCB3aGl0ZXNwYWNlLgogICAgICAgICB2YXIgc3R5bGVUZXh0TGVuZ3RoID0g
c3R5bGVUZXh0Lmxlbmd0aDsKLSAgICAgICAgaWYgKCFzdHlsZVRleHRMZW5ndGggJiYgdXBkYXRl
SW50ZXJmYWNlICYmIHRoaXMuX25ld1Byb3BlcnR5ICYmICF0aGlzLl9oYXNCZWVuQXBwbGllZFRv
UGFnZVZpYVVwRG93bigpKSB7CisgICAgICAgIGlmICghc3R5bGVUZXh0TGVuZ3RoICYmIHVwZGF0
ZUludGVyZmFjZSAmJiAhaXNSZXZlcnQgJiYgdGhpcy5fbmV3UHJvcGVydHkgJiYgIXRoaXMuX2hh
c0JlZW5Nb2RpZmllZEluY3JlbWVudGFsbHkoKSkgewogICAgICAgICAgICAgLy8gVGhlIHVzZXIg
ZGVsZXRlZCBldmVyeXRoaW5nIGFuZCBuZXZlciBhcHBsaWVkIGEgbmV3IHByb3BlcnR5IHZhbHVl
IHZpYSBVcC9Eb3duIHNjcm9sbGluZywgc28gcmVtb3ZlIHRoZSB0cmVlIGVsZW1lbnQgYW5kIHVw
ZGF0ZS4KICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpOwogICAgICAg
ICAgICAgc2VjdGlvbi5hZnRlclVwZGF0ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2sobmV3U3R5bGUpCisgICAgICAgIGZ1bmN0
aW9uIGNhbGxiYWNrKG9yaWdpbmFsUHJvcGVydHlUZXh0LCBuZXdTdHlsZSkKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKCFuZXdTdHlsZSkgewotICAgICAgICAgICAgICAgIC8vIFRoZSB1c2Vy
IHR5cGVkIHNvbWV0aGluZywgYnV0IGl0IGRpZG4ndCBwYXJzZS4gSnVzdCBhYm9ydCBhbmQgcmVz
dG9yZQotICAgICAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCB0aXRsZSBmb3IgdGhpcyBwcm9w
ZXJ0eS4gIElmIHRoaXMgd2FzIGEgbmV3IGF0dHJpYnV0ZSBhbmQKLSAgICAgICAgICAgICAgICAv
LyB3ZSBjb3VsZG4ndCBwYXJzZSwgdGhlbiBqdXN0IHJlbW92ZSBpdC4KLSAgICAgICAgICAgICAg
ICBpZiAodGhpcy5fbmV3UHJvcGVydHkpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJl
bnQucmVtb3ZlQ2hpbGQodGhpcyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICBpZiAodXBkYXRlSW50ZXJmYWNlKSB7CisgICAgICAgICAgICAgICAgICAgIC8v
IEl0IGRpZCBub3QgYXBwbHksIGNhbmNlbCBlZGl0aW5nLgorICAgICAgICAgICAgICAgICAgICB0
aGlzLl9yZXZlcnRTdHlsZVVwb25FZGl0aW5nQ2FuY2VsZWQob3JpZ2luYWxQcm9wZXJ0eVRleHQp
OwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAodXBkYXRlSW50ZXJmYWNl
KQotICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlKCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0xOTc3LDcgKzE5ODYsNyBAQCBXZWJJbnNw
ZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8g
RklYTUU6IHRoaXMgZG9lcyBub3QgaGFuZGxlIHRyYWlsaW5nIGNvbW1lbnRzLgogICAgICAgICBp
ZiAoc3R5bGVUZXh0Lmxlbmd0aCAmJiAhLztccyokLy50ZXN0KHN0eWxlVGV4dCkpCiAgICAgICAg
ICAgICBzdHlsZVRleHQgKz0gIjsiOwotICAgICAgICB0aGlzLnByb3BlcnR5LnNldFRleHQoc3R5
bGVUZXh0LCB1cGRhdGVJbnRlcmZhY2UsIGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICB0
aGlzLnByb3BlcnR5LnNldFRleHQoc3R5bGVUZXh0LCBtYWpvckNoYW5nZSwgY2FsbGJhY2suYmlu
ZCh0aGlzLCB0aGlzLm9yaWdpbmFsUHJvcGVydHlUZXh0KSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IGMzN2My
OGJkOWU3YWQ4ZTBlZGYxYThlNDI3OTVlMDAwZTQxYWYwNWEuLjYyYWViMTJhMThmNDU4NjNmNjU0
YTA5NWNlN2IwYTVhODMzYWIyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0xNTE5LDcgKzE1MTksNyBAQCBXZWJJbnNwZWN0b3Iu
c3RhcnRFZGl0aW5nID0gZnVuY3Rpb24oZWxlbWVudCwgY29uZmlnKQogICAgICAgICAgICAgZXZl
bnQuY3RybEtleSAmJiAhZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50
LmFsdEtleTsKICAgICAgICAgaWYgKGlzRW50ZXJLZXkoZXZlbnQpICYmIChldmVudC5pc01ldGFP
ckN0cmxGb3JUZXN0IHx8ICFjb25maWcubXVsdGlsaW5lIHx8IGlzTWV0YU9yQ3RybCkpCiAgICAg
ICAgICAgICByZXR1cm4gImNvbW1pdCI7Ci0gICAgICAgIGVsc2UgaWYgKGV2ZW50LmtleUNvZGUg
PT09IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMuRXNjLmNvZGUpCisgICAgICAg
IGVsc2UgaWYgKGV2ZW50LmtleUNvZGUgPT09IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
LktleXMuRXNjLmNvZGUgfHwgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkVzY2FwZSIpCiAgICAg
ICAgICAgICByZXR1cm4gImNhbmNlbCI7CiAgICAgICAgIGVsc2UgaWYgKGV2ZW50LmtleUlkZW50
aWZpZXIgPT09ICJVKzAwMDkiKSAvLyBUYWIga2V5CiAgICAgICAgICAgICByZXR1cm4gIm1vdmUt
IiArIChldmVudC5zaGlmdEtleSA/ICJiYWNrd2FyZCIgOiAiZm9yd2FyZCIpOwpAQCAtMTU1Miw2
ICsxNTUyLDcgQEAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyA9IGZ1bmN0aW9uKGVsZW1lbnQs
IGNvbmZpZykKICAgICB7CiAgICAgICAgIHZhciBoYW5kbGVyID0gY29uZmlnLmN1c3RvbUZpbmlz
aEhhbmRsZXIgfHwgZGVmYXVsdEZpbmlzaEhhbmRsZXI7CiAgICAgICAgIHZhciByZXN1bHQgPSBo
YW5kbGVyKGV2ZW50KTsKKyAgICAgICAgCiAgICAgICAgIGhhbmRsZUVkaXRpbmdSZXN1bHQocmVz
dWx0LCBldmVudCk7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91684</attachid>
            <date>2011-04-29 08:20:00 -0700</date>
            <delta_ts>2011-04-29 08:23:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59789-20110429191958.patch</filename>
            <type>text/plain</type>
            <size>20909</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODUzMTIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkN2E1NDA1ZGJjZDg2ZGIwMjk3MTRh
YmQzZDQ5OWY2NzhlYmMxMjY3Li5jODk0NTEzMGFiNDQ4MGJkZTMwMTEwY2NhNzNmYTUyNjhlYTRk
OTY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQtMjkgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENTUyBlZGl0aW5nIGJyZWFrcyB3aGVuIGVudGVy
aW5nICJjb2xvcjogcmdiKDEiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01OTc4OQorCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRk
LWludmFsaWQtcHJvcGVydHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3Ivc3R5bGVzL3N0eWxlcy1hZGQtaW52YWxpZC1wcm9wZXJ0eS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1jYW5jZWwtZWRpdGluZy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNhbmNlbC1lZGl0aW5n
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNvbW1pdC1l
ZGl0aW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9z
dHlsZXMtY29tbWl0LWVkaXRpbmcuaHRtbDogQWRkZWQuCisKIDIwMTEtMDQtMjggIEFkYW0gUm9i
ZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVuc2tpcCBzb21lIHRlc3RzIHRoYXQg
d2VyZSBmYWlsaW5nIGR1ZSB0byBsb2NhbCBpc3N1ZXMgb24gdGhlIGJvdHMgdGhhdCBoYXZlIGJl
ZW4gcmVzb2x2ZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5
bGVzLWFkZC1pbnZhbGlkLXByb3BlcnR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMvc3R5bGVzLWFkZC1pbnZhbGlkLXByb3BlcnR5LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xZmNjM2I2NWNmZmUyYWI3ZTQyNjhmMzc5NDY4Yzc1MjY3N2U2ZTA3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLWludmFs
aWQtcHJvcGVydHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3RzIHRoYXQgYWRk
aW5nIGFuIGludmFsaWQgcHJvcGVydHkgcmV0YWlucyBpdHMgc3ludGF4LgorCitUZXh0CitCZWZv
cmUgYXBwZW5kOgorW2V4cGFuZGVkXSBlbGVtZW50LnN0eWxlIHsgKCkKK2ZvbnQtc2l6ZTogMTJw
eDsKKworPT09PT09PT0gTWF0Y2hlZCBDU1MgUnVsZXMgPT09PT09PT0KK1tleHBhbmRlZF0gZGl2
IHsgKHVzZXIgYWdlbnQgc3R5bGVzaGVldCkKK2Rpc3BsYXk6IGJsb2NrOworCisKK0FmdGVyIGFw
cGVuZDoKK1tleHBhbmRlZF0gZWxlbWVudC5zdHlsZSB7ICgpCitmb250LXNpemU6IDEycHg7CisK
Kz09PT09PT09IE1hdGNoZWQgQ1NTIFJ1bGVzID09PT09PT09CitbZXhwYW5kZWRdIGRpdiB7ICh1
c2VyIGFnZW50IHN0eWxlc2hlZXQpCitkaXNwbGF5OiBibG9jazsKKworCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWFkZC1pbnZhbGlkLXByb3BlcnR5
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1hZGQtaW52YWxpZC1w
cm9wZXJ0eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhZjRmZmUxNDI4MzBjZmRlOWM0NzIxNGUyYThkMzky
NGJiNmRjNTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVz
L3N0eWxlcy1hZGQtaW52YWxpZC1wcm9wZXJ0eS5odG1sCkBAIC0wLDAgKzEsNzYgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2VsZW1lbnRzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsKKyAgICBJ
bnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVXaXRoSWQoImluc3BlY3RlZCIsIHN0ZXAwKTsKKworICAg
IHZhciB0cmVlRWxlbWVudDsKKyAgICB2YXIgc2VjdGlvbjsKKworICAgIGZ1bmN0aW9uIHN0ZXAw
KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJCZWZvcmUgYXBwZW5k
OiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1
ZSk7CisgICAgICAgIHNlY3Rpb24gPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnNpZGVi
YXJQYW5lcy5zdHlsZXMuc2VjdGlvbnNbMF1bMV07CisgICAgICAgIHNlY3Rpb24uZXhwYW5kKCk7
CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzdGVwMSk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgLy8gQ3JlYXRl
IGFuZCBpbmNyZW1lbnQuCisgICAgICAgIHRyZWVFbGVtZW50ID0gc2VjdGlvbi5hZGROZXdCbGFu
a1Byb3BlcnR5KCk7CisgICAgICAgIHRyZWVFbGVtZW50LnN0YXJ0RWRpdGluZygpOworICAgICAg
ICB0cmVlRWxlbWVudC5uYW1lRWxlbWVudC50ZXh0Q29udGVudCA9ICJjb2xvciI7CisgICAgICAg
IHRyZWVFbGVtZW50Lm5hbWVFbGVtZW50LmRpc3BhdGNoRXZlbnQoSW5zcGVjdG9yVGVzdC5jcmVh
dGVLZXlFdmVudCgiRW50ZXIiKSk7CisKKyAgICAgICAgLy8gVXBkYXRlIGluY3JlbWVudGFsbHkg
dG8gYSB2YWxpZCB2YWx1ZS4gCisgICAgICAgIHRyZWVFbGVtZW50LnZhbHVlRWxlbWVudC50ZXh0
Q29udGVudCA9ICJyZ2IoIjsKKyAgICAgICAgdHJlZUVsZW1lbnQua2lja0ZyZWVGbG93U3R5bGVF
ZGl0Rm9yVGVzdCgpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3Bh
dGNoZXMoc3RlcDIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICB7CisgICAg
ICAgIC8vIENvbW1pdCBpbnZhbGlkIHZhbHVlLiAKKyAgICAgICAgdHJlZUVsZW1lbnQudmFsdWVF
bGVtZW50LnRleHRDb250ZW50ID0gInJnYigxIjsKKyAgICAgICAgdHJlZUVsZW1lbnQudmFsdWVF
bGVtZW50LmRpc3BhdGNoRXZlbnQoSW5zcGVjdG9yVGVzdC5jcmVhdGVLZXlFdmVudCgiRW50ZXIi
KSk7CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzdGVw
Myk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgIHsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5zZWxlY3ROb2RlV2l0aElkKCJvdGhlciIsIHN0ZXA0KTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBzdGVwNCgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVX
aXRoSWQoImluc3BlY3RlZCIsIHN0ZXA1KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNSgp
CisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWZ0ZXIgYXBwZW5kOiIp
OworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1ZSk7
CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorCis8L3Nj
cmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyB0
aGF0IGFkZGluZyBhbiBpbnZhbGlkIHByb3BlcnR5IHJldGFpbnMgaXRzIHN5bnRheC4KKzwvcD4K
KworPGRpdiBpZD0iaW5zcGVjdGVkIiBzdHlsZT0iZm9udC1zaXplOiAxMnB4Ij5UZXh0PC9kaXY+
Cis8ZGl2IGlkPSJvdGhlciI+PC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNhbmNlbC1lZGl0aW5nLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNhbmNlbC1lZGl0
aW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzc0OWRlMjlkNGU5MjUzYmNkNzA1NmZlMjNh
ZDExZmZhZmNjMGQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0
eWxlcy9zdHlsZXMtY2FuY2VsLWVkaXRpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAK
K1Rlc3RzIHRoYXQgZWRpdGluZyBpcyBjYW5jZWxlZCBwcm9wZXJseSBhZnRlciBpbmNyZW1lbnRh
bCBlZGl0aW5nLgorCitUZXh0CitbZXhwYW5kZWRdIGVsZW1lbnQuc3R5bGUgeyAoKQorY29sb3I6
IHJlZDsKKworPT09PT09PT0gTWF0Y2hlZCBDU1MgUnVsZXMgPT09PT09PT0KK1tleHBhbmRlZF0g
ZGl2IHsgKHVzZXIgYWdlbnQgc3R5bGVzaGVldCkKK2Rpc3BsYXk6IGJsb2NrOworCisKK0FmdGVy
IGFwcGVuZDoKK1tleHBhbmRlZF0gZWxlbWVudC5zdHlsZSB7ICgpCitjb2xvcjogcmVkOworCis9
PT09PT09PSBNYXRjaGVkIENTUyBSdWxlcyA9PT09PT09PQorW2V4cGFuZGVkXSBkaXYgeyAodXNl
ciBhZ2VudCBzdHlsZXNoZWV0KQorZGlzcGxheTogYmxvY2s7CisKKworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1jYW5jZWwtZWRpdGluZy5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY2FuY2VsLWVkaXRpbmcuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44MTE1YzVmODRjMjVmMjBhNTY5MTgxNDhiZjk2ZGE5ZDBiMTA0YjA4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY2FuY2Vs
LWVkaXRpbmcuaHRtbApAQCAtMCwwICsxLDY0IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIFdlYklu
c3BlY3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIik7CisgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3RO
b2RlV2l0aElkKCJpbnNwZWN0ZWQiLCBzdGVwMSk7CisKKyAgICB2YXIgdHJlZUVsZW1lbnQ7Cisg
ICAgdmFyIHNlY3Rpb247CisKKyAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgeworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1ZSk7CisgICAgICAgIHRy
ZWVFbGVtZW50ID0gSW5zcGVjdG9yVGVzdC5nZXRFbGVtZW50U3R5bGVQcm9wZXJ0eVRyZWVJdGVt
KCJjb2xvciIpOworCisgICAgICAgIHRyZWVFbGVtZW50LnN0YXJ0RWRpdGluZygpOworICAgICAg
ICB0cmVlRWxlbWVudC5uYW1lRWxlbWVudC50ZXh0Q29udGVudCA9ICJjb2xvciI7CisgICAgICAg
IHRyZWVFbGVtZW50Lm5hbWVFbGVtZW50LmRpc3BhdGNoRXZlbnQoSW5zcGVjdG9yVGVzdC5jcmVh
dGVLZXlFdmVudCgiRW50ZXIiKSk7CisKKyAgICAgICAgLy8gVXBkYXRlIGluY3JlbWVudGFsbHks
IGRvIG5vdCBjb21taXQuCisgICAgICAgIHRyZWVFbGVtZW50LnZhbHVlRWxlbWVudC50ZXh0Q29u
dGVudCA9ICJncmVlbiI7CisgICAgICAgIHRyZWVFbGVtZW50LmtpY2tGcmVlRmxvd1N0eWxlRWRp
dEZvclRlc3QoKTsKKworICAgICAgICAvLyBDYW5jZWwgZWRpdGluZy4KKyAgICAgICAgdHJlZUVs
ZW1lbnQudmFsdWVFbGVtZW50LmZpcnN0Q2hpbGQuc2VsZWN0KCk7CisgICAgICAgIHRyZWVFbGVt
ZW50LnZhbHVlRWxlbWVudC5kaXNwYXRjaEV2ZW50KEluc3BlY3RvclRlc3QuY3JlYXRlS2V5RXZl
bnQoIlUrMDAxQiIpKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdEaXNw
YXRjaGVzKHN0ZXAyKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgeworICAg
ICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVXaXRoSWQoIm90aGVyIiwgc3RlcDMpOworICAg
IH0KKworICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
c2VsZWN0Tm9kZVdpdGhJZCgiaW5zcGVjdGVkIiwgc3RlcDQpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHN0ZXA0KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJBZnRl
ciBhcHBlbmQ6Iik7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0
eWxlcyh0cnVlKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9
Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8
cD4KK1Rlc3RzIHRoYXQgZWRpdGluZyBpcyBjYW5jZWxlZCBwcm9wZXJseSBhZnRlciBpbmNyZW1l
bnRhbCBlZGl0aW5nLgorPC9wPgorCis8ZGl2IGlkPSJpbnNwZWN0ZWQiIHN0eWxlPSJjb2xvcjog
cmVkIj5UZXh0PC9kaXY+Cis8ZGl2IGlkPSJvdGhlciI+PC9kaXY+CisKKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNvbW1p
dC1lZGl0aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5
bGVzLWNvbW1pdC1lZGl0aW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzk4ZmYzMjljODQy
ZjA5MGZkNzVkYWZiOTJiOTJjNjg3ZjAyYjNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY29tbWl0LWVkaXRpbmctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMjEgQEAKK1Rlc3RzIHRoYXQgZWRpdGluZyBpcyBjYW5jZWxlZCBwcm9wZXJseSBh
ZnRlciBpbmNyZW1lbnRhbCBlZGl0aW5nLgorCitUZXh0CitbZXhwYW5kZWRdIGVsZW1lbnQuc3R5
bGUgeyAoKQorY29sb3I6IHJlZDsKKworPT09PT09PT0gTWF0Y2hlZCBDU1MgUnVsZXMgPT09PT09
PT0KK1tleHBhbmRlZF0gZGl2IHsgKHVzZXIgYWdlbnQgc3R5bGVzaGVldCkKK2Rpc3BsYXk6IGJs
b2NrOworCisKK0FmdGVyIGFwcGVuZDoKK1tleHBhbmRlZF0gZWxlbWVudC5zdHlsZSB7ICgpCitj
b2xvcjogZ3JlZW47CisKKz09PT09PT09IE1hdGNoZWQgQ1NTIFJ1bGVzID09PT09PT09CitbZXhw
YW5kZWRdIGRpdiB7ICh1c2VyIGFnZW50IHN0eWxlc2hlZXQpCitkaXNwbGF5OiBibG9jazsKKwor
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNvbW1p
dC1lZGl0aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1jb21t
aXQtZWRpdGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiYjM2NjRjZWQ0MmMxNjJiMTNjZTg4MDRjNTMx
ODc2OTE0Y2U3NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5
bGVzL3N0eWxlcy1jb21taXQtZWRpdGluZy5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9y
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2VsZW1lbnRzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsKKyAgICBJbnNw
ZWN0b3JUZXN0LnNlbGVjdE5vZGVXaXRoSWQoImluc3BlY3RlZCIsIHN0ZXAxKTsKKworICAgIHZh
ciB0cmVlRWxlbWVudDsKKyAgICB2YXIgc2VjdGlvbjsKKworICAgIGZ1bmN0aW9uIHN0ZXAxKCkK
KyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0
cnVlKTsKKyAgICAgICAgdHJlZUVsZW1lbnQgPSBJbnNwZWN0b3JUZXN0LmdldEVsZW1lbnRTdHls
ZVByb3BlcnR5VHJlZUl0ZW0oImNvbG9yIik7CisKKyAgICAgICAgdHJlZUVsZW1lbnQuc3RhcnRF
ZGl0aW5nKCk7CisgICAgICAgIHRyZWVFbGVtZW50Lm5hbWVFbGVtZW50LnRleHRDb250ZW50ID0g
ImNvbG9yIjsKKyAgICAgICAgdHJlZUVsZW1lbnQubmFtZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChJ
bnNwZWN0b3JUZXN0LmNyZWF0ZUtleUV2ZW50KCJFbnRlciIpKTsKKworICAgICAgICAvLyBVcGRh
dGUgaW5jcmVtZW50YWxseSwgZG8gbm90IGNvbW1pdC4KKyAgICAgICAgdHJlZUVsZW1lbnQudmFs
dWVFbGVtZW50LnRleHRDb250ZW50ID0gInJnYigxIjsKKyAgICAgICAgdHJlZUVsZW1lbnQua2lj
a0ZyZWVGbG93U3R5bGVFZGl0Rm9yVGVzdCgpOworCisgICAgICAgIC8vIENvbW1pdCBlZGl0aW5n
LgorICAgICAgICB0cmVlRWxlbWVudC52YWx1ZUVsZW1lbnQudGV4dENvbnRlbnQgPSAiZ3JlZW4i
OworICAgICAgICB0cmVlRWxlbWVudC52YWx1ZUVsZW1lbnQuZmlyc3RDaGlsZC5zZWxlY3QoKTsK
KyAgICAgICAgdHJlZUVsZW1lbnQudmFsdWVFbGVtZW50LmRpc3BhdGNoRXZlbnQoSW5zcGVjdG9y
VGVzdC5jcmVhdGVLZXlFdmVudCgiRW50ZXIiKSk7CisgICAgICAgIEluc3BlY3RvclRlc3QucnVu
QWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzdGVwMik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3Rl
cDIoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0aElkKCJvdGhl
ciIsIHN0ZXAzKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgeworICAgICAg
ICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVXaXRoSWQoImluc3BlY3RlZCIsIHN0ZXA0KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNCgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiQWZ0ZXIgYXBwZW5kOiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBT
ZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1ZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxl
dGVUZXN0KCk7CisgICAgfQorfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyB0aGF0IGVkaXRpbmcgaXMgY2FuY2VsZWQgcHJvcGVy
bHkgYWZ0ZXIgaW5jcmVtZW50YWwgZWRpdGluZy4KKzwvcD4KKworPGRpdiBpZD0iaW5zcGVjdGVk
IiBzdHlsZT0iY29sb3I6IHJlZCI+VGV4dDwvZGl2PgorPGRpdiBpZD0ib3RoZXIiPjwvZGl2Pgor
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2ExYzFiOWUzMjRjOTU3ODg1N2I5YmFi
MDk1YzQzMGVmOTM2ZjA3NS4uM2ZkZDUzZWE5OTYwNjEzZWM3ZTZkZGEyYWQ1MmVlOGE3NjgyNDQw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI4IEBACiAyMDExLTA0LTI5ICBQYXZlbCBGZWxkbWFu
ICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDU1MgZWRpdGluZyBicmVha3Mgd2hlbiBl
bnRlcmluZyAiY29sb3I6IHJnYigxIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTk3ODkKKworICAgICAgICBUZXN0czogaW5zcGVjdG9yL3N0eWxlcy9z
dHlsZXMtYWRkLWludmFsaWQtcHJvcGVydHkuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9y
L3N0eWxlcy9zdHlsZXMtY2FuY2VsLWVkaXRpbmcuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtY29tbWl0LWVkaXRpbmcuaHRtbAorCisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNT
U1Byb3BlcnR5LnByb3RvdHlwZS5zZXRUZXh0LmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5DU1NQcm9wZXJ0eS5wcm90b3R5cGUuc2V0VGV4dCk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
dHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLnNlbGVjdEVsZW1lbnQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUuc3R5
bGVUZXh0LnVwZGF0ZUludGVyZmFjZS5tYWpvckNoYW5nZS5pc1JldmVydC5vcmlnaW5hbFByb3Bl
cnR5VGV4dCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nLmRlZmF1bHRGaW5pc2hIYW5kbGVyKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcua2V5RG93bkV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyk6CisKKzIwMTEtMDQtMjkgIFBh
dmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCiAgICAgICAgIFJldmlld2VkIGJ5
IFl1cnkgU2VtaWtoYXRza3kuCiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkICJvcGVuIGxp
bmsgaW4gbmV3IHRhYiIgYWN0aW9uIGludG8gdGhlIG5ldHdvcmsgYW5kIHJlc291cmNlcyBwYW5l
bHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0
eWxlTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxl
TW9kZWwuanMKaW5kZXggZTg1ZmI2ZGVjZmE3MjA5OThmMzBlOTBiOTgyMTRiZGEzOWFkY2E2MC4u
MjY3NzFiNzIzZjc3NjRlZjRhOTIzZDNlYzk4NTljMTgxODY2ZWQ5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwpAQCAtNTMy
LDcgKzUzMiw2IEBAIFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdl
ZChzdHlsZS5pZC5zdHlsZVNoZWV0SWQsIG1ham9yQ2hhbmdlLCB1c2VyQ2FsbGJhY2sgPyB1c2Vy
Q2FsbGJhY2suYmluZCh0aGlzLCBzdHlsZSkgOiBudWxsKTsKICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihKU09OLnN0cmluZ2lmeShlcnJvcikpOwog
ICAgICAgICAgICAgICAgIGlmICh1c2VyQ2FsbGJhY2spCiAgICAgICAgICAgICAgICAgICAgIHVz
ZXJDYWxsYmFjayhudWxsKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCmluZGV4IDg4ODhk
MmNhYzVkODk4MzVhNTRlZGMxZWE1ODJiOTVjNTQzMDllYjguLjI3YjEzZDZjNjEyODdhNDAwZmNk
M2E5Yzg4OGEwNDhiMzIwYjZhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtMTY0MSw3ICsxNjQxLDcg
QEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICAgICAgLy8gRW50ZXIgb3IgY29sb24gKGZvciBuYW1lKS9zZW1pY29sb24gb3V0
c2lkZSBvZiBzdHJpbmcgKGZvciB2YWx1ZSkuCiAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVu
dERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gIm1vdmUtZm9yd2FyZCI7Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleUNvZGUgPT09IFdlYkluc3BlY3Rvci5LZXlib2Fy
ZFNob3J0Y3V0LktleXMuRXNjLmNvZGUpCisgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50Lmtl
eUNvZGUgPT09IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMuRXNjLmNvZGUgfHwg
ZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlUrMDAxQiIpCiAgICAgICAgICAgICAgICAgcmV0dXJu
ICJjYW5jZWwiOwogICAgICAgICAgICAgZWxzZSBpZiAoIWlzRWRpdGluZ05hbWUgJiYgdGhpcy5f
bmV3UHJvcGVydHkgJiYgZXZlbnQua2V5Q29kZSA9PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQuS2V5cy5CYWNrc3BhY2UuY29kZSkgewogICAgICAgICAgICAgICAgIC8vIEZvciBhIG5l
dyBwcm9wZXJ0eSwgd2hlbiBCYWNrc3BhY2UgaXMgcHJlc3NlZCBhdCB0aGUgYmVnaW5uaW5nIG9m
IG5ldyBwcm9wZXJ0eSB2YWx1ZSwgbW92ZSBiYWNrIHRvIHRoZSBwcm9wZXJ0eSBuYW1lLgpAQCAt
MTY3OSw2ICsxNjc5LDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gIm1vdmUtZm9yd2FyZCI7CiAgICAgICAg
IH0KIAorICAgICAgICBkZWxldGUgdGhpcy5vcmlnaW5hbFByb3BlcnR5VGV4dDsKICAgICAgICAg
V2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5zdGFydEVkaXRpbmdTdHlsZSgpOwogICAgICAg
ICBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKHNlbGVjdEVsZW1lbnQsIHsKICAgICAgICAgICAg
IGNvbnRleHQ6IGNvbnRleHQsCkBAIC0xNzAyLDcgKzE3MDMsNyBAQCBXZWJJbnNwZWN0b3IuU3R5
bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fYXBwbHlG
cmVlRmxvd1N0eWxlVGV4dEVkaXQoKTsKICAgICB9LAogCi0gICAgX2FwcGx5RnJlZUZsb3dTdHls
ZVRleHRFZGl0OiBmdW5jdGlvbigpCisgICAgX2FwcGx5RnJlZUZsb3dTdHlsZVRleHRFZGl0OiBm
dW5jdGlvbihub3cpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fYXBwbHlGcmVlRmxvd1N0eWxl
VGV4dEVkaXRUaW1lcikKICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9hcHBseUZyZWVG
bG93U3R5bGVUZXh0RWRpdFRpbWVyKTsKQEAgLTE3MTEsNyArMTcxMiwxNSBAQCBXZWJJbnNwZWN0
b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgewogICAg
ICAgICAgICAgdGhpcy5hcHBseVN0eWxlVGV4dCh0aGlzLm5hbWVFbGVtZW50LnRleHRDb250ZW50
ICsgIjogIiArIHRoaXMudmFsdWVFbGVtZW50LnRleHRDb250ZW50KTsKICAgICAgICAgfQotICAg
ICAgICB0aGlzLl9hcHBseUZyZWVGbG93U3R5bGVUZXh0RWRpdFRpbWVyID0gc2V0VGltZW91dChh
cHBseS5iaW5kKHRoaXMpLCAxMDApOworICAgICAgICBpZiAobm93KQorICAgICAgICAgICAgYXBw
bHkuY2FsbCh0aGlzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fYXBwbHlGcmVl
Rmxvd1N0eWxlVGV4dEVkaXRUaW1lciA9IHNldFRpbWVvdXQoYXBwbHkuYmluZCh0aGlzKSwgMTAw
KTsKKyAgICB9LAorCisgICAga2lja0ZyZWVGbG93U3R5bGVFZGl0Rm9yVGVzdDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdGhpcy5fYXBwbHlGcmVlRmxvd1N0eWxlVGV4dEVkaXQodHJ1ZSk7
CiAgICAgfSwKIAogICAgIF9oYW5kbGVVcE9yRG93bktleVByZXNzZWQ6IGZ1bmN0aW9uKGV2ZW50
KQpAQCAtMTc2OSwxMiArMTc3OCw2IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgZXZlbnQuaGFuZGxlZCA9IHRydWU7CiAg
ICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogCi0gICAgICAgICAgICBpZiAoISgi
b3JpZ2luYWxQcm9wZXJ0eVRleHQiIGluIHRoaXMpKSB7Ci0gICAgICAgICAgICAgICAgLy8gUmVt
ZW1iZXIgdGhlIHJ1bGUncyBvcmlnaW5hbCBDU1MgdGV4dCBvbiBbUGFnZV0oVXB8RG93biksIHNv
IGl0IGNhbiBiZSByZXN0b3JlZAotICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBlZGl0aW5nIGlz
IGNhbmNlbGVkLgotICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luYWxQcm9wZXJ0eVRleHQgPSB0
aGlzLnByb3BlcnR5LnByb3BlcnR5VGV4dDsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAg
Ly8gU3ludGhlc2l6ZSBwcm9wZXJ0eSB0ZXh0IGRpc3JlZ2FyZGluZyBhbnkgY29tbWVudHMsIGN1
c3RvbSB3aGl0ZXNwYWNlIGV0Yy4KICAgICAgICAgICAgIHRoaXMuYXBwbHlTdHlsZVRleHQodGhp
cy5uYW1lRWxlbWVudC50ZXh0Q29udGVudCArICI6ICIgKyB0aGlzLnZhbHVlRWxlbWVudC50ZXh0
Q29udGVudCk7CiAgICAgICAgIH0KQEAgLTE3OTUsMjUgKzE3OTgsMjkgQEAgV2ViSW5zcGVjdG9y
LlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChlZGl0
ZWRFbGVtZW50LnBhcmVudEVsZW1lbnQpCiAgICAgICAgICAgICBlZGl0ZWRFbGVtZW50LnBhcmVu
dEVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiY2hpbGQtZWRpdGluZyIpOwogCi0gICAgICAgIGRl
bGV0ZSB0aGlzLm9yaWdpbmFsUHJvcGVydHlUZXh0OwogICAgICAgICBXZWJJbnNwZWN0b3IucGFu
ZWxzLmVsZW1lbnRzLmVuZEVkaXRpbmdTdHlsZSgpOwogICAgIH0sCiAKICAgICBlZGl0aW5nQ2Fu
Y2VsbGVkOiBmdW5jdGlvbihlbGVtZW50LCBjb250ZXh0KQogICAgIHsKICAgICAgICAgdGhpcy5f
cmVtb3ZlUHJvbXB0KCk7Ci0gICAgICAgIGlmICgib3JpZ2luYWxQcm9wZXJ0eVRleHQiIGluIHRo
aXMpCi0gICAgICAgICAgICB0aGlzLmFwcGx5U3R5bGVUZXh0KHRoaXMub3JpZ2luYWxQcm9wZXJ0
eVRleHQsIHRydWUpOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgdGhpcy5fcmV2ZXJ0U3R5bGVV
cG9uRWRpdGluZ0NhbmNlbGVkKHRoaXMub3JpZ2luYWxQcm9wZXJ0eVRleHQpOworICAgICAgICAv
LyBUaGlzIHNob3VsZCBoYXBwZW4gbGFzdCwgYXMgaXQgY2xlYXJzIHRoZSBpbmZvIG5lY2Vzc2Fy
eSB0byByZXN0b3JlIHRoZSBwcm9wZXJ0eSB2YWx1ZSBhZnRlciBbUGFnZV1VcC9Eb3duIGNoYW5n
ZXMuCisgICAgICAgIHRoaXMuZWRpdGluZ0VuZGVkKGNvbnRleHQpOworICAgIH0sCisKKyAgICBf
cmV2ZXJ0U3R5bGVVcG9uRWRpdGluZ0NhbmNlbGVkOiBmdW5jdGlvbihvcmlnaW5hbFByb3BlcnR5
VGV4dCkKKyAgICB7CisgICAgICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxQcm9wZXJ0eVRleHQgPT09
ICJzdHJpbmciKSB7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5vcmlnaW5hbFByb3BlcnR5VGV4
dDsKKyAgICAgICAgICAgIHRoaXMuYXBwbHlTdHlsZVRleHQob3JpZ2luYWxQcm9wZXJ0eVRleHQs
IHRydWUsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICh0
aGlzLl9uZXdQcm9wZXJ0eSkKICAgICAgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnJlbW92
ZUNoaWxkKHRoaXMpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRoaXMudXBk
YXRlVGl0bGUoKTsKICAgICAgICAgfQotCi0gICAgICAgIC8vIFRoaXMgc2hvdWxkIGhhcHBlbiBs
YXN0LCBhcyBpdCBjbGVhcnMgdGhlIGluZm8gbmVjZXNzYXJ5IHRvIHJlc3RvcmUgdGhlIHByb3Bl
cnR5IHZhbHVlIGFmdGVyIFtQYWdlXVVwL0Rvd24gY2hhbmdlcy4KLSAgICAgICAgdGhpcy5lZGl0
aW5nRW5kZWQoY29udGV4dCk7Ci0gICAgfSwKKyAgICB9LCAKIAogICAgIGVkaXRpbmdDb21taXR0
ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIHVzZXJJbnB1dCwgcHJldmlvdXNDb250ZW50LCBjb250ZXh0
LCBtb3ZlRGlyZWN0aW9uKQogICAgIHsKQEAgLTE4NTYsNyArMTg2Myw3IEBAIFdlYkluc3BlY3Rv
ci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlUZXh0ID0gdGhpcy5uYW1lRWxlbWVu
dC50ZXh0Q29udGVudCArICI6ICIgKyB1c2VySW5wdXQ7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0aGlzLmFwcGx5U3R5bGVUZXh0KHByb3BlcnR5VGV4dCwgdHJ1ZSk7CisgICAgICAgICAg
ICB0aGlzLmFwcGx5U3R5bGVUZXh0KHByb3BlcnR5VGV4dCwgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoIWlzRGF0YVBhc3RlZCAmJiAhdGhpcy5fbmV3UHJv
cGVydHkpCiAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgpOwpAQCAtMTkyNywzOCAr
MTkzNCw0MCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKLSAgICBfaGFzQmVlbkFwcGxpZWRUb1BhZ2VWaWFV
cERvd246IGZ1bmN0aW9uKCkKKyAgICBfaGFzQmVlbk1vZGlmaWVkSW5jcmVtZW50YWxseTogZnVu
Y3Rpb24oKQogICAgIHsKICAgICAgICAgLy8gTmV3IHByb3BlcnRpZXMgYXBwbGllZCB2aWEgdXAv
ZG93biBoYXZlIGFuIG9yaWdpbmFsUHJvcGVydHlUZXh0IGFuZCB3aWxsIGJlIGRlbGV0ZWQgbGF0
ZXIKICAgICAgICAgLy8gb24sIGlmIGNhbmNlbGxlZCwgd2hlbiB0aGUgZW1wdHkgc3RyaW5nIGdl
dHMgYXBwbGllZCBhcyB0aGVpciBzdHlsZSB0ZXh0LgotICAgICAgICByZXR1cm4gKCJvcmlnaW5h
bFByb3BlcnR5VGV4dCIgaW4gdGhpcyk7CisgICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5vcmln
aW5hbFByb3BlcnR5VGV4dCA9PT0gInN0cmluZyI7CiAgICAgfSwKIAotICAgIGFwcGx5U3R5bGVU
ZXh0OiBmdW5jdGlvbihzdHlsZVRleHQsIHVwZGF0ZUludGVyZmFjZSkKKyAgICBhcHBseVN0eWxl
VGV4dDogZnVuY3Rpb24oc3R5bGVUZXh0LCB1cGRhdGVJbnRlcmZhY2UsIG1ham9yQ2hhbmdlLCBp
c1JldmVydCkKICAgICB7CisgICAgICAgIC8vIExlYXZlIGEgd2F5IHRvIGNhbmNlbCBlZGl0aW5n
IGFmdGVyIGluY3JlbWVudGFsIGNoYW5nZXMuCisgICAgICAgIGlmICghaXNSZXZlcnQgJiYgIXVw
ZGF0ZUludGVyZmFjZSAmJiAhdGhpcy5faGFzQmVlbk1vZGlmaWVkSW5jcmVtZW50YWxseSgpKSB7
CisgICAgICAgICAgICAvLyBSZW1lbWJlciB0aGUgcnVsZSdzIG9yaWdpbmFsIENTUyB0ZXh0IG9u
IFtQYWdlXShVcHxEb3duKSwgc28gaXQgY2FuIGJlIHJlc3RvcmVkCisgICAgICAgICAgICAvLyBp
ZiB0aGUgZWRpdGluZyBpcyBjYW5jZWxlZC4KKyAgICAgICAgICAgIHRoaXMub3JpZ2luYWxQcm9w
ZXJ0eVRleHQgPSB0aGlzLnByb3BlcnR5LnByb3BlcnR5VGV4dDsKKyAgICAgICAgfQorCiAgICAg
ICAgIHZhciBzZWN0aW9uID0gdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uOwogICAgICAgICB2YXIg
ZWxlbWVudHNQYW5lbCA9IFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHM7CiAgICAgICAgIHN0
eWxlVGV4dCA9IHN0eWxlVGV4dC5yZXBsYWNlKC9ccy9nLCAiICIpLnRyaW0oKTsgLy8gUmVwbGFj
ZSAmbmJzcDsgd2l0aCB3aGl0ZXNwYWNlLgogICAgICAgICB2YXIgc3R5bGVUZXh0TGVuZ3RoID0g
c3R5bGVUZXh0Lmxlbmd0aDsKLSAgICAgICAgaWYgKCFzdHlsZVRleHRMZW5ndGggJiYgdXBkYXRl
SW50ZXJmYWNlICYmIHRoaXMuX25ld1Byb3BlcnR5ICYmICF0aGlzLl9oYXNCZWVuQXBwbGllZFRv
UGFnZVZpYVVwRG93bigpKSB7CisgICAgICAgIGlmICghc3R5bGVUZXh0TGVuZ3RoICYmIHVwZGF0
ZUludGVyZmFjZSAmJiAhaXNSZXZlcnQgJiYgdGhpcy5fbmV3UHJvcGVydHkgJiYgIXRoaXMuX2hh
c0JlZW5Nb2RpZmllZEluY3JlbWVudGFsbHkoKSkgewogICAgICAgICAgICAgLy8gVGhlIHVzZXIg
ZGVsZXRlZCBldmVyeXRoaW5nIGFuZCBuZXZlciBhcHBsaWVkIGEgbmV3IHByb3BlcnR5IHZhbHVl
IHZpYSBVcC9Eb3duIHNjcm9sbGluZywgc28gcmVtb3ZlIHRoZSB0cmVlIGVsZW1lbnQgYW5kIHVw
ZGF0ZS4KICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpOwogICAgICAg
ICAgICAgc2VjdGlvbi5hZnRlclVwZGF0ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2sobmV3U3R5bGUpCisgICAgICAgIGZ1bmN0
aW9uIGNhbGxiYWNrKG9yaWdpbmFsUHJvcGVydHlUZXh0LCBuZXdTdHlsZSkKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKCFuZXdTdHlsZSkgewotICAgICAgICAgICAgICAgIC8vIFRoZSB1c2Vy
IHR5cGVkIHNvbWV0aGluZywgYnV0IGl0IGRpZG4ndCBwYXJzZS4gSnVzdCBhYm9ydCBhbmQgcmVz
dG9yZQotICAgICAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCB0aXRsZSBmb3IgdGhpcyBwcm9w
ZXJ0eS4gIElmIHRoaXMgd2FzIGEgbmV3IGF0dHJpYnV0ZSBhbmQKLSAgICAgICAgICAgICAgICAv
LyB3ZSBjb3VsZG4ndCBwYXJzZSwgdGhlbiBqdXN0IHJlbW92ZSBpdC4KLSAgICAgICAgICAgICAg
ICBpZiAodGhpcy5fbmV3UHJvcGVydHkpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJl
bnQucmVtb3ZlQ2hpbGQodGhpcyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICBpZiAodXBkYXRlSW50ZXJmYWNlKSB7CisgICAgICAgICAgICAgICAgICAgIC8v
IEl0IGRpZCBub3QgYXBwbHksIGNhbmNlbCBlZGl0aW5nLgorICAgICAgICAgICAgICAgICAgICB0
aGlzLl9yZXZlcnRTdHlsZVVwb25FZGl0aW5nQ2FuY2VsZWQob3JpZ2luYWxQcm9wZXJ0eVRleHQp
OwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAodXBkYXRlSW50ZXJmYWNl
KQotICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlKCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0xOTc3LDcgKzE5ODYsNyBAQCBXZWJJbnNw
ZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8g
RklYTUU6IHRoaXMgZG9lcyBub3QgaGFuZGxlIHRyYWlsaW5nIGNvbW1lbnRzLgogICAgICAgICBp
ZiAoc3R5bGVUZXh0Lmxlbmd0aCAmJiAhLztccyokLy50ZXN0KHN0eWxlVGV4dCkpCiAgICAgICAg
ICAgICBzdHlsZVRleHQgKz0gIjsiOwotICAgICAgICB0aGlzLnByb3BlcnR5LnNldFRleHQoc3R5
bGVUZXh0LCB1cGRhdGVJbnRlcmZhY2UsIGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICB0
aGlzLnByb3BlcnR5LnNldFRleHQoc3R5bGVUZXh0LCBtYWpvckNoYW5nZSwgY2FsbGJhY2suYmlu
ZCh0aGlzLCB0aGlzLm9yaWdpbmFsUHJvcGVydHlUZXh0KSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IGMzN2My
OGJkOWU3YWQ4ZTBlZGYxYThlNDI3OTVlMDAwZTQxYWYwNWEuLjdkMWVhZjU1NjI1MGFlODk0OThi
Mjc2N2E5NGZiODk1OWFiOGM3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0xNTE5LDcgKzE1MTksNyBAQCBXZWJJbnNwZWN0b3Iu
c3RhcnRFZGl0aW5nID0gZnVuY3Rpb24oZWxlbWVudCwgY29uZmlnKQogICAgICAgICAgICAgZXZl
bnQuY3RybEtleSAmJiAhZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50
LmFsdEtleTsKICAgICAgICAgaWYgKGlzRW50ZXJLZXkoZXZlbnQpICYmIChldmVudC5pc01ldGFP
ckN0cmxGb3JUZXN0IHx8ICFjb25maWcubXVsdGlsaW5lIHx8IGlzTWV0YU9yQ3RybCkpCiAgICAg
ICAgICAgICByZXR1cm4gImNvbW1pdCI7Ci0gICAgICAgIGVsc2UgaWYgKGV2ZW50LmtleUNvZGUg
PT09IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMuRXNjLmNvZGUpCisgICAgICAg
IGVsc2UgaWYgKGV2ZW50LmtleUNvZGUgPT09IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
LktleXMuRXNjLmNvZGUgfHwgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlUrMDAxQiIpCiAgICAg
ICAgICAgICByZXR1cm4gImNhbmNlbCI7CiAgICAgICAgIGVsc2UgaWYgKGV2ZW50LmtleUlkZW50
aWZpZXIgPT09ICJVKzAwMDkiKSAvLyBUYWIga2V5CiAgICAgICAgICAgICByZXR1cm4gIm1vdmUt
IiArIChldmVudC5zaGlmdEtleSA/ICJiYWNrd2FyZCIgOiAiZm9yd2FyZCIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91685</attachid>
            <date>2011-04-29 08:23:53 -0700</date>
            <delta_ts>2011-04-29 08:33:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59789-20110429192351.patch</filename>
            <type>text/plain</type>
            <size>20919</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODUzMTIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkN2E1NDA1ZGJjZDg2ZGIwMjk3MTRh
YmQzZDQ5OWY2NzhlYmMxMjY3Li5jODk0NTEzMGFiNDQ4MGJkZTMwMTEwY2NhNzNmYTUyNjhlYTRk
OTY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQtMjkgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENTUyBlZGl0aW5nIGJyZWFrcyB3aGVuIGVudGVy
aW5nICJjb2xvcjogcmdiKDEiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01OTc4OQorCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRk
LWludmFsaWQtcHJvcGVydHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3Ivc3R5bGVzL3N0eWxlcy1hZGQtaW52YWxpZC1wcm9wZXJ0eS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1jYW5jZWwtZWRpdGluZy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNhbmNlbC1lZGl0aW5n
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNvbW1pdC1l
ZGl0aW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9z
dHlsZXMtY29tbWl0LWVkaXRpbmcuaHRtbDogQWRkZWQuCisKIDIwMTEtMDQtMjggIEFkYW0gUm9i
ZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVuc2tpcCBzb21lIHRlc3RzIHRoYXQg
d2VyZSBmYWlsaW5nIGR1ZSB0byBsb2NhbCBpc3N1ZXMgb24gdGhlIGJvdHMgdGhhdCBoYXZlIGJl
ZW4gcmVzb2x2ZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5
bGVzLWFkZC1pbnZhbGlkLXByb3BlcnR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMvc3R5bGVzLWFkZC1pbnZhbGlkLXByb3BlcnR5LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xZmNjM2I2NWNmZmUyYWI3ZTQyNjhmMzc5NDY4Yzc1MjY3N2U2ZTA3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLWludmFs
aWQtcHJvcGVydHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3RzIHRoYXQgYWRk
aW5nIGFuIGludmFsaWQgcHJvcGVydHkgcmV0YWlucyBpdHMgc3ludGF4LgorCitUZXh0CitCZWZv
cmUgYXBwZW5kOgorW2V4cGFuZGVkXSBlbGVtZW50LnN0eWxlIHsgKCkKK2ZvbnQtc2l6ZTogMTJw
eDsKKworPT09PT09PT0gTWF0Y2hlZCBDU1MgUnVsZXMgPT09PT09PT0KK1tleHBhbmRlZF0gZGl2
IHsgKHVzZXIgYWdlbnQgc3R5bGVzaGVldCkKK2Rpc3BsYXk6IGJsb2NrOworCisKK0FmdGVyIGFw
cGVuZDoKK1tleHBhbmRlZF0gZWxlbWVudC5zdHlsZSB7ICgpCitmb250LXNpemU6IDEycHg7CisK
Kz09PT09PT09IE1hdGNoZWQgQ1NTIFJ1bGVzID09PT09PT09CitbZXhwYW5kZWRdIGRpdiB7ICh1
c2VyIGFnZW50IHN0eWxlc2hlZXQpCitkaXNwbGF5OiBibG9jazsKKworCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWFkZC1pbnZhbGlkLXByb3BlcnR5
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1hZGQtaW52YWxpZC1w
cm9wZXJ0eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhZjRmZmUxNDI4MzBjZmRlOWM0NzIxNGUyYThkMzky
NGJiNmRjNTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVz
L3N0eWxlcy1hZGQtaW52YWxpZC1wcm9wZXJ0eS5odG1sCkBAIC0wLDAgKzEsNzYgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2VsZW1lbnRzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsKKyAgICBJ
bnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVXaXRoSWQoImluc3BlY3RlZCIsIHN0ZXAwKTsKKworICAg
IHZhciB0cmVlRWxlbWVudDsKKyAgICB2YXIgc2VjdGlvbjsKKworICAgIGZ1bmN0aW9uIHN0ZXAw
KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJCZWZvcmUgYXBwZW5k
OiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1
ZSk7CisgICAgICAgIHNlY3Rpb24gPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnNpZGVi
YXJQYW5lcy5zdHlsZXMuc2VjdGlvbnNbMF1bMV07CisgICAgICAgIHNlY3Rpb24uZXhwYW5kKCk7
CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzdGVwMSk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgLy8gQ3JlYXRl
IGFuZCBpbmNyZW1lbnQuCisgICAgICAgIHRyZWVFbGVtZW50ID0gc2VjdGlvbi5hZGROZXdCbGFu
a1Byb3BlcnR5KCk7CisgICAgICAgIHRyZWVFbGVtZW50LnN0YXJ0RWRpdGluZygpOworICAgICAg
ICB0cmVlRWxlbWVudC5uYW1lRWxlbWVudC50ZXh0Q29udGVudCA9ICJjb2xvciI7CisgICAgICAg
IHRyZWVFbGVtZW50Lm5hbWVFbGVtZW50LmRpc3BhdGNoRXZlbnQoSW5zcGVjdG9yVGVzdC5jcmVh
dGVLZXlFdmVudCgiRW50ZXIiKSk7CisKKyAgICAgICAgLy8gVXBkYXRlIGluY3JlbWVudGFsbHkg
dG8gYSB2YWxpZCB2YWx1ZS4gCisgICAgICAgIHRyZWVFbGVtZW50LnZhbHVlRWxlbWVudC50ZXh0
Q29udGVudCA9ICJyZ2IoIjsKKyAgICAgICAgdHJlZUVsZW1lbnQua2lja0ZyZWVGbG93U3R5bGVF
ZGl0Rm9yVGVzdCgpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3Bh
dGNoZXMoc3RlcDIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICB7CisgICAg
ICAgIC8vIENvbW1pdCBpbnZhbGlkIHZhbHVlLiAKKyAgICAgICAgdHJlZUVsZW1lbnQudmFsdWVF
bGVtZW50LnRleHRDb250ZW50ID0gInJnYigxIjsKKyAgICAgICAgdHJlZUVsZW1lbnQudmFsdWVF
bGVtZW50LmRpc3BhdGNoRXZlbnQoSW5zcGVjdG9yVGVzdC5jcmVhdGVLZXlFdmVudCgiRW50ZXIi
KSk7CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzdGVw
Myk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgIHsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5zZWxlY3ROb2RlV2l0aElkKCJvdGhlciIsIHN0ZXA0KTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBzdGVwNCgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVX
aXRoSWQoImluc3BlY3RlZCIsIHN0ZXA1KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNSgp
CisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWZ0ZXIgYXBwZW5kOiIp
OworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1ZSk7
CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorCis8L3Nj
cmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyB0
aGF0IGFkZGluZyBhbiBpbnZhbGlkIHByb3BlcnR5IHJldGFpbnMgaXRzIHN5bnRheC4KKzwvcD4K
KworPGRpdiBpZD0iaW5zcGVjdGVkIiBzdHlsZT0iZm9udC1zaXplOiAxMnB4Ij5UZXh0PC9kaXY+
Cis8ZGl2IGlkPSJvdGhlciI+PC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNhbmNlbC1lZGl0aW5nLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNhbmNlbC1lZGl0
aW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzc0OWRlMjlkNGU5MjUzYmNkNzA1NmZlMjNh
ZDExZmZhZmNjMGQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0
eWxlcy9zdHlsZXMtY2FuY2VsLWVkaXRpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAK
K1Rlc3RzIHRoYXQgZWRpdGluZyBpcyBjYW5jZWxlZCBwcm9wZXJseSBhZnRlciBpbmNyZW1lbnRh
bCBlZGl0aW5nLgorCitUZXh0CitbZXhwYW5kZWRdIGVsZW1lbnQuc3R5bGUgeyAoKQorY29sb3I6
IHJlZDsKKworPT09PT09PT0gTWF0Y2hlZCBDU1MgUnVsZXMgPT09PT09PT0KK1tleHBhbmRlZF0g
ZGl2IHsgKHVzZXIgYWdlbnQgc3R5bGVzaGVldCkKK2Rpc3BsYXk6IGJsb2NrOworCisKK0FmdGVy
IGFwcGVuZDoKK1tleHBhbmRlZF0gZWxlbWVudC5zdHlsZSB7ICgpCitjb2xvcjogcmVkOworCis9
PT09PT09PSBNYXRjaGVkIENTUyBSdWxlcyA9PT09PT09PQorW2V4cGFuZGVkXSBkaXYgeyAodXNl
ciBhZ2VudCBzdHlsZXNoZWV0KQorZGlzcGxheTogYmxvY2s7CisKKworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1jYW5jZWwtZWRpdGluZy5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY2FuY2VsLWVkaXRpbmcuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jOTlmYTMxYmEzYzk5YzE3ODExY2Q1ODhjNjFjZTBlY2Y0Njc3NTNhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY2FuY2Vs
LWVkaXRpbmcuaHRtbApAQCAtMCwwICsxLDY0IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIFdlYklu
c3BlY3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIik7CisgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3RO
b2RlV2l0aElkKCJpbnNwZWN0ZWQiLCBzdGVwMSk7CisKKyAgICB2YXIgdHJlZUVsZW1lbnQ7Cisg
ICAgdmFyIHNlY3Rpb247CisKKyAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgeworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1ZSk7CisgICAgICAgIHRy
ZWVFbGVtZW50ID0gSW5zcGVjdG9yVGVzdC5nZXRFbGVtZW50U3R5bGVQcm9wZXJ0eVRyZWVJdGVt
KCJjb2xvciIpOworCisgICAgICAgIHRyZWVFbGVtZW50LnN0YXJ0RWRpdGluZygpOworICAgICAg
ICB0cmVlRWxlbWVudC5uYW1lRWxlbWVudC50ZXh0Q29udGVudCA9ICJjb2xvciI7CisgICAgICAg
IHRyZWVFbGVtZW50Lm5hbWVFbGVtZW50LmRpc3BhdGNoRXZlbnQoSW5zcGVjdG9yVGVzdC5jcmVh
dGVLZXlFdmVudCgiRW50ZXIiKSk7CisKKyAgICAgICAgLy8gVXBkYXRlIGluY3JlbWVudGFsbHks
IGRvIG5vdCBjb21taXQuCisgICAgICAgIHRyZWVFbGVtZW50LnZhbHVlRWxlbWVudC50ZXh0Q29u
dGVudCA9ICJncmVlbiI7CisgICAgICAgIHRyZWVFbGVtZW50LmtpY2tGcmVlRmxvd1N0eWxlRWRp
dEZvclRlc3QoKTsKKworICAgICAgICAvLyBDYW5jZWwgZWRpdGluZy4KKyAgICAgICAgdHJlZUVs
ZW1lbnQudmFsdWVFbGVtZW50LmZpcnN0Q2hpbGQuc2VsZWN0KCk7CisgICAgICAgIHRyZWVFbGVt
ZW50LnZhbHVlRWxlbWVudC5kaXNwYXRjaEV2ZW50KEluc3BlY3RvclRlc3QuY3JlYXRlS2V5RXZl
bnQoIlUrMDAxQiIpKTsgLy8gRXNjYXBlCisgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQ
ZW5kaW5nRGlzcGF0Y2hlcyhzdGVwMik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDIoKQor
ICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0aElkKCJvdGhlciIsIHN0
ZXAzKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgeworICAgICAgICBJbnNw
ZWN0b3JUZXN0LnNlbGVjdE5vZGVXaXRoSWQoImluc3BlY3RlZCIsIHN0ZXA0KTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBzdGVwNCgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiQWZ0ZXIgYXBwZW5kOiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3Rl
ZEVsZW1lbnRTdHlsZXModHJ1ZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0
KCk7CisgICAgfQorfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgorPHA+CitUZXN0cyB0aGF0IGVkaXRpbmcgaXMgY2FuY2VsZWQgcHJvcGVybHkgYWZ0
ZXIgaW5jcmVtZW50YWwgZWRpdGluZy4KKzwvcD4KKworPGRpdiBpZD0iaW5zcGVjdGVkIiBzdHls
ZT0iY29sb3I6IHJlZCI+VGV4dDwvZGl2PgorPGRpdiBpZD0ib3RoZXIiPjwvZGl2PgorCis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0
eWxlcy1jb21taXQtZWRpdGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
c3R5bGVzL3N0eWxlcy1jb21taXQtZWRpdGluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM5
OGZmMzI5Yzg0MmYwOTBmZDc1ZGFmYjkyYjkyYzY4N2YwMmIzYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNvbW1pdC1lZGl0aW5nLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDIxIEBACitUZXN0cyB0aGF0IGVkaXRpbmcgaXMgY2FuY2VsZWQg
cHJvcGVybHkgYWZ0ZXIgaW5jcmVtZW50YWwgZWRpdGluZy4KKworVGV4dAorW2V4cGFuZGVkXSBl
bGVtZW50LnN0eWxlIHsgKCkKK2NvbG9yOiByZWQ7CisKKz09PT09PT09IE1hdGNoZWQgQ1NTIFJ1
bGVzID09PT09PT09CitbZXhwYW5kZWRdIGRpdiB7ICh1c2VyIGFnZW50IHN0eWxlc2hlZXQpCitk
aXNwbGF5OiBibG9jazsKKworCitBZnRlciBhcHBlbmQ6CitbZXhwYW5kZWRdIGVsZW1lbnQuc3R5
bGUgeyAoKQorY29sb3I6IGdyZWVuOworCis9PT09PT09PSBNYXRjaGVkIENTUyBSdWxlcyA9PT09
PT09PQorW2V4cGFuZGVkXSBkaXYgeyAodXNlciBhZ2VudCBzdHlsZXNoZWV0KQorZGlzcGxheTog
YmxvY2s7CisKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0
eWxlcy1jb21taXQtZWRpdGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9z
dHlsZXMtY29tbWl0LWVkaXRpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYmIzNjY0Y2VkNDJjMTYyYjEz
Y2U4ODA0YzUzMTg3NjkxNGNlNzUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3N0eWxlcy9zdHlsZXMtY29tbWl0LWVkaXRpbmcuaHRtbApAQCAtMCwwICsxLDY1IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rl
c3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIik7
CisgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0aElkKCJpbnNwZWN0ZWQiLCBzdGVwMSk7
CisKKyAgICB2YXIgdHJlZUVsZW1lbnQ7CisgICAgdmFyIHNlY3Rpb247CisKKyAgICBmdW5jdGlv
biBzdGVwMSgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1l
bnRTdHlsZXModHJ1ZSk7CisgICAgICAgIHRyZWVFbGVtZW50ID0gSW5zcGVjdG9yVGVzdC5nZXRF
bGVtZW50U3R5bGVQcm9wZXJ0eVRyZWVJdGVtKCJjb2xvciIpOworCisgICAgICAgIHRyZWVFbGVt
ZW50LnN0YXJ0RWRpdGluZygpOworICAgICAgICB0cmVlRWxlbWVudC5uYW1lRWxlbWVudC50ZXh0
Q29udGVudCA9ICJjb2xvciI7CisgICAgICAgIHRyZWVFbGVtZW50Lm5hbWVFbGVtZW50LmRpc3Bh
dGNoRXZlbnQoSW5zcGVjdG9yVGVzdC5jcmVhdGVLZXlFdmVudCgiRW50ZXIiKSk7CisKKyAgICAg
ICAgLy8gVXBkYXRlIGluY3JlbWVudGFsbHksIGRvIG5vdCBjb21taXQuCisgICAgICAgIHRyZWVF
bGVtZW50LnZhbHVlRWxlbWVudC50ZXh0Q29udGVudCA9ICJyZ2IoMSI7CisgICAgICAgIHRyZWVF
bGVtZW50LmtpY2tGcmVlRmxvd1N0eWxlRWRpdEZvclRlc3QoKTsKKworICAgICAgICAvLyBDb21t
aXQgZWRpdGluZy4KKyAgICAgICAgdHJlZUVsZW1lbnQudmFsdWVFbGVtZW50LnRleHRDb250ZW50
ID0gImdyZWVuIjsKKyAgICAgICAgdHJlZUVsZW1lbnQudmFsdWVFbGVtZW50LmZpcnN0Q2hpbGQu
c2VsZWN0KCk7CisgICAgICAgIHRyZWVFbGVtZW50LnZhbHVlRWxlbWVudC5kaXNwYXRjaEV2ZW50
KEluc3BlY3RvclRlc3QuY3JlYXRlS2V5RXZlbnQoIkVudGVyIikpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoc3RlcDIpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHN0ZXAyKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdp
dGhJZCgib3RoZXIiLCBzdGVwMyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDMoKQorICAg
IHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0aElkKCJpbnNwZWN0ZWQiLCBz
dGVwNCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQoKQorICAgIHsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFmdGVyIGFwcGVuZDoiKTsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKHRydWUpOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdHMgdGhhdCBlZGl0aW5nIGlzIGNhbmNl
bGVkIHByb3Blcmx5IGFmdGVyIGluY3JlbWVudGFsIGVkaXRpbmcuCis8L3A+CisKKzxkaXYgaWQ9
Imluc3BlY3RlZCIgc3R5bGU9ImNvbG9yOiByZWQiPlRleHQ8L2Rpdj4KKzxkaXYgaWQ9Im90aGVy
Ij48L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNhMWMxYjllMzI0Yzk1
Nzg4NTdiOWJhYjA5NWM0MzBlZjkzNmYwNzUuLjNmZGQ1M2VhOTk2MDYxM2VjN2U2ZGRhMmFkNTJl
ZThhNzY4MjQ0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyOCBAQAogMjAxMS0wNC0yOSAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ1NTIGVkaXRpbmcgYnJl
YWtzIHdoZW4gZW50ZXJpbmcgImNvbG9yOiByZ2IoMSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5Nzg5CisKKyAgICAgICAgVGVzdHM6IGluc3BlY3Rv
ci9zdHlsZXMvc3R5bGVzLWFkZC1pbnZhbGlkLXByb3BlcnR5Lmh0bWwKKyAgICAgICAgICAgICAg
IGluc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNhbmNlbC1lZGl0aW5nLmh0bWwKKyAgICAgICAgICAg
ICAgIGluc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNvbW1pdC1lZGl0aW5nLmh0bWwKKworICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90b3R5cGUuc2V0VGV4dC5jYWxsYmFjayk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkucHJvdG90eXBlLnNldFRleHQpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5zZWxlY3RFbGVtZW50
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90
eXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJv
dG90eXBlLnN0eWxlVGV4dC51cGRhdGVJbnRlcmZhY2UubWFqb3JDaGFuZ2UuaXNSZXZlcnQub3Jp
Z2luYWxQcm9wZXJ0eVRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZy5kZWZhdWx0RmluaXNo
SGFuZGxlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nLmtleURvd25FdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcpOgorCisyMDEx
LTA0LTI5ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KKwogICAgICAgICBS
ZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFk
ZCAib3BlbiBsaW5rIGluIG5ldyB0YWIiIGFjdGlvbiBpbnRvIHRoZSBuZXR3b3JrIGFuZCByZXNv
dXJjZXMgcGFuZWxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9DU1NTdHlsZU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9DU1NTdHlsZU1vZGVsLmpzCmluZGV4IGU4NWZiNmRlY2ZhNzIwOTk4ZjMwZTkwYjk4MjE0YmRh
MzlhZGNhNjAuLjI2NzcxYjcyM2Y3NzY0ZWY0YTkyM2QzZWM5ODU5YzE4MTg2NmVkOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwu
anMKQEAgLTUzMiw3ICs1MzIsNiBAQCBXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkucHJvdG90eXBl
ID0gewogCiAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLl9maXJlU3R5bGVT
aGVldENoYW5nZWQoc3R5bGUuaWQuc3R5bGVTaGVldElkLCBtYWpvckNoYW5nZSwgdXNlckNhbGxi
YWNrID8gdXNlckNhbGxiYWNrLmJpbmQodGhpcywgc3R5bGUpIDogbnVsbCk7CiAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoSlNPTi5zdHJpbmdpZnko
ZXJyb3IpKTsKICAgICAgICAgICAgICAgICBpZiAodXNlckNhbGxiYWNrKQogICAgICAgICAgICAg
ICAgICAgICB1c2VyQ2FsbGJhY2sobnVsbCk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpp
bmRleCA4ODg4ZDJjYWM1ZDg5ODM1YTU0ZWRjMWVhNTgyYjk1YzU0MzA5ZWI4Li4yN2IxM2Q2YzYx
Mjg3YTQwMGZjZDNhOWM4ODhhMDQ4YjMyMGI2YWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKQEAgLTE2NDEs
NyArMTY0MSw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogICAgICAgICAgICAgICAgIC8vIEVudGVyIG9yIGNvbG9uIChmb3IgbmFtZSkvc2Vt
aWNvbG9uIG91dHNpZGUgb2Ygc3RyaW5nIChmb3IgdmFsdWUpLgogICAgICAgICAgICAgICAgIGV2
ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuICJtb3ZlLWZvcndh
cmQiOwotICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlDb2RlID09PSBXZWJJbnNwZWN0
b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXlzLkVzYy5jb2RlKQorICAgICAgICAgICAgfSBlbHNlIGlm
IChldmVudC5rZXlDb2RlID09PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXlzLkVz
Yy5jb2RlIHx8IGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVKzAwMUIiKQogICAgICAgICAgICAg
ICAgIHJldHVybiAiY2FuY2VsIjsKICAgICAgICAgICAgIGVsc2UgaWYgKCFpc0VkaXRpbmdOYW1l
ICYmIHRoaXMuX25ld1Byb3BlcnR5ICYmIGV2ZW50LmtleUNvZGUgPT09IFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0LktleXMuQmFja3NwYWNlLmNvZGUpIHsKICAgICAgICAgICAgICAgICAv
LyBGb3IgYSBuZXcgcHJvcGVydHksIHdoZW4gQmFja3NwYWNlIGlzIHByZXNzZWQgYXQgdGhlIGJl
Z2lubmluZyBvZiBuZXcgcHJvcGVydHkgdmFsdWUsIG1vdmUgYmFjayB0byB0aGUgcHJvcGVydHkg
bmFtZS4KQEAgLTE2NzksNiArMTY3OSw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuICJtb3ZlLWZvcndhcmQi
OwogICAgICAgICB9CiAKKyAgICAgICAgZGVsZXRlIHRoaXMub3JpZ2luYWxQcm9wZXJ0eVRleHQ7
CiAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc3RhcnRFZGl0aW5nU3R5bGUo
KTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyhzZWxlY3RFbGVtZW50LCB7CiAg
ICAgICAgICAgICBjb250ZXh0OiBjb250ZXh0LApAQCAtMTcwMiw3ICsxNzAzLDcgQEAgV2ViSW5z
cGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX2FwcGx5RnJlZUZsb3dTdHlsZVRleHRFZGl0KCk7CiAgICAgfSwKIAotICAgIF9hcHBseUZy
ZWVGbG93U3R5bGVUZXh0RWRpdDogZnVuY3Rpb24oKQorICAgIF9hcHBseUZyZWVGbG93U3R5bGVU
ZXh0RWRpdDogZnVuY3Rpb24obm93KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2FwcGx5RnJl
ZUZsb3dTdHlsZVRleHRFZGl0VGltZXIpCiAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5f
YXBwbHlGcmVlRmxvd1N0eWxlVGV4dEVkaXRUaW1lcik7CkBAIC0xNzExLDcgKzE3MTIsMTUgQEAg
V2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHsKICAgICAgICAgICAgIHRoaXMuYXBwbHlTdHlsZVRleHQodGhpcy5uYW1lRWxlbWVudC50
ZXh0Q29udGVudCArICI6ICIgKyB0aGlzLnZhbHVlRWxlbWVudC50ZXh0Q29udGVudCk7CiAgICAg
ICAgIH0KLSAgICAgICAgdGhpcy5fYXBwbHlGcmVlRmxvd1N0eWxlVGV4dEVkaXRUaW1lciA9IHNl
dFRpbWVvdXQoYXBwbHkuYmluZCh0aGlzKSwgMTAwKTsKKyAgICAgICAgaWYgKG5vdykKKyAgICAg
ICAgICAgIGFwcGx5LmNhbGwodGhpcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMu
X2FwcGx5RnJlZUZsb3dTdHlsZVRleHRFZGl0VGltZXIgPSBzZXRUaW1lb3V0KGFwcGx5LmJpbmQo
dGhpcyksIDEwMCk7CisgICAgfSwKKworICAgIGtpY2tGcmVlRmxvd1N0eWxlRWRpdEZvclRlc3Q6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2FwcGx5RnJlZUZsb3dTdHlsZVRleHRF
ZGl0KHRydWUpOwogICAgIH0sCiAKICAgICBfaGFuZGxlVXBPckRvd25LZXlQcmVzc2VkOiBmdW5j
dGlvbihldmVudCkKQEAgLTE3NjksMTIgKzE3NzgsNiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9w
ZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGV2ZW50LmhhbmRsZWQg
PSB0cnVlOwogICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKIAotICAgICAgICAg
ICAgaWYgKCEoIm9yaWdpbmFsUHJvcGVydHlUZXh0IiBpbiB0aGlzKSkgewotICAgICAgICAgICAg
ICAgIC8vIFJlbWVtYmVyIHRoZSBydWxlJ3Mgb3JpZ2luYWwgQ1NTIHRleHQgb24gW1BhZ2VdKFVw
fERvd24pLCBzbyBpdCBjYW4gYmUgcmVzdG9yZWQKLSAgICAgICAgICAgICAgICAvLyBpZiB0aGUg
ZWRpdGluZyBpcyBjYW5jZWxlZC4KLSAgICAgICAgICAgICAgICB0aGlzLm9yaWdpbmFsUHJvcGVy
dHlUZXh0ID0gdGhpcy5wcm9wZXJ0eS5wcm9wZXJ0eVRleHQ7Ci0gICAgICAgICAgICB9Ci0KICAg
ICAgICAgICAgIC8vIFN5bnRoZXNpemUgcHJvcGVydHkgdGV4dCBkaXNyZWdhcmRpbmcgYW55IGNv
bW1lbnRzLCBjdXN0b20gd2hpdGVzcGFjZSBldGMuCiAgICAgICAgICAgICB0aGlzLmFwcGx5U3R5
bGVUZXh0KHRoaXMubmFtZUVsZW1lbnQudGV4dENvbnRlbnQgKyAiOiAiICsgdGhpcy52YWx1ZUVs
ZW1lbnQudGV4dENvbnRlbnQpOwogICAgICAgICB9CkBAIC0xNzk1LDI1ICsxNzk4LDI5IEBAIFdl
Ykluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAg
ICBpZiAoZWRpdGVkRWxlbWVudC5wYXJlbnRFbGVtZW50KQogICAgICAgICAgICAgZWRpdGVkRWxl
bWVudC5wYXJlbnRFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImNoaWxkLWVkaXRpbmciKTsKIAot
ICAgICAgICBkZWxldGUgdGhpcy5vcmlnaW5hbFByb3BlcnR5VGV4dDsKICAgICAgICAgV2ViSW5z
cGVjdG9yLnBhbmVscy5lbGVtZW50cy5lbmRFZGl0aW5nU3R5bGUoKTsKICAgICB9LAogCiAgICAg
ZWRpdGluZ0NhbmNlbGxlZDogZnVuY3Rpb24oZWxlbWVudCwgY29udGV4dCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX3JlbW92ZVByb21wdCgpOwotICAgICAgICBpZiAoIm9yaWdpbmFsUHJvcGVydHlU
ZXh0IiBpbiB0aGlzKQotICAgICAgICAgICAgdGhpcy5hcHBseVN0eWxlVGV4dCh0aGlzLm9yaWdp
bmFsUHJvcGVydHlUZXh0LCB0cnVlKTsKLSAgICAgICAgZWxzZSB7CisgICAgICAgIHRoaXMuX3Jl
dmVydFN0eWxlVXBvbkVkaXRpbmdDYW5jZWxlZCh0aGlzLm9yaWdpbmFsUHJvcGVydHlUZXh0KTsK
KyAgICAgICAgLy8gVGhpcyBzaG91bGQgaGFwcGVuIGxhc3QsIGFzIGl0IGNsZWFycyB0aGUgaW5m
byBuZWNlc3NhcnkgdG8gcmVzdG9yZSB0aGUgcHJvcGVydHkgdmFsdWUgYWZ0ZXIgW1BhZ2VdVXAv
RG93biBjaGFuZ2VzLgorICAgICAgICB0aGlzLmVkaXRpbmdFbmRlZChjb250ZXh0KTsKKyAgICB9
LAorCisgICAgX3JldmVydFN0eWxlVXBvbkVkaXRpbmdDYW5jZWxlZDogZnVuY3Rpb24ob3JpZ2lu
YWxQcm9wZXJ0eVRleHQpCisgICAgeworICAgICAgICBpZiAodHlwZW9mIG9yaWdpbmFsUHJvcGVy
dHlUZXh0ID09PSAic3RyaW5nIikgeworICAgICAgICAgICAgZGVsZXRlIHRoaXMub3JpZ2luYWxQ
cm9wZXJ0eVRleHQ7CisgICAgICAgICAgICB0aGlzLmFwcGx5U3R5bGVUZXh0KG9yaWdpbmFsUHJv
cGVydHlUZXh0LCB0cnVlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBpZiAodGhpcy5fbmV3UHJvcGVydHkpCiAgICAgICAgICAgICAgICAgdGhpcy50cmVlT3V0
bGluZS5yZW1vdmVDaGlsZCh0aGlzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICB0aGlzLnVwZGF0ZVRpdGxlKCk7CiAgICAgICAgIH0KLQotICAgICAgICAvLyBUaGlzIHNob3Vs
ZCBoYXBwZW4gbGFzdCwgYXMgaXQgY2xlYXJzIHRoZSBpbmZvIG5lY2Vzc2FyeSB0byByZXN0b3Jl
IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhZnRlciBbUGFnZV1VcC9Eb3duIGNoYW5nZXMuCi0gICAgICAg
IHRoaXMuZWRpdGluZ0VuZGVkKGNvbnRleHQpOwotICAgIH0sCisgICAgfSwgCiAKICAgICBlZGl0
aW5nQ29tbWl0dGVkOiBmdW5jdGlvbihlbGVtZW50LCB1c2VySW5wdXQsIHByZXZpb3VzQ29udGVu
dCwgY29udGV4dCwgbW92ZURpcmVjdGlvbikKICAgICB7CkBAIC0xODU2LDcgKzE4NjMsNyBAQCBX
ZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5VGV4dCA9IHRoaXMu
bmFtZUVsZW1lbnQudGV4dENvbnRlbnQgKyAiOiAiICsgdXNlcklucHV0OwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgdGhpcy5hcHBseVN0eWxlVGV4dChwcm9wZXJ0eVRleHQsIHRydWUpOwor
ICAgICAgICAgICAgdGhpcy5hcHBseVN0eWxlVGV4dChwcm9wZXJ0eVRleHQsIHRydWUsIHRydWUp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKCFpc0RhdGFQYXN0ZWQgJiYgIXRo
aXMuX25ld1Byb3BlcnR5KQogICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVGl0bGUoKTsKQEAg
LTE5MjcsMzggKzE5MzQsNDAgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgX2hhc0JlZW5BcHBsaWVk
VG9QYWdlVmlhVXBEb3duOiBmdW5jdGlvbigpCisgICAgX2hhc0JlZW5Nb2RpZmllZEluY3JlbWVu
dGFsbHk6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIC8vIE5ldyBwcm9wZXJ0aWVzIGFwcGxp
ZWQgdmlhIHVwL2Rvd24gaGF2ZSBhbiBvcmlnaW5hbFByb3BlcnR5VGV4dCBhbmQgd2lsbCBiZSBk
ZWxldGVkIGxhdGVyCiAgICAgICAgIC8vIG9uLCBpZiBjYW5jZWxsZWQsIHdoZW4gdGhlIGVtcHR5
IHN0cmluZyBnZXRzIGFwcGxpZWQgYXMgdGhlaXIgc3R5bGUgdGV4dC4KLSAgICAgICAgcmV0dXJu
ICgib3JpZ2luYWxQcm9wZXJ0eVRleHQiIGluIHRoaXMpOworICAgICAgICByZXR1cm4gdHlwZW9m
IHRoaXMub3JpZ2luYWxQcm9wZXJ0eVRleHQgPT09ICJzdHJpbmciOwogICAgIH0sCiAKLSAgICBh
cHBseVN0eWxlVGV4dDogZnVuY3Rpb24oc3R5bGVUZXh0LCB1cGRhdGVJbnRlcmZhY2UpCisgICAg
YXBwbHlTdHlsZVRleHQ6IGZ1bmN0aW9uKHN0eWxlVGV4dCwgdXBkYXRlSW50ZXJmYWNlLCBtYWpv
ckNoYW5nZSwgaXNSZXZlcnQpCiAgICAgeworICAgICAgICAvLyBMZWF2ZSBhIHdheSB0byBjYW5j
ZWwgZWRpdGluZyBhZnRlciBpbmNyZW1lbnRhbCBjaGFuZ2VzLgorICAgICAgICBpZiAoIWlzUmV2
ZXJ0ICYmICF1cGRhdGVJbnRlcmZhY2UgJiYgIXRoaXMuX2hhc0JlZW5Nb2RpZmllZEluY3JlbWVu
dGFsbHkoKSkgeworICAgICAgICAgICAgLy8gUmVtZW1iZXIgdGhlIHJ1bGUncyBvcmlnaW5hbCBD
U1MgdGV4dCBvbiBbUGFnZV0oVXB8RG93biksIHNvIGl0IGNhbiBiZSByZXN0b3JlZAorICAgICAg
ICAgICAgLy8gaWYgdGhlIGVkaXRpbmcgaXMgY2FuY2VsZWQuCisgICAgICAgICAgICB0aGlzLm9y
aWdpbmFsUHJvcGVydHlUZXh0ID0gdGhpcy5wcm9wZXJ0eS5wcm9wZXJ0eVRleHQ7CisgICAgICAg
IH0KKwogICAgICAgICB2YXIgc2VjdGlvbiA9IHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbjsKICAg
ICAgICAgdmFyIGVsZW1lbnRzUGFuZWwgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzOwog
ICAgICAgICBzdHlsZVRleHQgPSBzdHlsZVRleHQucmVwbGFjZSgvXHMvZywgIiAiKS50cmltKCk7
IC8vIFJlcGxhY2UgJm5ic3A7IHdpdGggd2hpdGVzcGFjZS4KICAgICAgICAgdmFyIHN0eWxlVGV4
dExlbmd0aCA9IHN0eWxlVGV4dC5sZW5ndGg7Ci0gICAgICAgIGlmICghc3R5bGVUZXh0TGVuZ3Ro
ICYmIHVwZGF0ZUludGVyZmFjZSAmJiB0aGlzLl9uZXdQcm9wZXJ0eSAmJiAhdGhpcy5faGFzQmVl
bkFwcGxpZWRUb1BhZ2VWaWFVcERvd24oKSkgeworICAgICAgICBpZiAoIXN0eWxlVGV4dExlbmd0
aCAmJiB1cGRhdGVJbnRlcmZhY2UgJiYgIWlzUmV2ZXJ0ICYmIHRoaXMuX25ld1Byb3BlcnR5ICYm
ICF0aGlzLl9oYXNCZWVuTW9kaWZpZWRJbmNyZW1lbnRhbGx5KCkpIHsKICAgICAgICAgICAgIC8v
IFRoZSB1c2VyIGRlbGV0ZWQgZXZlcnl0aGluZyBhbmQgbmV2ZXIgYXBwbGllZCBhIG5ldyBwcm9w
ZXJ0eSB2YWx1ZSB2aWEgVXAvRG93biBzY3JvbGxpbmcsIHNvIHJlbW92ZSB0aGUgdHJlZSBlbGVt
ZW50IGFuZCB1cGRhdGUuCiAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZW1vdmVDaGlsZCh0aGlz
KTsKICAgICAgICAgICAgIHNlY3Rpb24uYWZ0ZXJVcGRhdGUoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKG5ld1N0eWxlKQorICAg
ICAgICBmdW5jdGlvbiBjYWxsYmFjayhvcmlnaW5hbFByb3BlcnR5VGV4dCwgbmV3U3R5bGUpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmICghbmV3U3R5bGUpIHsKLSAgICAgICAgICAgICAgICAv
LyBUaGUgdXNlciB0eXBlZCBzb21ldGhpbmcsIGJ1dCBpdCBkaWRuJ3QgcGFyc2UuIEp1c3QgYWJv
cnQgYW5kIHJlc3RvcmUKLSAgICAgICAgICAgICAgICAvLyB0aGUgb3JpZ2luYWwgdGl0bGUgZm9y
IHRoaXMgcHJvcGVydHkuICBJZiB0aGlzIHdhcyBhIG5ldyBhdHRyaWJ1dGUgYW5kCi0gICAgICAg
ICAgICAgICAgLy8gd2UgY291bGRuJ3QgcGFyc2UsIHRoZW4ganVzdCByZW1vdmUgaXQuCi0gICAg
ICAgICAgICAgICAgaWYgKHRoaXMuX25ld1Byb3BlcnR5KSB7Ci0gICAgICAgICAgICAgICAgICAg
IHRoaXMucGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpOwotICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgaWYgKHVwZGF0ZUludGVyZmFjZSkgeworICAgICAgICAgICAg
ICAgICAgICAvLyBJdCBkaWQgbm90IGFwcGx5LCBjYW5jZWwgZWRpdGluZy4KKyAgICAgICAgICAg
ICAgICAgICAgdGhpcy5fcmV2ZXJ0U3R5bGVVcG9uRWRpdGluZ0NhbmNlbGVkKG9yaWdpbmFsUHJv
cGVydHlUZXh0KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHVwZGF0
ZUludGVyZmFjZSkKLSAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMTk3Nyw3ICsxOTg2LDcg
QEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgbm90IGhhbmRsZSB0cmFpbGluZyBjb21tZW50cy4K
ICAgICAgICAgaWYgKHN0eWxlVGV4dC5sZW5ndGggJiYgIS87XHMqJC8udGVzdChzdHlsZVRleHQp
KQogICAgICAgICAgICAgc3R5bGVUZXh0ICs9ICI7IjsKLSAgICAgICAgdGhpcy5wcm9wZXJ0eS5z
ZXRUZXh0KHN0eWxlVGV4dCwgdXBkYXRlSW50ZXJmYWNlLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsK
KyAgICAgICAgdGhpcy5wcm9wZXJ0eS5zZXRUZXh0KHN0eWxlVGV4dCwgbWFqb3JDaGFuZ2UsIGNh
bGxiYWNrLmJpbmQodGhpcywgdGhpcy5vcmlnaW5hbFByb3BlcnR5VGV4dCkpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpp
bmRleCBjMzdjMjhiZDllN2FkOGUwZWRmMWE4ZTQyNzk1ZTAwMGU0MWFmMDVhLi43ZDFlYWY1NTYy
NTBhZTg5NDk4YjI3NjdhOTRmYjg5NTlhYjhjNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMTUxOSw3ICsxNTE5LDcgQEAgV2Vi
SW5zcGVjdG9yLnN0YXJ0RWRpdGluZyA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbmZpZykKICAgICAg
ICAgICAgIGV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50LnNoaWZ0S2V5ICYmICFldmVudC5tZXRhS2V5
ICYmICFldmVudC5hbHRLZXk7CiAgICAgICAgIGlmIChpc0VudGVyS2V5KGV2ZW50KSAmJiAoZXZl
bnQuaXNNZXRhT3JDdHJsRm9yVGVzdCB8fCAhY29uZmlnLm11bHRpbGluZSB8fCBpc01ldGFPckN0
cmwpKQogICAgICAgICAgICAgcmV0dXJuICJjb21taXQiOwotICAgICAgICBlbHNlIGlmIChldmVu
dC5rZXlDb2RlID09PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXlzLkVzYy5jb2Rl
KQorICAgICAgICBlbHNlIGlmIChldmVudC5rZXlDb2RlID09PSBXZWJJbnNwZWN0b3IuS2V5Ym9h
cmRTaG9ydGN1dC5LZXlzLkVzYy5jb2RlIHx8IGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVKzAw
MUIiKQogICAgICAgICAgICAgcmV0dXJuICJjYW5jZWwiOwogICAgICAgICBlbHNlIGlmIChldmVu
dC5rZXlJZGVudGlmaWVyID09PSAiVSswMDA5IikgLy8gVGFiIGtleQogICAgICAgICAgICAgcmV0
dXJuICJtb3ZlLSIgKyAoZXZlbnQuc2hpZnRLZXkgPyAiYmFja3dhcmQiIDogImZvcndhcmQiKTsK
</data>
<flag name="review"
          id="84551"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>