<?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>107095</bug_id>
          
          <creation_ts>2013-01-16 22:40:00 -0800</creation_ts>
          <short_desc>Group parameters (firstRuleIndex and lastRuleIndex) into a parameter object, RuleRange.</short_desc>
          <delta_ts>2013-01-23 20:46:50 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>89879</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hayato Ito">hayato</reporter>
          <assigned_to name="Hayato Ito">hayato</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>809090</commentid>
    <comment_count>0</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-16 22:40:00 -0800</bug_when>
    <thetext>This is a follow up patch for bug 106879.

Both firstRuleIndex and lastRuleIndex can also be grouped into a parameter object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809097</commentid>
    <comment_count>1</comment_count>
      <attachid>183124</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-16 22:48:13 -0800</bug_when>
    <thetext>Created attachment 183124
factoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809390</commentid>
    <comment_count>2</comment_count>
      <attachid>183124</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-01-17 09:26:33 -0800</bug_when>
    <thetext>Comment on attachment 183124
factoring.

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

Seems OK, but I have a refinement I think would make this cleaner, so I am going to say review+.

&gt; Source/WebCore/css/StyleResolver.h:345
&gt;      struct MatchRequest {

I think a better design would be to make the ruleSet and scope data members const the way the includeEmptyRules member is, then make firstRuleIndex and lastRuleIndex be plain old int members rather than references. Then we could pass non-const MatchRequest&amp; objects in and handle this in a more natural way.

That would also allow us to keep the default initial values for includeEmptyRules and scope, and so be cleaner at the call sites.

It’s really strange for const MatchRequest&amp; to “secretly” have some references in it and so be partly an “out” argument. There’s no reason to be twisted like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810203</commentid>
    <comment_count>3</comment_count>
      <attachid>183368</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-17 21:18:48 -0800</bug_when>
    <thetext>Created attachment 183368
Introduces a RuleRange</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810206</commentid>
    <comment_count>4</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-17 21:21:58 -0800</bug_when>
    <thetext>Thank you for the review.

You are a good reviewer. :) Actually, I and my colleagues were a litte supprised that we could change a value through a reference even if the object is declared &apos;const&apos;. A reference is a just a pointer internally, so it should not be a surprising fact. But I am feeling that it&apos;s confusing for readers and should be avoided.

I&apos;ve tried your suggestions, but holding plain old int members rather than references causes another buden. The caller has to retrive the result from MatchRequest object and copy them to the collect fields of range. I am afraid that it&apos;s error-prone.

I think that mixing const members (ruleSet, scope, ...) and output parameters into one object is the troublesome principally in this case. So I&apos;ve decided to separete them. RuleRange is now introduced.
This is not a huge win than I expected at first. But that makes code clearer.

You gave me r+, but I think this patch should be reviewed again. Could you review it?

