<?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>111551</bug_id>
          
          <creation_ts>2013-03-06 02:54:39 -0800</creation_ts>
          <short_desc>Web Inspector: identify layers for CSS generated content in LayerTreeAgent</short_desc>
          <delta_ts>2013-03-07 02:41:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>apavlov</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>timothy</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>848670</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-03-06 02:54:39 -0800</bug_when>
    <thetext>Some layers are created for pseudo elements, content created by CSS via the ::before or ::after pseudo-classes. Since these layers&apos; renderer are not directly associated to a Node in the DOM tree, we&apos;ll probably want to identify as such in the UI, we should clearly identify such layers as generated content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848671</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-03-06 02:55:05 -0800</bug_when>
    <thetext>&lt;rdar://problem/13356715&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848679</commentid>
    <comment_count>2</comment_count>
      <attachid>191703</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-03-06 03:14:47 -0800</bug_when>
    <thetext>Created attachment 191703
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849302</commentid>
    <comment_count>3</comment_count>
      <attachid>191703</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-03-06 14:30:45 -0800</bug_when>
    <thetext>Comment on attachment 191703
Patch

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

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:250
&gt; +        return &quot;&quot;;

It&apos;s better to use emptyString().

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:268
&gt; +    String identifier = m_pseudoElementToIdMap.get(pseudoElement);
&gt; +    if (identifier.isNull())
&gt; +        return;
&gt; +
&gt; +    m_pseudoElementToIdMap.remove(pseudoElement);
&gt; +    m_idToPseudoElement.remove(identifier);

get() and remove() both do hash lookups. It would be better to find(), compare with != .end() to know if you found anything, then use remove(iterator);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849886</commentid>
    <comment_count>4</comment_count>
      <attachid>191952</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-03-07 01:58:59 -0800</bug_when>
    <thetext>Created attachment 191952
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849888</commentid>
    <comment_count>5</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-03-07 01:59:55 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 191703 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=191703&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:250
&gt; &gt; +        return &quot;&quot;;
&gt; 
&gt; It&apos;s better to use emptyString().

Will fix in landing patch.

&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:268
&gt; &gt; +    String identifier = m_pseudoElementToIdMap.get(pseudoElement);
&gt; &gt; +    if (identifier.isNull())
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    m_pseudoElementToIdMap.remove(pseudoElement);
&gt; &gt; +    m_idToPseudoElement.remove(identifier);
&gt; 
&gt; get() and remove() both do hash lookups. It would be better to find(), compare with != .end() to know if you found anything, then use remove(iterator);

Good point. I rewrote the method as follows for landing:

