<?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>86640</bug_id>
          
          <creation_ts>2012-05-16 09:37:22 -0700</creation_ts>
          <short_desc>Web Inspector: upstream build dominators tree procedure from v8</short_desc>
          <delta_ts>2012-05-22 00:01:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>87089</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>alph</cc>
    
    <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>625543</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-16 09:37:22 -0700</bug_when>
    <thetext>The idea is to reduce transfer size and move all the post-processing steps to the front-end.
The speed is nearly the same.

Native speed vs JS speed

HeapSnapshotGenerator::FillPostorderIndexes 74ms
HeapSnapshotGenerator::SetEntriesDominators 255ms

vs

RESULT heap-snapshot: _buildPostOrderIndex= 135 ms
RESULT heap-snapshot: _buildDominatorTree= 360 ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625549</commentid>
    <comment_count>1</comment_count>
      <attachid>142281</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-16 09:44:43 -0700</bug_when>
    <thetext>Created attachment 142281
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625567</commentid>
    <comment_count>2</comment_count>
      <attachid>142285</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-16 09:56:41 -0700</bug_when>
    <thetext>Created attachment 142285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626379</commentid>
    <comment_count>3</comment_count>
      <attachid>142443</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-17 01:46:17 -0700</bug_when>
    <thetext>Created attachment 142443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626417</commentid>
    <comment_count>4</comment_count>
      <attachid>142443</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-05-17 03:23:19 -0700</bug_when>
    <thetext>Comment on attachment 142443
Patch

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

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1097
&gt; +                var endEdgeIndex =  nodeOrdinal &lt; nodeCount - 1 ? nodes[nodeIndex + firstEdgeIndexOffset + nodeFieldCount] : containmentEdgesLength;

