<?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>77865</bug_id>
          
          <creation_ts>2012-02-06 04:47:42 -0800</creation_ts>
          <short_desc>Web Inspector: Closed computed style sidebar pane rebuilds, resulting in slowness</short_desc>
          <delta_ts>2012-02-08 02:01:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>549902</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-06 04:47:42 -0800</bug_when>
    <thetext>Patch to follow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549957</commentid>
    <comment_count>1</comment_count>
      <attachid>125633</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-06 06:37:57 -0800</bug_when>
    <thetext>Created attachment 125633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549990</commentid>
    <comment_count>2</comment_count>
      <attachid>125633</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-06 07:35:24 -0800</bug_when>
    <thetext>Comment on attachment 125633
Patch

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

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:258
&gt; +            resultStyles.computedStyle = new WebInspector.CSSStyleDeclaration({ cssProperties: [], shorthandEntries: {} });

Why not null?

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:-493
&gt; -    _markUsedProperties: function(styleRules, usedProperties, disabledComputedProperties)

I&apos;d suggest that you remove disabledComputedProperties as a separate change.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:854
&gt; +    // Overriding expand() rather than onexpand() to eliminate visual slowness due to a possible backend trip.

Why exactly is this needed?

&gt; LayoutTests/http/tests/inspector/elements-test.js:86
&gt; +InspectorTest.selectNodeAndWaitForStyles = function(idValue, expandComputedStyles, callback)

Not the best change to the harness given that all the clients now need to think about the computed style. I&apos;d suggest that you introduce a separate command that expands it separately.