(In reply to comment #2)
&gt; (From update of attachment 183124 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=183124&amp;action=review
&gt; 
&gt; Seems OK, but I have a refinement I think would make this cleaner, so I am going to say review+.
&gt; 
&gt; &gt; Source/WebCore/css/StyleResolver.h:345
&gt; &gt;      struct MatchRequest {
&gt; 
&gt; I think a better design would be to make the ruleSet and scope data members const the way the includeEmptyRules member is, then make firstRuleIndex and lastRuleIndex be plain old int members rather than references. Then we could pass non-const MatchRequest&amp; objects in and handle this in a more natural way.
&gt; 
&gt; That would also allow us to keep the default initial values for includeEmptyRules and scope, and so be cleaner at the call sites.
&gt; 
&gt; It’s really strange for const MatchRequest&amp; to “secretly” have some references in it and so be partly an “out” argument. There’s no reason to be twisted like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813982</commentid>
    <comment_count>5</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-23 01:11:16 -0800</bug_when>
    <thetext>Let me land this patch in a few days since the pervious patch got r+ and it appears to be relatively safe to land. If there is a concern about this, please let me know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814235</commentid>
    <comment_count>6</comment_count>
      <attachid>183368</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-23 08:40:16 -0800</bug_when>
    <thetext>Comment on attachment 183368
Introduces a RuleRange

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

&gt; Source/WebCore/ChangeLog:13
&gt; +        (WebCore::StyleResolver::collectMatchingRules):

It&apos;s customary to explain what&apos;s happening in the patch using these lines. I am sure you&apos;re just too excited to get this going :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814938</commentid>
    <comment_count>7</comment_count>
      <attachid>184374</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-23 18:35:55 -0800</bug_when>
    <thetext>Created attachment 184374
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814942</commentid>
    <comment_count>8</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-23 18:37:14 -0800</bug_when>
    <thetext>Thank you for the review. Let me land this patch after I add a small explanation to the ChangeLog.

(In reply to comment #6)
&gt; (From update of attachment 183368 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=183368&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:13
&gt; &gt; +        (WebCore::StyleResolver::collectMatchingRules):
&gt; 
&gt; It&apos;s customary to explain what&apos;s happening in the patch using these lines. I am sure you&apos;re just too excited to get this going :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815017</commentid>
    <comment_count>9</comment_count>
      <attachid>184374</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-23 20:46:46 -0800</bug_when>
    <thetext>Comment on attachment 184374
Patch for landing

Clearing flags on attachment: 184374

Committed r140643: &lt;http://trac.webkit.org/changeset/140643&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815018</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-23 20:46:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183124</attachid>
            <date>2013-01-16 22:48:13 -0800</date>
            <delta_ts>2013-01-17 21:18:44 -0800</delta_ts>
            <desc>factoring.</desc>
            <filename>bug-107095-20130117154513.patch</filename>
            <type>text/plain</type>
            <size>12727</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5OTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQ5MmY5M2M3ZmY0Y2Vh
MjhjMTBlMDQxNzgxZDY2OWZkMmE5Y2U1ZS4uYTUzNTVmOGYxNmY2MjgzOWIyMjdkOTlmMzc3ZGQ1
MWU2YjMzMDYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAxLTE2ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNb3ZlIHBhcmFtZXRlcnMg
KGZpcnN0UnVsZUluZGV4IGFuZCBsYXN0UnVsZUluZGV4KSBpbnRvIGEgcGFyYW1ldGVyIG9iamVj
dCwgTWF0Y2hSZXF1ZXN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA3MDk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBpcyBhIGNvbnRpbnVlZCBlZmZvcnQgYWZ0ZXIgcjEzOTgxNy4KKworICAg
ICAgICBGYWN0b3JpbmcsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGNzcy9T
dHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxl
Y3RNYXRjaGluZ1J1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxl
Y3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2
ZXI6Om1hdGNoU2NvcGVkQXV0aG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNv
bHZlcjo6bWF0Y2hIb3N0UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
bWF0Y2hBdXRob3JSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRj
aFVzZXJSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRjaFVBUnVs
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVs
ZXNGb3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlU2hhcmlu
Z0NhbmRpZGF0ZU1hdGNoZXNSdWxlU2V0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6TWF0Y2hSZXF1ZXN0OjpNYXRjaFJl
cXVlc3QpOgorICAgICAgICAoTWF0Y2hSZXF1ZXN0KToKKyAgICAgICAgKFN0eWxlUmVzb2x2ZXIp
OgorCiAyMDEzLTAxLTE2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAg
ICAgICAgIFdlYkNvcmU6OlNjcmlwdFJ1bm5lcjo6dGltZXJGaXJlZCgpIGlzIHJlcG9ydGVkIHRv
IGNyYXNoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGEzZDE3ZWM3NGNk
MDczODdiNGUzODIwMzdiNDY2MTgwOTUwYjg2NTIuLjg5M2ExYjU0ZDMwNjY4Nzk5Yzg3YzkxMjlm
NWE3ZjBmYzJjNDc5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTY0
Myw3ICs2NDMsNyBAQCBpbmxpbmUgYm9vbCBNYXRjaGluZ1VBUnVsZXNTY29wZTo6aXNNYXRjaGlu
Z1VBUnVsZXMoKQogCiBib29sIE1hdGNoaW5nVUFSdWxlc1Njb3BlOjptX21hdGNoaW5nVUFSdWxl
cyA9IGZhbHNlOwogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzKGNv
bnN0IE1hdGNoUmVxdWVzdCYgbWF0Y2hSZXF1ZXN0LCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQm
IGxhc3RSdWxlSW5kZXgpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVz
KGNvbnN0IE1hdGNoUmVxdWVzdCYgbWF0Y2hSZXF1ZXN0KQogewogICAgIEFTU0VSVChtYXRjaFJl
cXVlc3QucnVsZVNldCk7CiAgICAgQVNTRVJUKG1fZWxlbWVudCk7CkBAIC02NTEsMTIgKzY1MSwx
MiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzKGNvbnN0IE1hdGNo
UmVxdWVzdCYgbWF0Y2hSZXF1ZXN0LCBpbnQmCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBwc2V1
ZG9JZCA9IG1fZWxlbWVudC0+c2hhZG93UHNldWRvSWQoKTsKICAgICBpZiAoIXBzZXVkb0lkLmlz
RW1wdHkoKSkgewogICAgICAgICBBU1NFUlQobV9zdHlsZWRFbGVtZW50KTsKLSAgICAgICAgY29s
bGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5zaGFkb3dQc2V1
ZG9FbGVtZW50UnVsZXMocHNldWRvSWQuaW1wbCgpKSwgbWF0Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJ
bmRleCwgbGFzdFJ1bGVJbmRleCk7CisgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlz
dChtYXRjaFJlcXVlc3QucnVsZVNldC0+c2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKHBzZXVkb0lk
LmltcGwoKSksIG1hdGNoUmVxdWVzdCk7CiAgICAgfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQogICAgIGlmIChtX2VsZW1lbnQtPndlYlZUVE5vZGVUeXBlKCkpCi0gICAgICAgIGNvbGxlY3RN
YXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+Y3VlUHNldWRvUnVsZXMo
KSwgbWF0Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CisgICAgICAg
IGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+Y3VlUHNl
dWRvUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0KTsKICNlbmRpZgogICAgIC8vIENoZWNrIHdoZXRoZXIg
b3RoZXIgdHlwZXMgb2YgcnVsZXMgYXJlIGFwcGxpY2FibGUgaW4gdGhlIGN1cnJlbnQgdHJlZSBz
Y29wZS4gQ3JpdGVyaWEgZm9yIHRoaXM6CiAgICAgLy8gYSkgaXQncyBhIFVBIHJ1bGUKQEAgLTY3
MSwyMSArNjcxLDIxIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMo
Y29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3QsIGludCYKICAgICAvLyBXZSBuZWVkIHRv
IGNvbGxlY3QgdGhlIHJ1bGVzIGZvciBpZCwgY2xhc3MsIHRhZywgYW5kIGV2ZXJ5dGhpbmcgZWxz
ZSBpbnRvIGEgYnVmZmVyIGFuZAogICAgIC8vIHRoZW4gc29ydCB0aGUgYnVmZmVyLgogICAgIGlm
IChtX2VsZW1lbnQtPmhhc0lEKCkpCi0gICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlz
dChtYXRjaFJlcXVlc3QucnVsZVNldC0+aWRSdWxlcyhtX2VsZW1lbnQtPmlkRm9yU3R5bGVSZXNv
bHV0aW9uKCkuaW1wbCgpKSwgbWF0Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJ
bmRleCk7CisgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3Qu
cnVsZVNldC0+aWRSdWxlcyhtX2VsZW1lbnQtPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCkuaW1wbCgp
KSwgbWF0Y2hSZXF1ZXN0KTsKICAgICBpZiAobV9zdHlsZWRFbGVtZW50ICYmIG1fc3R5bGVkRWxl
bWVudC0+aGFzQ2xhc3MoKSkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc3R5
bGVkRWxlbWVudC0+Y2xhc3NOYW1lcygpLnNpemUoKTsgKytpKQotICAgICAgICAgICAgY29sbGVj
dE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5jbGFzc1J1bGVzKG1f
c3R5bGVkRWxlbWVudC0+Y2xhc3NOYW1lcygpW2ldLmltcGwoKSksIG1hdGNoUmVxdWVzdCwgZmly
c3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgpOworICAgICAgICAgICAgY29sbGVjdE1hdGNoaW5n
UnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5jbGFzc1J1bGVzKG1fc3R5bGVkRWxl
bWVudC0+Y2xhc3NOYW1lcygpW2ldLmltcGwoKSksIG1hdGNoUmVxdWVzdCk7CiAgICAgfQogCiAg
ICAgaWYgKG1fZWxlbWVudC0+aXNMaW5rKCkpCi0gICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVz
Rm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+bGlua1BzZXVkb0NsYXNzUnVsZXMoKSwgbWF0
Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CisgICAgICAgIGNvbGxl
Y3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+bGlua1BzZXVkb0Ns
YXNzUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0KTsKICAgICBpZiAobV9zZWxlY3RvckNoZWNrZXIubWF0
Y2hlc0ZvY3VzUHNldWRvQ2xhc3MobV9lbGVtZW50KSkKLSAgICAgICAgY29sbGVjdE1hdGNoaW5n
UnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5mb2N1c1BzZXVkb0NsYXNzUnVsZXMo
KSwgbWF0Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7Ci0gICAgY29s
bGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT50YWdSdWxlcyht
X2VsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSksIG1hdGNoUmVxdWVzdCwgZmlyc3RSdWxlSW5k
ZXgsIGxhc3RSdWxlSW5kZXgpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRj
aFJlcXVlc3QucnVsZVNldC0+dW5pdmVyc2FsUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBmaXJzdFJ1
bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CisgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9y
TGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+Zm9jdXNQc2V1ZG9DbGFzc1J1bGVzKCksIG1hdGNo
UmVxdWVzdCk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5y
dWxlU2V0LT50YWdSdWxlcyhtX2VsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSksIG1hdGNoUmVx
dWVzdCk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxl
U2V0LT51bml2ZXJzYWxSdWxlcygpLCBtYXRjaFJlcXVlc3QpOwogfQogCi12b2lkIFN0eWxlUmVz
b2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKGNvbnN0IE1hdGNoUmVxdWVzdCYg
bWF0Y2hSZXF1ZXN0LCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgpCit2
b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKGNvbnN0IE1h
dGNoUmVxdWVzdCYgbWF0Y2hSZXF1ZXN0KQogewogICAgIGlmICghbV9yZWdpb25Gb3JTdHlsaW5n
KQogICAgICAgICByZXR1cm47CkBAIC02OTYsNyArNjk2LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVy
Ojpjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihjb25zdCBNYXRjaFJlcXVlc3QmIG1hdGNo
UmVxdWUKICAgICAgICAgaWYgKGNoZWNrUmVnaW9uU2VsZWN0b3IocmVnaW9uU2VsZWN0b3IsIHN0
YXRpY19jYXN0PEVsZW1lbnQqPihtX3JlZ2lvbkZvclN0eWxpbmctPm5vZGUoKSkpKSB7CiAgICAg
ICAgICAgICBSdWxlU2V0KiByZWdpb25SdWxlcyA9IG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5tX3Jl
Z2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzLmF0KGkpLnJ1bGVTZXQuZ2V0KCk7CiAgICAgICAgICAg
ICBBU1NFUlQocmVnaW9uUnVsZXMpOwotICAgICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMo
TWF0Y2hSZXF1ZXN0KHJlZ2lvblJ1bGVzLCBtYXRjaFJlcXVlc3QuaW5jbHVkZUVtcHR5UnVsZXMs
IG1hdGNoUmVxdWVzdC5zY29wZSksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsKKyAg
ICAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKE1hdGNoUmVxdWVzdChyZWdpb25SdWxlcywg
bWF0Y2hSZXF1ZXN0LmluY2x1ZGVFbXB0eVJ1bGVzLCBtYXRjaFJlcXVlc3Quc2NvcGUsIG1hdGNo
UmVxdWVzdC5maXJzdFJ1bGVJbmRleCwgbWF0Y2hSZXF1ZXN0Lmxhc3RSdWxlSW5kZXgpKTsKICAg
ICAgICAgfQogICAgIH0KIH0KQEAgLTc1NCw5ICs3NTQsOSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6
Om1hdGNoU2NvcGVkQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRl
RW1wdAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgTWF0Y2hSZXF1ZXN0IG1hdGNoUmVxdWVzdChmcmFtZS5tX3J1bGVTZXQsIGluY2x1
ZGVFbXB0eVJ1bGVzLCBmcmFtZS5tX3Njb3BlKTsKLSAgICAgICAgICAgIGNvbGxlY3RNYXRjaGlu
Z1J1bGVzKG1hdGNoUmVxdWVzdCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3Vs
dC5yYW5nZXMubGFzdEF1dGhvclJ1bGUpOwotICAgICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVs
ZXNGb3JSZWdpb24obWF0Y2hSZXF1ZXN0LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwg
cmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSk7CisgICAgICAgICAgICBNYXRjaFJlcXVlc3Qg
bWF0Y2hSZXF1ZXN0KGZyYW1lLm1fcnVsZVNldCwgaW5jbHVkZUVtcHR5UnVsZXMsIGZyYW1lLm1f
c2NvcGUsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RB
dXRob3JSdWxlKTsKKyAgICAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKG1hdGNoUmVxdWVz
dCk7CisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtYXRjaFJlcXVl
c3QpOwogICAgICAgICAgICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKHJlc3VsdCk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC03OTEsNyArNzkxLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpt
YXRjaEhvc3RSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVz
KQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRjaGVkUnVsZXMu
c2l6ZSgpOyBpID4gMDsgLS1pKQotICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhNYXRjaFJl
cXVlc3QobWF0Y2hlZFJ1bGVzLmF0KGktMSksIGluY2x1ZGVFbXB0eVJ1bGVzLCBtX2VsZW1lbnQp
LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9y
UnVsZSk7CisgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKE1hdGNoUmVxdWVzdChtYXRjaGVk
UnVsZXMuYXQoaS0xKSwgaW5jbHVkZUVtcHR5UnVsZXMsIG1fZWxlbWVudCwgcmVzdWx0LnJhbmdl
cy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUpKTsKICAgICBz
b3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMocmVzdWx0KTsKICNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKHJlc3VsdCk7CkBAIC04MDgsOSArODA4LDkgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRj
aEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTWF0Y2ggZ2xvYmFsIGF1dGhvciBydWxlcy4KLSAg
ICBNYXRjaFJlcXVlc3QgbWF0Y2hSZXF1ZXN0KG1fYXV0aG9yU3R5bGUuZ2V0KCksIGluY2x1ZGVF
bXB0eVJ1bGVzKTsKLSAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhtYXRjaFJlcXVlc3QsIHJlc3Vs
dC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlKTsK
LSAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtYXRjaFJlcXVlc3QsIHJlc3VsdC5y
YW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlKTsKKyAg
ICBNYXRjaFJlcXVlc3QgbWF0Y2hSZXF1ZXN0KG1fYXV0aG9yU3R5bGUuZ2V0KCksIGluY2x1ZGVF
bXB0eVJ1bGVzLCAwLCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdl
cy5sYXN0QXV0aG9yUnVsZSk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMobWF0Y2hSZXF1ZXN0
KTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtYXRjaFJlcXVlc3QpOwogICAg
IHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhyZXN1bHQpOwogCiAgICAgbWF0Y2hTY29wZWRB
dXRob3JSdWxlcyhyZXN1bHQsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKQEAgLTgyNCw5ICs4MjQsOSBA
QCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoVXNlclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQs
IGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCiAgICAgbV9tYXRjaGVkUnVsZXMuY2xlYXIoKTsKIAog
ICAgIHJlc3VsdC5yYW5nZXMubGFzdFVzZXJSdWxlID0gcmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVz
LnNpemUoKSAtIDE7Ci0gICAgTWF0Y2hSZXF1ZXN0IG1hdGNoUmVxdWVzdChtX3VzZXJTdHlsZS5n
ZXQoKSwgaW5jbHVkZUVtcHR5UnVsZXMpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKG1hdGNo
UmVxdWVzdCwgcmVzdWx0LnJhbmdlcy5maXJzdFVzZXJSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RV
c2VyUnVsZSk7Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24obWF0Y2hSZXF1ZXN0
LCByZXN1bHQucmFuZ2VzLmZpcnN0VXNlclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdFVzZXJSdWxl
KTsKKyAgICBNYXRjaFJlcXVlc3QgbWF0Y2hSZXF1ZXN0KG1fdXNlclN0eWxlLmdldCgpLCBpbmNs
dWRlRW1wdHlSdWxlcywgMCwgcmVzdWx0LnJhbmdlcy5maXJzdFVzZXJSdWxlLCByZXN1bHQucmFu
Z2VzLmxhc3RVc2VyUnVsZSk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMobWF0Y2hSZXF1ZXN0
KTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtYXRjaFJlcXVlc3QpOwogCiAg
ICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKHJlc3VsdCk7CiB9CkBAIC04MzYsMTIgKzgz
NiwxMiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoVUFSdWxlcyhNYXRjaFJlc3VsdCYgcmVz
dWx0LCBSdWxlU2V0KiBydWxlcykKICAgICBtX21hdGNoZWRSdWxlcy5jbGVhcigpOwogICAgIAog
ICAgIHJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSA9IHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5z
aXplKCkgLSAxOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKE1hdGNoUmVxdWVzdChydWxlcyks
IHJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSk7Cisg
ICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoTWF0Y2hSZXF1ZXN0KHJ1bGVzLCBmYWxzZSwgMCwgcmVz
dWx0LnJhbmdlcy5maXJzdFVBUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxlKSk7CiAKICAg
ICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMocmVzdWx0KTsKIH0KIAotdm9pZCBTdHlsZVJl
c29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRh
PiogcnVsZXMsIGNvbnN0IE1hdGNoUmVxdWVzdCYgbWF0Y2hSZXF1ZXN0LCBpbnQmIGZpcnN0UnVs
ZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RN
YXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBydWxlcywgY29uc3Qg
TWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3QpCiB7CiAgICAgaWYgKCFydWxlcykKICAgICAgICAg
cmV0dXJuOwpAQCAtODgxLDkgKzg4MSw5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1h
dGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIHJ1bGVzLCBjCiAgICAg
ICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEhhc1BzZXVkb1N0eWxlKG1fZHluYW1pY1BzZXVk
byk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBvdXIg
Zmlyc3QvbGFzdCBydWxlIGluZGljZXMgaW4gdGhlIG1hdGNoZWQgcnVsZXMgYXJyYXkuCi0gICAg
ICAgICAgICAgICAgKytsYXN0UnVsZUluZGV4OwotICAgICAgICAgICAgICAgIGlmIChmaXJzdFJ1
bGVJbmRleCA9PSAtMSkKLSAgICAgICAgICAgICAgICAgICAgZmlyc3RSdWxlSW5kZXggPSBsYXN0
UnVsZUluZGV4OworICAgICAgICAgICAgICAgICsrbWF0Y2hSZXF1ZXN0Lmxhc3RSdWxlSW5kZXg7
CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoUmVxdWVzdC5maXJzdFJ1bGVJbmRleCA9PSAtMSkK
KyAgICAgICAgICAgICAgICAgICAgbWF0Y2hSZXF1ZXN0LmZpcnN0UnVsZUluZGV4ID0gbWF0Y2hS
ZXF1ZXN0Lmxhc3RSdWxlSW5kZXg7CiAKICAgICAgICAgICAgICAgICAvLyBBZGQgdGhpcyBydWxl
IHRvIG91ciBsaXN0IG9mIG1hdGNoZWQgcnVsZXMuCiAgICAgICAgICAgICAgICAgYWRkTWF0Y2hl
ZFJ1bGUoJnJ1bGVEYXRhKTsKQEAgLTEwNjIsNyArMTA2Miw3IEBAIGJvb2wgU3R5bGVSZXNvbHZl
cjo6c3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hlc1J1bGVTZXQoUnVsZVNldCogcnVsZVNldCkK
IAogICAgIGludCBmaXJzdFJ1bGVJbmRleCA9IC0xLCBsYXN0UnVsZUluZGV4ID0gLTE7CiAgICAg
bV9zZWxlY3RvckNoZWNrZXIuc2V0TW9kZShTZWxlY3RvckNoZWNrZXI6OlNoYXJpbmdSdWxlcyk7
Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoTWF0Y2hSZXF1ZXN0KHJ1bGVTZXQpLCBmaXJzdFJ1
bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoTWF0Y2hS
ZXF1ZXN0KHJ1bGVTZXQsIGZhbHNlLCAwLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCkp
OwogICAgIG1fc2VsZWN0b3JDaGVja2VyLnNldE1vZGUoU2VsZWN0b3JDaGVja2VyOjpSZXNvbHZp
bmdTdHlsZSk7CiAgICAgaWYgKG1fbWF0Y2hlZFJ1bGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggZGJlYjZlYWE3NTQ0
ZjExMzNiYWExY2VhNmJjNTVkM2EzY2ViMTg3ZS4uMTA5NjBjNGU4MmQ4NjA2ZWFlM2JmNTVjNTli
NGU1MzUzZTIwNDkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC0zNDMsMTMg
KzM0MywxNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBzdHJ1Y3QgTWF0Y2hSZXF1ZXN0IHsK
LSAgICAgICAgTWF0Y2hSZXF1ZXN0KFJ1bGVTZXQqIHJ1bGVTZXQsIGJvb2wgaW5jbHVkZUVtcHR5
UnVsZXMgPSBmYWxzZSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUgPSAwKQorICAgICAgICBN
YXRjaFJlcXVlc3QoUnVsZVNldCogcnVsZVNldCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcywgY29u
c3QgQ29udGFpbmVyTm9kZSogc2NvcGUsIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1
bGVJbmRleCkKICAgICAgICAgICAgIDogcnVsZVNldChydWxlU2V0KQogICAgICAgICAgICAgLCBp
bmNsdWRlRW1wdHlSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcykKLSAgICAgICAgICAgICwgc2NvcGUo
c2NvcGUpIHsgfQorICAgICAgICAgICAgLCBzY29wZShzY29wZSkKKyAgICAgICAgICAgICwgZmly
c3RSdWxlSW5kZXgoZmlyc3RSdWxlSW5kZXgpCisgICAgICAgICAgICAsIGxhc3RSdWxlSW5kZXgo
bGFzdFJ1bGVJbmRleCkgeyB9CiAgICAgICAgIGNvbnN0IFJ1bGVTZXQqIHJ1bGVTZXQ7CiAgICAg
ICAgIGNvbnN0IGJvb2wgaW5jbHVkZUVtcHR5UnVsZXM7CiAgICAgICAgIGNvbnN0IENvbnRhaW5l
ck5vZGUqIHNjb3BlOworICAgICAgICBpbnQmIGZpcnN0UnVsZUluZGV4OworICAgICAgICBpbnQm
IGxhc3RSdWxlSW5kZXg7CiAgICAgfTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1hdGNoZWRQcm9w
ZXJ0aWVzKE1hdGNoUmVzdWx0JiwgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcywg
U3R5bGVSdWxlKiA9IDAsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUgPSBTZWxlY3RvckNoZWNrZXI6
Ok1hdGNoQWxsLCBib29sIGluUmVnaW9uUnVsZSA9IGZhbHNlKTsKQEAgLTM2Myw5ICszNjcsOSBA
QCBwcml2YXRlOgogICAgIHZvaWQgbWF0Y2hTY29wZWRBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYs
IGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIHZvaWQgbWF0Y2hIb3N0UnVsZXMoTWF0Y2hS
ZXN1bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKIAotICAgIHZvaWQgY29sbGVjdE1hdGNo
aW5nUnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0JiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBs
YXN0UnVsZUluZGV4KTsKLSAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKGNv
bnN0IE1hdGNoUmVxdWVzdCYsIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRl
eCk7Ci0gICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1
bGVEYXRhPiosIGNvbnN0IE1hdGNoUmVxdWVzdCYsIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYg
bGFzdFJ1bGVJbmRleCk7CisgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhjb25zdCBNYXRj
aFJlcXVlc3QmKTsKKyAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKGNvbnN0
IE1hdGNoUmVxdWVzdCYpOworICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNv
bnN0IFZlY3RvcjxSdWxlRGF0YT4qLCBjb25zdCBNYXRjaFJlcXVlc3QmKTsKIAogICAgIGJvb2wg
ZmFzdFJlamVjdFNlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJikgY29uc3Q7CiAgICAgdm9pZCBzb3J0
TWF0Y2hlZFJ1bGVzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183368</attachid>
            <date>2013-01-17 21:18:48 -0800</date>
            <delta_ts>2013-01-23 18:35:51 -0800</delta_ts>
            <desc>Introduces a RuleRange</desc>
            <filename>bug-107095-20130118141547.patch</filename>
            <type>text/plain</type>
            <size>13073</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5OTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQ5MmY5M2M3ZmY0Y2Vh
MjhjMTBlMDQxNzgxZDY2OWZkMmE5Y2U1ZS4uYmJhN2Q0YWZmOWE3MGQ5OTNiNzkwNWU5YjQ0MWQx
YWIxZGE0MmZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEzLTAxLTE2ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBHcm91cCBwYXJhbWV0ZXJz
IChmaXJzdFJ1bGVJbmRleCBhbmQgbGFzdFJ1bGVJbmRleCkgaW50byBhIHBhcmFtZXRlciBvYmpl
Y3QsIFJ1bGVSYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNzA5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgaXMgYSBjb250aW51ZWQgZWZmb3J0IGFmdGVyIHIxMzk4MTcuCisKKyAgICAg
ICAgRmFjdG9yaW5nLCBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBjc3MvU3R5
bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0
TWF0Y2hpbmdSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0
TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjptYXRjaFNjb3BlZEF1dGhvclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2
ZXI6Om1hdGNoSG9zdFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Om1h
dGNoQXV0aG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0Y2hV
c2VyUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0Y2hVQVJ1bGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVz
Rm9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHlsZVNoYXJpbmdD
YW5kaWRhdGVNYXRjaGVzUnVsZVNldCk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZTo6UnVsZVJhbmdlKToK
KyAgICAgICAgKFJ1bGVSYW5nZSk6CisgICAgICAgIChTdHlsZVJlc29sdmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Ok1hdGNoUmFuZ2VzOjpVQVJ1bGVSYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpNYXRjaFJhbmdlczo6YXV0aG9yUnVsZVJhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Ok1hdGNoUmFuZ2VzOjp1c2VyUnVs
ZVJhbmdlKToKKwogMjAxMy0wMS0xNiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBXZWJDb3JlOjpTY3JpcHRSdW5uZXI6OnRpbWVyRmlyZWQoKSBpcyByZXBv
cnRlZCB0byBjcmFzaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBhM2Qx
N2VjNzRjZDA3Mzg3YjRlMzgyMDM3YjQ2NjE4MDk1MGI4NjUyLi5kYjQ0YTFmNzAyYjFhMDlmNTky
YWY0NDM1ZTU5YzI4MTdiMWIxOWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CkBAIC02NDMsNyArNjQzLDcgQEAgaW5saW5lIGJvb2wgTWF0Y2hpbmdVQVJ1bGVzU2NvcGU6Omlz
TWF0Y2hpbmdVQVJ1bGVzKCkKIAogYm9vbCBNYXRjaGluZ1VBUnVsZXNTY29wZTo6bV9tYXRjaGlu
Z1VBUnVsZXMgPSBmYWxzZTsKIAotdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdS
dWxlcyhjb25zdCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCwgaW50JiBmaXJzdFJ1bGVJbmRl
eCwgaW50JiBsYXN0UnVsZUluZGV4KQordm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hp
bmdSdWxlcyhjb25zdCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCwgUnVsZVJhbmdlJiBydWxl
UmFuZ2UpCiB7CiAgICAgQVNTRVJUKG1hdGNoUmVxdWVzdC5ydWxlU2V0KTsKICAgICBBU1NFUlQo
bV9lbGVtZW50KTsKQEAgLTY1MSwxMiArNjUxLDEyIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29s
bGVjdE1hdGNoaW5nUnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3QsIGludCYK
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHBzZXVkb0lkID0gbV9lbGVtZW50LT5zaGFkb3dQc2V1
ZG9JZCgpOwogICAgIGlmICghcHNldWRvSWQuaXNFbXB0eSgpKSB7CiAgICAgICAgIEFTU0VSVCht
X3N0eWxlZEVsZW1lbnQpOwotICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0
Y2hSZXF1ZXN0LnJ1bGVTZXQtPnNoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyhwc2V1ZG9JZC5pbXBs
KCkpLCBtYXRjaFJlcXVlc3QsIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsKKyAgICAg
ICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5zaGFk
b3dQc2V1ZG9FbGVtZW50UnVsZXMocHNldWRvSWQuaW1wbCgpKSwgbWF0Y2hSZXF1ZXN0LCBydWxl
UmFuZ2UpOwogICAgIH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAobV9lbGVt
ZW50LT53ZWJWVFROb2RlVHlwZSgpKQotICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxp
c3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPmN1ZVBzZXVkb1J1bGVzKCksIG1hdGNoUmVxdWVzdCwg
Zmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgpOworICAgICAgICBjb2xsZWN0TWF0Y2hpbmdS
dWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPmN1ZVBzZXVkb1J1bGVzKCksIG1hdGNo
UmVxdWVzdCwgcnVsZVJhbmdlKTsKICNlbmRpZgogICAgIC8vIENoZWNrIHdoZXRoZXIgb3RoZXIg
dHlwZXMgb2YgcnVsZXMgYXJlIGFwcGxpY2FibGUgaW4gdGhlIGN1cnJlbnQgdHJlZSBzY29wZS4g
Q3JpdGVyaWEgZm9yIHRoaXM6CiAgICAgLy8gYSkgaXQncyBhIFVBIHJ1bGUKQEAgLTY3MSwyMSAr
NjcxLDIxIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMoY29uc3Qg
TWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3QsIGludCYKICAgICAvLyBXZSBuZWVkIHRvIGNvbGxl
Y3QgdGhlIHJ1bGVzIGZvciBpZCwgY2xhc3MsIHRhZywgYW5kIGV2ZXJ5dGhpbmcgZWxzZSBpbnRv
IGEgYnVmZmVyIGFuZAogICAgIC8vIHRoZW4gc29ydCB0aGUgYnVmZmVyLgogICAgIGlmIChtX2Vs
ZW1lbnQtPmhhc0lEKCkpCi0gICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRj
aFJlcXVlc3QucnVsZVNldC0+aWRSdWxlcyhtX2VsZW1lbnQtPmlkRm9yU3R5bGVSZXNvbHV0aW9u
KCkuaW1wbCgpKSwgbWF0Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7
CisgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNl
dC0+aWRSdWxlcyhtX2VsZW1lbnQtPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCkuaW1wbCgpKSwgbWF0
Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwogICAgIGlmIChtX3N0eWxlZEVsZW1lbnQgJiYgbV9zdHls
ZWRFbGVtZW50LT5oYXNDbGFzcygpKSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9zdHlsZWRFbGVtZW50LT5jbGFzc05hbWVzKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBj
b2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPmNsYXNzUnVs
ZXMobV9zdHlsZWRFbGVtZW50LT5jbGFzc05hbWVzKClbaV0uaW1wbCgpKSwgbWF0Y2hSZXF1ZXN0
LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CisgICAgICAgICAgICBjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPmNsYXNzUnVsZXMobV9zdHls
ZWRFbGVtZW50LT5jbGFzc05hbWVzKClbaV0uaW1wbCgpKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFu
Z2UpOwogICAgIH0KIAogICAgIGlmIChtX2VsZW1lbnQtPmlzTGluaygpKQotICAgICAgICBjb2xs
ZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPmxpbmtQc2V1ZG9D
bGFzc1J1bGVzKCksIG1hdGNoUmVxdWVzdCwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgp
OworICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVT
ZXQtPmxpbmtQc2V1ZG9DbGFzc1J1bGVzKCksIG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKICAg
ICBpZiAobV9zZWxlY3RvckNoZWNrZXIubWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MobV9lbGVtZW50
KSkKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxl
U2V0LT5mb2N1c1BzZXVkb0NsYXNzUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJbmRl
eCwgbGFzdFJ1bGVJbmRleCk7Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNo
UmVxdWVzdC5ydWxlU2V0LT50YWdSdWxlcyhtX2VsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSks
IG1hdGNoUmVxdWVzdCwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgpOwotICAgIGNvbGxl
Y3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+dW5pdmVyc2FsUnVs
ZXMoKSwgbWF0Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CisgICAg
ICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+Zm9j
dXNQc2V1ZG9DbGFzc1J1bGVzKCksIG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKKyAgICBjb2xs
ZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPnRhZ1J1bGVzKG1f
ZWxlbWVudC0+bG9jYWxOYW1lKCkuaW1wbCgpKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwor
ICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+dW5p
dmVyc2FsUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwogfQogCi12b2lkIFN0eWxl
UmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKGNvbnN0IE1hdGNoUmVxdWVz
dCYgbWF0Y2hSZXF1ZXN0LCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgp
Cit2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKGNvbnN0
IE1hdGNoUmVxdWVzdCYgbWF0Y2hSZXF1ZXN0LCBSdWxlUmFuZ2UmIHJ1bGVSYW5nZSkKIHsKICAg
ICBpZiAoIW1fcmVnaW9uRm9yU3R5bGluZykKICAgICAgICAgcmV0dXJuOwpAQCAtNjk2LDcgKzY5
Niw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24o
Y29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlCiAgICAgICAgIGlmIChjaGVja1JlZ2lvblNl
bGVjdG9yKHJlZ2lvblNlbGVjdG9yLCBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9yZWdpb25Gb3JT
dHlsaW5nLT5ub2RlKCkpKSkgewogICAgICAgICAgICAgUnVsZVNldCogcmVnaW9uUnVsZXMgPSBt
YXRjaFJlcXVlc3QucnVsZVNldC0+bV9yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cy5hdChpKS5y
dWxlU2V0LmdldCgpOwogICAgICAgICAgICAgQVNTRVJUKHJlZ2lvblJ1bGVzKTsKLSAgICAgICAg
ICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKE1hdGNoUmVxdWVzdChyZWdpb25SdWxlcywgbWF0Y2hS
ZXF1ZXN0LmluY2x1ZGVFbXB0eVJ1bGVzLCBtYXRjaFJlcXVlc3Quc2NvcGUpLCBmaXJzdFJ1bGVJ
bmRleCwgbGFzdFJ1bGVJbmRleCk7CisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhN
YXRjaFJlcXVlc3QocmVnaW9uUnVsZXMsIG1hdGNoUmVxdWVzdC5pbmNsdWRlRW1wdHlSdWxlcywg
bWF0Y2hSZXF1ZXN0LnNjb3BlKSwgcnVsZVJhbmdlKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAg
LTc1NSw4ICs3NTUsOSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoU2NvcGVkQXV0aG9yUnVs
ZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdAogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBNYXRjaFJlcXVlc3QgbWF0Y2hSZXF1ZXN0KGZyYW1lLm1fcnVsZVNldCwg
aW5jbHVkZUVtcHR5UnVsZXMsIGZyYW1lLm1fc2NvcGUpOwotICAgICAgICAgICAgY29sbGVjdE1h
dGNoaW5nUnVsZXMobWF0Y2hSZXF1ZXN0LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwg
cmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSk7Ci0gICAgICAgICAgICBjb2xsZWN0TWF0Y2hp
bmdSdWxlc0ZvclJlZ2lvbihtYXRjaFJlcXVlc3QsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JS
dWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlKTsKKyAgICAgICAgICAgIFJ1bGVSYW5n
ZSBydWxlUmFuZ2UgPSByZXN1bHQucmFuZ2VzLmF1dGhvclJ1bGVSYW5nZSgpOworICAgICAgICAg
ICAgY29sbGVjdE1hdGNoaW5nUnVsZXMobWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOworICAgICAg
ICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24obWF0Y2hSZXF1ZXN0LCBydWxlUmFu
Z2UpOwogICAgICAgICAgICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKHJlc3VsdCk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC03OTAsOCArNzkxLDEwIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6
bWF0Y2hIb3N0UnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxl
cykKICAgICBpZiAobWF0Y2hlZFJ1bGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gbWF0Y2hlZFJ1bGVzLnNpemUoKTsgaSA+IDA7IC0taSkKLSAg
ICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoTWF0Y2hSZXF1ZXN0KG1hdGNoZWRSdWxlcy5hdChp
LTEpLCBpbmNsdWRlRW1wdHlSdWxlcywgbV9lbGVtZW50KSwgcmVzdWx0LnJhbmdlcy5maXJzdEF1
dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1hdGNoZWRSdWxlcy5zaXplKCk7IGkgPiAwOyAtLWkpIHsKKyAgICAgICAgUnVsZVJh
bmdlIHJ1bGVSYW5nZSA9IHJlc3VsdC5yYW5nZXMuYXV0aG9yUnVsZVJhbmdlKCk7CisgICAgICAg
IGNvbGxlY3RNYXRjaGluZ1J1bGVzKE1hdGNoUmVxdWVzdChtYXRjaGVkUnVsZXMuYXQoaS0xKSwg
aW5jbHVkZUVtcHR5UnVsZXMsIG1fZWxlbWVudCksIHJ1bGVSYW5nZSk7CisgICAgfQogICAgIHNv
cnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhyZXN1bHQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0ocmVzdWx0KTsKQEAgLTgwOSw4ICs4MTIsOSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNo
QXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcwog
CiAgICAgLy8gTWF0Y2ggZ2xvYmFsIGF1dGhvciBydWxlcy4KICAgICBNYXRjaFJlcXVlc3QgbWF0
Y2hSZXF1ZXN0KG1fYXV0aG9yU3R5bGUuZ2V0KCksIGluY2x1ZGVFbXB0eVJ1bGVzKTsKLSAgICBj
b2xsZWN0TWF0Y2hpbmdSdWxlcyhtYXRjaFJlcXVlc3QsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRo
b3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlKTsKLSAgICBjb2xsZWN0TWF0Y2hp
bmdSdWxlc0ZvclJlZ2lvbihtYXRjaFJlcXVlc3QsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JS
dWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlKTsKKyAgICBSdWxlUmFuZ2UgcnVsZVJh
bmdlID0gcmVzdWx0LnJhbmdlcy5hdXRob3JSdWxlUmFuZ2UoKTsKKyAgICBjb2xsZWN0TWF0Y2hp
bmdSdWxlcyhtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVs
ZXNGb3JSZWdpb24obWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwogICAgIHNvcnRBbmRUcmFuc2Zl
ck1hdGNoZWRSdWxlcyhyZXN1bHQpOwogCiAgICAgbWF0Y2hTY29wZWRBdXRob3JSdWxlcyhyZXN1
bHQsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKQEAgLTgyNSw4ICs4MjksOSBAQCB2b2lkIFN0eWxlUmVz
b2x2ZXI6Om1hdGNoVXNlclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVt
cHR5UnVsZXMpCiAKICAgICByZXN1bHQucmFuZ2VzLmxhc3RVc2VyUnVsZSA9IHJlc3VsdC5tYXRj
aGVkUHJvcGVydGllcy5zaXplKCkgLSAxOwogICAgIE1hdGNoUmVxdWVzdCBtYXRjaFJlcXVlc3Qo
bV91c2VyU3R5bGUuZ2V0KCksIGluY2x1ZGVFbXB0eVJ1bGVzKTsKLSAgICBjb2xsZWN0TWF0Y2hp
bmdSdWxlcyhtYXRjaFJlcXVlc3QsIHJlc3VsdC5yYW5nZXMuZmlyc3RVc2VyUnVsZSwgcmVzdWx0
LnJhbmdlcy5sYXN0VXNlclJ1bGUpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9u
KG1hdGNoUmVxdWVzdCwgcmVzdWx0LnJhbmdlcy5maXJzdFVzZXJSdWxlLCByZXN1bHQucmFuZ2Vz
Lmxhc3RVc2VyUnVsZSk7CisgICAgUnVsZVJhbmdlIHJ1bGVSYW5nZSA9IHJlc3VsdC5yYW5nZXMu
dXNlclJ1bGVSYW5nZSgpOworICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKG1hdGNoUmVxdWVzdCwg
cnVsZVJhbmdlKTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtYXRjaFJlcXVl
c3QsIHJ1bGVSYW5nZSk7CiAKICAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMocmVzdWx0
KTsKIH0KQEAgLTgzNiwxMiArODQxLDEzIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hVQVJ1
bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIFJ1bGVTZXQqIHJ1bGVzKQogICAgIG1fbWF0Y2hlZFJ1
bGVzLmNsZWFyKCk7CiAgICAgCiAgICAgcmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxlID0gcmVzdWx0
Lm1hdGNoZWRQcm9wZXJ0aWVzLnNpemUoKSAtIDE7Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXMo
TWF0Y2hSZXF1ZXN0KHJ1bGVzKSwgcmVzdWx0LnJhbmdlcy5maXJzdFVBUnVsZSwgcmVzdWx0LnJh
bmdlcy5sYXN0VUFSdWxlKTsKKyAgICBSdWxlUmFuZ2UgcnVsZVJhbmdlID0gcmVzdWx0LnJhbmdl
cy5VQVJ1bGVSYW5nZSgpOworICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKE1hdGNoUmVxdWVzdChy
dWxlcyksIHJ1bGVSYW5nZSk7CiAKICAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMocmVz
dWx0KTsKIH0KIAotdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxp
c3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogcnVsZXMsIGNvbnN0IE1hdGNoUmVxdWVzdCYgbWF0
Y2hSZXF1ZXN0LCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgpCit2b2lk
IFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8
UnVsZURhdGE+KiBydWxlcywgY29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3QsIFJ1bGVS
YW5nZSYgcnVsZVJhbmdlKQogewogICAgIGlmICghcnVsZXMpCiAgICAgICAgIHJldHVybjsKQEAg
LTg4MSw5ICs4ODcsOSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVz
Rm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBydWxlcywgYwogICAgICAgICAgICAgICAg
ICAgICBtX3N0eWxlLT5zZXRIYXNQc2V1ZG9TdHlsZShtX2R5bmFtaWNQc2V1ZG8pOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgb3VyIGZpcnN0L2xhc3Qg
cnVsZSBpbmRpY2VzIGluIHRoZSBtYXRjaGVkIHJ1bGVzIGFycmF5LgotICAgICAgICAgICAgICAg
ICsrbGFzdFJ1bGVJbmRleDsKLSAgICAgICAgICAgICAgICBpZiAoZmlyc3RSdWxlSW5kZXggPT0g
LTEpCi0gICAgICAgICAgICAgICAgICAgIGZpcnN0UnVsZUluZGV4ID0gbGFzdFJ1bGVJbmRleDsK
KyAgICAgICAgICAgICAgICArK3J1bGVSYW5nZS5sYXN0UnVsZUluZGV4OworICAgICAgICAgICAg
ICAgIGlmIChydWxlUmFuZ2UuZmlyc3RSdWxlSW5kZXggPT0gLTEpCisgICAgICAgICAgICAgICAg
ICAgIHJ1bGVSYW5nZS5maXJzdFJ1bGVJbmRleCA9IHJ1bGVSYW5nZS5sYXN0UnVsZUluZGV4Owog
CiAgICAgICAgICAgICAgICAgLy8gQWRkIHRoaXMgcnVsZSB0byBvdXIgbGlzdCBvZiBtYXRjaGVk
IHJ1bGVzLgogICAgICAgICAgICAgICAgIGFkZE1hdGNoZWRSdWxlKCZydWxlRGF0YSk7CkBAIC0x
MDYwLDkgKzEwNjYsMTAgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpzdHlsZVNoYXJpbmdDYW5kaWRh
dGVNYXRjaGVzUnVsZVNldChSdWxlU2V0KiBydWxlU2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgbV9tYXRjaGVkUnVsZXMuY2xlYXIoKTsKIAotICAgIGludCBmaXJzdFJ1bGVJbmRleCA9
IC0xLCBsYXN0UnVsZUluZGV4ID0gLTE7CiAgICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0TW9kZShT
ZWxlY3RvckNoZWNrZXI6OlNoYXJpbmdSdWxlcyk7Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXMo
TWF0Y2hSZXF1ZXN0KHJ1bGVTZXQpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7Cisg
ICAgaW50IGZpcnN0UnVsZUluZGV4ID0gLTEsIGxhc3RSdWxlSW5kZXggPSAtMTsKKyAgICBSdWxl
UmFuZ2UgcnVsZVJhbmdlKGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsKKyAgICBjb2xs
ZWN0TWF0Y2hpbmdSdWxlcyhNYXRjaFJlcXVlc3QocnVsZVNldCksIHJ1bGVSYW5nZSk7CiAgICAg
bV9zZWxlY3RvckNoZWNrZXIuc2V0TW9kZShTZWxlY3RvckNoZWNrZXI6OlJlc29sdmluZ1N0eWxl
KTsKICAgICBpZiAobV9tYXRjaGVkUnVsZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCBkYmViNmVhYTc1NDRmMTEzM2Jh
YTFjZWE2YmM1NWQzYTNjZWIxODdlLi4zNGQ1ZjcxMzYyYmY3YWQyZTE3ZTUyN2I4M2FkYTQxYzg4
NmY4M2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTMwOSw2ICszMDksMTIg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYWRkTWF0Y2hlZFJ1bGUoY29uc3QgUnVsZURhdGEqIHJ1
bGUpIHsgbV9tYXRjaGVkUnVsZXMuYXBwZW5kKHJ1bGUpOyB9CiAKKyAgICBzdHJ1Y3QgUnVsZVJh
bmdlIHsKKyAgICAgICAgUnVsZVJhbmdlKGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1
bGVJbmRleCk6IGZpcnN0UnVsZUluZGV4KGZpcnN0UnVsZUluZGV4KSwgbGFzdFJ1bGVJbmRleChs
YXN0UnVsZUluZGV4KSB7IH0KKyAgICAgICAgaW50JiBmaXJzdFJ1bGVJbmRleDsKKyAgICAgICAg
aW50JiBsYXN0UnVsZUluZGV4OworICAgIH07CisKICAgICBzdHJ1Y3QgTWF0Y2hSYW5nZXMgewog
ICAgICAgICBNYXRjaFJhbmdlcygpIDogZmlyc3RVQVJ1bGUoLTEpLCBsYXN0VUFSdWxlKC0xKSwg
Zmlyc3RBdXRob3JSdWxlKC0xKSwgbGFzdEF1dGhvclJ1bGUoLTEpLCBmaXJzdFVzZXJSdWxlKC0x
KSwgbGFzdFVzZXJSdWxlKC0xKSB7IH0KICAgICAgICAgaW50IGZpcnN0VUFSdWxlOwpAQCAtMzE3
LDYgKzMyMyw5IEBAIHByaXZhdGU6CiAgICAgICAgIGludCBsYXN0QXV0aG9yUnVsZTsKICAgICAg
ICAgaW50IGZpcnN0VXNlclJ1bGU7CiAgICAgICAgIGludCBsYXN0VXNlclJ1bGU7CisgICAgICAg
IFJ1bGVSYW5nZSBVQVJ1bGVSYW5nZSgpIHsgcmV0dXJuIFJ1bGVSYW5nZShmaXJzdFVBUnVsZSwg
bGFzdFVBUnVsZSk7IH0KKyAgICAgICAgUnVsZVJhbmdlIGF1dGhvclJ1bGVSYW5nZSgpIHsgcmV0
dXJuIFJ1bGVSYW5nZShmaXJzdEF1dGhvclJ1bGUsIGxhc3RBdXRob3JSdWxlKTsgfQorICAgICAg
ICBSdWxlUmFuZ2UgdXNlclJ1bGVSYW5nZSgpIHsgcmV0dXJuIFJ1bGVSYW5nZShmaXJzdFVzZXJS
dWxlLCBsYXN0VXNlclJ1bGUpOyB9CiAgICAgfTsKIAogICAgIHN0cnVjdCBNYXRjaGVkUHJvcGVy
dGllcyB7CkBAIC0zNjMsOSArMzcyLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1hdGNoU2NvcGVk
QXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAgICB2
b2lkIG1hdGNoSG9zdFJ1bGVzKE1hdGNoUmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7
CiAKLSAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzKGNvbnN0IE1hdGNoUmVxdWVzdCYsIGlu
dCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCk7Ci0gICAgdm9pZCBjb2xsZWN0
TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihjb25zdCBNYXRjaFJlcXVlc3QmLCBpbnQmIGZpcnN0UnVs
ZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgpOwotICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVs
ZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qLCBjb25zdCBNYXRjaFJlcXVlc3QmLCBp
bnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgpOworICAgIHZvaWQgY29sbGVj
dE1hdGNoaW5nUnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0JiwgUnVsZVJhbmdlJik7CisgICAgdm9p
ZCBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihjb25zdCBNYXRjaFJlcXVlc3QmLCBSdWxl
UmFuZ2UmKTsKKyAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0
b3I8UnVsZURhdGE+KiwgY29uc3QgTWF0Y2hSZXF1ZXN0JiwgUnVsZVJhbmdlJik7CiAKICAgICBi
b29sIGZhc3RSZWplY3RTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYpIGNvbnN0OwogICAgIHZvaWQg
c29ydE1hdGNoZWRSdWxlcygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184374</attachid>
            <date>2013-01-23 18:35:55 -0800</date>
            <delta_ts>2013-01-23 20:46:46 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-107095-20130124113247.patch</filename>
            <type>text/plain</type>
            <size>13168</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTEwOThmZWZlMTFmMmVj
NjFiOWVjMzQxNTIzMzlhMDRhM2MyNjRhNy4uYmUzNDNhNzEzYTkwOTQzN2JmZjIwNDg5ZTJlNGY1
ZjdiNjBhNDI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEzLTAxLTE2ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBHcm91cCBwYXJhbWV0ZXJz
IChmaXJzdFJ1bGVJbmRleCBhbmQgbGFzdFJ1bGVJbmRleCkgaW50byBhIHBhcmFtZXRlciBvYmpl
Y3QsIFJ1bGVSYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNzA5NQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgIFRoaXMgaXMgYSBjb250aW51ZWQgZWZmb3J0IGFmdGVyIHIxMzk4MTcuCisKKyAgICAgICAg
RmFjdG9yaW5nLCBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBjc3MvU3R5bGVS
ZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0
Y2hpbmdSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0
Y2hpbmdSdWxlc0ZvclJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpt
YXRjaFNjb3BlZEF1dGhvclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6
Om1hdGNoSG9zdFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Om1hdGNo
QXV0aG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0Y2hVc2Vy
UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0Y2hVQVJ1bGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9y
TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHlsZVNoYXJpbmdDYW5k
aWRhdGVNYXRjaGVzUnVsZVNldCk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZTo6UnVsZVJhbmdlKToKKyAg
ICAgICAgKFJ1bGVSYW5nZSk6IE5ld2x5IGludHJvZHVjZWQgdG8gZ3JvdXAgcGFyYW1ldGVycy4K
KyAgICAgICAgKFN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6TWF0Y2hSYW5nZXM6OlVBUnVsZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVz
b2x2ZXI6Ok1hdGNoUmFuZ2VzOjphdXRob3JSdWxlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6TWF0Y2hSYW5nZXM6OnVzZXJSdWxlUmFuZ2UpOgorCiAyMDEzLTAxLTIz
ICBUYWthc2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbUmVmYWN0
b3JpbmddIFJlbW92ZSBlbGVtZW50UGFyZW50U3R5bGUgZnJvbSBTZWxlY3RvckNoZWNrZXJDb250
ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggYzNlZTcyMGQyMGVmMDYx
NDVjMWI2MTliN2Q3MDQ5MWE4MzE0ZGIwZS4uOGYzMWJmZTJmYWYyNTU3YjM5YzlhYTVkYzk0MDdl
ZTNiZjJiZjI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNjQ4LDcg
KzY0OCw3IEBAIGlubGluZSBib29sIE1hdGNoaW5nVUFSdWxlc1Njb3BlOjppc01hdGNoaW5nVUFS
dWxlcygpCiAKIGJvb2wgTWF0Y2hpbmdVQVJ1bGVzU2NvcGU6Om1fbWF0Y2hpbmdVQVJ1bGVzID0g
ZmFsc2U7CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMoY29uc3Qg
TWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3QsIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFz
dFJ1bGVJbmRleCkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMoY29u
c3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3QsIFJ1bGVSYW5nZSYgcnVsZVJhbmdlKQogewog
ICAgIEFTU0VSVChtYXRjaFJlcXVlc3QucnVsZVNldCk7CiAgICAgQVNTRVJUKG1fZWxlbWVudCk7
CkBAIC02NTYsMTIgKzY1NiwxMiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGlu
Z1J1bGVzKGNvbnN0IE1hdGNoUmVxdWVzdCYgbWF0Y2hSZXF1ZXN0LCBpbnQmCiAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBwc2V1ZG9JZCA9IG1fZWxlbWVudC0+c2hhZG93UHNldWRvSWQoKTsKICAg
ICBpZiAoIXBzZXVkb0lkLmlzRW1wdHkoKSkgewogICAgICAgICBBU1NFUlQobV9zdHlsZWRFbGVt
ZW50KTsKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5y
dWxlU2V0LT5zaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMocHNldWRvSWQuaW1wbCgpKSwgbWF0Y2hS
ZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CisgICAgICAgIGNvbGxlY3RN
YXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+c2hhZG93UHNldWRvRWxl
bWVudFJ1bGVzKHBzZXVkb0lkLmltcGwoKSksIG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKICAg
ICB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgaWYgKG1fZWxlbWVudC0+aXNXZWJW
VFRFbGVtZW50KCkgJiYgdG9XZWJWVFRFbGVtZW50KG1fZWxlbWVudCktPndlYlZUVE5vZGVUeXBl
KCkpCi0gICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVs
ZVNldC0+Y3VlUHNldWRvUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFz
dFJ1bGVJbmRleCk7CisgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJl
cXVlc3QucnVsZVNldC0+Y3VlUHNldWRvUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2Up
OwogI2VuZGlmCiAgICAgLy8gQ2hlY2sgd2hldGhlciBvdGhlciB0eXBlcyBvZiBydWxlcyBhcmUg
YXBwbGljYWJsZSBpbiB0aGUgY3VycmVudCB0cmVlIHNjb3BlLiBDcml0ZXJpYSBmb3IgdGhpczoK
ICAgICAvLyBhKSBpdCdzIGEgVUEgcnVsZQpAQCAtNjc2LDIxICs2NzYsMjEgQEAgdm9pZCBTdHls
ZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyhjb25zdCBNYXRjaFJlcXVlc3QmIG1hdGNo
UmVxdWVzdCwgaW50JgogICAgIC8vIFdlIG5lZWQgdG8gY29sbGVjdCB0aGUgcnVsZXMgZm9yIGlk
LCBjbGFzcywgdGFnLCBhbmQgZXZlcnl0aGluZyBlbHNlIGludG8gYSBidWZmZXIgYW5kCiAgICAg
Ly8gdGhlbiBzb3J0IHRoZSBidWZmZXIuCiAgICAgaWYgKG1fZWxlbWVudC0+aGFzSUQoKSkKLSAg
ICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5p
ZFJ1bGVzKG1fZWxlbWVudC0+aWRGb3JTdHlsZVJlc29sdXRpb24oKS5pbXBsKCkpLCBtYXRjaFJl
cXVlc3QsIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsKKyAgICAgICAgY29sbGVjdE1h
dGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5pZFJ1bGVzKG1fZWxlbWVu
dC0+aWRGb3JTdHlsZVJlc29sdXRpb24oKS5pbXBsKCkpLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5n
ZSk7CiAgICAgaWYgKG1fc3R5bGVkRWxlbWVudCAmJiBtX3N0eWxlZEVsZW1lbnQtPmhhc0NsYXNz
KCkpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N0eWxlZEVsZW1lbnQtPmNs
YXNzTmFtZXMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVz
Rm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+Y2xhc3NSdWxlcyhtX3N0eWxlZEVsZW1lbnQt
PmNsYXNzTmFtZXMoKVtpXS5pbXBsKCkpLCBtYXRjaFJlcXVlc3QsIGZpcnN0UnVsZUluZGV4LCBs
YXN0UnVsZUluZGV4KTsKKyAgICAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCht
YXRjaFJlcXVlc3QucnVsZVNldC0+Y2xhc3NSdWxlcyhtX3N0eWxlZEVsZW1lbnQtPmNsYXNzTmFt
ZXMoKVtpXS5pbXBsKCkpLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CiAgICAgfQogCiAgICAg
aWYgKG1fZWxlbWVudC0+aXNMaW5rKCkpCi0gICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9y
TGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+bGlua1BzZXVkb0NsYXNzUnVsZXMoKSwgbWF0Y2hS
ZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CisgICAgICAgIGNvbGxlY3RN
YXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+bGlua1BzZXVkb0NsYXNz
UnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwogICAgIGlmIChtX3NlbGVjdG9yQ2hl
Y2tlci5tYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhtX2VsZW1lbnQpKQotICAgICAgICBjb2xsZWN0
TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPmZvY3VzUHNldWRvQ2xh
c3NSdWxlcygpLCBtYXRjaFJlcXVlc3QsIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsK
LSAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPnRh
Z1J1bGVzKG1fZWxlbWVudC0+bG9jYWxOYW1lKCkuaW1wbCgpKSwgbWF0Y2hSZXF1ZXN0LCBmaXJz
dFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JM
aXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT51bml2ZXJzYWxSdWxlcygpLCBtYXRjaFJlcXVlc3Qs
IGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsKKyAgICAgICAgY29sbGVjdE1hdGNoaW5n
UnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5mb2N1c1BzZXVkb0NsYXNzUnVsZXMo
KSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOworICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9y
TGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+dGFnUnVsZXMobV9lbGVtZW50LT5sb2NhbE5hbWUo
KS5pbXBsKCkpLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CisgICAgY29sbGVjdE1hdGNoaW5n
UnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT51bml2ZXJzYWxSdWxlcygpLCBtYXRj
aFJlcXVlc3QsIHJ1bGVSYW5nZSk7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1h
dGNoaW5nUnVsZXNGb3JSZWdpb24oY29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3QsIGlu
dCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCkKK3ZvaWQgU3R5bGVSZXNvbHZl
cjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24oY29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRj
aFJlcXVlc3QsIFJ1bGVSYW5nZSYgcnVsZVJhbmdlKQogewogICAgIGlmICghbV9yZWdpb25Gb3JT
dHlsaW5nKQogICAgICAgICByZXR1cm47CkBAIC03MDEsNyArNzAxLDcgQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihjb25zdCBNYXRjaFJlcXVlc3Qm
IG1hdGNoUmVxdWUKICAgICAgICAgaWYgKGNoZWNrUmVnaW9uU2VsZWN0b3IocmVnaW9uU2VsZWN0
b3IsIHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX3JlZ2lvbkZvclN0eWxpbmctPm5vZGUoKSkpKSB7
CiAgICAgICAgICAgICBSdWxlU2V0KiByZWdpb25SdWxlcyA9IG1hdGNoUmVxdWVzdC5ydWxlU2V0
LT5tX3JlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzLmF0KGkpLnJ1bGVTZXQuZ2V0KCk7CiAgICAg
ICAgICAgICBBU1NFUlQocmVnaW9uUnVsZXMpOwotICAgICAgICAgICAgY29sbGVjdE1hdGNoaW5n
UnVsZXMoTWF0Y2hSZXF1ZXN0KHJlZ2lvblJ1bGVzLCBtYXRjaFJlcXVlc3QuaW5jbHVkZUVtcHR5
UnVsZXMsIG1hdGNoUmVxdWVzdC5zY29wZSksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4
KTsKKyAgICAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKE1hdGNoUmVxdWVzdChyZWdpb25S
dWxlcywgbWF0Y2hSZXF1ZXN0LmluY2x1ZGVFbXB0eVJ1bGVzLCBtYXRjaFJlcXVlc3Quc2NvcGUp
LCBydWxlUmFuZ2UpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNzU1LDggKzc1NSw5IEBAIHZv
aWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hTY29wZWRBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYgcmVz
dWx0LCBib29sIGluY2x1ZGVFbXB0CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIE1hdGNo
UmVxdWVzdCBtYXRjaFJlcXVlc3QoZnJhbWUubV9ydWxlU2V0LCBpbmNsdWRlRW1wdHlSdWxlcywg
ZnJhbWUubV9zY29wZSk7Ci0gICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhtYXRjaFJl
cXVlc3QsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RB
dXRob3JSdWxlKTsKLSAgICAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKG1h
dGNoUmVxdWVzdCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMu
bGFzdEF1dGhvclJ1bGUpOworICAgICAgICAgICAgUnVsZVJhbmdlIHJ1bGVSYW5nZSA9IHJlc3Vs
dC5yYW5nZXMuYXV0aG9yUnVsZVJhbmdlKCk7CisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdS
dWxlcyhtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hp
bmdSdWxlc0ZvclJlZ2lvbihtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CiAgICAgICAgICAgICBz
b3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMocmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KQEAg
LTc5MCw4ICs3OTEsMTAgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaEhvc3RSdWxlcyhNYXRj
aFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQogICAgIGlmIChtYXRjaGVk
UnVsZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtYXRjaGVkUnVsZXMuc2l6ZSgpOyBpID4gMDsgLS1pKQotICAgICAgICBjb2xsZWN0TWF0Y2hp
bmdSdWxlcyhNYXRjaFJlcXVlc3QobWF0Y2hlZFJ1bGVzLmF0KGktMSksIGluY2x1ZGVFbXB0eVJ1
bGVzLCBtX2VsZW1lbnQpLCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJh
bmdlcy5sYXN0QXV0aG9yUnVsZSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbWF0Y2hlZFJ1bGVz
LnNpemUoKTsgaSA+IDA7IC0taSkgeworICAgICAgICBSdWxlUmFuZ2UgcnVsZVJhbmdlID0gcmVz
dWx0LnJhbmdlcy5hdXRob3JSdWxlUmFuZ2UoKTsKKyAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVs
ZXMoTWF0Y2hSZXF1ZXN0KG1hdGNoZWRSdWxlcy5hdChpLTEpLCBpbmNsdWRlRW1wdHlSdWxlcywg
bV9lbGVtZW50KSwgcnVsZVJhbmdlKTsKKyAgICB9CiAgICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hl
ZFJ1bGVzKHJlc3VsdCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOwpAQCAtODA5
LDggKzgxMiw5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlcyhNYXRjaFJl
c3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzCiAKICAgICAvLyBNYXRjaCBnbG9i
YWwgYXV0aG9yIHJ1bGVzLgogICAgIE1hdGNoUmVxdWVzdCBtYXRjaFJlcXVlc3QobV9hdXRob3JT
dHlsZS5nZXQoKSwgaW5jbHVkZUVtcHR5UnVsZXMpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVz
KG1hdGNoUmVxdWVzdCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5n
ZXMubGFzdEF1dGhvclJ1bGUpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKG1h
dGNoUmVxdWVzdCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMu
bGFzdEF1dGhvclJ1bGUpOworICAgIFJ1bGVSYW5nZSBydWxlUmFuZ2UgPSByZXN1bHQucmFuZ2Vz
LmF1dGhvclJ1bGVSYW5nZSgpOworICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKG1hdGNoUmVxdWVz
dCwgcnVsZVJhbmdlKTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtYXRjaFJl
cXVlc3QsIHJ1bGVSYW5nZSk7CiAgICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKHJlc3Vs
dCk7CiAKICAgICBtYXRjaFNjb3BlZEF1dGhvclJ1bGVzKHJlc3VsdCwgaW5jbHVkZUVtcHR5UnVs
ZXMpOwpAQCAtODI1LDggKzgyOSw5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hVc2VyUnVs
ZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKIAogICAgIHJl
c3VsdC5yYW5nZXMubGFzdFVzZXJSdWxlID0gcmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzLnNpemUo
KSAtIDE7CiAgICAgTWF0Y2hSZXF1ZXN0IG1hdGNoUmVxdWVzdChtX3VzZXJTdHlsZS5nZXQoKSwg
aW5jbHVkZUVtcHR5UnVsZXMpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKG1hdGNoUmVxdWVz
dCwgcmVzdWx0LnJhbmdlcy5maXJzdFVzZXJSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RVc2VyUnVs
ZSk7Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24obWF0Y2hSZXF1ZXN0LCByZXN1
bHQucmFuZ2VzLmZpcnN0VXNlclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdFVzZXJSdWxlKTsKKyAg
ICBSdWxlUmFuZ2UgcnVsZVJhbmdlID0gcmVzdWx0LnJhbmdlcy51c2VyUnVsZVJhbmdlKCk7Cisg
ICAgY29sbGVjdE1hdGNoaW5nUnVsZXMobWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOworICAgIGNv
bGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKIAog
ICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhyZXN1bHQpOwogfQpAQCAtODM2LDEyICs4
NDEsMTMgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaFVBUnVsZXMoTWF0Y2hSZXN1bHQmIHJl
c3VsdCwgUnVsZVNldCogcnVsZXMpCiAgICAgbV9tYXRjaGVkUnVsZXMuY2xlYXIoKTsKICAgICAK
ICAgICByZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUgPSByZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMu
c2l6ZSgpIC0gMTsKLSAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhNYXRjaFJlcXVlc3QocnVsZXMp
LCByZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUpOwor
ICAgIFJ1bGVSYW5nZSBydWxlUmFuZ2UgPSByZXN1bHQucmFuZ2VzLlVBUnVsZVJhbmdlKCk7Cisg
ICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoTWF0Y2hSZXF1ZXN0KHJ1bGVzKSwgcnVsZVJhbmdlKTsK
IAogICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhyZXN1bHQpOwogfQogCi12b2lkIFN0
eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVs
ZURhdGE+KiBydWxlcywgY29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3QsIGludCYgZmly
c3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6Y29s
bGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIHJ1bGVzLCBj
b25zdCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCwgUnVsZVJhbmdlJiBydWxlUmFuZ2UpCiB7
CiAgICAgaWYgKCFydWxlcykKICAgICAgICAgcmV0dXJuOwpAQCAtODgxLDkgKzg4Nyw5IEBAIHZv
aWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3Rv
cjxSdWxlRGF0YT4qIHJ1bGVzLCBjCiAgICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEhh
c1BzZXVkb1N0eWxlKG1fZHluYW1pY1BzZXVkbyk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgIC8vIFVwZGF0ZSBvdXIgZmlyc3QvbGFzdCBydWxlIGluZGljZXMgaW4gdGhl
IG1hdGNoZWQgcnVsZXMgYXJyYXkuCi0gICAgICAgICAgICAgICAgKytsYXN0UnVsZUluZGV4Owot
ICAgICAgICAgICAgICAgIGlmIChmaXJzdFJ1bGVJbmRleCA9PSAtMSkKLSAgICAgICAgICAgICAg
ICAgICAgZmlyc3RSdWxlSW5kZXggPSBsYXN0UnVsZUluZGV4OworICAgICAgICAgICAgICAgICsr
cnVsZVJhbmdlLmxhc3RSdWxlSW5kZXg7CisgICAgICAgICAgICAgICAgaWYgKHJ1bGVSYW5nZS5m
aXJzdFJ1bGVJbmRleCA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgcnVsZVJhbmdlLmZpcnN0
UnVsZUluZGV4ID0gcnVsZVJhbmdlLmxhc3RSdWxlSW5kZXg7CiAKICAgICAgICAgICAgICAgICAv
LyBBZGQgdGhpcyBydWxlIHRvIG91ciBsaXN0IG9mIG1hdGNoZWQgcnVsZXMuCiAgICAgICAgICAg
ICAgICAgYWRkTWF0Y2hlZFJ1bGUoJnJ1bGVEYXRhKTsKQEAgLTEwNjAsOSArMTA2NiwxMCBAQCBi
b29sIFN0eWxlUmVzb2x2ZXI6OnN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNSdWxlU2V0KFJ1
bGVTZXQqIHJ1bGVTZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX21hdGNoZWRSdWxl
cy5jbGVhcigpOwogCi0gICAgaW50IGZpcnN0UnVsZUluZGV4ID0gLTEsIGxhc3RSdWxlSW5kZXgg
PSAtMTsKICAgICBtX3NlbGVjdG9yQ2hlY2tlci5zZXRNb2RlKFNlbGVjdG9yQ2hlY2tlcjo6U2hh
cmluZ1J1bGVzKTsKLSAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhNYXRjaFJlcXVlc3QocnVsZVNl
dCksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsKKyAgICBpbnQgZmlyc3RSdWxlSW5k
ZXggPSAtMSwgbGFzdFJ1bGVJbmRleCA9IC0xOworICAgIFJ1bGVSYW5nZSBydWxlUmFuZ2UoZmly
c3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgpOworICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKE1h
dGNoUmVxdWVzdChydWxlU2V0KSwgcnVsZVJhbmdlKTsKICAgICBtX3NlbGVjdG9yQ2hlY2tlci5z
ZXRNb2RlKFNlbGVjdG9yQ2hlY2tlcjo6UmVzb2x2aW5nU3R5bGUpOwogICAgIGlmIChtX21hdGNo
ZWRSdWxlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5oCmluZGV4IGJjNTQzMmZlM2U2ZmU2MTViZTdiMDcwMWJmNzhkMWE0MzFlYmVi
NTQuLjMzMzY2Yzc2NzkxMWU3MzAxOWY5NDk0YmNlYjRkYzhiMGM4NzQ3NTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtMzEwLDYgKzMxMCwxMiBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBhZGRNYXRjaGVkUnVsZShjb25zdCBSdWxlRGF0YSogcnVsZSkgeyBtX21hdGNoZWRSdWxl
cy5hcHBlbmQocnVsZSk7IH0KIAorICAgIHN0cnVjdCBSdWxlUmFuZ2UgeworICAgICAgICBSdWxl
UmFuZ2UoaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4KTogZmlyc3RSdWxl
SW5kZXgoZmlyc3RSdWxlSW5kZXgpLCBsYXN0UnVsZUluZGV4KGxhc3RSdWxlSW5kZXgpIHsgfQor
ICAgICAgICBpbnQmIGZpcnN0UnVsZUluZGV4OworICAgICAgICBpbnQmIGxhc3RSdWxlSW5kZXg7
CisgICAgfTsKKwogICAgIHN0cnVjdCBNYXRjaFJhbmdlcyB7CiAgICAgICAgIE1hdGNoUmFuZ2Vz
KCkgOiBmaXJzdFVBUnVsZSgtMSksIGxhc3RVQVJ1bGUoLTEpLCBmaXJzdEF1dGhvclJ1bGUoLTEp
LCBsYXN0QXV0aG9yUnVsZSgtMSksIGZpcnN0VXNlclJ1bGUoLTEpLCBsYXN0VXNlclJ1bGUoLTEp
IHsgfQogICAgICAgICBpbnQgZmlyc3RVQVJ1bGU7CkBAIC0zMTgsNiArMzI0LDkgQEAgcHJpdmF0
ZToKICAgICAgICAgaW50IGxhc3RBdXRob3JSdWxlOwogICAgICAgICBpbnQgZmlyc3RVc2VyUnVs
ZTsKICAgICAgICAgaW50IGxhc3RVc2VyUnVsZTsKKyAgICAgICAgUnVsZVJhbmdlIFVBUnVsZVJh
bmdlKCkgeyByZXR1cm4gUnVsZVJhbmdlKGZpcnN0VUFSdWxlLCBsYXN0VUFSdWxlKTsgfQorICAg
ICAgICBSdWxlUmFuZ2UgYXV0aG9yUnVsZVJhbmdlKCkgeyByZXR1cm4gUnVsZVJhbmdlKGZpcnN0
QXV0aG9yUnVsZSwgbGFzdEF1dGhvclJ1bGUpOyB9CisgICAgICAgIFJ1bGVSYW5nZSB1c2VyUnVs
ZVJhbmdlKCkgeyByZXR1cm4gUnVsZVJhbmdlKGZpcnN0VXNlclJ1bGUsIGxhc3RVc2VyUnVsZSk7
IH0KICAgICB9OwogCiAgICAgc3RydWN0IE1hdGNoZWRQcm9wZXJ0aWVzIHsKQEAgLTM2NCw5ICsz
NzMsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgbWF0Y2hTY29wZWRBdXRob3JSdWxlcyhNYXRjaFJl
c3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIHZvaWQgbWF0Y2hIb3N0UnVsZXMo
TWF0Y2hSZXN1bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKIAotICAgIHZvaWQgY29sbGVj
dE1hdGNoaW5nUnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0JiwgaW50JiBmaXJzdFJ1bGVJbmRleCwg
aW50JiBsYXN0UnVsZUluZGV4KTsKLSAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVn
aW9uKGNvbnN0IE1hdGNoUmVxdWVzdCYsIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1
bGVJbmRleCk7Ci0gICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgVmVj
dG9yPFJ1bGVEYXRhPiosIGNvbnN0IE1hdGNoUmVxdWVzdCYsIGludCYgZmlyc3RSdWxlSW5kZXgs
IGludCYgbGFzdFJ1bGVJbmRleCk7CisgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhjb25z
dCBNYXRjaFJlcXVlc3QmLCBSdWxlUmFuZ2UmKTsKKyAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1
bGVzRm9yUmVnaW9uKGNvbnN0IE1hdGNoUmVxdWVzdCYsIFJ1bGVSYW5nZSYpOworICAgIHZvaWQg
Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qLCBjb25z
dCBNYXRjaFJlcXVlc3QmLCBSdWxlUmFuZ2UmKTsKIAogICAgIGJvb2wgZmFzdFJlamVjdFNlbGVj
dG9yKGNvbnN0IFJ1bGVEYXRhJikgY29uc3Q7CiAgICAgdm9pZCBzb3J0TWF0Y2hlZFJ1bGVzKCk7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>