nit: there&apos;s an extra space after =

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1153
&gt; +        {// manually inlined due to inline source size limit.

Why inline here? It doesn&apos;t seem to be performance critical.

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1172
&gt; +                var nodeOrdinal = postOrderIndex2NodeIndex[postOrderIndex] / nodeFieldCount;

This code line can be moved past the if-continue below.

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1219
&gt; +                            affected[nodeOrdinal2PostOrderIndex[childNodeOrdinal]] = 1;

If you haven&apos;t checked that already, I&apos;d suggest to see if it makes sense to base affected array on node ordinals rather than postorder indexes. It may be faster as it removes one array lookup here (which is one per edge), but adds one in the beginning of the loop (which is one per node).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627563</commentid>
    <comment_count>5</comment_count>
      <attachid>142685</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-18 04:36:52 -0700</bug_when>
    <thetext>Created attachment 142685
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627654</commentid>
    <comment_count>6</comment_count>
      <attachid>142707</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-18 06:51:05 -0700</bug_when>
    <thetext>Created attachment 142707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627714</commentid>
    <comment_count>7</comment_count>
      <attachid>142707</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-18 08:30:21 -0700</bug_when>
    <thetext>Comment on attachment 142707
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        Covered by existing tests and performance tests.

Can we upstream dominator tests as well? Or if there is no such tests, we need new ones.

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:713
&gt; +            visitedMarkerMask: 65535, // bits: 0,1111,1111,1111,1111

0x0FFFF and 0x10000 ?

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1082
&gt; +        var kShortcut = this._edgeShortcutType;

kShortcut -&gt; edgeShortcutType for consistency with the rest code.

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1096
&gt; +        var kGrey = 1;

Simply grey and black as we don&apos;t use any prefixes for constants in WebCore.

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1113
&gt; +                    if (nodeIndex != rootNodeIndex &amp;&amp; containmentEdges[edgeIndex + edgeTypeOffset] === kShortcut)

nodeIndex !== rootNodeIndex

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1375
&gt; +        for (var edgeIndex = nodes[firstEdgeIndexOffset], endEdgeIndex = nodes[nodeFieldCount + firstEdgeIndexOffset];

Please add _rootNodeIndex explicitly so that it is clear that you iterate through the root links.

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1379
&gt; +                var nodeIndex = containmentEdges[edgeIndex + edgeToNodeOffset]

missing ;

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1385
&gt; +        while (nodesToVisitLength) {

Can we reuse existing _bfs here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627724</commentid>
    <comment_count>8</comment_count>
      <attachid>142707</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-18 08:42:51 -0700</bug_when>
    <thetext>Comment on attachment 142707
Patch

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

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1118
&gt; +                    if (nodeIndex != rootNodeIndex &amp;&amp; childNodeFlag &amp;&amp; !nodeFlag)

nodeIndex !== rootNodeIndex, also please add a comment explaining this condition.

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1162
&gt; +        var kNoEntry = nodesCount;

No kXXX prefix for constants please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627741</commentid>
    <comment_count>9</comment_count>
      <attachid>142707</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-05-18 09:02:41 -0700</bug_when>
    <thetext>Comment on attachment 142707
Patch

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

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1352
&gt; +    _markPageOwnedNodes: function()

markUserReachableNodes?

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1392
&gt; +            if ((nodeOrdinal) &lt; nodesCount - 1)

nit: why extra parentheses?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627877</commentid>
    <comment_count>10</comment_count>
      <attachid>142753</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-18 11:48:05 -0700</bug_when>
    <thetext>Created attachment 142753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627885</commentid>
    <comment_count>11</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-18 11:57:32 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 142707 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=142707&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        Covered by existing tests and performance tests.
&gt; 
&gt; Can we upstream dominator tests as well? Or if there is no such tests, we need new ones.

There is one dominator test in v8. I made the same in this patch for the postOrder and dominatorsTree functions.


&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:713
&gt; &gt; +            visitedMarkerMask: 65535, // bits: 0,1111,1111,1111,1111
&gt; 
&gt; 0x0FFFF and 0x10000 ?

done

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1082
&gt; &gt; +        var kShortcut = this._edgeShortcutType;
&gt; 
&gt; kShortcut -&gt; edgeShortcutType for consistency with the rest code.

done

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1096
&gt; &gt; +        var kGrey = 1;
&gt; 
&gt; Simply grey and black as we don&apos;t use any prefixes for constants in WebCore.

done

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1113
&gt; &gt; +                    if (nodeIndex != rootNodeIndex &amp;&amp; containmentEdges[edgeIndex + edgeTypeOffset] === kShortcut)
&gt; 
&gt; nodeIndex !== rootNodeIndex

done

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1375
&gt; &gt; +        for (var edgeIndex = nodes[firstEdgeIndexOffset], endEdgeIndex = nodes[nodeFieldCount + firstEdgeIndexOffset];
&gt; 
&gt; Please add _rootNodeIndex explicitly so that it is clear that you iterate through the root links.

done


&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1379
&gt; &gt; +                var nodeIndex = containmentEdges[edgeIndex + edgeToNodeOffset]
&gt; 
&gt; missing ;

done

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1385
&gt; &gt; +        while (nodesToVisitLength) {
&gt; 
&gt; Can we reuse existing _bfs here?

it is twice slower than this implementation.

(In reply to comment #8)
&gt; (From update of attachment 142707 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=142707&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1118
&gt; &gt; +                    if (nodeIndex != rootNodeIndex &amp;&amp; childNodeFlag &amp;&amp; !nodeFlag)
&gt; 
&gt; nodeIndex !== rootNodeIndex, also please add a comment explaining this condition.

done

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1162
&gt; &gt; +        var kNoEntry = nodesCount;
&gt; 
&gt; No kXXX prefix for constants please.

done

(In reply to comment #9)
&gt; (From update of attachment 142707 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=142707&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1352
&gt; &gt; +    _markPageOwnedNodes: function()
&gt; 
&gt; markUserReachableNodes?

I&apos;m not sure that this is good name. I&apos;m trying to mark all the nodes that owned by page
and left unmarked all the nodes that owned by a debugger object. Not all the objects owned
by the page can be reached by the user. That&apos;s why I selected this name.

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1392
&gt; &gt; +            if ((nodeOrdinal) &lt; nodesCount - 1)
&gt; 
&gt; nit: why extra parentheses?

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628885</commentid>
    <comment_count>12</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-21 01:52:55 -0700</bug_when>
    <thetext>Committed r117749: &lt;http://trac.webkit.org/changeset/117749&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142281</attachid>
            <date>2012-05-16 09:44:43 -0700</date>
            <delta_ts>2012-05-16 09:56:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86640-20120516204441.patch</filename>
            <type>text/plain</type>
            <size>17881</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWE5YjZiMzExMDI3Yzhk
YmM4NTM2MjI3NmM3NTU1M2YyNzRkNTA2ZS4uODc4OTcxM2Y0YjI4NjNhNDdlNzhhMzYxMzU4ZjY5
ODYzOTMxOTdlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA1LTE2ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiB1cHN0cmVhbSBidWlsZCBkb21pbmF0b3JzIHRyZWUgcHJvY2VkdXJlIGZyb20gdjguCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjY0MAorCisg
ICAgICAgIFRoZSBpZGVhIGlzIHRvIHJlZHVjZSB0cmFuc2ZlciBzaXplIGFuZCBtb3ZlIGFsbCB0
aGUgcG9zdC1wcm9jZXNzaW5nIHN0ZXBzIHRvIHRoZSBmcm9udC1lbmQuCisgICAgICAgIFRoZSBK
UyBpbXBsZW1lbnRhdGlvbiBpcyB+MS41IHRpbWVzIHNsb3dlci4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3Rz
IGFuZCBwZXJmb3JtYW5jZSB0ZXN0cy4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
SGVhcFNuYXBzaG90LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90
b3R5cGUuX2luaXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5
cGUuX2J1aWxkUG9zdE9yZGVySW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdC5wcm90b3R5cGUuX2J1aWxkRG9taW5hdG9yVHJlZS5pbnRlcnNlY3QpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX2J1aWxkRG9taW5hdG9yVHJlZS5i
dWlsZERvbWluYXRvckluZGV4ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dC5wcm90b3R5cGUuX2J1aWxkRG9taW5hdG9yVHJlZSk6CisKIDIwMTItMDUtMTYgIFBhdmVsIEZl
bGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
ZXh0cmFjdCBDb21wb3NpdGVVSVNvdXJjZUNvZGVQcm92aWRlciBmcm9tIERlYnVnZ2VyU2NyaXB0
TWFwcGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
SGVhcFNuYXBzaG90LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFw
U25hcHNob3QuanMKaW5kZXggZTMyMjYwNDczNTg3NTA5MmEwMzA3N2I0NTk4ODgxNTI1NjIxYTYy
NC4uM2M2NDlhZmI1YmEwOWQ3MjNiYzg3MTc4OGNjYjQzYThjOTA3OWIxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKQEAgLTcx
OSw2ICs3MTksOCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuX2J1aWxkRG9taW5hdGVkTm9kZXMoKQogICAgICAgICB0aGlzLl9jYWxj
dWxhdGVGbGFncygpOwogICAgICAgICB0aGlzLl9jYWxjdWxhdGVPYmplY3RUb1dpbmRvd0Rpc3Rh
bmNlKCk7CisgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9idWlsZFBvc3RPcmRlckluZGV4KCk7
CisgICAgICAgIHRoaXMuX2RvbWluYXRvcnNUcmVlID0gdGhpcy5fYnVpbGREb21pbmF0b3JUcmVl
KHJlc3VsdC5wb3N0T3JkZXJJbmRleDJOb2RlSW5kZXgsIHJlc3VsdC5ub2RlT3JkaW5hbDJQb3N0
T3JkZXJJbmRleCk7CiAgICAgfSwKIAogICAgIF9idWlsZFJldGFpbmVyczogZnVuY3Rpb24oKQpA
QCAtMTA2Myw2ICsxMDY1LDE3NCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgICAgICB9KTsKICAgICB9LAogCisgICAgX2J1aWxkUG9zdE9yZGVy
SW5kZXg6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBub2RlRmllbGRDb3VudCA9IHRo
aXMuX25vZGVGaWVsZENvdW50OworICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKKyAg
ICAgICAgdmFyIGVkZ2VGaWVsZHNDb3VudCA9IHRoaXMuX2VkZ2VGaWVsZHNDb3VudDsKKyAgICAg
ICAgdmFyIGVkZ2VUb05vZGVPZmZzZXQgPSB0aGlzLl9lZGdlVG9Ob2RlT2Zmc2V0OworICAgICAg
ICB2YXIgZmlyc3RFZGdlSW5kZXhPZmZzZXQgPSB0aGlzLl9maXJzdEVkZ2VJbmRleE9mZnNldDsK
KyAgICAgICAgdmFyIGNvbnRhaW5tZW50RWRnZXMgPSB0aGlzLl9jb250YWlubWVudEVkZ2VzOwor
CisgICAgICAgIHZhciBub2Rlc1RvVmlzaXQgPSBuZXcgVWludDMyQXJyYXkodGhpcy5ub2RlQ291
bnQpOworICAgICAgICB2YXIgcG9zdE9yZGVySW5kZXgyTm9kZUluZGV4ID0gbmV3IFVpbnQzMkFy
cmF5KHRoaXMubm9kZUNvdW50KTsKKyAgICAgICAgdmFyIG5vZGVPcmRpbmFsMlBvc3RPcmRlcklu
ZGV4ID0gbmV3IFVpbnQzMkFycmF5KHRoaXMubm9kZUNvdW50KTsKKyAgICAgICAgdmFyIHBhaW50
ZWQgPSBuZXcgVWludDhBcnJheSh0aGlzLm5vZGVDb3VudCk7CisgICAgICAgIHBhaW50ZWRbdGhp
cy5fcm9vdE5vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50XSA9IDE7CisgICAgICAgIHZhciBub2Rl
c1RvVmlzaXRMZW5ndGggPSAwOworICAgICAgICB2YXIgcG9zdE9yZGVySW5kZXggPSAwOworICAg
ICAgICBub2Rlc1RvVmlzaXRbbm9kZXNUb1Zpc2l0TGVuZ3RoKytdID0gdGhpcy5fcm9vdE5vZGVJ
bmRleDsKKyAgICAgICAgd2hpbGUgKG5vZGVzVG9WaXNpdExlbmd0aCkgeworICAgICAgICAgICAg
dmFyIG5vZGVJbmRleCA9IG5vZGVzVG9WaXNpdFtub2Rlc1RvVmlzaXRMZW5ndGggLSAxXTsKKyAg
ICAgICAgICAgIHZhciBub2RlT3JkaW5hbCA9IG5vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50Owor
ICAgICAgICAgICAgaWYgKHBhaW50ZWRbbm9kZU9yZGluYWxdID09PSAxKSB7CisgICAgICAgICAg
ICAgICAgcGFpbnRlZFtub2RlT3JkaW5hbF0gPSAyOworICAgICAgICAgICAgICAgIHZhciBiZWdp
bkVkZ2VUb05vZGVGaWVsZEluZGV4ID0gbm9kZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhP
ZmZzZXRdICsgZWRnZVRvTm9kZU9mZnNldDsKKyAgICAgICAgICAgICAgICB2YXIgZW5kRWRnZVRv
Tm9kZUZpZWxkSW5kZXggPSBub2Rlc1tub2RlSW5kZXggKyBub2RlRmllbGRDb3VudCArIGZpcnN0
RWRnZUluZGV4T2Zmc2V0XTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciB0b05vZGVGaWVsZElu
ZGV4ID0gYmVnaW5FZGdlVG9Ob2RlRmllbGRJbmRleDsgdG9Ob2RlRmllbGRJbmRleCA8IGVuZEVk
Z2VUb05vZGVGaWVsZEluZGV4OyB0b05vZGVGaWVsZEluZGV4ICs9IGVkZ2VGaWVsZHNDb3VudCkg
eworICAgICAgICAgICAgICAgICAgICB2YXIgY2hpbGROb2RlSW5kZXggPSAgY29udGFpbm1lbnRF
ZGdlc1t0b05vZGVGaWVsZEluZGV4XTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGNoaWxkTm9k
ZU9yZGluYWwgPSBjaGlsZE5vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50OworICAgICAgICAgICAg
ICAgICAgICBpZiAoIXBhaW50ZWRbY2hpbGROb2RlT3JkaW5hbF0pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHBhaW50ZWRbY2hpbGROb2RlT3JkaW5hbF0gPSAxOworICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZXNUb1Zpc2l0W25vZGVzVG9WaXNpdExlbmd0aCsrXSA9IGNoaWxkTm9kZUlu
ZGV4OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBub2RlT3JkaW5hbDJQb3N0T3JkZXJJbmRleFtu
b2RlT3JkaW5hbF0gPSBwb3N0T3JkZXJJbmRleDsKKyAgICAgICAgICAgICAgICBwb3N0T3JkZXJJ
bmRleDJOb2RlSW5kZXhbcG9zdE9yZGVySW5kZXgrK10gPSBub2RlSW5kZXg7CisgICAgICAgICAg
ICAgICAgLS1ub2Rlc1RvVmlzaXRMZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHtwb3N0T3JkZXJJbmRleDJOb2RlSW5kZXg6IHBvc3RPcmRlckluZGV4Mk5v
ZGVJbmRleCwgbm9kZU9yZGluYWwyUG9zdE9yZGVySW5kZXg6IG5vZGVPcmRpbmFsMlBvc3RPcmRl
ckluZGV4fTsKKyAgICB9LAorCisgICAgLy8gVGhlIGFsZ29yaXRobSBpcyBiYXNlZCBvbiB0aGUg
YXJ0aWNsZToKKyAgICAvLyBLLiBDb29wZXIsIFQuIEhhcnZleSBhbmQgSy4gS2VubmVkeSAiQSBT
aW1wbGUsIEZhc3QgRG9taW5hbmNlIEFsZ29yaXRobSIKKyAgICAvLyBTb2Z0dy4gUHJhY3QuIEV4
cGVyLiA0ICgyMDAxKSwgcHAuIDEtMTAuCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48
bnVtYmVyPn0gcG9zdE9yZGVySW5kZXgyTm9kZUluZGV4CisgICAgICogQHBhcmFtIHtBcnJheS48
bnVtYmVyPn0gbm9kZU9yZGluYWwyUG9zdE9yZGVySW5kZXgKKyAgICAgKi8KKyAgICBfYnVpbGRE
b21pbmF0b3JUcmVlOiBmdW5jdGlvbihwb3N0T3JkZXJJbmRleDJOb2RlSW5kZXgsIG5vZGVPcmRp
bmFsMlBvc3RPcmRlckluZGV4KQorICAgIHsKKyAgICAgICAgdmFyIG5vZGVGaWVsZENvdW50ID0g
dGhpcy5fbm9kZUZpZWxkQ291bnQ7CisgICAgICAgIHZhciBub2RlcyA9IHRoaXMuX25vZGVzOwor
ICAgICAgICB2YXIgZmlyc3RSZXRhaW5lckluZGV4ID0gdGhpcy5fZmlyc3RSZXRhaW5lckluZGV4
OworICAgICAgICB2YXIgcmV0YWluaW5nTm9kZXMgPSB0aGlzLl9yZXRhaW5pbmdOb2RlczsKKyAg
ICAgICAgdmFyIGVkZ2VGaWVsZHNDb3VudCA9IHRoaXMuX2VkZ2VGaWVsZHNDb3VudDsKKyAgICAg
ICAgdmFyIGVkZ2VUb05vZGVPZmZzZXQgPSB0aGlzLl9lZGdlVG9Ob2RlT2Zmc2V0OworICAgICAg
ICB2YXIgZmlyc3RFZGdlSW5kZXhPZmZzZXQgPSB0aGlzLl9maXJzdEVkZ2VJbmRleE9mZnNldDsK
KyAgICAgICAgdmFyIGNvbnRhaW5tZW50RWRnZXMgPSB0aGlzLl9jb250YWlubWVudEVkZ2VzOwor
ICAgICAgICB2YXIgcm9vdE5vZGVJbmRleCA9IHRoaXMuX3Jvb3ROb2RlSW5kZXg7CisKKyAgICAg
ICAgdmFyIG5vZGVzQ291bnQgPSBwb3N0T3JkZXJJbmRleDJOb2RlSW5kZXgubGVuZ3RoOworICAg
ICAgICB2YXIgcm9vdFBvc3RPcmRlcmVkSW5kZXggPSBub2Rlc0NvdW50IC0gMTsKKyAgICAgICAg
dmFyIGtOb0VudHJ5ID0gbm9kZXNDb3VudDsKKyAgICAgICAgdmFyIGRvbWluYXRvcnMgPSBuZXcg
VWludDMyQXJyYXkobm9kZXNDb3VudCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm9v
dFBvc3RPcmRlcmVkSW5kZXg7ICsraSkKKyAgICAgICAgICAgIGRvbWluYXRvcnNbaV0gPSBrTm9F
bnRyeTsKKyAgICAgICAgZG9taW5hdG9yc1tyb290UG9zdE9yZGVyZWRJbmRleF0gPSByb290UG9z
dE9yZGVyZWRJbmRleDsKKworICAgICAgICAvLyBUaGUgYWZmZWN0ZWQgYXJyYXkgaXMgdXNlZCB0
byBtYXJrIGVudHJpZXMgd2hpY2ggZG9taW5hdG9ycworICAgICAgICAvLyBoYXZlIHRvIGJlIHJh
Y2FsY3VsYXRlZCBiZWNhdXNlIG9mIGNoYW5nZXMgaW4gdGhlaXIgcmV0YWluZXJzLgorICAgICAg
ICB2YXIgYWZmZWN0ZWQgPSBuZXcgVWludDhBcnJheShub2Rlc0NvdW50KTsKKworICAgICAgICAv
KioKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGkxCisgICAgICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBpMgorICAgICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICAgICAqLworICAgICAg
ICBmdW5jdGlvbiBpbnRlcnNlY3QoaTEsIGkyLCBkb21pbmF0b3JzKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgZmluZ2VyMSA9IGkxOworICAgICAgICAgICAgdmFyIGZpbmdlcjIgPSBpMjsK
KyAgICAgICAgICAgIHdoaWxlIChmaW5nZXIxICE9PSBmaW5nZXIyKSB7CisgICAgICAgICAgICAg
ICAgd2hpbGUgKGZpbmdlcjEgPCBmaW5nZXIyKSBmaW5nZXIxID0gZG9taW5hdG9yc1tmaW5nZXIx
XTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoZmluZ2VyMiA8IGZpbmdlcjEpIGZpbmdlcjIgPSBk
b21pbmF0b3JzW2ZpbmdlcjJdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZp
bmdlcjE7CisgICAgICAgIH0KKworICAgICAgICAvLyBNYXJrIHRoZSByb290IGRpcmVjdCBjaGls
ZHJlbiBhcyBhZmZlY3RlZC4KKyAgICAgICAgey8vIG1hbnVhbGx5IGlubGluZWQgZHVlIHRvIGlu
bGluZSBzb3VyY2Ugc2l6ZSBsaW1pdC4KKyAgICAgICAgICAgIHZhciBub2RlSW5kZXggPSB0aGlz
Ll9yb290Tm9kZUluZGV4OworICAgICAgICAgICAgdmFyIGJlZ2luRWRnZVRvTm9kZUZpZWxkSW5k
ZXggPSBub2Rlc1tub2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldF0gKyBlZGdlVG9Ob2Rl
T2Zmc2V0OworICAgICAgICAgICAgdmFyIGVuZEVkZ2VUb05vZGVGaWVsZEluZGV4ID0gbm9kZXNb
bm9kZUluZGV4ICsgbm9kZUZpZWxkQ291bnQgKyBmaXJzdEVkZ2VJbmRleE9mZnNldF07CisgICAg
ICAgICAgICBmb3IgKHZhciB0b05vZGVGaWVsZEluZGV4ID0gYmVnaW5FZGdlVG9Ob2RlRmllbGRJ
bmRleDsKKyAgICAgICAgICAgICAgICAgdG9Ob2RlRmllbGRJbmRleCA8IGVuZEVkZ2VUb05vZGVG
aWVsZEluZGV4OworICAgICAgICAgICAgICAgICB0b05vZGVGaWVsZEluZGV4ICs9IGVkZ2VGaWVs
ZHNDb3VudCkgeworICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVPcmRpbmFsID0gY29udGFp
bm1lbnRFZGdlc1t0b05vZGVGaWVsZEluZGV4XSAvIG5vZGVGaWVsZENvdW50OworICAgICAgICAg
ICAgICAgIGFmZmVjdGVkW25vZGVPcmRpbmFsMlBvc3RPcmRlckluZGV4W2NoaWxkTm9kZU9yZGlu
YWxdXSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB2YXIgY2hhbmdl
ZCA9IHRydWU7CisgICAgICAgIHdoaWxlIChjaGFuZ2VkKSB7CisgICAgICAgICAgICBjaGFuZ2Vk
ID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKHZhciBwb3N0T3JkZXJJbmRleCA9IHJvb3RQb3N0
T3JkZXJlZEluZGV4IC0gMTsgcG9zdE9yZGVySW5kZXggPj0gMDsgLS1wb3N0T3JkZXJJbmRleCkg
eworICAgICAgICAgICAgICAgIGlmIChhZmZlY3RlZFtwb3N0T3JkZXJJbmRleF0gPT0gMCkKKyAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgYWZmZWN0ZWRbcG9z
dE9yZGVySW5kZXhdID0gMDsKKyAgICAgICAgICAgICAgICB2YXIgbm9kZU9yZGluYWwgPSBwb3N0
T3JkZXJJbmRleDJOb2RlSW5kZXhbcG9zdE9yZGVySW5kZXhdIC8gbm9kZUZpZWxkQ291bnQ7Cisg
ICAgICAgICAgICAgICAgLy8gSWYgZG9taW5hdG9yIG9mIHRoZSBlbnRyeSBoYXMgYWxyZWFkeSBi
ZWVuIHNldCB0byByb290LAorICAgICAgICAgICAgICAgIC8vIHRoZW4gaXQgY2FuJ3QgcHJvcGFn
YXRlIGFueSBmdXJ0aGVyLgorICAgICAgICAgICAgICAgIGlmIChkb21pbmF0b3JzW3Bvc3RPcmRl
ckluZGV4XSA9PT0gcm9vdFBvc3RPcmRlcmVkSW5kZXgpCisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgICAgIHZhciBuZXdfaWRvbV9pbmRleCA9IGtOb0VudHJ5Owor
ICAgICAgICAgICAgICAgIHZhciBiZWdpblJldGFpbmVySW5kZXggPSBmaXJzdFJldGFpbmVySW5k
ZXhbbm9kZU9yZGluYWxdOworICAgICAgICAgICAgICAgIHZhciBlbmRSZXRhaW5lckluZGV4ID0g
Zmlyc3RSZXRhaW5lckluZGV4W25vZGVPcmRpbmFsICsgMV07CisgICAgICAgICAgICAgICAgZm9y
ICh2YXIgcmV0YWluZXJJbmRleCA9IGJlZ2luUmV0YWluZXJJbmRleDsgcmV0YWluZXJJbmRleCA8
IGVuZFJldGFpbmVySW5kZXg7ICsrcmV0YWluZXJJbmRleCkgeworICAgICAgICAgICAgICAgICAg
ICB2YXIgcmV0YWluZXJOb2RlT3JkaW5hbCA9IHJldGFpbmluZ05vZGVzW3JldGFpbmVySW5kZXhd
IC8gbm9kZUZpZWxkQ291bnQ7CisgICAgICAgICAgICAgICAgICAgIHZhciByZXRhbmVyUG9zdE9y
ZGVySW5kZXggPSBub2RlT3JkaW5hbDJQb3N0T3JkZXJJbmRleFtyZXRhaW5lck5vZGVPcmRpbmFs
XTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRvbWluYXRvcnNbcmV0YW5lclBvc3RPcmRlcklu
ZGV4XSAhPT0ga05vRW50cnkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdfaWRv
bV9pbmRleCA9PT0ga05vRW50cnkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2lk
b21faW5kZXggPSByZXRhbmVyUG9zdE9yZGVySW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmluZ2VyMSA9IHJldGFu
ZXJQb3N0T3JkZXJJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmluZ2Vy
MiA9IG5ld19pZG9tX2luZGV4OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChm
aW5nZXIxICE9PSBmaW5nZXIyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdo
aWxlIChmaW5nZXIxIDwgZmluZ2VyMikgZmluZ2VyMSA9IGRvbWluYXRvcnNbZmluZ2VyMV07Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChmaW5nZXIyIDwgZmluZ2VyMSkg
ZmluZ2VyMiA9IGRvbWluYXRvcnNbZmluZ2VyMl07CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19pZG9tX2luZGV4ID0gZmluZ2Vy
MTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IElmIGlkb20gaGFzIGFscmVhZHkgcmVhY2hlZCB0aGUgcm9vdCwgaXQgZG9lc24ndCBtYWtlIHNl
bnNlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBjaGVjayBvdGhlciByZXRhaW5lcnMu
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3X2lkb21faW5kZXggPT09IHJvb3RQb3N0
T3JkZXJlZEluZGV4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChu
ZXdfaWRvbV9pbmRleCAhPT0ga05vRW50cnkgJiYgZG9taW5hdG9yc1twb3N0T3JkZXJJbmRleF0g
IT09IG5ld19pZG9tX2luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIGRvbWluYXRvcnNbcG9z
dE9yZGVySW5kZXhdID0gbmV3X2lkb21faW5kZXg7CisgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB7IC8vIG1hbnVhbGx5IGlubGluZWQgZHVl
IHRvIGlubGluZSBzb3VyY2Ugc2l6ZSBsaW1pdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBub2RlSW5kZXggPSBwb3N0T3JkZXJJbmRleDJOb2RlSW5kZXhbcG9zdE9yZGVySW5kZXhdOwor
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJlZ2luRWRnZVRvTm9kZUZpZWxkSW5kZXggPSBu
b2Rlc1tub2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldF0gKyBlZGdlVG9Ob2RlT2Zmc2V0
OworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVuZEVkZ2VUb05vZGVGaWVsZEluZGV4ID0g
bm9kZXNbbm9kZUluZGV4ICsgbm9kZUZpZWxkQ291bnQgKyBmaXJzdEVkZ2VJbmRleE9mZnNldF07
CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0b05vZGVGaWVsZEluZGV4ID0gYmVn
aW5FZGdlVG9Ob2RlRmllbGRJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9O
b2RlRmllbGRJbmRleCA8IGVuZEVkZ2VUb05vZGVGaWVsZEluZGV4OworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0b05vZGVGaWVsZEluZGV4ICs9IGVkZ2VGaWVsZHNDb3VudCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVPcmRpbmFsID0gY29udGFpbm1l
bnRFZGdlc1t0b05vZGVGaWVsZEluZGV4XSAvIG5vZGVGaWVsZENvdW50OworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFmZmVjdGVkW25vZGVPcmRpbmFsMlBvc3RPcmRlckluZGV4W2NoaWxk
Tm9kZU9yZGluYWxdXSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBidWlsZERvbWluYXRvckluZGV4ZXMoZG9taW5hdG9ycywgcG9z
dE9yZGVySW5kZXgyTm9kZUluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgbm9kZU9y
ZGluYWwyRG9taW5hdG9yTm9kZUluZGV4ID0gbmV3IFVpbnQzMkFycmF5KG5vZGVzQ291bnQpOwor
ICAgICAgICAgICAgZm9yICh2YXIgcG9zdE9yZGVySW5kZXggPSAwLCBsID0gZG9taW5hdG9ycy5s
ZW5ndGg7IHBvc3RPcmRlckluZGV4IDwgbDsgKytwb3N0T3JkZXJJbmRleCkgeworICAgICAgICAg
ICAgICAgIHZhciBub2RlT3JkaW5hbCA9IHBvc3RPcmRlckluZGV4Mk5vZGVJbmRleFtwb3N0T3Jk
ZXJJbmRleF0gLyBub2RlRmllbGRDb3VudDsKKyAgICAgICAgICAgICAgICBub2RlT3JkaW5hbDJE
b21pbmF0b3JOb2RlSW5kZXhbbm9kZU9yZGluYWxdID0gcG9zdE9yZGVySW5kZXgyTm9kZUluZGV4
W2RvbWluYXRvcnNbcG9zdE9yZGVySW5kZXhdXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybiBub2RlT3JkaW5hbDJEb21pbmF0b3JOb2RlSW5kZXg7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gYnVpbGREb21pbmF0b3JJbmRleGVzKGRvbWluYXRvcnMsIHBvc3RPcmRlcklu
ZGV4Mk5vZGVJbmRleCk7CisgICAgfSwKKwogICAgIF9idWlsZERvbWluYXRlZE5vZGVzOiBmdW5j
dGlvbigpCiAgICAgewogICAgICAgICAvLyBCdWlsZHMgdXAgdHdvIGFycmF5czoKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0
NjI5YjU4NjJmMjRhYTcyZDJmN2QwYTEyMDU4ZDdlY2M3ZDJhYWRhLi4yMjBhODU0NGNkM2M5YmIy
NTI2OWZhNzU2NmFhZGYxNGFhZjI3ZjRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDUt
MTYgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IHVwc3RyZWFtIGJ1aWxkIGRvbWluYXRvcnMgdHJlZSBwcm9jZWR1cmUgZnJv
bSB2OC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2
NjQwCisKKyAgICAgICAgVGhlIGlkZWEgaXMgdG8gcmVkdWNlIHRyYW5zZmVyIHNpemUgYW5kIG1v
dmUgYWxsIHRoZSBwb3N0LXByb2Nlc3Npbmcgc3RlcHMgdG8gdGhlIGZyb250LWVuZC4KKyAgICAg
ICAgVGhlIEpTIGltcGxlbWVudGF0aW9uIGlzIH4xLjUgdGltZXMgc2xvd2VyLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMgYW5kIHBlcmZvcm1hbmNlIHRlc3RzLgorCisgICAgICAgICogaW5zcGVjdG9yL3By
b2ZpbGVyL2hlYXAtc25hcHNob3QtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9w
cm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0hlYXBT
bmFwc2hvdFRlc3QuSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrUmF3KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC5odG1sOgorCiAyMDEyLTA1
LTE2ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IGV4dHJhY3QgQ29tcG9zaXRlVUlTb3VyY2VDb2RlUHJvdmlkZXIgZnJvbSBE
ZWJ1Z2dlclNjcmlwdE1hcHBpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBlY3RlZC50eHQKaW5kZXggZDNkZTU2ODE2MGNi
N2ZhNGE2OTIxN2Q1YmI1ZTlmMjE3NGU4YjBkNy4uODkyMzAwNzA0YmYxYTFhZWEwOWFmOWY3MzI0
MjU5ODAwMDE2NmI3OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVy
L2hlYXAtc25hcHNob3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
cm9maWxlci9oZWFwLXNuYXBzaG90LWV4cGVjdGVkLnR4dApAQCAtMTMsNiArMTMsMTAgQEAgUnVu
bmluZzogaGVhcFNuYXBzaG90Tm9kZUFuZEVkZ2VUZXN0CiAKIFJ1bm5pbmc6IGhlYXBTbmFwc2hv
dFNpbXBsZVRlc3QKIAorUnVubmluZzogaGVhcFNuYXBzaG90UG9zdE9yZGVySW5kZXhUZXN0CisK
K1J1bm5pbmc6IGhlYXBTbmFwc2hvdERvbWluYXRvcnNUcmVlVGVzdAorCiBSdW5uaW5nOiBoZWFw
U25hcHNob3RSZXRhaW5lcnNUZXN0CiAKIFJ1bm5pbmc6IGhlYXBTbmFwc2hvdEFnZ3JlZ2F0ZXNU
ZXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFw
c2hvdC10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNo
b3QtdGVzdC5qcwppbmRleCA0N2RiYjk0YTk5MTA3MzRiN2UxYWM3OWJlMjUzNTg3ZjZhYjliNmY4
Li4yYWFmNzk5YjAwNGU1OWY1MmIyMjVjNGI4ZTcwZTIyMjM2MzRhZTMxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0LmpzCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanMKQEAg
LTY5LDE3ICs2OSwyNyBAQCBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2tSYXcg
PSBmdW5jdGlvbigpCiAgICAgICAgICAgICBub2RlX2NvdW50OiA2LAogICAgICAgICAgICAgZWRn
ZV9jb3VudDogN30sCiAgICAgICAgIG5vZGVzOiBbCi0gICAgICAgICAgICAwLCAwLCAxLCAwLCAy
MCwgIDAsICAwLAotICAgICAgICAgICAgMSwgMSwgMiwgMiwgIDIsICAwLCAgNiwKLSAgICAgICAg
ICAgIDEsIDIsIDMsIDMsICA4LCAgMCwgMTIsCi0gICAgICAgICAgICAxLCAzLCA0LCA0LCAxMCwg
IDAsIDE4LAotICAgICAgICAgICAgMSwgNCwgNSwgNSwgIDUsIDE0LCAyMSwKLSAgICAgICAgICAg
IDEsIDUsIDYsIDYsICA2LCAyMSwgMjFdLAorICAgICAgICAgICAgMCwgMCwgMSwgMCwgMjAsICAw
LCAgMCwgLy8gcm9vdCAoMCkKKyAgICAgICAgICAgIDEsIDEsIDIsIDIsICAyLCAgMCwgIDYsIC8v
IEEgKDcpCisgICAgICAgICAgICAxLCAyLCAzLCAzLCAgOCwgIDAsIDEyLCAvLyBCICgxNCkKKyAg
ICAgICAgICAgIDEsIDMsIDQsIDQsIDEwLCAgMCwgMTgsIC8vIEMgKDIxKQorICAgICAgICAgICAg
MSwgNCwgNSwgNSwgIDUsIDE0LCAyMSwgLy8gRCAoMjgpCisgICAgICAgICAgICAxLCA1LCA2LCA2
LCAgNiwgMjEsIDIxXSwvLyBFICgzNSkKICAgICAgICAgZWRnZXM6IFsKLSAgICAgICAgICAgIDEs
ICA2LCAgNywgMSwgIDcsIDE0LAotICAgICAgICAgICAgMCwgIDEsIDE0LCAxLCAgOCwgMjEsCi0g
ICAgICAgICAgICAxLCAgOSwgMjEsIDEsIDEwLCAyOCwKLSAgICAgICAgICAgIDEsIDExLCAzNV0s
CisgICAgICAgICAgICAvLyByb290IG5vZGUgZWRnZXMKKyAgICAgICAgICAgIDEsICA2LCAgNywg
Ly8gcHJvcGVydHkgJ2EnIHRvIG5vZGUgJ0EnCisgICAgICAgICAgICAxLCAgNywgMTQsIC8vIHBy
b3BlcnR5ICdiJyB0byBub2RlICdCJworCisgICAgICAgICAgICAvLyBBIG5vZGUgZWRnZXMKKyAg
ICAgICAgICAgIDAsICAxLCAxNCwgLy8gZWxlbWVudCAxIHRvIG5vZGUgJ0InCisgICAgICAgICAg
ICAxLCAgOCwgMjEsIC8vIHByb3BlcnR5ICdhYycgdG8gbm9kZSAnQycKKworICAgICAgICAgICAg
Ly8gQiBub2RlIGVkZ2VzCisgICAgICAgICAgICAxLCAgOSwgMjEsIC8vIHByb3BlcnR5ICdiYycg
dG8gbm9kZSAnQycKKyAgICAgICAgICAgIDEsIDEwLCAyOCwgLy8gcHJvcGVydHkgJ2JkJyB0byBu
b2RlICdEJworCisgICAgICAgICAgICAvLyBDIG5vZGUgZWRnZXMKKyAgICAgICAgICAgIDEsIDEx
LCAzNV0sIC8vIHByb3BlcnR5ICdjZScgdG8gbm9kZSAnRScKICAgICAgICAgc3RyaW5nczogWyIi
LCAiQSIsICJCIiwgIkMiLCAiRCIsICJFIiwgImEiLCAiYiIsICJhYyIsICJiYyIsICJiZCIsICJj
ZSJdCiAgICAgfTsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmls
ZXIvaGVhcC1zbmFwc2hvdC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hl
YXAtc25hcHNob3QuaHRtbAppbmRleCA0NGIyOTNkZGJmYTI2MzE2YzgxNDMwZDRkZTBkYmRjZTBi
ZjQwNTRhLi40ZTM1ODNmMzFkZWQ3MmY3ZDNlZjUxMGE1NDQ3NGVjZjMxOGUyMGQyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90Lmh0bWwKQEAg
LTk1LDYgKzk1LDI3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgbmV4dCgpOwogICAg
ICAgICB9LAogCisgICAgICAgIGZ1bmN0aW9uIGhlYXBTbmFwc2hvdFBvc3RPcmRlckluZGV4VGVz
dChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgc25hcHNob3QgPSBuZXcgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdChJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2so
KSk7CisgICAgICAgICAgICB2YXIgcG9zdE9yZGVySW5kZXggPSBzbmFwc2hvdC5fYnVpbGRQb3N0
T3JkZXJJbmRleCgpLnBvc3RPcmRlckluZGV4Mk5vZGVJbmRleDsKKyAgICAgICAgICAgIHZhciBl
eHBlY3RlZCA9IFsyOCwzNSwyMSwxNCw3LDBdOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBleHBlY3RlZC5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydEVxdWFscyhleHBlY3RlZFtpXSwgcG9zdE9yZGVySW5kZXhbaV0sICJQb3N0IG9yZGVy
ZWQgaW5kZXhlcyIpOworICAgICAgICAgICAgbmV4dCgpOworICAgICAgICB9LAorCisgICAgICAg
IGZ1bmN0aW9uIGhlYXBTbmFwc2hvdERvbWluYXRvcnNUcmVlVGVzdChuZXh0KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgc25hcHNob3QgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dChJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2soKSk7CisgICAgICAgICAgICB2
YXIgcmVzdWx0ID0gc25hcHNob3QuX2J1aWxkUG9zdE9yZGVySW5kZXgoKTsKKyAgICAgICAgICAg
IHZhciBkb21pbmF0b3JzVHJlZSA9IHNuYXBzaG90Ll9idWlsZERvbWluYXRvclRyZWUocmVzdWx0
LnBvc3RPcmRlckluZGV4Mk5vZGVJbmRleCwgcmVzdWx0Lm5vZGVPcmRpbmFsMlBvc3RPcmRlcklu
ZGV4KTsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZCA9IFswLCAwLCAwLCAwLCAxNCwgMjFdOwor
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZC5sZW5ndGg7ICsraSkKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhleHBlY3RlZFtpXSwgZG9t
aW5hdG9yc1RyZWVbaV0sICJEb21pbmF0b3JzIFRyZWUiKTsKKyAgICAgICAgICAgIG5leHQoKTsK
KyAgICAgICAgfSwKKwogICAgICAgICBmdW5jdGlvbiBoZWFwU25hcHNob3RSZXRhaW5lcnNUZXN0
KG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHZhciBzbmFwc2hvdCA9IG5ldyBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90KEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9jaygp
KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2U2MDhiYmI5YWVlMTMzOGE0OTIxMzM4OGY4NzU4ZmE5NjBi
MGRhMS4uYWJmNzA2NWEyMWQzN2QyNThiMGE1OThiODg2NzJiOGI4MDI5ZDVmZCAxMDA2NDQKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNS0xNiAgSWx5YSBUaWtob25vdnNreSAgPGxv
aXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogdXBzdHJlYW0gYnVp
bGQgZG9taW5hdG9ycyB0cmVlIHByb2NlZHVyZSBmcm9tIHY4LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY2NDAKKworICAgICAgICBUaGUgaWRlYSBp
cyB0byByZWR1Y2UgdHJhbnNmZXIgc2l6ZSBhbmQgbW92ZSBhbGwgdGhlIHBvc3QtcHJvY2Vzc2lu
ZyBzdGVwcyB0byB0aGUgZnJvbnQtZW5kLgorICAgICAgICBUaGUgSlMgaW1wbGVtZW50YXRpb24g
aXMgfjEuNSB0aW1lcyBzbG93ZXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cyBhbmQgcGVyZm9ybWFuY2Ug
dGVzdHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC5odG1sOgorCiAyMDEy
LTA1LTE2ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQuIEZpeCBoZWFwIHByb2ZpbGVyIHBlcmZvcm1hbmNlIHRlc3QgYWZ0ZXIgcjEx
NzIzNC4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2hlYXAtc25hcHNo
b3QuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2hlYXAtc25hcHNob3QuaHRtbApp
bmRleCA5Y2UzMWViZmMwMWU2Y2U5ZjlkN2ZmMDQ1NDZkMWYxMDdmNDE0Yjk2Li41ZDIwMWZiMGVj
NmIzODJjYmM3NzlmMjI1N2VjMWUyYWQxYWZkNzQ0IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL2luc3BlY3Rvci9oZWFwLXNuYXBzaG90Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9p
bnNwZWN0b3IvaGVhcC1zbmFwc2hvdC5odG1sCkBAIC0yOSw2ICsyOSw4IEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfbWFya0RldGFjaGVkRE9NVHJlZU5vZGVzIik7
CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9tYXJrUXVlcmlhYmxlSGVhcE9iamVjdHMiKTsKICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3QucHJvdG90eXBlLCAiX3NwbGl0Tm9kZXNBbmRDb250YWlubWVudEVkZ2VzIik7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90LnByb3RvdHlwZSwgIl9idWlsZFBvc3RPcmRlckluZGV4Iik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
LnByb3RvdHlwZSwgIl9idWlsZERvbWluYXRvclRyZWUiKTsKIAogICAgICAgICAgICAgdGltZXIu
ZmluaXNoKGJhY2tlbmRUaW1lckNvb2tpZSk7CiAgICAgICAgICAgICB0cmFuc2ZlclRpbWVyQ29v
a2llID0gdGltZXIuc3RhcnQoInRyYW5zZmVyLXNuYXBzaG90Iik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142285</attachid>
            <date>2012-05-16 09:56:41 -0700</date>
            <delta_ts>2012-05-17 01:46:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86640-20120516205639.patch</filename>
            <type>text/plain</type>
            <size>17242</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWE5YjZiMzExMDI3Yzhk
YmM4NTM2MjI3NmM3NTU1M2YyNzRkNTA2ZS4uM2Q4ZmM2OTNjZjNkNjEzODI5Y2U5MmFhMmVkYWJl
ZGIwZWRiZTJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA1LTE2ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiB1cHN0cmVhbSBidWlsZCBkb21pbmF0b3JzIHRyZWUgcHJvY2VkdXJlIGZyb20gdjguCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjY0MAorCisg
ICAgICAgIFRoZSBpZGVhIGlzIHRvIHJlZHVjZSB0cmFuc2ZlciBzaXplIGFuZCBtb3ZlIGFsbCB0
aGUgcG9zdC1wcm9jZXNzaW5nIHN0ZXBzIHRvIHRoZSBmcm9udC1lbmQuCisgICAgICAgIFRoZSBK
UyBpbXBsZW1lbnRhdGlvbiBpcyB+MS41IHRpbWVzIHNsb3dlci4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3Rz
IGFuZCBwZXJmb3JtYW5jZSB0ZXN0cy4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
SGVhcFNuYXBzaG90LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90
b3R5cGUuX2luaXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5
cGUuX2J1aWxkUG9zdE9yZGVySW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdC5wcm90b3R5cGUuX2J1aWxkRG9taW5hdG9yVHJlZS5idWlsZERvbWluYXRvckluZGV4ZXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX2J1aWxkRG9t
aW5hdG9yVHJlZSk6CisKIDIwMTItMDUtMTYgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZXh0cmFjdCBDb21wb3NpdGVVSVNv
dXJjZUNvZGVQcm92aWRlciBmcm9tIERlYnVnZ2VyU2NyaXB0TWFwcGluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKaW5kZXggZTMy
MjYwNDczNTg3NTA5MmEwMzA3N2I0NTk4ODgxNTI1NjIxYTYyNC4uOTkwMTNlM2RkZGZkOTZhMTE5
MDk0ZjRhMDgzOWJkMzkyZGI5ODkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKQEAgLTcxOSw2ICs3MTksOCBAQCBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2J1aWxk
RG9taW5hdGVkTm9kZXMoKQogICAgICAgICB0aGlzLl9jYWxjdWxhdGVGbGFncygpOwogICAgICAg
ICB0aGlzLl9jYWxjdWxhdGVPYmplY3RUb1dpbmRvd0Rpc3RhbmNlKCk7CisgICAgICAgIHZhciBy
ZXN1bHQgPSB0aGlzLl9idWlsZFBvc3RPcmRlckluZGV4KCk7CisgICAgICAgIHRoaXMuX2RvbWlu
YXRvcnNUcmVlID0gdGhpcy5fYnVpbGREb21pbmF0b3JUcmVlKHJlc3VsdC5wb3N0T3JkZXJJbmRl
eDJOb2RlSW5kZXgsIHJlc3VsdC5ub2RlT3JkaW5hbDJQb3N0T3JkZXJJbmRleCk7CiAgICAgfSwK
IAogICAgIF9idWlsZFJldGFpbmVyczogZnVuY3Rpb24oKQpAQCAtMTA2Myw2ICsxMDY1LDE1NSBA
QCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAg
ICB9KTsKICAgICB9LAogCisgICAgX2J1aWxkUG9zdE9yZGVySW5kZXg6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHZhciBub2RlRmllbGRDb3VudCA9IHRoaXMuX25vZGVGaWVsZENvdW50Owor
ICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKKyAgICAgICAgdmFyIGVkZ2VGaWVsZHND
b3VudCA9IHRoaXMuX2VkZ2VGaWVsZHNDb3VudDsKKyAgICAgICAgdmFyIGVkZ2VUb05vZGVPZmZz
ZXQgPSB0aGlzLl9lZGdlVG9Ob2RlT2Zmc2V0OworICAgICAgICB2YXIgZmlyc3RFZGdlSW5kZXhP
ZmZzZXQgPSB0aGlzLl9maXJzdEVkZ2VJbmRleE9mZnNldDsKKyAgICAgICAgdmFyIGNvbnRhaW5t
ZW50RWRnZXMgPSB0aGlzLl9jb250YWlubWVudEVkZ2VzOworCisgICAgICAgIHZhciBub2Rlc1Rv
VmlzaXQgPSBuZXcgVWludDMyQXJyYXkodGhpcy5ub2RlQ291bnQpOworICAgICAgICB2YXIgcG9z
dE9yZGVySW5kZXgyTm9kZUluZGV4ID0gbmV3IFVpbnQzMkFycmF5KHRoaXMubm9kZUNvdW50KTsK
KyAgICAgICAgdmFyIG5vZGVPcmRpbmFsMlBvc3RPcmRlckluZGV4ID0gbmV3IFVpbnQzMkFycmF5
KHRoaXMubm9kZUNvdW50KTsKKyAgICAgICAgdmFyIHBhaW50ZWQgPSBuZXcgVWludDhBcnJheSh0
aGlzLm5vZGVDb3VudCk7CisgICAgICAgIHBhaW50ZWRbdGhpcy5fcm9vdE5vZGVJbmRleCAvIG5v
ZGVGaWVsZENvdW50XSA9IDE7CisgICAgICAgIHZhciBub2Rlc1RvVmlzaXRMZW5ndGggPSAwOwor
ICAgICAgICB2YXIgcG9zdE9yZGVySW5kZXggPSAwOworICAgICAgICBub2Rlc1RvVmlzaXRbbm9k
ZXNUb1Zpc2l0TGVuZ3RoKytdID0gdGhpcy5fcm9vdE5vZGVJbmRleDsKKyAgICAgICAgd2hpbGUg
KG5vZGVzVG9WaXNpdExlbmd0aCkgeworICAgICAgICAgICAgdmFyIG5vZGVJbmRleCA9IG5vZGVz
VG9WaXNpdFtub2Rlc1RvVmlzaXRMZW5ndGggLSAxXTsKKyAgICAgICAgICAgIHZhciBub2RlT3Jk
aW5hbCA9IG5vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50OworICAgICAgICAgICAgaWYgKHBhaW50
ZWRbbm9kZU9yZGluYWxdID09PSAxKSB7CisgICAgICAgICAgICAgICAgcGFpbnRlZFtub2RlT3Jk
aW5hbF0gPSAyOworICAgICAgICAgICAgICAgIHZhciBiZWdpbkVkZ2VUb05vZGVGaWVsZEluZGV4
ID0gbm9kZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXRdICsgZWRnZVRvTm9kZU9m
ZnNldDsKKyAgICAgICAgICAgICAgICB2YXIgZW5kRWRnZVRvTm9kZUZpZWxkSW5kZXggPSBub2Rl
c1tub2RlSW5kZXggKyBub2RlRmllbGRDb3VudCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0XTsKKyAg
ICAgICAgICAgICAgICBmb3IgKHZhciB0b05vZGVGaWVsZEluZGV4ID0gYmVnaW5FZGdlVG9Ob2Rl
RmllbGRJbmRleDsgdG9Ob2RlRmllbGRJbmRleCA8IGVuZEVkZ2VUb05vZGVGaWVsZEluZGV4OyB0
b05vZGVGaWVsZEluZGV4ICs9IGVkZ2VGaWVsZHNDb3VudCkgeworICAgICAgICAgICAgICAgICAg
ICB2YXIgY2hpbGROb2RlSW5kZXggPSAgY29udGFpbm1lbnRFZGdlc1t0b05vZGVGaWVsZEluZGV4
XTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGNoaWxkTm9kZU9yZGluYWwgPSBjaGlsZE5vZGVJ
bmRleCAvIG5vZGVGaWVsZENvdW50OworICAgICAgICAgICAgICAgICAgICBpZiAoIXBhaW50ZWRb
Y2hpbGROb2RlT3JkaW5hbF0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50ZWRbY2hp
bGROb2RlT3JkaW5hbF0gPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXNUb1Zpc2l0
W25vZGVzVG9WaXNpdExlbmd0aCsrXSA9IGNoaWxkTm9kZUluZGV4OworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBub2RlT3JkaW5hbDJQb3N0T3JkZXJJbmRleFtub2RlT3JkaW5hbF0gPSBwb3N0T3Jk
ZXJJbmRleDsKKyAgICAgICAgICAgICAgICBwb3N0T3JkZXJJbmRleDJOb2RlSW5kZXhbcG9zdE9y
ZGVySW5kZXgrK10gPSBub2RlSW5kZXg7CisgICAgICAgICAgICAgICAgLS1ub2Rlc1RvVmlzaXRM
ZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHtwb3N0T3Jk
ZXJJbmRleDJOb2RlSW5kZXg6IHBvc3RPcmRlckluZGV4Mk5vZGVJbmRleCwgbm9kZU9yZGluYWwy
UG9zdE9yZGVySW5kZXg6IG5vZGVPcmRpbmFsMlBvc3RPcmRlckluZGV4fTsKKyAgICB9LAorCisg
ICAgLy8gVGhlIGFsZ29yaXRobSBpcyBiYXNlZCBvbiB0aGUgYXJ0aWNsZToKKyAgICAvLyBLLiBD
b29wZXIsIFQuIEhhcnZleSBhbmQgSy4gS2VubmVkeSAiQSBTaW1wbGUsIEZhc3QgRG9taW5hbmNl
IEFsZ29yaXRobSIKKyAgICAvLyBTb2Z0dy4gUHJhY3QuIEV4cGVyLiA0ICgyMDAxKSwgcHAuIDEt
MTAuCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48bnVtYmVyPn0gcG9zdE9yZGVySW5k
ZXgyTm9kZUluZGV4CisgICAgICogQHBhcmFtIHtBcnJheS48bnVtYmVyPn0gbm9kZU9yZGluYWwy
UG9zdE9yZGVySW5kZXgKKyAgICAgKi8KKyAgICBfYnVpbGREb21pbmF0b3JUcmVlOiBmdW5jdGlv
bihwb3N0T3JkZXJJbmRleDJOb2RlSW5kZXgsIG5vZGVPcmRpbmFsMlBvc3RPcmRlckluZGV4KQor
ICAgIHsKKyAgICAgICAgdmFyIG5vZGVGaWVsZENvdW50ID0gdGhpcy5fbm9kZUZpZWxkQ291bnQ7
CisgICAgICAgIHZhciBub2RlcyA9IHRoaXMuX25vZGVzOworICAgICAgICB2YXIgZmlyc3RSZXRh
aW5lckluZGV4ID0gdGhpcy5fZmlyc3RSZXRhaW5lckluZGV4OworICAgICAgICB2YXIgcmV0YWlu
aW5nTm9kZXMgPSB0aGlzLl9yZXRhaW5pbmdOb2RlczsKKyAgICAgICAgdmFyIGVkZ2VGaWVsZHND
b3VudCA9IHRoaXMuX2VkZ2VGaWVsZHNDb3VudDsKKyAgICAgICAgdmFyIGVkZ2VUb05vZGVPZmZz
ZXQgPSB0aGlzLl9lZGdlVG9Ob2RlT2Zmc2V0OworICAgICAgICB2YXIgZmlyc3RFZGdlSW5kZXhP
ZmZzZXQgPSB0aGlzLl9maXJzdEVkZ2VJbmRleE9mZnNldDsKKyAgICAgICAgdmFyIGNvbnRhaW5t
ZW50RWRnZXMgPSB0aGlzLl9jb250YWlubWVudEVkZ2VzOworICAgICAgICB2YXIgcm9vdE5vZGVJ
bmRleCA9IHRoaXMuX3Jvb3ROb2RlSW5kZXg7CisKKyAgICAgICAgdmFyIG5vZGVzQ291bnQgPSBw
b3N0T3JkZXJJbmRleDJOb2RlSW5kZXgubGVuZ3RoOworICAgICAgICB2YXIgcm9vdFBvc3RPcmRl
cmVkSW5kZXggPSBub2Rlc0NvdW50IC0gMTsKKyAgICAgICAgdmFyIGtOb0VudHJ5ID0gbm9kZXND
b3VudDsKKyAgICAgICAgdmFyIGRvbWluYXRvcnMgPSBuZXcgVWludDMyQXJyYXkobm9kZXNDb3Vu
dCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm9vdFBvc3RPcmRlcmVkSW5kZXg7ICsr
aSkKKyAgICAgICAgICAgIGRvbWluYXRvcnNbaV0gPSBrTm9FbnRyeTsKKyAgICAgICAgZG9taW5h
dG9yc1tyb290UG9zdE9yZGVyZWRJbmRleF0gPSByb290UG9zdE9yZGVyZWRJbmRleDsKKworICAg
ICAgICAvLyBUaGUgYWZmZWN0ZWQgYXJyYXkgaXMgdXNlZCB0byBtYXJrIGVudHJpZXMgd2hpY2gg
ZG9taW5hdG9ycworICAgICAgICAvLyBoYXZlIHRvIGJlIHJhY2FsY3VsYXRlZCBiZWNhdXNlIG9m
IGNoYW5nZXMgaW4gdGhlaXIgcmV0YWluZXJzLgorICAgICAgICB2YXIgYWZmZWN0ZWQgPSBuZXcg
VWludDhBcnJheShub2Rlc0NvdW50KTsKKworICAgICAgICAvLyBNYXJrIHRoZSByb290IGRpcmVj
dCBjaGlsZHJlbiBhcyBhZmZlY3RlZC4KKyAgICAgICAgey8vIG1hbnVhbGx5IGlubGluZWQgZHVl
IHRvIGlubGluZSBzb3VyY2Ugc2l6ZSBsaW1pdC4KKyAgICAgICAgICAgIHZhciBub2RlSW5kZXgg
PSB0aGlzLl9yb290Tm9kZUluZGV4OworICAgICAgICAgICAgdmFyIGJlZ2luRWRnZVRvTm9kZUZp
ZWxkSW5kZXggPSBub2Rlc1tub2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldF0gKyBlZGdl
VG9Ob2RlT2Zmc2V0OworICAgICAgICAgICAgdmFyIGVuZEVkZ2VUb05vZGVGaWVsZEluZGV4ID0g
bm9kZXNbbm9kZUluZGV4ICsgbm9kZUZpZWxkQ291bnQgKyBmaXJzdEVkZ2VJbmRleE9mZnNldF07
CisgICAgICAgICAgICBmb3IgKHZhciB0b05vZGVGaWVsZEluZGV4ID0gYmVnaW5FZGdlVG9Ob2Rl
RmllbGRJbmRleDsKKyAgICAgICAgICAgICAgICAgdG9Ob2RlRmllbGRJbmRleCA8IGVuZEVkZ2VU
b05vZGVGaWVsZEluZGV4OworICAgICAgICAgICAgICAgICB0b05vZGVGaWVsZEluZGV4ICs9IGVk
Z2VGaWVsZHNDb3VudCkgeworICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVPcmRpbmFsID0g
Y29udGFpbm1lbnRFZGdlc1t0b05vZGVGaWVsZEluZGV4XSAvIG5vZGVGaWVsZENvdW50OworICAg
ICAgICAgICAgICAgIGFmZmVjdGVkW25vZGVPcmRpbmFsMlBvc3RPcmRlckluZGV4W2NoaWxkTm9k
ZU9yZGluYWxdXSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB2YXIg
Y2hhbmdlZCA9IHRydWU7CisgICAgICAgIHdoaWxlIChjaGFuZ2VkKSB7CisgICAgICAgICAgICBj
aGFuZ2VkID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKHZhciBwb3N0T3JkZXJJbmRleCA9IHJv
b3RQb3N0T3JkZXJlZEluZGV4IC0gMTsgcG9zdE9yZGVySW5kZXggPj0gMDsgLS1wb3N0T3JkZXJJ
bmRleCkgeworICAgICAgICAgICAgICAgIGlmIChhZmZlY3RlZFtwb3N0T3JkZXJJbmRleF0gPT0g
MCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgYWZmZWN0
ZWRbcG9zdE9yZGVySW5kZXhdID0gMDsKKyAgICAgICAgICAgICAgICB2YXIgbm9kZU9yZGluYWwg
PSBwb3N0T3JkZXJJbmRleDJOb2RlSW5kZXhbcG9zdE9yZGVySW5kZXhdIC8gbm9kZUZpZWxkQ291
bnQ7CisgICAgICAgICAgICAgICAgLy8gSWYgZG9taW5hdG9yIG9mIHRoZSBlbnRyeSBoYXMgYWxy
ZWFkeSBiZWVuIHNldCB0byByb290LAorICAgICAgICAgICAgICAgIC8vIHRoZW4gaXQgY2FuJ3Qg
cHJvcGFnYXRlIGFueSBmdXJ0aGVyLgorICAgICAgICAgICAgICAgIGlmIChkb21pbmF0b3JzW3Bv
c3RPcmRlckluZGV4XSA9PT0gcm9vdFBvc3RPcmRlcmVkSW5kZXgpCisgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIHZhciBuZXdfaWRvbV9pbmRleCA9IGtOb0Vu
dHJ5OworICAgICAgICAgICAgICAgIHZhciBiZWdpblJldGFpbmVySW5kZXggPSBmaXJzdFJldGFp
bmVySW5kZXhbbm9kZU9yZGluYWxdOworICAgICAgICAgICAgICAgIHZhciBlbmRSZXRhaW5lcklu
ZGV4ID0gZmlyc3RSZXRhaW5lckluZGV4W25vZGVPcmRpbmFsICsgMV07CisgICAgICAgICAgICAg
ICAgZm9yICh2YXIgcmV0YWluZXJJbmRleCA9IGJlZ2luUmV0YWluZXJJbmRleDsgcmV0YWluZXJJ
bmRleCA8IGVuZFJldGFpbmVySW5kZXg7ICsrcmV0YWluZXJJbmRleCkgeworICAgICAgICAgICAg
ICAgICAgICB2YXIgcmV0YWluZXJOb2RlT3JkaW5hbCA9IHJldGFpbmluZ05vZGVzW3JldGFpbmVy
SW5kZXhdIC8gbm9kZUZpZWxkQ291bnQ7CisgICAgICAgICAgICAgICAgICAgIHZhciByZXRhbmVy
UG9zdE9yZGVySW5kZXggPSBub2RlT3JkaW5hbDJQb3N0T3JkZXJJbmRleFtyZXRhaW5lck5vZGVP
cmRpbmFsXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRvbWluYXRvcnNbcmV0YW5lclBvc3RP
cmRlckluZGV4XSAhPT0ga05vRW50cnkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChu
ZXdfaWRvbV9pbmRleCA9PT0ga05vRW50cnkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bmV3X2lkb21faW5kZXggPSByZXRhbmVyUG9zdE9yZGVySW5kZXg7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocmV0YW5l
clBvc3RPcmRlckluZGV4ICE9PSBuZXdfaWRvbV9pbmRleCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3aGlsZSAocmV0YW5lclBvc3RPcmRlckluZGV4IDwgbmV3X2lkb21faW5k
ZXgpIHJldGFuZXJQb3N0T3JkZXJJbmRleCA9IGRvbWluYXRvcnNbcmV0YW5lclBvc3RPcmRlcklu
ZGV4XTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG5ld19pZG9tX2lu
ZGV4IDwgcmV0YW5lclBvc3RPcmRlckluZGV4KSBuZXdfaWRvbV9pbmRleCA9IGRvbWluYXRvcnNb
bmV3X2lkb21faW5kZXhdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGlkb20gaGFz
IGFscmVhZHkgcmVhY2hlZCB0aGUgcm9vdCwgaXQgZG9lc24ndCBtYWtlIHNlbnNlCisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyB0byBjaGVjayBvdGhlciByZXRhaW5lcnMuCisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobmV3X2lkb21faW5kZXggPT09IHJvb3RQb3N0T3JkZXJlZEluZGV4
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChuZXdfaWRvbV9pbmRl
eCAhPT0ga05vRW50cnkgJiYgZG9taW5hdG9yc1twb3N0T3JkZXJJbmRleF0gIT09IG5ld19pZG9t
X2luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIGRvbWluYXRvcnNbcG9zdE9yZGVySW5kZXhd
ID0gbmV3X2lkb21faW5kZXg7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICB7IC8vIG1hbnVhbGx5IGlubGluZWQgZHVlIHRvIGlubGluZSBz
b3VyY2Ugc2l6ZSBsaW1pdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBub2RlSW5kZXgg
PSBwb3N0T3JkZXJJbmRleDJOb2RlSW5kZXhbcG9zdE9yZGVySW5kZXhdOworICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIGJlZ2luRWRnZVRvTm9kZUZpZWxkSW5kZXggPSBub2Rlc1tub2RlSW5k
ZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldF0gKyBlZGdlVG9Ob2RlT2Zmc2V0OworICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIGVuZEVkZ2VUb05vZGVGaWVsZEluZGV4ID0gbm9kZXNbbm9kZUlu
ZGV4ICsgbm9kZUZpZWxkQ291bnQgKyBmaXJzdEVkZ2VJbmRleE9mZnNldF07CisgICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKHZhciB0b05vZGVGaWVsZEluZGV4ID0gYmVnaW5FZGdlVG9Ob2Rl
RmllbGRJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9Ob2RlRmllbGRJbmRl
eCA8IGVuZEVkZ2VUb05vZGVGaWVsZEluZGV4OworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0b05vZGVGaWVsZEluZGV4ICs9IGVkZ2VGaWVsZHNDb3VudCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVPcmRpbmFsID0gY29udGFpbm1lbnRFZGdlc1t0b05v
ZGVGaWVsZEluZGV4XSAvIG5vZGVGaWVsZENvdW50OworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFmZmVjdGVkW25vZGVPcmRpbmFsMlBvc3RPcmRlckluZGV4W2NoaWxkTm9kZU9yZGluYWxd
XSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBidWlsZERvbWluYXRvckluZGV4ZXMoZG9taW5hdG9ycywgcG9zdE9yZGVySW5kZXgy
Tm9kZUluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgbm9kZU9yZGluYWwyRG9taW5h
dG9yTm9kZUluZGV4ID0gbmV3IFVpbnQzMkFycmF5KG5vZGVzQ291bnQpOworICAgICAgICAgICAg
Zm9yICh2YXIgcG9zdE9yZGVySW5kZXggPSAwLCBsID0gZG9taW5hdG9ycy5sZW5ndGg7IHBvc3RP
cmRlckluZGV4IDwgbDsgKytwb3N0T3JkZXJJbmRleCkgeworICAgICAgICAgICAgICAgIHZhciBu
b2RlT3JkaW5hbCA9IHBvc3RPcmRlckluZGV4Mk5vZGVJbmRleFtwb3N0T3JkZXJJbmRleF0gLyBu
b2RlRmllbGRDb3VudDsKKyAgICAgICAgICAgICAgICBub2RlT3JkaW5hbDJEb21pbmF0b3JOb2Rl
SW5kZXhbbm9kZU9yZGluYWxdID0gcG9zdE9yZGVySW5kZXgyTm9kZUluZGV4W2RvbWluYXRvcnNb
cG9zdE9yZGVySW5kZXhdXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBub2Rl
T3JkaW5hbDJEb21pbmF0b3JOb2RlSW5kZXg7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
YnVpbGREb21pbmF0b3JJbmRleGVzKGRvbWluYXRvcnMsIHBvc3RPcmRlckluZGV4Mk5vZGVJbmRl
eCk7CisgICAgfSwKKwogICAgIF9idWlsZERvbWluYXRlZE5vZGVzOiBmdW5jdGlvbigpCiAgICAg
ewogICAgICAgICAvLyBCdWlsZHMgdXAgdHdvIGFycmF5czoKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0NjI5YjU4NjJmMjRh
YTcyZDJmN2QwYTEyMDU4ZDdlY2M3ZDJhYWRhLi4yMjBhODU0NGNkM2M5YmIyNTI2OWZhNzU2NmFh
ZGYxNGFhZjI3ZjRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDUtMTYgIElseWEgVGlr
aG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IHVwc3RyZWFtIGJ1aWxkIGRvbWluYXRvcnMgdHJlZSBwcm9jZWR1cmUgZnJvbSB2OC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NjQwCisKKyAgICAg
ICAgVGhlIGlkZWEgaXMgdG8gcmVkdWNlIHRyYW5zZmVyIHNpemUgYW5kIG1vdmUgYWxsIHRoZSBw
b3N0LXByb2Nlc3Npbmcgc3RlcHMgdG8gdGhlIGZyb250LWVuZC4KKyAgICAgICAgVGhlIEpTIGlt
cGxlbWVudGF0aW9uIGlzIH4xLjUgdGltZXMgc2xvd2VyLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMgYW5k
IHBlcmZvcm1hbmNlIHRlc3RzLgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAt
c25hcHNob3QtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9oZWFw
LXNuYXBzaG90LXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0hlYXBTbmFwc2hvdFRlc3Qu
SW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrUmF3KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC5odG1sOgorCiAyMDEyLTA1LTE2ICBQYXZlbCBG
ZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGV4dHJhY3QgQ29tcG9zaXRlVUlTb3VyY2VDb2RlUHJvdmlkZXIgZnJvbSBEZWJ1Z2dlclNjcmlw
dE1hcHBpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVh
cC1zbmFwc2hvdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIv
aGVhcC1zbmFwc2hvdC1leHBlY3RlZC50eHQKaW5kZXggZDNkZTU2ODE2MGNiN2ZhNGE2OTIxN2Q1
YmI1ZTlmMjE3NGU4YjBkNy4uODkyMzAwNzA0YmYxYTFhZWEwOWFmOWY3MzI0MjU5ODAwMDE2NmI3
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNo
b3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFw
LXNuYXBzaG90LWV4cGVjdGVkLnR4dApAQCAtMTMsNiArMTMsMTAgQEAgUnVubmluZzogaGVhcFNu
YXBzaG90Tm9kZUFuZEVkZ2VUZXN0CiAKIFJ1bm5pbmc6IGhlYXBTbmFwc2hvdFNpbXBsZVRlc3QK
IAorUnVubmluZzogaGVhcFNuYXBzaG90UG9zdE9yZGVySW5kZXhUZXN0CisKK1J1bm5pbmc6IGhl
YXBTbmFwc2hvdERvbWluYXRvcnNUcmVlVGVzdAorCiBSdW5uaW5nOiBoZWFwU25hcHNob3RSZXRh
aW5lcnNUZXN0CiAKIFJ1bm5pbmc6IGhlYXBTbmFwc2hvdEFnZ3JlZ2F0ZXNUZXN0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0Lmpz
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcwpp
bmRleCA0N2RiYjk0YTk5MTA3MzRiN2UxYWM3OWJlMjUzNTg3ZjZhYjliNmY4Li4yYWFmNzk5YjAw
NGU1OWY1MmIyMjVjNGI4ZTcwZTIyMjM2MzRhZTMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0LmpzCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanMKQEAgLTY5LDE3ICs2OSwy
NyBAQCBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2tSYXcgPSBmdW5jdGlvbigp
CiAgICAgICAgICAgICBub2RlX2NvdW50OiA2LAogICAgICAgICAgICAgZWRnZV9jb3VudDogN30s
CiAgICAgICAgIG5vZGVzOiBbCi0gICAgICAgICAgICAwLCAwLCAxLCAwLCAyMCwgIDAsICAwLAot
ICAgICAgICAgICAgMSwgMSwgMiwgMiwgIDIsICAwLCAgNiwKLSAgICAgICAgICAgIDEsIDIsIDMs
IDMsICA4LCAgMCwgMTIsCi0gICAgICAgICAgICAxLCAzLCA0LCA0LCAxMCwgIDAsIDE4LAotICAg
ICAgICAgICAgMSwgNCwgNSwgNSwgIDUsIDE0LCAyMSwKLSAgICAgICAgICAgIDEsIDUsIDYsIDYs
ICA2LCAyMSwgMjFdLAorICAgICAgICAgICAgMCwgMCwgMSwgMCwgMjAsICAwLCAgMCwgLy8gcm9v
dCAoMCkKKyAgICAgICAgICAgIDEsIDEsIDIsIDIsICAyLCAgMCwgIDYsIC8vIEEgKDcpCisgICAg
ICAgICAgICAxLCAyLCAzLCAzLCAgOCwgIDAsIDEyLCAvLyBCICgxNCkKKyAgICAgICAgICAgIDEs
IDMsIDQsIDQsIDEwLCAgMCwgMTgsIC8vIEMgKDIxKQorICAgICAgICAgICAgMSwgNCwgNSwgNSwg
IDUsIDE0LCAyMSwgLy8gRCAoMjgpCisgICAgICAgICAgICAxLCA1LCA2LCA2LCAgNiwgMjEsIDIx
XSwvLyBFICgzNSkKICAgICAgICAgZWRnZXM6IFsKLSAgICAgICAgICAgIDEsICA2LCAgNywgMSwg
IDcsIDE0LAotICAgICAgICAgICAgMCwgIDEsIDE0LCAxLCAgOCwgMjEsCi0gICAgICAgICAgICAx
LCAgOSwgMjEsIDEsIDEwLCAyOCwKLSAgICAgICAgICAgIDEsIDExLCAzNV0sCisgICAgICAgICAg
ICAvLyByb290IG5vZGUgZWRnZXMKKyAgICAgICAgICAgIDEsICA2LCAgNywgLy8gcHJvcGVydHkg
J2EnIHRvIG5vZGUgJ0EnCisgICAgICAgICAgICAxLCAgNywgMTQsIC8vIHByb3BlcnR5ICdiJyB0
byBub2RlICdCJworCisgICAgICAgICAgICAvLyBBIG5vZGUgZWRnZXMKKyAgICAgICAgICAgIDAs
ICAxLCAxNCwgLy8gZWxlbWVudCAxIHRvIG5vZGUgJ0InCisgICAgICAgICAgICAxLCAgOCwgMjEs
IC8vIHByb3BlcnR5ICdhYycgdG8gbm9kZSAnQycKKworICAgICAgICAgICAgLy8gQiBub2RlIGVk
Z2VzCisgICAgICAgICAgICAxLCAgOSwgMjEsIC8vIHByb3BlcnR5ICdiYycgdG8gbm9kZSAnQycK
KyAgICAgICAgICAgIDEsIDEwLCAyOCwgLy8gcHJvcGVydHkgJ2JkJyB0byBub2RlICdEJworCisg
ICAgICAgICAgICAvLyBDIG5vZGUgZWRnZXMKKyAgICAgICAgICAgIDEsIDExLCAzNV0sIC8vIHBy
b3BlcnR5ICdjZScgdG8gbm9kZSAnRScKICAgICAgICAgc3RyaW5nczogWyIiLCAiQSIsICJCIiwg
IkMiLCAiRCIsICJFIiwgImEiLCAiYiIsICJhYyIsICJiYyIsICJiZCIsICJjZSJdCiAgICAgfTsK
IH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFw
c2hvdC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3Qu
aHRtbAppbmRleCA0NGIyOTNkZGJmYTI2MzE2YzgxNDMwZDRkZTBkYmRjZTBiZjQwNTRhLi40ZTM1
ODNmMzFkZWQ3MmY3ZDNlZjUxMGE1NDQ3NGVjZjMxOGUyMGQyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90Lmh0bWwKQEAgLTk1LDYgKzk1LDI3
IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICB9LAogCisg
ICAgICAgIGZ1bmN0aW9uIGhlYXBTbmFwc2hvdFBvc3RPcmRlckluZGV4VGVzdChuZXh0KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgc25hcHNob3QgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdChJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2soKSk7CisgICAgICAg
ICAgICB2YXIgcG9zdE9yZGVySW5kZXggPSBzbmFwc2hvdC5fYnVpbGRQb3N0T3JkZXJJbmRleCgp
LnBvc3RPcmRlckluZGV4Mk5vZGVJbmRleDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZCA9IFsy
OCwzNSwyMSwxNCw3LDBdOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3Rl
ZC5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cyhleHBlY3RlZFtpXSwgcG9zdE9yZGVySW5kZXhbaV0sICJQb3N0IG9yZGVyZWQgaW5kZXhlcyIp
OworICAgICAgICAgICAgbmV4dCgpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIGhl
YXBTbmFwc2hvdERvbWluYXRvcnNUcmVlVGVzdChuZXh0KQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgc25hcHNob3QgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdChJbnNwZWN0b3JU
ZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2soKSk7CisgICAgICAgICAgICB2YXIgcmVzdWx0ID0g
c25hcHNob3QuX2J1aWxkUG9zdE9yZGVySW5kZXgoKTsKKyAgICAgICAgICAgIHZhciBkb21pbmF0
b3JzVHJlZSA9IHNuYXBzaG90Ll9idWlsZERvbWluYXRvclRyZWUocmVzdWx0LnBvc3RPcmRlcklu
ZGV4Mk5vZGVJbmRleCwgcmVzdWx0Lm5vZGVPcmRpbmFsMlBvc3RPcmRlckluZGV4KTsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZCA9IFswLCAwLCAwLCAwLCAxNCwgMjFdOworICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZC5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhleHBlY3RlZFtpXSwgZG9taW5hdG9yc1RyZWVb
aV0sICJEb21pbmF0b3JzIFRyZWUiKTsKKyAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgfSwK
KwogICAgICAgICBmdW5jdGlvbiBoZWFwU25hcHNob3RSZXRhaW5lcnNUZXN0KG5leHQpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHZhciBzbmFwc2hvdCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90KEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9jaygpKTsKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggY2U2MDhiYmI5YWVlMTMzOGE0OTIxMzM4OGY4NzU4ZmE5NjBiMGRhMS4uYWJmNzA2
NWEyMWQzN2QyNThiMGE1OThiODg2NzJiOGI4MDI5ZDVmZCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxMi0wNS0xNiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogdXBzdHJlYW0gYnVpbGQgZG9taW5hdG9y
cyB0cmVlIHByb2NlZHVyZSBmcm9tIHY4LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODY2NDAKKworICAgICAgICBUaGUgaWRlYSBpcyB0byByZWR1Y2Ug
dHJhbnNmZXIgc2l6ZSBhbmQgbW92ZSBhbGwgdGhlIHBvc3QtcHJvY2Vzc2luZyBzdGVwcyB0byB0
aGUgZnJvbnQtZW5kLgorICAgICAgICBUaGUgSlMgaW1wbGVtZW50YXRpb24gaXMgfjEuNSB0aW1l
cyBzbG93ZXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cyBhbmQgcGVyZm9ybWFuY2UgdGVzdHMuCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC5odG1sOgorCiAyMDEyLTA1LTE2ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQu
IEZpeCBoZWFwIHByb2ZpbGVyIHBlcmZvcm1hbmNlIHRlc3QgYWZ0ZXIgcjExNzIzNC4KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2hlYXAtc25hcHNob3QuaHRtbCBiL1Bl
cmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2hlYXAtc25hcHNob3QuaHRtbAppbmRleCA5Y2UzMWVi
ZmMwMWU2Y2U5ZjlkN2ZmMDQ1NDZkMWYxMDdmNDE0Yjk2Li41ZDIwMWZiMGVjNmIzODJjYmM3Nzlm
MjI1N2VjMWUyYWQxYWZkNzQ0IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rv
ci9oZWFwLXNuYXBzaG90Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVh
cC1zbmFwc2hvdC5odG1sCkBAIC0yOSw2ICsyOSw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdC5wcm90b3R5cGUsICJfbWFya0RldGFjaGVkRE9NVHJlZU5vZGVzIik7CiAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
LnByb3RvdHlwZSwgIl9tYXJrUXVlcmlhYmxlSGVhcE9iamVjdHMiKTsKICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJv
dG90eXBlLCAiX3NwbGl0Tm9kZXNBbmRDb250YWlubWVudEVkZ2VzIik7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnBy
b3RvdHlwZSwgIl9idWlsZFBvc3RPcmRlckluZGV4Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwg
Il9idWlsZERvbWluYXRvclRyZWUiKTsKIAogICAgICAgICAgICAgdGltZXIuZmluaXNoKGJhY2tl
bmRUaW1lckNvb2tpZSk7CiAgICAgICAgICAgICB0cmFuc2ZlclRpbWVyQ29va2llID0gdGltZXIu
c3RhcnQoInRyYW5zZmVyLXNuYXBzaG90Iik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142443</attachid>
            <date>2012-05-17 01:46:17 -0700</date>
            <delta_ts>2012-05-18 04:36:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86640-20120517124615.patch</filename>
            <type>text/plain</type>
            <size>18279</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDc4ZjM0ZDVmZmMxOGQ2
YjAwNmYyODQ4Y2Q1OTNjNWJjOGVlYzk5ZS4uZDRjMGRmMzQ3NDE5YzBjMThlOTkzYWQzNmIwNGEx
YTc4YzhiMDY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA1LTE2ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiB1cHN0cmVhbSBidWlsZCBkb21pbmF0b3JzIHRyZWUgcHJvY2VkdXJlIGZyb20gdjguCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjY0MAorCisg
ICAgICAgIFRoZSBpZGVhIGlzIHRvIHJlZHVjZSB0cmFuc2ZlciBzaXplIGFuZCBtb3ZlIGFsbCB0
aGUgcG9zdC1wcm9jZXNzaW5nIHN0ZXBzIHRvIHRoZSBmcm9udC1lbmQuCisgICAgICAgIFRoZSBK
UyBpbXBsZW1lbnRhdGlvbiBpcyB+MS41IHRpbWVzIHNsb3dlci4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3Rz
IGFuZCBwZXJmb3JtYW5jZSB0ZXN0cy4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
SGVhcFNuYXBzaG90LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90
b3R5cGUuX2luaXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5
cGUuX2J1aWxkUG9zdE9yZGVySW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdC5wcm90b3R5cGUuX2J1aWxkRG9taW5hdG9yVHJlZS5idWlsZERvbWluYXRvckluZGV4ZXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX2J1aWxkRG9t
aW5hdG9yVHJlZSk6CisKIDIwMTItMDUtMTcgIFByYXZpbiBEICA8cHJhdmluZC4yazRAZ21haWwu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxMTYzMzEpOiBSU1MgSGVhZGxpbmVzL2xpbmtz
IGFyZSBtaXNzaW5nICgtd2Via2l0LWJveC1mbGV4IGJyb2tlbj8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCmluZGV4IGUzMjI2MDQ3
MzU4NzUwOTJhMDMwNzdiNDU5ODg4MTUyNTYyMWE2MjQuLmVhMDNmYjBjYzY1ZGIyM2Y2NWIxNzI2
ZjI3ZjAzODYwN2Y0MjViOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCkBAIC03MTksNiArNzE5LDggQEAgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9idWlsZERvbWlu
YXRlZE5vZGVzKCkKICAgICAgICAgdGhpcy5fY2FsY3VsYXRlRmxhZ3MoKTsKICAgICAgICAgdGhp
cy5fY2FsY3VsYXRlT2JqZWN0VG9XaW5kb3dEaXN0YW5jZSgpOworICAgICAgICB2YXIgcmVzdWx0
ID0gdGhpcy5fYnVpbGRQb3N0T3JkZXJJbmRleCgpOworICAgICAgICB0aGlzLl9kb21pbmF0b3Jz
VHJlZSA9IHRoaXMuX2J1aWxkRG9taW5hdG9yVHJlZShyZXN1bHQucG9zdE9yZGVySW5kZXgyTm9k
ZUluZGV4LCByZXN1bHQubm9kZU9yZGluYWwyUG9zdE9yZGVySW5kZXgpOwogICAgIH0sCiAKICAg
ICBfYnVpbGRSZXRhaW5lcnM6IGZ1bmN0aW9uKCkKQEAgLTEwNjMsNiArMTA2NSwxNzIgQEAgV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgfSk7
CiAgICAgfSwKIAorICAgIF9idWlsZFBvc3RPcmRlckluZGV4OiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB2YXIgbm9kZUZpZWxkQ291bnQgPSB0aGlzLl9ub2RlRmllbGRDb3VudDsKKyAgICAg
ICAgdmFyIG5vZGVzID0gdGhpcy5fbm9kZXM7CisgICAgICAgIHZhciBub2RlQ291bnQgPSB0aGlz
Lm5vZGVDb3VudDsKKyAgICAgICAgdmFyIHJvb3ROb2RlSW5kZXggPSB0aGlzLl9yb290Tm9kZUlu
ZGV4OworCisgICAgICAgIHZhciBlZGdlRmllbGRzQ291bnQgPSB0aGlzLl9lZGdlRmllbGRzQ291
bnQ7CisgICAgICAgIHZhciBlZGdlVG9Ob2RlT2Zmc2V0ID0gdGhpcy5fZWRnZVRvTm9kZU9mZnNl
dDsKKyAgICAgICAgdmFyIGVkZ2VUeXBlT2Zmc2V0ID0gdGhpcy5fZWRnZVR5cGVPZmZzZXQ7Cisg
ICAgICAgIHZhciBrU2hvcnRjdXQgPSB0aGlzLl9lZGdlU2hvcnRjdXRUeXBlOworICAgICAgICB2
YXIgZmlyc3RFZGdlSW5kZXhPZmZzZXQgPSB0aGlzLl9maXJzdEVkZ2VJbmRleE9mZnNldDsKKyAg
ICAgICAgdmFyIGNvbnRhaW5tZW50RWRnZXMgPSB0aGlzLl9jb250YWlubWVudEVkZ2VzOworICAg
ICAgICB2YXIgY29udGFpbm1lbnRFZGdlc0xlbmd0aCA9IHRoaXMuX2NvbnRhaW5tZW50RWRnZXMu
bGVuZ3RoOworCisgICAgICAgIHZhciBub2Rlc1RvVmlzaXQgPSBuZXcgVWludDMyQXJyYXkobm9k
ZUNvdW50KTsKKyAgICAgICAgdmFyIHBvc3RPcmRlckluZGV4Mk5vZGVJbmRleCA9IG5ldyBVaW50
MzJBcnJheShub2RlQ291bnQpOworICAgICAgICB2YXIgbm9kZU9yZGluYWwyUG9zdE9yZGVySW5k
ZXggPSBuZXcgVWludDMyQXJyYXkobm9kZUNvdW50KTsKKyAgICAgICAgdmFyIHBhaW50ZWQgPSBu
ZXcgVWludDhBcnJheShub2RlQ291bnQpOworICAgICAgICB2YXIgbm9kZXNUb1Zpc2l0TGVuZ3Ro
ID0gMDsKKyAgICAgICAgdmFyIHBvc3RPcmRlckluZGV4ID0gMDsKKyAgICAgICAgbm9kZXNUb1Zp
c2l0W25vZGVzVG9WaXNpdExlbmd0aCsrXSA9IHRoaXMuX3Jvb3ROb2RlSW5kZXg7CisgICAgICAg
IHBhaW50ZWRbdGhpcy5fcm9vdE5vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50XSA9IDE7CisgICAg
ICAgIHdoaWxlIChub2Rlc1RvVmlzaXRMZW5ndGgpIHsKKyAgICAgICAgICAgIHZhciBub2RlSW5k
ZXggPSBub2Rlc1RvVmlzaXRbbm9kZXNUb1Zpc2l0TGVuZ3RoIC0gMV07CisgICAgICAgICAgICB2
YXIgbm9kZU9yZGluYWwgPSBub2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsKKyAgICAgICAgICAg
IGlmIChwYWludGVkW25vZGVPcmRpbmFsXSA9PT0gMSkgeworICAgICAgICAgICAgICAgIHBhaW50
ZWRbbm9kZU9yZGluYWxdID0gMjsKKyAgICAgICAgICAgICAgICB2YXIgYmVnaW5FZGdlSW5kZXgg
PSBub2Rlc1tub2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldF07CisgICAgICAgICAgICAg
ICAgdmFyIGVuZEVkZ2VJbmRleCA9ICBub2RlT3JkaW5hbCA8IG5vZGVDb3VudCAtIDEgPyBub2Rl
c1tub2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldCArIG5vZGVGaWVsZENvdW50XSA6IGNv
bnRhaW5tZW50RWRnZXNMZW5ndGg7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgZWRnZUluZGV4
ID0gYmVnaW5FZGdlSW5kZXg7IGVkZ2VJbmRleCA8IGVuZEVkZ2VJbmRleDsgZWRnZUluZGV4ICs9
IGVkZ2VGaWVsZHNDb3VudCkgeworICAgICAgICAgICAgICAgICAgICBpZiAobm9kZUluZGV4ICE9
IHJvb3ROb2RlSW5kZXggJiYgY29udGFpbm1lbnRFZGdlc1tlZGdlSW5kZXggKyBlZGdlVG9Ob2Rl
T2Zmc2V0XSA9PT0ga1Nob3J0Y3V0KQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVJbmRleCA9ICBjb250YWlubWVudEVk
Z2VzW2VkZ2VJbmRleCArIGVkZ2VUb05vZGVPZmZzZXRdOworICAgICAgICAgICAgICAgICAgICB2
YXIgY2hpbGROb2RlT3JkaW5hbCA9IGNoaWxkTm9kZUluZGV4IC8gbm9kZUZpZWxkQ291bnQ7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghcGFpbnRlZFtjaGlsZE5vZGVPcmRpbmFsXSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcGFpbnRlZFtjaGlsZE5vZGVPcmRpbmFsXSA9IDE7CisgICAg
ICAgICAgICAgICAgICAgICAgICBub2Rlc1RvVmlzaXRbbm9kZXNUb1Zpc2l0TGVuZ3RoKytdID0g
Y2hpbGROb2RlSW5kZXg7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG5vZGVPcmRpbmFsMlBvc3RP
cmRlckluZGV4W25vZGVPcmRpbmFsXSA9IHBvc3RPcmRlckluZGV4OworICAgICAgICAgICAgICAg
IHBvc3RPcmRlckluZGV4Mk5vZGVJbmRleFtwb3N0T3JkZXJJbmRleCsrXSA9IG5vZGVJbmRleDsK
KyAgICAgICAgICAgICAgICAtLW5vZGVzVG9WaXNpdExlbmd0aDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4ge3Bvc3RPcmRlckluZGV4Mk5vZGVJbmRleDogcG9zdE9y
ZGVySW5kZXgyTm9kZUluZGV4LCBub2RlT3JkaW5hbDJQb3N0T3JkZXJJbmRleDogbm9kZU9yZGlu
YWwyUG9zdE9yZGVySW5kZXh9OworICAgIH0sCisKKyAgICAvLyBUaGUgYWxnb3JpdGhtIGlzIGJh
c2VkIG9uIHRoZSBhcnRpY2xlOgorICAgIC8vIEsuIENvb3BlciwgVC4gSGFydmV5IGFuZCBLLiBL
ZW5uZWR5ICJBIFNpbXBsZSwgRmFzdCBEb21pbmFuY2UgQWxnb3JpdGhtIgorICAgIC8vIFNvZnR3
LiBQcmFjdC4gRXhwZXIuIDQgKDIwMDEpLCBwcC4gMS0xMC4KKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge0FycmF5LjxudW1iZXI+fSBwb3N0T3JkZXJJbmRleDJOb2RlSW5kZXgKKyAgICAgKiBAcGFy
YW0ge0FycmF5LjxudW1iZXI+fSBub2RlT3JkaW5hbDJQb3N0T3JkZXJJbmRleAorICAgICAqLwor
ICAgIF9idWlsZERvbWluYXRvclRyZWU6IGZ1bmN0aW9uKHBvc3RPcmRlckluZGV4Mk5vZGVJbmRl
eCwgbm9kZU9yZGluYWwyUG9zdE9yZGVySW5kZXgpCisgICAgeworICAgICAgICB2YXIgbm9kZUZp
ZWxkQ291bnQgPSB0aGlzLl9ub2RlRmllbGRDb3VudDsKKyAgICAgICAgdmFyIG5vZGVzID0gdGhp
cy5fbm9kZXM7CisgICAgICAgIHZhciBmaXJzdFJldGFpbmVySW5kZXggPSB0aGlzLl9maXJzdFJl
dGFpbmVySW5kZXg7CisgICAgICAgIHZhciByZXRhaW5pbmdOb2RlcyA9IHRoaXMuX3JldGFpbmlu
Z05vZGVzOworICAgICAgICB2YXIgcmV0YWluaW5nRWRnZXMgPSB0aGlzLl9yZXRhaW5pbmdFZGdl
czsKKyAgICAgICAgdmFyIGVkZ2VGaWVsZHNDb3VudCA9IHRoaXMuX2VkZ2VGaWVsZHNDb3VudDsK
KyAgICAgICAgdmFyIGVkZ2VUb05vZGVPZmZzZXQgPSB0aGlzLl9lZGdlVG9Ob2RlT2Zmc2V0Owor
ICAgICAgICB2YXIgZWRnZVR5cGVPZmZzZXQgPSB0aGlzLl9lZGdlVHlwZU9mZnNldDsKKyAgICAg
ICAgdmFyIGtTaG9ydGN1dCA9IHRoaXMuX2VkZ2VTaG9ydGN1dFR5cGU7CisgICAgICAgIHZhciBm
aXJzdEVkZ2VJbmRleE9mZnNldCA9IHRoaXMuX2ZpcnN0RWRnZUluZGV4T2Zmc2V0OworICAgICAg
ICB2YXIgY29udGFpbm1lbnRFZGdlcyA9IHRoaXMuX2NvbnRhaW5tZW50RWRnZXM7CisgICAgICAg
IHZhciBjb250YWlubWVudEVkZ2VzTGVuZ3RoID0gdGhpcy5fY29udGFpbm1lbnRFZGdlcy5sZW5n
dGg7CisgICAgICAgIHZhciByb290Tm9kZUluZGV4ID0gdGhpcy5fcm9vdE5vZGVJbmRleDsKKwor
ICAgICAgICB2YXIgbm9kZXNDb3VudCA9IHBvc3RPcmRlckluZGV4Mk5vZGVJbmRleC5sZW5ndGg7
CisgICAgICAgIHZhciByb290UG9zdE9yZGVyZWRJbmRleCA9IG5vZGVzQ291bnQgLSAxOworICAg
ICAgICB2YXIga05vRW50cnkgPSBub2Rlc0NvdW50OworICAgICAgICB2YXIgZG9taW5hdG9ycyA9
IG5ldyBVaW50MzJBcnJheShub2Rlc0NvdW50KTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCByb290UG9zdE9yZGVyZWRJbmRleDsgKytpKQorICAgICAgICAgICAgZG9taW5hdG9yc1tpXSA9
IGtOb0VudHJ5OworICAgICAgICBkb21pbmF0b3JzW3Jvb3RQb3N0T3JkZXJlZEluZGV4XSA9IHJv
b3RQb3N0T3JkZXJlZEluZGV4OworCisgICAgICAgIC8vIFRoZSBhZmZlY3RlZCBhcnJheSBpcyB1
c2VkIHRvIG1hcmsgZW50cmllcyB3aGljaCBkb21pbmF0b3JzCisgICAgICAgIC8vIGhhdmUgdG8g
YmUgcmFjYWxjdWxhdGVkIGJlY2F1c2Ugb2YgY2hhbmdlcyBpbiB0aGVpciByZXRhaW5lcnMuCisg
ICAgICAgIHZhciBhZmZlY3RlZCA9IG5ldyBVaW50OEFycmF5KG5vZGVzQ291bnQpOworCisgICAg
ICAgIC8vIE1hcmsgdGhlIHJvb3QgZGlyZWN0IGNoaWxkcmVuIGFzIGFmZmVjdGVkLgorICAgICAg
ICB7Ly8gbWFudWFsbHkgaW5saW5lZCBkdWUgdG8gaW5saW5lIHNvdXJjZSBzaXplIGxpbWl0Lgor
ICAgICAgICAgICAgdmFyIG5vZGVJbmRleCA9IHRoaXMuX3Jvb3ROb2RlSW5kZXg7CisgICAgICAg
ICAgICB2YXIgYmVnaW5FZGdlVG9Ob2RlRmllbGRJbmRleCA9IG5vZGVzW25vZGVJbmRleCArIGZp
cnN0RWRnZUluZGV4T2Zmc2V0XSArIGVkZ2VUb05vZGVPZmZzZXQ7CisgICAgICAgICAgICB2YXIg
ZW5kRWRnZVRvTm9kZUZpZWxkSW5kZXggPSBub2Rlc1tub2RlSW5kZXggKyBub2RlRmllbGRDb3Vu
dCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0XTsKKyAgICAgICAgICAgIGZvciAodmFyIHRvTm9kZUZp
ZWxkSW5kZXggPSBiZWdpbkVkZ2VUb05vZGVGaWVsZEluZGV4OworICAgICAgICAgICAgICAgICB0
b05vZGVGaWVsZEluZGV4IDwgZW5kRWRnZVRvTm9kZUZpZWxkSW5kZXg7CisgICAgICAgICAgICAg
ICAgIHRvTm9kZUZpZWxkSW5kZXggKz0gZWRnZUZpZWxkc0NvdW50KSB7CisgICAgICAgICAgICAg
ICAgdmFyIGNoaWxkTm9kZU9yZGluYWwgPSBjb250YWlubWVudEVkZ2VzW3RvTm9kZUZpZWxkSW5k
ZXhdIC8gbm9kZUZpZWxkQ291bnQ7CisgICAgICAgICAgICAgICAgYWZmZWN0ZWRbbm9kZU9yZGlu
YWwyUG9zdE9yZGVySW5kZXhbY2hpbGROb2RlT3JkaW5hbF1dID0gMTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIHZhciBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgd2hpbGUg
KGNoYW5nZWQpIHsKKyAgICAgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGZv
ciAodmFyIHBvc3RPcmRlckluZGV4ID0gcm9vdFBvc3RPcmRlcmVkSW5kZXggLSAxOyBwb3N0T3Jk
ZXJJbmRleCA+PSAwOyAtLXBvc3RPcmRlckluZGV4KSB7CisgICAgICAgICAgICAgICAgaWYgKGFm
ZmVjdGVkW3Bvc3RPcmRlckluZGV4XSA9PT0gMCkKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgYWZmZWN0ZWRbcG9zdE9yZGVySW5kZXhdID0gMDsKKyAgICAg
ICAgICAgICAgICB2YXIgbm9kZU9yZGluYWwgPSBwb3N0T3JkZXJJbmRleDJOb2RlSW5kZXhbcG9z
dE9yZGVySW5kZXhdIC8gbm9kZUZpZWxkQ291bnQ7CisgICAgICAgICAgICAgICAgLy8gSWYgZG9t
aW5hdG9yIG9mIHRoZSBlbnRyeSBoYXMgYWxyZWFkeSBiZWVuIHNldCB0byByb290LAorICAgICAg
ICAgICAgICAgIC8vIHRoZW4gaXQgY2FuJ3QgcHJvcGFnYXRlIGFueSBmdXJ0aGVyLgorICAgICAg
ICAgICAgICAgIGlmIChkb21pbmF0b3JzW3Bvc3RPcmRlckluZGV4XSA9PT0gcm9vdFBvc3RPcmRl
cmVkSW5kZXgpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg
IHZhciBuZXdEb21pbmF0b3JJbmRleCA9IGtOb0VudHJ5OworICAgICAgICAgICAgICAgIHZhciBi
ZWdpblJldGFpbmVySW5kZXggPSBmaXJzdFJldGFpbmVySW5kZXhbbm9kZU9yZGluYWxdOworICAg
ICAgICAgICAgICAgIHZhciBlbmRSZXRhaW5lckluZGV4ID0gZmlyc3RSZXRhaW5lckluZGV4W25v
ZGVPcmRpbmFsICsgMV07CisgICAgICAgICAgICAgICAgZm9yICh2YXIgcmV0YWluZXJJbmRleCA9
IGJlZ2luUmV0YWluZXJJbmRleDsgcmV0YWluZXJJbmRleCA8IGVuZFJldGFpbmVySW5kZXg7ICsr
cmV0YWluZXJJbmRleCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgcmV0YWluZXJFZGdlSW5k
ZXggPSByZXRhaW5pbmdFZGdlc1tyZXRhaW5lckluZGV4XTsKKyAgICAgICAgICAgICAgICAgICAg
dmFyIHJldGFpbmVyRWRnZVR5cGUgPSBjb250YWlubWVudEVkZ2VzW3JldGFpbmVyRWRnZUluZGV4
ICsgZWRnZVR5cGVPZmZzZXRdOworICAgICAgICAgICAgICAgICAgICB2YXIgcmV0YWluZXJOb2Rl
SW5kZXggPSByZXRhaW5pbmdOb2Rlc1tyZXRhaW5lckluZGV4XTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHJldGFpbmVyTm9kZUluZGV4ICE9PSByb290Tm9kZUluZGV4ICYmIHJldGFpbmVyRWRn
ZVR5cGUgPT09IGtTaG9ydGN1dCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgICAgICB2YXIgcmV0YWluZXJOb2RlT3JkaW5hbCA9IHJldGFpbmVyTm9k
ZUluZGV4IC8gbm9kZUZpZWxkQ291bnQ7CisgICAgICAgICAgICAgICAgICAgIHZhciByZXRhbmVy
UG9zdE9yZGVySW5kZXggPSBub2RlT3JkaW5hbDJQb3N0T3JkZXJJbmRleFtyZXRhaW5lck5vZGVP
cmRpbmFsXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRvbWluYXRvcnNbcmV0YW5lclBvc3RP
cmRlckluZGV4XSAhPT0ga05vRW50cnkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChu
ZXdEb21pbmF0b3JJbmRleCA9PT0ga05vRW50cnkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3RG9taW5hdG9ySW5kZXggPSByZXRhbmVyUG9zdE9yZGVySW5kZXg7CisgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAo
cmV0YW5lclBvc3RPcmRlckluZGV4ICE9PSBuZXdEb21pbmF0b3JJbmRleCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocmV0YW5lclBvc3RPcmRlckluZGV4IDwgbmV3
RG9taW5hdG9ySW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRh
bmVyUG9zdE9yZGVySW5kZXggPSBkb21pbmF0b3JzW3JldGFuZXJQb3N0T3JkZXJJbmRleF07Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChuZXdEb21pbmF0b3JJbmRleCA8
IHJldGFuZXJQb3N0T3JkZXJJbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5ld0RvbWluYXRvckluZGV4ID0gZG9taW5hdG9yc1tuZXdEb21pbmF0b3JJbmRleF07Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgaWRvbSBoYXMgYWxyZWFkeSByZWFjaGVkIHRo
ZSByb290LCBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHRvIGNoZWNrIG90aGVyIHJldGFpbmVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChu
ZXdEb21pbmF0b3JJbmRleCA9PT0gcm9vdFBvc3RPcmRlcmVkSW5kZXgpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG5ld0RvbWluYXRvckluZGV4ICE9PSBrTm9FbnRy
eSAmJiBkb21pbmF0b3JzW3Bvc3RPcmRlckluZGV4XSAhPT0gbmV3RG9taW5hdG9ySW5kZXgpIHsK
KyAgICAgICAgICAgICAgICAgICAgZG9taW5hdG9yc1twb3N0T3JkZXJJbmRleF0gPSBuZXdEb21p
bmF0b3JJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIHsgLy8gbWFudWFsbHkgaW5saW5lZCBkdWUgdG8gaW5saW5lIHNvdXJjZSBz
aXplIGxpbWl0LgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5vZGVJbmRleCA9IHBvc3RP
cmRlckluZGV4Mk5vZGVJbmRleFtwb3N0T3JkZXJJbmRleF07CisgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgbm9kZU9yZGluYWwgPSBub2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBiZWdpbkVkZ2VUb05vZGVGaWVsZEluZGV4ID0gbm9kZXNb
bm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXRdICsgZWRnZVRvTm9kZU9mZnNldDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBlbmRFZGdlVG9Ob2RlRmllbGRJbmRleCA9IG5vZGVP
cmRpbmFsIDwgbm9kZXNDb3VudCAtIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG5v
ZGVzW25vZGVJbmRleCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0ICsgbm9kZUZpZWxkQ291bnRdCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjb250YWlubWVudEVkZ2VzTGVuZ3RoOworICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdG9Ob2RlRmllbGRJbmRleCA9IGJlZ2luRWRn
ZVRvTm9kZUZpZWxkSW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvTm9kZUZp
ZWxkSW5kZXggPCBlbmRFZGdlVG9Ob2RlRmllbGRJbmRleDsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdG9Ob2RlRmllbGRJbmRleCArPSBlZGdlRmllbGRzQ291bnQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgY2hpbGROb2RlT3JkaW5hbCA9IGNvbnRhaW5tZW50RWRn
ZXNbdG9Ob2RlRmllbGRJbmRleF0gLyBub2RlRmllbGRDb3VudDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhZmZlY3RlZFtub2RlT3JkaW5hbDJQb3N0T3JkZXJJbmRleFtjaGlsZE5vZGVP
cmRpbmFsXV0gPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgdmFyIGRvbWluYXRvcnNUcmVlID0gbmV3IFVpbnQzMkFycmF5KG5vZGVzQ291bnQpOwor
ICAgICAgICBmb3IgKHZhciBwb3N0T3JkZXJJbmRleCA9IDAsIGwgPSBkb21pbmF0b3JzLmxlbmd0
aDsgcG9zdE9yZGVySW5kZXggPCBsOyArK3Bvc3RPcmRlckluZGV4KSB7CisgICAgICAgICAgICB2
YXIgbm9kZU9yZGluYWwgPSBwb3N0T3JkZXJJbmRleDJOb2RlSW5kZXhbcG9zdE9yZGVySW5kZXhd
IC8gbm9kZUZpZWxkQ291bnQ7CisgICAgICAgICAgICBkb21pbmF0b3JzVHJlZVtub2RlT3JkaW5h
bF0gPSBwb3N0T3JkZXJJbmRleDJOb2RlSW5kZXhbZG9taW5hdG9yc1twb3N0T3JkZXJJbmRleF1d
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBkb21pbmF0b3JzVHJlZTsKKyAgICB9LAorCiAg
ICAgX2J1aWxkRG9taW5hdGVkTm9kZXM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIC8vIEJ1
aWxkcyB1cCB0d28gYXJyYXlzOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhkNDNlMTE0NzFmZGU2Mzc4YzZiMzE1NzQwMzY4
NGEwNjc5MWEzYmYuLmY3NzJkYjEwN2VkYzRmYTZmMWFlN2JhZDIwOWQ4ZWEzOTRjNjc1ZTIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wNS0xNiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNs
b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogdXBzdHJlYW0gYnVpbGQg
ZG9taW5hdG9ycyB0cmVlIHByb2NlZHVyZSBmcm9tIHY4LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY2NDAKKworICAgICAgICBUaGUgaWRlYSBpcyB0
byByZWR1Y2UgdHJhbnNmZXIgc2l6ZSBhbmQgbW92ZSBhbGwgdGhlIHBvc3QtcHJvY2Vzc2luZyBz
dGVwcyB0byB0aGUgZnJvbnQtZW5kLgorICAgICAgICBUaGUgSlMgaW1wbGVtZW50YXRpb24gaXMg
fjEuNSB0aW1lcyBzbG93ZXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cyBhbmQgcGVyZm9ybWFuY2UgdGVz
dHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5q
czoKKyAgICAgICAgKGluaXRpYWxpemVfSGVhcFNuYXBzaG90VGVzdC5JbnNwZWN0b3JUZXN0LmNy
ZWF0ZUhlYXBTbmFwc2hvdE1vY2tSYXcpOgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9o
ZWFwLXNuYXBzaG90Lmh0bWw6CisKIDIwMTItMDUtMTcgIFByYXZpbiBEICA8cHJhdmluZC4yazRA
Z21haWwuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxMTYzMzEpOiBSU1MgSGVhZGxpbmVz
L2xpbmtzIGFyZSBtaXNzaW5nICgtd2Via2l0LWJveC1mbGV4IGJyb2tlbj8pCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBlY3Rl
ZC50eHQKaW5kZXggZDNkZTU2ODE2MGNiN2ZhNGE2OTIxN2Q1YmI1ZTlmMjE3NGU4YjBkNy4uODky
MzAwNzA0YmYxYTFhZWEwOWFmOWY3MzI0MjU5ODAwMDE2NmI3OSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWV4cGVjdGVkLnR4
dApAQCAtMTMsNiArMTMsMTAgQEAgUnVubmluZzogaGVhcFNuYXBzaG90Tm9kZUFuZEVkZ2VUZXN0
CiAKIFJ1bm5pbmc6IGhlYXBTbmFwc2hvdFNpbXBsZVRlc3QKIAorUnVubmluZzogaGVhcFNuYXBz
aG90UG9zdE9yZGVySW5kZXhUZXN0CisKK1J1bm5pbmc6IGhlYXBTbmFwc2hvdERvbWluYXRvcnNU
cmVlVGVzdAorCiBSdW5uaW5nOiBoZWFwU25hcHNob3RSZXRhaW5lcnNUZXN0CiAKIFJ1bm5pbmc6
IGhlYXBTbmFwc2hvdEFnZ3JlZ2F0ZXNUZXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcwppbmRleCA0N2RiYjk0YTk5MTA3MzRi
N2UxYWM3OWJlMjUzNTg3ZjZhYjliNmY4Li4yYWFmNzk5YjAwNGU1OWY1MmIyMjVjNGI4ZTcwZTIy
MjM2MzRhZTMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVh
cC1zbmFwc2hvdC10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9o
ZWFwLXNuYXBzaG90LXRlc3QuanMKQEAgLTY5LDE3ICs2OSwyNyBAQCBJbnNwZWN0b3JUZXN0LmNy
ZWF0ZUhlYXBTbmFwc2hvdE1vY2tSYXcgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICBub2RlX2Nv
dW50OiA2LAogICAgICAgICAgICAgZWRnZV9jb3VudDogN30sCiAgICAgICAgIG5vZGVzOiBbCi0g
ICAgICAgICAgICAwLCAwLCAxLCAwLCAyMCwgIDAsICAwLAotICAgICAgICAgICAgMSwgMSwgMiwg
MiwgIDIsICAwLCAgNiwKLSAgICAgICAgICAgIDEsIDIsIDMsIDMsICA4LCAgMCwgMTIsCi0gICAg
ICAgICAgICAxLCAzLCA0LCA0LCAxMCwgIDAsIDE4LAotICAgICAgICAgICAgMSwgNCwgNSwgNSwg
IDUsIDE0LCAyMSwKLSAgICAgICAgICAgIDEsIDUsIDYsIDYsICA2LCAyMSwgMjFdLAorICAgICAg
ICAgICAgMCwgMCwgMSwgMCwgMjAsICAwLCAgMCwgLy8gcm9vdCAoMCkKKyAgICAgICAgICAgIDEs
IDEsIDIsIDIsICAyLCAgMCwgIDYsIC8vIEEgKDcpCisgICAgICAgICAgICAxLCAyLCAzLCAzLCAg
OCwgIDAsIDEyLCAvLyBCICgxNCkKKyAgICAgICAgICAgIDEsIDMsIDQsIDQsIDEwLCAgMCwgMTgs
IC8vIEMgKDIxKQorICAgICAgICAgICAgMSwgNCwgNSwgNSwgIDUsIDE0LCAyMSwgLy8gRCAoMjgp
CisgICAgICAgICAgICAxLCA1LCA2LCA2LCAgNiwgMjEsIDIxXSwvLyBFICgzNSkKICAgICAgICAg
ZWRnZXM6IFsKLSAgICAgICAgICAgIDEsICA2LCAgNywgMSwgIDcsIDE0LAotICAgICAgICAgICAg
MCwgIDEsIDE0LCAxLCAgOCwgMjEsCi0gICAgICAgICAgICAxLCAgOSwgMjEsIDEsIDEwLCAyOCwK
LSAgICAgICAgICAgIDEsIDExLCAzNV0sCisgICAgICAgICAgICAvLyByb290IG5vZGUgZWRnZXMK
KyAgICAgICAgICAgIDEsICA2LCAgNywgLy8gcHJvcGVydHkgJ2EnIHRvIG5vZGUgJ0EnCisgICAg
ICAgICAgICAxLCAgNywgMTQsIC8vIHByb3BlcnR5ICdiJyB0byBub2RlICdCJworCisgICAgICAg
ICAgICAvLyBBIG5vZGUgZWRnZXMKKyAgICAgICAgICAgIDAsICAxLCAxNCwgLy8gZWxlbWVudCAx
IHRvIG5vZGUgJ0InCisgICAgICAgICAgICAxLCAgOCwgMjEsIC8vIHByb3BlcnR5ICdhYycgdG8g
bm9kZSAnQycKKworICAgICAgICAgICAgLy8gQiBub2RlIGVkZ2VzCisgICAgICAgICAgICAxLCAg
OSwgMjEsIC8vIHByb3BlcnR5ICdiYycgdG8gbm9kZSAnQycKKyAgICAgICAgICAgIDEsIDEwLCAy
OCwgLy8gcHJvcGVydHkgJ2JkJyB0byBub2RlICdEJworCisgICAgICAgICAgICAvLyBDIG5vZGUg
ZWRnZXMKKyAgICAgICAgICAgIDEsIDExLCAzNV0sIC8vIHByb3BlcnR5ICdjZScgdG8gbm9kZSAn
RScKICAgICAgICAgc3RyaW5nczogWyIiLCAiQSIsICJCIiwgIkMiLCAiRCIsICJFIiwgImEiLCAi
YiIsICJhYyIsICJiYyIsICJiZCIsICJjZSJdCiAgICAgfTsKIH07CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRtbAppbmRleCA0NGIyOTNkZGJm
YTI2MzE2YzgxNDMwZDRkZTBkYmRjZTBiZjQwNTRhLi40ZTM1ODNmMzFkZWQ3MmY3ZDNlZjUxMGE1
NDQ3NGVjZjMxOGUyMGQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmls
ZXIvaGVhcC1zbmFwc2hvdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxl
ci9oZWFwLXNuYXBzaG90Lmh0bWwKQEAgLTk1LDYgKzk1LDI3IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICB9LAogCisgICAgICAgIGZ1bmN0aW9uIGhlYXBT
bmFwc2hvdFBvc3RPcmRlckluZGV4VGVzdChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgc25hcHNob3QgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdChJbnNwZWN0b3JUZXN0
LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2soKSk7CisgICAgICAgICAgICB2YXIgcG9zdE9yZGVySW5k
ZXggPSBzbmFwc2hvdC5fYnVpbGRQb3N0T3JkZXJJbmRleCgpLnBvc3RPcmRlckluZGV4Mk5vZGVJ
bmRleDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZCA9IFsyOCwzNSwyMSwxNCw3LDBdOworICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZC5sZW5ndGg7ICsraSkKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhleHBlY3RlZFtpXSwgcG9zdE9y
ZGVySW5kZXhbaV0sICJQb3N0IG9yZGVyZWQgaW5kZXhlcyIpOworICAgICAgICAgICAgbmV4dCgp
OworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIGhlYXBTbmFwc2hvdERvbWluYXRvcnNU
cmVlVGVzdChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgc25hcHNob3QgPSBuZXcg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdChJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hv
dE1vY2soKSk7CisgICAgICAgICAgICB2YXIgcmVzdWx0ID0gc25hcHNob3QuX2J1aWxkUG9zdE9y
ZGVySW5kZXgoKTsKKyAgICAgICAgICAgIHZhciBkb21pbmF0b3JzVHJlZSA9IHNuYXBzaG90Ll9i
dWlsZERvbWluYXRvclRyZWUocmVzdWx0LnBvc3RPcmRlckluZGV4Mk5vZGVJbmRleCwgcmVzdWx0
Lm5vZGVPcmRpbmFsMlBvc3RPcmRlckluZGV4KTsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZCA9
IFswLCAwLCAwLCAwLCAxNCwgMjFdOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBl
eHBlY3RlZC5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dEVxdWFscyhleHBlY3RlZFtpXSwgZG9taW5hdG9yc1RyZWVbaV0sICJEb21pbmF0b3JzIFRyZWUi
KTsKKyAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgfSwKKwogICAgICAgICBmdW5jdGlvbiBo
ZWFwU25hcHNob3RSZXRhaW5lcnNUZXN0KG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHZh
ciBzbmFwc2hvdCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90KEluc3BlY3RvclRlc3Qu
Y3JlYXRlSGVhcFNuYXBzaG90TW9jaygpKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
Q2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODgyM2FhZWRkNmE0
ZDZlMDFkOWZjNDIxMWNmYjAwYjViNzIzZWIxNC4uNWIwYTFhM2ExMjViOWE1ZDdiOTIzZTc4NGYx
OTNjZmI0OWViNmU2YiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNS0x
NiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogdXBzdHJlYW0gYnVpbGQgZG9taW5hdG9ycyB0cmVlIHByb2NlZHVyZSBmcm9t
IHY4LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY2
NDAKKworICAgICAgICBUaGUgaWRlYSBpcyB0byByZWR1Y2UgdHJhbnNmZXIgc2l6ZSBhbmQgbW92
ZSBhbGwgdGhlIHBvc3QtcHJvY2Vzc2luZyBzdGVwcyB0byB0aGUgZnJvbnQtZW5kLgorICAgICAg
ICBUaGUgSlMgaW1wbGVtZW50YXRpb24gaXMgfjEuNSB0aW1lcyBzbG93ZXIuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cyBhbmQgcGVyZm9ybWFuY2UgdGVzdHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvaGVh
cC1zbmFwc2hvdC5odG1sOgorCiAyMDEyLTA1LTE2ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbUGVyZm9ybWFuY2UgdGVzdF0gU3VwcG9ydCAiZGVzY3Jp
cHRpb24iIGZvciBQZXJmVGVzdFJ1bm5lci5ydW4gYW5kIFBlcmZUZXN0UnVubmVyLnJ1blBlclNl
Y29uZApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hv
dC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC5odG1sCmlu
ZGV4IDljZTMxZWJmYzAxZTZjZTlmOWQ3ZmYwNDU0NmQxZjEwN2Y0MTRiOTYuLjVkMjAxZmIwZWM2
YjM4MmNiYzc3OWYyMjU3ZWMxZTJhZDFhZmQ3NDQgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvaW5zcGVjdG9yL2hlYXAtc25hcHNob3QuaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL2lu
c3BlY3Rvci9oZWFwLXNuYXBzaG90Lmh0bWwKQEAgLTI5LDYgKzI5LDggQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9tYXJrRGV0YWNoZWRET01UcmVlTm9kZXMiKTsK
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3QucHJvdG90eXBlLCAiX21hcmtRdWVyaWFibGVIZWFwT2JqZWN0cyIpOwogICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdC5wcm90b3R5cGUsICJfc3BsaXROb2Rlc0FuZENvbnRhaW5tZW50RWRnZXMiKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3QucHJvdG90eXBlLCAiX2J1aWxkUG9zdE9yZGVySW5kZXgiKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qu
cHJvdG90eXBlLCAiX2J1aWxkRG9taW5hdG9yVHJlZSIpOwogCiAgICAgICAgICAgICB0aW1lci5m
aW5pc2goYmFja2VuZFRpbWVyQ29va2llKTsKICAgICAgICAgICAgIHRyYW5zZmVyVGltZXJDb29r
aWUgPSB0aW1lci5zdGFydCgidHJhbnNmZXItc25hcHNob3QiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142685</attachid>
            <date>2012-05-18 04:36:52 -0700</date>
            <delta_ts>2012-05-18 06:50:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86640-20120518153651.patch</filename>
            <type>text/plain</type>
            <size>24048</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjJjNTkwMGJhZTk4MzA0
ZmQwMjI1YzcxNWRiZWJmZWY5NjU4OTgzNi4uYThlYTJlYWJhMzM4MjYzYWNjZmYzOGU0YmE4MDY3
NDdhNThmMWJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA1LTE2ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiB1cHN0cmVhbSBidWlsZCBkb21pbmF0b3JzIHRyZWUgcHJvY2VkdXJlIGZyb20gdjguCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjY0MAorCisg
ICAgICAgIFRoZSBpZGVhIGlzIHRvIHJlZHVjZSB0cmFuc2ZlciBzaXplIGFuZCBtb3ZlIGFsbCB0
aGUgcG9zdC1wcm9jZXNzaW5nIHN0ZXBzIHRvIHRoZSBmcm9udC1lbmQuCisgICAgICAgIFRoZSBK
UyBpbXBsZW1lbnRhdGlvbiBpcyB+MS41IHRpbWVzIHNsb3dlci4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3Rz
IGFuZCBwZXJmb3JtYW5jZSB0ZXN0cy4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
SGVhcFNuYXBzaG90LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90
b3R5cGUuX2luaXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5
cGUuX2J1aWxkUG9zdE9yZGVySW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdC5wcm90b3R5cGUuX2J1aWxkRG9taW5hdG9yVHJlZS5idWlsZERvbWluYXRvckluZGV4ZXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX2J1aWxkRG9t
aW5hdG9yVHJlZSk6CisKIDIwMTItMDUtMTcgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtWOF1bUmVmYWN0b3JpbmddIFJlbW92ZSBWOFByb3h5OjpkZWxl
dGlvbk5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKaW5kZXggMzAxYzc4MmExZTM2OTk0NDVj
ZTQ1M2NlOTM0Yzk0ZTM1NmZiYTMzMy4uYzU2ZmI2MjNhOTdmMjFlYmVkMzlmMDYzMTIxZTY2NDgw
MTdiZjkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9I
ZWFwU25hcHNob3QuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9I
ZWFwU25hcHNob3QuanMKQEAgLTcwOCw2ICs3MDgsMTAgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX25vZGVGbGFncyA9IHsgLy8gYml0IGZs
YWdzCiAgICAgICAgICAgICBjYW5CZVF1ZXJpZWQ6IDEsCiAgICAgICAgICAgICBkZXRhY2hlZERP
TVRyZWVOb2RlOiAyLAorICAgICAgICAgICAgdXNlZEZvckRvbWluYXRvcnM6IDQsCisKKyAgICAg
ICAgICAgIHZpc2l0ZWRNYXJrZXJNYXNrOiA2NTUzNSwgLy8gYml0czogMCwxMTExLDExMTEsMTEx
MSwxMTExCisgICAgICAgICAgICB2aXNpdGVkTWFya2VyOiA2NTUzNiAgICAgIC8vIGJpdHM6IDEs
MDAwMCwwMDAwLDAwMDAsMDAwMAogICAgICAgICB9OwogCiAgICAgICAgIHRoaXMubm9kZUNvdW50
ID0gdGhpcy5fbm9kZXMubGVuZ3RoIC8gdGhpcy5fbm9kZUZpZWxkQ291bnQ7CkBAIC03MTksNiAr
NzIzLDggQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB0aGlzLl9idWlsZERvbWluYXRlZE5vZGVzKCkKICAgICAgICAgdGhpcy5fY2FsY3VsYXRl
RmxhZ3MoKTsKICAgICAgICAgdGhpcy5fY2FsY3VsYXRlT2JqZWN0VG9XaW5kb3dEaXN0YW5jZSgp
OworICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fYnVpbGRQb3N0T3JkZXJJbmRleCgpOworICAg
ICAgICB0aGlzLl9kb21pbmF0b3JzVHJlZSA9IHRoaXMuX2J1aWxkRG9taW5hdG9yVHJlZShyZXN1
bHQucG9zdE9yZGVySW5kZXgyTm9kZUluZGV4LCByZXN1bHQubm9kZU9yZGluYWwyUG9zdE9yZGVy
SW5kZXgpOwogICAgIH0sCiAKICAgICBfYnVpbGRSZXRhaW5lcnM6IGZ1bmN0aW9uKCkKQEAgLTk1
OSwxNCArOTY1LDE0IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewog
ICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKICAgICAgICAgdmFyIG5vZGVzTGVuZ3Ro
ID0gbm9kZXMubGVuZ3RoOwogICAgICAgICB2YXIgbm9kZU5hdGl2ZVR5cGUgPSB0aGlzLl9ub2Rl
TmF0aXZlVHlwZTsKLSAgICAgICAgdmFyIG5vZGVGaWVsZHNDb3VudCA9IHRoaXMuX25vZGVGaWVs
ZENvdW50OworICAgICAgICB2YXIgbm9kZUZpZWxkQ291bnQgPSB0aGlzLl9ub2RlRmllbGRDb3Vu
dDsKICAgICAgICAgdmFyIHNlbGZTaXplT2Zmc2V0ID0gdGhpcy5fbm9kZVNlbGZTaXplT2Zmc2V0
OwogICAgICAgICB2YXIgbm9kZVR5cGVPZmZzZXQgPSB0aGlzLl9ub2RlVHlwZU9mZnNldDsKICAg
ICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUodGhpcywg
dGhpcy5fcm9vdE5vZGVJbmRleCk7CiAgICAgICAgIHZhciBkaXN0YW5jZXNUb1dpbmRvdyA9IHRo
aXMuX2Rpc3RhbmNlc1RvV2luZG93OwogCi0gICAgICAgIGZvciAodmFyIG5vZGVJbmRleCA9IHRo
aXMuX3Jvb3ROb2RlSW5kZXg7IG5vZGVJbmRleCA8IG5vZGVzTGVuZ3RoOyBub2RlSW5kZXggKz0g
bm9kZUZpZWxkc0NvdW50KSB7Ci0gICAgICAgICAgICB2YXIgbm9kZU9yZGluYWwgPSBub2RlSW5k
ZXggLyBub2RlRmllbGRzQ291bnQ7CisgICAgICAgIGZvciAodmFyIG5vZGVJbmRleCA9IHRoaXMu
X3Jvb3ROb2RlSW5kZXg7IG5vZGVJbmRleCA8IG5vZGVzTGVuZ3RoOyBub2RlSW5kZXggKz0gbm9k
ZUZpZWxkQ291bnQpIHsKKyAgICAgICAgICAgIHZhciBub2RlT3JkaW5hbCA9IG5vZGVJbmRleCAv
IG5vZGVGaWVsZENvdW50OwogICAgICAgICAgICAgbm9kZS5ub2RlSW5kZXggPSBub2RlSW5kZXg7
CiAgICAgICAgICAgICB2YXIgc2VsZlNpemUgPSBub2Rlc1tub2RlSW5kZXggKyBzZWxmU2l6ZU9m
ZnNldF07CiAgICAgICAgICAgICBpZiAoZmlsdGVyICYmICFmaWx0ZXIobm9kZSkpCkBAIC0xMDYz
LDYgKzEwNjksMTg4IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgICAgIH0pOwogICAgIH0sCiAKKyAgICBfYnVpbGRQb3N0T3JkZXJJbmRleDog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIG5vZGVGaWVsZENvdW50ID0gdGhpcy5fbm9k
ZUZpZWxkQ291bnQ7CisgICAgICAgIHZhciBub2RlcyA9IHRoaXMuX25vZGVzOworICAgICAgICB2
YXIgbm9kZUNvdW50ID0gdGhpcy5ub2RlQ291bnQ7CisgICAgICAgIHZhciByb290Tm9kZUluZGV4
ID0gdGhpcy5fcm9vdE5vZGVJbmRleDsKKworICAgICAgICB2YXIgZWRnZUZpZWxkc0NvdW50ID0g
dGhpcy5fZWRnZUZpZWxkc0NvdW50OworICAgICAgICB2YXIgZWRnZVRvTm9kZU9mZnNldCA9IHRo
aXMuX2VkZ2VUb05vZGVPZmZzZXQ7CisgICAgICAgIHZhciBlZGdlVHlwZU9mZnNldCA9IHRoaXMu
X2VkZ2VUeXBlT2Zmc2V0OworICAgICAgICB2YXIga1Nob3J0Y3V0ID0gdGhpcy5fZWRnZVNob3J0
Y3V0VHlwZTsKKyAgICAgICAgdmFyIGZpcnN0RWRnZUluZGV4T2Zmc2V0ID0gdGhpcy5fZmlyc3RF
ZGdlSW5kZXhPZmZzZXQ7CisgICAgICAgIHZhciBjb250YWlubWVudEVkZ2VzID0gdGhpcy5fY29u
dGFpbm1lbnRFZGdlczsKKyAgICAgICAgdmFyIGNvbnRhaW5tZW50RWRnZXNMZW5ndGggPSB0aGlz
Ll9jb250YWlubWVudEVkZ2VzLmxlbmd0aDsKKworICAgICAgICB2YXIgZmxhZ3MgPSB0aGlzLl9m
bGFnczsKKyAgICAgICAgdmFyIGZsYWcgPSB0aGlzLl9ub2RlRmxhZ3MudXNlZEZvckRvbWluYXRv
cnM7CisKKyAgICAgICAgdmFyIG5vZGVzVG9WaXNpdCA9IG5ldyBVaW50MzJBcnJheShub2RlQ291
bnQpOworICAgICAgICB2YXIgcG9zdE9yZGVySW5kZXgyTm9kZUluZGV4ID0gbmV3IFVpbnQzMkFy
cmF5KG5vZGVDb3VudCk7CisgICAgICAgIHZhciBub2RlT3JkaW5hbDJQb3N0T3JkZXJJbmRleCA9
IG5ldyBVaW50MzJBcnJheShub2RlQ291bnQpOworICAgICAgICB2YXIgcGFpbnRlZCA9IG5ldyBV
aW50OEFycmF5KG5vZGVDb3VudCk7CisgICAgICAgIHZhciBub2Rlc1RvVmlzaXRMZW5ndGggPSAw
OworICAgICAgICB2YXIgcG9zdE9yZGVySW5kZXggPSAwOworICAgICAgICB2YXIga0dyZXkgPSAx
OworICAgICAgICB2YXIga0JsYWNrID0gMjsKKyAgICAgICAgbm9kZXNUb1Zpc2l0W25vZGVzVG9W
aXNpdExlbmd0aCsrXSA9IHRoaXMuX3Jvb3ROb2RlSW5kZXg7CisgICAgICAgIHBhaW50ZWRbdGhp
cy5fcm9vdE5vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50XSA9IGtHcmV5OworCisgICAgICAgIHdo
aWxlIChub2Rlc1RvVmlzaXRMZW5ndGgpIHsKKyAgICAgICAgICAgIHZhciBub2RlSW5kZXggPSBu
b2Rlc1RvVmlzaXRbbm9kZXNUb1Zpc2l0TGVuZ3RoIC0gMV07CisgICAgICAgICAgICB2YXIgbm9k
ZU9yZGluYWwgPSBub2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsKKyAgICAgICAgICAgIGlmIChw
YWludGVkW25vZGVPcmRpbmFsXSA9PT0ga0dyZXkpIHsKKyAgICAgICAgICAgICAgICBwYWludGVk
W25vZGVPcmRpbmFsXSA9IGtCbGFjazsKKyAgICAgICAgICAgICAgICB2YXIgYmVnaW5FZGdlSW5k
ZXggPSBub2Rlc1tub2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldF07CisgICAgICAgICAg
ICAgICAgdmFyIGVuZEVkZ2VJbmRleCA9ICBub2RlT3JkaW5hbCA8IG5vZGVDb3VudCAtIDEKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbm9kZXNbbm9kZUluZGV4ICsgZmly
c3RFZGdlSW5kZXhPZmZzZXQgKyBub2RlRmllbGRDb3VudF0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDogY29udGFpbm1lbnRFZGdlc0xlbmd0aDsKKyAgICAgICAgICAgICAg
ICBmb3IgKHZhciBlZGdlSW5kZXggPSBiZWdpbkVkZ2VJbmRleDsgZWRnZUluZGV4IDwgZW5kRWRn
ZUluZGV4OyBlZGdlSW5kZXggKz0gZWRnZUZpZWxkc0NvdW50KSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChub2RlSW5kZXggIT0gcm9vdE5vZGVJbmRleCAmJiBjb250YWlubWVudEVkZ2VzW2Vk
Z2VJbmRleCArIGVkZ2VUeXBlT2Zmc2V0XSA9PT0ga1Nob3J0Y3V0KQorICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVJbmRl
eCA9ICBjb250YWlubWVudEVkZ2VzW2VkZ2VJbmRleCArIGVkZ2VUb05vZGVPZmZzZXRdOworICAg
ICAgICAgICAgICAgICAgICB2YXIgY2hpbGROb2RlT3JkaW5hbCA9IGNoaWxkTm9kZUluZGV4IC8g
bm9kZUZpZWxkQ291bnQ7CisgICAgICAgICAgICAgICAgICAgIGlmICghcGFpbnRlZFtjaGlsZE5v
ZGVPcmRpbmFsXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFpbnRlZFtjaGlsZE5vZGVP
cmRpbmFsXSA9IGtHcmV5OworICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXNUb1Zpc2l0W25v
ZGVzVG9WaXNpdExlbmd0aCsrXSA9IGNoaWxkTm9kZUluZGV4OworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBub2RlT3JkaW5hbDJQb3N0T3JkZXJJbmRleFtub2RlT3JkaW5hbF0gPSBwb3N0T3JkZXJJ
bmRleDsKKyAgICAgICAgICAgICAgICBwb3N0T3JkZXJJbmRleDJOb2RlSW5kZXhbcG9zdE9yZGVy
SW5kZXgrK10gPSBub2RlSW5kZXg7CisgICAgICAgICAgICAgICAgLS1ub2Rlc1RvVmlzaXRMZW5n
dGg7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHtwb3N0T3JkZXJJ
bmRleDJOb2RlSW5kZXg6IHBvc3RPcmRlckluZGV4Mk5vZGVJbmRleCwgbm9kZU9yZGluYWwyUG9z
dE9yZGVySW5kZXg6IG5vZGVPcmRpbmFsMlBvc3RPcmRlckluZGV4fTsKKyAgICB9LAorCisgICAg
Ly8gVGhlIGFsZ29yaXRobSBpcyBiYXNlZCBvbiB0aGUgYXJ0aWNsZToKKyAgICAvLyBLLiBDb29w
ZXIsIFQuIEhhcnZleSBhbmQgSy4gS2VubmVkeSAiQSBTaW1wbGUsIEZhc3QgRG9taW5hbmNlIEFs
Z29yaXRobSIKKyAgICAvLyBTb2Z0dy4gUHJhY3QuIEV4cGVyLiA0ICgyMDAxKSwgcHAuIDEtMTAu
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48bnVtYmVyPn0gcG9zdE9yZGVySW5kZXgy
Tm9kZUluZGV4CisgICAgICogQHBhcmFtIHtBcnJheS48bnVtYmVyPn0gbm9kZU9yZGluYWwyUG9z
dE9yZGVySW5kZXgKKyAgICAgKi8KKyAgICBfYnVpbGREb21pbmF0b3JUcmVlOiBmdW5jdGlvbihw
b3N0T3JkZXJJbmRleDJOb2RlSW5kZXgsIG5vZGVPcmRpbmFsMlBvc3RPcmRlckluZGV4KQorICAg
IHsKKyAgICAgICAgdmFyIG5vZGVGaWVsZENvdW50ID0gdGhpcy5fbm9kZUZpZWxkQ291bnQ7Cisg
ICAgICAgIHZhciBub2RlcyA9IHRoaXMuX25vZGVzOworICAgICAgICB2YXIgZmlyc3RSZXRhaW5l
ckluZGV4ID0gdGhpcy5fZmlyc3RSZXRhaW5lckluZGV4OworICAgICAgICB2YXIgcmV0YWluaW5n
Tm9kZXMgPSB0aGlzLl9yZXRhaW5pbmdOb2RlczsKKyAgICAgICAgdmFyIHJldGFpbmluZ0VkZ2Vz
ID0gdGhpcy5fcmV0YWluaW5nRWRnZXM7CisgICAgICAgIHZhciBlZGdlRmllbGRzQ291bnQgPSB0
aGlzLl9lZGdlRmllbGRzQ291bnQ7CisgICAgICAgIHZhciBlZGdlVG9Ob2RlT2Zmc2V0ID0gdGhp
cy5fZWRnZVRvTm9kZU9mZnNldDsKKyAgICAgICAgdmFyIGVkZ2VUeXBlT2Zmc2V0ID0gdGhpcy5f
ZWRnZVR5cGVPZmZzZXQ7CisgICAgICAgIHZhciBrU2hvcnRjdXQgPSB0aGlzLl9lZGdlU2hvcnRj
dXRUeXBlOworICAgICAgICB2YXIgZmlyc3RFZGdlSW5kZXhPZmZzZXQgPSB0aGlzLl9maXJzdEVk
Z2VJbmRleE9mZnNldDsKKyAgICAgICAgdmFyIGNvbnRhaW5tZW50RWRnZXMgPSB0aGlzLl9jb250
YWlubWVudEVkZ2VzOworICAgICAgICB2YXIgY29udGFpbm1lbnRFZGdlc0xlbmd0aCA9IHRoaXMu
X2NvbnRhaW5tZW50RWRnZXMubGVuZ3RoOworICAgICAgICB2YXIgcm9vdE5vZGVJbmRleCA9IHRo
aXMuX3Jvb3ROb2RlSW5kZXg7CisKKyAgICAgICAgdmFyIGZsYWdzID0gdGhpcy5fZmxhZ3M7Cisg
ICAgICAgIHZhciBmbGFnID0gdGhpcy5fbm9kZUZsYWdzLnVzZWRGb3JEb21pbmF0b3JzOworCisg
ICAgICAgIHZhciBub2Rlc0NvdW50ID0gcG9zdE9yZGVySW5kZXgyTm9kZUluZGV4Lmxlbmd0aDsK
KyAgICAgICAgdmFyIHJvb3RQb3N0T3JkZXJlZEluZGV4ID0gbm9kZXNDb3VudCAtIDE7CisgICAg
ICAgIHZhciBrTm9FbnRyeSA9IG5vZGVzQ291bnQ7CisgICAgICAgIHZhciBkb21pbmF0b3JzID0g
bmV3IFVpbnQzMkFycmF5KG5vZGVzQ291bnQpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHJvb3RQb3N0T3JkZXJlZEluZGV4OyArK2kpCisgICAgICAgICAgICBkb21pbmF0b3JzW2ldID0g
a05vRW50cnk7CisgICAgICAgIGRvbWluYXRvcnNbcm9vdFBvc3RPcmRlcmVkSW5kZXhdID0gcm9v
dFBvc3RPcmRlcmVkSW5kZXg7CisKKyAgICAgICAgLy8gVGhlIGFmZmVjdGVkIGFycmF5IGlzIHVz
ZWQgdG8gbWFyayBlbnRyaWVzIHdoaWNoIGRvbWluYXRvcnMKKyAgICAgICAgLy8gaGF2ZSB0byBi
ZSByYWNhbGN1bGF0ZWQgYmVjYXVzZSBvZiBjaGFuZ2VzIGluIHRoZWlyIHJldGFpbmVycy4KKyAg
ICAgICAgdmFyIGFmZmVjdGVkID0gbmV3IFVpbnQ4QXJyYXkobm9kZXNDb3VudCk7CisKKyAgICAg
ICAgLy8gTWFyayB0aGUgcm9vdCBkaXJlY3QgY2hpbGRyZW4gYXMgYWZmZWN0ZWQuCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBub2RlSW5kZXggPSB0aGlzLl9yb290Tm9kZUluZGV4OworICAg
ICAgICAgICAgdmFyIGJlZ2luRWRnZVRvTm9kZUZpZWxkSW5kZXggPSBub2Rlc1tub2RlSW5kZXgg
KyBmaXJzdEVkZ2VJbmRleE9mZnNldF0gKyBlZGdlVG9Ob2RlT2Zmc2V0OworICAgICAgICAgICAg
dmFyIGVuZEVkZ2VUb05vZGVGaWVsZEluZGV4ID0gbm9kZXNbbm9kZUluZGV4ICsgbm9kZUZpZWxk
Q291bnQgKyBmaXJzdEVkZ2VJbmRleE9mZnNldF07CisgICAgICAgICAgICBmb3IgKHZhciB0b05v
ZGVGaWVsZEluZGV4ID0gYmVnaW5FZGdlVG9Ob2RlRmllbGRJbmRleDsKKyAgICAgICAgICAgICAg
ICAgdG9Ob2RlRmllbGRJbmRleCA8IGVuZEVkZ2VUb05vZGVGaWVsZEluZGV4OworICAgICAgICAg
ICAgICAgICB0b05vZGVGaWVsZEluZGV4ICs9IGVkZ2VGaWVsZHNDb3VudCkgeworICAgICAgICAg
ICAgICAgIHZhciBjaGlsZE5vZGVPcmRpbmFsID0gY29udGFpbm1lbnRFZGdlc1t0b05vZGVGaWVs
ZEluZGV4XSAvIG5vZGVGaWVsZENvdW50OworICAgICAgICAgICAgICAgIGFmZmVjdGVkW25vZGVP
cmRpbmFsMlBvc3RPcmRlckluZGV4W2NoaWxkTm9kZU9yZGluYWxdXSA9IDE7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICB2YXIgY291bnRlciA9IDA7CisgICAgICAgIHZhciBj
aGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgd2hpbGUgKGNoYW5nZWQpIHsKKyAgICAgICAgICAgIGNo
YW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAodmFyIHBvc3RPcmRlckluZGV4ID0gcm9v
dFBvc3RPcmRlcmVkSW5kZXggLSAxOyBwb3N0T3JkZXJJbmRleCA+PSAwOyAtLXBvc3RPcmRlcklu
ZGV4KSB7CisgICAgICAgICAgICAgICAgaWYgKGFmZmVjdGVkW3Bvc3RPcmRlckluZGV4XSA9PT0g
MCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgYWZmZWN0
ZWRbcG9zdE9yZGVySW5kZXhdID0gMDsKKyAgICAgICAgICAgICAgICAvLyBJZiBkb21pbmF0b3Ig
b2YgdGhlIGVudHJ5IGhhcyBhbHJlYWR5IGJlZW4gc2V0IHRvIHJvb3QsCisgICAgICAgICAgICAg
ICAgLy8gdGhlbiBpdCBjYW4ndCBwcm9wYWdhdGUgYW55IGZ1cnRoZXIuCisgICAgICAgICAgICAg
ICAgaWYgKGRvbWluYXRvcnNbcG9zdE9yZGVySW5kZXhdID09PSByb290UG9zdE9yZGVyZWRJbmRl
eCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgdmFyIG5v
ZGVPcmRpbmFsID0gcG9zdE9yZGVySW5kZXgyTm9kZUluZGV4W3Bvc3RPcmRlckluZGV4XSAvIG5v
ZGVGaWVsZENvdW50OworICAgICAgICAgICAgICAgIHZhciBuZXdEb21pbmF0b3JJbmRleCA9IGtO
b0VudHJ5OworICAgICAgICAgICAgICAgIHZhciBiZWdpblJldGFpbmVySW5kZXggPSBmaXJzdFJl
dGFpbmVySW5kZXhbbm9kZU9yZGluYWxdOworICAgICAgICAgICAgICAgIHZhciBlbmRSZXRhaW5l
ckluZGV4ID0gZmlyc3RSZXRhaW5lckluZGV4W25vZGVPcmRpbmFsICsgMV07CisgICAgICAgICAg
ICAgICAgZm9yICh2YXIgcmV0YWluZXJJbmRleCA9IGJlZ2luUmV0YWluZXJJbmRleDsgcmV0YWlu
ZXJJbmRleCA8IGVuZFJldGFpbmVySW5kZXg7ICsrcmV0YWluZXJJbmRleCkgeworICAgICAgICAg
ICAgICAgICAgICB2YXIgcmV0YWluZXJFZGdlSW5kZXggPSByZXRhaW5pbmdFZGdlc1tyZXRhaW5l
ckluZGV4XTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHJldGFpbmVyRWRnZVR5cGUgPSBjb250
YWlubWVudEVkZ2VzW3JldGFpbmVyRWRnZUluZGV4ICsgZWRnZVR5cGVPZmZzZXRdOworICAgICAg
ICAgICAgICAgICAgICB2YXIgcmV0YWluZXJOb2RlSW5kZXggPSByZXRhaW5pbmdOb2Rlc1tyZXRh
aW5lckluZGV4XTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJldGFpbmVyTm9kZUluZGV4ICE9
PSByb290Tm9kZUluZGV4ICYmIHJldGFpbmVyRWRnZVR5cGUgPT09IGtTaG9ydGN1dCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB2YXIgcmV0
YWluZXJOb2RlT3JkaW5hbCA9IHJldGFpbmVyTm9kZUluZGV4IC8gbm9kZUZpZWxkQ291bnQ7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIGlmICghKGZsYWdzW25vZGVPcmRpbmFsXSAmIGZsYWcpICYm
IChmbGFnc1tyZXRhaW5lck5vZGVPcmRpbmFsXSAmIGZsYWcpKQorICAgICAgICAgICAgICAgICAg
ICAvLyAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIHZhciByZXRhbmVyUG9zdE9y
ZGVySW5kZXggPSBub2RlT3JkaW5hbDJQb3N0T3JkZXJJbmRleFtyZXRhaW5lck5vZGVPcmRpbmFs
XTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRvbWluYXRvcnNbcmV0YW5lclBvc3RPcmRlcklu
ZGV4XSAhPT0ga05vRW50cnkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdEb21p
bmF0b3JJbmRleCA9PT0ga05vRW50cnkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3
RG9taW5hdG9ySW5kZXggPSByZXRhbmVyUG9zdE9yZGVySW5kZXg7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocmV0YW5l
clBvc3RPcmRlckluZGV4ICE9PSBuZXdEb21pbmF0b3JJbmRleCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aGlsZSAocmV0YW5lclBvc3RPcmRlckluZGV4IDwgbmV3RG9taW5h
dG9ySW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRhbmVyUG9z
dE9yZGVySW5kZXggPSBkb21pbmF0b3JzW3JldGFuZXJQb3N0T3JkZXJJbmRleF07CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChuZXdEb21pbmF0b3JJbmRleCA8IHJldGFu
ZXJQb3N0T3JkZXJJbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5l
d0RvbWluYXRvckluZGV4ID0gZG9taW5hdG9yc1tuZXdEb21pbmF0b3JJbmRleF07CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gSWYgaWRvbSBoYXMgYWxyZWFkeSByZWFjaGVkIHRoZSByb290
LCBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGNo
ZWNrIG90aGVyIHJldGFpbmVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdEb21p
bmF0b3JJbmRleCA9PT0gcm9vdFBvc3RPcmRlcmVkSW5kZXgpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgaWYgKG5ld0RvbWluYXRvckluZGV4ICE9PSBrTm9FbnRyeSAmJiBk
b21pbmF0b3JzW3Bvc3RPcmRlckluZGV4XSAhPT0gbmV3RG9taW5hdG9ySW5kZXgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgZG9taW5hdG9yc1twb3N0T3JkZXJJbmRleF0gPSBuZXdEb21pbmF0b3JJ
bmRleDsKKyAgICAgICAgICAgICAgICAgICAgKytjb3VudGVyOworICAgICAgICAgICAgICAgICAg
ICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIG5vZGVJbmRleCA9IHBvc3RPcmRlckluZGV4Mk5vZGVJbmRleFtwb3N0T3Jk
ZXJJbmRleF07CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbm9kZU9yZGluYWwgPSBub2Rl
SW5kZXggLyBub2RlRmllbGRDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiZWdp
bkVkZ2VUb05vZGVGaWVsZEluZGV4ID0gbm9kZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhP
ZmZzZXRdICsgZWRnZVRvTm9kZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBl
bmRFZGdlVG9Ob2RlRmllbGRJbmRleCA9IG5vZGVPcmRpbmFsIDwgbm9kZXNDb3VudCAtIDEKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbm9k
ZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXQgKyBub2RlRmllbGRDb3VudF0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY29u
dGFpbm1lbnRFZGdlc0xlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHRv
Tm9kZUZpZWxkSW5kZXggPSBiZWdpbkVkZ2VUb05vZGVGaWVsZEluZGV4OworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0b05vZGVGaWVsZEluZGV4IDwgZW5kRWRnZVRvTm9kZUZpZWxkSW5k
ZXg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvTm9kZUZpZWxkSW5kZXggKz0gZWRn
ZUZpZWxkc0NvdW50KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNoaWxkTm9k
ZU9yZGluYWwgPSBjb250YWlubWVudEVkZ2VzW3RvTm9kZUZpZWxkSW5kZXhdIC8gbm9kZUZpZWxk
Q291bnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZmZWN0ZWRbbm9kZU9yZGluYWwy
UG9zdE9yZGVySW5kZXhbY2hpbGROb2RlT3JkaW5hbF1dID0gMTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGNvbnNvbGUubG9nKCJkb21pbmF0b3IgYXNz
aWdtZW50czogIiArIGNvdW50ZXIpOworICAgICAgICB2YXIgZG9taW5hdG9yc1RyZWUgPSBuZXcg
VWludDMyQXJyYXkobm9kZXNDb3VudCk7CisgICAgICAgIGZvciAodmFyIHBvc3RPcmRlckluZGV4
ID0gMCwgbCA9IGRvbWluYXRvcnMubGVuZ3RoOyBwb3N0T3JkZXJJbmRleCA8IGw7ICsrcG9zdE9y
ZGVySW5kZXgpIHsKKyAgICAgICAgICAgIHZhciBub2RlT3JkaW5hbCA9IHBvc3RPcmRlckluZGV4
Mk5vZGVJbmRleFtwb3N0T3JkZXJJbmRleF0gLyBub2RlRmllbGRDb3VudDsKKyAgICAgICAgICAg
IGRvbWluYXRvcnNUcmVlW25vZGVPcmRpbmFsXSA9IHBvc3RPcmRlckluZGV4Mk5vZGVJbmRleFtk
b21pbmF0b3JzW3Bvc3RPcmRlckluZGV4XV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRv
bWluYXRvcnNUcmVlOworICAgIH0sCisKICAgICBfYnVpbGREb21pbmF0ZWROb2RlczogZnVuY3Rp
b24oKQogICAgIHsKICAgICAgICAgLy8gQnVpbGRzIHVwIHR3byBhcnJheXM6CkBAIC0xMTYwLDYg
KzEzNDgsNjMgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0KICAgICB9LAogCisgICAgX21hcmtOb2Rlc0ZvckRvbWluYXRvclRyZWU6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHZhciBlZGdlU2hvcnRjdXRUeXBlID0gdGhpcy5fZWRnZVNob3J0
Y3V0VHlwZTsKKyAgICAgICAgdmFyIGVkZ2VUb05vZGVPZmZzZXQgPSB0aGlzLl9lZGdlVG9Ob2Rl
T2Zmc2V0OworICAgICAgICB2YXIgZWRnZVR5cGVPZmZzZXQgPSB0aGlzLl9lZGdlVHlwZU9mZnNl
dDsKKyAgICAgICAgdmFyIGtTaG9ydGN1dCA9IHRoaXMuX2VkZ2VTaG9ydGN1dFR5cGU7CisgICAg
ICAgIHZhciBlZGdlRmllbGRzQ291bnQgPSB0aGlzLl9lZGdlRmllbGRzQ291bnQ7CisgICAgICAg
IHZhciBmaXJzdEVkZ2VJbmRleE9mZnNldCA9IHRoaXMuX2ZpcnN0RWRnZUluZGV4T2Zmc2V0Owor
ICAgICAgICB2YXIgY29udGFpbm1lbnRFZGdlcyA9IHRoaXMuX2NvbnRhaW5tZW50RWRnZXM7Cisg
ICAgICAgIHZhciBjb250YWlubWVudEVkZ2VzTGVuZ3RoID0gY29udGFpbm1lbnRFZGdlcy5sZW5n
dGg7CisgICAgICAgIHZhciBub2RlcyA9IHRoaXMuX25vZGVzOworICAgICAgICB2YXIgbm9kZUZp
ZWxkQ291bnQgPSB0aGlzLl9ub2RlRmllbGRDb3VudDsKKyAgICAgICAgdmFyIG5vZGVzQ291bnQg
PSB0aGlzLm5vZGVDb3VudDsKKworICAgICAgICB2YXIgZmxhZ3MgPSB0aGlzLl9mbGFnczsKKyAg
ICAgICAgdmFyIGZsYWcgPSB0aGlzLl9ub2RlRmxhZ3MudXNlZEZvckRvbWluYXRvcnM7CisgICAg
ICAgIHZhciBrVmlzaXRlZE1hcmtlciA9IHRoaXMuX25vZGVGbGFncy52aXNpdGVkTWFya2VyOwor
ICAgICAgICB2YXIga1Zpc2l0ZWRNYXJrZXJNYXNrID0gdGhpcy5fbm9kZUZsYWdzLnZpc2l0ZWRN
YXJrZXJNYXNrOworICAgICAgICB2YXIgbWFya2VyQW5kRmxhZyA9IGtWaXNpdGVkTWFya2VyIHwg
ZmxhZzsKKworICAgICAgICB2YXIgbGlzdCA9IG5ldyBVaW50MzJBcnJheShub2Rlc0NvdW50KTsK
KyAgICAgICAgdmFyIGxpc3RMZW5ndGggPSAwOworCisgICAgICAgIGZvciAodmFyIGVkZ2VJbmRl
eCA9IG5vZGVzW2ZpcnN0RWRnZUluZGV4T2Zmc2V0XSwgZW5kRWRnZUluZGV4ID0gbm9kZXNbbm9k
ZUZpZWxkQ291bnQgKyBmaXJzdEVkZ2VJbmRleE9mZnNldF07CisgICAgICAgICAgICAgZWRnZUlu
ZGV4IDwgZW5kRWRnZUluZGV4OworICAgICAgICAgICAgIGVkZ2VJbmRleCArPSBlZGdlRmllbGRz
Q291bnQpIHsKKyAgICAgICAgICAgIGlmIChjb250YWlubWVudEVkZ2VzW2VkZ2VJbmRleCArIGVk
Z2VUeXBlT2Zmc2V0XSA9PT0ga1Nob3J0Y3V0KSB7CisgICAgICAgICAgICAgICAgdmFyIG5vZGVJ
bmRleCA9IGNvbnRhaW5tZW50RWRnZXNbZWRnZUluZGV4ICsgZWRnZVRvTm9kZU9mZnNldF0KKyAg
ICAgICAgICAgICAgICBsaXN0W2xpc3RMZW5ndGgrK10gPSBub2RlSW5kZXg7CisgICAgICAgICAg
ICAgICAgZmxhZ3Nbbm9kZUluZGV4IC8gbm9kZUZpZWxkQ291bnRdIHw9IGtWaXNpdGVkTWFya2Vy
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgd2hpbGUgKGxpc3RMZW5ndGgp
IHsKKyAgICAgICAgICAgIHZhciBub2RlSW5kZXggPSBsaXN0Wy0tbGlzdExlbmd0aF07CisgICAg
ICAgICAgICB2YXIgbm9kZU9yZGluYWwgPSBub2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsKKyAg
ICAgICAgICAgIGZsYWdzW25vZGVPcmRpbmFsXSB8PSBmbGFnOworICAgICAgICAgICAgZmxhZ3Nb
bm9kZU9yZGluYWxdICY9IGtWaXNpdGVkTWFya2VyTWFzazsKKyAgICAgICAgICAgIHZhciBiZWdp
bkVkZ2VUb05vZGVGaWVsZEluZGV4ID0gbm9kZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhP
ZmZzZXRdICsgZWRnZVRvTm9kZU9mZnNldDsKKyAgICAgICAgICAgIHZhciBlbmRFZGdlVG9Ob2Rl
RmllbGRJbmRleCA9IDA7CisgICAgICAgICAgICBpZiAoKG5vZGVPcmRpbmFsKSA8IG5vZGVzQ291
bnQgLSAxKQorICAgICAgICAgICAgICAgIGVuZEVkZ2VUb05vZGVGaWVsZEluZGV4ID0gbm9kZXNb
bm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXQgKyBub2RlRmllbGRDb3VudF0gKyBlZGdl
VG9Ob2RlT2Zmc2V0OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVuZEVkZ2VU
b05vZGVGaWVsZEluZGV4ID0gY29udGFpbm1lbnRFZGdlc0xlbmd0aDsKKyAgICAgICAgICAgIGZv
ciAodmFyIGVkZ2VUb05vZGVJbmRleCA9IGJlZ2luRWRnZVRvTm9kZUZpZWxkSW5kZXg7CisgICAg
ICAgICAgICAgICAgIGVkZ2VUb05vZGVJbmRleCA8IGVuZEVkZ2VUb05vZGVGaWVsZEluZGV4Owor
ICAgICAgICAgICAgICAgICBlZGdlVG9Ob2RlSW5kZXggKz0gZWRnZUZpZWxkc0NvdW50KSB7Cisg
ICAgICAgICAgICAgICAgdmFyIGNoaWxkTm9kZUluZGV4ID0gY29udGFpbm1lbnRFZGdlc1tlZGdl
VG9Ob2RlSW5kZXhdOworICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVPcmRpbmFsID0gY2hp
bGROb2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsKKyAgICAgICAgICAgICAgICBpZiAoZmxhZ3Nb
Y2hpbGROb2RlT3JkaW5hbF0gJiBtYXJrZXJBbmRGbGFnKQorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICBsaXN0W2xpc3RMZW5ndGgrK10gPSBjaGlsZE5vZGVJ
bmRleDsKKyAgICAgICAgICAgICAgICBmbGFnc1tjaGlsZE5vZGVPcmRpbmFsXSB8PSBrVmlzaXRl
ZE1hcmtlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisKICAgICBfbWFya1F1
ZXJpYWJsZUhlYXBPYmplY3RzOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICAvLyBBbGxvdyBy
dW50aW1lIHByb3BlcnRpZXMgcXVlcnkgZm9yIG9iamVjdHMgYWNjZXNzaWJsZSBmcm9tIFdpbmRv
dyBvYmplY3RzCkBAIC0xMTgwLDYgKzE0MjUsOCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgZmxhZ3MgPSB0aGlzLl9mbGFnczsKICAgICAg
ICAgdmFyIGxpc3QgPSBbXTsKKyAgICAgICAgdmFyIGxpc3RMZW5ndGggPSAwOworCiAgICAgICAg
IGZvciAodmFyIGl0ZXIgPSB0aGlzLnJvb3ROb2RlLmVkZ2VzOyBpdGVyLmhhc05leHQoKTsgaXRl
ci5uZXh0KCkpIHsKICAgICAgICAgICAgIGlmIChpdGVyLmVkZ2Uubm9kZS5pc1dpbmRvdykKICAg
ICAgICAgICAgICAgICBsaXN0LnB1c2goaXRlci5lZGdlLm5vZGUubm9kZUluZGV4KTsKQEAgLTEy
MTIsNiArMTQ1OSw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLl9mbGFncyA9IG5ldyBVaW50MzJBcnJheSh0aGlzLm5vZGVDb3VudCk7CiAg
ICAgICAgIHRoaXMuX21hcmtEZXRhY2hlZERPTVRyZWVOb2RlcygpOwogICAgICAgICB0aGlzLl9t
YXJrUXVlcmlhYmxlSGVhcE9iamVjdHMoKTsKKyAgICAgICAgdGhpcy5fbWFya05vZGVzRm9yRG9t
aW5hdG9yVHJlZSgpOwogICAgIH0sCiAKICAgICBjYWxjdWxhdGVTbmFwc2hvdERpZmY6IGZ1bmN0
aW9uKGJhc2VTbmFwc2hvdElkLCBiYXNlU25hcHNob3RBZ2dyZWdhdGVzKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM3ZDA1
NzBlZmI3NGQ3ZjFmYTQzZTcwNjdkYTNiOWJhNDdjYTYwODYuLmNmOWVhYTk3NjczZjE4YmQ0YjUz
NDYyN2FkNjJhNGM1NmRmNzk5ZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wNS0xNiAg
SWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogdXBzdHJlYW0gYnVpbGQgZG9taW5hdG9ycyB0cmVlIHByb2NlZHVyZSBmcm9tIHY4
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY2NDAK
KworICAgICAgICBUaGUgaWRlYSBpcyB0byByZWR1Y2UgdHJhbnNmZXIgc2l6ZSBhbmQgbW92ZSBh
bGwgdGhlIHBvc3QtcHJvY2Vzc2luZyBzdGVwcyB0byB0aGUgZnJvbnQtZW5kLgorICAgICAgICBU
aGUgSlMgaW1wbGVtZW50YXRpb24gaXMgfjEuNSB0aW1lcyBzbG93ZXIuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0
ZXN0cyBhbmQgcGVyZm9ybWFuY2UgdGVzdHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmls
ZXIvaGVhcC1zbmFwc2hvdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Byb2Zp
bGVyL2hlYXAtc25hcHNob3QtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfSGVhcFNuYXBz
aG90VGVzdC5JbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2tSYXcpOgorICAgICAg
ICAqIGluc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90Lmh0bWw6CisKIDIwMTItMDUtMTcg
IERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMTE0MTk5MzM+IFByb2JsZW1zIHdpdGggZmxpcHBlZCB3cml0aW5nIG1vZGVzIGFuZCBjb21w
b3NpdGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAt
c25hcHNob3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hl
YXAtc25hcHNob3QtZXhwZWN0ZWQudHh0CmluZGV4IGQzZGU1NjgxNjBjYjdmYTRhNjkyMTdkNWJi
NWU5ZjIxNzRlOGIwZDcuLjg5MjMwMDcwNGJmMWExYWVhMDlhZjlmNzMyNDI1OTgwMDAxNjZiNzkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1z
bmFwc2hvdC1leHBlY3RlZC50eHQKQEAgLTEzLDYgKzEzLDEwIEBAIFJ1bm5pbmc6IGhlYXBTbmFw
c2hvdE5vZGVBbmRFZGdlVGVzdAogCiBSdW5uaW5nOiBoZWFwU25hcHNob3RTaW1wbGVUZXN0CiAK
K1J1bm5pbmc6IGhlYXBTbmFwc2hvdFBvc3RPcmRlckluZGV4VGVzdAorCitSdW5uaW5nOiBoZWFw
U25hcHNob3REb21pbmF0b3JzVHJlZVRlc3QKKwogUnVubmluZzogaGVhcFNuYXBzaG90UmV0YWlu
ZXJzVGVzdAogCiBSdW5uaW5nOiBoZWFwU25hcHNob3RBZ2dyZWdhdGVzVGVzdApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanMKaW5k
ZXggNDdkYmI5NGE5OTEwNzM0YjdlMWFjNzliZTI1MzU4N2Y2YWI5YjZmOC4uMmFhZjc5OWIwMDRl
NTlmNTJiMjI1YzRiOGU3MGUyMjIzNjM0YWUzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0LmpzCkBAIC02OSwxNyArNjksMjcg
QEAgSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrUmF3ID0gZnVuY3Rpb24oKQog
ICAgICAgICAgICAgbm9kZV9jb3VudDogNiwKICAgICAgICAgICAgIGVkZ2VfY291bnQ6IDd9LAog
ICAgICAgICBub2RlczogWwotICAgICAgICAgICAgMCwgMCwgMSwgMCwgMjAsICAwLCAgMCwKLSAg
ICAgICAgICAgIDEsIDEsIDIsIDIsICAyLCAgMCwgIDYsCi0gICAgICAgICAgICAxLCAyLCAzLCAz
LCAgOCwgIDAsIDEyLAotICAgICAgICAgICAgMSwgMywgNCwgNCwgMTAsICAwLCAxOCwKLSAgICAg
ICAgICAgIDEsIDQsIDUsIDUsICA1LCAxNCwgMjEsCi0gICAgICAgICAgICAxLCA1LCA2LCA2LCAg
NiwgMjEsIDIxXSwKKyAgICAgICAgICAgIDAsIDAsIDEsIDAsIDIwLCAgMCwgIDAsIC8vIHJvb3Qg
KDApCisgICAgICAgICAgICAxLCAxLCAyLCAyLCAgMiwgIDAsICA2LCAvLyBBICg3KQorICAgICAg
ICAgICAgMSwgMiwgMywgMywgIDgsICAwLCAxMiwgLy8gQiAoMTQpCisgICAgICAgICAgICAxLCAz
LCA0LCA0LCAxMCwgIDAsIDE4LCAvLyBDICgyMSkKKyAgICAgICAgICAgIDEsIDQsIDUsIDUsICA1
LCAxNCwgMjEsIC8vIEQgKDI4KQorICAgICAgICAgICAgMSwgNSwgNiwgNiwgIDYsIDIxLCAyMV0s
Ly8gRSAoMzUpCiAgICAgICAgIGVkZ2VzOiBbCi0gICAgICAgICAgICAxLCAgNiwgIDcsIDEsICA3
LCAxNCwKLSAgICAgICAgICAgIDAsICAxLCAxNCwgMSwgIDgsIDIxLAotICAgICAgICAgICAgMSwg
IDksIDIxLCAxLCAxMCwgMjgsCi0gICAgICAgICAgICAxLCAxMSwgMzVdLAorICAgICAgICAgICAg
Ly8gcm9vdCBub2RlIGVkZ2VzCisgICAgICAgICAgICAxLCAgNiwgIDcsIC8vIHByb3BlcnR5ICdh
JyB0byBub2RlICdBJworICAgICAgICAgICAgMSwgIDcsIDE0LCAvLyBwcm9wZXJ0eSAnYicgdG8g
bm9kZSAnQicKKworICAgICAgICAgICAgLy8gQSBub2RlIGVkZ2VzCisgICAgICAgICAgICAwLCAg
MSwgMTQsIC8vIGVsZW1lbnQgMSB0byBub2RlICdCJworICAgICAgICAgICAgMSwgIDgsIDIxLCAv
LyBwcm9wZXJ0eSAnYWMnIHRvIG5vZGUgJ0MnCisKKyAgICAgICAgICAgIC8vIEIgbm9kZSBlZGdl
cworICAgICAgICAgICAgMSwgIDksIDIxLCAvLyBwcm9wZXJ0eSAnYmMnIHRvIG5vZGUgJ0MnCisg
ICAgICAgICAgICAxLCAxMCwgMjgsIC8vIHByb3BlcnR5ICdiZCcgdG8gbm9kZSAnRCcKKworICAg
ICAgICAgICAgLy8gQyBub2RlIGVkZ2VzCisgICAgICAgICAgICAxLCAxMSwgMzVdLCAvLyBwcm9w
ZXJ0eSAnY2UnIHRvIG5vZGUgJ0UnCiAgICAgICAgIHN0cmluZ3M6IFsiIiwgIkEiLCAiQiIsICJD
IiwgIkQiLCAiRSIsICJhIiwgImIiLCAiYWMiLCAiYmMiLCAiYmQiLCAiY2UiXQogICAgIH07CiB9
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNo
b3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90Lmh0
bWwKaW5kZXggNDRiMjkzZGRiZmEyNjMxNmM4MTQzMGQ0ZGUwZGJkY2UwYmY0MDU0YS4uNGUzNTgz
ZjMxZGVkNzJmN2QzZWY1MTBhNTQ0NzRlY2YzMThlMjBkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC5odG1sCkBAIC05NSw2ICs5NSwyNyBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgfSwKIAorICAg
ICAgICBmdW5jdGlvbiBoZWFwU25hcHNob3RQb3N0T3JkZXJJbmRleFRlc3QobmV4dCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3QoSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrKCkpOworICAgICAgICAg
ICAgdmFyIHBvc3RPcmRlckluZGV4ID0gc25hcHNob3QuX2J1aWxkUG9zdE9yZGVySW5kZXgoKS5w
b3N0T3JkZXJJbmRleDJOb2RlSW5kZXg7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWQgPSBbMjgs
MzUsMjEsMTQsNywwXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWQu
bGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
ZXhwZWN0ZWRbaV0sIHBvc3RPcmRlckluZGV4W2ldLCAiUG9zdCBvcmRlcmVkIGluZGV4ZXMiKTsK
KyAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiBoZWFw
U25hcHNob3REb21pbmF0b3JzVHJlZVRlc3QobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QoSW5zcGVjdG9yVGVz
dC5jcmVhdGVIZWFwU25hcHNob3RNb2NrKCkpOworICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHNu
YXBzaG90Ll9idWlsZFBvc3RPcmRlckluZGV4KCk7CisgICAgICAgICAgICB2YXIgZG9taW5hdG9y
c1RyZWUgPSBzbmFwc2hvdC5fYnVpbGREb21pbmF0b3JUcmVlKHJlc3VsdC5wb3N0T3JkZXJJbmRl
eDJOb2RlSW5kZXgsIHJlc3VsdC5ub2RlT3JkaW5hbDJQb3N0T3JkZXJJbmRleCk7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWQgPSBbMCwgMCwgMCwgMCwgMTQsIDIxXTsKKyAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWQubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRbaV0sIGRvbWluYXRvcnNUcmVlW2ld
LCAiRG9taW5hdG9ycyBUcmVlIik7CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgIH0sCisK
ICAgICAgICAgZnVuY3Rpb24gaGVhcFNuYXBzaG90UmV0YWluZXJzVGVzdChuZXh0KQogICAgICAg
ICB7CiAgICAgICAgICAgICB2YXIgc25hcHNob3QgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdChJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2soKSk7CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGRkYzI4M2JhNTQ0NjA5MTZmNjJiOTZmN2I2MGE3NjYzODAyNGIyMDQuLmE2NjAxYjZh
OGQ4OWQzNjZiNjQxNDQ3OWI0ZTYzNDg1ZTdiYzcyMTcgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNl
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTItMDUtMTYgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHVwc3RyZWFtIGJ1aWxkIGRvbWluYXRvcnMg
dHJlZSBwcm9jZWR1cmUgZnJvbSB2OC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg2NjQwCisKKyAgICAgICAgVGhlIGlkZWEgaXMgdG8gcmVkdWNlIHRy
YW5zZmVyIHNpemUgYW5kIG1vdmUgYWxsIHRoZSBwb3N0LXByb2Nlc3Npbmcgc3RlcHMgdG8gdGhl
IGZyb250LWVuZC4KKyAgICAgICAgVGhlIEpTIGltcGxlbWVudGF0aW9uIGlzIH4xLjUgdGltZXMg
c2xvd2VyLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMgYW5kIHBlcmZvcm1hbmNlIHRlc3RzLgorCisgICAg
ICAgICogaW5zcGVjdG9yL2hlYXAtc25hcHNob3QuaHRtbDoKKwogMjAxMi0wNS0xNyAgS2VudGFy
byBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW3BlcmYtdGVzdF0gQWRk
IGEgbWljcm8gYmVuY2htYXJrIGZvciBkaXYuZmlyc3RDaGlsZCBnZXR0ZXIgZm9yIGFuIHVuZGVm
aW5lZCBmaXJzdENoaWxkCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9o
ZWFwLXNuYXBzaG90Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9oZWFwLXNuYXBz
aG90Lmh0bWwKaW5kZXggOWNlMzFlYmZjMDFlNmNlOWY5ZDdmZjA0NTQ2ZDFmMTA3ZjQxNGI5Ni4u
NjlmMzkyZWE0MjU1NzI2YTRhNDkyMjZiNWEwYTg5MjRiNWQ5MjZlYSAxMDA2NDQKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC5odG1sCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvaW5zcGVjdG9yL2hlYXAtc25hcHNob3QuaHRtbApAQCAtMjgsNyArMjgsMTAgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlv
bihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9jYWxjdWxhdGVPYmplY3RU
b1dpbmRvd0Rpc3RhbmNlIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5j
dGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9tYXJrRGV0YWNoZWRE
T01UcmVlTm9kZXMiKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9u
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX21hcmtRdWVyaWFibGVIZWFw
T2JqZWN0cyIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfbWFya05vZGVzRm9yRG9taW5hdG9y
VHJlZSIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfc3BsaXROb2Rlc0FuZENvbnRhaW5tZW50
RWRnZXMiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2J1aWxkUG9zdE9yZGVySW5kZXgiKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2J1aWxkRG9taW5hdG9yVHJlZSIpOwogCiAgICAgICAg
ICAgICB0aW1lci5maW5pc2goYmFja2VuZFRpbWVyQ29va2llKTsKICAgICAgICAgICAgIHRyYW5z
ZmVyVGltZXJDb29raWUgPSB0aW1lci5zdGFydCgidHJhbnNmZXItc25hcHNob3QiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142707</attachid>
            <date>2012-05-18 06:51:05 -0700</date>
            <delta_ts>2012-05-18 11:47:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86640-20120518175103.patch</filename>
            <type>text/plain</type>
            <size>24481</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdmZjZjMjgyOGIyNTJh
MzFiNDQ3MGY3YTRhNDAyOGYyYjlhZDU4OC4uNWE1YjRjY2NkMzFiNzJiM2RkYjBhM2RlYWU5YzZh
Y2ViYWQ4N2Q0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA1LTE4ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiB1cHN0cmVhbSBidWlsZCBkb21pbmF0b3JzIHRyZWUgcHJvY2VkdXJlIGZyb20gdjguCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjY0MAorCisg
ICAgICAgIFRoZSBpZGVhIGlzIHRvIHJlZHVjZSB0cmFuc2ZlciBzaXplIGFuZCBtb3ZlIGFsbCB0
aGUgcG9zdC1wcm9jZXNzaW5nIHN0ZXBzIHRvIHRoZSBmcm9udC1lbmQuCisgICAgICAgIFRoZSBK
UyBpbXBsZW1lbnRhdGlvbiBpcyB+MS41IHRpbWVzIHNsb3dlci4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3Rz
IGFuZCBwZXJmb3JtYW5jZSB0ZXN0cy4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
SGVhcFNuYXBzaG90LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90
b3R5cGUuX2luaXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5
cGUuX2J1aWxkQWdncmVnYXRlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
LnByb3RvdHlwZS5fYnVpbGRQb3N0T3JkZXJJbmRleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90LnByb3RvdHlwZS5fYnVpbGREb21pbmF0b3JUcmVlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9tYXJrUGFnZU93bmVkTm9kZXMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX21hcmtRdWVyaWFi
bGVIZWFwT2JqZWN0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3Rv
dHlwZS5fY2FsY3VsYXRlRmxhZ3MpOgorCiAyMDEyLTA1LTE4ICBZdXJ5IFNlbWlraGF0c2t5ICA8
eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGV4Y2VwdGlvbiBp
biBjb25zb2xlIHdoZW4gcHJlc3NpbmcgJSBidXR0b24gaW4gQ1BVIHByb2ZpbGUgdmlldwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3Qu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcwpp
bmRleCAzMDFjNzgyYTFlMzY5OTQ0NWNlNDUzY2U5MzRjOTRlMzU2ZmJhMzMzLi5hMmM0MzJmYTgy
MDNkZjBjNzFjN2NhZTc0ZDAyN2E1NGRiNWZjZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcwpAQCAtNzA4LDYgKzcwOCwxMCBA
QCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
bm9kZUZsYWdzID0geyAvLyBiaXQgZmxhZ3MKICAgICAgICAgICAgIGNhbkJlUXVlcmllZDogMSwK
ICAgICAgICAgICAgIGRldGFjaGVkRE9NVHJlZU5vZGU6IDIsCisgICAgICAgICAgICBwYWdlT2Jq
ZWN0OiA0LCAvLyBUaGUgaWRlYSBpcyB0byB0cmFjayBzZXBhcmF0ZWx5IHRoZSBvYmplY3RzIG93
bmVkIGJ5IHRoZSBwYWdlIGFuZCB0aGUgb2JqZWN0cyBvd25lZCBieSBkZWJ1Z2dlci4KKworICAg
ICAgICAgICAgdmlzaXRlZE1hcmtlck1hc2s6IDY1NTM1LCAvLyBiaXRzOiAwLDExMTEsMTExMSwx
MTExLDExMTEKKyAgICAgICAgICAgIHZpc2l0ZWRNYXJrZXI6IDY1NTM2ICAgICAgLy8gYml0czog
MSwwMDAwLDAwMDAsMDAwMCwwMDAwCiAgICAgICAgIH07CiAKICAgICAgICAgdGhpcy5ub2RlQ291
bnQgPSB0aGlzLl9ub2Rlcy5sZW5ndGggLyB0aGlzLl9ub2RlRmllbGRDb3VudDsKQEAgLTcxOSw2
ICs3MjMsOCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHRoaXMuX2J1aWxkRG9taW5hdGVkTm9kZXMoKQogICAgICAgICB0aGlzLl9jYWxjdWxh
dGVGbGFncygpOwogICAgICAgICB0aGlzLl9jYWxjdWxhdGVPYmplY3RUb1dpbmRvd0Rpc3RhbmNl
KCk7CisgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9idWlsZFBvc3RPcmRlckluZGV4KCk7Cisg
ICAgICAgIHRoaXMuX2RvbWluYXRvcnNUcmVlID0gdGhpcy5fYnVpbGREb21pbmF0b3JUcmVlKHJl
c3VsdC5wb3N0T3JkZXJJbmRleDJOb2RlSW5kZXgsIHJlc3VsdC5ub2RlT3JkaW5hbDJQb3N0T3Jk
ZXJJbmRleCk7CiAgICAgfSwKIAogICAgIF9idWlsZFJldGFpbmVyczogZnVuY3Rpb24oKQpAQCAt
OTU5LDE0ICs5NjUsMTQgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHZhciBub2RlcyA9IHRoaXMuX25vZGVzOwogICAgICAgICB2YXIgbm9kZXNMZW5n
dGggPSBub2Rlcy5sZW5ndGg7CiAgICAgICAgIHZhciBub2RlTmF0aXZlVHlwZSA9IHRoaXMuX25v
ZGVOYXRpdmVUeXBlOwotICAgICAgICB2YXIgbm9kZUZpZWxkc0NvdW50ID0gdGhpcy5fbm9kZUZp
ZWxkQ291bnQ7CisgICAgICAgIHZhciBub2RlRmllbGRDb3VudCA9IHRoaXMuX25vZGVGaWVsZENv
dW50OwogICAgICAgICB2YXIgc2VsZlNpemVPZmZzZXQgPSB0aGlzLl9ub2RlU2VsZlNpemVPZmZz
ZXQ7CiAgICAgICAgIHZhciBub2RlVHlwZU9mZnNldCA9IHRoaXMuX25vZGVUeXBlT2Zmc2V0Owog
ICAgICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSh0aGlz
LCB0aGlzLl9yb290Tm9kZUluZGV4KTsKICAgICAgICAgdmFyIGRpc3RhbmNlc1RvV2luZG93ID0g
dGhpcy5fZGlzdGFuY2VzVG9XaW5kb3c7CiAKLSAgICAgICAgZm9yICh2YXIgbm9kZUluZGV4ID0g
dGhpcy5fcm9vdE5vZGVJbmRleDsgbm9kZUluZGV4IDwgbm9kZXNMZW5ndGg7IG5vZGVJbmRleCAr
PSBub2RlRmllbGRzQ291bnQpIHsKLSAgICAgICAgICAgIHZhciBub2RlT3JkaW5hbCA9IG5vZGVJ
bmRleCAvIG5vZGVGaWVsZHNDb3VudDsKKyAgICAgICAgZm9yICh2YXIgbm9kZUluZGV4ID0gdGhp
cy5fcm9vdE5vZGVJbmRleDsgbm9kZUluZGV4IDwgbm9kZXNMZW5ndGg7IG5vZGVJbmRleCArPSBu
b2RlRmllbGRDb3VudCkgeworICAgICAgICAgICAgdmFyIG5vZGVPcmRpbmFsID0gbm9kZUluZGV4
IC8gbm9kZUZpZWxkQ291bnQ7CiAgICAgICAgICAgICBub2RlLm5vZGVJbmRleCA9IG5vZGVJbmRl
eDsKICAgICAgICAgICAgIHZhciBzZWxmU2l6ZSA9IG5vZGVzW25vZGVJbmRleCArIHNlbGZTaXpl
T2Zmc2V0XTsKICAgICAgICAgICAgIGlmIChmaWx0ZXIgJiYgIWZpbHRlcihub2RlKSkKQEAgLTEw
NjMsNiArMTA2OSwxODkgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgfSwKIAorICAgIF9idWlsZFBvc3RPcmRlckluZGV4
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgbm9kZUZpZWxkQ291bnQgPSB0aGlzLl9u
b2RlRmllbGRDb3VudDsKKyAgICAgICAgdmFyIG5vZGVzID0gdGhpcy5fbm9kZXM7CisgICAgICAg
IHZhciBub2RlQ291bnQgPSB0aGlzLm5vZGVDb3VudDsKKyAgICAgICAgdmFyIHJvb3ROb2RlSW5k
ZXggPSB0aGlzLl9yb290Tm9kZUluZGV4OworCisgICAgICAgIHZhciBlZGdlRmllbGRzQ291bnQg
PSB0aGlzLl9lZGdlRmllbGRzQ291bnQ7CisgICAgICAgIHZhciBlZGdlVG9Ob2RlT2Zmc2V0ID0g
dGhpcy5fZWRnZVRvTm9kZU9mZnNldDsKKyAgICAgICAgdmFyIGVkZ2VUeXBlT2Zmc2V0ID0gdGhp
cy5fZWRnZVR5cGVPZmZzZXQ7CisgICAgICAgIHZhciBrU2hvcnRjdXQgPSB0aGlzLl9lZGdlU2hv
cnRjdXRUeXBlOworICAgICAgICB2YXIgZmlyc3RFZGdlSW5kZXhPZmZzZXQgPSB0aGlzLl9maXJz
dEVkZ2VJbmRleE9mZnNldDsKKyAgICAgICAgdmFyIGNvbnRhaW5tZW50RWRnZXMgPSB0aGlzLl9j
b250YWlubWVudEVkZ2VzOworICAgICAgICB2YXIgY29udGFpbm1lbnRFZGdlc0xlbmd0aCA9IHRo
aXMuX2NvbnRhaW5tZW50RWRnZXMubGVuZ3RoOworCisgICAgICAgIHZhciBmbGFncyA9IHRoaXMu
X2ZsYWdzOworICAgICAgICB2YXIgZmxhZyA9IHRoaXMuX25vZGVGbGFncy5wYWdlT2JqZWN0Owor
CisgICAgICAgIHZhciBub2Rlc1RvVmlzaXQgPSBuZXcgVWludDMyQXJyYXkobm9kZUNvdW50KTsK
KyAgICAgICAgdmFyIHBvc3RPcmRlckluZGV4Mk5vZGVJbmRleCA9IG5ldyBVaW50MzJBcnJheShu
b2RlQ291bnQpOworICAgICAgICB2YXIgbm9kZU9yZGluYWwyUG9zdE9yZGVySW5kZXggPSBuZXcg
VWludDMyQXJyYXkobm9kZUNvdW50KTsKKyAgICAgICAgdmFyIHBhaW50ZWQgPSBuZXcgVWludDhB
cnJheShub2RlQ291bnQpOworICAgICAgICB2YXIgbm9kZXNUb1Zpc2l0TGVuZ3RoID0gMDsKKyAg
ICAgICAgdmFyIHBvc3RPcmRlckluZGV4ID0gMDsKKyAgICAgICAgdmFyIGtHcmV5ID0gMTsKKyAg
ICAgICAgdmFyIGtCbGFjayA9IDI7CisKKyAgICAgICAgbm9kZXNUb1Zpc2l0W25vZGVzVG9WaXNp
dExlbmd0aCsrXSA9IHRoaXMuX3Jvb3ROb2RlSW5kZXg7CisgICAgICAgIHBhaW50ZWRbdGhpcy5f
cm9vdE5vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50XSA9IGtHcmV5OworCisgICAgICAgIHdoaWxl
IChub2Rlc1RvVmlzaXRMZW5ndGgpIHsKKyAgICAgICAgICAgIHZhciBub2RlSW5kZXggPSBub2Rl
c1RvVmlzaXRbbm9kZXNUb1Zpc2l0TGVuZ3RoIC0gMV07CisgICAgICAgICAgICB2YXIgbm9kZU9y
ZGluYWwgPSBub2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsKKyAgICAgICAgICAgIGlmIChwYWlu
dGVkW25vZGVPcmRpbmFsXSA9PT0ga0dyZXkpIHsKKyAgICAgICAgICAgICAgICBwYWludGVkW25v
ZGVPcmRpbmFsXSA9IGtCbGFjazsKKyAgICAgICAgICAgICAgICB2YXIgbm9kZUZsYWcgPSBmbGFn
c1tub2RlT3JkaW5hbF0gJiBmbGFnOworICAgICAgICAgICAgICAgIHZhciBiZWdpbkVkZ2VJbmRl
eCA9IG5vZGVzW25vZGVJbmRleCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0XTsKKyAgICAgICAgICAg
ICAgICB2YXIgZW5kRWRnZUluZGV4ID0gIG5vZGVPcmRpbmFsIDwgbm9kZUNvdW50IC0gMQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBub2Rlc1tub2RlSW5kZXggKyBmaXJz
dEVkZ2VJbmRleE9mZnNldCArIG5vZGVGaWVsZENvdW50XQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiBjb250YWlubWVudEVkZ2VzTGVuZ3RoOworICAgICAgICAgICAgICAg
IGZvciAodmFyIGVkZ2VJbmRleCA9IGJlZ2luRWRnZUluZGV4OyBlZGdlSW5kZXggPCBlbmRFZGdl
SW5kZXg7IGVkZ2VJbmRleCArPSBlZGdlRmllbGRzQ291bnQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKG5vZGVJbmRleCAhPSByb290Tm9kZUluZGV4ICYmIGNvbnRhaW5tZW50RWRnZXNbZWRn
ZUluZGV4ICsgZWRnZVR5cGVPZmZzZXRdID09PSBrU2hvcnRjdXQpCisgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGNoaWxkTm9kZUluZGV4
ID0gY29udGFpbm1lbnRFZGdlc1tlZGdlSW5kZXggKyBlZGdlVG9Ob2RlT2Zmc2V0XTsKKyAgICAg
ICAgICAgICAgICAgICAgdmFyIGNoaWxkTm9kZU9yZGluYWwgPSBjaGlsZE5vZGVJbmRleCAvIG5v
ZGVGaWVsZENvdW50OworICAgICAgICAgICAgICAgICAgICB2YXIgY2hpbGROb2RlRmxhZyA9IGZs
YWdzW2NoaWxkTm9kZU9yZGluYWxdICYgZmxhZzsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5v
ZGVJbmRleCAhPSByb290Tm9kZUluZGV4ICYmIGNoaWxkTm9kZUZsYWcgJiYgIW5vZGVGbGFnKQor
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlm
ICghcGFpbnRlZFtjaGlsZE5vZGVPcmRpbmFsXSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
cGFpbnRlZFtjaGlsZE5vZGVPcmRpbmFsXSA9IGtHcmV5OworICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZXNUb1Zpc2l0W25vZGVzVG9WaXNpdExlbmd0aCsrXSA9IGNoaWxkTm9kZUluZGV4Owor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBub2RlT3JkaW5hbDJQb3N0T3JkZXJJbmRleFtub2RlT3Jk
aW5hbF0gPSBwb3N0T3JkZXJJbmRleDsKKyAgICAgICAgICAgICAgICBwb3N0T3JkZXJJbmRleDJO
b2RlSW5kZXhbcG9zdE9yZGVySW5kZXgrK10gPSBub2RlSW5kZXg7CisgICAgICAgICAgICAgICAg
LS1ub2Rlc1RvVmlzaXRMZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHtwb3N0T3JkZXJJbmRleDJOb2RlSW5kZXg6IHBvc3RPcmRlckluZGV4Mk5vZGVJbmRl
eCwgbm9kZU9yZGluYWwyUG9zdE9yZGVySW5kZXg6IG5vZGVPcmRpbmFsMlBvc3RPcmRlckluZGV4
fTsKKyAgICB9LAorCisgICAgLy8gVGhlIGFsZ29yaXRobSBpcyBiYXNlZCBvbiB0aGUgYXJ0aWNs
ZToKKyAgICAvLyBLLiBDb29wZXIsIFQuIEhhcnZleSBhbmQgSy4gS2VubmVkeSAiQSBTaW1wbGUs
IEZhc3QgRG9taW5hbmNlIEFsZ29yaXRobSIKKyAgICAvLyBTb2Z0dy4gUHJhY3QuIEV4cGVyLiA0
ICgyMDAxKSwgcHAuIDEtMTAuCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48bnVtYmVy
Pn0gcG9zdE9yZGVySW5kZXgyTm9kZUluZGV4CisgICAgICogQHBhcmFtIHtBcnJheS48bnVtYmVy
Pn0gbm9kZU9yZGluYWwyUG9zdE9yZGVySW5kZXgKKyAgICAgKi8KKyAgICBfYnVpbGREb21pbmF0
b3JUcmVlOiBmdW5jdGlvbihwb3N0T3JkZXJJbmRleDJOb2RlSW5kZXgsIG5vZGVPcmRpbmFsMlBv
c3RPcmRlckluZGV4KQorICAgIHsKKyAgICAgICAgdmFyIG5vZGVGaWVsZENvdW50ID0gdGhpcy5f
bm9kZUZpZWxkQ291bnQ7CisgICAgICAgIHZhciBub2RlcyA9IHRoaXMuX25vZGVzOworICAgICAg
ICB2YXIgZmlyc3RSZXRhaW5lckluZGV4ID0gdGhpcy5fZmlyc3RSZXRhaW5lckluZGV4OworICAg
ICAgICB2YXIgcmV0YWluaW5nTm9kZXMgPSB0aGlzLl9yZXRhaW5pbmdOb2RlczsKKyAgICAgICAg
dmFyIHJldGFpbmluZ0VkZ2VzID0gdGhpcy5fcmV0YWluaW5nRWRnZXM7CisgICAgICAgIHZhciBl
ZGdlRmllbGRzQ291bnQgPSB0aGlzLl9lZGdlRmllbGRzQ291bnQ7CisgICAgICAgIHZhciBlZGdl
VG9Ob2RlT2Zmc2V0ID0gdGhpcy5fZWRnZVRvTm9kZU9mZnNldDsKKyAgICAgICAgdmFyIGVkZ2VU
eXBlT2Zmc2V0ID0gdGhpcy5fZWRnZVR5cGVPZmZzZXQ7CisgICAgICAgIHZhciBrU2hvcnRjdXQg
PSB0aGlzLl9lZGdlU2hvcnRjdXRUeXBlOworICAgICAgICB2YXIgZmlyc3RFZGdlSW5kZXhPZmZz
ZXQgPSB0aGlzLl9maXJzdEVkZ2VJbmRleE9mZnNldDsKKyAgICAgICAgdmFyIGNvbnRhaW5tZW50
RWRnZXMgPSB0aGlzLl9jb250YWlubWVudEVkZ2VzOworICAgICAgICB2YXIgY29udGFpbm1lbnRF
ZGdlc0xlbmd0aCA9IHRoaXMuX2NvbnRhaW5tZW50RWRnZXMubGVuZ3RoOworICAgICAgICB2YXIg
cm9vdE5vZGVJbmRleCA9IHRoaXMuX3Jvb3ROb2RlSW5kZXg7CisKKyAgICAgICAgdmFyIGZsYWdz
ID0gdGhpcy5fZmxhZ3M7CisgICAgICAgIHZhciBmbGFnID0gdGhpcy5fbm9kZUZsYWdzLnBhZ2VP
YmplY3Q7CisKKyAgICAgICAgdmFyIG5vZGVzQ291bnQgPSBwb3N0T3JkZXJJbmRleDJOb2RlSW5k
ZXgubGVuZ3RoOworICAgICAgICB2YXIgcm9vdFBvc3RPcmRlcmVkSW5kZXggPSBub2Rlc0NvdW50
IC0gMTsKKyAgICAgICAgdmFyIGtOb0VudHJ5ID0gbm9kZXNDb3VudDsKKyAgICAgICAgdmFyIGRv
bWluYXRvcnMgPSBuZXcgVWludDMyQXJyYXkobm9kZXNDb3VudCk7CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgcm9vdFBvc3RPcmRlcmVkSW5kZXg7ICsraSkKKyAgICAgICAgICAgIGRvbWlu
YXRvcnNbaV0gPSBrTm9FbnRyeTsKKyAgICAgICAgZG9taW5hdG9yc1tyb290UG9zdE9yZGVyZWRJ
bmRleF0gPSByb290UG9zdE9yZGVyZWRJbmRleDsKKworICAgICAgICAvLyBUaGUgYWZmZWN0ZWQg
YXJyYXkgaXMgdXNlZCB0byBtYXJrIGVudHJpZXMgd2hpY2ggZG9taW5hdG9ycworICAgICAgICAv
LyBoYXZlIHRvIGJlIHJhY2FsY3VsYXRlZCBiZWNhdXNlIG9mIGNoYW5nZXMgaW4gdGhlaXIgcmV0
YWluZXJzLgorICAgICAgICB2YXIgYWZmZWN0ZWQgPSBuZXcgVWludDhBcnJheShub2Rlc0NvdW50
KTsKKworICAgICAgICB7IC8vIE1hcmsgdGhlIHJvb3QgZGlyZWN0IGNoaWxkcmVuIGFzIGFmZmVj
dGVkLgorICAgICAgICAgICAgdmFyIG5vZGVJbmRleCA9IHRoaXMuX3Jvb3ROb2RlSW5kZXg7Cisg
ICAgICAgICAgICB2YXIgYmVnaW5FZGdlVG9Ob2RlRmllbGRJbmRleCA9IG5vZGVzW25vZGVJbmRl
eCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0XSArIGVkZ2VUb05vZGVPZmZzZXQ7CisgICAgICAgICAg
ICB2YXIgZW5kRWRnZVRvTm9kZUZpZWxkSW5kZXggPSBub2Rlc1tub2RlSW5kZXggKyBub2RlRmll
bGRDb3VudCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0XTsKKyAgICAgICAgICAgIGZvciAodmFyIHRv
Tm9kZUZpZWxkSW5kZXggPSBiZWdpbkVkZ2VUb05vZGVGaWVsZEluZGV4OworICAgICAgICAgICAg
ICAgICB0b05vZGVGaWVsZEluZGV4IDwgZW5kRWRnZVRvTm9kZUZpZWxkSW5kZXg7CisgICAgICAg
ICAgICAgICAgIHRvTm9kZUZpZWxkSW5kZXggKz0gZWRnZUZpZWxkc0NvdW50KSB7CisgICAgICAg
ICAgICAgICAgdmFyIGNoaWxkTm9kZU9yZGluYWwgPSBjb250YWlubWVudEVkZ2VzW3RvTm9kZUZp
ZWxkSW5kZXhdIC8gbm9kZUZpZWxkQ291bnQ7CisgICAgICAgICAgICAgICAgYWZmZWN0ZWRbbm9k
ZU9yZGluYWwyUG9zdE9yZGVySW5kZXhbY2hpbGROb2RlT3JkaW5hbF1dID0gMTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZhciBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAg
d2hpbGUgKGNoYW5nZWQpIHsKKyAgICAgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAg
ICAgIGZvciAodmFyIHBvc3RPcmRlckluZGV4ID0gcm9vdFBvc3RPcmRlcmVkSW5kZXggLSAxOyBw
b3N0T3JkZXJJbmRleCA+PSAwOyAtLXBvc3RPcmRlckluZGV4KSB7CisgICAgICAgICAgICAgICAg
aWYgKGFmZmVjdGVkW3Bvc3RPcmRlckluZGV4XSA9PT0gMCkKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgYWZmZWN0ZWRbcG9zdE9yZGVySW5kZXhdID0gMDsK
KyAgICAgICAgICAgICAgICAvLyBJZiBkb21pbmF0b3Igb2YgdGhlIGVudHJ5IGhhcyBhbHJlYWR5
IGJlZW4gc2V0IHRvIHJvb3QsCisgICAgICAgICAgICAgICAgLy8gdGhlbiBpdCBjYW4ndCBwcm9w
YWdhdGUgYW55IGZ1cnRoZXIuCisgICAgICAgICAgICAgICAgaWYgKGRvbWluYXRvcnNbcG9zdE9y
ZGVySW5kZXhdID09PSByb290UG9zdE9yZGVyZWRJbmRleCkKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgdmFyIG5vZGVPcmRpbmFsID0gcG9zdE9yZGVySW5k
ZXgyTm9kZUluZGV4W3Bvc3RPcmRlckluZGV4XSAvIG5vZGVGaWVsZENvdW50OworICAgICAgICAg
ICAgICAgIHZhciBub2RlRmxhZyA9ICEhKGZsYWdzW25vZGVPcmRpbmFsXSAmIGZsYWcpOworICAg
ICAgICAgICAgICAgIHZhciBuZXdEb21pbmF0b3JJbmRleCA9IGtOb0VudHJ5OworICAgICAgICAg
ICAgICAgIHZhciBiZWdpblJldGFpbmVySW5kZXggPSBmaXJzdFJldGFpbmVySW5kZXhbbm9kZU9y
ZGluYWxdOworICAgICAgICAgICAgICAgIHZhciBlbmRSZXRhaW5lckluZGV4ID0gZmlyc3RSZXRh
aW5lckluZGV4W25vZGVPcmRpbmFsICsgMV07CisgICAgICAgICAgICAgICAgZm9yICh2YXIgcmV0
YWluZXJJbmRleCA9IGJlZ2luUmV0YWluZXJJbmRleDsgcmV0YWluZXJJbmRleCA8IGVuZFJldGFp
bmVySW5kZXg7ICsrcmV0YWluZXJJbmRleCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgcmV0
YWluZXJFZGdlSW5kZXggPSByZXRhaW5pbmdFZGdlc1tyZXRhaW5lckluZGV4XTsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIHJldGFpbmVyRWRnZVR5cGUgPSBjb250YWlubWVudEVkZ2VzW3JldGFp
bmVyRWRnZUluZGV4ICsgZWRnZVR5cGVPZmZzZXRdOworICAgICAgICAgICAgICAgICAgICB2YXIg
cmV0YWluZXJOb2RlSW5kZXggPSByZXRhaW5pbmdOb2Rlc1tyZXRhaW5lckluZGV4XTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHJldGFpbmVyTm9kZUluZGV4ICE9PSByb290Tm9kZUluZGV4ICYm
IHJldGFpbmVyRWRnZVR5cGUgPT09IGtTaG9ydGN1dCkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB2YXIgcmV0YWluZXJOb2RlT3JkaW5hbCA9
IHJldGFpbmVyTm9kZUluZGV4IC8gbm9kZUZpZWxkQ291bnQ7CisgICAgICAgICAgICAgICAgICAg
IHZhciByZXRhaW5lck5vZGVGbGFnID0gISEoZmxhZ3NbcmV0YWluZXJOb2RlT3JkaW5hbF0gJiBm
bGFnKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJldGFpbmVyTm9kZUluZGV4ICE9PSByb290
Tm9kZUluZGV4ICYmIG5vZGVGbGFnICYmICFyZXRhaW5lck5vZGVGbGFnKQorICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIHZhciByZXRhbmVyUG9z
dE9yZGVySW5kZXggPSBub2RlT3JkaW5hbDJQb3N0T3JkZXJJbmRleFtyZXRhaW5lck5vZGVPcmRp
bmFsXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRvbWluYXRvcnNbcmV0YW5lclBvc3RPcmRl
ckluZGV4XSAhPT0ga05vRW50cnkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdE
b21pbmF0b3JJbmRleCA9PT0ga05vRW50cnkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bmV3RG9taW5hdG9ySW5kZXggPSByZXRhbmVyUG9zdE9yZGVySW5kZXg7CisgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocmV0
YW5lclBvc3RPcmRlckluZGV4ICE9PSBuZXdEb21pbmF0b3JJbmRleCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAocmV0YW5lclBvc3RPcmRlckluZGV4IDwgbmV3RG9t
aW5hdG9ySW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRhbmVy
UG9zdE9yZGVySW5kZXggPSBkb21pbmF0b3JzW3JldGFuZXJQb3N0T3JkZXJJbmRleF07CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChuZXdEb21pbmF0b3JJbmRleCA8IHJl
dGFuZXJQb3N0T3JkZXJJbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5ld0RvbWluYXRvckluZGV4ID0gZG9taW5hdG9yc1tuZXdEb21pbmF0b3JJbmRleF07CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gSWYgaWRvbSBoYXMgYWxyZWFkeSByZWFjaGVkIHRoZSBy
b290LCBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRv
IGNoZWNrIG90aGVyIHJldGFpbmVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdE
b21pbmF0b3JJbmRleCA9PT0gcm9vdFBvc3RPcmRlcmVkSW5kZXgpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgaWYgKG5ld0RvbWluYXRvckluZGV4ICE9PSBrTm9FbnRyeSAm
JiBkb21pbmF0b3JzW3Bvc3RPcmRlckluZGV4XSAhPT0gbmV3RG9taW5hdG9ySW5kZXgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgZG9taW5hdG9yc1twb3N0T3JkZXJJbmRleF0gPSBuZXdEb21pbmF0
b3JJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgIG5vZGVJbmRleCA9IHBvc3RPcmRlckluZGV4Mk5vZGVJbmRleFtwb3N0T3JkZXJJ
bmRleF07CisgICAgICAgICAgICAgICAgICAgIG5vZGVPcmRpbmFsID0gbm9kZUluZGV4IC8gbm9k
ZUZpZWxkQ291bnQ7CisgICAgICAgICAgICAgICAgICAgIGJlZ2luRWRnZVRvTm9kZUZpZWxkSW5k
ZXggPSBub2Rlc1tub2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldF0gKyBlZGdlVG9Ob2Rl
T2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBlbmRFZGdlVG9Ob2RlRmllbGRJbmRleCA9IG5v
ZGVPcmRpbmFsIDwgbm9kZXNDb3VudCAtIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPyBub2Rlc1tub2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRleE9m
ZnNldCArIG5vZGVGaWVsZENvdW50XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6IGNvbnRhaW5tZW50RWRnZXNMZW5ndGg7CisgICAgICAgICAgICAg
ICAgICAgIGZvciAodmFyIHRvTm9kZUZpZWxkSW5kZXggPSBiZWdpbkVkZ2VUb05vZGVGaWVsZElu
ZGV4OworICAgICAgICAgICAgICAgICAgICAgICAgIHRvTm9kZUZpZWxkSW5kZXggPCBlbmRFZGdl
VG9Ob2RlRmllbGRJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgICB0b05vZGVGaWVsZElu
ZGV4ICs9IGVkZ2VGaWVsZHNDb3VudCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNo
aWxkTm9kZU9yZGluYWwgPSBjb250YWlubWVudEVkZ2VzW3RvTm9kZUZpZWxkSW5kZXhdIC8gbm9k
ZUZpZWxkQ291bnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBhZmZlY3RlZFtub2RlT3JkaW5h
bDJQb3N0T3JkZXJJbmRleFtjaGlsZE5vZGVPcmRpbmFsXV0gPSAxOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgdmFyIGRvbWluYXRvcnNUcmVlID0gbmV3IFVpbnQzMkFycmF5KG5vZGVzQ291bnQpOwor
ICAgICAgICBmb3IgKHZhciBwb3N0T3JkZXJJbmRleCA9IDAsIGwgPSBkb21pbmF0b3JzLmxlbmd0
aDsgcG9zdE9yZGVySW5kZXggPCBsOyArK3Bvc3RPcmRlckluZGV4KSB7CisgICAgICAgICAgICB2
YXIgbm9kZU9yZGluYWwgPSBwb3N0T3JkZXJJbmRleDJOb2RlSW5kZXhbcG9zdE9yZGVySW5kZXhd
IC8gbm9kZUZpZWxkQ291bnQ7CisgICAgICAgICAgICBkb21pbmF0b3JzVHJlZVtub2RlT3JkaW5h
bF0gPSBwb3N0T3JkZXJJbmRleDJOb2RlSW5kZXhbZG9taW5hdG9yc1twb3N0T3JkZXJJbmRleF1d
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBkb21pbmF0b3JzVHJlZTsKKyAgICB9LAorCiAg
ICAgX2J1aWxkRG9taW5hdGVkTm9kZXM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIC8vIEJ1
aWxkcyB1cCB0d28gYXJyYXlzOgpAQCAtMTE2MCw2ICsxMzQ5LDYzIEBAIFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAorICAgIF9tYXJr
UGFnZU93bmVkTm9kZXM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBlZGdlU2hvcnRj
dXRUeXBlID0gdGhpcy5fZWRnZVNob3J0Y3V0VHlwZTsKKyAgICAgICAgdmFyIGVkZ2VUb05vZGVP
ZmZzZXQgPSB0aGlzLl9lZGdlVG9Ob2RlT2Zmc2V0OworICAgICAgICB2YXIgZWRnZVR5cGVPZmZz
ZXQgPSB0aGlzLl9lZGdlVHlwZU9mZnNldDsKKyAgICAgICAgdmFyIGtTaG9ydGN1dCA9IHRoaXMu
X2VkZ2VTaG9ydGN1dFR5cGU7CisgICAgICAgIHZhciBlZGdlRmllbGRzQ291bnQgPSB0aGlzLl9l
ZGdlRmllbGRzQ291bnQ7CisgICAgICAgIHZhciBmaXJzdEVkZ2VJbmRleE9mZnNldCA9IHRoaXMu
X2ZpcnN0RWRnZUluZGV4T2Zmc2V0OworICAgICAgICB2YXIgY29udGFpbm1lbnRFZGdlcyA9IHRo
aXMuX2NvbnRhaW5tZW50RWRnZXM7CisgICAgICAgIHZhciBjb250YWlubWVudEVkZ2VzTGVuZ3Ro
ID0gY29udGFpbm1lbnRFZGdlcy5sZW5ndGg7CisgICAgICAgIHZhciBub2RlcyA9IHRoaXMuX25v
ZGVzOworICAgICAgICB2YXIgbm9kZUZpZWxkQ291bnQgPSB0aGlzLl9ub2RlRmllbGRDb3VudDsK
KyAgICAgICAgdmFyIG5vZGVzQ291bnQgPSB0aGlzLm5vZGVDb3VudDsKKworICAgICAgICB2YXIg
ZmxhZ3MgPSB0aGlzLl9mbGFnczsKKyAgICAgICAgdmFyIGZsYWcgPSB0aGlzLl9ub2RlRmxhZ3Mu
cGFnZU9iamVjdDsKKyAgICAgICAgdmFyIGtWaXNpdGVkTWFya2VyID0gdGhpcy5fbm9kZUZsYWdz
LnZpc2l0ZWRNYXJrZXI7CisgICAgICAgIHZhciBrVmlzaXRlZE1hcmtlck1hc2sgPSB0aGlzLl9u
b2RlRmxhZ3MudmlzaXRlZE1hcmtlck1hc2s7CisgICAgICAgIHZhciBtYXJrZXJBbmRGbGFnID0g
a1Zpc2l0ZWRNYXJrZXIgfCBmbGFnOworCisgICAgICAgIHZhciBub2Rlc1RvVmlzaXQgPSBuZXcg
VWludDMyQXJyYXkobm9kZXNDb3VudCk7CisgICAgICAgIHZhciBub2Rlc1RvVmlzaXRMZW5ndGgg
PSAwOworCisgICAgICAgIGZvciAodmFyIGVkZ2VJbmRleCA9IG5vZGVzW2ZpcnN0RWRnZUluZGV4
T2Zmc2V0XSwgZW5kRWRnZUluZGV4ID0gbm9kZXNbbm9kZUZpZWxkQ291bnQgKyBmaXJzdEVkZ2VJ
bmRleE9mZnNldF07CisgICAgICAgICAgICAgZWRnZUluZGV4IDwgZW5kRWRnZUluZGV4OworICAg
ICAgICAgICAgIGVkZ2VJbmRleCArPSBlZGdlRmllbGRzQ291bnQpIHsKKyAgICAgICAgICAgIGlm
IChjb250YWlubWVudEVkZ2VzW2VkZ2VJbmRleCArIGVkZ2VUeXBlT2Zmc2V0XSA9PT0ga1Nob3J0
Y3V0KSB7CisgICAgICAgICAgICAgICAgdmFyIG5vZGVJbmRleCA9IGNvbnRhaW5tZW50RWRnZXNb
ZWRnZUluZGV4ICsgZWRnZVRvTm9kZU9mZnNldF0KKyAgICAgICAgICAgICAgICBub2Rlc1RvVmlz
aXRbbm9kZXNUb1Zpc2l0TGVuZ3RoKytdID0gbm9kZUluZGV4OworICAgICAgICAgICAgICAgIGZs
YWdzW25vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50XSB8PSBrVmlzaXRlZE1hcmtlcjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHdoaWxlIChub2Rlc1RvVmlzaXRMZW5ndGgp
IHsKKyAgICAgICAgICAgIHZhciBub2RlSW5kZXggPSBub2Rlc1RvVmlzaXRbLS1ub2Rlc1RvVmlz
aXRMZW5ndGhdOworICAgICAgICAgICAgdmFyIG5vZGVPcmRpbmFsID0gbm9kZUluZGV4IC8gbm9k
ZUZpZWxkQ291bnQ7CisgICAgICAgICAgICBmbGFnc1tub2RlT3JkaW5hbF0gfD0gZmxhZzsKKyAg
ICAgICAgICAgIGZsYWdzW25vZGVPcmRpbmFsXSAmPSBrVmlzaXRlZE1hcmtlck1hc2s7CisgICAg
ICAgICAgICB2YXIgYmVnaW5FZGdlVG9Ob2RlRmllbGRJbmRleCA9IG5vZGVzW25vZGVJbmRleCAr
IGZpcnN0RWRnZUluZGV4T2Zmc2V0XSArIGVkZ2VUb05vZGVPZmZzZXQ7CisgICAgICAgICAgICB2
YXIgZW5kRWRnZVRvTm9kZUZpZWxkSW5kZXggPSAwOworICAgICAgICAgICAgaWYgKChub2RlT3Jk
aW5hbCkgPCBub2Rlc0NvdW50IC0gMSkKKyAgICAgICAgICAgICAgICBlbmRFZGdlVG9Ob2RlRmll
bGRJbmRleCA9IG5vZGVzW25vZGVJbmRleCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0ICsgbm9kZUZp
ZWxkQ291bnRdICsgZWRnZVRvTm9kZU9mZnNldDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBlbmRFZGdlVG9Ob2RlRmllbGRJbmRleCA9IGNvbnRhaW5tZW50RWRnZXNMZW5ndGg7
CisgICAgICAgICAgICBmb3IgKHZhciBlZGdlVG9Ob2RlSW5kZXggPSBiZWdpbkVkZ2VUb05vZGVG
aWVsZEluZGV4OworICAgICAgICAgICAgICAgICBlZGdlVG9Ob2RlSW5kZXggPCBlbmRFZGdlVG9O
b2RlRmllbGRJbmRleDsKKyAgICAgICAgICAgICAgICAgZWRnZVRvTm9kZUluZGV4ICs9IGVkZ2VG
aWVsZHNDb3VudCkgeworICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVJbmRleCA9IGNvbnRh
aW5tZW50RWRnZXNbZWRnZVRvTm9kZUluZGV4XTsKKyAgICAgICAgICAgICAgICB2YXIgY2hpbGRO
b2RlT3JkaW5hbCA9IGNoaWxkTm9kZUluZGV4IC8gbm9kZUZpZWxkQ291bnQ7CisgICAgICAgICAg
ICAgICAgaWYgKGZsYWdzW2NoaWxkTm9kZU9yZGluYWxdICYgbWFya2VyQW5kRmxhZykKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgbm9kZXNUb1Zpc2l0W25v
ZGVzVG9WaXNpdExlbmd0aCsrXSA9IGNoaWxkTm9kZUluZGV4OworICAgICAgICAgICAgICAgIGZs
YWdzW2NoaWxkTm9kZU9yZGluYWxdIHw9IGtWaXNpdGVkTWFya2VyOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfSwKKwogICAgIF9tYXJrUXVlcmlhYmxlSGVhcE9iamVjdHM6IGZ1bmN0
aW9uKCkKICAgICB7CiAgICAgICAgIC8vIEFsbG93IHJ1bnRpbWUgcHJvcGVydGllcyBxdWVyeSBm
b3Igb2JqZWN0cyBhY2Nlc3NpYmxlIGZyb20gV2luZG93IG9iamVjdHMKQEAgLTExODAsNiArMTQy
Niw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogCiAgICAgICAg
IHZhciBmbGFncyA9IHRoaXMuX2ZsYWdzOwogICAgICAgICB2YXIgbGlzdCA9IFtdOworCiAgICAg
ICAgIGZvciAodmFyIGl0ZXIgPSB0aGlzLnJvb3ROb2RlLmVkZ2VzOyBpdGVyLmhhc05leHQoKTsg
aXRlci5uZXh0KCkpIHsKICAgICAgICAgICAgIGlmIChpdGVyLmVkZ2Uubm9kZS5pc1dpbmRvdykK
ICAgICAgICAgICAgICAgICBsaXN0LnB1c2goaXRlci5lZGdlLm5vZGUubm9kZUluZGV4KTsKQEAg
LTEyMTIsNiArMTQ1OSw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLl9mbGFncyA9IG5ldyBVaW50MzJBcnJheSh0aGlzLm5vZGVDb3VudCk7
CiAgICAgICAgIHRoaXMuX21hcmtEZXRhY2hlZERPTVRyZWVOb2RlcygpOwogICAgICAgICB0aGlz
Ll9tYXJrUXVlcmlhYmxlSGVhcE9iamVjdHMoKTsKKyAgICAgICAgdGhpcy5fbWFya1BhZ2VPd25l
ZE5vZGVzKCk7CiAgICAgfSwKIAogICAgIGNhbGN1bGF0ZVNuYXBzaG90RGlmZjogZnVuY3Rpb24o
YmFzZVNuYXBzaG90SWQsIGJhc2VTbmFwc2hvdEFnZ3JlZ2F0ZXMpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWYxNWQ5NDAx
MDc2YjEyOGNiY2YzMjQ1OGMzNjE0Nzk0MDU0ZmQ5NC4uODQ5NjM5YTYxYzBhNTcwYjEyYjA4MDFm
Yjc1NDI3NmIwOGVhNzNlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA1LTE4ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiB1cHN0cmVhbSBidWlsZCBkb21pbmF0b3JzIHRyZWUgcHJvY2VkdXJlIGZyb20gdjguCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjY0MAorCisg
ICAgICAgIFRoZSBpZGVhIGlzIHRvIHJlZHVjZSB0cmFuc2ZlciBzaXplIGFuZCBtb3ZlIGFsbCB0
aGUgcG9zdC1wcm9jZXNzaW5nIHN0ZXBzIHRvIHRoZSBmcm9udC1lbmQuCisgICAgICAgIFRoZSBK
UyBpbXBsZW1lbnRhdGlvbiBpcyB+MS41IHRpbWVzIHNsb3dlci4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3Rz
IGFuZCBwZXJmb3JtYW5jZSB0ZXN0cy4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9o
ZWFwLXNuYXBzaG90LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIv
aGVhcC1zbmFwc2hvdC10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9IZWFwU25hcHNob3RU
ZXN0Lkluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9ja1Jhdyk6CisgICAgICAgICog
aW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRtbDoKKwogMjAxMi0wNS0xOCAgTWlr
ZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIERlZmxha2luZyBodHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9zY3JpcHQtc3JjLXJlZGlyZWN0Lmh0
bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBz
aG90LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNu
YXBzaG90LWV4cGVjdGVkLnR4dAppbmRleCBkM2RlNTY4MTYwY2I3ZmE0YTY5MjE3ZDViYjVlOWYy
MTc0ZThiMGQ3Li44OTIzMDA3MDRiZjFhMWFlYTA5YWY5ZjczMjQyNTk4MDAwMTY2Yjc5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNo
b3QtZXhwZWN0ZWQudHh0CkBAIC0xMyw2ICsxMywxMCBAQCBSdW5uaW5nOiBoZWFwU25hcHNob3RO
b2RlQW5kRWRnZVRlc3QKIAogUnVubmluZzogaGVhcFNuYXBzaG90U2ltcGxlVGVzdAogCitSdW5u
aW5nOiBoZWFwU25hcHNob3RQb3N0T3JkZXJJbmRleFRlc3QKKworUnVubmluZzogaGVhcFNuYXBz
aG90RG9taW5hdG9yc1RyZWVUZXN0CisKIFJ1bm5pbmc6IGhlYXBTbmFwc2hvdFJldGFpbmVyc1Rl
c3QKIAogUnVubmluZzogaGVhcFNuYXBzaG90QWdncmVnYXRlc1Rlc3QKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanMgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0LmpzCmluZGV4IDI5
MWM0MGQwODhiOWQ1MmRkZDBlNmViYWYzNTc3NTFhZDE0ODY3MGIuLmI1MzhlNjhiMWFlYzNjNmEz
NDQ0YzgwYTg3NGY0M2MzOTg1OWU4ZTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcwpAQCAtNjksMTcgKzY5LDI3IEBAIElu
c3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9ja1JhdyA9IGZ1bmN0aW9uKCkKICAgICAg
ICAgICAgIG5vZGVfY291bnQ6IDYsCiAgICAgICAgICAgICBlZGdlX2NvdW50OiA3fSwKICAgICAg
ICAgbm9kZXM6IFsKLSAgICAgICAgICAgIDAsIDAsIDEsIDAsIDIwLCAgMCwgIDAsCi0gICAgICAg
ICAgICAxLCAxLCAyLCAyLCAgMiwgIDAsICA2LAotICAgICAgICAgICAgMSwgMiwgMywgMywgIDgs
ICAwLCAxMiwKLSAgICAgICAgICAgIDEsIDMsIDQsIDQsIDEwLCAgMCwgMTgsCi0gICAgICAgICAg
ICAxLCA0LCA1LCA1LCAgNSwgMTQsIDIxLAotICAgICAgICAgICAgMSwgNSwgNiwgNiwgIDYsIDIx
LCAyMV0sCisgICAgICAgICAgICAwLCAwLCAxLCAwLCAyMCwgIDAsICAwLCAvLyByb290ICgwKQor
ICAgICAgICAgICAgMSwgMSwgMiwgMiwgIDIsICAwLCAgNiwgLy8gQSAoNykKKyAgICAgICAgICAg
IDEsIDIsIDMsIDMsICA4LCAgMCwgMTIsIC8vIEIgKDE0KQorICAgICAgICAgICAgMSwgMywgNCwg
NCwgMTAsICAwLCAxOCwgLy8gQyAoMjEpCisgICAgICAgICAgICAxLCA0LCA1LCA1LCAgNSwgMTQs
IDIxLCAvLyBEICgyOCkKKyAgICAgICAgICAgIDEsIDUsIDYsIDYsICA2LCAyMSwgMjFdLC8vIEUg
KDM1KQogICAgICAgICBlZGdlczogWwotICAgICAgICAgICAgMSwgIDYsICA3LCAxLCAgNywgMTQs
Ci0gICAgICAgICAgICAwLCAgMSwgMTQsIDEsICA4LCAyMSwKLSAgICAgICAgICAgIDEsICA5LCAy
MSwgMSwgMTAsIDI4LAotICAgICAgICAgICAgMSwgMTEsIDM1XSwKKyAgICAgICAgICAgIC8vIHJv
b3Qgbm9kZSBlZGdlcworICAgICAgICAgICAgMSwgIDYsICA3LCAvLyBwcm9wZXJ0eSAnYScgdG8g
bm9kZSAnQScKKyAgICAgICAgICAgIDEsICA3LCAxNCwgLy8gcHJvcGVydHkgJ2InIHRvIG5vZGUg
J0InCisKKyAgICAgICAgICAgIC8vIEEgbm9kZSBlZGdlcworICAgICAgICAgICAgMCwgIDEsIDE0
LCAvLyBlbGVtZW50IDEgdG8gbm9kZSAnQicKKyAgICAgICAgICAgIDEsICA4LCAyMSwgLy8gcHJv
cGVydHkgJ2FjJyB0byBub2RlICdDJworCisgICAgICAgICAgICAvLyBCIG5vZGUgZWRnZXMKKyAg
ICAgICAgICAgIDEsICA5LCAyMSwgLy8gcHJvcGVydHkgJ2JjJyB0byBub2RlICdDJworICAgICAg
ICAgICAgMSwgMTAsIDI4LCAvLyBwcm9wZXJ0eSAnYmQnIHRvIG5vZGUgJ0QnCisKKyAgICAgICAg
ICAgIC8vIEMgbm9kZSBlZGdlcworICAgICAgICAgICAgMSwgMTEsIDM1XSwgLy8gcHJvcGVydHkg
J2NlJyB0byBub2RlICdFJwogICAgICAgICBzdHJpbmdzOiBbIiIsICJBIiwgIkIiLCAiQyIsICJE
IiwgIkUiLCAiYSIsICJiIiwgImFjIiwgImJjIiwgImJkIiwgImNlIl0KICAgICB9OwogfTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90Lmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC5odG1sCmlu
ZGV4IDQ0YjI5M2RkYmZhMjYzMTZjODE0MzBkNGRlMGRiZGNlMGJmNDA1NGEuLjRlMzU4M2YzMWRl
ZDcyZjdkM2VmNTEwYTU0NDc0ZWNmMzE4ZTIwZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRtbApAQCAtOTUsNiArOTUsMjcgQEAgZnVu
Y3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgIH0sCiAKKyAgICAgICAg
ZnVuY3Rpb24gaGVhcFNuYXBzaG90UG9zdE9yZGVySW5kZXhUZXN0KG5leHQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBzbmFwc2hvdCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
KEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9jaygpKTsKKyAgICAgICAgICAgIHZh
ciBwb3N0T3JkZXJJbmRleCA9IHNuYXBzaG90Ll9idWlsZFBvc3RPcmRlckluZGV4KCkucG9zdE9y
ZGVySW5kZXgyTm9kZUluZGV4OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkID0gWzI4LDM1LDIx
LDE0LDcsMF07CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkLmxlbmd0
aDsgKytpKQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGV4cGVj
dGVkW2ldLCBwb3N0T3JkZXJJbmRleFtpXSwgIlBvc3Qgb3JkZXJlZCBpbmRleGVzIik7CisgICAg
ICAgICAgICBuZXh0KCk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gaGVhcFNuYXBz
aG90RG9taW5hdG9yc1RyZWVUZXN0KG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBz
bmFwc2hvdCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90KEluc3BlY3RvclRlc3QuY3Jl
YXRlSGVhcFNuYXBzaG90TW9jaygpKTsKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSBzbmFwc2hv
dC5fYnVpbGRQb3N0T3JkZXJJbmRleCgpOworICAgICAgICAgICAgdmFyIGRvbWluYXRvcnNUcmVl
ID0gc25hcHNob3QuX2J1aWxkRG9taW5hdG9yVHJlZShyZXN1bHQucG9zdE9yZGVySW5kZXgyTm9k
ZUluZGV4LCByZXN1bHQubm9kZU9yZGluYWwyUG9zdE9yZGVySW5kZXgpOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkID0gWzAsIDAsIDAsIDAsIDE0LCAyMV07CisgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGV4cGVjdGVkLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkW2ldLCBkb21pbmF0b3JzVHJlZVtpXSwgIkRv
bWluYXRvcnMgVHJlZSIpOworICAgICAgICAgICAgbmV4dCgpOworICAgICAgICB9LAorCiAgICAg
ICAgIGZ1bmN0aW9uIGhlYXBTbmFwc2hvdFJldGFpbmVyc1Rlc3QobmV4dCkKICAgICAgICAgewog
ICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qo
SW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrKCkpOwpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRl
eCBmZjMxNzJjZDA5ZTNhMzhhZTcwNjU1MjUzNDQyMjIyMjAxNjMwNDUzLi45NjE0MjhkYTQ1ZTNm
OWI3ZDU1ZjlmNTY0NGVmODc4YWRiODBlZGMwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDEyLTA1LTE4ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiB1cHN0cmVhbSBidWlsZCBkb21pbmF0b3JzIHRyZWUg
cHJvY2VkdXJlIGZyb20gdjguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NjY0MAorCisgICAgICAgIFRoZSBpZGVhIGlzIHRvIHJlZHVjZSB0cmFuc2Zl
ciBzaXplIGFuZCBtb3ZlIGFsbCB0aGUgcG9zdC1wcm9jZXNzaW5nIHN0ZXBzIHRvIHRoZSBmcm9u
dC1lbmQuCisgICAgICAgIFRoZSBKUyBpbXBsZW1lbnRhdGlvbiBpcyB+MS41IHRpbWVzIHNsb3dl
ci4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzIGFuZCBwZXJmb3JtYW5jZSB0ZXN0cy4KKworICAgICAgICAq
IGluc3BlY3Rvci9oZWFwLXNuYXBzaG90Lmh0bWw6CisKIDIwMTItMDUtMTggIEtlbnRhcm8gSGFy
YSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtwZXJmLXRlc3RdIEFkZCBhIGJp
bmRpbmcgYmVuY2htYXJrIGZvciBnZXRFbGVtZW50QnlJZCgpIGZvciBhbiB1bmRlZmluZWQgaWQK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2hlYXAtc25hcHNob3QuaHRt
bCBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2hlYXAtc25hcHNob3QuaHRtbAppbmRleCA5
Y2UzMWViZmMwMWU2Y2U5ZjlkN2ZmMDQ1NDZkMWYxMDdmNDE0Yjk2Li5iNzAxMmVjMmFjZDZiOTQ0
YWI3YjY1ZTAzNjMyMjE5YzViYTI4YzdiIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL2lu
c3BlY3Rvci9oZWFwLXNuYXBzaG90Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0
b3IvaGVhcC1zbmFwc2hvdC5odG1sCkBAIC0yOCw3ICsyOCwxMCBAQCBmdW5jdGlvbiB0ZXN0KCkK
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2NhbGN1bGF0ZU9iamVjdFRvV2luZG93RGlzdGFuY2Ui
KTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX21hcmtEZXRhY2hlZERPTVRyZWVOb2RlcyIpOwog
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdC5wcm90b3R5cGUsICJfbWFya1F1ZXJpYWJsZUhlYXBPYmplY3RzIik7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90LnByb3RvdHlwZSwgIl9tYXJrUGFnZU93bmVkTm9kZXMiKTsKICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJv
dG90eXBlLCAiX3NwbGl0Tm9kZXNBbmRDb250YWlubWVudEVkZ2VzIik7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnBy
b3RvdHlwZSwgIl9idWlsZFBvc3RPcmRlckluZGV4Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwg
Il9idWlsZERvbWluYXRvclRyZWUiKTsKIAogICAgICAgICAgICAgdGltZXIuZmluaXNoKGJhY2tl
bmRUaW1lckNvb2tpZSk7CiAgICAgICAgICAgICB0cmFuc2ZlclRpbWVyQ29va2llID0gdGltZXIu
c3RhcnQoInRyYW5zZmVyLXNuYXBzaG90Iik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142753</attachid>
            <date>2012-05-18 11:48:05 -0700</date>
            <delta_ts>2012-05-21 00:50:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86640-20120518224803.patch</filename>
            <type>text/plain</type>
            <size>25155</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTg1YjhkMjZhY2Y2NzU2
NDI1MjY0MDM1M2VlOTYxYmVkMWYzMDQzMi4uNzA4MjFhOTk4ZDZmMDhkMzZjMzJkNDgxNjk4MTcy
OTYwM2Y0YWE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA1LTE4ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiB1cHN0cmVhbSBidWlsZCBkb21pbmF0b3JzIHRyZWUgcHJvY2VkdXJlIGZyb20gdjguCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjY0MAorCisg
ICAgICAgIFRoZSBpZGVhIGlzIHRvIHJlZHVjZSB0cmFuc2ZlciBzaXplIGFuZCBtb3ZlIGFsbCB0
aGUgcG9zdC1wcm9jZXNzaW5nIHN0ZXBzIHRvIHRoZSBmcm9udC1lbmQuCisgICAgICAgIFRoZSBK
UyBpbXBsZW1lbnRhdGlvbiBpcyB+MS41IHRpbWVzIHNsb3dlci4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3Rz
IGFuZCBwZXJmb3JtYW5jZSB0ZXN0cy4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
SGVhcFNuYXBzaG90LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90
b3R5cGUuX2luaXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5
cGUuX2J1aWxkQWdncmVnYXRlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
LnByb3RvdHlwZS5fYnVpbGRQb3N0T3JkZXJJbmRleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90LnByb3RvdHlwZS5fYnVpbGREb21pbmF0b3JUcmVlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9tYXJrUGFnZU93bmVkTm9kZXMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX21hcmtRdWVyaWFi
bGVIZWFwT2JqZWN0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3Rv
dHlwZS5fY2FsY3VsYXRlRmxhZ3MpOgorCiAyMDEyLTA1LTE4ICBTaGV6YW4gQmFpZyAgPHNoZXpi
YWlnLndrQGdtYWlsLmNvbT4KIAogICAgICAgICBFeHBvc2UgRnJhbWVTZWxlY3Rpb246OmFic29s
dXRlQ2FyZXRCb3VuZHMgdmlhIHdpbmRvdy5pbnRlcm5hbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKaW5kZXggMzAxYzc4MmExZTM2
OTk0NDVjZTQ1M2NlOTM0Yzk0ZTM1NmZiYTMzMy4uNjUyNjAzNGZmMTRjN2VmM2Y5YTg0NTU2YzJh
ZGEzYjRlZjc4Mzc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9IZWFwU25hcHNob3QuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9IZWFwU25hcHNob3QuanMKQEAgLTcwOCw2ICs3MDgsMTAgQEAgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX25vZGVGbGFncyA9IHsgLy8g
Yml0IGZsYWdzCiAgICAgICAgICAgICBjYW5CZVF1ZXJpZWQ6IDEsCiAgICAgICAgICAgICBkZXRh
Y2hlZERPTVRyZWVOb2RlOiAyLAorICAgICAgICAgICAgcGFnZU9iamVjdDogNCwgLy8gVGhlIGlk
ZWEgaXMgdG8gdHJhY2sgc2VwYXJhdGVseSB0aGUgb2JqZWN0cyBvd25lZCBieSB0aGUgcGFnZSBh
bmQgdGhlIG9iamVjdHMgb3duZWQgYnkgZGVidWdnZXIuCisKKyAgICAgICAgICAgIHZpc2l0ZWRN
YXJrZXJNYXNrOiAweDBmZmZmLCAvLyBiaXRzOiAwLDExMTEsMTExMSwxMTExLDExMTEKKyAgICAg
ICAgICAgIHZpc2l0ZWRNYXJrZXI6ICAgICAweDEwMDAwICAvLyBiaXRzOiAxLDAwMDAsMDAwMCww
MDAwLDAwMDAKICAgICAgICAgfTsKIAogICAgICAgICB0aGlzLm5vZGVDb3VudCA9IHRoaXMuX25v
ZGVzLmxlbmd0aCAvIHRoaXMuX25vZGVGaWVsZENvdW50OwpAQCAtNzE5LDYgKzcyMyw4IEBAIFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5f
YnVpbGREb21pbmF0ZWROb2RlcygpCiAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUZsYWdzKCk7CiAg
ICAgICAgIHRoaXMuX2NhbGN1bGF0ZU9iamVjdFRvV2luZG93RGlzdGFuY2UoKTsKKyAgICAgICAg
dmFyIHJlc3VsdCA9IHRoaXMuX2J1aWxkUG9zdE9yZGVySW5kZXgoKTsKKyAgICAgICAgdGhpcy5f
ZG9taW5hdG9yc1RyZWUgPSB0aGlzLl9idWlsZERvbWluYXRvclRyZWUocmVzdWx0LnBvc3RPcmRl
ckluZGV4Mk5vZGVJbmRleCwgcmVzdWx0Lm5vZGVPcmRpbmFsMlBvc3RPcmRlckluZGV4KTsKICAg
ICB9LAogCiAgICAgX2J1aWxkUmV0YWluZXJzOiBmdW5jdGlvbigpCkBAIC03ODcsNiArNzkzLDcg
QEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0
ZSB0aGlzLl9maXJzdERvbWluYXRlZE5vZGVJbmRleDsKICAgICAgICAgZGVsZXRlIHRoaXMuX2Zs
YWdzOwogICAgICAgICBkZWxldGUgdGhpcy5fZGlzdGFuY2VzVG9XaW5kb3c7CisgICAgICAgIGRl
bGV0ZSB0aGlzLl9kb21pbmF0b3JzVHJlZTsKICAgICB9LAogCiAgICAgZ2V0IF9hbGxOb2Rlcygp
CkBAIC05NTksMTQgKzk2NiwxNCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdmFyIG5vZGVzID0gdGhpcy5fbm9kZXM7CiAgICAgICAgIHZhciBub2Rl
c0xlbmd0aCA9IG5vZGVzLmxlbmd0aDsKICAgICAgICAgdmFyIG5vZGVOYXRpdmVUeXBlID0gdGhp
cy5fbm9kZU5hdGl2ZVR5cGU7Ci0gICAgICAgIHZhciBub2RlRmllbGRzQ291bnQgPSB0aGlzLl9u
b2RlRmllbGRDb3VudDsKKyAgICAgICAgdmFyIG5vZGVGaWVsZENvdW50ID0gdGhpcy5fbm9kZUZp
ZWxkQ291bnQ7CiAgICAgICAgIHZhciBzZWxmU2l6ZU9mZnNldCA9IHRoaXMuX25vZGVTZWxmU2l6
ZU9mZnNldDsKICAgICAgICAgdmFyIG5vZGVUeXBlT2Zmc2V0ID0gdGhpcy5fbm9kZVR5cGVPZmZz
ZXQ7CiAgICAgICAgIHZhciBub2RlID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2Rl
KHRoaXMsIHRoaXMuX3Jvb3ROb2RlSW5kZXgpOwogICAgICAgICB2YXIgZGlzdGFuY2VzVG9XaW5k
b3cgPSB0aGlzLl9kaXN0YW5jZXNUb1dpbmRvdzsKIAotICAgICAgICBmb3IgKHZhciBub2RlSW5k
ZXggPSB0aGlzLl9yb290Tm9kZUluZGV4OyBub2RlSW5kZXggPCBub2Rlc0xlbmd0aDsgbm9kZUlu
ZGV4ICs9IG5vZGVGaWVsZHNDb3VudCkgewotICAgICAgICAgICAgdmFyIG5vZGVPcmRpbmFsID0g
bm9kZUluZGV4IC8gbm9kZUZpZWxkc0NvdW50OworICAgICAgICBmb3IgKHZhciBub2RlSW5kZXgg
PSB0aGlzLl9yb290Tm9kZUluZGV4OyBub2RlSW5kZXggPCBub2Rlc0xlbmd0aDsgbm9kZUluZGV4
ICs9IG5vZGVGaWVsZENvdW50KSB7CisgICAgICAgICAgICB2YXIgbm9kZU9yZGluYWwgPSBub2Rl
SW5kZXggLyBub2RlRmllbGRDb3VudDsKICAgICAgICAgICAgIG5vZGUubm9kZUluZGV4ID0gbm9k
ZUluZGV4OwogICAgICAgICAgICAgdmFyIHNlbGZTaXplID0gbm9kZXNbbm9kZUluZGV4ICsgc2Vs
ZlNpemVPZmZzZXRdOwogICAgICAgICAgICAgaWYgKGZpbHRlciAmJiAhZmlsdGVyKG5vZGUpKQpA
QCAtMTA2Myw2ICsxMDcwLDE5MyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgICAgICB9KTsKICAgICB9LAogCisgICAgX2J1aWxkUG9zdE9yZGVy
SW5kZXg6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBub2RlRmllbGRDb3VudCA9IHRo
aXMuX25vZGVGaWVsZENvdW50OworICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKKyAg
ICAgICAgdmFyIG5vZGVDb3VudCA9IHRoaXMubm9kZUNvdW50OworICAgICAgICB2YXIgcm9vdE5v
ZGVJbmRleCA9IHRoaXMuX3Jvb3ROb2RlSW5kZXg7CisKKyAgICAgICAgdmFyIGVkZ2VGaWVsZHND
b3VudCA9IHRoaXMuX2VkZ2VGaWVsZHNDb3VudDsKKyAgICAgICAgdmFyIGVkZ2VUb05vZGVPZmZz
ZXQgPSB0aGlzLl9lZGdlVG9Ob2RlT2Zmc2V0OworICAgICAgICB2YXIgZWRnZVR5cGVPZmZzZXQg
PSB0aGlzLl9lZGdlVHlwZU9mZnNldDsKKyAgICAgICAgdmFyIGVkZ2VTaG9ydGN1dFR5cGUgPSB0
aGlzLl9lZGdlU2hvcnRjdXRUeXBlOworICAgICAgICB2YXIgZmlyc3RFZGdlSW5kZXhPZmZzZXQg
PSB0aGlzLl9maXJzdEVkZ2VJbmRleE9mZnNldDsKKyAgICAgICAgdmFyIGNvbnRhaW5tZW50RWRn
ZXMgPSB0aGlzLl9jb250YWlubWVudEVkZ2VzOworICAgICAgICB2YXIgY29udGFpbm1lbnRFZGdl
c0xlbmd0aCA9IHRoaXMuX2NvbnRhaW5tZW50RWRnZXMubGVuZ3RoOworCisgICAgICAgIHZhciBm
bGFncyA9IHRoaXMuX2ZsYWdzOworICAgICAgICB2YXIgZmxhZyA9IHRoaXMuX25vZGVGbGFncy5w
YWdlT2JqZWN0OworCisgICAgICAgIHZhciBub2Rlc1RvVmlzaXQgPSBuZXcgVWludDMyQXJyYXko
bm9kZUNvdW50KTsKKyAgICAgICAgdmFyIHBvc3RPcmRlckluZGV4Mk5vZGVJbmRleCA9IG5ldyBV
aW50MzJBcnJheShub2RlQ291bnQpOworICAgICAgICB2YXIgbm9kZU9yZGluYWwyUG9zdE9yZGVy
SW5kZXggPSBuZXcgVWludDMyQXJyYXkobm9kZUNvdW50KTsKKyAgICAgICAgdmFyIHBhaW50ZWQg
PSBuZXcgVWludDhBcnJheShub2RlQ291bnQpOworICAgICAgICB2YXIgbm9kZXNUb1Zpc2l0TGVu
Z3RoID0gMDsKKyAgICAgICAgdmFyIHBvc3RPcmRlckluZGV4ID0gMDsKKyAgICAgICAgdmFyIGdy
ZXkgPSAxOworICAgICAgICB2YXIgYmxhY2sgPSAyOworCisgICAgICAgIG5vZGVzVG9WaXNpdFtu
b2Rlc1RvVmlzaXRMZW5ndGgrK10gPSB0aGlzLl9yb290Tm9kZUluZGV4OworICAgICAgICBwYWlu
dGVkW3RoaXMuX3Jvb3ROb2RlSW5kZXggLyBub2RlRmllbGRDb3VudF0gPSBncmV5OworCisgICAg
ICAgIHdoaWxlIChub2Rlc1RvVmlzaXRMZW5ndGgpIHsKKyAgICAgICAgICAgIHZhciBub2RlSW5k
ZXggPSBub2Rlc1RvVmlzaXRbbm9kZXNUb1Zpc2l0TGVuZ3RoIC0gMV07CisgICAgICAgICAgICB2
YXIgbm9kZU9yZGluYWwgPSBub2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsKKyAgICAgICAgICAg
IGlmIChwYWludGVkW25vZGVPcmRpbmFsXSA9PT0gZ3JleSkgeworICAgICAgICAgICAgICAgIHBh
aW50ZWRbbm9kZU9yZGluYWxdID0gYmxhY2s7CisgICAgICAgICAgICAgICAgdmFyIG5vZGVGbGFn
ID0gZmxhZ3Nbbm9kZU9yZGluYWxdICYgZmxhZzsKKyAgICAgICAgICAgICAgICB2YXIgYmVnaW5F
ZGdlSW5kZXggPSBub2Rlc1tub2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldF07CisgICAg
ICAgICAgICAgICAgdmFyIGVuZEVkZ2VJbmRleCA9ICBub2RlT3JkaW5hbCA8IG5vZGVDb3VudCAt
IDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbm9kZXNbbm9kZUluZGV4
ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXQgKyBub2RlRmllbGRDb3VudF0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogY29udGFpbm1lbnRFZGdlc0xlbmd0aDsKKyAgICAgICAg
ICAgICAgICBmb3IgKHZhciBlZGdlSW5kZXggPSBiZWdpbkVkZ2VJbmRleDsgZWRnZUluZGV4IDwg
ZW5kRWRnZUluZGV4OyBlZGdlSW5kZXggKz0gZWRnZUZpZWxkc0NvdW50KSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChub2RlSW5kZXggIT09IHJvb3ROb2RlSW5kZXggJiYgY29udGFpbm1lbnRF
ZGdlc1tlZGdlSW5kZXggKyBlZGdlVHlwZU9mZnNldF0gPT09IGVkZ2VTaG9ydGN1dFR5cGUpCisg
ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgdmFy
IGNoaWxkTm9kZUluZGV4ID0gY29udGFpbm1lbnRFZGdlc1tlZGdlSW5kZXggKyBlZGdlVG9Ob2Rl
T2Zmc2V0XTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGNoaWxkTm9kZU9yZGluYWwgPSBjaGls
ZE5vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50OworICAgICAgICAgICAgICAgICAgICB2YXIgY2hp
bGROb2RlRmxhZyA9IGZsYWdzW2NoaWxkTm9kZU9yZGluYWxdICYgZmxhZzsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gV2UgYXJlIHNraXBwaW5nIHRoZSBlZGdlcyBmcm9tIG5vbi1wYWdlLW93bmVk
IG5vZGVzIHRvIHBhZ2Utb3duZWQgbm9kZXMuCisgICAgICAgICAgICAgICAgICAgIC8vIE90aGVy
d2lzZSB0aGUgZG9taW5hdG9ycyBmb3IgdGhlIG9iamVjdHMgdGhhdCBhbHNvIHdlcmUgcmV0YWlu
ZWQgYnkgZGVidWdnZXIgd291bGQgYmUgYWZmZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgIGlm
IChub2RlSW5kZXggIT09IHJvb3ROb2RlSW5kZXggJiYgY2hpbGROb2RlRmxhZyAmJiAhbm9kZUZs
YWcpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFwYWludGVkW2NoaWxkTm9kZU9yZGluYWxdKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBwYWludGVkW2NoaWxkTm9kZU9yZGluYWxdID0gZ3JleTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGVzVG9WaXNpdFtub2Rlc1RvVmlzaXRMZW5ndGgrK10gPSBjaGlsZE5vZGVJbmRl
eDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbm9kZU9yZGluYWwyUG9zdE9yZGVySW5kZXhbbm9k
ZU9yZGluYWxdID0gcG9zdE9yZGVySW5kZXg7CisgICAgICAgICAgICAgICAgcG9zdE9yZGVySW5k
ZXgyTm9kZUluZGV4W3Bvc3RPcmRlckluZGV4KytdID0gbm9kZUluZGV4OworICAgICAgICAgICAg
ICAgIC0tbm9kZXNUb1Zpc2l0TGVuZ3RoOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIHJldHVybiB7cG9zdE9yZGVySW5kZXgyTm9kZUluZGV4OiBwb3N0T3JkZXJJbmRleDJOb2Rl
SW5kZXgsIG5vZGVPcmRpbmFsMlBvc3RPcmRlckluZGV4OiBub2RlT3JkaW5hbDJQb3N0T3JkZXJJ
bmRleH07CisgICAgfSwKKworICAgIC8vIFRoZSBhbGdvcml0aG0gaXMgYmFzZWQgb24gdGhlIGFy
dGljbGU6CisgICAgLy8gSy4gQ29vcGVyLCBULiBIYXJ2ZXkgYW5kIEsuIEtlbm5lZHkgIkEgU2lt
cGxlLCBGYXN0IERvbWluYW5jZSBBbGdvcml0aG0iCisgICAgLy8gU29mdHcuIFByYWN0LiBFeHBl
ci4gNCAoMjAwMSksIHBwLiAxLTEwLgorICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXkuPG51
bWJlcj59IHBvc3RPcmRlckluZGV4Mk5vZGVJbmRleAorICAgICAqIEBwYXJhbSB7QXJyYXkuPG51
bWJlcj59IG5vZGVPcmRpbmFsMlBvc3RPcmRlckluZGV4CisgICAgICovCisgICAgX2J1aWxkRG9t
aW5hdG9yVHJlZTogZnVuY3Rpb24ocG9zdE9yZGVySW5kZXgyTm9kZUluZGV4LCBub2RlT3JkaW5h
bDJQb3N0T3JkZXJJbmRleCkKKyAgICB7CisgICAgICAgIHZhciBub2RlRmllbGRDb3VudCA9IHRo
aXMuX25vZGVGaWVsZENvdW50OworICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKKyAg
ICAgICAgdmFyIGZpcnN0UmV0YWluZXJJbmRleCA9IHRoaXMuX2ZpcnN0UmV0YWluZXJJbmRleDsK
KyAgICAgICAgdmFyIHJldGFpbmluZ05vZGVzID0gdGhpcy5fcmV0YWluaW5nTm9kZXM7CisgICAg
ICAgIHZhciByZXRhaW5pbmdFZGdlcyA9IHRoaXMuX3JldGFpbmluZ0VkZ2VzOworICAgICAgICB2
YXIgZWRnZUZpZWxkc0NvdW50ID0gdGhpcy5fZWRnZUZpZWxkc0NvdW50OworICAgICAgICB2YXIg
ZWRnZVRvTm9kZU9mZnNldCA9IHRoaXMuX2VkZ2VUb05vZGVPZmZzZXQ7CisgICAgICAgIHZhciBl
ZGdlVHlwZU9mZnNldCA9IHRoaXMuX2VkZ2VUeXBlT2Zmc2V0OworICAgICAgICB2YXIgZWRnZVNo
b3J0Y3V0VHlwZSA9IHRoaXMuX2VkZ2VTaG9ydGN1dFR5cGU7CisgICAgICAgIHZhciBmaXJzdEVk
Z2VJbmRleE9mZnNldCA9IHRoaXMuX2ZpcnN0RWRnZUluZGV4T2Zmc2V0OworICAgICAgICB2YXIg
Y29udGFpbm1lbnRFZGdlcyA9IHRoaXMuX2NvbnRhaW5tZW50RWRnZXM7CisgICAgICAgIHZhciBj
b250YWlubWVudEVkZ2VzTGVuZ3RoID0gdGhpcy5fY29udGFpbm1lbnRFZGdlcy5sZW5ndGg7Cisg
ICAgICAgIHZhciByb290Tm9kZUluZGV4ID0gdGhpcy5fcm9vdE5vZGVJbmRleDsKKworICAgICAg
ICB2YXIgZmxhZ3MgPSB0aGlzLl9mbGFnczsKKyAgICAgICAgdmFyIGZsYWcgPSB0aGlzLl9ub2Rl
RmxhZ3MucGFnZU9iamVjdDsKKworICAgICAgICB2YXIgbm9kZXNDb3VudCA9IHBvc3RPcmRlcklu
ZGV4Mk5vZGVJbmRleC5sZW5ndGg7CisgICAgICAgIHZhciByb290UG9zdE9yZGVyZWRJbmRleCA9
IG5vZGVzQ291bnQgLSAxOworICAgICAgICB2YXIgbm9FbnRyeSA9IG5vZGVzQ291bnQ7CisgICAg
ICAgIHZhciBkb21pbmF0b3JzID0gbmV3IFVpbnQzMkFycmF5KG5vZGVzQ291bnQpOworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHJvb3RQb3N0T3JkZXJlZEluZGV4OyArK2kpCisgICAgICAg
ICAgICBkb21pbmF0b3JzW2ldID0gbm9FbnRyeTsKKyAgICAgICAgZG9taW5hdG9yc1tyb290UG9z
dE9yZGVyZWRJbmRleF0gPSByb290UG9zdE9yZGVyZWRJbmRleDsKKworICAgICAgICAvLyBUaGUg
YWZmZWN0ZWQgYXJyYXkgaXMgdXNlZCB0byBtYXJrIGVudHJpZXMgd2hpY2ggZG9taW5hdG9ycwor
ICAgICAgICAvLyBoYXZlIHRvIGJlIHJhY2FsY3VsYXRlZCBiZWNhdXNlIG9mIGNoYW5nZXMgaW4g
dGhlaXIgcmV0YWluZXJzLgorICAgICAgICB2YXIgYWZmZWN0ZWQgPSBuZXcgVWludDhBcnJheShu
b2Rlc0NvdW50KTsKKworICAgICAgICB7IC8vIE1hcmsgdGhlIHJvb3QgZGlyZWN0IGNoaWxkcmVu
IGFzIGFmZmVjdGVkLgorICAgICAgICAgICAgdmFyIG5vZGVJbmRleCA9IHRoaXMuX3Jvb3ROb2Rl
SW5kZXg7CisgICAgICAgICAgICB2YXIgYmVnaW5FZGdlVG9Ob2RlRmllbGRJbmRleCA9IG5vZGVz
W25vZGVJbmRleCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0XSArIGVkZ2VUb05vZGVPZmZzZXQ7Cisg
ICAgICAgICAgICB2YXIgZW5kRWRnZVRvTm9kZUZpZWxkSW5kZXggPSBub2Rlc1tub2RlSW5kZXgg
KyBub2RlRmllbGRDb3VudCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0XTsKKyAgICAgICAgICAgIGZv
ciAodmFyIHRvTm9kZUZpZWxkSW5kZXggPSBiZWdpbkVkZ2VUb05vZGVGaWVsZEluZGV4OworICAg
ICAgICAgICAgICAgICB0b05vZGVGaWVsZEluZGV4IDwgZW5kRWRnZVRvTm9kZUZpZWxkSW5kZXg7
CisgICAgICAgICAgICAgICAgIHRvTm9kZUZpZWxkSW5kZXggKz0gZWRnZUZpZWxkc0NvdW50KSB7
CisgICAgICAgICAgICAgICAgdmFyIGNoaWxkTm9kZU9yZGluYWwgPSBjb250YWlubWVudEVkZ2Vz
W3RvTm9kZUZpZWxkSW5kZXhdIC8gbm9kZUZpZWxkQ291bnQ7CisgICAgICAgICAgICAgICAgYWZm
ZWN0ZWRbbm9kZU9yZGluYWwyUG9zdE9yZGVySW5kZXhbY2hpbGROb2RlT3JkaW5hbF1dID0gMTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZhciBjaGFuZ2VkID0gdHJ1ZTsK
KyAgICAgICAgd2hpbGUgKGNoYW5nZWQpIHsKKyAgICAgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsK
KyAgICAgICAgICAgIGZvciAodmFyIHBvc3RPcmRlckluZGV4ID0gcm9vdFBvc3RPcmRlcmVkSW5k
ZXggLSAxOyBwb3N0T3JkZXJJbmRleCA+PSAwOyAtLXBvc3RPcmRlckluZGV4KSB7CisgICAgICAg
ICAgICAgICAgaWYgKGFmZmVjdGVkW3Bvc3RPcmRlckluZGV4XSA9PT0gMCkKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgYWZmZWN0ZWRbcG9zdE9yZGVySW5k
ZXhdID0gMDsKKyAgICAgICAgICAgICAgICAvLyBJZiBkb21pbmF0b3Igb2YgdGhlIGVudHJ5IGhh
cyBhbHJlYWR5IGJlZW4gc2V0IHRvIHJvb3QsCisgICAgICAgICAgICAgICAgLy8gdGhlbiBpdCBj
YW4ndCBwcm9wYWdhdGUgYW55IGZ1cnRoZXIuCisgICAgICAgICAgICAgICAgaWYgKGRvbWluYXRv
cnNbcG9zdE9yZGVySW5kZXhdID09PSByb290UG9zdE9yZGVyZWRJbmRleCkKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgdmFyIG5vZGVPcmRpbmFsID0gcG9z
dE9yZGVySW5kZXgyTm9kZUluZGV4W3Bvc3RPcmRlckluZGV4XSAvIG5vZGVGaWVsZENvdW50Owor
ICAgICAgICAgICAgICAgIHZhciBub2RlRmxhZyA9ICEhKGZsYWdzW25vZGVPcmRpbmFsXSAmIGZs
YWcpOworICAgICAgICAgICAgICAgIHZhciBuZXdEb21pbmF0b3JJbmRleCA9IG5vRW50cnk7Cisg
ICAgICAgICAgICAgICAgdmFyIGJlZ2luUmV0YWluZXJJbmRleCA9IGZpcnN0UmV0YWluZXJJbmRl
eFtub2RlT3JkaW5hbF07CisgICAgICAgICAgICAgICAgdmFyIGVuZFJldGFpbmVySW5kZXggPSBm
aXJzdFJldGFpbmVySW5kZXhbbm9kZU9yZGluYWwgKyAxXTsKKyAgICAgICAgICAgICAgICBmb3Ig
KHZhciByZXRhaW5lckluZGV4ID0gYmVnaW5SZXRhaW5lckluZGV4OyByZXRhaW5lckluZGV4IDwg
ZW5kUmV0YWluZXJJbmRleDsgKytyZXRhaW5lckluZGV4KSB7CisgICAgICAgICAgICAgICAgICAg
IHZhciByZXRhaW5lckVkZ2VJbmRleCA9IHJldGFpbmluZ0VkZ2VzW3JldGFpbmVySW5kZXhdOwor
ICAgICAgICAgICAgICAgICAgICB2YXIgcmV0YWluZXJFZGdlVHlwZSA9IGNvbnRhaW5tZW50RWRn
ZXNbcmV0YWluZXJFZGdlSW5kZXggKyBlZGdlVHlwZU9mZnNldF07CisgICAgICAgICAgICAgICAg
ICAgIHZhciByZXRhaW5lck5vZGVJbmRleCA9IHJldGFpbmluZ05vZGVzW3JldGFpbmVySW5kZXhd
OworICAgICAgICAgICAgICAgICAgICBpZiAocmV0YWluZXJOb2RlSW5kZXggIT09IHJvb3ROb2Rl
SW5kZXggJiYgcmV0YWluZXJFZGdlVHlwZSA9PT0gZWRnZVNob3J0Y3V0VHlwZSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB2YXIgcmV0YWlu
ZXJOb2RlT3JkaW5hbCA9IHJldGFpbmVyTm9kZUluZGV4IC8gbm9kZUZpZWxkQ291bnQ7CisgICAg
ICAgICAgICAgICAgICAgIHZhciByZXRhaW5lck5vZGVGbGFnID0gISEoZmxhZ3NbcmV0YWluZXJO
b2RlT3JkaW5hbF0gJiBmbGFnKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIHNraXBw
aW5nIHRoZSBlZGdlcyBmcm9tIG5vbi1wYWdlLW93bmVkIG5vZGVzIHRvIHBhZ2Utb3duZWQgbm9k
ZXMuCisgICAgICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSB0aGUgZG9taW5hdG9ycyBmb3Ig
dGhlIG9iamVjdHMgdGhhdCBhbHNvIHdlcmUgcmV0YWluZWQgYnkgZGVidWdnZXIgd291bGQgYmUg
YWZmZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgIGlmIChyZXRhaW5lck5vZGVJbmRleCAhPT0g
cm9vdE5vZGVJbmRleCAmJiBub2RlRmxhZyAmJiAhcmV0YWluZXJOb2RlRmxhZykKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB2YXIgcmV0YW5l
clBvc3RPcmRlckluZGV4ID0gbm9kZU9yZGluYWwyUG9zdE9yZGVySW5kZXhbcmV0YWluZXJOb2Rl
T3JkaW5hbF07CisgICAgICAgICAgICAgICAgICAgIGlmIChkb21pbmF0b3JzW3JldGFuZXJQb3N0
T3JkZXJJbmRleF0gIT09IG5vRW50cnkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChu
ZXdEb21pbmF0b3JJbmRleCA9PT0gbm9FbnRyeSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuZXdEb21pbmF0b3JJbmRleCA9IHJldGFuZXJQb3N0T3JkZXJJbmRleDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChy
ZXRhbmVyUG9zdE9yZGVySW5kZXggIT09IG5ld0RvbWluYXRvckluZGV4KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChyZXRhbmVyUG9zdE9yZGVySW5kZXggPCBuZXdE
b21pbmF0b3JJbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldGFu
ZXJQb3N0T3JkZXJJbmRleCA9IGRvbWluYXRvcnNbcmV0YW5lclBvc3RPcmRlckluZGV4XTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG5ld0RvbWluYXRvckluZGV4IDwg
cmV0YW5lclBvc3RPcmRlckluZGV4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3RG9taW5hdG9ySW5kZXggPSBkb21pbmF0b3JzW25ld0RvbWluYXRvckluZGV4XTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBpZG9tIGhhcyBhbHJlYWR5IHJlYWNoZWQgdGhl
IHJvb3QsIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8g
dG8gY2hlY2sgb3RoZXIgcmV0YWluZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5l
d0RvbWluYXRvckluZGV4ID09PSByb290UG9zdE9yZGVyZWRJbmRleCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobmV3RG9taW5hdG9ySW5kZXggIT09IG5vRW50cnkg
JiYgZG9taW5hdG9yc1twb3N0T3JkZXJJbmRleF0gIT09IG5ld0RvbWluYXRvckluZGV4KSB7Cisg
ICAgICAgICAgICAgICAgICAgIGRvbWluYXRvcnNbcG9zdE9yZGVySW5kZXhdID0gbmV3RG9taW5h
dG9ySW5kZXg7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICBub2RlSW5kZXggPSBwb3N0T3JkZXJJbmRleDJOb2RlSW5kZXhbcG9zdE9yZGVy
SW5kZXhdOworICAgICAgICAgICAgICAgICAgICBub2RlT3JkaW5hbCA9IG5vZGVJbmRleCAvIG5v
ZGVGaWVsZENvdW50OworICAgICAgICAgICAgICAgICAgICBiZWdpbkVkZ2VUb05vZGVGaWVsZElu
ZGV4ID0gbm9kZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXRdICsgZWRnZVRvTm9k
ZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgZW5kRWRnZVRvTm9kZUZpZWxkSW5kZXggPSBu
b2RlT3JkaW5hbCA8IG5vZGVzQ291bnQgLSAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID8gbm9kZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhP
ZmZzZXQgKyBub2RlRmllbGRDb3VudF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiBjb250YWlubWVudEVkZ2VzTGVuZ3RoOworICAgICAgICAgICAg
ICAgICAgICBmb3IgKHZhciB0b05vZGVGaWVsZEluZGV4ID0gYmVnaW5FZGdlVG9Ob2RlRmllbGRJ
bmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgICB0b05vZGVGaWVsZEluZGV4IDwgZW5kRWRn
ZVRvTm9kZUZpZWxkSW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICAgdG9Ob2RlRmllbGRJ
bmRleCArPSBlZGdlRmllbGRzQ291bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBj
aGlsZE5vZGVPcmRpbmFsID0gY29udGFpbm1lbnRFZGdlc1t0b05vZGVGaWVsZEluZGV4XSAvIG5v
ZGVGaWVsZENvdW50OworICAgICAgICAgICAgICAgICAgICAgICAgYWZmZWN0ZWRbbm9kZU9yZGlu
YWwyUG9zdE9yZGVySW5kZXhbY2hpbGROb2RlT3JkaW5hbF1dID0gMTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIHZhciBkb21pbmF0b3JzVHJlZSA9IG5ldyBVaW50MzJBcnJheShub2Rlc0NvdW50KTsK
KyAgICAgICAgZm9yICh2YXIgcG9zdE9yZGVySW5kZXggPSAwLCBsID0gZG9taW5hdG9ycy5sZW5n
dGg7IHBvc3RPcmRlckluZGV4IDwgbDsgKytwb3N0T3JkZXJJbmRleCkgeworICAgICAgICAgICAg
dmFyIG5vZGVPcmRpbmFsID0gcG9zdE9yZGVySW5kZXgyTm9kZUluZGV4W3Bvc3RPcmRlckluZGV4
XSAvIG5vZGVGaWVsZENvdW50OworICAgICAgICAgICAgZG9taW5hdG9yc1RyZWVbbm9kZU9yZGlu
YWxdID0gcG9zdE9yZGVySW5kZXgyTm9kZUluZGV4W2RvbWluYXRvcnNbcG9zdE9yZGVySW5kZXhd
XTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZG9taW5hdG9yc1RyZWU7CisgICAgfSwKKwog
ICAgIF9idWlsZERvbWluYXRlZE5vZGVzOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICAvLyBC
dWlsZHMgdXAgdHdvIGFycmF5czoKQEAgLTExNjAsNiArMTM1NCw2MiBAQCBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKKyAgICBfbWFy
a1BhZ2VPd25lZE5vZGVzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgZWRnZVNob3J0
Y3V0VHlwZSA9IHRoaXMuX2VkZ2VTaG9ydGN1dFR5cGU7CisgICAgICAgIHZhciBlZGdlVG9Ob2Rl
T2Zmc2V0ID0gdGhpcy5fZWRnZVRvTm9kZU9mZnNldDsKKyAgICAgICAgdmFyIGVkZ2VUeXBlT2Zm
c2V0ID0gdGhpcy5fZWRnZVR5cGVPZmZzZXQ7CisgICAgICAgIHZhciBlZGdlRmllbGRzQ291bnQg
PSB0aGlzLl9lZGdlRmllbGRzQ291bnQ7CisgICAgICAgIHZhciBmaXJzdEVkZ2VJbmRleE9mZnNl
dCA9IHRoaXMuX2ZpcnN0RWRnZUluZGV4T2Zmc2V0OworICAgICAgICB2YXIgY29udGFpbm1lbnRF
ZGdlcyA9IHRoaXMuX2NvbnRhaW5tZW50RWRnZXM7CisgICAgICAgIHZhciBjb250YWlubWVudEVk
Z2VzTGVuZ3RoID0gY29udGFpbm1lbnRFZGdlcy5sZW5ndGg7CisgICAgICAgIHZhciBub2RlcyA9
IHRoaXMuX25vZGVzOworICAgICAgICB2YXIgbm9kZUZpZWxkQ291bnQgPSB0aGlzLl9ub2RlRmll
bGRDb3VudDsKKyAgICAgICAgdmFyIG5vZGVzQ291bnQgPSB0aGlzLm5vZGVDb3VudDsKKworICAg
ICAgICB2YXIgZmxhZ3MgPSB0aGlzLl9mbGFnczsKKyAgICAgICAgdmFyIGZsYWcgPSB0aGlzLl9u
b2RlRmxhZ3MucGFnZU9iamVjdDsKKyAgICAgICAgdmFyIHZpc2l0ZWRNYXJrZXIgPSB0aGlzLl9u
b2RlRmxhZ3MudmlzaXRlZE1hcmtlcjsKKyAgICAgICAgdmFyIHZpc2l0ZWRNYXJrZXJNYXNrID0g
dGhpcy5fbm9kZUZsYWdzLnZpc2l0ZWRNYXJrZXJNYXNrOworICAgICAgICB2YXIgbWFya2VyQW5k
RmxhZyA9IHZpc2l0ZWRNYXJrZXIgfCBmbGFnOworCisgICAgICAgIHZhciBub2Rlc1RvVmlzaXQg
PSBuZXcgVWludDMyQXJyYXkobm9kZXNDb3VudCk7CisgICAgICAgIHZhciBub2Rlc1RvVmlzaXRM
ZW5ndGggPSAwOworCisgICAgICAgIGZvciAodmFyIGVkZ2VJbmRleCA9IG5vZGVzW3RoaXMuX3Jv
b3ROb2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldF0sIGVuZEVkZ2VJbmRleCA9IG5vZGVz
W3RoaXMuX3Jvb3ROb2RlSW5kZXggKyBub2RlRmllbGRDb3VudCArIGZpcnN0RWRnZUluZGV4T2Zm
c2V0XTsKKyAgICAgICAgICAgICBlZGdlSW5kZXggPCBlbmRFZGdlSW5kZXg7CisgICAgICAgICAg
ICAgZWRnZUluZGV4ICs9IGVkZ2VGaWVsZHNDb3VudCkgeworICAgICAgICAgICAgaWYgKGNvbnRh
aW5tZW50RWRnZXNbZWRnZUluZGV4ICsgZWRnZVR5cGVPZmZzZXRdID09PSBlZGdlU2hvcnRjdXRU
eXBlKSB7CisgICAgICAgICAgICAgICAgdmFyIG5vZGVJbmRleCA9IGNvbnRhaW5tZW50RWRnZXNb
ZWRnZUluZGV4ICsgZWRnZVRvTm9kZU9mZnNldF07CisgICAgICAgICAgICAgICAgbm9kZXNUb1Zp
c2l0W25vZGVzVG9WaXNpdExlbmd0aCsrXSA9IG5vZGVJbmRleDsKKyAgICAgICAgICAgICAgICBm
bGFnc1tub2RlSW5kZXggLyBub2RlRmllbGRDb3VudF0gfD0gdmlzaXRlZE1hcmtlcjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHdoaWxlIChub2Rlc1RvVmlzaXRMZW5ndGgp
IHsKKyAgICAgICAgICAgIHZhciBub2RlSW5kZXggPSBub2Rlc1RvVmlzaXRbLS1ub2Rlc1RvVmlz
aXRMZW5ndGhdOworICAgICAgICAgICAgdmFyIG5vZGVPcmRpbmFsID0gbm9kZUluZGV4IC8gbm9k
ZUZpZWxkQ291bnQ7CisgICAgICAgICAgICBmbGFnc1tub2RlT3JkaW5hbF0gfD0gZmxhZzsKKyAg
ICAgICAgICAgIGZsYWdzW25vZGVPcmRpbmFsXSAmPSB2aXNpdGVkTWFya2VyTWFzazsKKyAgICAg
ICAgICAgIHZhciBiZWdpbkVkZ2VUb05vZGVGaWVsZEluZGV4ID0gbm9kZXNbbm9kZUluZGV4ICsg
Zmlyc3RFZGdlSW5kZXhPZmZzZXRdICsgZWRnZVRvTm9kZU9mZnNldDsKKyAgICAgICAgICAgIHZh
ciBlbmRFZGdlVG9Ob2RlRmllbGRJbmRleCA9IDA7CisgICAgICAgICAgICBpZiAoKG5vZGVPcmRp
bmFsKSA8IG5vZGVzQ291bnQgLSAxKQorICAgICAgICAgICAgICAgIGVuZEVkZ2VUb05vZGVGaWVs
ZEluZGV4ID0gbm9kZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXQgKyBub2RlRmll
bGRDb3VudF0gKyBlZGdlVG9Ob2RlT2Zmc2V0OworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGVuZEVkZ2VUb05vZGVGaWVsZEluZGV4ID0gY29udGFpbm1lbnRFZGdlc0xlbmd0aDsK
KyAgICAgICAgICAgIGZvciAodmFyIGVkZ2VUb05vZGVJbmRleCA9IGJlZ2luRWRnZVRvTm9kZUZp
ZWxkSW5kZXg7CisgICAgICAgICAgICAgICAgIGVkZ2VUb05vZGVJbmRleCA8IGVuZEVkZ2VUb05v
ZGVGaWVsZEluZGV4OworICAgICAgICAgICAgICAgICBlZGdlVG9Ob2RlSW5kZXggKz0gZWRnZUZp
ZWxkc0NvdW50KSB7CisgICAgICAgICAgICAgICAgdmFyIGNoaWxkTm9kZUluZGV4ID0gY29udGFp
bm1lbnRFZGdlc1tlZGdlVG9Ob2RlSW5kZXhdOworICAgICAgICAgICAgICAgIHZhciBjaGlsZE5v
ZGVPcmRpbmFsID0gY2hpbGROb2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsKKyAgICAgICAgICAg
ICAgICBpZiAoZmxhZ3NbY2hpbGROb2RlT3JkaW5hbF0gJiBtYXJrZXJBbmRGbGFnKQorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBub2Rlc1RvVmlzaXRbbm9k
ZXNUb1Zpc2l0TGVuZ3RoKytdID0gY2hpbGROb2RlSW5kZXg7CisgICAgICAgICAgICAgICAgZmxh
Z3NbY2hpbGROb2RlT3JkaW5hbF0gfD0gdmlzaXRlZE1hcmtlcjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0sCisKICAgICBfbWFya1F1ZXJpYWJsZUhlYXBPYmplY3RzOiBmdW5jdGlv
bigpCiAgICAgewogICAgICAgICAvLyBBbGxvdyBydW50aW1lIHByb3BlcnRpZXMgcXVlcnkgZm9y
IG9iamVjdHMgYWNjZXNzaWJsZSBmcm9tIFdpbmRvdyBvYmplY3RzCkBAIC0xMTgwLDYgKzE0MzAs
NyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2
YXIgZmxhZ3MgPSB0aGlzLl9mbGFnczsKICAgICAgICAgdmFyIGxpc3QgPSBbXTsKKwogICAgICAg
ICBmb3IgKHZhciBpdGVyID0gdGhpcy5yb290Tm9kZS5lZGdlczsgaXRlci5oYXNOZXh0KCk7IGl0
ZXIubmV4dCgpKSB7CiAgICAgICAgICAgICBpZiAoaXRlci5lZGdlLm5vZGUuaXNXaW5kb3cpCiAg
ICAgICAgICAgICAgICAgbGlzdC5wdXNoKGl0ZXIuZWRnZS5ub2RlLm5vZGVJbmRleCk7CkBAIC0x
MjEyLDYgKzE0NjMsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdGhpcy5fZmxhZ3MgPSBuZXcgVWludDMyQXJyYXkodGhpcy5ub2RlQ291bnQpOwog
ICAgICAgICB0aGlzLl9tYXJrRGV0YWNoZWRET01UcmVlTm9kZXMoKTsKICAgICAgICAgdGhpcy5f
bWFya1F1ZXJpYWJsZUhlYXBPYmplY3RzKCk7CisgICAgICAgIHRoaXMuX21hcmtQYWdlT3duZWRO
b2RlcygpOwogICAgIH0sCiAKICAgICBjYWxjdWxhdGVTbmFwc2hvdERpZmY6IGZ1bmN0aW9uKGJh
c2VTbmFwc2hvdElkLCBiYXNlU25hcHNob3RBZ2dyZWdhdGVzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVjYjQ5YzAxYzNh
NzA0ZDI1ZTc3OWE1MGFlNjc3M2UzZmViYTJmNmEuLmNiYTVhYWY1OTZmOTMwYzVjYTBjODk3N2Yx
NTc3MDBkNzdiZWIyNGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wNS0xOCAgSWx5YSBU
aWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogdXBzdHJlYW0gYnVpbGQgZG9taW5hdG9ycyB0cmVlIHByb2NlZHVyZSBmcm9tIHY4LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY2NDAKKworICAg
ICAgICBUaGUgaWRlYSBpcyB0byByZWR1Y2UgdHJhbnNmZXIgc2l6ZSBhbmQgbW92ZSBhbGwgdGhl
IHBvc3QtcHJvY2Vzc2luZyBzdGVwcyB0byB0aGUgZnJvbnQtZW5kLgorICAgICAgICBUaGUgSlMg
aW1wbGVtZW50YXRpb24gaXMgfjEuNSB0aW1lcyBzbG93ZXIuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cyBh
bmQgcGVyZm9ybWFuY2UgdGVzdHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVh
cC1zbmFwc2hvdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hl
YXAtc25hcHNob3QtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfSGVhcFNuYXBzaG90VGVz
dC5JbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2tSYXcpOgorICAgICAgICAqIGlu
c3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90Lmh0bWw6CisKIDIwMTItMDUtMTggIFNoZXph
biBCYWlnICA8c2hlemJhaWcud2tAZ21haWwuY29tPgogCiAgICAgICAgIEV4cG9zZSBGcmFtZVNl
bGVjdGlvbjo6YWJzb2x1dGVDYXJldEJvdW5kcyB2aWEgd2luZG93LmludGVybmFscwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZXhw
ZWN0ZWQudHh0CmluZGV4IGQzZGU1NjgxNjBjYjdmYTRhNjkyMTdkNWJiNWU5ZjIxNzRlOGIwZDcu
Ljg5MjMwMDcwNGJmMWExYWVhMDlhZjlmNzMyNDI1OTgwMDAxNjZiNzkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBlY3Rl
ZC50eHQKQEAgLTEzLDYgKzEzLDEwIEBAIFJ1bm5pbmc6IGhlYXBTbmFwc2hvdE5vZGVBbmRFZGdl
VGVzdAogCiBSdW5uaW5nOiBoZWFwU25hcHNob3RTaW1wbGVUZXN0CiAKK1J1bm5pbmc6IGhlYXBT
bmFwc2hvdFBvc3RPcmRlckluZGV4VGVzdAorCitSdW5uaW5nOiBoZWFwU25hcHNob3REb21pbmF0
b3JzVHJlZVRlc3QKKwogUnVubmluZzogaGVhcFNuYXBzaG90UmV0YWluZXJzVGVzdAogCiBSdW5u
aW5nOiBoZWFwU25hcHNob3RBZ2dyZWdhdGVzVGVzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanMKaW5kZXggMjkxYzQwZDA4OGI5
ZDUyZGRkMGU2ZWJhZjM1Nzc1MWFkMTQ4NjcwYi4uYjUzOGU2OGIxYWVjM2M2YTM0NDRjODBhODc0
ZjQzYzM5ODU5ZThlNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVy
L2hlYXAtc25hcHNob3QtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmls
ZXIvaGVhcC1zbmFwc2hvdC10ZXN0LmpzCkBAIC02OSwxNyArNjksMjcgQEAgSW5zcGVjdG9yVGVz
dC5jcmVhdGVIZWFwU25hcHNob3RNb2NrUmF3ID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgbm9k
ZV9jb3VudDogNiwKICAgICAgICAgICAgIGVkZ2VfY291bnQ6IDd9LAogICAgICAgICBub2Rlczog
WwotICAgICAgICAgICAgMCwgMCwgMSwgMCwgMjAsICAwLCAgMCwKLSAgICAgICAgICAgIDEsIDEs
IDIsIDIsICAyLCAgMCwgIDYsCi0gICAgICAgICAgICAxLCAyLCAzLCAzLCAgOCwgIDAsIDEyLAot
ICAgICAgICAgICAgMSwgMywgNCwgNCwgMTAsICAwLCAxOCwKLSAgICAgICAgICAgIDEsIDQsIDUs
IDUsICA1LCAxNCwgMjEsCi0gICAgICAgICAgICAxLCA1LCA2LCA2LCAgNiwgMjEsIDIxXSwKKyAg
ICAgICAgICAgIDAsIDAsIDEsIDAsIDIwLCAgMCwgIDAsIC8vIHJvb3QgKDApCisgICAgICAgICAg
ICAxLCAxLCAyLCAyLCAgMiwgIDAsICA2LCAvLyBBICg3KQorICAgICAgICAgICAgMSwgMiwgMywg
MywgIDgsICAwLCAxMiwgLy8gQiAoMTQpCisgICAgICAgICAgICAxLCAzLCA0LCA0LCAxMCwgIDAs
IDE4LCAvLyBDICgyMSkKKyAgICAgICAgICAgIDEsIDQsIDUsIDUsICA1LCAxNCwgMjEsIC8vIEQg
KDI4KQorICAgICAgICAgICAgMSwgNSwgNiwgNiwgIDYsIDIxLCAyMV0sLy8gRSAoMzUpCiAgICAg
ICAgIGVkZ2VzOiBbCi0gICAgICAgICAgICAxLCAgNiwgIDcsIDEsICA3LCAxNCwKLSAgICAgICAg
ICAgIDAsICAxLCAxNCwgMSwgIDgsIDIxLAotICAgICAgICAgICAgMSwgIDksIDIxLCAxLCAxMCwg
MjgsCi0gICAgICAgICAgICAxLCAxMSwgMzVdLAorICAgICAgICAgICAgLy8gcm9vdCBub2RlIGVk
Z2VzCisgICAgICAgICAgICAxLCAgNiwgIDcsIC8vIHByb3BlcnR5ICdhJyB0byBub2RlICdBJwor
ICAgICAgICAgICAgMSwgIDcsIDE0LCAvLyBwcm9wZXJ0eSAnYicgdG8gbm9kZSAnQicKKworICAg
ICAgICAgICAgLy8gQSBub2RlIGVkZ2VzCisgICAgICAgICAgICAwLCAgMSwgMTQsIC8vIGVsZW1l
bnQgMSB0byBub2RlICdCJworICAgICAgICAgICAgMSwgIDgsIDIxLCAvLyBwcm9wZXJ0eSAnYWMn
IHRvIG5vZGUgJ0MnCisKKyAgICAgICAgICAgIC8vIEIgbm9kZSBlZGdlcworICAgICAgICAgICAg
MSwgIDksIDIxLCAvLyBwcm9wZXJ0eSAnYmMnIHRvIG5vZGUgJ0MnCisgICAgICAgICAgICAxLCAx
MCwgMjgsIC8vIHByb3BlcnR5ICdiZCcgdG8gbm9kZSAnRCcKKworICAgICAgICAgICAgLy8gQyBu
b2RlIGVkZ2VzCisgICAgICAgICAgICAxLCAxMSwgMzVdLCAvLyBwcm9wZXJ0eSAnY2UnIHRvIG5v
ZGUgJ0UnCiAgICAgICAgIHN0cmluZ3M6IFsiIiwgIkEiLCAiQiIsICJDIiwgIkQiLCAiRSIsICJh
IiwgImIiLCAiYWMiLCAiYmMiLCAiYmQiLCAiY2UiXQogICAgIH07CiB9OwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90Lmh0bWwKaW5kZXggNDRiMjkz
ZGRiZmEyNjMxNmM4MTQzMGQ0ZGUwZGJkY2UwYmY0MDU0YS4uNGUzNTgzZjMxZGVkNzJmN2QzZWY1
MTBhNTQ0NzRlY2YzMThlMjBkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3By
b2ZpbGVyL2hlYXAtc25hcHNob3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvaGVhcC1zbmFwc2hvdC5odG1sCkBAIC05NSw2ICs5NSwyNyBAQCBmdW5jdGlvbiB0ZXN0
KCkKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgfSwKIAorICAgICAgICBmdW5jdGlvbiBo
ZWFwU25hcHNob3RQb3N0T3JkZXJJbmRleFRlc3QobmV4dCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QoSW5zcGVjdG9y
VGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrKCkpOworICAgICAgICAgICAgdmFyIHBvc3RPcmRl
ckluZGV4ID0gc25hcHNob3QuX2J1aWxkUG9zdE9yZGVySW5kZXgoKS5wb3N0T3JkZXJJbmRleDJO
b2RlSW5kZXg7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWQgPSBbMjgsMzUsMjEsMTQsNywwXTsK
KyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWQubGVuZ3RoOyArK2kpCisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRbaV0sIHBv
c3RPcmRlckluZGV4W2ldLCAiUG9zdCBvcmRlcmVkIGluZGV4ZXMiKTsKKyAgICAgICAgICAgIG5l
eHQoKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiBoZWFwU25hcHNob3REb21pbmF0
b3JzVHJlZVRlc3QobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0g
bmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QoSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25h
cHNob3RNb2NrKCkpOworICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHNuYXBzaG90Ll9idWlsZFBv
c3RPcmRlckluZGV4KCk7CisgICAgICAgICAgICB2YXIgZG9taW5hdG9yc1RyZWUgPSBzbmFwc2hv
dC5fYnVpbGREb21pbmF0b3JUcmVlKHJlc3VsdC5wb3N0T3JkZXJJbmRleDJOb2RlSW5kZXgsIHJl
c3VsdC5ub2RlT3JkaW5hbDJQb3N0T3JkZXJJbmRleCk7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWQgPSBbMCwgMCwgMCwgMCwgMTQsIDIxXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgZXhwZWN0ZWQubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRFcXVhbHMoZXhwZWN0ZWRbaV0sIGRvbWluYXRvcnNUcmVlW2ldLCAiRG9taW5hdG9ycyBU
cmVlIik7CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgIH0sCisKICAgICAgICAgZnVuY3Rp
b24gaGVhcFNuYXBzaG90UmV0YWluZXJzVGVzdChuZXh0KQogICAgICAgICB7CiAgICAgICAgICAg
ICB2YXIgc25hcHNob3QgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdChJbnNwZWN0b3JU
ZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2soKSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZmMzE3MmNk
MDllM2EzOGFlNzA2NTUyNTM0NDIyMjIyMDE2MzA0NTMuLjk2MTQyOGRhNDVlM2Y5YjdkNTVmOWY1
NjQ0ZWY4NzhhZGI4MGVkYzAgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTIt
MDUtMTggIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IHVwc3RyZWFtIGJ1aWxkIGRvbWluYXRvcnMgdHJlZSBwcm9jZWR1cmUg
ZnJvbSB2OC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg2NjQwCisKKyAgICAgICAgVGhlIGlkZWEgaXMgdG8gcmVkdWNlIHRyYW5zZmVyIHNpemUgYW5k
IG1vdmUgYWxsIHRoZSBwb3N0LXByb2Nlc3Npbmcgc3RlcHMgdG8gdGhlIGZyb250LWVuZC4KKyAg
ICAgICAgVGhlIEpTIGltcGxlbWVudGF0aW9uIGlzIH4xLjUgdGltZXMgc2xvd2VyLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMgYW5kIHBlcmZvcm1hbmNlIHRlc3RzLgorCisgICAgICAgICogaW5zcGVjdG9y
L2hlYXAtc25hcHNob3QuaHRtbDoKKwogMjAxMi0wNS0xOCAgS2VudGFybyBIYXJhICA8aGFyYWtl
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW3BlcmYtdGVzdF0gQWRkIGEgYmluZGluZyBiZW5j
aG1hcmsgZm9yIGdldEVsZW1lbnRCeUlkKCkgZm9yIGFuIHVuZGVmaW5lZCBpZApkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC5odG1sIGIvUGVyZm9y
bWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC5odG1sCmluZGV4IDljZTMxZWJmYzAx
ZTZjZTlmOWQ3ZmYwNDU0NmQxZjEwN2Y0MTRiOTYuLmI3MDEyZWMyYWNkNmI5NDRhYjdiNjVlMDM2
MzIyMTljNWJhMjhjN2IgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2hl
YXAtc25hcHNob3QuaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9oZWFwLXNu
YXBzaG90Lmh0bWwKQEAgLTI4LDcgKzI4LDEwIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dC5wcm90b3R5cGUsICJfY2FsY3VsYXRlT2JqZWN0VG9XaW5kb3dEaXN0YW5jZSIpOwogICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdC5wcm90b3R5cGUsICJfbWFya0RldGFjaGVkRE9NVHJlZU5vZGVzIik7CiAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
LnByb3RvdHlwZSwgIl9tYXJrUXVlcmlhYmxlSGVhcE9iamVjdHMiKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJv
dG90eXBlLCAiX21hcmtQYWdlT3duZWROb2RlcyIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJf
c3BsaXROb2Rlc0FuZENvbnRhaW5tZW50RWRnZXMiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAi
X2J1aWxkUG9zdE9yZGVySW5kZXgiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubWVhc3Vy
ZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2J1aWxkRG9t
aW5hdG9yVHJlZSIpOwogCiAgICAgICAgICAgICB0aW1lci5maW5pc2goYmFja2VuZFRpbWVyQ29v
a2llKTsKICAgICAgICAgICAgIHRyYW5zZmVyVGltZXJDb29raWUgPSB0aW1lci5zdGFydCgidHJh
bnNmZXItc25hcHNob3QiKTsK
</data>
<flag name="review"
          id="149156"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>