&gt; LayoutTests/http/tests/inspector/elements-test.js:107
&gt; +            InspectorTest.runAfterPendingDispatches(function() {

We should not use runAfterPendingDispatches if at all possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550034</commentid>
    <comment_count>3</comment_count>
      <attachid>125657</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-06 08:51:50 -0800</bug_when>
    <thetext>Created attachment 125657
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550041</commentid>
    <comment_count>4</comment_count>
      <attachid>125657</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-06 08:58:48 -0800</bug_when>
    <thetext>Comment on attachment 125657
Patch

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

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:864
&gt; +        if (WebInspector.panels.elements.sidebarPanes.styles.sections[0][0].propertiesElement.children.length)

You should never access styles via the panel.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:870
&gt; +    _expandedForTest: function(node)

You could sniff instead.

&gt; LayoutTests/inspector/elements/elements-panel-styles.html:11
&gt; +    InspectorTest.selectNodeAndWaitForStylesWithComputed(&quot;foo&quot;, step1);

It would be great to have a test that checks that computed style is not loaded initially, but is loaded on demand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550083</commentid>
    <comment_count>5</comment_count>
      <attachid>125665</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-06 10:18:52 -0800</bug_when>
    <thetext>Created attachment 125665
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550778</commentid>
    <comment_count>6</comment_count>
      <attachid>125665</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-07 03:23:37 -0800</bug_when>
    <thetext>Comment on attachment 125665
Patch

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

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:860
&gt; +            WebInspector.SidebarPane.prototype.expand.call(this, userCallback);

You could sniff this in a test.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:866
&gt; +            WebInspector.panels.elements.sidebarPanes.styles._refreshComputedStyleSection(callback.bind(this, userCallback));

I would leave this as the only path for the sake of the code simplicity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550808</commentid>
    <comment_count>7</comment_count>
      <attachid>125807</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-07 03:52:25 -0800</bug_when>
    <thetext>Created attachment 125807
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550919</commentid>
    <comment_count>8</comment_count>
      <attachid>125807</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-07 06:09:25 -0800</bug_when>
    <thetext>Comment on attachment 125807
Patch

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

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:429
&gt; +        if (nodeComputedStyle || nodeComputedStyle === null)

Why did this change?

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:618
&gt; +            if (computedStyle || computedStyle === null)

Why did this change?

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:863
&gt; +        WebInspector.panels.elements.sidebarPanes.styles._refreshComputedStyleSection(callback.bind(this));

You should not reach out for this via the elements panel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550974</commentid>
    <comment_count>9</comment_count>
      <attachid>125844</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-07 07:39:50 -0800</bug_when>
    <thetext>Created attachment 125844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551911</commentid>
    <comment_count>10</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-02-08 02:01:10 -0800</bug_when>
    <thetext>Committed r107055: &lt;http://trac.webkit.org/changeset/107055&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125633</attachid>
            <date>2012-02-06 06:37:57 -0800</date>
            <delta_ts>2012-02-06 08:51:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77865-20120206183755.patch</filename>
            <type>text/plain</type>
            <size>37644</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2Nzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM1OGYwYjJjZGVhMDBi
ZDJiYTEzYzBhZWQxOGUxOWRiMGFmNWY4MC4uYzczZjhhZDlhNzNlOTlmYWIwYzcxYTc4NTA1MmE4
MjMyNjAzZWE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTAyLTA2ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogQ2xvc2VkIGNvbXB1dGVkIHN0eWxlIHNpZGViYXIgcGFuZSByZWJ1aWxkcywgcmVzdWx0
aW5nIGluIHNsb3duZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03Nzg2NQorCisgICAgICAgIERyaXZlLWJ5OiByZW1vdmUgdW51c2VkIGRpc2FibGVk
Q29tcHV0ZWRQcm9wZXJ0aWVzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2V4ZWN1
dGVSZWJ1aWxkVXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFu
ZS5wcm90b3R5cGUuX3JlZnJlc2hDb21wdXRlZFN0eWxlU2VjdGlvbik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLl9yZWZyZXNoVXBkYXRlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX3JlYnVpbGRV
cGRhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlw
ZS5fbWFya1VzZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRl
YmFyUGFuZS5wcm90b3R5cGUuX3JlZnJlc2hTZWN0aW9uc0ZvclN0eWxlUnVsZXMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fcmVidWlsZFNlY3Rp
b25zRm9yU3R5bGVSdWxlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZVNp
ZGViYXJQYW5lLnByb3RvdHlwZS5leHBhbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxl
UHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLm9ucG9wdWxhdGUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbXB1dGVkU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29tcHV0ZWRTdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5faXNQcm9wZXJ0
eUluaGVyaXRlZCk6CisKIDIwMTItMDItMDYgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFu
LmplbnNlbkBub2tpYS5jb20+CiAKICAgICAgICAgRW5zdXJlIHRpbWVycyBhbmQgb3RoZXIgYWN0
aXZlIERPTSBvYmplY3RzIGRvIG5vdCBmaXJlIGluIHN1c3BlbmRlZCBkb2N1bWVudHMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQ
YW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFy
UGFuZS5qcwppbmRleCAwODA1NzBjMTc3M2RiMzc1MWYzMWVlZTBhNjBlZTYyOTg0ZTQ2NjRlLi41
YTk4NTdlYzA1NmFlODg1ZDY1ZjlhMmU5NGJjNDExZGEzMzAwMzg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMK
QEAgLTI1MiwxMSArMjUyLDE5IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICByZXN1bHRTdHlsZXMuY29tcHV0ZWRTdHlsZSA9IGNvbXB1
dGVkU3R5bGU7CiAgICAgICAgIH0KIAotICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuZ2V0
Q29tcHV0ZWRTdHlsZUFzeW5jKG5vZGUuaWQsIHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNzZXMsIGNv
bXB1dGVkQ2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgICAgIGlmICh0aGlzLl9jb21wdXRlZFN0
eWxlUGFuZS5leHBhbmRlZCkKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5nZXRD
b21wdXRlZFN0eWxlQXN5bmMobm9kZS5pZCwgdGhpcy5fZm9yY2VkUHNldWRvQ2xhc3NlcywgY29t
cHV0ZWRDYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVz
dWx0U3R5bGVzLmNvbXB1dGVkU3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFy
YXRpb24oeyBjc3NQcm9wZXJ0aWVzOiBbXSwgc2hvcnRoYW5kRW50cmllczoge30gfSk7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5nZXRJbmxpbmVTdHlsZXNBc3luYyhub2RlLmlkLCBp
bmxpbmVDYWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVs
LmdldE1hdGNoZWRTdHlsZXNBc3luYyhub2RlLmlkLCB0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc2Vz
LCB0cnVlLCB0cnVlLCBzdHlsZXNDYWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9LAogCisgICAg
X3JlZnJlc2hDb21wdXRlZFN0eWxlU2VjdGlvbjogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgewor
ICAgICAgICB0aGlzLl9pbm5lclVwZGF0ZSh0cnVlLCBudWxsLCBjYWxsYmFjayk7CisgICAgfSwK
KwogICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1Nl
Y3Rpb249fSBlZGl0ZWRTZWN0aW9uCiAgICAgICogQHBhcmFtIHtmdW5jdGlvbigpPX0gdXNlckNh
bGxiYWNrCkBAIC0zMzMsOSArMzQxLDggQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5l
LnByb3RvdHlwZSA9IHsKICAgICAgICAgZm9yICh2YXIgcHNldWRvSWQgaW4gdGhpcy5zZWN0aW9u
cykgewogICAgICAgICAgICAgdmFyIHN0eWxlUnVsZXMgPSB0aGlzLl9yZWZyZXNoU3R5bGVSdWxl
cyh0aGlzLnNlY3Rpb25zW3BzZXVkb0lkXSwgY29tcHV0ZWRTdHlsZSk7CiAgICAgICAgICAgICB2
YXIgdXNlZFByb3BlcnRpZXMgPSB7fTsKLSAgICAgICAgICAgIHZhciBkaXNhYmxlZENvbXB1dGVk
UHJvcGVydGllcyA9IHt9OwotICAgICAgICAgICAgdGhpcy5fbWFya1VzZWRQcm9wZXJ0aWVzKHN0
eWxlUnVsZXMsIHVzZWRQcm9wZXJ0aWVzLCBkaXNhYmxlZENvbXB1dGVkUHJvcGVydGllcyk7Ci0g
ICAgICAgICAgICB0aGlzLl9yZWZyZXNoU2VjdGlvbnNGb3JTdHlsZVJ1bGVzKHN0eWxlUnVsZXMs
IHVzZWRQcm9wZXJ0aWVzLCBkaXNhYmxlZENvbXB1dGVkUHJvcGVydGllcywgZWRpdGVkU2VjdGlv
bik7CisgICAgICAgICAgICB0aGlzLl9tYXJrVXNlZFByb3BlcnRpZXMoc3R5bGVSdWxlcywgdXNl
ZFByb3BlcnRpZXMpOworICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFNlY3Rpb25zRm9yU3R5bGVS
dWxlcyhzdHlsZVJ1bGVzLCB1c2VkUHJvcGVydGllcywgZWRpdGVkU2VjdGlvbik7CiAgICAgICAg
IH0KICAgICAgICAgLy8gVHJhY2UgdGhlIGNvbXB1dGVkIHN0eWxlLgogICAgICAgICB0aGlzLnNl
Y3Rpb25zWzBdWzBdLnJlYnVpbGRDb21wdXRlZFRyYWNlKHRoaXMuc2VjdGlvbnNbMF0pOwpAQCAt
MzUwLDkgKzM1Nyw4IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgdmFyIHN0eWxlUnVsZXMgPSB0aGlzLl9yZWJ1aWxkU3R5bGVSdWxlcyhu
b2RlLCBzdHlsZXMpOwogICAgICAgICB2YXIgdXNlZFByb3BlcnRpZXMgPSB7fTsKLSAgICAgICAg
dmFyIGRpc2FibGVkQ29tcHV0ZWRQcm9wZXJ0aWVzID0ge307Ci0gICAgICAgIHRoaXMuX21hcmtV
c2VkUHJvcGVydGllcyhzdHlsZVJ1bGVzLCB1c2VkUHJvcGVydGllcywgZGlzYWJsZWRDb21wdXRl
ZFByb3BlcnRpZXMpOwotICAgICAgICB0aGlzLnNlY3Rpb25zWzBdID0gdGhpcy5fcmVidWlsZFNl
Y3Rpb25zRm9yU3R5bGVSdWxlcyhzdHlsZVJ1bGVzLCB1c2VkUHJvcGVydGllcywgZGlzYWJsZWRD
b21wdXRlZFByb3BlcnRpZXMsIDAsIG51bGwpOworICAgICAgICB0aGlzLl9tYXJrVXNlZFByb3Bl
cnRpZXMoc3R5bGVSdWxlcywgdXNlZFByb3BlcnRpZXMpOworICAgICAgICB0aGlzLnNlY3Rpb25z
WzBdID0gdGhpcy5fcmVidWlsZFNlY3Rpb25zRm9yU3R5bGVSdWxlcyhzdHlsZVJ1bGVzLCB1c2Vk
UHJvcGVydGllcywgMCwgbnVsbCk7CiAgICAgICAgIHZhciBhbmNob3JFbGVtZW50ID0gdGhpcy5z
ZWN0aW9uc1swXS5pbmhlcml0ZWRQcm9wZXJ0aWVzU2VwYXJhdG9yRWxlbWVudDsKICAgICAgICAg
Ly8gVHJhY2UgdGhlIGNvbXB1dGVkIHN0eWxlLgogICAgICAgICB0aGlzLnNlY3Rpb25zWzBdWzBd
LnJlYnVpbGRDb21wdXRlZFRyYWNlKHRoaXMuc2VjdGlvbnNbMF0pOwpAQCAtMzcyLDkgKzM3OCw4
IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICAgICAgc3R5bGVSdWxlcy5wdXNoKHsgc3R5bGU6IHJ1bGUuc3R5bGUsIHNlbGVjdG9yVGV4
dDogcnVsZS5zZWxlY3RvclRleHQsIG1lZGlhOiBydWxlLm1lZGlhLCBzb3VyY2VVUkw6IHJ1bGUu
c291cmNlVVJMLCBydWxlOiBydWxlLCBlZGl0YWJsZTogISEocnVsZS5zdHlsZSAmJiBydWxlLnN0
eWxlLmlkKSB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHVzZWRQcm9wZXJ0aWVzID0g
e307Ci0gICAgICAgICAgICBkaXNhYmxlZENvbXB1dGVkUHJvcGVydGllcyA9IHt9OwotICAgICAg
ICAgICAgdGhpcy5fbWFya1VzZWRQcm9wZXJ0aWVzKHN0eWxlUnVsZXMsIHVzZWRQcm9wZXJ0aWVz
LCBkaXNhYmxlZENvbXB1dGVkUHJvcGVydGllcyk7Ci0gICAgICAgICAgICB0aGlzLnNlY3Rpb25z
W3BzZXVkb0lkXSA9IHRoaXMuX3JlYnVpbGRTZWN0aW9uc0ZvclN0eWxlUnVsZXMoc3R5bGVSdWxl
cywgdXNlZFByb3BlcnRpZXMsIGRpc2FibGVkQ29tcHV0ZWRQcm9wZXJ0aWVzLCBwc2V1ZG9JZCwg
YW5jaG9yRWxlbWVudCk7CisgICAgICAgICAgICB0aGlzLl9tYXJrVXNlZFByb3BlcnRpZXMoc3R5
bGVSdWxlcywgdXNlZFByb3BlcnRpZXMpOworICAgICAgICAgICAgdGhpcy5zZWN0aW9uc1twc2V1
ZG9JZF0gPSB0aGlzLl9yZWJ1aWxkU2VjdGlvbnNGb3JTdHlsZVJ1bGVzKHN0eWxlUnVsZXMsIHVz
ZWRQcm9wZXJ0aWVzLCBwc2V1ZG9JZCwgYW5jaG9yRWxlbWVudCk7CiAgICAgICAgIH0KIAogICAg
ICAgICB0aGlzLl9ub2RlU3R5bGVzVXBkYXRlZEZvclRlc3Qobm9kZSwgZmFsc2UpOwpAQCAtNDIw
LDcgKzQyNSw4IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBzdHlsZVJ1bGVzLnB1c2goeyBj
b21wdXRlZFN0eWxlOiB0cnVlLCBzZWxlY3RvclRleHQ6ICIiLCBzdHlsZTogbm9kZUNvbXB1dGVk
U3R5bGUsIGVkaXRhYmxlOiBmYWxzZSB9KTsKKyAgICAgICAgaWYgKG5vZGVDb21wdXRlZFN0eWxl
KQorICAgICAgICAgICAgc3R5bGVSdWxlcy5wdXNoKHsgY29tcHV0ZWRTdHlsZTogdHJ1ZSwgc2Vs
ZWN0b3JUZXh0OiAiIiwgc3R5bGU6IG5vZGVDb21wdXRlZFN0eWxlLCBlZGl0YWJsZTogZmFsc2Ug
fSk7CiAKICAgICAgICAgLy8gSW5saW5lIHN0eWxlIGhhcyB0aGUgZ3JlYXRlc3Qgc3BlY2lmaWNp
dHkuCiAgICAgICAgIGlmIChzdHlsZXMuaW5saW5lU3R5bGUgJiYgbm9kZS5ub2RlVHlwZSgpID09
PSBOb2RlLkVMRU1FTlRfTk9ERSkgewpAQCAtNDkwLDcgKzQ5Niw3IEBAIFdlYkluc3BlY3Rvci5T
dHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBzdHlsZVJ1bGVz
OwogICAgIH0sCiAKLSAgICBfbWFya1VzZWRQcm9wZXJ0aWVzOiBmdW5jdGlvbihzdHlsZVJ1bGVz
LCB1c2VkUHJvcGVydGllcywgZGlzYWJsZWRDb21wdXRlZFByb3BlcnRpZXMpCisgICAgX21hcmtV
c2VkUHJvcGVydGllczogZnVuY3Rpb24oc3R5bGVSdWxlcywgdXNlZFByb3BlcnRpZXMpCiAgICAg
ewogICAgICAgICB2YXIgcHJpb3JpdHlVc2VkID0gZmFsc2U7CiAKQEAgLTU1NywxNCArNTYzLDEz
IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IH0KICAgICB9LAogCi0gICAgX3JlZnJlc2hTZWN0aW9uc0ZvclN0eWxlUnVsZXM6IGZ1bmN0aW9u
KHN0eWxlUnVsZXMsIHVzZWRQcm9wZXJ0aWVzLCBkaXNhYmxlZENvbXB1dGVkUHJvcGVydGllcywg
ZWRpdGVkU2VjdGlvbikKKyAgICBfcmVmcmVzaFNlY3Rpb25zRm9yU3R5bGVSdWxlczogZnVuY3Rp
b24oc3R5bGVSdWxlcywgdXNlZFByb3BlcnRpZXMsIGVkaXRlZFNlY3Rpb24pCiAgICAgewogICAg
ICAgICAvLyBXYWxrIHRoZSBzdHlsZSBydWxlcyBhbmQgdXBkYXRlIHRoZSBzZWN0aW9ucyB3aXRo
IG5ldyBvdmVybG9hZGVkIGFuZCB1c2VkIHByb3BlcnRpZXMuCiAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgc3R5bGVSdWxlcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIHN0eWxl
UnVsZSA9IHN0eWxlUnVsZXNbaV07CiAgICAgICAgICAgICB2YXIgc2VjdGlvbiA9IHN0eWxlUnVs
ZS5zZWN0aW9uOwogICAgICAgICAgICAgaWYgKHN0eWxlUnVsZS5jb21wdXRlZFN0eWxlKSB7Ci0g
ICAgICAgICAgICAgICAgc2VjdGlvbi5fZGlzYWJsZWRDb21wdXRlZFByb3BlcnRpZXMgPSBkaXNh
YmxlZENvbXB1dGVkUHJvcGVydGllczsKICAgICAgICAgICAgICAgICBzZWN0aW9uLl91c2VkUHJv
cGVydGllcyA9IHVzZWRQcm9wZXJ0aWVzOwogICAgICAgICAgICAgICAgIHNlY3Rpb24udXBkYXRl
KCk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNTc0LDcgKzU3OSw3IEBAIFdlYkluc3BlY3Rv
ci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCi0g
ICAgX3JlYnVpbGRTZWN0aW9uc0ZvclN0eWxlUnVsZXM6IGZ1bmN0aW9uKHN0eWxlUnVsZXMsIHVz
ZWRQcm9wZXJ0aWVzLCBkaXNhYmxlZENvbXB1dGVkUHJvcGVydGllcywgcHNldWRvSWQsIGFuY2hv
ckVsZW1lbnQpCisgICAgX3JlYnVpbGRTZWN0aW9uc0ZvclN0eWxlUnVsZXM6IGZ1bmN0aW9uKHN0
eWxlUnVsZXMsIHVzZWRQcm9wZXJ0aWVzLCBwc2V1ZG9JZCwgYW5jaG9yRWxlbWVudCkKICAgICB7
CiAgICAgICAgIC8vIE1ha2UgYSBwcm9wZXJ0eSBzZWN0aW9uIGZvciBlYWNoIHN0eWxlIHJ1bGUu
CiAgICAgICAgIHZhciBzZWN0aW9ucyA9IFtdOwpAQCAtNjEwLDcgKzYxNSw3IEBAIFdlYkluc3Bl
Y3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgZWRp
dGFibGUgPSB0cnVlOwogCiAgICAgICAgICAgICBpZiAoY29tcHV0ZWRTdHlsZSkKLSAgICAgICAg
ICAgICAgICB2YXIgc2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZVByb3Bl
cnRpZXNTZWN0aW9uKHN0eWxlUnVsZSwgdXNlZFByb3BlcnRpZXMsIGRpc2FibGVkQ29tcHV0ZWRQ
cm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICB2YXIgc2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0
b3IuQ29tcHV0ZWRTdHlsZVByb3BlcnRpZXNTZWN0aW9uKHN0eWxlUnVsZSwgdXNlZFByb3BlcnRp
ZXMpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHZhciBzZWN0aW9uID0gbmV3
IFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uKHRoaXMsIHN0eWxlUnVsZSwgZWRp
dGFibGUsIHN0eWxlUnVsZS5pc0luaGVyaXRlZCwgbGFzdFdhc1NlcGFyYXRvcik7CiAgICAgICAg
ICAgICBzZWN0aW9uLnBhbmUgPSB0aGlzOwpAQCAtODQ0LDYgKzg0OSwyMyBAQCBXZWJJbnNwZWN0
b3IuQ29tcHV0ZWRTdHlsZVNpZGViYXJQYW5lID0gZnVuY3Rpb24oKQogICAgIHNob3dJbmhlcml0
ZWRDaGVja2JveC5hZGRFdmVudExpc3RlbmVyKHNob3dJbmhlcml0ZWRUb2dnbGVGdW5jdGlvbi5i
aW5kKHRoaXMpKTsKIH0KIAorV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVTaWRlYmFyUGFuZS5w
cm90b3R5cGUgPSB7CisKKyAgICAvLyBPdmVycmlkaW5nIGV4cGFuZCgpIHJhdGhlciB0aGFuIG9u
ZXhwYW5kKCkgdG8gZWxpbWluYXRlIHZpc3VhbCBzbG93bmVzcyBkdWUgdG8gYSBwb3NzaWJsZSBi
YWNrZW5kIHRyaXAuCisgICAgZXhwYW5kOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBmdW5j
dGlvbiBjYWxsYmFjaygpCisgICAgICAgIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5TaWRl
YmFyUGFuZS5wcm90b3R5cGUuZXhwYW5kLmNhbGwodGhpcyk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5zaWRlYmFyUGFuZXMuc3R5bGVzLnNl
Y3Rpb25zWzBdWzBdLnByb3BlcnRpZXNFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCkKKyAgICAgICAg
ICAgIGNhbGxiYWNrLmNhbGwodGhpcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc2lkZWJhclBhbmVzLnN0eWxlcy5fcmVmcmVzaENvbXB1
dGVkU3R5bGVTZWN0aW9uKGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgIH0KK30KKwogV2ViSW5z
cGVjdG9yLkNvbXB1dGVkU3R5bGVTaWRlYmFyUGFuZS5wcm90b3R5cGUuX19wcm90b19fID0gV2Vi
SW5zcGVjdG9yLlNpZGViYXJQYW5lLnByb3RvdHlwZTsKIAogLyoqCkBAIC0xMDUzLDkgKzEwNzUs
NiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy51bmlxdWVQcm9wZXJ0aWVzLmxlbmd0aDsg
KytpKSB7CiAgICAgICAgICAgICB2YXIgcHJvcGVydHkgPSB0aGlzLnVuaXF1ZVByb3BlcnRpZXNb
aV07CiAgICAgICAgICAgICB2YXIgZGlzYWJsZWQgPSBwcm9wZXJ0eS5kaXNhYmxlZDsKLSAgICAg
ICAgICAgIGlmICghZGlzYWJsZWQgJiYgdGhpcy5kaXNhYmxlZENvbXB1dGVkUHJvcGVydGllcyAm
JiAhKHByb3BlcnR5Lm5hbWUgaW4gdGhpcy51c2VkUHJvcGVydGllcykgJiYgcHJvcGVydHkubmFt
ZSBpbiB0aGlzLmRpc2FibGVkQ29tcHV0ZWRQcm9wZXJ0aWVzKQotICAgICAgICAgICAgICAgIGRp
c2FibGVkID0gdHJ1ZTsKLQogICAgICAgICAgICAgdmFyIHNob3J0aGFuZCA9ICFkaXNhYmxlZCA/
IHByb3BlcnR5LnNob3J0aGFuZCA6IG51bGw7CiAKICAgICAgICAgICAgIGlmIChzaG9ydGhhbmQg
JiYgc2hvcnRoYW5kIGluIGhhbmRsZWRQcm9wZXJ0aWVzKQpAQCAtMTI1MSwxNCArMTI3MCwxMyBA
QCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLlByb3BlcnRpZQogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7
V2ViSW5zcGVjdG9yLlByb3BlcnRpZXNTZWN0aW9ufQogICovCi1XZWJJbnNwZWN0b3IuQ29tcHV0
ZWRTdHlsZVByb3BlcnRpZXNTZWN0aW9uID0gZnVuY3Rpb24oc3R5bGVSdWxlLCB1c2VkUHJvcGVy
dGllcywgZGlzYWJsZWRDb21wdXRlZFByb3BlcnRpZXMpCitXZWJJbnNwZWN0b3IuQ29tcHV0ZWRT
dHlsZVByb3BlcnRpZXNTZWN0aW9uID0gZnVuY3Rpb24oc3R5bGVSdWxlLCB1c2VkUHJvcGVydGll
cykKIHsKICAgICBXZWJJbnNwZWN0b3IuUHJvcGVydGllc1NlY3Rpb24uY2FsbCh0aGlzLCAiIik7
CiAgICAgdGhpcy5oZWFkZXJFbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhpZGRlbiIpOwogICAgIHRo
aXMuZWxlbWVudC5jbGFzc05hbWUgPSAic3R5bGVzLXNlY3Rpb24gbW9ub3NwYWNlIGZpcnN0LXN0
eWxlcy1zZWN0aW9uIHJlYWQtb25seSBjb21wdXRlZC1zdHlsZSI7CiAgICAgdGhpcy5zdHlsZVJ1
bGUgPSBzdHlsZVJ1bGU7CiAgICAgdGhpcy5fdXNlZFByb3BlcnRpZXMgPSB1c2VkUHJvcGVydGll
czsKLSAgICB0aGlzLl9kaXNhYmxlZENvbXB1dGVkUHJvcGVydGllcyA9IGRpc2FibGVkQ29tcHV0
ZWRQcm9wZXJ0aWVzOwogICAgIHRoaXMuX2Fsd2F5c1Nob3dDb21wdXRlZFByb3BlcnRpZXMgPSB7
ICJkaXNwbGF5IjogdHJ1ZSwgImhlaWdodCI6IHRydWUsICJ3aWR0aCI6IHRydWUgfTsKICAgICB0
aGlzLmNvbXB1dGVkU3R5bGUgPSB0cnVlOwogICAgIHRoaXMuX3Byb3BlcnR5VHJlZUVsZW1lbnRz
ID0ge307CkBAIC0xMjczLDcgKzEyOTEsNyBAQCBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZVBy
b3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKIAogICAgIF9pc1Byb3BlcnR5SW5oZXJpdGVk
OiBmdW5jdGlvbihwcm9wZXJ0eU5hbWUpCiAgICAgewotICAgICAgICByZXR1cm4gIShwcm9wZXJ0
eU5hbWUgaW4gdGhpcy5fdXNlZFByb3BlcnRpZXMpICYmICEocHJvcGVydHlOYW1lIGluIHRoaXMu
X2Fsd2F5c1Nob3dDb21wdXRlZFByb3BlcnRpZXMpICYmICEocHJvcGVydHlOYW1lIGluIHRoaXMu
X2Rpc2FibGVkQ29tcHV0ZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgcmV0dXJuICEocHJvcGVydHlO
YW1lIGluIHRoaXMuX3VzZWRQcm9wZXJ0aWVzKSAmJiAhKHByb3BlcnR5TmFtZSBpbiB0aGlzLl9h
bHdheXNTaG93Q29tcHV0ZWRQcm9wZXJ0aWVzKTsKICAgICB9LAogCiAgICAgdXBkYXRlOiBmdW5j
dGlvbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggODc4MDZhODc0MjIyODZhM2JiYmNkMjY2NjA4NWRlMDJmMGMyOWI4ZC4u
YmMxMmQ3MjM1NTdlMWNlM2FmNzhhMGIzNzI5ZTM0ZmYxZmNhMDg4MCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQyIEBACisyMDEyLTAyLTA2ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ2xvc2VkIGNvbXB1dGVkIHN0eWxlIHNpZGVi
YXIgcGFuZSByZWJ1aWxkcywgcmVzdWx0aW5nIGluIHNsb3duZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg2NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxl
bWVudHMtdGVzdC5qczoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0LWlm
cmFtZS1mcm9tLWRpZmZlcmVudC1kb21haW4uaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9zdHlsZXMvc3R5bGVzLXJlZGlyZWN0ZWQtY3NzLmh0bWw6CisgICAgICAgICogaW5z
cGVjdG9yL2VsZW1lbnRzL2VsZW1lbnRzLWRlbGV0ZS1pbmxpbmUtc3R5bGUuaHRtbDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZWxlbWVudHMvZWxlbWVudHMtcGFuZWwtc3R5bGVzLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL3N0eWxlcy9jb21taXQtc2VsZWN0b3IuaHRtbDoKKyAgICAgICAgKiBp
bnNwZWN0b3Ivc3R5bGVzL2Nzcy1saXZlLWVkaXQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
c3R5bGVzL21lZGlhLXF1ZXJpZXMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL21l
dHJpY3MtYm94LXNpemluZy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvb3ZlcnJp
ZGUtc2NyZWVuLXNpemUuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3BhcnNlLXV0
ZjgtYm9tLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9zaG93LXVzZXItYWdlbnQt
c3R5bGVzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLWJsYW5r
LXByb3BlcnR5Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLWlu
dmFsaWQtcHJvcGVydHkuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1h
ZGQtbmV3LXJ1bGUuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1jYW5j
ZWwtZWRpdGluZy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNoYW5n
ZS1ub2RlLXdoaWxlLWVkaXRpbmcuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3N0
eWxlcy1jb21taXQtZWRpdGluZy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvc3R5
bGVzLWNvbXB1dGVkLXRyYWNlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9zdHls
ZXMtZGlzYWJsZS1pbmhlcml0ZWQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3N0
eWxlcy1kaXNhYmxlLXRoZW4tY2hhbmdlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxl
cy9zdHlsZXMtZGlzYWJsZS10aGVuLWRlbGV0ZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9z
dHlsZXMvc3R5bGVzLWRpc2FibGUtdGhlbi1lbmFibGUuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3Ivc3R5bGVzL3N0eWxlcy1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVz
L3N0eWxlcy1zb3VyY2UtbGluZXMtaW5saW5lLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3N0
eWxlcy9zdHlsZXMtc291cmNlLWxpbmVzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxl
cy9zdHlsZXMtdXBkYXRlLWZyb20tanMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVz
L3N0eWxlcy11cmwtbGlua2lmeS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvc3Zn
LXN0eWxlLnhodG1sOgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvdXAtZG93bi1udW1lcmlj
cy1hbmQtY29sb3JzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy91cGRhdGVzLWR1
cmluZy1kb20tdHJhdmVyc2FsLmh0bWw6CisKIDIwMTItMDItMDYgIEFsbGFuIFNhbmRmZWxkIEpl
bnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CiAKICAgICAgICAgVGVzdCB0aGF0IHRpbWVy
cyBkbyBub3QgZmlyZSBmcm9tIHN1YmZyYW1lcyBvZiBzdXNwZW5kZWQgZG9jdW1lbnRzLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5q
cyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMKaW5k
ZXggMmRjOTk3YzVlMDRmNGRmYWU2NTRjOGE1ZGNkNDUzYTY4MmVjMDRmNC4uNGFmZGZjZDFhYjdm
NmZkMGZlZDdmNTRiNTUwMTA0YTgyODdhOGM1MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzCkBAIC04Myw3ICs4Myw3IEBAIEluc3Bl
Y3RvclRlc3Qud2FpdEZvclN0eWxlcyA9IGZ1bmN0aW9uKGlkVmFsdWUsIGNhbGxiYWNrKQogICAg
IH0pKG51bGwpOwogfQogCi1JbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVz
ID0gZnVuY3Rpb24oaWRWYWx1ZSwgY2FsbGJhY2spCitJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVB
bmRXYWl0Rm9yU3R5bGVzID0gZnVuY3Rpb24oaWRWYWx1ZSwgZXhwYW5kQ29tcHV0ZWRTdHlsZXMs
IGNhbGxiYWNrKQogewogICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIik7CiAK
QEAgLTEwMSw2ICsxMDEsMTQgQEAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0
eWxlcyA9IGZ1bmN0aW9uKGlkVmFsdWUsIGNhbGxiYWNrKQogCiAgICAgZnVuY3Rpb24gc3R5bGVz
VXBkYXRlZCgpCiAgICAgeworICAgICAgICB2YXIgY29tcHV0ZWRTdHlsZVBhbmUgPSBXZWJJbnNw
ZWN0b3IucGFuZWxzLmVsZW1lbnRzLnNpZGViYXJQYW5lcy5jb21wdXRlZFN0eWxlOworICAgICAg
ICBpZiAoZXhwYW5kQ29tcHV0ZWRTdHlsZXMgJiYgIWNvbXB1dGVkU3R5bGVQYW5lLmV4cGFuZGVk
KSB7CisgICAgICAgICAgICBjb21wdXRlZFN0eWxlUGFuZS5leHBhbmQoKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICBjYWxsYmFjayh0YXJnZXROb2RlKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIGNhbGxiYWNrKHRhcmdldE5vZGUp
OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2luc3BlY3QtaWZyYW1lLWZyb20tZGlmZmVyZW50LWRvbWFpbi5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdC1pZnJhbWUtZnJvbS1kaWZmZXJlbnQtZG9tYWlu
Lmh0bWwKaW5kZXggMTY1ZDZiNjJkOWRjODBjM2NlNWM4MDNiYmRlYTRiM2JlN2QwMmExNy4uNzAx
NTA0YmFhNTZhNDA5NzhhODg1YTY5N2YxYzZiOTNkYmVmMTUyYiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdC1pZnJhbWUtZnJvbS1kaWZmZXJlbnQt
ZG9tYWluLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dC1pZnJhbWUtZnJvbS1kaWZmZXJlbnQtZG9tYWluLmh0bWwKQEAgLTE2LDcgKzE2LDcgQEAgZnVu
Y3Rpb24gb25JRnJhbWVMb2FkKCkKIAogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgSW5zcGVjdG9y
VGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygiaWZyYW1lLWJvZHkiLCBzdGVwMSk7Cisg
ICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygiaWZyYW1lLWJvZHki
LCBmYWxzZSwgc3RlcDEpOwogCiAgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgIHsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtcmVkaXJl
Y3RlZC1jc3MuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9z
dHlsZXMtcmVkaXJlY3RlZC1jc3MuaHRtbAppbmRleCA4ZjJiYmIyNjRlODcyYmFmMDc2YTIyMWY0
ZWQ2MWIzZDI3MWU2YmFkLi5iYzU2YWQxOWZhNjIyM2RjMmY1ODE5NTdiNjA1ODU4YjgwNWY3ZGQ4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5
bGVzLXJlZGlyZWN0ZWQtY3NzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3Ivc3R5bGVzL3N0eWxlcy1yZWRpcmVjdGVkLWNzcy5odG1sCkBAIC03LDcgKzcsNyBAQAog
CiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0
Rm9yU3R5bGVzKCJ0ZXN0X2RpdiIsIHN0ZXAxKTsKKyAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5v
ZGVBbmRXYWl0Rm9yU3R5bGVzKCJ0ZXN0X2RpdiIsIGZhbHNlLCBzdGVwMSk7CiAKICAgICBmdW5j
dGlvbiBzdGVwMSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Vs
ZW1lbnRzL2VsZW1lbnRzLWRlbGV0ZS1pbmxpbmUtc3R5bGUuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9lbGVtZW50cy9lbGVtZW50cy1kZWxldGUtaW5saW5lLXN0eWxlLmh0bWwKaW5kZXgg
YjQ2ZjBlYjM4YThmMDUyYWMyMGYyYWU2YmRkZGE0ZTMyNTU3MjEzOS4uMTkwZTFkOTVlYjY5NzQ0
OGJmNGFlOTBiZTkzMTk1Zjg1MzMxYzQ5MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2VsZW1lbnRzL2VsZW1lbnRzLWRlbGV0ZS1pbmxpbmUtc3R5bGUuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZWxlbWVudHMtZGVsZXRlLWlubGluZS1zdHlsZS5o
dG1sCkBAIC03LDcgKzcsNyBAQAogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgV2ViSW5zcGVjdG9y
LnNob3dQYW5lbCgiZWxlbWVudHMiKTsKLSAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRX
YWl0Rm9yU3R5bGVzKCJpbnNwZWN0ZWQiLCBzdGVwMSk7CisgICAgSW5zcGVjdG9yVGVzdC5zZWxl
Y3ROb2RlQW5kV2FpdEZvclN0eWxlcygiaW5zcGVjdGVkIiwgZmFsc2UsIHN0ZXAxKTsKIAogICAg
IGZ1bmN0aW9uIHN0ZXAxKG5vZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2VsZW1lbnRzL2VsZW1lbnRzLXBhbmVsLXN0eWxlcy5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2VsZW1lbnRzL2VsZW1lbnRzLXBhbmVsLXN0eWxlcy5odG1sCmluZGV4IDYxNjJm
MWI5OTA2Y2UyNDQ3ZDZhMTA1YTM2MTA1ZWNiZjFjZTQ0MzUuLjUxYzRjMDM5YjlhMmM3MjE5MDhi
MTkyZDhkNTZmMjFkN2IzOWQ4MWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9l
bGVtZW50cy9lbGVtZW50cy1wYW5lbC1zdHlsZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZWxlbWVudHMvZWxlbWVudHMtcGFuZWwtc3R5bGVzLmh0bWwKQEAgLTgsNyArOCw3IEBA
CiAKIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdh
aXRGb3JTdHlsZXMoImZvbyIsIHN0ZXAxKTsKKyAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVB
bmRXYWl0Rm9yU3R5bGVzKCJmb28iLCB0cnVlLCBzdGVwMSk7CiAKICAgICBmdW5jdGlvbiBzdGVw
MSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9jb21t
aXQtc2VsZWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvY29tbWl0LXNl
bGVjdG9yLmh0bWwKaW5kZXggNDdiNDdmZjA0YTFiMjRmMjc4YjZjM2M4YjE5YTA0NGYxM2U3OGNj
Ni4uMjgxNmE4Yzc1OWRkNDBiN2I5NWU4OTZhNjlkMmU2ZmRiYzhiZmE0NiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9jb21taXQtc2VsZWN0b3IuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL2NvbW1pdC1zZWxlY3Rvci5odG1sCkBAIC0xMiw3
ICsxMiw3IEBACiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVs
KCJlbGVtZW50cyIpOwotICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHls
ZXMoImluc3BlY3RlZCIsIHN0ZXAxKTsKKyAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRX
YWl0Rm9yU3R5bGVzKCJpbnNwZWN0ZWQiLCBmYWxzZSwgc3RlcDEpOwogCiAgICAgZnVuY3Rpb24g
c3RlcDEoKQogICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
Y3NzLWxpdmUtZWRpdC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9jc3MtbGl2
ZS1lZGl0Lmh0bWwKaW5kZXggZDVlMGYyOTI1ZGYzMGRlYjZmNWU5NWI1NmQxZGU3YTdkNTI5Zjg2
My4uNTYwYzU2NDU4Y2IyNzlhNGQ5ODY0MDZmZDk3ZWQ2ZWY0YzVjOTU4NiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9jc3MtbGl2ZS1lZGl0Lmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9jc3MtbGl2ZS1lZGl0Lmh0bWwKQEAgLTI1LDcgKzI1
LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGRpZEVkaXRSZXNv
dXJjZSgpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxl
Y3ROb2RlQW5kV2FpdEZvclN0eWxlcygiZm9vIiwgZGlkU2VsZWN0RWxlbWVudCk7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygiZm9vIiwg
dHJ1ZSwgZGlkU2VsZWN0RWxlbWVudCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1
bmN0aW9uIGRpZFNlbGVjdEVsZW1lbnQoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy9tZWRpYS1xdWVyaWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5
bGVzL21lZGlhLXF1ZXJpZXMuaHRtbAppbmRleCA0YWRhMGIzZGJiOWJjZThiNmExZGUyMWMwZGNk
ZTQ3OTlmMGFlYzM2Li44MGRkMDY1ODE2N2NkYzEwNTk1MWQ0MzczNzdlNDA3MzBhNDQ4OWNmIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL21lZGlhLXF1ZXJpZXMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL21lZGlhLXF1ZXJpZXMuaHRtbApA
QCAtMTgsNyArMTgsNyBAQAogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBJbnNwZWN0b3JUZXN0
LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJtYWluIiwgc3RlcDEpOworICAgIEluc3BlY3Rv
clRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoIm1haW4iLCBmYWxzZSwgc3RlcDEpOwog
CiAgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9zdHlsZXMvbWV0cmljcy1ib3gtc2l6aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3Ivc3R5bGVzL21ldHJpY3MtYm94LXNpemluZy5odG1sCmluZGV4IGExODA3ZTFhYTNjYjYw
YjgwMjE0ODgzYTdkNjJiNTEyYzBhNDY3ODUuLjAzOTczMDZjZmE5ZDY2MjgxNmRmMjM4MTMzYjg2
MDAxNzc1ODAxYjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvbWV0
cmljcy1ib3gtc2l6aW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9t
ZXRyaWNzLWJveC1zaXppbmcuaHRtbApAQCAtNzIsNyArNzIsNyBAQCBmdW5jdGlvbiB0ZXN0KCkK
ICAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RTdWl0ZShbCiAgICAgICAgIGZ1bmN0aW9uIHRlc3RC
b3JkZXJCb3hJbml0MShuZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJib3JkZXItYm94IiwgbmV4dCk7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJib3JkZXItYm94
IiwgZmFsc2UsIG5leHQpOwogICAgICAgICB9LAogCiAgICAgICAgIGZ1bmN0aW9uIHRlc3RCb3Jk
ZXJCb3hJbml0MihuZXh0KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxl
cy9vdmVycmlkZS1zY3JlZW4tc2l6ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxl
cy9vdmVycmlkZS1zY3JlZW4tc2l6ZS5odG1sCmluZGV4IDIyNDgwMGZiMWQ3ZmI0MzQxYjUwZWUy
NDdlMjAxYmYyYTFmZDBiZTguLjllYzgyNjgxZTM3MTk0Yzk0ZjMxYzQ5NTNjZjQxOTRiODA3Yjcx
NWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvb3ZlcnJpZGUtc2Ny
ZWVuLXNpemUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL292ZXJyaWRl
LXNjcmVlbi1zaXplLmh0bWwKQEAgLTQ5LDcgKzQ5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAg
ICAgIGlmICghb3JpZ2luYWxTY3JlZW5TaXplIHx8IG9yaWdpbmFsU2NyZWVuU2l6ZS5pbmRleE9m
KCJ4IikgPT09IC0xKQogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkludmFs
aWQgb3JpZ2luYWwgc2NyZWVuIHNpemU6ICIgKyBvcmlnaW5hbFNjcmVlblNpemUgKyAiLiBFeHBl
Y3QgcnVudGltZSBmYWlsdXJlcyBsYXRlciBvbi4iKTsKIAotICAgICAgICBJbnNwZWN0b3JUZXN0
LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJtYWluIiwgc3RlcDApOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJtYWluIiwgZmFsc2UsIHN0ZXAw
KTsKICAgICB9CiAKICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJnZXRTaXplcygp
Iiwgc2F2ZVNpemVDYWxsYmFjayk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
c3R5bGVzL3BhcnNlLXV0ZjgtYm9tLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVz
L3BhcnNlLXV0ZjgtYm9tLmh0bWwKaW5kZXggNGFmNThmOGIzNDE1MDBhM2FmY2RiNzc1ODZiZTkw
YTc1ZmJmNGEzOS4uMTY1NDM0ZDY4NjE2NDEwZjA0OTYyNDE1ZTk1YTIyYWNlMTQwZWJhYSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wYXJzZS11dGY4LWJvbS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcGFyc2UtdXRmOC1ib20uaHRtbApA
QCAtOCw3ICs4LDcgQEAKIAogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgSW5zcGVjdG9yVGVzdC5z
ZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygiaW5zcGVjdGVkIiwgc3RlcDEpOworICAgIEluc3Bl
Y3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImluc3BlY3RlZCIsIGZhbHNlLCBz
dGVwMSk7CiAKICAgICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zaG93LXVzZXItYWdlbnQtc3R5bGVzLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Nob3ctdXNlci1hZ2VudC1zdHlsZXMuaHRtbAppbmRl
eCA1NDI4NzU3NDE2NjU2M2JjMzU2YzU5ZWJiZDFkNjYzMTEzYjQzZWU5Li5mMTJiNjlkZjNiYTAx
NTQzYjhjNGRiN2VlMjY3M2U5MDY2YjlmZDM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3Ivc3R5bGVzL3Nob3ctdXNlci1hZ2VudC1zdHlsZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3Ivc3R5bGVzL3Nob3ctdXNlci1hZ2VudC1zdHlsZXMuaHRtbApAQCAtMzAsNyAr
MzAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBmdW5jdGlvbiBzZWxlY3ROb2RlQW5kRHVtcFN0
eWxlcyhub2RlSWQsIG5leHQpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dVc2VyQWdlbnRTdHlsZXMgPSAiICsgV2ViSW5z
cGVjdG9yLnNldHRpbmdzLnNob3dVc2VyQWdlbnRTdHlsZXMuZ2V0KCkpOwotICAgICAgICBJbnNw
ZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKG5vZGVJZCwgc3RlcDEpOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKG5vZGVJZCwgZmFs
c2UsIHN0ZXAxKTsKIAogICAgICAgICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgICAgIHsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWFkZC1ibGFuay1wcm9w
ZXJ0eS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLWJsYW5r
LXByb3BlcnR5Lmh0bWwKaW5kZXggZTg0MjhkMDYxY2IzZjYzYWZlOTFhZTY0NDJiYzZiZTVmYmQ0
NjIwYi4uZTBjYWQzNDU5N2NlYmUxYWVlYjkwNjBhNWNjYWUyYzhlOTgyYTk1MiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLWJsYW5rLXByb3BlcnR5
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLWJsYW5r
LXByb3BlcnR5Lmh0bWwKQEAgLTcsNyArNyw3IEBACiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBX
ZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOwotICAgIEluc3BlY3RvclRlc3Quc2Vs
ZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImluc3BlY3RlZCIsIHN0ZXAxKTsKKyAgICBJbnNwZWN0
b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJpbnNwZWN0ZWQiLCBmYWxzZSwgc3Rl
cDEpOwogCiAgICAgdmFyIHRyZWVFbGVtZW50OwogICAgIHZhciBzZWN0aW9uOwpAQCAtNDgsNyAr
NDgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1bmN0aW9uIHN0ZXA0KCkKICAgICB7Ci0g
ICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImluc3BlY3Rl
ZCIsIHN0ZXA1KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0
eWxlcygiaW5zcGVjdGVkIiwgZmFsc2UsIHN0ZXA1KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBz
dGVwNSgpCkBAIC03OSw3ICs3OSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgZnVuY3Rpb24g
c3RlcDcoKQogICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZv
clN0eWxlcygiaW5zcGVjdGVkIiwgc3RlcDgpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVj
dE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJpbnNwZWN0ZWQiLCBmYWxzZSwgc3RlcDgpOwogICAgIH0K
IAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1hZGQt
aW52YWxpZC1wcm9wZXJ0eS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHls
ZXMtYWRkLWludmFsaWQtcHJvcGVydHkuaHRtbAppbmRleCA2ZTcyMjUyYTY2N2Q2NDk4M2QxZmQ1
ZjZlMzMzN2JmYzk5Nzk3ZTJhLi41NDE1YTk3ZTdmMWIzMWYzNDE5YTY0MmQyMGEzOWI5OWM1ZjU4
MzMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1hZGQt
aW52YWxpZC1wcm9wZXJ0eS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
c3R5bGVzLWFkZC1pbnZhbGlkLXByb3BlcnR5Lmh0bWwKQEAgLTcsNyArNyw3IEBACiBmdW5jdGlv
biB0ZXN0KCkKIHsKICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOwotICAg
IEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImluc3BlY3RlZCIsIHN0
ZXAxKTsKKyAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJpbnNw
ZWN0ZWQiLCBmYWxzZSwgc3RlcDEpOwogCiAgICAgdmFyIHRyZWVFbGVtZW50OwogICAgIHZhciBz
ZWN0aW9uOwpAQCAtNDcsNyArNDcsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1bmN0aW9u
IHN0ZXA0KCkKICAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRG
b3JTdHlsZXMoImluc3BlY3RlZCIsIHN0ZXA1KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxl
Y3ROb2RlQW5kV2FpdEZvclN0eWxlcygiaW5zcGVjdGVkIiwgZmFsc2UsIHN0ZXA1KTsKICAgICB9
CiAKICAgICBmdW5jdGlvbiBzdGVwNSgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3Ivc3R5bGVzL3N0eWxlcy1hZGQtbmV3LXJ1bGUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9zdHlsZXMvc3R5bGVzLWFkZC1uZXctcnVsZS5odG1sCmluZGV4IDE2YjNhMjgwMTVlOGFmZTAx
Yzk5YzQwNmExOTgzOTBmOGYwNGIyNjkuLjdlNTQxNzBlOTRlMjdjY2Y4YmRlNzNjNzMxMTZhOGJj
MmQ4M2NlOWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVz
LWFkZC1uZXctcnVsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5
bGVzLWFkZC1uZXctcnVsZS5odG1sCkBAIC03LDcgKzcsNyBAQAogZnVuY3Rpb24gdGVzdCgpCiB7
CiAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsKLSAgICBJbnNwZWN0b3JU
ZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJpbnNwZWN0ZWQiLCBzdGVwMSk7CisgICAg
SW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygiaW5zcGVjdGVkIiwgZmFs
c2UsIHN0ZXAxKTsKIAogICAgIHZhciB0cmVlRWxlbWVudDsKIApAQCAtMjksMjEgKzI5LDIxIEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBuZXdQcm9wZXJ0eS5uYW1lRWxlbWVudC5kaXNwYXRj
aEV2ZW50KEluc3BlY3RvclRlc3QuY3JlYXRlS2V5RXZlbnQoIkVudGVyIikpOwogICAgICAgICBu
ZXdQcm9wZXJ0eS52YWx1ZUVsZW1lbnQudGV4dENvbnRlbnQgPSAibWFyb29uIjsKICAgICAgICAg
bmV3UHJvcGVydHkudmFsdWVFbGVtZW50LmRpc3BhdGNoRXZlbnQoSW5zcGVjdG9yVGVzdC5jcmVh
dGVLZXlFdmVudCgiRW50ZXIiKSk7Ci0gICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFu
ZFdhaXRGb3JTdHlsZXMoIm90aGVyIiwgc3RlcDMpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnNl
bGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJvdGhlciIsIGZhbHNlLCBzdGVwMyk7CiAgICAgfQog
CiAgICAgZnVuY3Rpb24gc3RlcDMoKQogICAgIHsKICAgICAgICAgLy8gQ2xpY2sgIkFkZCBuZXcg
cnVsZSIuCiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhZGQtc3R5bGUtYnV0dG9u
LXRlc3QtaWQiKS5jbGljaygpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRX
YWl0Rm9yU3R5bGVzKCJpbnNwZWN0ZWQiLCBzdGVwNCk7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
c2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImluc3BlY3RlZCIsIGZhbHNlLCBzdGVwNCk7CiAg
ICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDQoKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIkFmdGVyIGFkZGluZyBuZXcgcnVsZSAoaW5zcGVjdGVkKToiKTsKICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKHRydWUsIGZhbHNlLCB0
cnVlKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygi
b3RoZXIiLCBzdGVwNSk7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRG
b3JTdHlsZXMoIm90aGVyIiwgZmFsc2UsIHN0ZXA1KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBz
dGVwNSgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1j
YW5jZWwtZWRpdGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMt
Y2FuY2VsLWVkaXRpbmcuaHRtbAppbmRleCBhNjIyYmIwODg3YWMzMDgzZDFmMDI3ODNmMTMyYTEx
NDViYjc0NGRkLi5mZDU5OTJmZjViNDZlMmUxNmEzZDRkMWVmMDllMWEzZGQ0ZGE4Mzk5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1jYW5jZWwtZWRpdGlu
Zy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNhbmNlbC1l
ZGl0aW5nLmh0bWwKQEAgLTcsNyArNyw3IEBACiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBXZWJJ
bnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOwotICAgIEluc3BlY3RvclRlc3Quc2VsZWN0
Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImluc3BlY3RlZCIsIHN0ZXAxKTsKKyAgICBJbnNwZWN0b3JU
ZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJpbnNwZWN0ZWQiLCBmYWxzZSwgc3RlcDEp
OwogCiAgICAgdmFyIHRyZWVFbGVtZW50OwogICAgIHZhciBzZWN0aW9uOwpAQCAtMzksNyArMzks
NyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1bmN0aW9uIHN0ZXAzKCkKICAgICB7Ci0gICAg
ICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImluc3BlY3RlZCIs
IHN0ZXA0KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxl
cygiaW5zcGVjdGVkIiwgZmFsc2UsIHN0ZXA0KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzdGVw
NCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1jaGFu
Z2Utbm9kZS13aGlsZS1lZGl0aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVz
L3N0eWxlcy1jaGFuZ2Utbm9kZS13aGlsZS1lZGl0aW5nLmh0bWwKaW5kZXggODI5MWUzN2ZmM2Jl
YWM0MjRhODc1YzJmMWUwNjk2OWFmYTYwNjU0Mi4uZDk2Zjg5Yzc0ZWQyOWM0NmIxMjE4NzRhY2Uw
ZDZjNTk0ZjZjZmQ4NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9z
dHlsZXMtY2hhbmdlLW5vZGUtd2hpbGUtZWRpdGluZy5odG1sCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNoYW5nZS1ub2RlLXdoaWxlLWVkaXRpbmcuaHRtbApAQCAt
Nyw3ICs3LDcgQEAKIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIFdlYkluc3BlY3Rvci5zaG93UGFu
ZWwoImVsZW1lbnRzIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0
eWxlcygiaW5zcGVjdGVkIiwgc3RlcDEpOworICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFu
ZFdhaXRGb3JTdHlsZXMoImluc3BlY3RlZCIsIGZhbHNlLCBzdGVwMSk7CiAKICAgICB2YXIgdHJl
ZUVsZW1lbnQ7CiAgICAgdmFyIHNlY3Rpb247CkBAIC0yMCwxMyArMjAsMTMgQEAgZnVuY3Rpb24g
dGVzdCgpCiAgICAgICAgIHRyZWVFbGVtZW50LnN0YXJ0RWRpdGluZygpOwogICAgICAgICB0cmVl
RWxlbWVudC5uYW1lRWxlbWVudC50ZXh0Q29udGVudCA9ICJiYWNrZ3JvdW5kIjsKIAotICAgICAg
ICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJvdGhlciIsIHN0ZXAy
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygib3Ro
ZXIiLCBmYWxzZSwgc3RlcDIpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7
CiAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlLCB0
cnVlLCB0cnVlKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0
eWxlcygiaW5zcGVjdGVkIiwgc3RlcDMpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5v
ZGVBbmRXYWl0Rm9yU3R5bGVzKCJpbnNwZWN0ZWQiLCBmYWxzZSwgc3RlcDMpOwogICAgIH0KIAog
ICAgIGZ1bmN0aW9uIHN0ZXAzKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9z
dHlsZXMvc3R5bGVzLWNvbW1pdC1lZGl0aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
c3R5bGVzL3N0eWxlcy1jb21taXQtZWRpdGluZy5odG1sCmluZGV4IDliZjA0YWIwZjI4ZTQ2YWU5
MjQwNjMxYWQ1NWY3YTM5ZjhiNTQ2ZWYuLjUwYzcxNDc5NTYwNDU1Y2QwM2ZkZTZlMTI2MmRmODQz
ZTY2ZTVhMjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVz
LWNvbW1pdC1lZGl0aW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9z
dHlsZXMtY29tbWl0LWVkaXRpbmcuaHRtbApAQCAtNyw3ICs3LDcgQEAKIGZ1bmN0aW9uIHRlc3Qo
KQogewogICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIik7Ci0gICAgSW5zcGVj
dG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygiaW5zcGVjdGVkIiwgc3RlcDEpOwor
ICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImluc3BlY3RlZCIs
IGZhbHNlLCBzdGVwMSk7CiAKICAgICB2YXIgdHJlZUVsZW1lbnQ7CiAgICAgdmFyIHRyZWVPdXRs
aW5lOwpAQCAtNTUsNyArNTUsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1bmN0aW9uIHN0
ZXAzKCkKICAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JT
dHlsZXMoImluc3BlY3RlZCIsIHN0ZXA0KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3RO
b2RlQW5kV2FpdEZvclN0eWxlcygiaW5zcGVjdGVkIiwgZmFsc2UsIHN0ZXA0KTsKICAgICB9CiAK
ICAgICBmdW5jdGlvbiBzdGVwNCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
c3R5bGVzL3N0eWxlcy1jb21wdXRlZC10cmFjZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3N0eWxlcy9zdHlsZXMtY29tcHV0ZWQtdHJhY2UuaHRtbAppbmRleCA3YWFhN2RjYzEyNDdmMWMy
M2RhZDY0YmZkODEzM2UxMTI1ZWNiZWQ2Li5lNGIwMDk1MzgzNDE2MDU0YmM2OThkN2JmZGE5OGU1
MTBlMDk0OThjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxl
cy1jb21wdXRlZC10cmFjZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
c3R5bGVzLWNvbXB1dGVkLXRyYWNlLmh0bWwKQEAgLTM3LDIwICszNywyMCBAQCBkaXYgewogCiBm
dW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9y
U3R5bGVzKCJpZDEiLCBzdGVwMSk7CisgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2Fp
dEZvclN0eWxlcygiaWQxIiwgdHJ1ZSwgc3RlcDEpOwogCiAgICAgZnVuY3Rpb24gc3RlcDEoKQog
ICAgIHsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PT0gQ29tcHV0ZWQgc3R5
bGUgZm9yIElEMSA9PT09Iik7CiAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxl
bWVudFN0eWxlcyhmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9k
ZUFuZFdhaXRGb3JTdHlsZXMoImlkMiIsIHN0ZXAyKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5z
ZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygiaWQyIiwgdHJ1ZSwgc3RlcDIpOwogICAgIH0KIAog
ICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCI9PT09IENvbXB1dGVkIHN0eWxlIGZvciBJRDIgPT09PSIpOwogICAgICAgICBJbnNwZWN0
b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXMoZmFsc2UsIHRydWUpOwotICAgICAgICBJ
bnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJpZDMiLCBzdGVwMyk7Cisg
ICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImlkMyIsIGZh
bHNlLCBzdGVwMyk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDMoKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtZGlzYWJsZS1pbmhlcml0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWRpc2FibGUtaW5oZXJpdGVk
Lmh0bWwKaW5kZXggNDRkNTVmM2YyZmY0Yzc2ZDQyYjY1YWNiNmExYmRkMTlmNTdlYjQ0NC4uNmJk
NTNjNDNiMDBlNmIzZmYwNzgyYTU0NmZiYjJjMDMzYTY1NzNkMSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtZGlzYWJsZS1pbmhlcml0ZWQuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1kaXNhYmxlLWluaGVyaXRlZC5o
dG1sCkBAIC03LDcgKzcsNyBAQAogZnVuY3Rpb24gdGVzdCgpCiB7CiAKLSAgICBJbnNwZWN0b3JU
ZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJuZXN0ZWQiLCBzdGVwMSk7CisgICAgSW5z
cGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygibmVzdGVkIiwgZmFsc2UsIHN0
ZXAxKTsKIAogICAgIGZ1bmN0aW9uIHN0ZXAxKCkKICAgICB7CkBAIC0xNSwxNCArMTUsMTQgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJCZWZvcmUg
ZGlzYWJsZSIpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHls
ZXModHJ1ZSk7CiAKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0
eWxlcygiY29udGFpbmVyIiwgc3RlcDIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5v
ZGVBbmRXYWl0Rm9yU3R5bGVzKCJjb250YWluZXIiLCBmYWxzZSwgc3RlcDIpOwogICAgIH0KIAog
ICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7CiAgICAgICAgIHZhciB0cmVlSXRlbSA9IEluc3Bl
Y3RvclRlc3QuZ2V0RWxlbWVudFN0eWxlUHJvcGVydHlUcmVlSXRlbSgiZm9udC13ZWlnaHQiKTsK
ICAgICAgICAgdHJlZUl0ZW0udG9nZ2xlRW5hYmxlZCh7IHRhcmdldDogeyBjaGVja2VkOiBmYWxz
ZSB9IH0pOwotICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVz
KCJuZXN0ZWQiLCBzdGVwMyk7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdh
aXRGb3JTdHlsZXMoIm5lc3RlZCIsIGZhbHNlLCBzdGVwMyk7CiAgICAgfQogCiAgICAgZnVuY3Rp
b24gc3RlcDMoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHls
ZXMtZGlzYWJsZS10aGVuLWNoYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxl
cy9zdHlsZXMtZGlzYWJsZS10aGVuLWNoYW5nZS5odG1sCmluZGV4IDQyOGFjOWFkM2E1ZjBkNDMw
NTY3ZjEyNjljMjdkNmQ2MDAwYmI3Y2UuLjg5YjZlMWUzYmU4NTljZjliMjI3NmMxZTcyMDNlM2Iw
MTg5MjA0YTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVz
LWRpc2FibGUtdGhlbi1jaGFuZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5
bGVzL3N0eWxlcy1kaXNhYmxlLXRoZW4tY2hhbmdlLmh0bWwKQEAgLTYsNyArNiw3IEBACiAKIGZ1
bmN0aW9uIHRlc3QoKQogewotICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JT
dHlsZXMoImNvbnRhaW5lciIsIHN0ZXAxKTsKKyAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVB
bmRXYWl0Rm9yU3R5bGVzKCJjb250YWluZXIiLCBmYWxzZSwgc3RlcDEpOwogCiAgICAgZnVuY3Rp
b24gc3RlcDEoKQogICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHls
ZXMvc3R5bGVzLWRpc2FibGUtdGhlbi1kZWxldGUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9zdHlsZXMvc3R5bGVzLWRpc2FibGUtdGhlbi1kZWxldGUuaHRtbAppbmRleCBlNmM4OTBhMGNh
NTJiODJiMGMxZjEwMzJmOTU3YzZhYzBiNWFjYmFkLi5hNTUyZTI2YTE4NTZjYTQ1ZTRiZDcwMGQ0
YWEzNTEzOWI5NjBkYWNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVz
L3N0eWxlcy1kaXNhYmxlLXRoZW4tZGVsZXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtZGlzYWJsZS10aGVuLWRlbGV0ZS5odG1sCkBAIC02LDcgKzYsNyBA
QAogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRX
YWl0Rm9yU3R5bGVzKCJjb250YWluZXIiLCBzdGVwMSk7CisgICAgSW5zcGVjdG9yVGVzdC5zZWxl
Y3ROb2RlQW5kV2FpdEZvclN0eWxlcygiY29udGFpbmVyIiwgZmFsc2UsIHN0ZXAxKTsKIAogICAg
IGZ1bmN0aW9uIHN0ZXAxKCkKICAgICB7CkBAIC00MCw3ICs0MCw3IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogCiAgICAgZnVuY3Rpb24gc3RlcDQoKQogICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5z
ZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygiY29udGFpbmVyIiwgc3RlcDUpOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJjb250YWluZXIiLCBmYWxz
ZSwgc3RlcDUpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXA1KG5vZGUpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1kaXNhYmxlLXRoZW4tZW5hYmxl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1kaXNhYmxlLXRoZW4t
ZW5hYmxlLmh0bWwKaW5kZXggZjAxNTZlM2EwYjVlNzQ1NjhjNjc0ODk4ZGMzYmQ5N2E2NDVmNWE1
YS4uYTczNTIxODY2MjdjYmRkOWM1ZDNhNTRjOTU2OGJhNzZhYjlmZjVmMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtZGlzYWJsZS10aGVuLWVuYWJsZS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWRpc2FibGUtdGhl
bi1lbmFibGUuaHRtbApAQCAtNiw3ICs2LDcgQEAKIAogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAg
SW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygiY29udGFpbmVyIiwgc3Rl
cDEpOworICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImNvbnRh
aW5lciIsIGZhbHNlLCBzdGVwMSk7CiAKICAgICBmdW5jdGlvbiBzdGVwMShub2RlKQogICAgIHsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWlmcmFtZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtaWZyYW1lLmh0bWwKaW5k
ZXggN2VkMTk1NTg1NWU4NDBjZWY1ZDJkYzk4NTNhYjJkZTA3NGY3Y2NmMi4uMDkwYTM5ZDY5MjUy
YWU2MGU5YTg5ZTZhZDgxNzA5MGNmOGZhMTNjZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3N0eWxlcy9zdHlsZXMtaWZyYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtaWZyYW1lLmh0bWwKQEAgLTIzLDE0ICsyMywxNCBAQCBmdW5jdGlv
biB0ZXN0KCkKIAogICAgIGZ1bmN0aW9uIHN0ZXAwKCkKICAgICB7Ci0gICAgICAgIEluc3BlY3Rv
clRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoIm1haW4iLCBzdGVwMSk7CisgICAgICAg
IEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoIm1haW4iLCBmYWxzZSwg
c3RlcDEpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXAxKCkKICAgICB7CiAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJNYWluIGZyYW1lIHN0eWxlOiIpOwogICAgICAgICBJbnNw
ZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1ZSwgZmFsc2UsIHRydWUpOwot
ICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJpZnJhbWVC
b2R5Iiwgc3RlcDIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9y
U3R5bGVzKCJpZnJhbWVCb2R5IiwgZmFsc2UsIHN0ZXAyKTsKICAgICB9CiAKICAgICBmdW5jdGlv
biBzdGVwMigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxl
cy1zb3VyY2UtbGluZXMtaW5saW5lLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVz
L3N0eWxlcy1zb3VyY2UtbGluZXMtaW5saW5lLmh0bWwKaW5kZXggMmQ4ZDU4Y2Q0ZjA1ZGRiODA1
MzU0YmViNGY3ZDQwODU0NDJkYjQ2Zi4uNGUyN2ViZDc3MjA2NWI4NzMxMDJjMGZlOWFjMjY2MGFk
MTRjZDg1YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMt
c291cmNlLWxpbmVzLWlubGluZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHls
ZXMvc3R5bGVzLXNvdXJjZS1saW5lcy1pbmxpbmUuaHRtbApAQCAtMTMsNyArMTMsNyBAQAogCiBm
dW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9y
U3R5bGVzKCJmb28iLCBzdGVwMik7CisgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2Fp
dEZvclN0eWxlcygiZm9vIiwgZmFsc2UsIHN0ZXAyKTsKIAogICAgIGZ1bmN0aW9uIHN0ZXAyKCkK
ICAgICB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1z
b3VyY2UtbGluZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLXNv
dXJjZS1saW5lcy5odG1sCmluZGV4IGEyNTRlMmRlMmQ2YjYzMmMxY2QxNDRkZDNjNGUyMjgzMThj
ZjZhNjMuLjUwNDAwMGM2MGY0ODFjMzBjODlmNzRjZGE0Y2YzMWVjNjNlZTI4MmUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLXNvdXJjZS1saW5lcy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLXNvdXJjZS1saW5lcy5o
dG1sCkBAIC01OSw3ICs1OSw3IEBAIGZvbGxvd2VkIGJ5IHNlbGVjdG9yCiAKIGZ1bmN0aW9uIHRl
c3QoKQogewotICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoIm1h
aW4iLCBzdGVwMSk7CisgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxl
cygibWFpbiIsIGZhbHNlLCBzdGVwMSk7CiAKICAgICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgewpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtdXBkYXRlLWZy
b20tanMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLXVwZGF0ZS1m
cm9tLWpzLmh0bWwKaW5kZXggNjM2M2RmZjc3Mzc0NGJiNTY2MWM2OWNkMzU1ZGYxMGI3OTRhMDI3
Yy4uZDZlYjkyMTc4YzFhNTYyNGMwNGJhODZkZjU1NTI2MjEyODNmMjc0NiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtdXBkYXRlLWZyb20tanMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy11cGRhdGUtZnJvbS1qcy5o
dG1sCkBAIC0yNSw3ICsyNSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIEluc3BlY3RvclRlc3Qu
cnVuVGVzdFN1aXRlKFsKICAgICAgICAgZnVuY3Rpb24gdGVzdEluaXQobmV4dCkKICAgICAgICAg
ewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygi
Y29udGFpbmVyIiwgbmV4dCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVB
bmRXYWl0Rm9yU3R5bGVzKCJjb250YWluZXIiLCBmYWxzZSwgbmV4dCk7CiAgICAgICAgIH0sCiAK
ICAgICAgICAgZnVuY3Rpb24gdGVzdFNldFN0eWxlQXR0cmlidXRlKG5leHQpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy11cmwtbGlua2lmeS5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtdXJsLWxpbmtpZnkuaHRtbAppbmRl
eCBlMzFhMWY2NzFmOTg0Nzg3ZTA3ZDIwYmM2MjA0OTU5NDk1NDkzNmQwLi4zOTI1N2VkYWY2ZjA2
ZjQ0MGQwMzExMGI1ZTZiNmQ5OWVkNTQzODYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3Ivc3R5bGVzL3N0eWxlcy11cmwtbGlua2lmeS5odG1sCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9zdHlsZXMvc3R5bGVzLXVybC1saW5raWZ5Lmh0bWwKQEAgLTYyLDEzICs2MiwxMyBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoc3R5bGVD
bGFzcyArIG91dHB1dC5qb2luKCIvIikpOwogICAgIH0KIAotICAgIEluc3BlY3RvclRlc3Quc2Vs
ZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImxvY2FsIiwgc3RlcDEpOworICAgIEluc3BlY3RvclRl
c3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImxvY2FsIiwgZmFsc2UsIHN0ZXAxKTsKIAog
ICAgIGZ1bmN0aW9uIHN0ZXAxKCkKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJMaW5rIGZvciBhIFVSSSBmcm9tIENTUyBkb2N1bWVudDoiKTsKICAgICAgICAgZHVtcEhy
ZWYodHJ1ZSk7Ci0gICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHls
ZXMoImlmcmFtZWQiLCBzdGVwMik7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFu
ZFdhaXRGb3JTdHlsZXMoImlmcmFtZWQiLCBmYWxzZSwgc3RlcDIpOwogICAgIH0KIAogICAgIGZ1
bmN0aW9uIHN0ZXAyKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
c3ZnLXN0eWxlLnhodG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdmctc3R5bGUu
eGh0bWwKaW5kZXggMDY1NzM0MzhkZjcxNWVjMDkwNWM0MjEzMTg3NDUzNDJkZDUwZTFkNS4uYTAy
MWE0MWNkMGRkYTAzM2U0ZTkxMmYyMGE3N2JhNzMxYWY0MjI4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdmctc3R5bGUueGh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3N0eWxlcy9zdmctc3R5bGUueGh0bWwKQEAgLTcsNyArNyw3IEBACiAKIGZ1bmN0
aW9uIHRlc3QoKQogewotICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHls
ZXMoIm1haW4iLCBzdGVwMSk7CisgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZv
clN0eWxlcygibWFpbiIsIGZhbHNlLCBzdGVwMSk7CiAKICAgICBmdW5jdGlvbiBzdGVwMSgpCiAg
ICAgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy91cC1kb3duLW51
bWVyaWNzLWFuZC1jb2xvcnMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvdXAt
ZG93bi1udW1lcmljcy1hbmQtY29sb3JzLmh0bWwKaW5kZXggOGZhOGZlOGRjYzdkNWM5MDUzZWJl
YmZmZDYwMGIyZGZmNjE0NDY4OS4uYzEyMTBiZWY2MDZlOGRlMDU0ZDMzNTE2OTczOWJmZDEyMTlh
Y2FmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy91cC1kb3duLW51
bWVyaWNzLWFuZC1jb2xvcnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVz
L3VwLWRvd24tbnVtZXJpY3MtYW5kLWNvbG9ycy5odG1sCkBAIC0yMCw3ICsyMCw3IEBAIGZ1bmN0
aW9uIHRlc3QoKQogICAgIEluc3BlY3RvclRlc3QucnVuVGVzdFN1aXRlKFsKICAgICAgICAgZnVu
Y3Rpb24gdGVzdEluaXQobmV4dCkKICAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygiaW5zcGVjdGVkIiwgZXhwYW5kU2VjdGlvbik7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJp
bnNwZWN0ZWQiLCBmYWxzZSwgZXhwYW5kU2VjdGlvbik7CiAKICAgICAgICAgICAgIGZ1bmN0aW9u
IGV4cGFuZFNlY3Rpb24oKQogICAgICAgICAgICAgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3N0eWxlcy91cGRhdGVzLWR1cmluZy1kb20tdHJhdmVyc2FsLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3VwZGF0ZXMtZHVyaW5nLWRvbS10cmF2ZXJzYWwuaHRt
bAppbmRleCBiNjAxYWZkNDQ5OWQ4YTZkNWM0YTkxMmIyMTcyNzBhZGMxMTcyOGE5Li45ZDlmODJi
YTU2ODFjY2YxMGNkMjExMTAxMmQ0MGZkZWVlMDhjYTIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3Ivc3R5bGVzL3VwZGF0ZXMtZHVyaW5nLWRvbS10cmF2ZXJzYWwuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3VwZGF0ZXMtZHVyaW5nLWRvbS10cmF2ZXJz
YWwuaHRtbApAQCAtMTAsNyArMTAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICB2YXIga2V5ZG93
bkNvdW50ID0gNTsKICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOwogCi0g
ICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygiaW5zcGVjdGVkIiwg
c2VsZWN0Q2FsbGJhY2spOworICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JT
dHlsZXMoImluc3BlY3RlZCIsIGZhbHNlLCBzZWxlY3RDYWxsYmFjayk7CiAgICAgZnVuY3Rpb24g
c2VsZWN0Q2FsbGJhY2soKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVy
KFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUsICJfcmVidWlsZFVwZGF0
ZSIsIHNuaWZmVXBkYXRlLCB0cnVlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125657</attachid>
            <date>2012-02-06 08:51:50 -0800</date>
            <delta_ts>2012-02-06 10:18:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77865-20120206205148.patch</filename>
            <type>text/plain</type>
            <size>8660</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2ODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdhZDE0M2RjYjdhYmQx
ODY4YTQyOGZkNWEwY2ExMTNmMTdjYTc0OC4uNmNhZmJlN2RhOGJiZTk2ZWU0NTE0ZGZiMTEyM2Rk
YzYwMzk0NmI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAyLTA2ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogQ2xvc2VkIGNvbXB1dGVkIHN0eWxlIHNpZGViYXIgcGFuZSByZWJ1aWxkcywgcmVzdWx0
aW5nIGluIHNsb3duZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03Nzg2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2V4ZWN1dGVSZWJ1
aWxkVXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90
b3R5cGUuX3JlZnJlc2hDb21wdXRlZFN0eWxlU2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29tcHV0ZWRTdHlsZVNpZGViYXJQYW5lLnByb3RvdHlwZS5leHBhbmQuY2FsbGJhY2spOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVTaWRlYmFyUGFuZS5wcm90b3R5cGUu
ZXhwYW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlU2lkZWJhclBhbmUu
cHJvdG90eXBlLl9leHBhbmRlZEZvclRlc3QpOgorCiAyMDEyLTAyLTA2ICBDaHJpcyBHdWFuICA8
Y2hyaXMuZ3VhbkB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0JsYWNrYmVycnldIE5v
bi1zdXBwb3J0ZWQgYWJvdXQ6IG9wZXJhdGlvbnMgbmV2ZXIgc3RvcHMgbG9hZGluZwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFu
ZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBh
bmUuanMKaW5kZXggNmJlYzYxMDgzZTkyYTkzMjgxNGIwODVkMGM3NTgzZjljNDBlMGNhYi4uMTcx
MWM1MTY1ODAzYmFlN2Y2NjdmYjI1N2QxZThiNTJkMmJmMjFjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCkBA
IC0yNTIsMTEgKzI1MiwxOSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90
eXBlID0gewogICAgICAgICAgICAgcmVzdWx0U3R5bGVzLmNvbXB1dGVkU3R5bGUgPSBjb21wdXRl
ZFN0eWxlOwogICAgICAgICB9CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmdldENv
bXB1dGVkU3R5bGVBc3luYyhub2RlLmlkLCB0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc2VzLCBjb21w
dXRlZENhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICBpZiAodGhpcy5fY29tcHV0ZWRTdHls
ZVBhbmUuZXhwYW5kZWQpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuZ2V0Q29t
cHV0ZWRTdHlsZUFzeW5jKG5vZGUuaWQsIHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNzZXMsIGNvbXB1
dGVkQ2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3Vs
dFN0eWxlcy5jb21wdXRlZFN0eWxlID0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24u
cGFyc2VDb21wdXRlZFN0eWxlUGF5bG9hZChudWxsKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLmNz
c01vZGVsLmdldElubGluZVN0eWxlc0FzeW5jKG5vZGUuaWQsIGlubGluZUNhbGxiYWNrLmJpbmQo
dGhpcykpOwogICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuZ2V0TWF0Y2hlZFN0eWxlc0Fz
eW5jKG5vZGUuaWQsIHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNzZXMsIHRydWUsIHRydWUsIHN0eWxl
c0NhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0sCiAKKyAgICBfcmVmcmVzaENvbXB1dGVkU3R5
bGVTZWN0aW9uOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRoaXMuX2lubmVy
VXBkYXRlKHRydWUsIG51bGwsIGNhbGxiYWNrKTsKKyAgICB9LAorCiAgICAgLyoqCiAgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbj19IGVkaXRlZFNlY3Rp
b24KICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCk9fSB1c2VyQ2FsbGJhY2sKQEAgLTQxNyw3ICs0
MjUsOCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgc3R5bGVSdWxlcy5wdXNoKHsgY29tcHV0
ZWRTdHlsZTogdHJ1ZSwgc2VsZWN0b3JUZXh0OiAiIiwgc3R5bGU6IG5vZGVDb21wdXRlZFN0eWxl
LCBlZGl0YWJsZTogZmFsc2UgfSk7CisgICAgICAgIGlmIChub2RlQ29tcHV0ZWRTdHlsZSkKKyAg
ICAgICAgICAgIHN0eWxlUnVsZXMucHVzaCh7IGNvbXB1dGVkU3R5bGU6IHRydWUsIHNlbGVjdG9y
VGV4dDogIiIsIHN0eWxlOiBub2RlQ29tcHV0ZWRTdHlsZSwgZWRpdGFibGU6IGZhbHNlIH0pOwog
CiAgICAgICAgIC8vIElubGluZSBzdHlsZSBoYXMgdGhlIGdyZWF0ZXN0IHNwZWNpZmljaXR5Lgog
ICAgICAgICBpZiAoc3R5bGVzLmlubGluZVN0eWxlICYmIG5vZGUubm9kZVR5cGUoKSA9PT0gTm9k
ZS5FTEVNRU5UX05PREUpIHsKQEAgLTg0MCw2ICs4NDksMzAgQEAgV2ViSW5zcGVjdG9yLkNvbXB1
dGVkU3R5bGVTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKCkKICAgICBzaG93SW5oZXJpdGVkQ2hlY2ti
b3guYWRkRXZlbnRMaXN0ZW5lcihzaG93SW5oZXJpdGVkVG9nZ2xlRnVuY3Rpb24uYmluZCh0aGlz
KSk7CiB9CiAKK1dlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlU2lkZWJhclBhbmUucHJvdG90eXBl
ID0geworCisgICAgLy8gT3ZlcnJpZGluZyBleHBhbmQoKSByYXRoZXIgdGhhbiBvbmV4cGFuZCgp
IHRvIGVsaW1pbmF0ZSB2aXN1YWwgc2xvd25lc3MgZHVlIHRvIGEgcG9zc2libGUgYmFja2VuZCB0
cmlwLgorICAgIGV4cGFuZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIG5vZGUgPSBX
ZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnNpZGViYXJQYW5lcy5zdHlsZXMubm9kZTsKKyAg
ICAgICAgZnVuY3Rpb24gY2FsbGJhY2soKQorICAgICAgICB7CisgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuU2lkZWJhclBhbmUucHJvdG90eXBlLmV4cGFuZC5jYWxsKHRoaXMpOworICAgICAgICAg
ICAgdGhpcy5fZXhwYW5kZWRGb3JUZXN0KG5vZGUpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc2lkZWJhclBhbmVzLnN0eWxlcy5zZWN0aW9u
c1swXVswXS5wcm9wZXJ0aWVzRWxlbWVudC5jaGlsZHJlbi5sZW5ndGgpCisgICAgICAgICAgICBj
YWxsYmFjay5jYWxsKHRoaXMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBXZWJJbnNwZWN0
b3IucGFuZWxzLmVsZW1lbnRzLnNpZGViYXJQYW5lcy5zdHlsZXMuX3JlZnJlc2hDb21wdXRlZFN0
eWxlU2VjdGlvbihjYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICB9LAorCisgICAgX2V4cGFuZGVk
Rm9yVGVzdDogZnVuY3Rpb24obm9kZSkKKyAgICB7CisgICAgICAgIC8vIFRlc3RzIG92ZXJyaWRl
IHRoaXMgbWV0aG9kLgorICAgIH0KK30KKwogV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVTaWRl
YmFyUGFuZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lLnBy
b3RvdHlwZTsKIAogLyoqCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZWY5NWY4MWEzM2U2YWNlZDU4M2IzNTJkN2FlNjAwNDZh
MjdiMjI0Zi4uOTcwZmE2ZjQxZjlkNDc4NTcwZTMzM2FhOTEzYTA3OWFjYTBkYjYwMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDEyLTAyLTA2ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ2xvc2VkIGNvbXB1dGVkIHN0
eWxlIHNpZGViYXIgcGFuZSByZWJ1aWxkcywgcmVzdWx0aW5nIGluIHNsb3duZXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg2NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZWxlbWVudHMtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfRWxlbWVudFRlc3Qu
SW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlc1dpdGhDb21wdXRlZC5zdHls
ZXNDYWxsYmFjayk6CisgICAgICAgIChpbml0aWFsaXplX0VsZW1lbnRUZXN0Lkluc3BlY3RvclRl
c3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXNXaXRoQ29tcHV0ZWQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9lbGVtZW50cy9lbGVtZW50cy1wYW5lbC1zdHlsZXMuaHRtbDoKKyAgICAgICAgKiBp
bnNwZWN0b3Ivc3R5bGVzL2Nzcy1saXZlLWVkaXQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
c3R5bGVzL3N0eWxlcy1jb21wdXRlZC10cmFjZS5odG1sOgorCiAyMDEyLTAyLTA2ICBBbGV4ZWkg
RmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBSZWRlc2lnbiBzdW1tYXJ5IHZpZXcgLyByZXRhaW5pbmcgdHJlZSBjb250ZW50cwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMKaW5kZXgg
MmRjOTk3YzVlMDRmNGRmYWU2NTRjOGE1ZGNkNDUzYTY4MmVjMDRmNC4uNzZkMDE2YjkyYzJhYjc4
YTQ1NDFiNjM3MjVkMjNmM2Q5ZTExMGYxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzCkBAIC0xMDUsNiArMTA1LDI5IEBAIEluc3Bl
Y3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMgPSBmdW5jdGlvbihpZFZhbHVlLCBj
YWxsYmFjaykKICAgICB9CiB9CiAKK0luc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JT
dHlsZXNXaXRoQ29tcHV0ZWQgPSBmdW5jdGlvbihpZFZhbHVlLCBjYWxsYmFjaykKK3sKKyAgICBj
YWxsYmFjayA9IEluc3BlY3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2spOworCisgICAgZnVuY3Rp
b24gc3R5bGVzQ2FsbGJhY2sodGFyZ2V0Tm9kZSkKKyAgICB7CisgICAgICAgIG5vZGUgPSB0YXJn
ZXROb2RlOworICAgICAgICB2YXIgbm9kZTsKKyAgICAgICAgKGZ1bmN0aW9uIHNuaWZmKG5vZGUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChub2RlICYmIG5vZGUuZ2V0QXR0cmlidXRlKCJp
ZCIpID09PSBpZFZhbHVlKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVTaWRlYmFyUGFuZS5wcm90b3R5
cGUsICJfZXhwYW5kZWRGb3JUZXN0Iiwgc25pZmYpOworICAgICAgICB9KShudWxsKTsKKworICAg
ICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnNpZGViYXJQYW5lcy5jb21wdXRlZFN0
eWxlLmV4cGFuZCgpOworICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2Fp
dEZvclN0eWxlcyhpZFZhbHVlLCBzdHlsZXNDYWxsYmFjayk7Cit9CisKIEluc3BlY3RvclRlc3Qu
ZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyA9IGZ1bmN0aW9uKGV4Y2x1ZGVDb21wdXRlZCwgZXhj
bHVkZU1hdGNoZWQsIG9taXRMb25naGFuZHMpCiB7CiAgICAgZnVuY3Rpb24gZXh0cmFjdFRleHQo
ZWxlbWVudCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9lbGVt
ZW50cy1wYW5lbC1zdHlsZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9l
bGVtZW50cy1wYW5lbC1zdHlsZXMuaHRtbAppbmRleCA2MTYyZjFiOTkwNmNlMjQ0N2Q2YTEwNWEz
NjEwNWVjYmYxY2U0NDM1Li42MTRkODhjNzJkZDlmYmUwZjczMDkzNDcyYmM3OTdmY2ExYjk5ZDVi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZWxlbWVudHMtcGFu
ZWwtc3R5bGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2VsZW1l
bnRzLXBhbmVsLXN0eWxlcy5odG1sCkBAIC04LDcgKzgsNyBAQAogCiBmdW5jdGlvbiB0ZXN0KCkK
IHsKLSAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJmb28iLCBz
dGVwMSk7CisgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlc1dpdGhD
b21wdXRlZCgiZm9vIiwgc3RlcDEpOwogCiAgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgIHsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvY3NzLWxpdmUtZWRpdC5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9jc3MtbGl2ZS1lZGl0Lmh0bWwKaW5kZXgg
ZDVlMGYyOTI1ZGYzMGRlYjZmNWU5NWI1NmQxZGU3YTdkNTI5Zjg2My4uYTI3MTJiNzg0MDZkZTAz
NzhlZTdkNmE0NmQ5NTgzYTkwMzk1MDEzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy9jc3MtbGl2ZS1lZGl0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3N0eWxlcy9jc3MtbGl2ZS1lZGl0Lmh0bWwKQEAgLTI1LDcgKzI1LDcgQEAgZnVuY3Rpb24gdGVz
dCgpCiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGRpZEVkaXRSZXNvdXJjZSgpCiAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0
eWxlcygiZm9vIiwgZGlkU2VsZWN0RWxlbWVudCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlc1dpdGhDb21wdXRlZCgiZm9vIiwgZGlkU2Vs
ZWN0RWxlbWVudCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFNl
bGVjdEVsZW1lbnQoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9z
dHlsZXMtY29tcHV0ZWQtdHJhY2UuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
c3R5bGVzLWNvbXB1dGVkLXRyYWNlLmh0bWwKaW5kZXggN2FhYTdkY2MxMjQ3ZjFjMjNkYWQ2NGJm
ZDgxMzNlMTEyNWVjYmVkNi4uNzcyNjU5MzA4YTk4NTkwNGNjMjgxYjlhMjNhZDNkZDJmNWMxNmY3
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY29tcHV0
ZWQtdHJhY2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1j
b21wdXRlZC10cmFjZS5odG1sCkBAIC0zNywyMCArMzcsMjAgQEAgZGl2IHsKIAogZnVuY3Rpb24g
dGVzdCgpCiB7Ci0gICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygi
aWQxIiwgc3RlcDEpOworICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHls
ZXNXaXRoQ29tcHV0ZWQoImlkMSIsIHN0ZXAxKTsKIAogICAgIGZ1bmN0aW9uIHN0ZXAxKCkKICAg
ICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT09IENvbXB1dGVkIHN0eWxl
IGZvciBJRDEgPT09PSIpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1l
bnRTdHlsZXMoZmFsc2UsIHRydWUpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVB
bmRXYWl0Rm9yU3R5bGVzKCJpZDIiLCBzdGVwMik7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2Vs
ZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXNXaXRoQ29tcHV0ZWQoImlkMiIsIHN0ZXAyKTsKICAgICB9
CiAKICAgICBmdW5jdGlvbiBzdGVwMigpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiPT09PSBDb21wdXRlZCBzdHlsZSBmb3IgSUQyID09PT0iKTsKICAgICAgICAgSW5z
cGVjdG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKGZhbHNlLCB0cnVlKTsKLSAgICAg
ICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygiaWQzIiwgc3RlcDMp
OworICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzV2l0aENv
bXB1dGVkKCJpZDMiLCBzdGVwMyk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDMoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125665</attachid>
            <date>2012-02-06 10:18:52 -0800</date>
            <delta_ts>2012-02-07 03:52:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77865-20120206221850.patch</filename>
            <type>text/plain</type>
            <size>15528</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2ODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdhZDE0M2RjYjdhYmQx
ODY4YTQyOGZkNWEwY2ExMTNmMTdjYTc0OC4uMjJmZWY0ZmEzYWY5NWVjZGU2MjVkMjE1NTkyNTNk
ZmEzNjg0NGZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAyLTA2ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogQ2xvc2VkIGNvbXB1dGVkIHN0eWxlIHNpZGViYXIgcGFuZSByZWJ1aWxkcywgcmVzdWx0
aW5nIGluIHNsb3duZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03Nzg2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3Q6IGluc3BlY3Rvci9zdHlsZXMvbGF6eS1jb21wdXRlZC1zdHlsZS5odG1sCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NpZGViYXJQYW5lLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lLnByb3RvdHlwZS5leHBhbmQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1Np
ZGViYXJQYW5lLnByb3RvdHlwZS5fZXhlY3V0ZVJlYnVpbGRVcGRhdGUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fcmVmcmVzaENvbXB1dGVkU3R5
bGVTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90
b3R5cGUuX3JlYnVpbGRTZWN0aW9uc0ZvclN0eWxlUnVsZXMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbXB1dGVkU3R5bGVTaWRlYmFyUGFuZS5wcm90b3R5cGUuZXhwYW5kKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLm9u
cG9wdWxhdGUpOgorCisyMDEyLTAyLTA2ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ2xvc2VkIGNvbXB1dGVkIHN0eWxl
IHNpZGViYXIgcGFuZSByZWJ1aWxkcywgcmVzdWx0aW5nIGluIHNsb3duZXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg2NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9TdHlsZXNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRl
YmFyUGFuZS5wcm90b3R5cGUuX2V4ZWN1dGVSZWJ1aWxkVXBkYXRlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX3JlZnJlc2hDb21wdXRlZFN0eWxl
U2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZVNpZGViYXJQYW5l
LnByb3RvdHlwZS5leHBhbmQuY2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXB1
dGVkU3R5bGVTaWRlYmFyUGFuZS5wcm90b3R5cGUuZXhwYW5kKToKKwogMjAxMi0wMi0wNiAgQ2hy
aXMgR3VhbiAgPGNocmlzLmd1YW5AdG9yY2htb2JpbGUuY29tLmNuPgogCiAgICAgICAgIFtCbGFj
a2JlcnJ5XSBOb24tc3VwcG9ydGVkIGFib3V0OiBvcGVyYXRpb25zIG5ldmVyIHN0b3BzIGxvYWRp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2lkZWJh
clBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NpZGViYXJQYW5l
LmpzCmluZGV4IGI3ZmE3NDdkZDNkOWI4NDgyMTNlMWYxY2FmYmM0ZTQ1ZTgwMjVmMTYuLjFiM2Ew
MTlkYjgyNDZmNmEzNDgyNmJmNjgwZjY1YTE3ZWZiYzdmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TaWRlYmFyUGFuZS5qcwpAQCAtMTAyLDE0ICsxMDIs
MjAgQEAgV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHRoaXMuY29sbGFwc2UoKTsKICAgICB9LAogCi0gICAgZXhwYW5kOiBmdW5jdGlvbigpCisgICAg
ZXhwYW5kOiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9leHBh
bmRlZCkKKyAgICAgICAgaWYgKHRoaXMuX2V4cGFuZGVkKSB7CisgICAgICAgICAgICBpZiAoY2Fs
bGJhY2spCisgICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQogICAgICAgICB0aGlzLl9leHBhbmRlZCA9IHRydWU7CiAgICAgICAgIHRoaXMu
ZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJleHBhbmRlZCIpOwogICAgICAgICBpZiAodGhpcy5vbmV4
cGFuZCkKICAgICAgICAgICAgIHRoaXMub25leHBhbmQodGhpcyk7CisKKyAgICAgICAgaWYgKGNh
bGxiYWNrKQorICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICB9LAogCiAgICAgY29sbGFwc2U6
IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU3R5bGVzU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCmluZGV4IDZiZWM2MTA4M2U5MmE5MzI4MTRiMDg1ZDBj
NzU4M2Y5YzQwZTBjYWIuLmZiNTI0MTRlMjA0NWU2Zjk5N2M3OGU3OGU1ZjRkZmNiZDM3NmZjNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lk
ZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHls
ZXNTaWRlYmFyUGFuZS5qcwpAQCAtODEsNiArODEsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lk
ZWJhclBhbmUgPSBmdW5jdGlvbihjb21wdXRlZFN0eWxlUGFuZSkKICAgICB0aGlzLnRpdGxlRWxl
bWVudC5hcHBlbmRDaGlsZChhZGRCdXR0b24pOwogCiAgICAgdGhpcy5fY29tcHV0ZWRTdHlsZVBh
bmUgPSBjb21wdXRlZFN0eWxlUGFuZTsKKyAgICBjb21wdXRlZFN0eWxlUGFuZS5fc3R5bGVzU2lk
ZWJhclBhbmUgPSB0aGlzOwogICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250
ZXh0bWVudSIsIHRoaXMuX2NvbnRleHRNZW51RXZlbnRGaXJlZC5iaW5kKHRoaXMpLCB0cnVlKTsK
ICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY29sb3JGb3JtYXQuYWRkQ2hhbmdlTGlzdGVuZXIo
dGhpcy5fY29sb3JGb3JtYXRTZXR0aW5nQ2hhbmdlZC5iaW5kKHRoaXMpKTsKIApAQCAtMjUyLDEx
ICsyNTMsMTkgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHJlc3VsdFN0eWxlcy5jb21wdXRlZFN0eWxlID0gY29tcHV0ZWRTdHlsZTsK
ICAgICAgICAgfQogCi0gICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5nZXRDb21wdXRlZFN0
eWxlQXN5bmMobm9kZS5pZCwgdGhpcy5fZm9yY2VkUHNldWRvQ2xhc3NlcywgY29tcHV0ZWRDYWxs
YmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgaWYgKHRoaXMuX2NvbXB1dGVkU3R5bGVQYW5lLmV4
cGFuZGVkKQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmdldENvbXB1dGVkU3R5
bGVBc3luYyhub2RlLmlkLCB0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc2VzLCBjb21wdXRlZENhbGxi
YWNrLmJpbmQodGhpcykpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHRTdHlsZXMu
Y29tcHV0ZWRTdHlsZSA9IG51bGw7CiAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5nZXRJ
bmxpbmVTdHlsZXNBc3luYyhub2RlLmlkLCBpbmxpbmVDYWxsYmFjay5iaW5kKHRoaXMpKTsKICAg
ICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmdldE1hdGNoZWRTdHlsZXNBc3luYyhub2RlLmlk
LCB0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc2VzLCB0cnVlLCB0cnVlLCBzdHlsZXNDYWxsYmFjay5i
aW5kKHRoaXMpKTsKICAgICB9LAogCisgICAgX3JlZnJlc2hDb21wdXRlZFN0eWxlU2VjdGlvbjog
ZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLl9pbm5lclVwZGF0ZSh0cnVl
LCBudWxsLCBjYWxsYmFjayk7CisgICAgfSwKKwogICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb249fSBlZGl0ZWRTZWN0aW9uCiAgICAgICog
QHBhcmFtIHtmdW5jdGlvbigpPX0gdXNlckNhbGxiYWNrCkBAIC00MTcsNyArNDI2LDggQEAgV2Vi
SW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCi0gICAgICAgIHN0eWxlUnVsZXMucHVzaCh7IGNvbXB1dGVkU3R5bGU6IHRy
dWUsIHNlbGVjdG9yVGV4dDogIiIsIHN0eWxlOiBub2RlQ29tcHV0ZWRTdHlsZSwgZWRpdGFibGU6
IGZhbHNlIH0pOworICAgICAgICBpZiAobm9kZUNvbXB1dGVkU3R5bGUgfHwgbm9kZUNvbXB1dGVk
U3R5bGUgPT09IG51bGwpCisgICAgICAgICAgICBzdHlsZVJ1bGVzLnB1c2goeyBjb21wdXRlZFN0
eWxlOiB0cnVlLCBzZWxlY3RvclRleHQ6ICIiLCBzdHlsZTogbm9kZUNvbXB1dGVkU3R5bGUsIGVk
aXRhYmxlOiBmYWxzZSB9KTsKIAogICAgICAgICAvLyBJbmxpbmUgc3R5bGUgaGFzIHRoZSBncmVh
dGVzdCBzcGVjaWZpY2l0eS4KICAgICAgICAgaWYgKHN0eWxlcy5pbmxpbmVTdHlsZSAmJiBub2Rl
Lm5vZGVUeXBlKCkgPT09IE5vZGUuRUxFTUVOVF9OT0RFKSB7CkBAIC02MDUsNyArNjE1LDcgQEAg
V2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IGlmICh0eXBlb2YgZWRpdGFibGUgPT09ICJ1bmRlZmluZWQiKQogICAgICAgICAgICAgICAgIGVk
aXRhYmxlID0gdHJ1ZTsKIAotICAgICAgICAgICAgaWYgKGNvbXB1dGVkU3R5bGUpCisgICAgICAg
ICAgICBpZiAoY29tcHV0ZWRTdHlsZSB8fCBjb21wdXRlZFN0eWxlID09PSBudWxsKQogICAgICAg
ICAgICAgICAgIHZhciBzZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlUHJv
cGVydGllc1NlY3Rpb24oc3R5bGVSdWxlLCB1c2VkUHJvcGVydGllcyk7CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgdmFyIHNlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0eWxl
UHJvcGVydGllc1NlY3Rpb24odGhpcywgc3R5bGVSdWxlLCBlZGl0YWJsZSwgc3R5bGVSdWxlLmlz
SW5oZXJpdGVkLCBsYXN0V2FzU2VwYXJhdG9yKTsKQEAgLTg0MCw2ICs4NTAsMjMgQEAgV2ViSW5z
cGVjdG9yLkNvbXB1dGVkU3R5bGVTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKCkKICAgICBzaG93SW5o
ZXJpdGVkQ2hlY2tib3guYWRkRXZlbnRMaXN0ZW5lcihzaG93SW5oZXJpdGVkVG9nZ2xlRnVuY3Rp
b24uYmluZCh0aGlzKSk7CiB9CiAKK1dlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlU2lkZWJhclBh
bmUucHJvdG90eXBlID0geworCisgICAgLy8gT3ZlcnJpZGluZyBleHBhbmQoKSByYXRoZXIgdGhh
biBvbmV4cGFuZCgpIHRvIGVsaW1pbmF0ZSB2aXN1YWwgc2xvd25lc3MgZHVlIHRvIGEgcG9zc2li
bGUgYmFja2VuZCB0cmlwLgorICAgIGV4cGFuZDogZnVuY3Rpb24odXNlckNhbGxiYWNrKQorICAg
IHsKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2sodXNlckNhbGxiYWNrKQorICAgICAgICB7Cisg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmUucHJvdG90eXBlLmV4cGFuZC5jYWxs
KHRoaXMsIHVzZXJDYWxsYmFjayk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5fc3R5
bGVzU2lkZWJhclBhbmUuc2VjdGlvbnNbMF1bMF0ucHJvcGVydGllc0VsZW1lbnQuY2hpbGRyZW4u
bGVuZ3RoKQorICAgICAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzLCB1c2VyQ2FsbGJhY2spOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnNp
ZGViYXJQYW5lcy5zdHlsZXMuX3JlZnJlc2hDb21wdXRlZFN0eWxlU2VjdGlvbihjYWxsYmFjay5i
aW5kKHRoaXMsIHVzZXJDYWxsYmFjaykpOworICAgIH0KK30KKwogV2ViSW5zcGVjdG9yLkNvbXB1
dGVkU3R5bGVTaWRlYmFyUGFuZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlNp
ZGViYXJQYW5lLnByb3RvdHlwZTsKIAogLyoqCkBAIC0xMjg4LDYgKzEzMTUsOSBAQCBXZWJJbnNw
ZWN0b3IuQ29tcHV0ZWRTdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogCiAgICAgICAgIHZhciBzdHlsZSA9IHRoaXMuc3R5bGVSdWxlLnN0eWxlOworICAgICAg
ICBpZiAoIXN0eWxlKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIHZhciB1bmlxdWVQ
cm9wZXJ0aWVzID0gW107CiAgICAgICAgIHZhciBhbGxQcm9wZXJ0aWVzID0gc3R5bGUuYWxsUHJv
cGVydGllczsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxQcm9wZXJ0aWVzLmxlbmd0
aDsgKytpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGVmOTVmODFhMzNlNmFjZWQ1ODNiMzUyZDdhZTYwMDQ2YTI3YjIyNGYu
Ljk4Y2M4NTRiNjM2ZWEwNzEwMmU1NmViNTIzZWRlNDRmMjNmMGQ3MjggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAxMi0wMi0wNiAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENsb3NlZCBjb21wdXRlZCBzdHlsZSBzaWRl
YmFyIHBhbmUgcmVidWlsZHMsIHJlc3VsdGluZyBpbiBzbG93bmVzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc4NjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2Vs
ZW1lbnRzLXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0VsZW1lbnRUZXN0Lkluc3BlY3Rv
clRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXNXaXRoQ29tcHV0ZWQuc3R5bGVzQ2FsbGJh
Y2spOgorICAgICAgICAoaW5pdGlhbGl6ZV9FbGVtZW50VGVzdC5JbnNwZWN0b3JUZXN0LnNlbGVj
dE5vZGVBbmRXYWl0Rm9yU3R5bGVzV2l0aENvbXB1dGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZWxlbWVudHMvZWxlbWVudHMtcGFuZWwtc3R5bGVzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9y
L3N0eWxlcy9jc3MtbGl2ZS1lZGl0Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9s
YXp5LWNvbXB1dGVkLXN0eWxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVj
dG9yL3N0eWxlcy9sYXp5LWNvbXB1dGVkLXN0eWxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNvbXB1dGVkLXRyYWNlLmh0bWw6CisKIDIwMTItMDItMDYg
IEFsZXhlaSBGaWxpcHBvdiAgPGFsZXhlaWZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFJlZGVzaWduIHN1bW1hcnkgdmlldyAvIHJldGFpbmluZyB0cmVlIGNvbnRlbnRz
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10
ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5q
cwppbmRleCAyZGM5OTdjNWUwNGY0ZGZhZTY1NGM4YTVkY2Q0NTNhNjgyZWMwNGY0Li4yYWM1M2M1
NDNhNTM3OGU5OTlhZDE2OTMyZmFlMmUzNzU3NGNmOTFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMKQEAgLTEwNSw2ICsxMDUsMTgg
QEAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcyA9IGZ1bmN0aW9uKGlk
VmFsdWUsIGNhbGxiYWNrKQogICAgIH0KIH0KIAorSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5k
V2FpdEZvclN0eWxlc1dpdGhDb21wdXRlZCA9IGZ1bmN0aW9uKGlkVmFsdWUsIGNhbGxiYWNrKQor
eworICAgIGNhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFjayk7CisKKyAg
ICBmdW5jdGlvbiBzdHlsZXNDYWxsYmFjayh0YXJnZXROb2RlKQorICAgIHsKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5zaWRlYmFyUGFuZXMuY29tcHV0ZWRTdHlsZS5leHBh
bmQoY2FsbGJhY2spOworICAgIH0KKworICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdh
aXRGb3JTdHlsZXMoaWRWYWx1ZSwgc3R5bGVzQ2FsbGJhY2spOworfQorCiBJbnNwZWN0b3JUZXN0
LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXMgPSBmdW5jdGlvbihleGNsdWRlQ29tcHV0ZWQsIGV4
Y2x1ZGVNYXRjaGVkLCBvbWl0TG9uZ2hhbmRzKQogewogICAgIGZ1bmN0aW9uIGV4dHJhY3RUZXh0
KGVsZW1lbnQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZWxl
bWVudHMtcGFuZWwtc3R5bGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMv
ZWxlbWVudHMtcGFuZWwtc3R5bGVzLmh0bWwKaW5kZXggNjE2MmYxYjk5MDZjZTI0NDdkNmExMDVh
MzYxMDVlY2JmMWNlNDQzNS4uNjE0ZDg4YzcyZGQ5ZmJlMGY3MzA5MzQ3MmJjNzk3ZmNhMWI5OWQ1
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2VsZW1lbnRzLXBh
bmVsLXN0eWxlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9lbGVt
ZW50cy1wYW5lbC1zdHlsZXMuaHRtbApAQCAtOCw3ICs4LDcgQEAKIAogZnVuY3Rpb24gdGVzdCgp
CiB7Ci0gICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygiZm9vIiwg
c3RlcDEpOworICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXNXaXRo
Q29tcHV0ZWQoImZvbyIsIHN0ZXAxKTsKIAogICAgIGZ1bmN0aW9uIHN0ZXAxKCkKICAgICB7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL2Nzcy1saXZlLWVkaXQuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvY3NzLWxpdmUtZWRpdC5odG1sCmluZGV4
IGQ1ZTBmMjkyNWRmMzBkZWI2ZjVlOTViNTZkMWRlN2E3ZDUyOWY4NjMuLmEyNzEyYjc4NDA2ZGUw
Mzc4ZWU3ZDZhNDZkOTU4M2E5MDM5NTAxMzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMvY3NzLWxpdmUtZWRpdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9zdHlsZXMvY3NzLWxpdmUtZWRpdC5odG1sCkBAIC0yNSw3ICsyNSw3IEBAIGZ1bmN0aW9uIHRl
c3QoKQogCiAgICAgICAgICAgICBmdW5jdGlvbiBkaWRFZGl0UmVzb3VyY2UoKQogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JT
dHlsZXMoImZvbyIsIGRpZFNlbGVjdEVsZW1lbnQpOworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXNXaXRoQ29tcHV0ZWQoImZvbyIsIGRpZFNl
bGVjdEVsZW1lbnQpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBkaWRT
ZWxlY3RFbGVtZW50KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
bGF6eS1jb21wdXRlZC1zdHlsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
c3R5bGVzL2xhenktY29tcHV0ZWQtc3R5bGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwOGMx
ODFiZDA1MjEyNDgxZDY5ODRmYzcyMTZmNWQxN2EwNWQwY2QKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL2xhenktY29tcHV0ZWQtc3R5bGUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsOTAgQEAKK1Rlc3RzIHRoYXQgY29tcHV0ZWQgc3R5bGVzIGV4cGFuZCBh
bmQgYWxsb3cgdHJhY2luZyB0byBzdHlsZSBydWxlcy4KKworPT09PSBBbGwgc3R5bGVzIChzaG91
bGQgYmUgbm8gY29tcHV0ZWQpID09PT0KK1tleHBhbmRlZF0gCisKK1tleHBhbmRlZF0gCitlbGVt
ZW50LnN0eWxlICB7ICgpCisKKz09PT09PT09IE1hdGNoZWQgQ1NTIFJ1bGVzID09PT09PT09Citb
ZXhwYW5kZWRdIAorI2luc3BlY3RlZCAgeyAobGF6eS1jb21wdXRlZC1zdHlsZS5odG1sOjE1KQor
YmFja2dyb3VuZDogZ3JheTsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbml0aWFsOworICAgIGJh
Y2tncm91bmQtcmVwZWF0LXg6IGluaXRpYWw7CisgICAgYmFja2dyb3VuZC1yZXBlYXQteTogaW5p
dGlhbDsKKyAgICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGluaXRpYWw7CisgICAgYmFja2dyb3Vu
ZC1wb3NpdGlvbi14OiBpbml0aWFsOworICAgIGJhY2tncm91bmQtcG9zaXRpb24teTogaW5pdGlh
bDsKKyAgICBiYWNrZ3JvdW5kLW9yaWdpbjogaW5pdGlhbDsKKyAgICBiYWNrZ3JvdW5kLWNsaXA6
IGluaXRpYWw7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JheTsKKworW2V4cGFuZGVkXSAKKyNp
bnNwZWN0ZWQgIHsgKGxhenktY29tcHV0ZWQtc3R5bGUuaHRtbDoxMCkKKy8tLSBvdmVybG9hZGVk
IC0tLyBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKK2ZvbnQtZmFtaWx5OiBDb3VyaWVyOworCitb
ZXhwYW5kZWRdIAorI2luc3BlY3RlZCAgeyAobGF6eS1jb21wdXRlZC1zdHlsZS5odG1sOjUpCisv
LS0gb3ZlcmxvYWRlZCAtLS8gYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisvLS0gb3ZlcmxvYWRl
ZCAtLS8gZm9udC1mYW1pbHk6IFRpbWVzOworCitbZXhwYW5kZWRdIAorZGl2ICB7ICh1c2VyIGFn
ZW50IHN0eWxlc2hlZXQpCitkaXNwbGF5OiBibG9jazsKKworCis9PT09IEFsbCBzdHlsZXMgKGNv
bXB1dGVkIHNob3VsZCBiZSB0aGVyZSkgPT09PQorW2V4cGFuZGVkXSAKK2JhY2tncm91bmQtYXR0
YWNobWVudDogc2Nyb2xsOworICAgICNpbnNwZWN0ZWQgLSBpbml0aWFsIGxhenktY29tcHV0ZWQt
c3R5bGUuaHRtbDoxNQorYmFja2dyb3VuZC1jbGlwOiBib3JkZXItYm94OworICAgICNpbnNwZWN0
ZWQgLSBpbml0aWFsIGxhenktY29tcHV0ZWQtc3R5bGUuaHRtbDoxNQorYmFja2dyb3VuZC1jb2xv
cjogZ3JheTsKKyAgICAjaW5zcGVjdGVkIC0gZ3JheSBsYXp5LWNvbXB1dGVkLXN0eWxlLmh0bWw6
MTUKKyAgICAvLS0gb3ZlcmxvYWRlZCAtLS8gI2luc3BlY3RlZCAtIGJsYWNrIGxhenktY29tcHV0
ZWQtc3R5bGUuaHRtbDoxMAorICAgIC8tLSBvdmVybG9hZGVkIC0tLyAjaW5zcGVjdGVkIC0gZ3Jl
ZW4gbGF6eS1jb21wdXRlZC1zdHlsZS5odG1sOjUKK2JhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cisg
ICAgI2luc3BlY3RlZCAtIGluaXRpYWwgbGF6eS1jb21wdXRlZC1zdHlsZS5odG1sOjE1CitiYWNr
Z3JvdW5kLW9yaWdpbjogcGFkZGluZy1ib3g7CisgICAgI2luc3BlY3RlZCAtIGluaXRpYWwgbGF6
eS1jb21wdXRlZC1zdHlsZS5odG1sOjE1CitkaXNwbGF5OiBibG9jazsKKyAgICBkaXYgLSBibG9j
ayB1c2VyIGFnZW50IHN0eWxlc2hlZXQKK2ZvbnQtZmFtaWx5OiBDb3VyaWVyOworICAgICNpbnNw
ZWN0ZWQgLSBDb3VyaWVyIGxhenktY29tcHV0ZWQtc3R5bGUuaHRtbDoxMAorICAgIC8tLSBvdmVy
bG9hZGVkIC0tLyAjaW5zcGVjdGVkIC0gVGltZXMgbGF6eS1jb21wdXRlZC1zdHlsZS5odG1sOjUK
KworW2V4cGFuZGVkXSAKK2VsZW1lbnQuc3R5bGUgIHsgKCkKKworPT09PT09PT0gTWF0Y2hlZCBD
U1MgUnVsZXMgPT09PT09PT0KK1tleHBhbmRlZF0gCisjaW5zcGVjdGVkICB7IChsYXp5LWNvbXB1
dGVkLXN0eWxlLmh0bWw6MTUpCitiYWNrZ3JvdW5kOiBncmF5OworICAgIGJhY2tncm91bmQtaW1h
Z2U6IGluaXRpYWw7CisgICAgYmFja2dyb3VuZC1yZXBlYXQteDogaW5pdGlhbDsKKyAgICBiYWNr
Z3JvdW5kLXJlcGVhdC15OiBpbml0aWFsOworICAgIGJhY2tncm91bmQtYXR0YWNobWVudDogaW5p
dGlhbDsKKyAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IGluaXRpYWw7CisgICAgYmFja2dyb3Vu
ZC1wb3NpdGlvbi15OiBpbml0aWFsOworICAgIGJhY2tncm91bmQtb3JpZ2luOiBpbml0aWFsOwor
ICAgIGJhY2tncm91bmQtY2xpcDogaW5pdGlhbDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmF5
OworCitbZXhwYW5kZWRdIAorI2luc3BlY3RlZCAgeyAobGF6eS1jb21wdXRlZC1zdHlsZS5odG1s
OjEwKQorLy0tIG92ZXJsb2FkZWQgLS0vIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOworZm9udC1m
YW1pbHk6IENvdXJpZXI7CisKK1tleHBhbmRlZF0gCisjaW5zcGVjdGVkICB7IChsYXp5LWNvbXB1
dGVkLXN0eWxlLmh0bWw6NSkKKy8tLSBvdmVybG9hZGVkIC0tLyBiYWNrZ3JvdW5kLWNvbG9yOiBn
cmVlbjsKKy8tLSBvdmVybG9hZGVkIC0tLyBmb250LWZhbWlseTogVGltZXM7CisKK1tleHBhbmRl
ZF0gCitkaXYgIHsgKHVzZXIgYWdlbnQgc3R5bGVzaGVldCkKK2Rpc3BsYXk6IGJsb2NrOworCisK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9sYXp5LWNvbXB1dGVk
LXN0eWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL2xhenktY29tcHV0ZWQt
c3R5bGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWIwNmI0MTdhMDZhNTRmYjlmNTJiN2ViNGZlNWUxNzQ1
ZmZiMTU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9s
YXp5LWNvbXB1dGVkLXN0eWxlLmh0bWwKQEAgLTAsMCArMSw1NCBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzdHlsZT4KKworI2luc3BlY3RlZCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Cisg
ICAgZm9udC1mYW1pbHk6IFRpbWVzOworfQorCisjaW5zcGVjdGVkIHsKKyAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBibGFjazsKKyAgICBmb250LWZhbWlseTogQ291cmllcjsKK30KKworI2luc3BlY3Rl
ZCB7CisgICAgYmFja2dyb3VuZDogZ3JheTsKK30KKworPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JU
ZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJpbnNwZWN0ZWQiLCBzdGVwMSk7CisKKyAg
ICBmdW5jdGlvbiBzdGVwMSgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiPT09PSBBbGwgc3R5bGVzIChzaG91bGQgYmUgbm8gY29tcHV0ZWQpID09PT0iKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKGZhbHNlLCBmYWxzZSk7
CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc2lkZWJhclBhbmVzLmNvbXB1
dGVkU3R5bGUuZXhwYW5kKHN0ZXAyKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMigpCisg
ICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09PSBBbGwgc3R5bGVzIChj
b21wdXRlZCBzaG91bGQgYmUgdGhlcmUpID09PT0iKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5k
dW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKGZhbHNlLCBmYWxzZSk7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdHMgdGhhdCBjb21wdXRlZCBzdHlsZXMg
ZXhwYW5kIGFuZCBhbGxvdyB0cmFjaW5nIHRvIHN0eWxlIHJ1bGVzLgorPC9wPgorCis8ZGl2IGlk
PSJpbnNwZWN0ZWQiPgorPC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNvbXB1dGVkLXRyYWNlLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1jb21wdXRlZC10cmFjZS5odG1sCmlu
ZGV4IDdhYWE3ZGNjMTI0N2YxYzIzZGFkNjRiZmQ4MTMzZTExMjVlY2JlZDYuLjc3MjY1OTMwOGE5
ODU5MDRjYzI4MWI5YTIzYWQzZGQyZjVjMTZmNzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNvbXB1dGVkLXRyYWNlLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY29tcHV0ZWQtdHJhY2UuaHRtbApAQCAtMzcsMjAg
KzM3LDIwIEBAIGRpdiB7CiAKIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIEluc3BlY3RvclRlc3Qu
c2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImlkMSIsIHN0ZXAxKTsKKyAgICBJbnNwZWN0b3JU
ZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzV2l0aENvbXB1dGVkKCJpZDEiLCBzdGVwMSk7
CiAKICAgICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiPT09PSBDb21wdXRlZCBzdHlsZSBmb3IgSUQxID09PT0iKTsKICAgICAgICAgSW5z
cGVjdG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKGZhbHNlLCB0cnVlKTsKLSAgICAg
ICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygiaWQyIiwgc3RlcDIp
OworICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzV2l0aENv
bXB1dGVkKCJpZDIiLCBzdGVwMik7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDIoKQogICAg
IHsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PT0gQ29tcHV0ZWQgc3R5bGUg
Zm9yIElEMiA9PT09Iik7CiAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVu
dFN0eWxlcyhmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFu
ZFdhaXRGb3JTdHlsZXMoImlkMyIsIHN0ZXAzKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxl
Y3ROb2RlQW5kV2FpdEZvclN0eWxlc1dpdGhDb21wdXRlZCgiaWQzIiwgc3RlcDMpOwogICAgIH0K
IAogICAgIGZ1bmN0aW9uIHN0ZXAzKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125807</attachid>
            <date>2012-02-07 03:52:25 -0800</date>
            <delta_ts>2012-02-07 07:39:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77865-20120207155223.patch</filename>
            <type>text/plain</type>
            <size>13975</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDZkYjJmNGQ1ZGIwYmZh
MjZlNDA3NTA1OGIzMzY1N2U3NGIxOTBmZS4uNTViOGE2Y2FhZGUyZDYzNjYyMzYzNWJmMDE5MzE5
NjFhNTc0MDYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAyLTA2ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogQ2xvc2VkIGNvbXB1dGVkIHN0eWxlIHNpZGViYXIgcGFuZSByZWJ1aWxkcywgcmVzdWx0
aW5nIGluIHNsb3duZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03Nzg2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3Q6IGluc3BlY3Rvci9zdHlsZXMvbGF6eS1jb21wdXRlZC1zdHlsZS5odG1sCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NpZGViYXJQYW5lLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lLnByb3RvdHlwZS5leHBhbmQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1Np
ZGViYXJQYW5lLnByb3RvdHlwZS5fZXhlY3V0ZVJlYnVpbGRVcGRhdGUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fcmVmcmVzaENvbXB1dGVkU3R5
bGVTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90
b3R5cGUuX3JlYnVpbGRTZWN0aW9uc0ZvclN0eWxlUnVsZXMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbXB1dGVkU3R5bGVTaWRlYmFyUGFuZS5wcm90b3R5cGUuZXhwYW5kKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLm9u
cG9wdWxhdGUpOgorCiAyMDEyLTAyLTA3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90
QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTA2OTEyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRl
YmFyUGFuZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lk
ZWJhclBhbmUuanMKaW5kZXggNmJlYzYxMDgzZTkyYTkzMjgxNGIwODVkMGM3NTgzZjljNDBlMGNh
Yi4uODM2MmJiOTI0YWUxOTcxMzVhYzdmMDUwZDQyYWI4ZmZlOTVkNjg4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5l
LmpzCkBAIC04MSw2ICs4MSw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZSA9IGZ1
bmN0aW9uKGNvbXB1dGVkU3R5bGVQYW5lKQogICAgIHRoaXMudGl0bGVFbGVtZW50LmFwcGVuZENo
aWxkKGFkZEJ1dHRvbik7CiAKICAgICB0aGlzLl9jb21wdXRlZFN0eWxlUGFuZSA9IGNvbXB1dGVk
U3R5bGVQYW5lOworICAgIGNvbXB1dGVkU3R5bGVQYW5lLl9zdHlsZXNTaWRlYmFyUGFuZSA9IHRo
aXM7CiAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhp
cy5fY29udGV4dE1lbnVFdmVudEZpcmVkLmJpbmQodGhpcyksIHRydWUpOwogICAgIFdlYkluc3Bl
Y3Rvci5zZXR0aW5ncy5jb2xvckZvcm1hdC5hZGRDaGFuZ2VMaXN0ZW5lcih0aGlzLl9jb2xvckZv
cm1hdFNldHRpbmdDaGFuZ2VkLmJpbmQodGhpcykpOwogCkBAIC0yNTIsMTEgKzI1MywxOSBAQCBX
ZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAg
cmVzdWx0U3R5bGVzLmNvbXB1dGVkU3R5bGUgPSBjb21wdXRlZFN0eWxlOwogICAgICAgICB9CiAK
LSAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmdldENvbXB1dGVkU3R5bGVBc3luYyhub2Rl
LmlkLCB0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc2VzLCBjb21wdXRlZENhbGxiYWNrLmJpbmQodGhp
cykpOworICAgICAgICBpZiAodGhpcy5fY29tcHV0ZWRTdHlsZVBhbmUuZXhwYW5kZWQpCisgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuZ2V0Q29tcHV0ZWRTdHlsZUFzeW5jKG5vZGUu
aWQsIHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNzZXMsIGNvbXB1dGVkQ2FsbGJhY2suYmluZCh0aGlz
KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdFN0eWxlcy5jb21wdXRlZFN0eWxl
ID0gbnVsbDsKICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmdldElubGluZVN0eWxlc0Fz
eW5jKG5vZGUuaWQsIGlubGluZUNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgICAgICBXZWJJbnNw
ZWN0b3IuY3NzTW9kZWwuZ2V0TWF0Y2hlZFN0eWxlc0FzeW5jKG5vZGUuaWQsIHRoaXMuX2ZvcmNl
ZFBzZXVkb0NsYXNzZXMsIHRydWUsIHRydWUsIHN0eWxlc0NhbGxiYWNrLmJpbmQodGhpcykpOwog
ICAgIH0sCiAKKyAgICBfcmVmcmVzaENvbXB1dGVkU3R5bGVTZWN0aW9uOiBmdW5jdGlvbihjYWxs
YmFjaykKKyAgICB7CisgICAgICAgIHRoaXMuX2lubmVyVXBkYXRlKHRydWUsIG51bGwsIGNhbGxi
YWNrKTsKKyAgICB9LAorCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU3R5
bGVQcm9wZXJ0aWVzU2VjdGlvbj19IGVkaXRlZFNlY3Rpb24KICAgICAgKiBAcGFyYW0ge2Z1bmN0
aW9uKCk9fSB1c2VyQ2FsbGJhY2sKQEAgLTQxNyw3ICs0MjYsOCBAQCBXZWJJbnNwZWN0b3IuU3R5
bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
LSAgICAgICAgc3R5bGVSdWxlcy5wdXNoKHsgY29tcHV0ZWRTdHlsZTogdHJ1ZSwgc2VsZWN0b3JU
ZXh0OiAiIiwgc3R5bGU6IG5vZGVDb21wdXRlZFN0eWxlLCBlZGl0YWJsZTogZmFsc2UgfSk7Cisg
ICAgICAgIGlmIChub2RlQ29tcHV0ZWRTdHlsZSB8fCBub2RlQ29tcHV0ZWRTdHlsZSA9PT0gbnVs
bCkKKyAgICAgICAgICAgIHN0eWxlUnVsZXMucHVzaCh7IGNvbXB1dGVkU3R5bGU6IHRydWUsIHNl
bGVjdG9yVGV4dDogIiIsIHN0eWxlOiBub2RlQ29tcHV0ZWRTdHlsZSwgZWRpdGFibGU6IGZhbHNl
IH0pOwogCiAgICAgICAgIC8vIElubGluZSBzdHlsZSBoYXMgdGhlIGdyZWF0ZXN0IHNwZWNpZmlj
aXR5LgogICAgICAgICBpZiAoc3R5bGVzLmlubGluZVN0eWxlICYmIG5vZGUubm9kZVR5cGUoKSA9
PT0gTm9kZS5FTEVNRU5UX05PREUpIHsKQEAgLTYwNSw3ICs2MTUsNyBAQCBXZWJJbnNwZWN0b3Iu
U3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKHR5cGVvZiBl
ZGl0YWJsZSA9PT0gInVuZGVmaW5lZCIpCiAgICAgICAgICAgICAgICAgZWRpdGFibGUgPSB0cnVl
OwogCi0gICAgICAgICAgICBpZiAoY29tcHV0ZWRTdHlsZSkKKyAgICAgICAgICAgIGlmIChjb21w
dXRlZFN0eWxlIHx8IGNvbXB1dGVkU3R5bGUgPT09IG51bGwpCiAgICAgICAgICAgICAgICAgdmFy
IHNlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVQcm9wZXJ0aWVzU2VjdGlv
bihzdHlsZVJ1bGUsIHVzZWRQcm9wZXJ0aWVzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICB2YXIgc2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2Vj
dGlvbih0aGlzLCBzdHlsZVJ1bGUsIGVkaXRhYmxlLCBzdHlsZVJ1bGUuaXNJbmhlcml0ZWQsIGxh
c3RXYXNTZXBhcmF0b3IpOwpAQCAtODQwLDYgKzg1MCwyMCBAQCBXZWJJbnNwZWN0b3IuQ29tcHV0
ZWRTdHlsZVNpZGViYXJQYW5lID0gZnVuY3Rpb24oKQogICAgIHNob3dJbmhlcml0ZWRDaGVja2Jv
eC5hZGRFdmVudExpc3RlbmVyKHNob3dJbmhlcml0ZWRUb2dnbGVGdW5jdGlvbi5iaW5kKHRoaXMp
KTsKIH0KIAorV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVTaWRlYmFyUGFuZS5wcm90b3R5cGUg
PSB7CisKKyAgICAvLyBPdmVycmlkaW5nIGV4cGFuZCgpIHJhdGhlciB0aGFuIG9uZXhwYW5kKCkg
dG8gZWxpbWluYXRlIHRoZSB2aXN1YWwgc2xvd25lc3MgZHVlIHRvIGEgcG9zc2libGUgYmFja2Vu
ZCB0cmlwLgorICAgIGV4cGFuZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24g
Y2FsbGJhY2soKQorICAgICAgICB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuU2lkZWJhclBh
bmUucHJvdG90eXBlLmV4cGFuZC5jYWxsKHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5zaWRlYmFyUGFuZXMuc3R5bGVzLl9yZWZyZXNoQ29t
cHV0ZWRTdHlsZVNlY3Rpb24oY2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgfQorfQorCiBXZWJJ
bnNwZWN0b3IuQ29tcHV0ZWRTdHlsZVNpZGViYXJQYW5lLnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuU2lkZWJhclBhbmUucHJvdG90eXBlOwogCiAvKioKQEAgLTEyODgsNiArMTMx
Miw5IEBAIFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90
eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdmFyIHN0eWxlID0gdGhpcy5zdHlsZVJ1bGUu
c3R5bGU7CisgICAgICAgIGlmICghc3R5bGUpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAg
ICAgdmFyIHVuaXF1ZVByb3BlcnRpZXMgPSBbXTsKICAgICAgICAgdmFyIGFsbFByb3BlcnRpZXMg
PSBzdHlsZS5hbGxQcm9wZXJ0aWVzOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFsbFBy
b3BlcnRpZXMubGVuZ3RoOyArK2kpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTZjMWY3YWE4ZjkxYzEzODg1YTA4MjY5ZmVk
OGVjZWEwN2Y0Y2IyNS4uMTM2MWMwMDZhMzMxM2ZmMjQ1NzEzMzIyMjgwN2IzNzQ2YjVkNTE1YyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAyLTA2ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBh
dmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ2xvc2VkIGNvbXB1
dGVkIHN0eWxlIHNpZGViYXIgcGFuZSByZWJ1aWxkcywgcmVzdWx0aW5nIGluIHNsb3duZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzg2NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfRWxlbWVu
dFRlc3QuSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlc1dpdGhDb21wdXRl
ZC5zdHlsZXNDYWxsYmFjayk6CisgICAgICAgIChpbml0aWFsaXplX0VsZW1lbnRUZXN0Lkluc3Bl
Y3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXNXaXRoQ29tcHV0ZWQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9lbGVtZW50cy9lbGVtZW50cy1wYW5lbC1zdHlsZXMuaHRtbDoKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc3R5bGVzL2Nzcy1saXZlLWVkaXQuaHRtbDoKKyAgICAgICAgKiBpbnNw
ZWN0b3Ivc3R5bGVzL2xhenktY29tcHV0ZWQtc3R5bGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL2xhenktY29tcHV0ZWQtc3R5bGUuaHRtbDogQWRkZWQu
CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY29tcHV0ZWQtdHJhY2UuaHRtbDoK
KwogMjAxMi0wMi0wNyAgS2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNv
bT4KIAogICAgICAgICBHVEsgJiBRVCBSZWJhc2VsaW5lIGFmdGVyIHIxMDY5MTIuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcwppbmRleCAy
ZGM5OTdjNWUwNGY0ZGZhZTY1NGM4YTVkY2Q0NTNhNjgyZWMwNGY0Li40NTJmMDRiNjYzNzMzNGY2
NDNmMzE3OWFlMmJlNWZlYjI1ZjExNjVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMKQEAgLTEwNSw2ICsxMDUsMTkgQEAgSW5zcGVj
dG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcyA9IGZ1bmN0aW9uKGlkVmFsdWUsIGNh
bGxiYWNrKQogICAgIH0KIH0KIAorSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0
eWxlc1dpdGhDb21wdXRlZCA9IGZ1bmN0aW9uKGlkVmFsdWUsIGNhbGxiYWNrKQoreworICAgIGNh
bGxiYWNrID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFjayk7CisKKyAgICBmdW5jdGlv
biBzdHlsZXNDYWxsYmFjayh0YXJnZXROb2RlKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZS5wcm90b3R5cGUsICJleHBhbmQi
LCBjYWxsYmFjayk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc2lkZWJh
clBhbmVzLmNvbXB1dGVkU3R5bGUuZXhwYW5kKCk7CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVz
dC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcyhpZFZhbHVlLCBzdHlsZXNDYWxsYmFjayk7Cit9
CisKIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyA9IGZ1bmN0aW9uKGV4
Y2x1ZGVDb21wdXRlZCwgZXhjbHVkZU1hdGNoZWQsIG9taXRMb25naGFuZHMpCiB7CiAgICAgZnVu
Y3Rpb24gZXh0cmFjdFRleHQoZWxlbWVudCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9lbGVtZW50cy9lbGVtZW50cy1wYW5lbC1zdHlsZXMuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9lbGVtZW50cy9lbGVtZW50cy1wYW5lbC1zdHlsZXMuaHRtbAppbmRleCA2MTYyZjFi
OTkwNmNlMjQ0N2Q2YTEwNWEzNjEwNWVjYmYxY2U0NDM1Li42MTRkODhjNzJkZDlmYmUwZjczMDkz
NDcyYmM3OTdmY2ExYjk5ZDViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxl
bWVudHMvZWxlbWVudHMtcGFuZWwtc3R5bGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2VsZW1lbnRzL2VsZW1lbnRzLXBhbmVsLXN0eWxlcy5odG1sCkBAIC04LDcgKzgsNyBAQAog
CiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0
Rm9yU3R5bGVzKCJmb28iLCBzdGVwMSk7CisgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5k
V2FpdEZvclN0eWxlc1dpdGhDb21wdXRlZCgiZm9vIiwgc3RlcDEpOwogCiAgICAgZnVuY3Rpb24g
c3RlcDEoKQogICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
Y3NzLWxpdmUtZWRpdC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9jc3MtbGl2
ZS1lZGl0Lmh0bWwKaW5kZXggZDVlMGYyOTI1ZGYzMGRlYjZmNWU5NWI1NmQxZGU3YTdkNTI5Zjg2
My4uYTI3MTJiNzg0MDZkZTAzNzhlZTdkNmE0NmQ5NTgzYTkwMzk1MDEzMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9jc3MtbGl2ZS1lZGl0Lmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9jc3MtbGl2ZS1lZGl0Lmh0bWwKQEAgLTI1LDcgKzI1
LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGRpZEVkaXRSZXNv
dXJjZSgpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxl
Y3ROb2RlQW5kV2FpdEZvclN0eWxlcygiZm9vIiwgZGlkU2VsZWN0RWxlbWVudCk7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlc1dpdGhDb21w
dXRlZCgiZm9vIiwgZGlkU2VsZWN0RWxlbWVudCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGZ1bmN0aW9uIGRpZFNlbGVjdEVsZW1lbnQoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3N0eWxlcy9sYXp5LWNvbXB1dGVkLXN0eWxlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvbGF6eS1jb21wdXRlZC1zdHlsZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTA4YzE4MWJkMDUyMTI0ODFkNjk4NGZjNzIxNmY1ZDE3YTA1ZDBjZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvbGF6eS1jb21wdXRl
ZC1zdHlsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5MCBAQAorVGVzdHMgdGhhdCBjb21wdXRl
ZCBzdHlsZXMgZXhwYW5kIGFuZCBhbGxvdyB0cmFjaW5nIHRvIHN0eWxlIHJ1bGVzLgorCis9PT09
IEFsbCBzdHlsZXMgKHNob3VsZCBiZSBubyBjb21wdXRlZCkgPT09PQorW2V4cGFuZGVkXSAKKwor
W2V4cGFuZGVkXSAKK2VsZW1lbnQuc3R5bGUgIHsgKCkKKworPT09PT09PT0gTWF0Y2hlZCBDU1Mg
UnVsZXMgPT09PT09PT0KK1tleHBhbmRlZF0gCisjaW5zcGVjdGVkICB7IChsYXp5LWNvbXB1dGVk
LXN0eWxlLmh0bWw6MTUpCitiYWNrZ3JvdW5kOiBncmF5OworICAgIGJhY2tncm91bmQtaW1hZ2U6
IGluaXRpYWw7CisgICAgYmFja2dyb3VuZC1yZXBlYXQteDogaW5pdGlhbDsKKyAgICBiYWNrZ3Jv
dW5kLXJlcGVhdC15OiBpbml0aWFsOworICAgIGJhY2tncm91bmQtYXR0YWNobWVudDogaW5pdGlh
bDsKKyAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IGluaXRpYWw7CisgICAgYmFja2dyb3VuZC1w
b3NpdGlvbi15OiBpbml0aWFsOworICAgIGJhY2tncm91bmQtb3JpZ2luOiBpbml0aWFsOworICAg
IGJhY2tncm91bmQtY2xpcDogaW5pdGlhbDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmF5Owor
CitbZXhwYW5kZWRdIAorI2luc3BlY3RlZCAgeyAobGF6eS1jb21wdXRlZC1zdHlsZS5odG1sOjEw
KQorLy0tIG92ZXJsb2FkZWQgLS0vIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOworZm9udC1mYW1p
bHk6IENvdXJpZXI7CisKK1tleHBhbmRlZF0gCisjaW5zcGVjdGVkICB7IChsYXp5LWNvbXB1dGVk
LXN0eWxlLmh0bWw6NSkKKy8tLSBvdmVybG9hZGVkIC0tLyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVl
bjsKKy8tLSBvdmVybG9hZGVkIC0tLyBmb250LWZhbWlseTogVGltZXM7CisKK1tleHBhbmRlZF0g
CitkaXYgIHsgKHVzZXIgYWdlbnQgc3R5bGVzaGVldCkKK2Rpc3BsYXk6IGJsb2NrOworCisKKz09
PT0gQWxsIHN0eWxlcyAoY29tcHV0ZWQgc2hvdWxkIGJlIHRoZXJlKSA9PT09CitbZXhwYW5kZWRd
IAorYmFja2dyb3VuZC1hdHRhY2htZW50OiBzY3JvbGw7CisgICAgI2luc3BlY3RlZCAtIGluaXRp
YWwgbGF6eS1jb21wdXRlZC1zdHlsZS5odG1sOjE1CitiYWNrZ3JvdW5kLWNsaXA6IGJvcmRlci1i
b3g7CisgICAgI2luc3BlY3RlZCAtIGluaXRpYWwgbGF6eS1jb21wdXRlZC1zdHlsZS5odG1sOjE1
CitiYWNrZ3JvdW5kLWNvbG9yOiBncmF5OworICAgICNpbnNwZWN0ZWQgLSBncmF5IGxhenktY29t
cHV0ZWQtc3R5bGUuaHRtbDoxNQorICAgIC8tLSBvdmVybG9hZGVkIC0tLyAjaW5zcGVjdGVkIC0g
YmxhY2sgbGF6eS1jb21wdXRlZC1zdHlsZS5odG1sOjEwCisgICAgLy0tIG92ZXJsb2FkZWQgLS0v
ICNpbnNwZWN0ZWQgLSBncmVlbiBsYXp5LWNvbXB1dGVkLXN0eWxlLmh0bWw6NQorYmFja2dyb3Vu
ZC1pbWFnZTogbm9uZTsKKyAgICAjaW5zcGVjdGVkIC0gaW5pdGlhbCBsYXp5LWNvbXB1dGVkLXN0
eWxlLmh0bWw6MTUKK2JhY2tncm91bmQtb3JpZ2luOiBwYWRkaW5nLWJveDsKKyAgICAjaW5zcGVj
dGVkIC0gaW5pdGlhbCBsYXp5LWNvbXB1dGVkLXN0eWxlLmh0bWw6MTUKK2Rpc3BsYXk6IGJsb2Nr
OworICAgIGRpdiAtIGJsb2NrIHVzZXIgYWdlbnQgc3R5bGVzaGVldAorZm9udC1mYW1pbHk6IENv
dXJpZXI7CisgICAgI2luc3BlY3RlZCAtIENvdXJpZXIgbGF6eS1jb21wdXRlZC1zdHlsZS5odG1s
OjEwCisgICAgLy0tIG92ZXJsb2FkZWQgLS0vICNpbnNwZWN0ZWQgLSBUaW1lcyBsYXp5LWNvbXB1
dGVkLXN0eWxlLmh0bWw6NQorCitbZXhwYW5kZWRdIAorZWxlbWVudC5zdHlsZSAgeyAoKQorCis9
PT09PT09PSBNYXRjaGVkIENTUyBSdWxlcyA9PT09PT09PQorW2V4cGFuZGVkXSAKKyNpbnNwZWN0
ZWQgIHsgKGxhenktY29tcHV0ZWQtc3R5bGUuaHRtbDoxNSkKK2JhY2tncm91bmQ6IGdyYXk7Cisg
ICAgYmFja2dyb3VuZC1pbWFnZTogaW5pdGlhbDsKKyAgICBiYWNrZ3JvdW5kLXJlcGVhdC14OiBp
bml0aWFsOworICAgIGJhY2tncm91bmQtcmVwZWF0LXk6IGluaXRpYWw7CisgICAgYmFja2dyb3Vu
ZC1hdHRhY2htZW50OiBpbml0aWFsOworICAgIGJhY2tncm91bmQtcG9zaXRpb24teDogaW5pdGlh
bDsKKyAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IGluaXRpYWw7CisgICAgYmFja2dyb3VuZC1v
cmlnaW46IGluaXRpYWw7CisgICAgYmFja2dyb3VuZC1jbGlwOiBpbml0aWFsOworICAgIGJhY2tn
cm91bmQtY29sb3I6IGdyYXk7CisKK1tleHBhbmRlZF0gCisjaW5zcGVjdGVkICB7IChsYXp5LWNv
bXB1dGVkLXN0eWxlLmh0bWw6MTApCisvLS0gb3ZlcmxvYWRlZCAtLS8gYmFja2dyb3VuZC1jb2xv
cjogYmxhY2s7Citmb250LWZhbWlseTogQ291cmllcjsKKworW2V4cGFuZGVkXSAKKyNpbnNwZWN0
ZWQgIHsgKGxhenktY29tcHV0ZWQtc3R5bGUuaHRtbDo1KQorLy0tIG92ZXJsb2FkZWQgLS0vIGJh
Y2tncm91bmQtY29sb3I6IGdyZWVuOworLy0tIG92ZXJsb2FkZWQgLS0vIGZvbnQtZmFtaWx5OiBU
aW1lczsKKworW2V4cGFuZGVkXSAKK2RpdiAgeyAodXNlciBhZ2VudCBzdHlsZXNoZWV0KQorZGlz
cGxheTogYmxvY2s7CisKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5
bGVzL2xhenktY29tcHV0ZWQtc3R5bGUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHls
ZXMvbGF6eS1jb21wdXRlZC1zdHlsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlNGQ0ZjgyYzhmNjk2M2Zk
MmVkOGQyZTNjMzVhM2UyODk3NzAzZTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3Ivc3R5bGVzL2xhenktY29tcHV0ZWQtc3R5bGUuaHRtbApAQCAtMCwwICsxLDU1IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorCisjaW5zcGVjdGVkIHsKKyAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsKKyAgICBmb250LWZhbWlseTogVGltZXM7Cit9CisKKyNpbnNwZWN0ZWQg
eworICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOworICAgIGZvbnQtZmFtaWx5OiBDb3VyaWVy
OworfQorCisjaW5zcGVjdGVkIHsKKyAgICBiYWNrZ3JvdW5kOiBncmF5OworfQorCis8L3N0eWxl
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9l
bGVtZW50cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImluc3BlY3Rl
ZCIsIHN0ZXAxKTsKKworICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICB7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCI9PT09IEFsbCBzdHlsZXMgKHNob3VsZCBiZSBubyBjb21wdXRl
ZCkgPT09PSIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHls
ZXMoZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYklu
c3BlY3Rvci5TaWRlYmFyUGFuZS5wcm90b3R5cGUsICJleHBhbmQiLCBzdGVwMik7CisgICAgICAg
IFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc2lkZWJhclBhbmVzLmNvbXB1dGVkU3R5bGUu
ZXhwYW5kKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PT0gQWxsIHN0eWxlcyAoY29tcHV0ZWQgc2hvdWxk
IGJlIHRoZXJlKSA9PT09Iik7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxl
bWVudFN0eWxlcyhmYWxzZSwgZmFsc2UpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRl
VGVzdCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Cis8cD4KK1Rlc3RzIHRoYXQgY29tcHV0ZWQgc3R5bGVzIGV4cGFuZCBhbmQgYWxs
b3cgdHJhY2luZyB0byBzdHlsZSBydWxlcy4KKzwvcD4KKworPGRpdiBpZD0iaW5zcGVjdGVkIj4K
KzwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3Ivc3R5bGVzL3N0eWxlcy1jb21wdXRlZC10cmFjZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3N0eWxlcy9zdHlsZXMtY29tcHV0ZWQtdHJhY2UuaHRtbAppbmRleCA3YWFhN2RjYzEy
NDdmMWMyM2RhZDY0YmZkODEzM2UxMTI1ZWNiZWQ2Li43NzI2NTkzMDhhOTg1OTA0Y2MyODFiOWEy
M2FkM2RkMmY1YzE2Zjc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVz
L3N0eWxlcy1jb21wdXRlZC10cmFjZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9z
dHlsZXMvc3R5bGVzLWNvbXB1dGVkLXRyYWNlLmh0bWwKQEAgLTM3LDIwICszNywyMCBAQCBkaXYg
ewogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRX
YWl0Rm9yU3R5bGVzKCJpZDEiLCBzdGVwMSk7CisgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2Rl
QW5kV2FpdEZvclN0eWxlc1dpdGhDb21wdXRlZCgiaWQxIiwgc3RlcDEpOwogCiAgICAgZnVuY3Rp
b24gc3RlcDEoKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PT0g
Q29tcHV0ZWQgc3R5bGUgZm9yIElEMSA9PT09Iik7CiAgICAgICAgIEluc3BlY3RvclRlc3QuZHVt
cFNlbGVjdGVkRWxlbWVudFN0eWxlcyhmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgIEluc3BlY3RvclRl
c3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImlkMiIsIHN0ZXAyKTsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlc1dpdGhDb21wdXRlZCgiaWQyIiwg
c3RlcDIpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7CiAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT09IENvbXB1dGVkIHN0eWxlIGZvciBJRDIgPT09PSIp
OwogICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXMoZmFsc2Us
IHRydWUpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVz
KCJpZDMiLCBzdGVwMyk7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRG
b3JTdHlsZXNXaXRoQ29tcHV0ZWQoImlkMyIsIHN0ZXAzKTsKICAgICB9CiAKICAgICBmdW5jdGlv
biBzdGVwMygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125844</attachid>
            <date>2012-02-07 07:39:50 -0800</date>
            <delta_ts>2012-02-08 01:48:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77865-20120207193948.patch</filename>
            <type>text/plain</type>
            <size>12682</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDZkYjJmNGQ1ZGIwYmZh
MjZlNDA3NTA1OGIzMzY1N2U3NGIxOTBmZS4uOTAwNTJiMjI2ZjRkYzFhZmNjNDBkZTE2N2YzMjU2
MGFjNWU4NjczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAyLTA3ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogQ2xvc2VkIGNvbXB1dGVkIHN0eWxlIHNpZGViYXIgcGFuZSByZWJ1aWxkcywgcmVzdWx0
aW5nIGluIHNsb3duZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03Nzg2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3Q6IGluc3BlY3Rvci9zdHlsZXMvbGF6eS1jb21wdXRlZC1zdHlsZS5odG1sCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2V4ZWN1dGVSZWJ1aWxkVXBkYXRlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX3JlZnJl
c2hDb21wdXRlZFN0eWxlU2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29tcHV0ZWRT
dHlsZVNpZGViYXJQYW5lLnByb3RvdHlwZS5leHBhbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvbXB1dGVkU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUub25wb3B1bGF0ZSk6CisK
IDIwMTItMDItMDcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDY5MTIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpp
bmRleCA2YmVjNjEwODNlOTJhOTMyODE0YjA4NWQwYzc1ODNmOWM0MGUwY2FiLi5kOTJhZmI0NzQ2
YWMzMzBhMzdlMzY5Nzk2M2M3ZDFiOGM3ZTRlYWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKQEAgLTgxLDYg
KzgxLDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lID0gZnVuY3Rpb24oY29tcHV0
ZWRTdHlsZVBhbmUpCiAgICAgdGhpcy50aXRsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoYWRkQnV0dG9u
KTsKIAogICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVQYW5lID0gY29tcHV0ZWRTdHlsZVBhbmU7Cisg
ICAgY29tcHV0ZWRTdHlsZVBhbmUuX3N0eWxlc1NpZGViYXJQYW5lID0gdGhpczsKICAgICB0aGlz
LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9jb250ZXh0TWVu
dUV2ZW50RmlyZWQuYmluZCh0aGlzKSwgdHJ1ZSk7CiAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdz
LmNvbG9yRm9ybWF0LmFkZENoYW5nZUxpc3RlbmVyKHRoaXMuX2NvbG9yRm9ybWF0U2V0dGluZ0No
YW5nZWQuYmluZCh0aGlzKSk7CiAKQEAgLTI1MiwxMSArMjUzLDE3IEBAIFdlYkluc3BlY3Rvci5T
dHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXN1bHRTdHlsZXMu
Y29tcHV0ZWRTdHlsZSA9IGNvbXB1dGVkU3R5bGU7CiAgICAgICAgIH0KIAotICAgICAgICBXZWJJ
bnNwZWN0b3IuY3NzTW9kZWwuZ2V0Q29tcHV0ZWRTdHlsZUFzeW5jKG5vZGUuaWQsIHRoaXMuX2Zv
cmNlZFBzZXVkb0NsYXNzZXMsIGNvbXB1dGVkQ2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgICAg
IGlmICh0aGlzLl9jb21wdXRlZFN0eWxlUGFuZS5leHBhbmRlZCkKKyAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5jc3NNb2RlbC5nZXRDb21wdXRlZFN0eWxlQXN5bmMobm9kZS5pZCwgdGhpcy5fZm9y
Y2VkUHNldWRvQ2xhc3NlcywgY29tcHV0ZWRDYWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICAgICAg
V2ViSW5zcGVjdG9yLmNzc01vZGVsLmdldElubGluZVN0eWxlc0FzeW5jKG5vZGUuaWQsIGlubGlu
ZUNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuZ2V0
TWF0Y2hlZFN0eWxlc0FzeW5jKG5vZGUuaWQsIHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNzZXMsIHRy
dWUsIHRydWUsIHN0eWxlc0NhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0sCiAKKyAgICBfcmVm
cmVzaENvbXB1dGVkU3R5bGVTZWN0aW9uOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICB7CisgICAg
ICAgIHRoaXMuX2lubmVyVXBkYXRlKHRydWUsIG51bGwsIGNhbGxiYWNrKTsKKyAgICB9LAorCiAg
ICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlv
bj19IGVkaXRlZFNlY3Rpb24KICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCk9fSB1c2VyQ2FsbGJh
Y2sKQEAgLTg0MCw2ICs4NDcsMjAgQEAgV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVTaWRlYmFy
UGFuZSA9IGZ1bmN0aW9uKCkKICAgICBzaG93SW5oZXJpdGVkQ2hlY2tib3guYWRkRXZlbnRMaXN0
ZW5lcihzaG93SW5oZXJpdGVkVG9nZ2xlRnVuY3Rpb24uYmluZCh0aGlzKSk7CiB9CiAKK1dlYklu
c3BlY3Rvci5Db21wdXRlZFN0eWxlU2lkZWJhclBhbmUucHJvdG90eXBlID0geworCisgICAgLy8g
T3ZlcnJpZGluZyBleHBhbmQoKSByYXRoZXIgdGhhbiBvbmV4cGFuZCgpIHRvIGVsaW1pbmF0ZSB0
aGUgdmlzdWFsIHNsb3duZXNzIGR1ZSB0byBhIHBvc3NpYmxlIGJhY2tlbmQgdHJpcC4KKyAgICBl
eHBhbmQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lLnByb3RvdHlwZS5l
eHBhbmQuY2FsbCh0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3N0eWxlc1NpZGVi
YXJQYW5lLl9yZWZyZXNoQ29tcHV0ZWRTdHlsZVNlY3Rpb24oY2FsbGJhY2suYmluZCh0aGlzKSk7
CisgICAgfQorfQorCiBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZVNpZGViYXJQYW5lLnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmUucHJvdG90eXBlOwogCiAv
KioKQEAgLTEyODgsNiArMTMwOSw5IEBAIFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlUHJvcGVy
dGllc1NlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdmFyIHN0eWxl
ID0gdGhpcy5zdHlsZVJ1bGUuc3R5bGU7CisgICAgICAgIGlmICghc3R5bGUpCisgICAgICAgICAg
ICByZXR1cm47CisKICAgICAgICAgdmFyIHVuaXF1ZVByb3BlcnRpZXMgPSBbXTsKICAgICAgICAg
dmFyIGFsbFByb3BlcnRpZXMgPSBzdHlsZS5hbGxQcm9wZXJ0aWVzOwogICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGFsbFByb3BlcnRpZXMubGVuZ3RoOyArK2kpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTZjMWY3YWE4
ZjkxYzEzODg1YTA4MjY5ZmVkOGVjZWEwN2Y0Y2IyNS4uYTVkNDk4ZTU1OWZkY2UwMTk1YzZhNmE1
ODE0OGQ3NGQ1ZjMxZGUyYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAyLTA3ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogQ2xvc2VkIGNvbXB1dGVkIHN0eWxlIHNpZGViYXIgcGFuZSByZWJ1aWxkcywgcmVzdWx0
aW5nIGluIHNsb3duZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03Nzg2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qczoKKyAgICAgICAg
KGluaXRpYWxpemVfRWxlbWVudFRlc3QuSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZv
clN0eWxlc1dpdGhDb21wdXRlZC5zdHlsZXNDYWxsYmFjayk6CisgICAgICAgIChpbml0aWFsaXpl
X0VsZW1lbnRUZXN0Lkluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXNXaXRo
Q29tcHV0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9lbGVtZW50cy9lbGVtZW50cy1wYW5lbC1z
dHlsZXMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL2Nzcy1saXZlLWVkaXQuaHRt
bDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL2xhenktY29tcHV0ZWQtc3R5bGUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL2xhenktY29tcHV0ZWQt
c3R5bGUuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY29t
cHV0ZWQtdHJhY2UuaHRtbDoKKwogMjAxMi0wMi0wNyAgS2F1c3R1YmggQXRyYXdhbGthciAgPGth
dXN0dWJoQG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBHVEsgJiBRVCBSZWJhc2VsaW5lIGFmdGVy
IHIxMDY5MTIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9l
bGVtZW50cy10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVu
dHMtdGVzdC5qcwppbmRleCAyZGM5OTdjNWUwNGY0ZGZhZTY1NGM4YTVkY2Q0NTNhNjgyZWMwNGY0
Li40NTJmMDRiNjYzNzMzNGY2NDNmMzE3OWFlMmJlNWZlYjI1ZjExNjVkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMKQEAgLTEwNSw2
ICsxMDUsMTkgQEAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcyA9IGZ1
bmN0aW9uKGlkVmFsdWUsIGNhbGxiYWNrKQogICAgIH0KIH0KIAorSW5zcGVjdG9yVGVzdC5zZWxl
Y3ROb2RlQW5kV2FpdEZvclN0eWxlc1dpdGhDb21wdXRlZCA9IGZ1bmN0aW9uKGlkVmFsdWUsIGNh
bGxiYWNrKQoreworICAgIGNhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFj
ayk7CisKKyAgICBmdW5jdGlvbiBzdHlsZXNDYWxsYmFjayh0YXJnZXROb2RlKQorICAgIHsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZS5w
cm90b3R5cGUsICJleHBhbmQiLCBjYWxsYmFjayk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5l
bHMuZWxlbWVudHMuc2lkZWJhclBhbmVzLmNvbXB1dGVkU3R5bGUuZXhwYW5kKCk7CisgICAgfQor
CisgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcyhpZFZhbHVlLCBz
dHlsZXNDYWxsYmFjayk7Cit9CisKIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0
eWxlcyA9IGZ1bmN0aW9uKGV4Y2x1ZGVDb21wdXRlZCwgZXhjbHVkZU1hdGNoZWQsIG9taXRMb25n
aGFuZHMpCiB7CiAgICAgZnVuY3Rpb24gZXh0cmFjdFRleHQoZWxlbWVudCkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9lbGVtZW50cy1wYW5lbC1zdHlsZXMuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9lbGVtZW50cy1wYW5lbC1zdHlsZXMu
aHRtbAppbmRleCA2MTYyZjFiOTkwNmNlMjQ0N2Q2YTEwNWEzNjEwNWVjYmYxY2U0NDM1Li42MTRk
ODhjNzJkZDlmYmUwZjczMDkzNDcyYmM3OTdmY2ExYjk5ZDViIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZWxlbWVudHMtcGFuZWwtc3R5bGVzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2VsZW1lbnRzLXBhbmVsLXN0eWxlcy5odG1s
CkBAIC04LDcgKzgsNyBAQAogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBJbnNwZWN0b3JUZXN0
LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJmb28iLCBzdGVwMSk7CisgICAgSW5zcGVjdG9y
VGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlc1dpdGhDb21wdXRlZCgiZm9vIiwgc3RlcDEp
OwogCiAgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9zdHlsZXMvY3NzLWxpdmUtZWRpdC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy9jc3MtbGl2ZS1lZGl0Lmh0bWwKaW5kZXggZDVlMGYyOTI1ZGYzMGRlYjZmNWU5
NWI1NmQxZGU3YTdkNTI5Zjg2My4uYTI3MTJiNzg0MDZkZTAzNzhlZTdkNmE0NmQ5NTgzYTkwMzk1
MDEzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9jc3MtbGl2ZS1l
ZGl0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9jc3MtbGl2ZS1lZGl0
Lmh0bWwKQEAgLTI1LDcgKzI1LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgICAgIGZ1
bmN0aW9uIGRpZEVkaXRSZXNvdXJjZSgpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygiZm9vIiwgZGlkU2VsZWN0
RWxlbWVudCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2Fp
dEZvclN0eWxlc1dpdGhDb21wdXRlZCgiZm9vIiwgZGlkU2VsZWN0RWxlbWVudCk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFNlbGVjdEVsZW1lbnQoKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9sYXp5LWNvbXB1dGVkLXN0eWxlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvbGF6eS1jb21wdXRlZC1z
dHlsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTA4YzE4MWJkMDUyMTI0ODFkNjk4NGZjNzIx
NmY1ZDE3YTA1ZDBjZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9z
dHlsZXMvbGF6eS1jb21wdXRlZC1zdHlsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5MCBAQAor
VGVzdHMgdGhhdCBjb21wdXRlZCBzdHlsZXMgZXhwYW5kIGFuZCBhbGxvdyB0cmFjaW5nIHRvIHN0
eWxlIHJ1bGVzLgorCis9PT09IEFsbCBzdHlsZXMgKHNob3VsZCBiZSBubyBjb21wdXRlZCkgPT09
PQorW2V4cGFuZGVkXSAKKworW2V4cGFuZGVkXSAKK2VsZW1lbnQuc3R5bGUgIHsgKCkKKworPT09
PT09PT0gTWF0Y2hlZCBDU1MgUnVsZXMgPT09PT09PT0KK1tleHBhbmRlZF0gCisjaW5zcGVjdGVk
ICB7IChsYXp5LWNvbXB1dGVkLXN0eWxlLmh0bWw6MTUpCitiYWNrZ3JvdW5kOiBncmF5OworICAg
IGJhY2tncm91bmQtaW1hZ2U6IGluaXRpYWw7CisgICAgYmFja2dyb3VuZC1yZXBlYXQteDogaW5p
dGlhbDsKKyAgICBiYWNrZ3JvdW5kLXJlcGVhdC15OiBpbml0aWFsOworICAgIGJhY2tncm91bmQt
YXR0YWNobWVudDogaW5pdGlhbDsKKyAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IGluaXRpYWw7
CisgICAgYmFja2dyb3VuZC1wb3NpdGlvbi15OiBpbml0aWFsOworICAgIGJhY2tncm91bmQtb3Jp
Z2luOiBpbml0aWFsOworICAgIGJhY2tncm91bmQtY2xpcDogaW5pdGlhbDsKKyAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBncmF5OworCitbZXhwYW5kZWRdIAorI2luc3BlY3RlZCAgeyAobGF6eS1jb21w
dXRlZC1zdHlsZS5odG1sOjEwKQorLy0tIG92ZXJsb2FkZWQgLS0vIGJhY2tncm91bmQtY29sb3I6
IGJsYWNrOworZm9udC1mYW1pbHk6IENvdXJpZXI7CisKK1tleHBhbmRlZF0gCisjaW5zcGVjdGVk
ICB7IChsYXp5LWNvbXB1dGVkLXN0eWxlLmh0bWw6NSkKKy8tLSBvdmVybG9hZGVkIC0tLyBiYWNr
Z3JvdW5kLWNvbG9yOiBncmVlbjsKKy8tLSBvdmVybG9hZGVkIC0tLyBmb250LWZhbWlseTogVGlt
ZXM7CisKK1tleHBhbmRlZF0gCitkaXYgIHsgKHVzZXIgYWdlbnQgc3R5bGVzaGVldCkKK2Rpc3Bs
YXk6IGJsb2NrOworCisKKz09PT0gQWxsIHN0eWxlcyAoY29tcHV0ZWQgc2hvdWxkIGJlIHRoZXJl
KSA9PT09CitbZXhwYW5kZWRdIAorYmFja2dyb3VuZC1hdHRhY2htZW50OiBzY3JvbGw7CisgICAg
I2luc3BlY3RlZCAtIGluaXRpYWwgbGF6eS1jb21wdXRlZC1zdHlsZS5odG1sOjE1CitiYWNrZ3Jv
dW5kLWNsaXA6IGJvcmRlci1ib3g7CisgICAgI2luc3BlY3RlZCAtIGluaXRpYWwgbGF6eS1jb21w
dXRlZC1zdHlsZS5odG1sOjE1CitiYWNrZ3JvdW5kLWNvbG9yOiBncmF5OworICAgICNpbnNwZWN0
ZWQgLSBncmF5IGxhenktY29tcHV0ZWQtc3R5bGUuaHRtbDoxNQorICAgIC8tLSBvdmVybG9hZGVk
IC0tLyAjaW5zcGVjdGVkIC0gYmxhY2sgbGF6eS1jb21wdXRlZC1zdHlsZS5odG1sOjEwCisgICAg
Ly0tIG92ZXJsb2FkZWQgLS0vICNpbnNwZWN0ZWQgLSBncmVlbiBsYXp5LWNvbXB1dGVkLXN0eWxl
Lmh0bWw6NQorYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKKyAgICAjaW5zcGVjdGVkIC0gaW5pdGlh
bCBsYXp5LWNvbXB1dGVkLXN0eWxlLmh0bWw6MTUKK2JhY2tncm91bmQtb3JpZ2luOiBwYWRkaW5n
LWJveDsKKyAgICAjaW5zcGVjdGVkIC0gaW5pdGlhbCBsYXp5LWNvbXB1dGVkLXN0eWxlLmh0bWw6
MTUKK2Rpc3BsYXk6IGJsb2NrOworICAgIGRpdiAtIGJsb2NrIHVzZXIgYWdlbnQgc3R5bGVzaGVl
dAorZm9udC1mYW1pbHk6IENvdXJpZXI7CisgICAgI2luc3BlY3RlZCAtIENvdXJpZXIgbGF6eS1j
b21wdXRlZC1zdHlsZS5odG1sOjEwCisgICAgLy0tIG92ZXJsb2FkZWQgLS0vICNpbnNwZWN0ZWQg
LSBUaW1lcyBsYXp5LWNvbXB1dGVkLXN0eWxlLmh0bWw6NQorCitbZXhwYW5kZWRdIAorZWxlbWVu
dC5zdHlsZSAgeyAoKQorCis9PT09PT09PSBNYXRjaGVkIENTUyBSdWxlcyA9PT09PT09PQorW2V4
cGFuZGVkXSAKKyNpbnNwZWN0ZWQgIHsgKGxhenktY29tcHV0ZWQtc3R5bGUuaHRtbDoxNSkKK2Jh
Y2tncm91bmQ6IGdyYXk7CisgICAgYmFja2dyb3VuZC1pbWFnZTogaW5pdGlhbDsKKyAgICBiYWNr
Z3JvdW5kLXJlcGVhdC14OiBpbml0aWFsOworICAgIGJhY2tncm91bmQtcmVwZWF0LXk6IGluaXRp
YWw7CisgICAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBpbml0aWFsOworICAgIGJhY2tncm91bmQt
cG9zaXRpb24teDogaW5pdGlhbDsKKyAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IGluaXRpYWw7
CisgICAgYmFja2dyb3VuZC1vcmlnaW46IGluaXRpYWw7CisgICAgYmFja2dyb3VuZC1jbGlwOiBp
bml0aWFsOworICAgIGJhY2tncm91bmQtY29sb3I6IGdyYXk7CisKK1tleHBhbmRlZF0gCisjaW5z
cGVjdGVkICB7IChsYXp5LWNvbXB1dGVkLXN0eWxlLmh0bWw6MTApCisvLS0gb3ZlcmxvYWRlZCAt
LS8gYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7Citmb250LWZhbWlseTogQ291cmllcjsKKworW2V4
cGFuZGVkXSAKKyNpbnNwZWN0ZWQgIHsgKGxhenktY29tcHV0ZWQtc3R5bGUuaHRtbDo1KQorLy0t
IG92ZXJsb2FkZWQgLS0vIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworLy0tIG92ZXJsb2FkZWQg
LS0vIGZvbnQtZmFtaWx5OiBUaW1lczsKKworW2V4cGFuZGVkXSAKK2RpdiAgeyAodXNlciBhZ2Vu
dCBzdHlsZXNoZWV0KQorZGlzcGxheTogYmxvY2s7CisKKworCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL2xhenktY29tcHV0ZWQtc3R5bGUuaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9zdHlsZXMvbGF6eS1jb21wdXRlZC1zdHlsZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmNlNGQ0ZjgyYzhmNjk2M2ZkMmVkOGQyZTNjMzVhM2UyODk3NzAzZTQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL2xhenktY29tcHV0ZWQtc3R5bGUuaHRt
bApAQCAtMCwwICsxLDU1IEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorCisjaW5zcGVjdGVk
IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICBmb250LWZhbWlseTogVGltZXM7
Cit9CisKKyNpbnNwZWN0ZWQgeworICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOworICAgIGZv
bnQtZmFtaWx5OiBDb3VyaWVyOworfQorCisjaW5zcGVjdGVkIHsKKyAgICBiYWNrZ3JvdW5kOiBn
cmF5OworfQorCis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRG
b3JTdHlsZXMoImluc3BlY3RlZCIsIHN0ZXAxKTsKKworICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAg
ICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT09IEFsbCBzdHlsZXMgKHNo
b3VsZCBiZSBubyBjb21wdXRlZCkgPT09PSIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBT
ZWxlY3RlZEVsZW1lbnRTdHlsZXMoZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZS5wcm90b3R5cGUsICJleHBhbmQi
LCBzdGVwMik7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc2lkZWJhclBh
bmVzLmNvbXB1dGVkU3R5bGUuZXhwYW5kKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDIo
KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PT0gQWxsIHN0eWxl
cyAoY29tcHV0ZWQgc2hvdWxkIGJlIHRoZXJlKSA9PT09Iik7CisgICAgICAgIEluc3BlY3RvclRl
c3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyhmYWxzZSwgZmFsc2UpOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgor
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3RzIHRoYXQgY29tcHV0ZWQgc3R5
bGVzIGV4cGFuZCBhbmQgYWxsb3cgdHJhY2luZyB0byBzdHlsZSBydWxlcy4KKzwvcD4KKworPGRp
diBpZD0iaW5zcGVjdGVkIj4KKzwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1jb21wdXRlZC10cmFjZS5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY29tcHV0ZWQtdHJhY2UuaHRt
bAppbmRleCA3YWFhN2RjYzEyNDdmMWMyM2RhZDY0YmZkODEzM2UxMTI1ZWNiZWQ2Li43NzI2NTkz
MDhhOTg1OTA0Y2MyODFiOWEyM2FkM2RkMmY1YzE2Zjc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1jb21wdXRlZC10cmFjZS5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNvbXB1dGVkLXRyYWNlLmh0bWwKQEAgLTM3
LDIwICszNywyMCBAQCBkaXYgewogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBJbnNwZWN0b3JU
ZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJpZDEiLCBzdGVwMSk7CisgICAgSW5zcGVj
dG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlc1dpdGhDb21wdXRlZCgiaWQxIiwgc3Rl
cDEpOwogCiAgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIj09PT0gQ29tcHV0ZWQgc3R5bGUgZm9yIElEMSA9PT09Iik7CiAgICAgICAg
IEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyhmYWxzZSwgdHJ1ZSk7Ci0g
ICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImlkMiIsIHN0
ZXAyKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlc1dp
dGhDb21wdXRlZCgiaWQyIiwgc3RlcDIpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXAyKCkK
ICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT09IENvbXB1dGVkIHN0
eWxlIGZvciBJRDIgPT09PSIpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVs
ZW1lbnRTdHlsZXMoZmFsc2UsIHRydWUpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5v
ZGVBbmRXYWl0Rm9yU3R5bGVzKCJpZDMiLCBzdGVwMyk7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
c2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXNXaXRoQ29tcHV0ZWQoImlkMyIsIHN0ZXAzKTsKICAg
ICB9CiAKICAgICBmdW5jdGlvbiBzdGVwMygpCg==
</data>
<flag name="review"
          id="127464"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>