void InspectorLayerTreeAgent::unbindPseudoElement(PseudoElement* pseudoElement)
{
    HashMap&lt;PseudoElement*, String&gt;::iterator iterator = m_pseudoElementToIdMap.find(pseudoElement);
    if (iterator == m_pseudoElementToIdMap.end())
        return;
    m_idToPseudoElement.remove(iterator-&gt;value);
    m_pseudoElementToIdMap.remove(iterator);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849912</commentid>
    <comment_count>6</comment_count>
      <attachid>191952</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-07 02:41:23 -0800</bug_when>
    <thetext>Comment on attachment 191952
Patch for landing

Clearing flags on attachment: 191952

Committed r145057: &lt;http://trac.webkit.org/changeset/145057&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849913</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-07 02:41:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191703</attachid>
            <date>2013-03-06 03:14:47 -0800</date>
            <delta_ts>2013-03-07 01:58:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111551-20130306121043.patch</filename>
            <type>text/plain</type>
            <size>23482</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0ODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjkxM2JlNzBjNGQ4ZGM0
NTMyOGQxOTdjZjY0N2FhM2VmYzg0NmE3Ny4uMDdhZTI1Y2Y4ZWI4NTE1MmQyZjk3NTQxZTZjY2Iy
MDQyOGM5OWM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTAzLTA2ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
aWRlbnRpZnkgbGF5ZXJzIGZvciBDU1MgZ2VuZXJhdGVkIGNvbnRlbnQgaW4gTGF5ZXJUcmVlQWdl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTU1
MQorCisgICAgICAgIExheWVycyBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIHBzZXVkbyBlbGVtZW50
cywgZWxlbWVudHMgdGhhdCBhcmUgZ2VuZXJhdGVkCisgICAgICAgIHdoZW4gOjpiZWZvcmUgb3Ig
OjphZnRlciBwc2V1ZG8tY2xhc3NlcyBhcmUgdXNlZCB0byBzdHlsZSBhbiBlbGVtZW50IGFuZAor
ICAgICAgICBwcm92aWRlIGFkZGl0aW9uYWwgcmVuZGVyaW5nIHVzaW5nIHRoZSBDU1MgImNvbnRl
bnQiIHByb3BlcnR5LiBJbiBvcmRlciB0bworICAgICAgICBpZGVudGlmeSB0aGF0IGEgbGF5ZXIg
aXMgYXNzb2NpYXRlZCB0byBhIHBzZXVkbyBlbGVtZW50LCB3ZSBhZGQgYSBuZXcgc2V0IG9mCisg
ICAgICAgIG9wdGlvbmFsIHByb3BlcnRpZXMgb24gdGhlIExheWVyIG9iamVjdDogImlzR2VuZXJh
dGVkQ29udGVudCIsICJwc2V1ZG9FbGVtZW50SWQiCisgICAgICAgIGFuZCAicHNldWRvQ2xhc3Mi
LgorCisgICAgICAgIFdlIG5lZWQgdG8gcHJvdmlkZSB0aGUgInBzZXVkb0VsZW1lbnRJZCIgZm9y
IHRoZSBzYW1lIHJlYXNvbiB3ZSBwcm92aWRlIGEKKyAgICAgICAgIm5vZGVJZCIgZm9yIHRoZSBM
YXllci4gVGhpcyBpcyBzbyB0aGF0IHRoZSBmcm9udC1lbmQgY2FuIGlkZW50aWZ5IHRoYXQgYQor
ICAgICAgICBsYXllciB3aG9zZSAibGF5ZXJJZCIgbWF5IGhhdmUgY2hhbmdlZCBiZXR3ZWVuIHR3
byBsYXllciB0cmVlIHVwZGF0ZXMgaXMKKyAgICAgICAgdXNlZCB0byByZW5kZXIgY29udGVudCBm
b3IgdGhlIHNhbWUgcHNldWRvIGVsZW1lbnQuCisKKyAgICAgICAgSW4gdGhlIGluc3RhbmNlIHRo
YXQgYSBsYXllciBpcyByZW5kZXJpbmcgZ2VuZXJhdGVkIGNvbnRlbnQsIHdlIGFsc28gc2V0Cisg
ICAgICAgIHRoZSAibm9kZUlkIiB0byBiZSB0aGUgZ2VuZXJhdGluZyBub2RlJ3MgaWQuIFRoZSBn
ZW5lcmF0aW5nIG5vZGUgaXMgdGhlCisgICAgICAgIG5vZGUgaW4gdGhlIERPTSB0aGF0IHRoZSB1
c2VyIHN0eWxlZCB1c2luZyA6OmJlZm9yZSBvciA6OmFmdGVyIHBzZXVkby1jbGFzc2VzLgorICAg
ICAgICBXZSBhbHNvIGFkZCB0aGUgcHNldWRvLWNsYXNzIHVzZWQgYXMgdGhlICJwc2V1ZG9DbGFz
cyIgcHJvcGVydHkgc3VjaCB0aGF0IHRoZQorICAgICAgICBmcm9udC1lbmQgbWF5IHByb3ZpZGUg
dXNlZnVsIGluZm9ybWF0aW9uIHRvIHRoZSB1c2VyIGFib3V0IHdoYXQgdHlwZSBvZgorICAgICAg
ICBwc2V1ZG8tY2xhc3MgeWllbGRlZCB0aGUgZ2VuZXJhdGlvbiBvZiB0aGlzIGxheWVyLiBXZSBh
bHNvIGRlYWwgd2l0aCB0aGUKKyAgICAgICAgcG9zc2liaWxpdHkgdGhhdCB0aGUgbGF5ZXIgaXMg
YSByZWZsZWN0aW9uIGZvciBhIHBzZXVkbyBlbGVtZW50LgorICAgIAorICAgICAgICBTaW5jZSBw
c2V1ZG8gZWxlbWVudHMgYXJlIG5vdCBwYXJ0IG9mIHRoZSB1c2VyLXZpc2libGUgRE9NLCBhbmQg
dGh1cyBjYW4ndCBiZQorICAgICAgICBwdXNoZWQgdG8gdGhlIGZyb250LWVuZCwgd2UgbWFpbnRh
aW4gYSBzcGVjaWFsIElEIGhhc2ggbWFwIGluIHRoZSBMYXllclRyZWVBZ2VudC4KKyAgICAgICAg
SW4gb3JkZXIgdG8gYmUgYWJsZSB0byB1bmJpbmQgYSBwc2V1ZG8gZWxlbWVudCBpZCBhbmQgYSBw
c2V1ZG8gZWxlbWVudCwgd2UgYWRkIGEKKyAgICAgICAgZGVzdHJ1Y3RvciBtZXRob2QgdG8gUHNl
dWRvRWxlbWVudCBhbmQgcHJvdmlkZSBhIG5ldyBpbnN0cnVtZW50YXRpb24gY2FsbCBzbyB0aGF0
CisgICAgICAgIHRoZSBMYXllclRyZWVBZ2VudCBtYXkgYmUgbm90aWZpZWQgb2YgYSBQc2V1ZG9F
bGVtZW50IGJlaW5nIGRlc3Ryb3llZC4gVGhpcworICAgICAgICByZWZsZWN0cyB0aGUgcHJpbmNp
cGxlIHdlIHVzZSB0byB1cGRhdGUgdGhlIFJlbmRlckxheWVyIGJpbmRpbmdzIHdoZW4gYQorICAg
ICAgICBSZW5kZXJMYXllciBpcyBkZXN0cm95ZWQsIGFzIG5vdGlmaWVkIGJ5IHRoZSBSZW5kZXJM
YXllckNvbXBvc2l0b3IuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGVzdDogaW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXllcnMtZ2VuZXJhdGVk
LWNvbnRlbnQuaHRtbAorCisgICAgICAgICogZG9tL1BzZXVkb0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudDo6flBzZXVkb0VsZW1lbnQpOiBOZXcgZGVzdHJ1Y3Rv
ciB1c2VkIHRvIG5vdGlmeQorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gb2YgYSBQ
c2V1ZG9FbGVtZW50IGJlaW5nIGRlc3Ryb3llZCwgc3VjaCB0aGF0CisgICAgICAgIGl0IGNhbiBl
dmVudHVhbGx5IGJlIHJlbGF5ZWQgdG8gdGhlIEluc3BlY3RvckxheWVyVHJlZUFnZW50LgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1lbnQuaDoKKyAgICAgICAg
KFBzZXVkb0VsZW1lbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjogQWRk
IHRoZSBuZXcgUHNldWRvRWxlbWVudElkIHR5cGUgdXNlZCBmb3IKKyAgICAgICAgdGhlIG5ldyAi
cHNldWRvRWxlbWVudElkIiBwcm9wZXJ0eSBvbiBMYXllciwgdG8gd2hpY2ggd2UgYWxzbyBhZGQg
dGhlCisgICAgICAgICJpc0dlbmVyYXRlZENvbnRlbnQiIGFuZCAicHNldWRvQ2xhc3MiIHByb3Bl
cnRpZXMuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6cHNldWRvRWxlbWVudERlc3Ryb3llZEltcGwpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6cHNldWRvRWxlbWVudERlc3Ryb3llZCk6IE5ldyBtZXRob2QKKyAg
ICAgICAgY2FsbGVkIGluIHRoZSBQc2V1ZG9FbGVtZW50IGRlc3RydWN0b3IgdXNlZCB0byByZWxh
eSB0aGUgZmFjdCB0aGF0IGEKKyAgICAgICAgUHNldWRvRWxlbWVudCB3YXMgZGVzdHJveWVkIHRv
IHRoZSBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OnJlc2V0KTogQ2xlYXIgdGhlIG5ldyBQc2V1ZG9FbGVtZW50CisgICAgICAgIGlk
ZW50aWZpZXIgbWFwcy4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50
Ojpwc2V1ZG9FbGVtZW50RGVzdHJveWVkKTogUmVtb3ZlIGFueQorICAgICAgICBpZGVudGlmaWVy
IGJpbmRpbmcgZm9yIHRoZSBwcm92aWRlZCBQc2V1ZG9FbGVtZW50IGJlaW5nIGRlc3Ryb3llZC4g
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJl
ZUFnZW50OjpidWlsZE9iamVjdEZvckxheWVyKTogU2V0IHRoZSBuZXcKKyAgICAgICAgImlzR2Vu
ZXJhdGVkQ29udGVudCIsICJwc2V1ZG9FbGVtZW50SWQiIGFuZCAicHNldWRvQ2xhc3MiIHByb3Bl
cnRpZXMgb24KKyAgICAgICAgdGhlIExheWVyIG9iamVjdCBmb3IgbGF5ZXJzIGFzc29jaWF0ZWQg
d2l0aCBhIHBzZXVkbyBlbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OmJpbmRQc2V1ZG9FbGVtZW50KTogQmluZHMgdGhlIHByb3ZpZGVkCisgICAgICAg
IFBzZXVkb0VsZW1lbnQgdG8gYSB1bmlxdWUgaWRlbnRpZmllci4KKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp1bmJpbmRQc2V1ZG9FbGVtZW50KTogVW5iaW5kcyB0
aGUKKyAgICAgICAgcHJvdmlkZWQgUHNldWRvRWxlbWVudCBmcm9tIGl0cyB1bmlxdWUgaWRlbnRp
Zmllci4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaDoKKyAg
ICAgICAgKEluc3BlY3RvckxheWVyVHJlZUFnZW50KToKKwogMjAxMy0wMy0wNiAgVG9ueSBDaGFu
ZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENyYXNoIGR1cmluZyBtaWRkbGUgbW91
c2UgY2xpY2sgd2hlbiBwYWdlIGlzIHJlbW92ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qc2V1ZG9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50
LmNwcAppbmRleCA0YmVmZjJlODk0Y2QwZDlhMTBkMGQ3MWIyZjFkYTViNDc2NDNmODIzLi44Mzk0
MTRlZTlkMDFmYzdjOGY2N2EyZWFlM2RjMWE1N2Y1NDdjZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bz
ZXVkb0VsZW1lbnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiUHNldWRvRWxlbWVu
dC5oIgogCiAjaW5jbHVkZSAiQ29udGVudERhdGEuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclF1b3RlLmgiCkBAIC02Myw2ICs2
NCwxMSBAQCBQc2V1ZG9FbGVtZW50OjpQc2V1ZG9FbGVtZW50KEVsZW1lbnQqIHBhcmVudCwgUHNl
dWRvSWQgcHNldWRvSWQpCiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVDYWxsYmFja3MoKTsKIH0KIAor
UHNldWRvRWxlbWVudDo6flBzZXVkb0VsZW1lbnQoKQoreworICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6cHNldWRvRWxlbWVudERlc3Ryb3llZChkb2N1bWVudCgpLT5wYWdlKCksIHRoaXMp
OworfQorCiBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBQc2V1ZG9FbGVtZW50OjpjdXN0b21TdHls
ZUZvclJlbmRlcmVyKCkKIHsKICAgICByZXR1cm4gcGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgp
LT5yZW5kZXJlcigpLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShtX3BzZXVkb0lkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUHNldWRvRWxlbWVudC5oCmluZGV4IDkzOWM4Zjk5ZmU1YjVjMTA1MzBhYTFlYzhiOTEzZmJk
MmNlOTk1OGQuLjEyYTJhMjA2OTE4MTMwOGVmYzJiNTI4OWMwODYwYjRmYTNlN2UzYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaApAQCAtNDAsNiArNDAsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBzZXVkb0VsZW1lbnQocGFyZW50LCBwc2V1
ZG9JZCkpOwogICAgIH0KKyAgICB+UHNldWRvRWxlbWVudCgpOwogCiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5qc29uCmluZGV4IGU4N2RmMzYyZmExNjBmNTkxMzZlZWNjZWI1Y2E1NjVhOTEx
NjIwZjkuLjZjMzc0OTMyNzI4MmE5M2IxN2I5ZmM0MWFlOTllMzEyN2RiODdhNzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTM2NDYsNiArMzY0NiwxMSBAQAog
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgUmVuZGVyTGF5ZXIgaWRlbnRp
Zmllci4iCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJp
ZCI6ICJQc2V1ZG9FbGVtZW50SWQiLAorICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIs
CisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBQc2V1ZG9FbGVtZW50IGlk
ZW50aWZpZXIuIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAiaWQiOiAiSW50UmVjdCIsCiAgICAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSByZWN0YW5nbGUuIiwKQEAgLTM2NjgsNyAr
MzY3MywxMCBAQAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1lbW9yeSIsICJ0eXBl
IjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiRXN0aW1hdGVkIG1lbW9yeSB1c2VkIGJ5IHRo
aXMgbGF5ZXIuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbXBvc2l0ZWRC
b3VuZHMiLCAiJHJlZiI6ICJJbnRSZWN0IiwgImRlc2NyaXB0aW9uIjogIlRoZSBib3VuZHMgb2Yg
dGhlIGNvbXBvc2l0ZWQgbGF5ZXIuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImlzSW5TaGFkb3dUcmVlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJk
ZXNjcmlwdGlvbiI6ICJJbmRpY2F0ZXMgd2hldGhlciB0aGlzIGxheWVyIGlzIGFzc29jaWF0ZWQg
d2l0aCBhbiBlbGVtZW50IGhvc3RlZCBpbiBhIHNoYWRvdyB0cmVlLiIgfSwKLSAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJpc1JlZmxlY3Rpb24iLCAidHlwZSI6ICJib29sZWFuIiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkluZGljYXRlcyB3aGV0aGVyIHRoaXMgbGF5
ZXIgd2FzIHVzZWQgdG8gcHJvdmlkZSBhIHJlZmxlY3Rpb24gZm9yIHRoZSBlbGVtZW50LiIgfQor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzUmVmbGVjdGlvbiIsICJ0eXBlIjogImJv
b2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSW5kaWNhdGVzIHdoZXRo
ZXIgdGhpcyBsYXllciB3YXMgdXNlZCB0byBwcm92aWRlIGEgcmVmbGVjdGlvbiBmb3IgdGhlIGVs
ZW1lbnQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzR2VuZXJhdGVkQ29u
dGVudCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGxheWVyIGlzIGF0dGFjaGVkIHRvIGEgcHNldWRvIGVs
ZW1lbnQgdGhhdCBpcyBDU1MgZ2VuZXJhdGVkIGNvbnRlbnQuIiB9LAorICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInBzZXVkb0VsZW1lbnRJZCIsICIkcmVmIjogIlBzZXVkb0VsZW1lbnRJ
ZCIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgaWQgZm9yIHRoZSBwc2V1
ZG8gZWxlbWVudCBhc3NvY2lhdGVkIHdpdGggdGhpcyBsYXllci4iIH0sCisgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAicHNldWRvQ2xhc3MiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9u
YWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIG5hbWUgb2YgdGhlIENTUyBwc2V1ZG8tY2xh
c3MgdGhhdCBwcm9tcHRlZCB0aGUgbGF5ZXIncyBjb250ZW50IHRvIGJlIGdlbmVyYXRlZC4iIH0K
ICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmlu
ZGV4IGFjOTM3N2E5ZTI4NjlkNzIyN2Q4MzJmNjRmMGMzZTgyMGFmMjEyNjIuLmQ0NWJmZjk1ODU1
YmY2NDFjYmU0M2I0YjM3MzdlODVhZDZlZDU1ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0xMzY3LDYgKzEz
NjcsMTIgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlbmRlckxheWVyRGVzdHJv
eWVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnMKICAgICBpZiAoSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQoKSkKICAgICAgICAgbGF5ZXJUcmVlQWdlbnQtPnJlbmRlckxheWVyRGVz
dHJveWVkKHJlbmRlckxheWVyKTsKIH0KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnBzZXVkb0VsZW1lbnREZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIFBzZXVkb0VsZW1lbnQqIHBzZXVkb0VsZW1lbnQpCit7CisgICAgaWYgKElu
c3BlY3RvckxheWVyVHJlZUFnZW50KiBsYXllclRyZWVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMtPmluc3BlY3RvckxheWVyVHJlZUFnZW50KCkpCisgICAgICAgIGxheWVyVHJlZUFnZW50LT5w
c2V1ZG9FbGVtZW50RGVzdHJveWVkKHBzZXVkb0VsZW1lbnQpOworfQogI2VuZGlmCiAKIG5hbWVz
cGFjZSBJbnN0cnVtZW50YXRpb25FdmVudHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDhkNGUzZDMxNGNhOWE4Y2Nl
ZTlkYTE0ZTY2ZjZlODhlMzEyMTJhODguLjk1NzhiNjA1MWM2MjRhZDc5ZTZiNjBhOTA3ZmFkMGJh
YWJjMTE3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKQEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBLVVJMOwogY2xhc3Mg
Tm9kZTsKK2NsYXNzIFBzZXVkb0VsZW1lbnQ7CiBjbGFzcyBSZW5kZXJMYXllcjsKIGNsYXNzIFJl
bmRlck9iamVjdDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKQEAgLTMxMCw2ICszMTEsNyBAQCBw
dWJsaWM6CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHN0YXRpYyB2b2lk
IGxheWVyVHJlZURpZENoYW5nZShQYWdlKik7CiAgICAgc3RhdGljIHZvaWQgcmVuZGVyTGF5ZXJE
ZXN0cm95ZWQoUGFnZSosIGNvbnN0IFJlbmRlckxheWVyKik7CisgICAgc3RhdGljIHZvaWQgcHNl
dWRvRWxlbWVudERlc3Ryb3llZChQYWdlKiwgUHNldWRvRWxlbWVudCopOwogI2VuZGlmCiAKIHBy
aXZhdGU6CkBAIC00OTYsNiArNDk4LDcgQEAgcHJpdmF0ZToKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAgICAgc3RhdGljIHZvaWQgbGF5ZXJUcmVlRGlkQ2hhbmdlSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKik7CiAgICAgc3RhdGljIHZvaWQgcmVuZGVyTGF5ZXJEZXN0cm95ZWRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBjb25zdCBSZW5kZXJMYXllciopOworICAgIHN0YXRp
YyB2b2lkIHBzZXVkb0VsZW1lbnREZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBQ
c2V1ZG9FbGVtZW50Kik7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBpbnQgc19mcm9udGVuZENvdW50
ZXI7CkBAIC0yMDE1LDYgKzIwMTgsMTcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3llZChQYWdlKiBwYWdlLCBjb25zdCBSZW4KICAgICBV
TlVTRURfUEFSQU0ocmVuZGVyTGF5ZXIpOwogI2VuZGlmCiB9CisKK2lubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6cHNldWRvRWxlbWVudERlc3Ryb3llZChQYWdlKiBwYWdlLCBQ
c2V1ZG9FbGVtZW50KiBwc2V1ZG9FbGVtZW50KQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisg
ICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKKyAgICAgICAgcHNldWRvRWxlbWVudERlc3Ryb3ll
ZEltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgcHNldWRvRWxlbWVudCk7CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocHNldWRvRWxlbWVudCk7CisjZW5k
aWYKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmluZGV4IDUxMTlj
Y2M1ZTFhMzEzZTc2MTkwMjAyN2NhYTczOWRhNmYzNGFkMDcuLjkzZDgyODdjMDUwMzc5MWIyNzFk
NzIyNjI3ZmYxMDU0NzZmOGQzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1
ZGUgIkluc3BlY3RvclN0YXRlLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgog
I2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCkBAIC04Myw2ICs4NCw4IEBAIHZvaWQgSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OnJlc2V0KCkKIHsKICAgICBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLmNsZWFyKCk7
CiAgICAgbV9pZFRvTGF5ZXIuY2xlYXIoKTsKKyAgICBtX3BzZXVkb0VsZW1lbnRUb0lkTWFwLmNs
ZWFyKCk7CisgICAgbV9pZFRvUHNldWRvRWxlbWVudC5jbGVhcigpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQpAQCAtMTA5LDYgKzExMiwx
MSBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZW5kZXJMYXllckRlc3Ryb3llZChj
b25zdCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZQogICAgIHVuYmluZChyZW5kZXJMYXllcik7CiB9
CiAKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnBzZXVkb0VsZW1lbnREZXN0cm95ZWQo
UHNldWRvRWxlbWVudCogcHNldWRvRWxlbWVudCkKK3sKKyAgICB1bmJpbmRQc2V1ZG9FbGVtZW50
KHBzZXVkb0VsZW1lbnQpOworfQorCiB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpsYXll
cnNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gPiYgbGF5ZXJz
KQogewogICAgIGxheWVycyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJU
cmVlOjpMYXllcj46OmNyZWF0ZSgpOwpAQCAtMTUwLDExICsxNTgsMTkgQEAgdm9pZCBJbnNwZWN0
b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhpZXJhcmNoeShF
cnJvclN0cmluZyoKIAogUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4g
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIpCiB7Ci0gICAgYm9vbCBpc1Jl
ZmxlY3Rpb24gPSByZW5kZXJMYXllci0+aXNSZWZsZWN0aW9uKCk7Ci0KICAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gcmVuZGVyTGF5ZXItPnJlbmRlcmVyKCk7CiAgICAgUmVuZGVyTGF5ZXJC
YWNraW5nKiBiYWNraW5nID0gcmVuZGVyTGF5ZXItPmJhY2tpbmcoKTsKLSAgICBOb2RlKiBub2Rl
ID0gaXNSZWZsZWN0aW9uID8gcmVuZGVyZXItPnBhcmVudCgpLT5ub2RlKCkgOiByZW5kZXJlci0+
bm9kZSgpOworICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9kZSgpOworCisgICAgYm9vbCBp
c1JlZmxlY3Rpb24gPSByZW5kZXJMYXllci0+aXNSZWZsZWN0aW9uKCk7CisgICAgYm9vbCBpc0dl
bmVyYXRlZCA9IChpc1JlZmxlY3Rpb24gPyByZW5kZXJlci0+cGFyZW50KCkgOiByZW5kZXJlcikt
PmlzQmVmb3JlT3JBZnRlckNvbnRlbnQoKTsKKworICAgIGlmIChpc1JlZmxlY3Rpb24gJiYgaXNH
ZW5lcmF0ZWQpCisgICAgICAgIG5vZGUgPSByZW5kZXJlci0+cGFyZW50KCktPmdlbmVyYXRpbmdO
b2RlKCk7CisgICAgZWxzZSBpZiAoaXNHZW5lcmF0ZWQpCisgICAgICAgIG5vZGUgPSByZW5kZXJl
ci0+Z2VuZXJhdGluZ05vZGUoKTsKKyAgICBlbHNlIGlmIChpc1JlZmxlY3Rpb24pCisgICAgICAg
IG5vZGUgPSByZW5kZXJlci0+cGFyZW50KCktPm5vZGUoKTsKIAogICAgIC8vIEJhc2ljIHNldCBv
ZiBwcm9wZXJ0aWVzLgogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4g
bGF5ZXJPYmplY3QgPSBUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcjo6Y3JlYXRlKCkKQEAg
LTE3MSw2ICsxODcsMTcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXll
cj4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm8KICAgICBpZiAoaXNSZWZs
ZWN0aW9uKQogICAgICAgICBsYXllck9iamVjdC0+c2V0SXNSZWZsZWN0aW9uKHRydWUpOwogCisg
ICAgaWYgKGlzR2VuZXJhdGVkKSB7CisgICAgICAgIGlmIChpc1JlZmxlY3Rpb24pCisgICAgICAg
ICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKKyAgICAgICAgbGF5ZXJPYmplY3Qt
PnNldElzR2VuZXJhdGVkQ29udGVudCh0cnVlKTsKKyAgICAgICAgbGF5ZXJPYmplY3QtPnNldFBz
ZXVkb0VsZW1lbnRJZChiaW5kUHNldWRvRWxlbWVudChzdGF0aWNfY2FzdDxQc2V1ZG9FbGVtZW50
Kj4ocmVuZGVyZXItPm5vZGUoKSkpKTsKKyAgICAgICAgaWYgKHJlbmRlcmVyLT5pc0JlZm9yZUNv
bnRlbnQoKSkKKyAgICAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRQc2V1ZG9DbGFzcygiYmVmb3Jl
Iik7CisgICAgICAgIGVsc2UgaWYgKHJlbmRlcmVyLT5pc0FmdGVyQ29udGVudCgpKQorICAgICAg
ICAgICAgbGF5ZXJPYmplY3QtPnNldFBzZXVkb0NsYXNzKCJhZnRlciIpOworICAgIH0KKwogICAg
IHJldHVybiBsYXllck9iamVjdDsKIH0KIApAQCAtMjE3LDYgKzI0NCwzMCBAQCB2b2lkIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50Ojp1bmJpbmQoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKQogICAg
IG1faWRUb0xheWVyLnJlbW92ZShpZGVudGlmaWVyKTsKIH0KIAorU3RyaW5nIEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpiaW5kUHNldWRvRWxlbWVudChQc2V1ZG9FbGVtZW50KiBwc2V1ZG9FbGVt
ZW50KQoreworICAgIGlmICghcHNldWRvRWxlbWVudCkKKyAgICAgICAgcmV0dXJuICIiOworCisg
ICAgU3RyaW5nIGlkZW50aWZpZXIgPSBtX3BzZXVkb0VsZW1lbnRUb0lkTWFwLmdldChwc2V1ZG9F
bGVtZW50KTsKKyAgICBpZiAoaWRlbnRpZmllci5pc051bGwoKSkgeworICAgICAgICBpZGVudGlm
aWVyID0gSWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCk7CisgICAgICAgIG1f
cHNldWRvRWxlbWVudFRvSWRNYXAuc2V0KHBzZXVkb0VsZW1lbnQsIGlkZW50aWZpZXIpOworICAg
ICAgICBtX2lkVG9Qc2V1ZG9FbGVtZW50LnNldChpZGVudGlmaWVyLCBwc2V1ZG9FbGVtZW50KTsK
KyAgICB9CisgICAgcmV0dXJuIGlkZW50aWZpZXI7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OnVuYmluZFBzZXVkb0VsZW1lbnQoUHNldWRvRWxlbWVudCogcHNldWRvRWxlbWVu
dCkKK3sKKyAgICBTdHJpbmcgaWRlbnRpZmllciA9IG1fcHNldWRvRWxlbWVudFRvSWRNYXAuZ2V0
KHBzZXVkb0VsZW1lbnQpOworICAgIGlmIChpZGVudGlmaWVyLmlzTnVsbCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX3BzZXVkb0VsZW1lbnRUb0lkTWFwLnJlbW92ZShwc2V1ZG9FbGVtZW50
KTsKKyAgICBtX2lkVG9Qc2V1ZG9FbGVtZW50LnJlbW92ZShpZGVudGlmaWVyKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKaW5k
ZXggNzcyMWIxOGFkMmFkNzljOWMwZmFjNDFlZjExMGYzNzRhZjY0YzgzMi4uMmQ5MWFmYTQ4MGRi
ZDEzMDM0ZjA2NmRhMjhhNDNiYzQ0OWE2NGY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKQEAgLTYyLDYgKzYyLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBsYXllclRyZWVEaWRDaGFuZ2UoKTsKICAgICB2b2lkIHJlbmRlckxh
eWVyRGVzdHJveWVkKGNvbnN0IFJlbmRlckxheWVyKik7CisgICAgdm9pZCBwc2V1ZG9FbGVtZW50
RGVzdHJveWVkKFBzZXVkb0VsZW1lbnQqKTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9u
dC1lbmQuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwpAQCAtODIsMTEg
KzgzLDE3IEBAIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVl
OjpJbnRSZWN0PiBidWlsZE9iamVjdEZvckludFJlY3QoY29uc3QgSW50UmVjdCYpOwogCiAgICAg
aW50IGlkRm9yTm9kZShFcnJvclN0cmluZyosIE5vZGUqKTsKLSAgICAgICAgCisKKyAgICBTdHJp
bmcgYmluZFBzZXVkb0VsZW1lbnQoUHNldWRvRWxlbWVudCopOworICAgIHZvaWQgdW5iaW5kUHNl
dWRvRWxlbWVudChQc2V1ZG9FbGVtZW50Kik7CisKICAgICBJbnNwZWN0b3JGcm9udGVuZDo6TGF5
ZXJUcmVlKiBtX2Zyb250ZW5kOwogCiAgICAgSGFzaE1hcDxjb25zdCBSZW5kZXJMYXllciosIFN0
cmluZz4gbV9kb2N1bWVudExheWVyVG9JZE1hcDsKICAgICBIYXNoTWFwPFN0cmluZywgY29uc3Qg
UmVuZGVyTGF5ZXIqPiBtX2lkVG9MYXllcjsKKworICAgIEhhc2hNYXA8UHNldWRvRWxlbWVudCos
IFN0cmluZz4gbV9wc2V1ZG9FbGVtZW50VG9JZE1hcDsKKyAgICBIYXNoTWFwPFN0cmluZywgUHNl
dWRvRWxlbWVudCo+IG1faWRUb1BzZXVkb0VsZW1lbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggMTU2NDZhODdlZDI5MDEzMzhmZWRmMDQ5ZGUxOTk2NmY3NGM3NzE5OC4u
MjRkMzY0Y2MwODE1YzM2MWEwZGQ4Y2EyNWY3YTMxNDYxYzJjYWI2MSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDEzLTAzLTA2ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogaWRlbnRpZnkgbGF5ZXJzIGZvciBDU1MgZ2VuZXJhdGVk
IGNvbnRlbnQgaW4gTGF5ZXJUcmVlQWdlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExMTU1MQorCisgICAgICAgIE5ldyB0ZXN0cyBmb3IgbGF5ZXJz
IGFzc29jaWF0ZWQgd2l0aCBwc2V1ZG8gZWxlbWVudHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXJzL2xh
eWVycy1nZW5lcmF0ZWQtY29udGVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci1wcm90b2NvbC9sYXllcnMvbGF5ZXJzLWdlbmVyYXRlZC1jb250ZW50Lmh0bWw6IEFk
ZGVkLgorCiAyMDEzLTAzLTA2ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgQ3Jhc2ggZHVyaW5nIG1pZGRsZSBtb3VzZSBjbGljayB3aGVuIHBhZ2UgaXMgcmVtb3Zl
ZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXll
cnMtZ2VuZXJhdGVkLWNvbnRlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
LXByb3RvY29sL2xheWVycy9sYXllcnMtZ2VuZXJhdGVkLWNvbnRlbnQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZjM2M3MjkwNzkxNWJiNDgzMzNmMDNiMTBiNjA1Nzc2Yzc0MjYwZTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXJzL2xheWVy
cy1nZW5lcmF0ZWQtY29udGVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMyBAQAorCis9PT0g
RW5hYmxlIHRoZSBMYXllclRyZWUgYWdlbnQgPT09CisKK1BBU1MKKworPT09IEdldCB0aGUgRG9j
dW1lbnQgPT09CisKK1BBU1MKKworPT09IEdldCB0aGUgbGF5ZXIgdHJlZSA9PT0KKworUEFTUwor
Cis9PT0gQ2hlY2sgbGF5ZXJzID09PQorCitQQVNTOiBFeHBlY3RlZCBudW1iZXIgb2YgOjpiZWZv
cmUgbGF5ZXJzLgorUEFTUzogVGhlIHNvbGUgOjpiZWZvcmUgbGF5ZXIgaGFzIGEgcHNldWRvIGVs
ZW1lbnQuCitQQVNTOiBFeHBlY3RlZCBudW1iZXIgb2YgOjphZnRlciBsYXllcnMuCitQQVNTOiBU
aGUgZmlyc3QgOjphZnRlciBsYXllciBoYXMgYSBwc2V1ZG8gZWxlbWVudC4KK1BBU1M6IFRoZSBz
ZWNvbmQgOjphZnRlciBsYXllciBoYXMgYSBwc2V1ZG8gZWxlbWVudC4KK1BBU1M6IFRoZSBzZWNv
bmQgOjphZnRlciBsYXllciBpcyBhIHJlZmxlY3Rpb24uCitQQVNTOiBUaGUgdHdvIDo6YWZ0ZXIg
bGF5ZXJzIGhhdmUgdGhlIHNhbWUgbm9kZSBpZC4KK1BBU1M6IFRoZSB0d28gOjphZnRlciBsYXll
cnMgaGF2ZSB0aGUgc2FtZSBwc2V1ZG8gZWxlbWVudCBpZC4KK1BBU1M6IFRoZSBub24tcmVmbGVj
dGlvbiBnZW5lcmF0ZWQgZ2VuZXJhdGVkIGxheWVycyBoYXZlIHRoZSBzYW1lIG5vZGUgaWQuCitQ
QVNTOiBUaGUgbm9uLXJlZmxlY3Rpb24gZ2VuZXJhdGVkIGxheWVycyBoYXZlIGRpZmZlcmVudCBw
c2V1ZG8gZWxlbWVudCBpZHMuCisKKz09PSBDaGVjayBnZW5lcmF0aW5nIG5vZGUgPT09CisKK1BB
U1M6IEdlbmVyYXRpbmcgbm9kZSB3YXMgZm91bmQuCitQQVNTOiBHZW5lcmF0aW5nIG5vZGUgaGFz
IGV4cGVjdGVkIGxvY2FsTmFtZS4KK1BBU1M6IEdlbmVyYXRpbmcgbm9kZSBoYXMgaWQuCitQQVNT
OiBHZW5lcmF0aW5nIG5vZGUgaGFzIGV4cGVjdGVkIGlkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXJzL2xheWVycy1nZW5lcmF0ZWQtY29udGVudC5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXllcnMtZ2VuZXJh
dGVkLWNvbnRlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDVlYTJlMWIzNGYwMjhiNDI2NWJhOGMwMmQ3
NWNlNTc1MTg0YTJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXBy
b3RvY29sL2xheWVycy9sYXllcnMtZ2VuZXJhdGVkLWNvbnRlbnQuaHRtbApAQCAtMCwwICsxLDE2
NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9wcm90b2NvbC10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworZnVu
Y3Rpb24gdGVzdCgpCit7CisKKyAgICB2YXIgbm9kZXM7CisgCisgICAgSW5zcGVjdG9yVGVzdC5l
dmVudEhhbmRsZXJbIkRPTS5zZXRDaGlsZE5vZGVzIl0gPSBzZXRDaGlsZE5vZGVzOworCisgICAg
ZW5hYmxlTGF5ZXJUcmVlQWdlbnQoKTsKKyAgICAKKyAgICBmdW5jdGlvbiBlbmFibGVMYXllclRy
ZWVBZ2VudChyZXN1bHQpCisgICAgeworICAgICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6
ICJFbmFibGUgdGhlIExheWVyVHJlZSBhZ2VudCIsCisgICAgICAgICAgICBjb21tYW5kOiAiTGF5
ZXJUcmVlLmVuYWJsZSIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7fSwKKyAgICAgICAgICAg
IGNhbGxiYWNrOiBnZXREb2N1bWVudAorICAgICAgICB9KTsKKyAgICB9OworCisgICAgZnVuY3Rp
b24gZ2V0RG9jdW1lbnQoKQorICAgIHsKKyAgICAgICAgLy8gV2UgbXVzdCBmaXJzdCBnZXQgdGhl
IGRvY3VtZW50IHNvIHRoYXQgbGF0ZXIgb24gd2UgbWF5IGdldCBzZW5zaWJsZSBub2RlSWRzLgor
ICAgICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJHZXQgdGhlIERvY3VtZW50IiwKKyAg
ICAgICAgICAgIGNvbW1hbmQ6ICJET00uZ2V0RG9jdW1lbnQiLAorICAgICAgICAgICAgcGFyYW1l
dGVyczoge30sCisgICAgICAgICAgICBjYWxsYmFjazogZ2V0TGF5ZXJUcmVlCisgICAgICAgIH0p
OworICAgIH07CisKKyAgICBmdW5jdGlvbiBnZXRMYXllclRyZWUocmVzdWx0KQorICAgIHsKKyAg
ICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1lOiAiR2V0IHRoZSBsYXllciB0cmVlIiwKKyAg
ICAgICAgICAgIGNvbW1hbmQ6ICJMYXllclRyZWUubGF5ZXJzRm9yTm9kZSIsCisgICAgICAgICAg
ICBwYXJhbWV0ZXJzOiB7Im5vZGVJZCI6IHJlc3VsdC5yb290Lm5vZGVJZH0sCisgICAgICAgICAg
ICBjYWxsYmFjazogZ290TGF5ZXJUcmVlCisgICAgICAgIH0pOworICAgIH07CisKKyAgICBmdW5j
dGlvbiBnb3RMYXllclRyZWUocmVzdWx0KQorICAgIHsKKyAgICAgICAgdmFyIGJlZm9yZUxheWVy
cyA9IFtdOworICAgICAgICB2YXIgYWZ0ZXJMYXllcnMgPSBbXTsKKyAgICAgICAgcmVzdWx0Lmxh
eWVycy5mb3JFYWNoKGZ1bmN0aW9uIChsYXllcikgeworICAgICAgICAgICAgaWYgKCFsYXllci5p
c0dlbmVyYXRlZENvbnRlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICBpZiAobGF5ZXIucHNldWRvQ2xhc3MgPT09ICJiZWZvcmUiKQorICAgICAgICAgICAgICAgIGJl
Zm9yZUxheWVycy5wdXNoKGxheWVyKTsKKyAgICAgICAgICAgIGlmIChsYXllci5wc2V1ZG9DbGFz
cyA9PT0gImFmdGVyIikKKyAgICAgICAgICAgICAgICBhZnRlckxheWVycy5wdXNoKGxheWVyKTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgbG9nVGVzdE5hbWUoIkNoZWNrIGxheWVycyIpOworCisg
ICAgICAgIGFzc2VydCgiRXhwZWN0ZWQgbnVtYmVyIG9mIDo6YmVmb3JlIGxheWVycyIsIGJlZm9y
ZUxheWVycy5sZW5ndGgsIDEpOworICAgICAgICBhc3NlcnQoIlRoZSBzb2xlIDo6YmVmb3JlIGxh
eWVyIGhhcyBhIHBzZXVkbyBlbGVtZW50IiwgYmVmb3JlTGF5ZXJzWzBdLnBzZXVkb0VsZW1lbnRJ
ZCAhPT0gIiIsIHRydWUpOworCisgICAgICAgIGFzc2VydCgiRXhwZWN0ZWQgbnVtYmVyIG9mIDo6
YWZ0ZXIgbGF5ZXJzIiwgYWZ0ZXJMYXllcnMubGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0KCJU
aGUgZmlyc3QgOjphZnRlciBsYXllciBoYXMgYSBwc2V1ZG8gZWxlbWVudCIsIGFmdGVyTGF5ZXJz
WzBdLnBzZXVkb0VsZW1lbnRJZCAhPT0gIiIsIHRydWUpOworICAgICAgICBhc3NlcnQoIlRoZSBz
ZWNvbmQgOjphZnRlciBsYXllciBoYXMgYSBwc2V1ZG8gZWxlbWVudCIsIGFmdGVyTGF5ZXJzWzFd
LnBzZXVkb0VsZW1lbnRJZCAhPT0gIiIsIHRydWUpOworICAgICAgICBhc3NlcnQoIlRoZSBzZWNv
bmQgOjphZnRlciBsYXllciBpcyBhIHJlZmxlY3Rpb24iLCBhZnRlckxheWVyc1sxXS5pc1JlZmxl
Y3Rpb24sIHRydWUpOworICAgICAgICBhc3NlcnQoIlRoZSB0d28gOjphZnRlciBsYXllcnMgaGF2
ZSB0aGUgc2FtZSBub2RlIGlkIiwgYWZ0ZXJMYXllcnNbMF0ubm9kZUlkLCBhZnRlckxheWVyc1sx
XS5ub2RlSWQpOworICAgICAgICBhc3NlcnQoIlRoZSB0d28gOjphZnRlciBsYXllcnMgaGF2ZSB0
aGUgc2FtZSBwc2V1ZG8gZWxlbWVudCBpZCIsIGFmdGVyTGF5ZXJzWzBdLnBzZXVkb0VsZW1lbnRJ
ZCwgYWZ0ZXJMYXllcnNbMV0ucHNldWRvRWxlbWVudElkKTsKKworICAgICAgICBhc3NlcnQoIlRo
ZSBub24tcmVmbGVjdGlvbiBnZW5lcmF0ZWQgZ2VuZXJhdGVkIGxheWVycyBoYXZlIHRoZSBzYW1l
IG5vZGUgaWQiLCBiZWZvcmVMYXllcnNbMF0ubm9kZUlkLCBhZnRlckxheWVyc1swXS5ub2RlSWQp
OworICAgICAgICBhc3NlcnQoIlRoZSBub24tcmVmbGVjdGlvbiBnZW5lcmF0ZWQgbGF5ZXJzIGhh
dmUgZGlmZmVyZW50IHBzZXVkbyBlbGVtZW50IGlkcyIsIGJlZm9yZUxheWVyc1swXS5wc2V1ZG9F
bGVtZW50SWQgIT09IGFmdGVyTGF5ZXJzWzBdLnBzZXVkb0VsZW1lbnRJZCwgdHJ1ZSk7CisKKyAg
ICAgICAgdmFyIG5vZGU7CisgICAgICAgIHZhciBub2RlSWQgPSBiZWZvcmVMYXllcnNbMF0ubm9k
ZUlkOworICAgICAgICBmb3IgKHZhciBpID0gMCwgY291bnQgPSBub2Rlcy5sZW5ndGg7IGkgPCBj
b3VudDsgKytpKSB7CisgICAgICAgICAgICBpZiAobm9kZXNbaV0ubm9kZUlkID09PSBub2RlSWQp
IHsKKyAgICAgICAgICAgICAgICBub2RlID0gbm9kZXNbaV07CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsb2dUZXN0TmFtZSgiQ2hl
Y2sgZ2VuZXJhdGluZyBub2RlIik7CisgICAgICAgIAorICAgICAgICBhc3NlcnQoIkdlbmVyYXRp
bmcgbm9kZSB3YXMgZm91bmQiLCAhIW5vZGUsIHRydWUpOworICAgICAgICBhc3NlcnQoIkdlbmVy
YXRpbmcgbm9kZSBoYXMgZXhwZWN0ZWQgbG9jYWxOYW1lIiwgbm9kZS5sb2NhbE5hbWUsICJkaXYi
KTsKKyAgICAgICAgYXNzZXJ0KCJHZW5lcmF0aW5nIG5vZGUgaGFzIGlkIiwgbm9kZS5hdHRyaWJ1
dGVzWzBdLCAiaWQiKTsKKyAgICAgICAgYXNzZXJ0KCJHZW5lcmF0aW5nIG5vZGUgaGFzIGV4cGVj
dGVkIGlkIiwgbm9kZS5hdHRyaWJ1dGVzWzFdLCAiZ2VuZXJhdG9yIik7CisgICAgICAgIAorICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH07CisKKyAgICBmdW5jdGlv
biBzZXRDaGlsZE5vZGVzIChtZXNzYWdlT2JqZWN0KSB7CisgICAgICAgIG5vZGVzID0gbWVzc2Fn
ZU9iamVjdC5wYXJhbXMubm9kZXM7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIHN0ZXAodGVzdCkK
KyAgICB7CisgICAgICAgIGlmICh0ZXN0LmNhbGxiYWNrKQorICAgICAgICAgICAgbG9nVGVzdE5h
bWUodGVzdC5uYW1lKTsKKyAgICAgICAgcnVuQ29tbWFuZCh0ZXN0KTsKKyAgICB9OworCisgICAg
ZnVuY3Rpb24gbG9nVGVzdE5hbWUobmFtZSkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJcbj09PSAiICsgbmFtZSArICIgPT09XG4iKTsKKyAgICB9OworCisgICAgZnVuY3Rpb24g
cnVuQ29tbWFuZChjb21tYW5kKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29t
bWFuZChjb21tYW5kLmNvbW1hbmQsIGNvbW1hbmQucGFyYW1ldGVycywgZnVuY3Rpb24obWVzc2Fn
ZU9iamVjdCkgeworICAgICAgICAgICAgaWYgKG1lc3NhZ2VPYmplY3QuaGFzT3duUHJvcGVydHko
ImVycm9yIikpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRkFJTDogIiAr
IG1lc3NhZ2VPYmplY3QuZXJyb3IubWVzc2FnZSArICIgKCIgKyBtZXNzYWdlT2JqZWN0LmVycm9y
LmNvZGUgKyAiKSIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0
KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoY29tbWFuZC5uYW1lKQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQ
QVNTIik7CisKKyAgICAgICAgICAgIGlmIChjb21tYW5kLmNhbGxiYWNrKQorICAgICAgICAgICAg
ICAgIGNvbW1hbmQuY2FsbGJhY2sobWVzc2FnZU9iamVjdC5yZXN1bHQpOworICAgICAgICB9KTsK
KyAgICB9OworCisgICAgZnVuY3Rpb24gYXNzZXJ0KG5hbWUsIGFjdHVhbCwgZXhwZWN0ZWQpCisg
ICAgeworICAgICAgICBpZiAoZXhwZWN0ZWQgPT09IGFjdHVhbCkKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJQQVNTOiAiICsgbmFtZSArICIuIik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGQUlMOiAiICsgbmFtZSArICIuIEV4cGVjdGVkICIg
KyBleHBlY3RlZCArICIgYnV0IGdvdCAiICsgYWN0dWFsKTsKKyAgICB9OworCit9OworCit3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkKK3sKKyAg
ICBydW5UZXN0KCk7Cit9LCBmYWxzZSk7CisKKzwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj4KKyAgICAgIAorICAgICNnZW5lcmF0b3I6OmJlZm9yZSwKKyAgICAjZ2VuZXJhdG9yOjph
ZnRlciB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgd2lkdGg6IDEwMHB4
OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFj
azsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CisgICAgICAgIGNv
bnRlbnQ6ICIiOworICAgIH0KKworICAgICNnZW5lcmF0b3I6OmFmdGVyIHsKKyAgICAgICAgLXdl
YmtpdC1ib3gtcmVmbGVjdDpiZWxvdyAxcHggLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQg
dG9wLCBsZWZ0IGJvdHRvbSwgZnJvbSh0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFu
c3BhcmVudCksIHRvKHdoaXRlKSk7CisgICAgfQorCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+
CisKKyAgICA8ZGl2IGlkPSJnZW5lcmF0b3IiPjwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191952</attachid>
            <date>2013-03-07 01:58:59 -0800</date>
            <delta_ts>2013-03-07 02:41:23 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-111551-20130307105459.patch</filename>
            <type>text/plain</type>
            <size>24652</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0ODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjkxM2JlNzBjNGQ4ZGM0
NTMyOGQxOTdjZjY0N2FhM2VmYzg0NmE3Ny4uZTYzMTc4ZjIzOGQ4MWVkZDM3MDg0MDhlOTAzY2Uz
MjAxZGNiNGU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEzLTAzLTA3ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
aWRlbnRpZnkgbGF5ZXJzIGZvciBDU1MgZ2VuZXJhdGVkIGNvbnRlbnQgaW4gTGF5ZXJUcmVlQWdl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTU1
MQorCisgICAgICAgIExheWVycyBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIHBzZXVkbyBlbGVtZW50
cywgZWxlbWVudHMgdGhhdCBhcmUgZ2VuZXJhdGVkCisgICAgICAgIHdoZW4gOjpiZWZvcmUgb3Ig
OjphZnRlciBwc2V1ZG8tY2xhc3NlcyBhcmUgdXNlZCB0byBzdHlsZSBhbiBlbGVtZW50IGFuZAor
ICAgICAgICBwcm92aWRlIGFkZGl0aW9uYWwgcmVuZGVyaW5nIHVzaW5nIHRoZSBDU1MgImNvbnRl
bnQiIHByb3BlcnR5LiBJbiBvcmRlciB0bworICAgICAgICBpZGVudGlmeSB0aGF0IGEgbGF5ZXIg
aXMgYXNzb2NpYXRlZCB0byBhIHBzZXVkbyBlbGVtZW50LCB3ZSBhZGQgYSBuZXcgc2V0IG9mCisg
ICAgICAgIG9wdGlvbmFsIHByb3BlcnRpZXMgb24gdGhlIExheWVyIG9iamVjdDogImlzR2VuZXJh
dGVkQ29udGVudCIsICJwc2V1ZG9FbGVtZW50SWQiCisgICAgICAgIGFuZCAicHNldWRvQ2xhc3Mi
LgorCisgICAgICAgIFdlIG5lZWQgdG8gcHJvdmlkZSB0aGUgInBzZXVkb0VsZW1lbnRJZCIgZm9y
IHRoZSBzYW1lIHJlYXNvbiB3ZSBwcm92aWRlIGEKKyAgICAgICAgIm5vZGVJZCIgZm9yIHRoZSBM
YXllci4gVGhpcyBpcyBzbyB0aGF0IHRoZSBmcm9udC1lbmQgY2FuIGlkZW50aWZ5IHRoYXQgYQor
ICAgICAgICBsYXllciB3aG9zZSAibGF5ZXJJZCIgbWF5IGhhdmUgY2hhbmdlZCBiZXR3ZWVuIHR3
byBsYXllciB0cmVlIHVwZGF0ZXMgaXMKKyAgICAgICAgdXNlZCB0byByZW5kZXIgY29udGVudCBm
b3IgdGhlIHNhbWUgcHNldWRvIGVsZW1lbnQuCisKKyAgICAgICAgSW4gdGhlIGluc3RhbmNlIHRo
YXQgYSBsYXllciBpcyByZW5kZXJpbmcgZ2VuZXJhdGVkIGNvbnRlbnQsIHdlIGFsc28gc2V0Cisg
ICAgICAgIHRoZSAibm9kZUlkIiB0byBiZSB0aGUgZ2VuZXJhdGluZyBub2RlJ3MgaWQuIFRoZSBn
ZW5lcmF0aW5nIG5vZGUgaXMgdGhlCisgICAgICAgIG5vZGUgaW4gdGhlIERPTSB0aGF0IHRoZSB1
c2VyIHN0eWxlZCB1c2luZyA6OmJlZm9yZSBvciA6OmFmdGVyIHBzZXVkby1jbGFzc2VzLgorICAg
ICAgICBXZSBhbHNvIGFkZCB0aGUgcHNldWRvLWNsYXNzIHVzZWQgYXMgdGhlICJwc2V1ZG9DbGFz
cyIgcHJvcGVydHkgc3VjaCB0aGF0IHRoZQorICAgICAgICBmcm9udC1lbmQgbWF5IHByb3ZpZGUg
dXNlZnVsIGluZm9ybWF0aW9uIHRvIHRoZSB1c2VyIGFib3V0IHdoYXQgdHlwZSBvZgorICAgICAg
ICBwc2V1ZG8tY2xhc3MgeWllbGRlZCB0aGUgZ2VuZXJhdGlvbiBvZiB0aGlzIGxheWVyLiBXZSBh
bHNvIGRlYWwgd2l0aCB0aGUKKyAgICAgICAgcG9zc2liaWxpdHkgdGhhdCB0aGUgbGF5ZXIgaXMg
YSByZWZsZWN0aW9uIGZvciBhIHBzZXVkbyBlbGVtZW50LgorICAgIAorICAgICAgICBTaW5jZSBw
c2V1ZG8gZWxlbWVudHMgYXJlIG5vdCBwYXJ0IG9mIHRoZSB1c2VyLXZpc2libGUgRE9NLCBhbmQg
dGh1cyBjYW4ndCBiZQorICAgICAgICBwdXNoZWQgdG8gdGhlIGZyb250LWVuZCwgd2UgbWFpbnRh
aW4gYSBzcGVjaWFsIElEIGhhc2ggbWFwIGluIHRoZSBMYXllclRyZWVBZ2VudC4KKyAgICAgICAg
SW4gb3JkZXIgdG8gYmUgYWJsZSB0byB1bmJpbmQgYSBwc2V1ZG8gZWxlbWVudCBpZCBhbmQgYSBw
c2V1ZG8gZWxlbWVudCwgd2UgYWRkIGEKKyAgICAgICAgZGVzdHJ1Y3RvciBtZXRob2QgdG8gUHNl
dWRvRWxlbWVudCBhbmQgcHJvdmlkZSBhIG5ldyBpbnN0cnVtZW50YXRpb24gY2FsbCBzbyB0aGF0
CisgICAgICAgIHRoZSBMYXllclRyZWVBZ2VudCBtYXkgYmUgbm90aWZpZWQgb2YgYSBQc2V1ZG9F
bGVtZW50IGJlaW5nIGRlc3Ryb3llZC4gVGhpcworICAgICAgICByZWZsZWN0cyB0aGUgcHJpbmNp
cGxlIHdlIHVzZSB0byB1cGRhdGUgdGhlIFJlbmRlckxheWVyIGJpbmRpbmdzIHdoZW4gYQorICAg
ICAgICBSZW5kZXJMYXllciBpcyBkZXN0cm95ZWQsIGFzIG5vdGlmaWVkIGJ5IHRoZSBSZW5kZXJM
YXllckNvbXBvc2l0b3IuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisg
ICAgICAgIFRlc3Q6IGluc3BlY3Rvci1wcm90b2NvbC9sYXllcnMvbGF5ZXJzLWdlbmVyYXRlZC1j
b250ZW50Lmh0bWwKKworICAgICAgICAqIGRvbS9Qc2V1ZG9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6On5Qc2V1ZG9FbGVtZW50KTogTmV3IGRlc3RydWN0b3Ig
dXNlZCB0byBub3RpZnkKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIG9mIGEgUHNl
dWRvRWxlbWVudCBiZWluZyBkZXN0cm95ZWQsIHN1Y2ggdGhhdAorICAgICAgICBpdCBjYW4gZXZl
bnR1YWxseSBiZSByZWxheWVkIHRvIHRoZSBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRvbS9Qc2V1ZG9FbGVtZW50Lmg6CisgICAgICAgIChQ
c2V1ZG9FbGVtZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246IEFkZCB0
aGUgbmV3IFBzZXVkb0VsZW1lbnRJZCB0eXBlIHVzZWQgZm9yCisgICAgICAgIHRoZSBuZXcgInBz
ZXVkb0VsZW1lbnRJZCIgcHJvcGVydHkgb24gTGF5ZXIsIHRvIHdoaWNoIHdlIGFsc28gYWRkIHRo
ZQorICAgICAgICAiaXNHZW5lcmF0ZWRDb250ZW50IiBhbmQgInBzZXVkb0NsYXNzIiBwcm9wZXJ0
aWVzLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OnBzZXVkb0VsZW1lbnREZXN0cm95ZWRJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KEluc3BlY3Rvckluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnBzZXVkb0VsZW1lbnREZXN0cm95ZWQpOiBOZXcgbWV0aG9kCisgICAg
ICAgIGNhbGxlZCBpbiB0aGUgUHNldWRvRWxlbWVudCBkZXN0cnVjdG9yIHVzZWQgdG8gcmVsYXkg
dGhlIGZhY3QgdGhhdCBhCisgICAgICAgIFBzZXVkb0VsZW1lbnQgd2FzIGRlc3Ryb3llZCB0byB0
aGUgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckxheWVyVHJlZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJl
ZUFnZW50OjpyZXNldCk6IENsZWFyIHRoZSBuZXcgUHNldWRvRWxlbWVudAorICAgICAgICBpZGVu
dGlmaWVyIG1hcHMuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
cHNldWRvRWxlbWVudERlc3Ryb3llZCk6IFJlbW92ZSBhbnkKKyAgICAgICAgaWRlbnRpZmllciBi
aW5kaW5nIGZvciB0aGUgcHJvdmlkZWQgUHNldWRvRWxlbWVudCBiZWluZyBkZXN0cm95ZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFn
ZW50OjpidWlsZE9iamVjdEZvckxheWVyKTogU2V0IHRoZSBuZXcKKyAgICAgICAgImlzR2VuZXJh
dGVkQ29udGVudCIsICJwc2V1ZG9FbGVtZW50SWQiIGFuZCAicHNldWRvQ2xhc3MiIHByb3BlcnRp
ZXMgb24KKyAgICAgICAgdGhlIExheWVyIG9iamVjdCBmb3IgbGF5ZXJzIGFzc29jaWF0ZWQgd2l0
aCBhIHBzZXVkbyBlbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OmJpbmQpOiBVc2UgZW1wdHlTdHJpbmcoKSBpbnN0ZWFkIG9mICIiLgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnVuYmluZCk6IFVzZSBhbiBpdGVyYXRv
ciBpbnN0ZWFkIG9mIGEKKyAgICAgICAgZ2V0KCkgYW5kIHJlbW92ZSgpIGNvbWJpbmF0aW9uIGlu
IG9yZGVyIHRvIHJlZHVjZSBsb29rdXBzIGFuZCBtaW1pY2sgdGhlCisgICAgICAgIGNvZGUgd3Jp
dHRlbiBmb3IgdW5iaW5kUHNldWRvRWxlbWVudCgpLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQ6OmJpbmRQc2V1ZG9FbGVtZW50KTogQmluZHMgdGhlIHByb3ZpZGVk
CisgICAgICAgIFBzZXVkb0VsZW1lbnQgdG8gYSB1bmlxdWUgaWRlbnRpZmllci4KKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp1bmJpbmRQc2V1ZG9FbGVtZW50KTog
VW5iaW5kcyB0aGUKKyAgICAgICAgcHJvdmlkZWQgUHNldWRvRWxlbWVudCBmcm9tIGl0cyB1bmlx
dWUgaWRlbnRpZmllci4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvckxheWVyVHJlZUFnZW50KToKKwogMjAxMy0wMy0wNiAg
VG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENyYXNoIGR1cmluZyBt
aWRkbGUgbW91c2UgY2xpY2sgd2hlbiBwYWdlIGlzIHJlbW92ZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1
ZG9FbGVtZW50LmNwcAppbmRleCA0YmVmZjJlODk0Y2QwZDlhMTBkMGQ3MWIyZjFkYTViNDc2NDNm
ODIzLi44Mzk0MTRlZTlkMDFmYzdjOGY2N2EyZWFlM2RjMWE1N2Y1NDdjZGJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiUHNl
dWRvRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiQ29udGVudERhdGEuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5o
IgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclF1b3RlLmgiCkBA
IC02Myw2ICs2NCwxMSBAQCBQc2V1ZG9FbGVtZW50OjpQc2V1ZG9FbGVtZW50KEVsZW1lbnQqIHBh
cmVudCwgUHNldWRvSWQgcHNldWRvSWQpCiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVDYWxsYmFja3Mo
KTsKIH0KIAorUHNldWRvRWxlbWVudDo6flBzZXVkb0VsZW1lbnQoKQoreworICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6cHNldWRvRWxlbWVudERlc3Ryb3llZChkb2N1bWVudCgpLT5wYWdl
KCksIHRoaXMpOworfQorCiBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBQc2V1ZG9FbGVtZW50Ojpj
dXN0b21TdHlsZUZvclJlbmRlcmVyKCkKIHsKICAgICByZXR1cm4gcGFyZW50T3JTaGFkb3dIb3N0
RWxlbWVudCgpLT5yZW5kZXJlcigpLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShtX3BzZXVkb0lkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5oCmluZGV4IDkzOWM4Zjk5ZmU1YjVjMTA1MzBhYTFl
YzhiOTEzZmJkMmNlOTk1OGQuLjEyYTJhMjA2OTE4MTMwOGVmYzJiNTI4OWMwODYwYjRmYTNlN2Uz
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaApAQCAtNDAsNiArNDAsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBzZXVkb0VsZW1lbnQocGFy
ZW50LCBwc2V1ZG9JZCkpOwogICAgIH0KKyAgICB+UHNldWRvRWxlbWVudCgpOwogCiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IGU4N2RmMzYyZmExNjBmNTkxMzZlZWNjZWI1
Y2E1NjVhOTExNjIwZjkuLjZjMzc0OTMyNzI4MmE5M2IxN2I5ZmM0MWFlOTllMzEyN2RiODdhNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTM2NDYsNiArMzY0
NiwxMSBAQAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgUmVuZGVyTGF5
ZXIgaWRlbnRpZmllci4iCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICJpZCI6ICJQc2V1ZG9FbGVtZW50SWQiLAorICAgICAgICAgICAgICAgICJ0eXBlIjog
InN0cmluZyIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBQc2V1ZG9F
bGVtZW50IGlkZW50aWZpZXIuIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAiaWQiOiAiSW50UmVjdCIsCiAgICAgICAgICAgICAgICAgInR5cGUiOiAib2Jq
ZWN0IiwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSByZWN0YW5nbGUuIiwKQEAg
LTM2NjgsNyArMzY3MywxMCBAQAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1lbW9y
eSIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiRXN0aW1hdGVkIG1lbW9yeSB1
c2VkIGJ5IHRoaXMgbGF5ZXIuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNv
bXBvc2l0ZWRCb3VuZHMiLCAiJHJlZiI6ICJJbnRSZWN0IiwgImRlc2NyaXB0aW9uIjogIlRoZSBi
b3VuZHMgb2YgdGhlIGNvbXBvc2l0ZWQgbGF5ZXIuIiB9LAogICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImlzSW5TaGFkb3dUcmVlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6
IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJbmRpY2F0ZXMgd2hldGhlciB0aGlzIGxheWVyIGlzIGFz
c29jaWF0ZWQgd2l0aCBhbiBlbGVtZW50IGhvc3RlZCBpbiBhIHNoYWRvdyB0cmVlLiIgfSwKLSAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZmxlY3Rpb24iLCAidHlwZSI6ICJib29s
ZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkluZGljYXRlcyB3aGV0aGVy
IHRoaXMgbGF5ZXIgd2FzIHVzZWQgdG8gcHJvdmlkZSBhIHJlZmxlY3Rpb24gZm9yIHRoZSBlbGVt
ZW50LiIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzUmVmbGVjdGlvbiIsICJ0
eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSW5kaWNh
dGVzIHdoZXRoZXIgdGhpcyBsYXllciB3YXMgdXNlZCB0byBwcm92aWRlIGEgcmVmbGVjdGlvbiBm
b3IgdGhlIGVsZW1lbnQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzR2Vu
ZXJhdGVkQ29udGVudCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGxheWVyIGlzIGF0dGFjaGVkIHRvIGEg
cHNldWRvIGVsZW1lbnQgdGhhdCBpcyBDU1MgZ2VuZXJhdGVkIGNvbnRlbnQuIiB9LAorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInBzZXVkb0VsZW1lbnRJZCIsICIkcmVmIjogIlBzZXVk
b0VsZW1lbnRJZCIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgaWQgZm9y
IHRoZSBwc2V1ZG8gZWxlbWVudCBhc3NvY2lhdGVkIHdpdGggdGhpcyBsYXllci4iIH0sCisgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHNldWRvQ2xhc3MiLCAidHlwZSI6ICJzdHJpbmci
LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIG5hbWUgb2YgdGhlIENTUyBw
c2V1ZG8tY2xhc3MgdGhhdCBwcm9tcHRlZCB0aGUgbGF5ZXIncyBjb250ZW50IHRvIGJlIGdlbmVy
YXRlZC4iIH0KICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwCmluZGV4IGFjOTM3N2E5ZTI4NjlkNzIyN2Q4MzJmNjRmMGMzZTgyMGFmMjEyNjIuLmQ0
NWJmZjk1ODU1YmY2NDFjYmU0M2I0YjM3MzdlODVhZDZlZDU1ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0x
MzY3LDYgKzEzNjcsMTIgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlbmRlckxh
eWVyRGVzdHJveWVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnMKICAgICBpZiAoSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+
aW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKICAgICAgICAgbGF5ZXJUcmVlQWdlbnQtPnJlbmRl
ckxheWVyRGVzdHJveWVkKHJlbmRlckxheWVyKTsKIH0KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnBzZXVkb0VsZW1lbnREZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMsIFBzZXVkb0VsZW1lbnQqIHBzZXVkb0VsZW1lbnQpCit7Cisg
ICAgaWYgKEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBsYXllclRyZWVBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMtPmluc3BlY3RvckxheWVyVHJlZUFnZW50KCkpCisgICAgICAgIGxheWVyVHJl
ZUFnZW50LT5wc2V1ZG9FbGVtZW50RGVzdHJveWVkKHBzZXVkb0VsZW1lbnQpOworfQogI2VuZGlm
CiAKIG5hbWVzcGFjZSBJbnN0cnVtZW50YXRpb25FdmVudHMgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDhkNGUzZDMx
NGNhOWE4Y2NlZTlkYTE0ZTY2ZjZlODhlMzEyMTJhODguLjk1NzhiNjA1MWM2MjRhZDc5ZTZiNjBh
OTA3ZmFkMGJhYWJjMTE3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBLVVJM
OwogY2xhc3MgTm9kZTsKK2NsYXNzIFBzZXVkb0VsZW1lbnQ7CiBjbGFzcyBSZW5kZXJMYXllcjsK
IGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKQEAgLTMxMCw2ICsz
MTEsNyBAQCBwdWJsaWM6CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHN0
YXRpYyB2b2lkIGxheWVyVHJlZURpZENoYW5nZShQYWdlKik7CiAgICAgc3RhdGljIHZvaWQgcmVu
ZGVyTGF5ZXJEZXN0cm95ZWQoUGFnZSosIGNvbnN0IFJlbmRlckxheWVyKik7CisgICAgc3RhdGlj
IHZvaWQgcHNldWRvRWxlbWVudERlc3Ryb3llZChQYWdlKiwgUHNldWRvRWxlbWVudCopOwogI2Vu
ZGlmCiAKIHByaXZhdGU6CkBAIC00OTYsNiArNDk4LDcgQEAgcHJpdmF0ZToKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgc3RhdGljIHZvaWQgbGF5ZXJUcmVlRGlkQ2hhbmdl
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAgICAgc3RhdGljIHZvaWQgcmVuZGVyTGF5ZXJE
ZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBjb25zdCBSZW5kZXJMYXllciopOwor
ICAgIHN0YXRpYyB2b2lkIHBzZXVkb0VsZW1lbnREZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqLCBQc2V1ZG9FbGVtZW50Kik7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBpbnQgc19mcm9u
dGVuZENvdW50ZXI7CkBAIC0yMDE1LDYgKzIwMTgsMTcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3llZChQYWdlKiBwYWdlLCBjb25zdCBS
ZW4KICAgICBVTlVTRURfUEFSQU0ocmVuZGVyTGF5ZXIpOwogI2VuZGlmCiB9CisKK2lubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHNldWRvRWxlbWVudERlc3Ryb3llZChQYWdl
KiBwYWdlLCBQc2V1ZG9FbGVtZW50KiBwc2V1ZG9FbGVtZW50KQoreworI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMg
PSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKKyAgICAgICAgcHNldWRvRWxlbWVu
dERlc3Ryb3llZEltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgcHNldWRvRWxlbWVudCk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocHNldWRvRWxlbWVu
dCk7CisjZW5kaWYKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmlu
ZGV4IDUxMTljY2M1ZTFhMzEzZTc2MTkwMjAyN2NhYTczOWRhNmYzNGFkMDcuLjk3ZjExZWRlMzU4
OTk2ZGI3ZTRkYTEyMmViNWIxZTM1MDYzZDI0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAtNDEsNiArNDEsNyBA
QAogI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0Fn
ZW50cy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJQc2V1ZG9FbGVtZW50Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcu
aCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCkBAIC04Myw2ICs4NCw4IEBAIHZvaWQgSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQ6OnJlc2V0KCkKIHsKICAgICBtX2RvY3VtZW50TGF5ZXJUb0lkTWFw
LmNsZWFyKCk7CiAgICAgbV9pZFRvTGF5ZXIuY2xlYXIoKTsKKyAgICBtX3BzZXVkb0VsZW1lbnRU
b0lkTWFwLmNsZWFyKCk7CisgICAgbV9pZFRvUHNldWRvRWxlbWVudC5jbGVhcigpOwogfQogCiB2
b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQpAQCAtMTA5
LDYgKzExMiwxMSBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZW5kZXJMYXllckRl
c3Ryb3llZChjb25zdCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZQogICAgIHVuYmluZChyZW5kZXJM
YXllcik7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnBzZXVkb0VsZW1lbnRE
ZXN0cm95ZWQoUHNldWRvRWxlbWVudCogcHNldWRvRWxlbWVudCkKK3sKKyAgICB1bmJpbmRQc2V1
ZG9FbGVtZW50KHBzZXVkb0VsZW1lbnQpOworfQorCiB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFn
ZW50OjpsYXllcnNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4g
PiYgbGF5ZXJzKQogewogICAgIGxheWVycyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6TGF5ZXJUcmVlOjpMYXllcj46OmNyZWF0ZSgpOwpAQCAtMTUwLDExICsxNTgsMTkgQEAgdm9p
ZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhp
ZXJhcmNoeShFcnJvclN0cmluZyoKIAogUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVl
OjpMYXllcj4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIpCiB7Ci0gICAg
Ym9vbCBpc1JlZmxlY3Rpb24gPSByZW5kZXJMYXllci0+aXNSZWZsZWN0aW9uKCk7Ci0KICAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gcmVuZGVyTGF5ZXItPnJlbmRlcmVyKCk7CiAgICAgUmVu
ZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nID0gcmVuZGVyTGF5ZXItPmJhY2tpbmcoKTsKLSAgICBO
b2RlKiBub2RlID0gaXNSZWZsZWN0aW9uID8gcmVuZGVyZXItPnBhcmVudCgpLT5ub2RlKCkgOiBy
ZW5kZXJlci0+bm9kZSgpOworICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9kZSgpOworCisg
ICAgYm9vbCBpc1JlZmxlY3Rpb24gPSByZW5kZXJMYXllci0+aXNSZWZsZWN0aW9uKCk7CisgICAg
Ym9vbCBpc0dlbmVyYXRlZCA9IChpc1JlZmxlY3Rpb24gPyByZW5kZXJlci0+cGFyZW50KCkgOiBy
ZW5kZXJlciktPmlzQmVmb3JlT3JBZnRlckNvbnRlbnQoKTsKKworICAgIGlmIChpc1JlZmxlY3Rp
b24gJiYgaXNHZW5lcmF0ZWQpCisgICAgICAgIG5vZGUgPSByZW5kZXJlci0+cGFyZW50KCktPmdl
bmVyYXRpbmdOb2RlKCk7CisgICAgZWxzZSBpZiAoaXNHZW5lcmF0ZWQpCisgICAgICAgIG5vZGUg
PSByZW5kZXJlci0+Z2VuZXJhdGluZ05vZGUoKTsKKyAgICBlbHNlIGlmIChpc1JlZmxlY3Rpb24p
CisgICAgICAgIG5vZGUgPSByZW5kZXJlci0+cGFyZW50KCktPm5vZGUoKTsKIAogICAgIC8vIEJh
c2ljIHNldCBvZiBwcm9wZXJ0aWVzLgogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVl
OjpMYXllcj4gbGF5ZXJPYmplY3QgPSBUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcjo6Y3Jl
YXRlKCkKQEAgLTE3MSw2ICsxODcsMTcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJU
cmVlOjpMYXllcj4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm8KICAgICBp
ZiAoaXNSZWZsZWN0aW9uKQogICAgICAgICBsYXllck9iamVjdC0+c2V0SXNSZWZsZWN0aW9uKHRy
dWUpOwogCisgICAgaWYgKGlzR2VuZXJhdGVkKSB7CisgICAgICAgIGlmIChpc1JlZmxlY3Rpb24p
CisgICAgICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKKyAgICAgICAgbGF5
ZXJPYmplY3QtPnNldElzR2VuZXJhdGVkQ29udGVudCh0cnVlKTsKKyAgICAgICAgbGF5ZXJPYmpl
Y3QtPnNldFBzZXVkb0VsZW1lbnRJZChiaW5kUHNldWRvRWxlbWVudChzdGF0aWNfY2FzdDxQc2V1
ZG9FbGVtZW50Kj4ocmVuZGVyZXItPm5vZGUoKSkpKTsKKyAgICAgICAgaWYgKHJlbmRlcmVyLT5p
c0JlZm9yZUNvbnRlbnQoKSkKKyAgICAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRQc2V1ZG9DbGFz
cygiYmVmb3JlIik7CisgICAgICAgIGVsc2UgaWYgKHJlbmRlcmVyLT5pc0FmdGVyQ29udGVudCgp
KQorICAgICAgICAgICAgbGF5ZXJPYmplY3QtPnNldFBzZXVkb0NsYXNzKCJhZnRlciIpOworICAg
IH0KKwogICAgIHJldHVybiBsYXllck9iamVjdDsKIH0KIApAQCAtMTk3LDcgKzIyNCw3IEBAIFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6SW50UmVjdD4gSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OmJ1aWxkT2JqZWN0CiBTdHJpbmcgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJp
bmQoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKQogewogICAgIGlmICghbGF5ZXIpCi0gICAgICAg
IHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgU3RyaW5nIGlk
ZW50aWZpZXIgPSBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLmdldChsYXllcik7CiAgICAgaWYgKGlk
ZW50aWZpZXIuaXNOdWxsKCkpIHsKICAgICAgICAgaWRlbnRpZmllciA9IElkZW50aWZpZXJzRmFj
dG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpOwpAQCAtMjA5LDEyICsyMzYsMzMgQEAgU3RyaW5nIElu
c3BlY3RvckxheWVyVHJlZUFnZW50OjpiaW5kKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikKIAog
dm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6dW5iaW5kKGNvbnN0IFJlbmRlckxheWVyKiBs
YXllcikKIHsKLSAgICBTdHJpbmcgaWRlbnRpZmllciA9IG1fZG9jdW1lbnRMYXllclRvSWRNYXAu
Z2V0KGxheWVyKTsKLSAgICBpZiAoaWRlbnRpZmllci5pc051bGwoKSkKKyAgICBIYXNoTWFwPGNv
bnN0IFJlbmRlckxheWVyKiwgU3RyaW5nPjo6aXRlcmF0b3IgaXRlcmF0b3IgPSBtX2RvY3VtZW50
TGF5ZXJUb0lkTWFwLmZpbmQobGF5ZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX2RvY3VtZW50
TGF5ZXJUb0lkTWFwLmVuZCgpKQogICAgICAgICByZXR1cm47CisgICAgbV9pZFRvTGF5ZXIucmVt
b3ZlKGl0ZXJhdG9yLT52YWx1ZSk7CisgICAgbV9kb2N1bWVudExheWVyVG9JZE1hcC5yZW1vdmUo
aXRlcmF0b3IpOworfQorCitTdHJpbmcgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJpbmRQc2V1
ZG9FbGVtZW50KFBzZXVkb0VsZW1lbnQqIHBzZXVkb0VsZW1lbnQpCit7CisgICAgaWYgKCFwc2V1
ZG9FbGVtZW50KQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICBTdHJpbmcgaWRl
bnRpZmllciA9IG1fcHNldWRvRWxlbWVudFRvSWRNYXAuZ2V0KHBzZXVkb0VsZW1lbnQpOworICAg
IGlmIChpZGVudGlmaWVyLmlzTnVsbCgpKSB7CisgICAgICAgIGlkZW50aWZpZXIgPSBJZGVudGlm
aWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKTsKKyAgICAgICAgbV9wc2V1ZG9FbGVtZW50
VG9JZE1hcC5zZXQocHNldWRvRWxlbWVudCwgaWRlbnRpZmllcik7CisgICAgICAgIG1faWRUb1Bz
ZXVkb0VsZW1lbnQuc2V0KGlkZW50aWZpZXIsIHBzZXVkb0VsZW1lbnQpOworICAgIH0KKyAgICBy
ZXR1cm4gaWRlbnRpZmllcjsKK30KIAotICAgIG1fZG9jdW1lbnRMYXllclRvSWRNYXAucmVtb3Zl
KGxheWVyKTsKLSAgICBtX2lkVG9MYXllci5yZW1vdmUoaWRlbnRpZmllcik7Cit2b2lkIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50Ojp1bmJpbmRQc2V1ZG9FbGVtZW50KFBzZXVkb0VsZW1lbnQqIHBz
ZXVkb0VsZW1lbnQpCit7CisgICAgSGFzaE1hcDxQc2V1ZG9FbGVtZW50KiwgU3RyaW5nPjo6aXRl
cmF0b3IgaXRlcmF0b3IgPSBtX3BzZXVkb0VsZW1lbnRUb0lkTWFwLmZpbmQocHNldWRvRWxlbWVu
dCk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fcHNldWRvRWxlbWVudFRvSWRNYXAuZW5kKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX2lkVG9Qc2V1ZG9FbGVtZW50LnJlbW92ZShpdGVyYXRvci0+
dmFsdWUpOworICAgIG1fcHNldWRvRWxlbWVudFRvSWRNYXAucmVtb3ZlKGl0ZXJhdG9yKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAppbmRleCA3NzIxYjE4YWQyYWQ3OWM5YzBmYWM0
MWVmMTEwZjM3NGFmNjRjODMyLi4yZDkxYWZhNDgwZGJkMTMwMzRmMDY2ZGEyOGE0M2JjNDQ5YTY0
Zjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuaApAQCAtNjIsNiArNjIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxheWVyVHJl
ZURpZENoYW5nZSgpOwogICAgIHZvaWQgcmVuZGVyTGF5ZXJEZXN0cm95ZWQoY29uc3QgUmVuZGVy
TGF5ZXIqKTsKKyAgICB2b2lkIHBzZXVkb0VsZW1lbnREZXN0cm95ZWQoUHNldWRvRWxlbWVudCop
OwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQg
ZW5hYmxlKEVycm9yU3RyaW5nKik7CkBAIC04MiwxMSArODMsMTcgQEAgcHJpdmF0ZToKICAgICBQ
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkludFJlY3Q+IGJ1aWxkT2JqZWN0Rm9y
SW50UmVjdChjb25zdCBJbnRSZWN0Jik7CiAKICAgICBpbnQgaWRGb3JOb2RlKEVycm9yU3RyaW5n
KiwgTm9kZSopOwotICAgICAgICAKKworICAgIFN0cmluZyBiaW5kUHNldWRvRWxlbWVudChQc2V1
ZG9FbGVtZW50Kik7CisgICAgdm9pZCB1bmJpbmRQc2V1ZG9FbGVtZW50KFBzZXVkb0VsZW1lbnQq
KTsKKwogICAgIEluc3BlY3RvckZyb250ZW5kOjpMYXllclRyZWUqIG1fZnJvbnRlbmQ7CiAKICAg
ICBIYXNoTWFwPGNvbnN0IFJlbmRlckxheWVyKiwgU3RyaW5nPiBtX2RvY3VtZW50TGF5ZXJUb0lk
TWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBjb25zdCBSZW5kZXJMYXllcio+IG1faWRUb0xheWVy
OworCisgICAgSGFzaE1hcDxQc2V1ZG9FbGVtZW50KiwgU3RyaW5nPiBtX3BzZXVkb0VsZW1lbnRU
b0lkTWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCBQc2V1ZG9FbGVtZW50Kj4gbV9pZFRvUHNldWRv
RWxlbWVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNTY0NmE4N2Vk
MjkwMTMzOGZlZGYwNDlkZTE5OTY2Zjc0Yzc3MTk4Li5lOWE0NDBhMTJjYTU4MDBlZDA4M2U1YzZl
ZjFiZGVmMTgwYzViNTQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDMtMDcgIEFudG9p
bmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBp
ZGVudGlmeSBsYXllcnMgZm9yIENTUyBnZW5lcmF0ZWQgY29udGVudCBpbiBMYXllclRyZWVBZ2Vu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNTUx
CisKKyAgICAgICAgTmV3IHRlc3RzIGZvciBsYXllcnMgYXNzb2NpYXRlZCB3aXRoIHBzZXVkbyBl
bGVtZW50cy4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAg
KiBpbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXJzL2xheWVycy1nZW5lcmF0ZWQtY29udGVudC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9sYXllcnMvbGF5
ZXJzLWdlbmVyYXRlZC1jb250ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTAzLTA2ICBUb255IENo
YW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ3Jhc2ggZHVyaW5nIG1pZGRsZSBt
b3VzZSBjbGljayB3aGVuIHBhZ2UgaXMgcmVtb3ZlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXllcnMtZ2VuZXJhdGVkLWNvbnRlbnQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXllcnMtZ2Vu
ZXJhdGVkLWNvbnRlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjM2M3MjkwNzkxNWJiNDgz
MzNmMDNiMTBiNjA1Nzc2Yzc0MjYwZTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXJzL2xheWVycy1nZW5lcmF0ZWQtY29udGVudC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzMyBAQAorCis9PT0gRW5hYmxlIHRoZSBMYXllclRyZWUgYWdlbnQg
PT09CisKK1BBU1MKKworPT09IEdldCB0aGUgRG9jdW1lbnQgPT09CisKK1BBU1MKKworPT09IEdl
dCB0aGUgbGF5ZXIgdHJlZSA9PT0KKworUEFTUworCis9PT0gQ2hlY2sgbGF5ZXJzID09PQorCitQ
QVNTOiBFeHBlY3RlZCBudW1iZXIgb2YgOjpiZWZvcmUgbGF5ZXJzLgorUEFTUzogVGhlIHNvbGUg
OjpiZWZvcmUgbGF5ZXIgaGFzIGEgcHNldWRvIGVsZW1lbnQuCitQQVNTOiBFeHBlY3RlZCBudW1i
ZXIgb2YgOjphZnRlciBsYXllcnMuCitQQVNTOiBUaGUgZmlyc3QgOjphZnRlciBsYXllciBoYXMg
YSBwc2V1ZG8gZWxlbWVudC4KK1BBU1M6IFRoZSBzZWNvbmQgOjphZnRlciBsYXllciBoYXMgYSBw
c2V1ZG8gZWxlbWVudC4KK1BBU1M6IFRoZSBzZWNvbmQgOjphZnRlciBsYXllciBpcyBhIHJlZmxl
Y3Rpb24uCitQQVNTOiBUaGUgdHdvIDo6YWZ0ZXIgbGF5ZXJzIGhhdmUgdGhlIHNhbWUgbm9kZSBp
ZC4KK1BBU1M6IFRoZSB0d28gOjphZnRlciBsYXllcnMgaGF2ZSB0aGUgc2FtZSBwc2V1ZG8gZWxl
bWVudCBpZC4KK1BBU1M6IFRoZSBub24tcmVmbGVjdGlvbiBnZW5lcmF0ZWQgZ2VuZXJhdGVkIGxh
eWVycyBoYXZlIHRoZSBzYW1lIG5vZGUgaWQuCitQQVNTOiBUaGUgbm9uLXJlZmxlY3Rpb24gZ2Vu
ZXJhdGVkIGxheWVycyBoYXZlIGRpZmZlcmVudCBwc2V1ZG8gZWxlbWVudCBpZHMuCisKKz09PSBD
aGVjayBnZW5lcmF0aW5nIG5vZGUgPT09CisKK1BBU1M6IEdlbmVyYXRpbmcgbm9kZSB3YXMgZm91
bmQuCitQQVNTOiBHZW5lcmF0aW5nIG5vZGUgaGFzIGV4cGVjdGVkIGxvY2FsTmFtZS4KK1BBU1M6
IEdlbmVyYXRpbmcgbm9kZSBoYXMgaWQuCitQQVNTOiBHZW5lcmF0aW5nIG5vZGUgaGFzIGV4cGVj
dGVkIGlkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5
ZXJzL2xheWVycy1nZW5lcmF0ZWQtY29udGVudC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
LXByb3RvY29sL2xheWVycy9sYXllcnMtZ2VuZXJhdGVkLWNvbnRlbnQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45MDVlYTJlMWIzNGYwMjhiNDI2NWJhOGMwMmQ3NWNlNTc1MTg0YTJkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXllcnMtZ2VuZXJh
dGVkLWNvbnRlbnQuaHRtbApAQCAtMCwwICsxLDE2NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9y
LXByb3RvY29sL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworZnVuY3Rpb24gdGVzdCgpCit7CisKKyAgICB2YXIg
bm9kZXM7CisgCisgICAgSW5zcGVjdG9yVGVzdC5ldmVudEhhbmRsZXJbIkRPTS5zZXRDaGlsZE5v
ZGVzIl0gPSBzZXRDaGlsZE5vZGVzOworCisgICAgZW5hYmxlTGF5ZXJUcmVlQWdlbnQoKTsKKyAg
ICAKKyAgICBmdW5jdGlvbiBlbmFibGVMYXllclRyZWVBZ2VudChyZXN1bHQpCisgICAgeworICAg
ICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJFbmFibGUgdGhlIExheWVyVHJlZSBhZ2Vu
dCIsCisgICAgICAgICAgICBjb21tYW5kOiAiTGF5ZXJUcmVlLmVuYWJsZSIsCisgICAgICAgICAg
ICBwYXJhbWV0ZXJzOiB7fSwKKyAgICAgICAgICAgIGNhbGxiYWNrOiBnZXREb2N1bWVudAorICAg
ICAgICB9KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gZ2V0RG9jdW1lbnQoKQorICAgIHsKKyAg
ICAgICAgLy8gV2UgbXVzdCBmaXJzdCBnZXQgdGhlIGRvY3VtZW50IHNvIHRoYXQgbGF0ZXIgb24g
d2UgbWF5IGdldCBzZW5zaWJsZSBub2RlSWRzLgorICAgICAgICBzdGVwKHsKKyAgICAgICAgICAg
IG5hbWU6ICJHZXQgdGhlIERvY3VtZW50IiwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJET00uZ2V0
RG9jdW1lbnQiLAorICAgICAgICAgICAgcGFyYW1ldGVyczoge30sCisgICAgICAgICAgICBjYWxs
YmFjazogZ2V0TGF5ZXJUcmVlCisgICAgICAgIH0pOworICAgIH07CisKKyAgICBmdW5jdGlvbiBn
ZXRMYXllclRyZWUocmVzdWx0KQorICAgIHsKKyAgICAgICAgc3RlcCh7CisgICAgICAgICAgICBu
YW1lOiAiR2V0IHRoZSBsYXllciB0cmVlIiwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJMYXllclRy
ZWUubGF5ZXJzRm9yTm9kZSIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7Im5vZGVJZCI6IHJl
c3VsdC5yb290Lm5vZGVJZH0sCisgICAgICAgICAgICBjYWxsYmFjazogZ290TGF5ZXJUcmVlCisg
ICAgICAgIH0pOworICAgIH07CisKKyAgICBmdW5jdGlvbiBnb3RMYXllclRyZWUocmVzdWx0KQor
ICAgIHsKKyAgICAgICAgdmFyIGJlZm9yZUxheWVycyA9IFtdOworICAgICAgICB2YXIgYWZ0ZXJM
YXllcnMgPSBbXTsKKyAgICAgICAgcmVzdWx0LmxheWVycy5mb3JFYWNoKGZ1bmN0aW9uIChsYXll
cikgeworICAgICAgICAgICAgaWYgKCFsYXllci5pc0dlbmVyYXRlZENvbnRlbnQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAobGF5ZXIucHNldWRvQ2xhc3MgPT09
ICJiZWZvcmUiKQorICAgICAgICAgICAgICAgIGJlZm9yZUxheWVycy5wdXNoKGxheWVyKTsKKyAg
ICAgICAgICAgIGlmIChsYXllci5wc2V1ZG9DbGFzcyA9PT0gImFmdGVyIikKKyAgICAgICAgICAg
ICAgICBhZnRlckxheWVycy5wdXNoKGxheWVyKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgbG9n
VGVzdE5hbWUoIkNoZWNrIGxheWVycyIpOworCisgICAgICAgIGFzc2VydCgiRXhwZWN0ZWQgbnVt
YmVyIG9mIDo6YmVmb3JlIGxheWVycyIsIGJlZm9yZUxheWVycy5sZW5ndGgsIDEpOworICAgICAg
ICBhc3NlcnQoIlRoZSBzb2xlIDo6YmVmb3JlIGxheWVyIGhhcyBhIHBzZXVkbyBlbGVtZW50Iiwg
YmVmb3JlTGF5ZXJzWzBdLnBzZXVkb0VsZW1lbnRJZCAhPT0gIiIsIHRydWUpOworCisgICAgICAg
IGFzc2VydCgiRXhwZWN0ZWQgbnVtYmVyIG9mIDo6YWZ0ZXIgbGF5ZXJzIiwgYWZ0ZXJMYXllcnMu
bGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0KCJUaGUgZmlyc3QgOjphZnRlciBsYXllciBoYXMg
YSBwc2V1ZG8gZWxlbWVudCIsIGFmdGVyTGF5ZXJzWzBdLnBzZXVkb0VsZW1lbnRJZCAhPT0gIiIs
IHRydWUpOworICAgICAgICBhc3NlcnQoIlRoZSBzZWNvbmQgOjphZnRlciBsYXllciBoYXMgYSBw
c2V1ZG8gZWxlbWVudCIsIGFmdGVyTGF5ZXJzWzFdLnBzZXVkb0VsZW1lbnRJZCAhPT0gIiIsIHRy
dWUpOworICAgICAgICBhc3NlcnQoIlRoZSBzZWNvbmQgOjphZnRlciBsYXllciBpcyBhIHJlZmxl
Y3Rpb24iLCBhZnRlckxheWVyc1sxXS5pc1JlZmxlY3Rpb24sIHRydWUpOworICAgICAgICBhc3Nl
cnQoIlRoZSB0d28gOjphZnRlciBsYXllcnMgaGF2ZSB0aGUgc2FtZSBub2RlIGlkIiwgYWZ0ZXJM
YXllcnNbMF0ubm9kZUlkLCBhZnRlckxheWVyc1sxXS5ub2RlSWQpOworICAgICAgICBhc3NlcnQo
IlRoZSB0d28gOjphZnRlciBsYXllcnMgaGF2ZSB0aGUgc2FtZSBwc2V1ZG8gZWxlbWVudCBpZCIs
IGFmdGVyTGF5ZXJzWzBdLnBzZXVkb0VsZW1lbnRJZCwgYWZ0ZXJMYXllcnNbMV0ucHNldWRvRWxl
bWVudElkKTsKKworICAgICAgICBhc3NlcnQoIlRoZSBub24tcmVmbGVjdGlvbiBnZW5lcmF0ZWQg
Z2VuZXJhdGVkIGxheWVycyBoYXZlIHRoZSBzYW1lIG5vZGUgaWQiLCBiZWZvcmVMYXllcnNbMF0u
bm9kZUlkLCBhZnRlckxheWVyc1swXS5ub2RlSWQpOworICAgICAgICBhc3NlcnQoIlRoZSBub24t
cmVmbGVjdGlvbiBnZW5lcmF0ZWQgbGF5ZXJzIGhhdmUgZGlmZmVyZW50IHBzZXVkbyBlbGVtZW50
IGlkcyIsIGJlZm9yZUxheWVyc1swXS5wc2V1ZG9FbGVtZW50SWQgIT09IGFmdGVyTGF5ZXJzWzBd
LnBzZXVkb0VsZW1lbnRJZCwgdHJ1ZSk7CisKKyAgICAgICAgdmFyIG5vZGU7CisgICAgICAgIHZh
ciBub2RlSWQgPSBiZWZvcmVMYXllcnNbMF0ubm9kZUlkOworICAgICAgICBmb3IgKHZhciBpID0g
MCwgY291bnQgPSBub2Rlcy5sZW5ndGg7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgICAgICBp
ZiAobm9kZXNbaV0ubm9kZUlkID09PSBub2RlSWQpIHsKKyAgICAgICAgICAgICAgICBub2RlID0g
bm9kZXNbaV07CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBsb2dUZXN0TmFtZSgiQ2hlY2sgZ2VuZXJhdGluZyBub2RlIik7CisgICAg
ICAgIAorICAgICAgICBhc3NlcnQoIkdlbmVyYXRpbmcgbm9kZSB3YXMgZm91bmQiLCAhIW5vZGUs
IHRydWUpOworICAgICAgICBhc3NlcnQoIkdlbmVyYXRpbmcgbm9kZSBoYXMgZXhwZWN0ZWQgbG9j
YWxOYW1lIiwgbm9kZS5sb2NhbE5hbWUsICJkaXYiKTsKKyAgICAgICAgYXNzZXJ0KCJHZW5lcmF0
aW5nIG5vZGUgaGFzIGlkIiwgbm9kZS5hdHRyaWJ1dGVzWzBdLCAiaWQiKTsKKyAgICAgICAgYXNz
ZXJ0KCJHZW5lcmF0aW5nIG5vZGUgaGFzIGV4cGVjdGVkIGlkIiwgbm9kZS5hdHRyaWJ1dGVzWzFd
LCAiZ2VuZXJhdG9yIik7CisgICAgICAgIAorICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRl
VGVzdCgpOworICAgIH07CisKKyAgICBmdW5jdGlvbiBzZXRDaGlsZE5vZGVzIChtZXNzYWdlT2Jq
ZWN0KSB7CisgICAgICAgIG5vZGVzID0gbWVzc2FnZU9iamVjdC5wYXJhbXMubm9kZXM7CisgICAg
fTsKKworICAgIGZ1bmN0aW9uIHN0ZXAodGVzdCkKKyAgICB7CisgICAgICAgIGlmICh0ZXN0LmNh
bGxiYWNrKQorICAgICAgICAgICAgbG9nVGVzdE5hbWUodGVzdC5uYW1lKTsKKyAgICAgICAgcnVu
Q29tbWFuZCh0ZXN0KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gbG9nVGVzdE5hbWUobmFtZSkK
KyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJcbj09PSAiICsgbmFtZSArICIgPT09
XG4iKTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gcnVuQ29tbWFuZChjb21tYW5kKQorICAgIHsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZChjb21tYW5kLmNvbW1hbmQsIGNvbW1h
bmQucGFyYW1ldGVycywgZnVuY3Rpb24obWVzc2FnZU9iamVjdCkgeworICAgICAgICAgICAgaWYg
KG1lc3NhZ2VPYmplY3QuaGFzT3duUHJvcGVydHkoImVycm9yIikpIHsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygiRkFJTDogIiArIG1lc3NhZ2VPYmplY3QuZXJyb3IubWVzc2Fn
ZSArICIgKCIgKyBtZXNzYWdlT2JqZWN0LmVycm9yLmNvZGUgKyAiKSIpOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY29tbWFuZC5uYW1lKQorICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQQVNTIik7CisKKyAgICAgICAgICAgIGlmIChj
b21tYW5kLmNhbGxiYWNrKQorICAgICAgICAgICAgICAgIGNvbW1hbmQuY2FsbGJhY2sobWVzc2Fn
ZU9iamVjdC5yZXN1bHQpOworICAgICAgICB9KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gYXNz
ZXJ0KG5hbWUsIGFjdHVhbCwgZXhwZWN0ZWQpCisgICAgeworICAgICAgICBpZiAoZXhwZWN0ZWQg
PT09IGFjdHVhbCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQQVNTOiAiICsgbmFt
ZSArICIuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJG
QUlMOiAiICsgbmFtZSArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCArICIgYnV0IGdvdCAiICsg
YWN0dWFsKTsKKyAgICB9OworCit9OworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29u
dGVudExvYWRlZCIsIGZ1bmN0aW9uKCkKK3sKKyAgICBydW5UZXN0KCk7Cit9LCBmYWxzZSk7CisK
Kzwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgIAorICAgICNnZW5lcmF0
b3I6OmJlZm9yZSwKKyAgICAjZ2VuZXJhdG9yOjphZnRlciB7CisgICAgICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4Owor
ICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zv
cm06IHRyYW5zbGF0ZVooMCk7CisgICAgICAgIGNvbnRlbnQ6ICIiOworICAgIH0KKworICAgICNn
ZW5lcmF0b3I6OmFmdGVyIHsKKyAgICAgICAgLXdlYmtpdC1ib3gtcmVmbGVjdDpiZWxvdyAxcHgg
LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbSh0cmFu
c3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIHRvKHdoaXRlKSk7CisgICAg
fQorCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKyAgICA8ZGl2IGlkPSJnZW5lcmF0b3Ii
PjwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>