<?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>122539</bug_id>
          
          <creation_ts>2013-10-08 20:11:17 -0700</creation_ts>
          <short_desc>Rename EventRetargeter::adjustForRelatedTarget to EventPath::setRelatedTarget</short_desc>
          <delta_ts>2013-10-09 13:04:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>937800</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-08 20:11:17 -0700</bug_when>
    <thetext>Rename EventRetargeter::adjustForRelatedTarget to EventPath::setRelatedTarget</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937801</commentid>
    <comment_count>1</comment_count>
      <attachid>213747</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-08 20:22:33 -0700</bug_when>
    <thetext>Created attachment 213747
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937803</commentid>
    <comment_count>2</comment_count>
      <attachid>213747</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-08 20:31:14 -0700</bug_when>
    <thetext>Comment on attachment 213747
Cleanup

Actually, it&apos;s cleaner if we made relatedTarget() virtual.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937804</commentid>
    <comment_count>3</comment_count>
      <attachid>213748</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-08 20:49:03 -0700</bug_when>
    <thetext>Created attachment 213748
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937819</commentid>
    <comment_count>4</comment_count>
      <attachid>213748</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-08 22:20:39 -0700</bug_when>
    <thetext>Comment on attachment 213748
Cleanup

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

&gt; Source/WebCore/dom/Event.h:175
&gt; +    virtual EventTarget* relatedTarget() const { return 0; }

nullptr

&gt; Source/WebCore/dom/MouseEvent.cpp:210
&gt; +        return target ? target-&gt;toNode() : 0;

nullptr

But also, not sure why you are putting this into a local variable and not putting target() below into one. It’s especially confusing to put this into a local variable named target, when there’s a function by that name that would return something different.

&gt; Source/WebCore/dom/MouseEvent.cpp:213
&gt;      return target() ? target()-&gt;toNode() : 0;

nullptr

&gt; Source/WebCore/dom/MouseEvent.cpp:221
&gt; +        return target ? target-&gt;toNode() : 0;

nullptr

&gt; Source/WebCore/dom/MouseEvent.cpp:224
&gt;      return target() ? target()-&gt;toNode() : 0;

nullptr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938033</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-09 13:04:03 -0700</bug_when>
    <thetext>Committed r157177: &lt;http://trac.webkit.org/changeset/157177&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213747</attachid>
            <date>2013-10-08 20:22:33 -0700</date>
            <delta_ts>2013-10-08 20:31:14 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-122539-20131008202232.patch</filename>
            <type>text/plain</type>
            <size>21416</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzE1NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDEzLTEwLTA4ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmFtZSBFdmVudFJldGFyZ2V0
ZXI6OmFkanVzdEZvclJlbGF0ZWRUYXJnZXQgdG8gRXZlbnRQYXRoOjpzZXRSZWxhdGVkVGFyZ2V0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI1MzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWVk
IEV2ZW50UmV0YXJnZXRlcjo6YWRqdXN0Rm9yUmVsYXRlZFRhcmdldCB0byBFdmVudFBhdGg6OnNl
dFJlbGF0ZWRUYXJnZXQgYW5kIGdvdCByaWQgb2YKKyAgICAgICAgRXZlbnREaXNwYXRjaE1lZGlh
dG9ycyBmb3IgZm9jdXMgZXZlbnRzLiBXZSBub3cgc2V0IHRoZSByZWxhdGVkIHRhcmdldCBpbnNp
ZGUgRXZlbnREaXNwYXRjaGVyJ3MKKyAgICAgICAgZGlzcGF0Y2ggYnkgY2FsbGluZyBFdmVudDo6
c2V0UmVsYXRlZFRhcmdldFRvUGF0aC4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDogRG9u
J3QgdXNlIGZvY3VzIGV2ZW50IGRpc3BhdGNoIG1lZGlhdG9ycy4KKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNJbkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OmRpc3BhdGNoRm9jdXNPdXRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpk
aXNwYXRjaEZvY3VzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlzcGF0Y2hC
bHVyRXZlbnQpOgorCisgICAgICAgICogZG9tL0V2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudDo6c2V0UmVsYXRlZFRhcmdldFRvUGF0aCk6IEFkZGVkLgorCisgICAgICAgICogZG9tL0V2
ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudERpc3BhdGNoZXI6OmRp
c3BhdGNoRXZlbnQpOiBDYWNoZSBFdmVudCouCisgICAgICAgIChXZWJDb3JlOjpFdmVudERpc3Bh
dGNoZXI6OmRpc3BhdGNoKTogQ2FsbCBzZXRSZWxhdGVkVGFyZ2V0VG9QYXRoIGF0IHRoZSBiZWdp
bm5pbmcgdG8gdXBkYXRlCisgICAgICAgIHJlbGF0ZWQgdGFyZ2V0cyBpbiB0aGUgcGF0aC4KKwor
ICAgICAgICAqIGRvbS9FdmVudERpc3BhdGNoZXIuaDoKKworICAgICAgICAqIGRvbS9FdmVudFJl
dGFyZ2V0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRQYXRoOjpFdmVudFBhdGgpOiBJ
bml0aWFsaXplIG1fb3JpZ2luLCB1c2VkIGluIEV2ZW50UGF0aDo6c2V0UmVsYXRlZFRhcmdldC4K
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UmV0YXJnZXRlcjo6YWRqdXN0VG91Y2hMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6c2V0UmVsYXRlZFRhcmdldCk6IFJlbmFtZWQgZnJv
bSBFdmVudFJldGFyZ2V0ZXI6OmFkanVzdEZvclJlbGF0ZWRUYXJnZXQuCisgICAgICAgIERlbGVn
YXRlZCB0aGUgbnVsbGl0eSBjaGVja3MgdG8gY2FsbGVycyBieSB0YWtpbmcgcmVmZXJlbmNlcyBp
bnN0ZWFkIG9mIHBvaW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZXRhcmdldGVyOjpj
YWxjdWxhdGVBZGp1c3RlZE5vZGVzKToKKworICAgICAgICAqIGRvbS9FdmVudFJldGFyZ2V0ZXIu
aDogUmVtb2V2ZCBBZGp1c3RlZE5vZGVzIHR5cGVkZWYuIEl0J3MganVzdCBhIFZlY3RvciBvZiBS
ZWZQdHI8Tm9kZT4uCisKKyAgICAgICAgKiBkb20vRm9jdXNFdmVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb2N1c0V2ZW50OjpzZXRSZWxhdGVkVGFyZ2V0VG9QYXRoKTogQWRkZWQuCisKKyAg
ICAgICAgKiBkb20vRm9jdXNFdmVudC5oOiBSZW1vdmVkIGFsbCBmb2N1cyBldmVudCBkaXNwYXRj
aCBtZWRpYXRvcnMuCisKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNb3VzZUV2ZW50OjpzZXRSZWxhdGVkVGFyZ2V0VG9QYXRoKTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6bWVkaWF0ZUFuZERpc3Bh
dGNoRXZlbnQpOiBEZWxlZ2F0ZSB0aGUgd29yayB0byBzZXQgcmVsYXRlZAorICAgICAgICB0YXJn
ZXRzIHRvIE1vdXNlRXZlbnQ6OnNldFJlbGF0ZWRUYXJnZXRUb1BhdGguCisKKyAgICAgICAgKiBk
b20vTW91c2VFdmVudC5oOgorCisgICAgICAgICogZG9tL05vZGUuY3BwOiBSZW1vdmVkIG9ibm94
aW91cyBOb2RlOjpkaXNwYXRjaFNjb3BlZEV2ZW50RGlzcGF0Y2hNZWRpYXRvci4KKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OmRpc3BhdGNoU2NvcGVkRXZlbnQpOgorCisgICAgICAgICogZG9tL05v
ZGUuaDoKKwogMjAxMy0xMC0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEltcHJvdmVkIFdpbkxhdW5jaGVyLgpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAkocmV2aXNpb24gMTU3MTQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIxLDE0ICsyMDIxLDE0IEBAIHZvaWQgRWxlbWVu
dDo6ZGlzcGF0Y2hGb2N1c0luRXZlbnQoY29uc3QKIHsKICAgICBBU1NFUlQoIU5vRXZlbnREaXNw
YXRjaEFzc2VydGlvbjo6aXNFdmVudERpc3BhdGNoRm9yYmlkZGVuKCkpOwogICAgIEFTU0VSVChl
dmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmZvY3VzaW5FdmVudCB8fCBldmVudFR5cGUgPT0gZXZl
bnROYW1lcygpLkRPTUZvY3VzSW5FdmVudCk7Ci0gICAgZGlzcGF0Y2hTY29wZWRFdmVudERpc3Bh
dGNoTWVkaWF0b3IoRm9jdXNJbkV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Y3JlYXRlKEZvY3VzRXZl
bnQ6OmNyZWF0ZShldmVudFR5cGUsIHRydWUsIGZhbHNlLCBkb2N1bWVudCgpLmRlZmF1bHRWaWV3
KCksIDAsIG9sZEZvY3VzZWRFbGVtZW50KSkpOworICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQoRm9j
dXNFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgZmFsc2UsIGRvY3VtZW50KCkuZGVmYXVs
dFZpZXcoKSwgMCwgb2xkRm9jdXNlZEVsZW1lbnQpKTsKIH0KIAogdm9pZCBFbGVtZW50OjpkaXNw
YXRjaEZvY3VzT3V0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQ
dHI8RWxlbWVudD4gbmV3Rm9jdXNlZEVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKCFOb0V2ZW50RGlz
cGF0Y2hBc3NlcnRpb246OmlzRXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsKICAgICBBU1NFUlQo
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5mb2N1c291dEV2ZW50IHx8IGV2ZW50VHlwZSA9PSBl
dmVudE5hbWVzKCkuRE9NRm9jdXNPdXRFdmVudCk7Ci0gICAgZGlzcGF0Y2hTY29wZWRFdmVudERp
c3BhdGNoTWVkaWF0b3IoRm9jdXNPdXRFdmVudERpc3BhdGNoTWVkaWF0b3I6OmNyZWF0ZShGb2N1
c0V2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCB0cnVlLCBmYWxzZSwgZG9jdW1lbnQoKS5kZWZhdWx0
VmlldygpLCAwLCBuZXdGb2N1c2VkRWxlbWVudCkpKTsKKyAgICBkaXNwYXRjaFNjb3BlZEV2ZW50
KEZvY3VzRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIHRydWUsIGZhbHNlLCBkb2N1bWVudCgpLmRl
ZmF1bHRWaWV3KCksIDAsIG5ld0ZvY3VzZWRFbGVtZW50KSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6
ZGlzcGF0Y2hGb2N1c0V2ZW50KFBhc3NSZWZQdHI8RWxlbWVudD4gb2xkRm9jdXNlZEVsZW1lbnQs
IEZvY3VzRGlyZWN0aW9uKQpAQCAtMjAzNyw3ICsyMDM3LDcgQEAgdm9pZCBFbGVtZW50OjpkaXNw
YXRjaEZvY3VzRXZlbnQoUGFzc1JlZgogICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21l
KCkuY2xpZW50KCkuZWxlbWVudERpZEZvY3VzKHRoaXMpOwogCiAgICAgUmVmUHRyPEZvY3VzRXZl
bnQ+IGV2ZW50ID0gRm9jdXNFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50LCBm
YWxzZSwgZmFsc2UsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgMCwgb2xkRm9jdXNlZEVsZW1l
bnQpOwotICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCh0aGlzLCBGb2N1c0V2ZW50
RGlzcGF0Y2hNZWRpYXRvcjo6Y3JlYXRlKGV2ZW50LnJlbGVhc2UoKSkpOworICAgIEV2ZW50RGlz
cGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCh0aGlzLCBFdmVudERpc3BhdGNoTWVkaWF0b3I6OmNyZWF0
ZShldmVudC5yZWxlYXNlKCkpKTsKIH0KIAogdm9pZCBFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVu
dChQYXNzUmVmUHRyPEVsZW1lbnQ+IG5ld0ZvY3VzZWRFbGVtZW50KQpAQCAtMjA0Niw3ICsyMDQ2
LDcgQEAgdm9pZCBFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudChQYXNzUmVmUAogICAgICAgICBk
b2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZWxlbWVudERpZEJsdXIodGhpcyk7
CiAKICAgICBSZWZQdHI8Rm9jdXNFdmVudD4gZXZlbnQgPSBGb2N1c0V2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmJsdXJFdmVudCwgZmFsc2UsIGZhbHNlLCBkb2N1bWVudCgpLmRlZmF1bHRWaWV3
KCksIDAsIG5ld0ZvY3VzZWRFbGVtZW50KTsKLSAgICBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNo
RXZlbnQodGhpcywgQmx1ckV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Y3JlYXRlKGV2ZW50LnJlbGVh
c2UoKSkpOworICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCh0aGlzLCBFdmVudERp
c3BhdGNoTWVkaWF0b3I6OmNyZWF0ZShldmVudC5yZWxlYXNlKCkpKTsKIH0KIAogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnQuaAkocmV2aXNpb24gMTU3MTQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ2xpcGJvYXJkOwotY2xhc3MgRXZlbnRUYXJnZXQ7CiBjbGFzcyBFdmVudERpc3Bh
dGNoZXI7CitjbGFzcyBFdmVudFBhdGg7CitjbGFzcyBFdmVudFRhcmdldDsKIGNsYXNzIEhUTUxJ
RnJhbWVFbGVtZW50OwogCiBzdHJ1Y3QgRXZlbnRJbml0IHsKQEAgLTE3Miw2ICsxNzMsOCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RXZlbnQ+IGNsb25lRm9yKEhUTUxJRnJh
bWVFbGVtZW50KikgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVsYXRlZFRhcmdldFRv
UGF0aChFdmVudFBhdGgmKSB7IH0KKwogcHJvdGVjdGVkOgogICAgIEV2ZW50KCk7CiAgICAgRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCShyZXZpc2lv
biAxNTcxNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkV2ZW50Q29udGV4dC5oIgog
I2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hNZWRpYXRvci5oIgogI2luY2x1ZGUgIkV2ZW50UmV0YXJn
ZXRlci5oIgorI2luY2x1ZGUgIkZvY3VzRXZlbnQuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIK
ICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVu
dC5oIgpAQCAtNDYsOSArNDcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogYm9vbCBFdmVudERp
c3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQoTm9kZSogbm9kZSwgUGFzc1JlZlB0cjxFdmVudERpc3Bh
dGNoTWVkaWF0b3I+IG1lZGlhdG9yKQogewogICAgIEFTU0VSVCghTm9FdmVudERpc3BhdGNoQXNz
ZXJ0aW9uOjppc0V2ZW50RGlzcGF0Y2hGb3JiaWRkZW4oKSk7Ci0gICAgaWYgKCFtZWRpYXRvci0+
ZXZlbnQoKSkKKyAgICBFdmVudCogZXZlbnQgPSBtZWRpYXRvci0+ZXZlbnQoKTsKKyAgICBpZiAo
IWV2ZW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBFdmVudERpc3BhdGNoZXIgZGlzcGF0
Y2hlcihub2RlLCBtZWRpYXRvci0+ZXZlbnQoKSk7CisgICAgRXZlbnREaXNwYXRjaGVyIGRpc3Bh
dGNoZXIobm9kZSwgZXZlbnQpOwogICAgIHJldHVybiBtZWRpYXRvci0+bWVkaWF0ZUFuZERpc3Bh
dGNoRXZlbnQoJmRpc3BhdGNoZXIpOwogfQogCkBAIC0xMDAsNiArMTAyLDggQEAgdm9pZCBFdmVu
dERpc3BhdGNoZXI6OmRpc3BhdGNoU2ltdWxhdGVkQwogCiBib29sIEV2ZW50RGlzcGF0Y2hlcjo6
ZGlzcGF0Y2goKQogeworICAgIG1fZXZlbnQtPnNldFJlbGF0ZWRUYXJnZXRUb1BhdGgobV9ldmVu
dFBhdGgpOworCiAjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghbV9ldmVudERpc3BhdGNoZWQp
OwogICAgIG1fZXZlbnREaXNwYXRjaGVkID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudERpc3BhdGNoZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnREaXNwYXRjaGVyLmgJKHJldmlzaW9uIDE1NzE1MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudERpc3BhdGNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTIgKzU0LDE0IEBAIGVudW0g
RXZlbnREaXNwYXRjaENvbnRpbnVhdGlvbiB7CiAKIGNsYXNzIEV2ZW50UGF0aCB7CiBwdWJsaWM6
Ci0gICAgRXZlbnRQYXRoKE5vZGUmLCBFdmVudCYpOworICAgIEV2ZW50UGF0aChOb2RlJiBvcmln
aW4sIEV2ZW50Jik7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3BhdGgu
aXNFbXB0eSgpOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3BhdGguc2l6
ZSgpOyB9CiAgICAgY29uc3QgRXZlbnRDb250ZXh0JiBjb250ZXh0QXQoc2l6ZV90IGkpIGNvbnN0
IHsgcmV0dXJuICptX3BhdGhbaV07IH0KICAgICBFdmVudENvbnRleHQmIGNvbnRleHRBdChzaXpl
X3QgaSkgeyByZXR1cm4gKm1fcGF0aFtpXTsgfQorICAgIAorICAgIHZvaWQgc2V0UmVsYXRlZFRh
cmdldChFdmVudFRhcmdldCYpOwogCiAgICAgYm9vbCBoYXNFdmVudExpc3RlbmVycyhjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3Q7CiAKQEAgLTcwLDYgKzcyLDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0Piwg
MzI+IG1fcGF0aDsKKyAgICBSZWZQdHI8Tm9kZT4gbV9vcmlnaW47CiB9OwogCiBjbGFzcyBFdmVu
dERpc3BhdGNoZXIgewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UmV0YXJnZXRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UmV0YXJnZXRlci5jcHAJ
KHJldmlzaW9uIDE1NzE1MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFJldGFyZ2V0ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw3IEBAIHN0YXRpYyBOb2RlKiBub2RlT3JI
b3N0SWZQc2V1ZG9FbGVtZW50KE4KIH0KIAogRXZlbnRQYXRoOjpFdmVudFBhdGgoTm9kZSYgdGFy
Z2V0Tm9kZSwgRXZlbnQmIGV2ZW50KQorICAgIDogbV9vcmlnaW4oJnRhcmdldE5vZGUpCiB7CiAg
ICAgYm9vbCBpbkRvY3VtZW50ID0gdGFyZ2V0Tm9kZS5pbkRvY3VtZW50KCk7CiAgICAgYm9vbCBp
c1NWR0VsZW1lbnQgPSB0YXJnZXROb2RlLmlzU1ZHRWxlbWVudCgpOwpAQCAtMTA5LDE2ICsxMTAs
NiBAQCBFdmVudFBhdGg6OkV2ZW50UGF0aChOb2RlJiB0YXJnZXROb2RlLCBFCiAgICAgfQogfQog
Ci12b2lkIEV2ZW50UmV0YXJnZXRlcjo6YWRqdXN0Rm9yTW91c2VFdmVudChOb2RlKiBub2RlLCBj
b25zdCBNb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBFdmVudFBhdGgmIGV2ZW50UGF0aCkKLXsKLSAg
ICBhZGp1c3RGb3JSZWxhdGVkVGFyZ2V0KG5vZGUsIG1vdXNlRXZlbnQucmVsYXRlZFRhcmdldCgp
LCBldmVudFBhdGgpOwotfQotCi12b2lkIEV2ZW50UmV0YXJnZXRlcjo6YWRqdXN0Rm9yRm9jdXNF
dmVudChOb2RlKiBub2RlLCBjb25zdCBGb2N1c0V2ZW50JiBmb2N1c0V2ZW50LCBFdmVudFBhdGgm
IGV2ZW50UGF0aCkKLXsKLSAgICBhZGp1c3RGb3JSZWxhdGVkVGFyZ2V0KG5vZGUsIGZvY3VzRXZl
bnQucmVsYXRlZFRhcmdldCgpLCBldmVudFBhdGgpOwotfQotCiAjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKIHZvaWQgRXZlbnRSZXRhcmdldGVyOjphZGp1c3RGb3JUb3VjaEV2ZW50KE5vZGUqIG5v
ZGUsIGNvbnN0IFRvdWNoRXZlbnQmIHRvdWNoRXZlbnQsIEV2ZW50UGF0aCYgZXZlbnRQYXRoKQog
ewpAQCAtMTQ4LDcgKzEzOSw3IEBAIHZvaWQgRXZlbnRSZXRhcmdldGVyOjphZGp1c3RUb3VjaExp
c3QoY28KICAgICBBU1NFUlQoZXZlbnRQYXRoVG91Y2hMaXN0cy5zaXplKCkgPT0gZXZlbnRQYXRo
U2l6ZSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0b3VjaExpc3QtPmxlbmd0aCgpOyAr
K2kpIHsKICAgICAgICAgY29uc3QgVG91Y2gmIHRvdWNoID0gKnRvdWNoTGlzdC0+aXRlbShpKTsK
LSAgICAgICAgQWRqdXN0ZWROb2RlcyBhZGp1c3RlZE5vZGVzOworICAgICAgICBWZWN0b3I8UmVm
UHRyPE5vZGU+PiBhZGp1c3RlZE5vZGVzOwogICAgICAgICBjYWxjdWxhdGVBZGp1c3RlZE5vZGVz
KG5vZGUsIHRvdWNoLnRhcmdldCgpLT50b05vZGUoKSwgRG9lc05vdFN0b3BBdEJvdW5kYXJ5LCBj
b25zdF9jYXN0PEV2ZW50UGF0aCY+KGV2ZW50UGF0aCksIGFkanVzdGVkTm9kZXMpOwogICAgICAg
ICBBU1NFUlQoYWRqdXN0ZWROb2Rlcy5zaXplKCkgPT0gZXZlbnRQYXRoU2l6ZSk7CiAgICAgICAg
IGZvciAoc2l6ZV90IGogPSAwOyBqIDwgZXZlbnRQYXRoU2l6ZTsgKytqKQpAQCAtMTU3LDIwICsx
NDgsMTYgQEAgdm9pZCBFdmVudFJldGFyZ2V0ZXI6OmFkanVzdFRvdWNoTGlzdChjbwogfQogI2Vu
ZGlmCiAKLXZvaWQgRXZlbnRSZXRhcmdldGVyOjphZGp1c3RGb3JSZWxhdGVkVGFyZ2V0KGNvbnN0
IE5vZGUqIG5vZGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0LCBFdmVudFBhdGgmIGV2ZW50
UGF0aCkKK3ZvaWQgRXZlbnRQYXRoOjpzZXRSZWxhdGVkVGFyZ2V0KEV2ZW50VGFyZ2V0JiByZWxh
dGVkVGFyZ2V0KQogewotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICgh
cmVsYXRlZFRhcmdldCkKLSAgICAgICAgcmV0dXJuOwotICAgIE5vZGUqIHJlbGF0ZWROb2RlID0g
cmVsYXRlZFRhcmdldC0+dG9Ob2RlKCk7CisgICAgTm9kZSogcmVsYXRlZE5vZGUgPSByZWxhdGVk
VGFyZ2V0LnRvTm9kZSgpOwogICAgIGlmICghcmVsYXRlZE5vZGUpCiAgICAgICAgIHJldHVybjsK
LSAgICBBZGp1c3RlZE5vZGVzIGFkanVzdGVkTm9kZXM7Ci0gICAgY2FsY3VsYXRlQWRqdXN0ZWRO
b2Rlcyhub2RlLCByZWxhdGVkTm9kZSwgU3RvcEF0Qm91bmRhcnlJZk5lZWRlZCwgZXZlbnRQYXRo
LCBhZGp1c3RlZE5vZGVzKTsKLSAgICBBU1NFUlQoYWRqdXN0ZWROb2Rlcy5zaXplKCkgPD0gZXZl
bnRQYXRoLnNpemUoKSk7CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gYWRqdXN0ZWROb2RlczsK
KyAgICBFdmVudFJldGFyZ2V0ZXI6OmNhbGN1bGF0ZUFkanVzdGVkTm9kZXMobV9vcmlnaW4uZ2V0
KCksIHJlbGF0ZWROb2RlLCBFdmVudFJldGFyZ2V0ZXI6OlN0b3BBdEJvdW5kYXJ5SWZOZWVkZWQs
ICp0aGlzLCBhZGp1c3RlZE5vZGVzKTsKKyAgICBBU1NFUlQoYWRqdXN0ZWROb2Rlcy5zaXplKCkg
PD0gbV9wYXRoLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhZGp1c3RlZE5v
ZGVzLnNpemUoKTsgKytpKQotICAgICAgICB0b01vdXNlT3JGb2N1c0V2ZW50Q29udGV4dChldmVu
dFBhdGguY29udGV4dEF0KGkpKS5zZXRSZWxhdGVkVGFyZ2V0KGFkanVzdGVkTm9kZXNbaV0pOwor
ICAgICAgICB0b01vdXNlT3JGb2N1c0V2ZW50Q29udGV4dCgqbV9wYXRoW2ldKS5zZXRSZWxhdGVk
VGFyZ2V0KGFkanVzdGVkTm9kZXNbaV0pOwogfQogCiBzdGF0aWMgdm9pZCBidWlsZFJlbGF0ZWRO
b2RlTWFwKGNvbnN0IE5vZGUqIHJlbGF0ZWROb2RlLCBIYXNoTWFwPFRyZWVTY29wZSosIE5vZGUq
PiYgcmVsYXRlZE5vZGVNYXApCkBAIC0yMDksNyArMTk2LDcgQEAgc3RhdGljIE5vZGUqIGFkZFJl
bGF0ZWROb2RlRm9yVW5tYXBlZFRyZQogICAgIHJldHVybiByZWxhdGVkTm9kZTsKIH0KIAotdm9p
ZCBFdmVudFJldGFyZ2V0ZXI6OmNhbGN1bGF0ZUFkanVzdGVkTm9kZXMoY29uc3QgTm9kZSogbm9k
ZSwgY29uc3QgTm9kZSogcmVsYXRlZE5vZGUsIEV2ZW50V2l0aFJlbGF0ZWRUYXJnZXREaXNwYXRj
aEJlaGF2aW9yIGV2ZW50V2l0aFJlbGF0ZWRUYXJnZXREaXNwYXRjaEJlaGF2aW9yLCBFdmVudFBh
dGgmIGV2ZW50UGF0aCwgQWRqdXN0ZWROb2RlcyYgYWRqdXN0ZWROb2RlcykKK3ZvaWQgRXZlbnRS
ZXRhcmdldGVyOjpjYWxjdWxhdGVBZGp1c3RlZE5vZGVzKGNvbnN0IE5vZGUqIG5vZGUsIGNvbnN0
IE5vZGUqIHJlbGF0ZWROb2RlLCBFdmVudFdpdGhSZWxhdGVkVGFyZ2V0RGlzcGF0Y2hCZWhhdmlv
ciBldmVudFdpdGhSZWxhdGVkVGFyZ2V0RGlzcGF0Y2hCZWhhdmlvciwgRXZlbnRQYXRoJiBldmVu
dFBhdGgsIFZlY3RvcjxSZWZQdHI8Tm9kZT4+JiBhZGp1c3RlZE5vZGVzKQogewogICAgIEhhc2hN
YXA8VHJlZVNjb3BlKiwgTm9kZSo+IHJlbGF0ZWROb2RlTWFwOwogICAgIGJ1aWxkUmVsYXRlZE5v
ZGVNYXAocmVsYXRlZE5vZGUsIHJlbGF0ZWROb2RlTWFwKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFJldGFyZ2V0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRSZXRhcmdldGVyLmgJKHJldmlzaW9uIDE1NzE1MikKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFJldGFyZ2V0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsOCArNDgsNiBAQCBjbGFz
cyBUcmVlU2NvcGU7CiAKIGNsYXNzIEV2ZW50UmV0YXJnZXRlciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIHZvaWQgYWRqdXN0Rm9yTW91c2VFdmVudChOb2RlKiwgY29uc3QgTW91c2VFdmVudCYsIEV2
ZW50UGF0aCYpOwotICAgIHN0YXRpYyB2b2lkIGFkanVzdEZvckZvY3VzRXZlbnQoTm9kZSosIGNv
bnN0IEZvY3VzRXZlbnQmLCBFdmVudFBhdGgmKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQog
ICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxUb3VjaExpc3Q+ID4gRXZlbnRQYXRoVG91Y2hMaXN0
czsKICAgICBzdGF0aWMgdm9pZCBhZGp1c3RGb3JUb3VjaEV2ZW50KE5vZGUqLCBjb25zdCBUb3Vj
aEV2ZW50JiwgRXZlbnRQYXRoJik7CkBAIC01NywxNiArNTUsMTYgQEAgcHVibGljOgogICAgIHN0
YXRpYyBFdmVudFRhcmdldCYgZXZlbnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMoTm9kZSYg
cmVmZXJlbmNlTm9kZSk7CiAKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPE5v
ZGU+ID4gQWRqdXN0ZWROb2RlczsKICAgICBlbnVtIEV2ZW50V2l0aFJlbGF0ZWRUYXJnZXREaXNw
YXRjaEJlaGF2aW9yIHsKICAgICAgICAgU3RvcEF0Qm91bmRhcnlJZk5lZWRlZCwKICAgICAgICAg
RG9lc05vdFN0b3BBdEJvdW5kYXJ5CiAgICAgfTsKICAgICBzdGF0aWMgdm9pZCBhZGp1c3RGb3JS
ZWxhdGVkVGFyZ2V0KGNvbnN0IE5vZGUqLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCwgRXZl
bnRQYXRoJik7Ci0gICAgc3RhdGljIHZvaWQgY2FsY3VsYXRlQWRqdXN0ZWROb2Rlcyhjb25zdCBO
b2RlKiwgY29uc3QgTm9kZSogcmVsYXRlZE5vZGUsIEV2ZW50V2l0aFJlbGF0ZWRUYXJnZXREaXNw
YXRjaEJlaGF2aW9yLCBFdmVudFBhdGgmLCBBZGp1c3RlZE5vZGVzJik7CisgICAgc3RhdGljIHZv
aWQgY2FsY3VsYXRlQWRqdXN0ZWROb2Rlcyhjb25zdCBOb2RlKiwgY29uc3QgTm9kZSogcmVsYXRl
ZE5vZGUsIEV2ZW50V2l0aFJlbGF0ZWRUYXJnZXREaXNwYXRjaEJlaGF2aW9yLCBFdmVudFBhdGgm
LCBWZWN0b3I8UmVmUHRyPE5vZGU+PiYgYWRqdXN0ZWROb2Rlcyk7CiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKICAgICBzdGF0aWMgdm9pZCBhZGp1c3RUb3VjaExpc3QoY29uc3QgTm9kZSosIGNv
bnN0IFRvdWNoTGlzdCosIGNvbnN0IEV2ZW50UGF0aCYsIEV2ZW50UGF0aFRvdWNoTGlzdHMmKTsK
ICNlbmRpZgorICAgIGZyaWVuZCBjbGFzcyBFdmVudFBhdGg7CiB9OwogCiBpbmxpbmUgRXZlbnRU
YXJnZXQmIEV2ZW50UmV0YXJnZXRlcjo6ZXZlbnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMo
Tm9kZSYgcmVmZXJlbmNlTm9kZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAJKHJl
dmlzaW9uIDE1NzE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjUsNjggKzY1LDEwIEBAIEZvY3VzRXZlbnQ6OkZvY3VzRXZlbnQoY29u
c3QgQXRvbWljU3RyaW4KIHsKIH0KIAotUGFzc1JlZlB0cjxGb2N1c0V2ZW50RGlzcGF0Y2hNZWRp
YXRvcj4gRm9jdXNFdmVudERpc3BhdGNoTWVkaWF0b3I6OmNyZWF0ZShQYXNzUmVmUHRyPEZvY3Vz
RXZlbnQ+IGZvY3VzRXZlbnQpCit2b2lkIEZvY3VzRXZlbnQ6OnNldFJlbGF0ZWRUYXJnZXRUb1Bh
dGgoRXZlbnRQYXRoJiBwYXRoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRm9jdXNFdmVu
dERpc3BhdGNoTWVkaWF0b3IoZm9jdXNFdmVudCkpOwotfQotCi1Gb2N1c0V2ZW50RGlzcGF0Y2hN
ZWRpYXRvcjo6Rm9jdXNFdmVudERpc3BhdGNoTWVkaWF0b3IoUGFzc1JlZlB0cjxGb2N1c0V2ZW50
PiBmb2N1c0V2ZW50KQotICAgIDogRXZlbnREaXNwYXRjaE1lZGlhdG9yKGZvY3VzRXZlbnQpCi17
Ci19Ci0KLWJvb2wgRm9jdXNFdmVudERpc3BhdGNoTWVkaWF0b3I6Om1lZGlhdGVBbmREaXNwYXRj
aEV2ZW50KEV2ZW50RGlzcGF0Y2hlciogZGlzcGF0Y2hlcikgY29uc3QKLXsKLSAgICBFdmVudFJl
dGFyZ2V0ZXI6OmFkanVzdEZvckZvY3VzRXZlbnQoZGlzcGF0Y2hlci0+bm9kZSgpLCAqZXZlbnQo
KSwgZGlzcGF0Y2hlci0+ZXZlbnRQYXRoKCkpOwotICAgIHJldHVybiBFdmVudERpc3BhdGNoTWVk
aWF0b3I6Om1lZGlhdGVBbmREaXNwYXRjaEV2ZW50KGRpc3BhdGNoZXIpOwotfQotCi1QYXNzUmVm
UHRyPEJsdXJFdmVudERpc3BhdGNoTWVkaWF0b3I+IEJsdXJFdmVudERpc3BhdGNoTWVkaWF0b3I6
OmNyZWF0ZShQYXNzUmVmUHRyPEZvY3VzRXZlbnQ+IGZvY3VzRXZlbnQpCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBCbHVyRXZlbnREaXNwYXRjaE1lZGlhdG9yKGZvY3VzRXZlbnQpKTsKLX0K
LQotQmx1ckV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Qmx1ckV2ZW50RGlzcGF0Y2hNZWRpYXRvcihQ
YXNzUmVmUHRyPEZvY3VzRXZlbnQ+IGZvY3VzRXZlbnQpCi0gICAgOiBFdmVudERpc3BhdGNoTWVk
aWF0b3IoZm9jdXNFdmVudCkKLXsKLX0KLQotYm9vbCBCbHVyRXZlbnREaXNwYXRjaE1lZGlhdG9y
OjptZWRpYXRlQW5kRGlzcGF0Y2hFdmVudChFdmVudERpc3BhdGNoZXIqIGRpc3BhdGNoZXIpIGNv
bnN0Ci17Ci0gICAgRXZlbnRSZXRhcmdldGVyOjphZGp1c3RGb3JGb2N1c0V2ZW50KGRpc3BhdGNo
ZXItPm5vZGUoKSwgKmV2ZW50KCksIGRpc3BhdGNoZXItPmV2ZW50UGF0aCgpKTsKLSAgICByZXR1
cm4gRXZlbnREaXNwYXRjaE1lZGlhdG9yOjptZWRpYXRlQW5kRGlzcGF0Y2hFdmVudChkaXNwYXRj
aGVyKTsKLX0KLQotUGFzc1JlZlB0cjxGb2N1c0luRXZlbnREaXNwYXRjaE1lZGlhdG9yPiBGb2N1
c0luRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpjcmVhdGUoUGFzc1JlZlB0cjxGb2N1c0V2ZW50PiBm
b2N1c0V2ZW50KQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRm9jdXNJbkV2ZW50RGlzcGF0
Y2hNZWRpYXRvcihmb2N1c0V2ZW50KSk7Ci19Ci0KLUZvY3VzSW5FdmVudERpc3BhdGNoTWVkaWF0
b3I6OkZvY3VzSW5FdmVudERpc3BhdGNoTWVkaWF0b3IoUGFzc1JlZlB0cjxGb2N1c0V2ZW50PiBm
b2N1c0V2ZW50KQotICAgIDogRXZlbnREaXNwYXRjaE1lZGlhdG9yKGZvY3VzRXZlbnQpCi17Ci19
Ci0KLWJvb2wgRm9jdXNJbkV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6bWVkaWF0ZUFuZERpc3BhdGNo
RXZlbnQoRXZlbnREaXNwYXRjaGVyKiBkaXNwYXRjaGVyKSBjb25zdAotewotICAgIEV2ZW50UmV0
YXJnZXRlcjo6YWRqdXN0Rm9yRm9jdXNFdmVudChkaXNwYXRjaGVyLT5ub2RlKCksICpldmVudCgp
LCBkaXNwYXRjaGVyLT5ldmVudFBhdGgoKSk7Ci0gICAgcmV0dXJuIEV2ZW50RGlzcGF0Y2hNZWRp
YXRvcjo6bWVkaWF0ZUFuZERpc3BhdGNoRXZlbnQoZGlzcGF0Y2hlcik7Ci19Ci0KLVBhc3NSZWZQ
dHI8Rm9jdXNPdXRFdmVudERpc3BhdGNoTWVkaWF0b3I+IEZvY3VzT3V0RXZlbnREaXNwYXRjaE1l
ZGlhdG9yOjpjcmVhdGUoUGFzc1JlZlB0cjxGb2N1c0V2ZW50PiBmb2N1c0V2ZW50KQotewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgRm9jdXNPdXRFdmVudERpc3BhdGNoTWVkaWF0b3IoZm9jdXNF
dmVudCkpOwotfQotCi1Gb2N1c091dEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Rm9jdXNPdXRFdmVu
dERpc3BhdGNoTWVkaWF0b3IoUGFzc1JlZlB0cjxGb2N1c0V2ZW50PiBmb2N1c0V2ZW50KQotICAg
IDogRXZlbnREaXNwYXRjaE1lZGlhdG9yKGZvY3VzRXZlbnQpCi17Ci19Ci0KLWJvb2wgRm9jdXNP
dXRFdmVudERpc3BhdGNoTWVkaWF0b3I6Om1lZGlhdGVBbmREaXNwYXRjaEV2ZW50KEV2ZW50RGlz
cGF0Y2hlciogZGlzcGF0Y2hlcikgY29uc3QKLXsKLSAgICBFdmVudFJldGFyZ2V0ZXI6OmFkanVz
dEZvckZvY3VzRXZlbnQoZGlzcGF0Y2hlci0+bm9kZSgpLCAqZXZlbnQoKSwgZGlzcGF0Y2hlci0+
ZXZlbnRQYXRoKCkpOwotICAgIHJldHVybiBFdmVudERpc3BhdGNoTWVkaWF0b3I6Om1lZGlhdGVB
bmREaXNwYXRjaEV2ZW50KGRpc3BhdGNoZXIpOworICAgIGlmIChtX3JlbGF0ZWRUYXJnZXQpCisg
ICAgICAgIHBhdGguc2V0UmVsYXRlZFRhcmdldCgqbV9yZWxhdGVkVGFyZ2V0KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5oCShyZXZpc2lv
biAxNTcxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Nyw2ICs2Nyw4IEBAIHByaXZhdGU6CiAgICAgRm9jdXNFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQ
dHI8QWJzdHJhY3RWaWV3PiwgaW50LCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0Pik7CiAgICAgRm9j
dXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEZvY3VzRXZlbnRJbml0Jik7
CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVsYXRlZFRhcmdldFRvUGF0aChFdmVudFBhdGgmKSBP
VkVSUklERSBGSU5BTDsKKwogICAgIFJlZlB0cjxFdmVudFRhcmdldD4gbV9yZWxhdGVkVGFyZ2V0
OwogfTsKIApAQCAtNzYsNDIgKzc4LDYgQEAgaW5saW5lIEZvY3VzRXZlbnQqIHRvRm9jdXNFdmVu
dChFdmVudCogZQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxGb2N1c0V2ZW50Kj4oZXZlbnQpOwog
fQogCi1jbGFzcyBGb2N1c0V2ZW50RGlzcGF0Y2hNZWRpYXRvciA6IHB1YmxpYyBFdmVudERpc3Bh
dGNoTWVkaWF0b3IgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvY3VzRXZlbnRE
aXNwYXRjaE1lZGlhdG9yPiBjcmVhdGUoUGFzc1JlZlB0cjxGb2N1c0V2ZW50Pik7Ci1wcml2YXRl
OgotICAgIGV4cGxpY2l0IEZvY3VzRXZlbnREaXNwYXRjaE1lZGlhdG9yKFBhc3NSZWZQdHI8Rm9j
dXNFdmVudD4pOwotICAgIEZvY3VzRXZlbnQqIGV2ZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8Rm9jdXNFdmVudCo+KEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6ZXZlbnQoKSk7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgbWVkaWF0ZUFuZERpc3BhdGNoRXZlbnQoRXZlbnREaXNwYXRjaGVyKikg
Y29uc3QgT1ZFUlJJREU7Ci19OwotCi1jbGFzcyBCbHVyRXZlbnREaXNwYXRjaE1lZGlhdG9yIDog
cHVibGljIEV2ZW50RGlzcGF0Y2hNZWRpYXRvciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8Qmx1ckV2ZW50RGlzcGF0Y2hNZWRpYXRvcj4gY3JlYXRlKFBhc3NSZWZQdHI8Rm9jdXNF
dmVudD4pOwotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBCbHVyRXZlbnREaXNwYXRjaE1lZGlhdG9y
KFBhc3NSZWZQdHI8Rm9jdXNFdmVudD4pOwotICAgIEZvY3VzRXZlbnQqIGV2ZW50KCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Rm9jdXNFdmVudCo+KEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6
ZXZlbnQoKSk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbWVkaWF0ZUFuZERpc3BhdGNoRXZlbnQoRXZl
bnREaXNwYXRjaGVyKikgY29uc3QgT1ZFUlJJREU7Ci19OwotCi1jbGFzcyBGb2N1c0luRXZlbnRE
aXNwYXRjaE1lZGlhdG9yIDogcHVibGljIEV2ZW50RGlzcGF0Y2hNZWRpYXRvciB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9jdXNJbkV2ZW50RGlzcGF0Y2hNZWRpYXRvcj4gY3Jl
YXRlKFBhc3NSZWZQdHI8Rm9jdXNFdmVudD4pOwotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBGb2N1
c0luRXZlbnREaXNwYXRjaE1lZGlhdG9yKFBhc3NSZWZQdHI8Rm9jdXNFdmVudD4pOwotICAgIEZv
Y3VzRXZlbnQqIGV2ZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Rm9jdXNFdmVudCo+
KEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6ZXZlbnQoKSk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbWVk
aWF0ZUFuZERpc3BhdGNoRXZlbnQoRXZlbnREaXNwYXRjaGVyKikgY29uc3QgT1ZFUlJJREU7Ci19
OwotCi1jbGFzcyBGb2N1c091dEV2ZW50RGlzcGF0Y2hNZWRpYXRvciA6IHB1YmxpYyBFdmVudERp
c3BhdGNoTWVkaWF0b3IgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvY3VzT3V0
RXZlbnREaXNwYXRjaE1lZGlhdG9yPiBjcmVhdGUoUGFzc1JlZlB0cjxGb2N1c0V2ZW50Pik7Ci1w
cml2YXRlOgotICAgIGV4cGxpY2l0IEZvY3VzT3V0RXZlbnREaXNwYXRjaE1lZGlhdG9yKFBhc3NS
ZWZQdHI8Rm9jdXNFdmVudD4pOwotICAgIEZvY3VzRXZlbnQqIGV2ZW50KCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Rm9jdXNFdmVudCo+KEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6ZXZlbnQo
KSk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbWVkaWF0ZUFuZERpc3BhdGNoRXZlbnQoRXZlbnREaXNw
YXRjaGVyKikgY29uc3QgT1ZFUlJJREU7Ci19OwotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBGb2N1c0V2ZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAJ
KHJldmlzaW9uIDE1NzE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjUwLDYgKzI1MCwxMiBAQCBQYXNzUmVmUHRyPEV2ZW50PiBNb3Vz
ZUV2ZW50OjpjbG9uZUZvcihICiAgICAgcmV0dXJuIGNsb25lZE1vdXNlRXZlbnQucmVsZWFzZSgp
OwogfQogCit2b2lkIE1vdXNlRXZlbnQ6OnNldFJlbGF0ZWRUYXJnZXRUb1BhdGgoRXZlbnRQYXRo
JiBwYXRoKQoreworICAgIGlmIChtX3JlbGF0ZWRUYXJnZXQpCisgICAgICAgIHBhdGguc2V0UmVs
YXRlZFRhcmdldCgqbV9yZWxhdGVkVGFyZ2V0KTsKK30KKwogUGFzc1JlZlB0cjxTaW11bGF0ZWRN
b3VzZUV2ZW50PiBTaW11bGF0ZWRNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBQYXNzUmVmUHRyPEV2
ZW50PiB1bmRlcmx5aW5nRXZlbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaW11bGF0
ZWRNb3VzZUV2ZW50KGV2ZW50VHlwZSwgdmlldywgdW5kZXJseWluZ0V2ZW50KSk7CkBAIC0yOTgs
MTAgKzMwNCw4IEBAIE1vdXNlRXZlbnQqIE1vdXNlRXZlbnREaXNwYXRjaE1lZGlhdG9yOjoKIAog
Ym9vbCBNb3VzZUV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6bWVkaWF0ZUFuZERpc3BhdGNoRXZlbnQo
RXZlbnREaXNwYXRjaGVyKiBkaXNwYXRjaGVyKSBjb25zdAogewotICAgIGlmIChpc1N5bnRoZXRp
Y01vdXNlRXZlbnQoKSkgewotICAgICAgICBFdmVudFJldGFyZ2V0ZXI6OmFkanVzdEZvck1vdXNl
RXZlbnQoZGlzcGF0Y2hlci0+bm9kZSgpLCAqZXZlbnQoKSwgIGRpc3BhdGNoZXItPmV2ZW50UGF0
aCgpKTsKKyAgICBpZiAoaXNTeW50aGV0aWNNb3VzZUV2ZW50KCkpCiAgICAgICAgIHJldHVybiBk
aXNwYXRjaGVyLT5kaXNwYXRjaCgpOwotICAgIH0KIAogICAgIGlmIChpc0Rpc2FibGVkRm9ybUNv
bnRyb2woZGlzcGF0Y2hlci0+bm9kZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzA5
LDEwICszMTMsOCBAQCBib29sIE1vdXNlRXZlbnREaXNwYXRjaE1lZGlhdG9yOjptZWRpYXRlCiAg
ICAgaWYgKGV2ZW50KCktPnR5cGUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOyAv
LyBTaG91bGRuJ3QgaGFwcGVuLgogCi0gICAgQVNTRVJUKCFldmVudCgpLT50YXJnZXQoKSB8fCBl
dmVudCgpLT50YXJnZXQoKSAhPSBldmVudCgpLT5yZWxhdGVkVGFyZ2V0KCkpOwotCiAgICAgRXZl
bnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQgPSBldmVudCgpLT5yZWxhdGVkVGFyZ2V0KCk7Ci0gICAg
RXZlbnRSZXRhcmdldGVyOjphZGp1c3RGb3JNb3VzZUV2ZW50KGRpc3BhdGNoZXItPm5vZGUoKSwg
KmV2ZW50KCksICBkaXNwYXRjaGVyLT5ldmVudFBhdGgoKSk7CisgICAgQVNTRVJUKCFldmVudCgp
LT50YXJnZXQoKSB8fCBldmVudCgpLT50YXJnZXQoKSAhPSByZWxhdGVkVGFyZ2V0KTsKIAogICAg
IGRpc3BhdGNoZXItPmRpc3BhdGNoKCk7CiAgICAgYm9vbCBzd2FsbG93RXZlbnQgPSBldmVudCgp
LT5kZWZhdWx0SGFuZGxlZCgpIHx8IGV2ZW50KCktPmRlZmF1bHRQcmV2ZW50ZWQoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL01vdXNlRXZlbnQuaAkocmV2aXNpb24gMTU3MTQxKQorKysgU291cmNlL1dlYkNv
cmUvZG9tL01vdXNlRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDYgKzExOCw4IEBAIHBy
b3RlY3RlZDoKICAgICBNb3VzZUV2ZW50KCk7CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCB2b2lk
IHNldFJlbGF0ZWRUYXJnZXRUb1BhdGgoRXZlbnRQYXRoJikgT1ZFUlJJREUgRklOQUw7CisKICAg
ICB1bnNpZ25lZCBzaG9ydCBtX2J1dHRvbjsKICAgICBib29sIG1fYnV0dG9uRG93bjsKICAgICBS
ZWZQdHI8RXZlbnRUYXJnZXQ+IG1fcmVsYXRlZFRhcmdldDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJ
KHJldmlzaW9uIDE1NzE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjA2OSwxMiArMjA2OSw3IEBAIHZvaWQgTm9kZTo6aGFuZGxlTG9jYWxFdmVu
dHMoRXZlbnQqIGV2ZW4KIAogdm9pZCBOb2RlOjpkaXNwYXRjaFNjb3BlZEV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2ZW50KQogewotICAgIGRpc3BhdGNoU2NvcGVkRXZlbnREaXNwYXRjaE1lZGlh
dG9yKEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Y3JlYXRlKGV2ZW50KSk7Ci19Ci0KLXZvaWQgTm9k
ZTo6ZGlzcGF0Y2hTY29wZWRFdmVudERpc3BhdGNoTWVkaWF0b3IoUGFzc1JlZlB0cjxFdmVudERp
c3BhdGNoTWVkaWF0b3I+IGV2ZW50RGlzcGF0Y2hNZWRpYXRvcikKLXsKLSAgICBFdmVudERpc3Bh
dGNoZXI6OmRpc3BhdGNoU2NvcGVkRXZlbnQoKnRoaXMsIGV2ZW50RGlzcGF0Y2hNZWRpYXRvcik7
CisgICAgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNjb3BlZEV2ZW50KCp0aGlzLCBFdmVudERp
c3BhdGNoTWVkaWF0b3I6OmNyZWF0ZShldmVudCkpOwogfQogCiBib29sIE5vZGU6OmRpc3BhdGNo
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9u
IDE1NzE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUzMyw3ICs1MzMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQo
UGFzc1JlZlB0cjxFdmVudD4pIE9WRVJSSURFOwogCiAgICAgdm9pZCBkaXNwYXRjaFNjb3BlZEV2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKLSAgICB2b2lkIGRpc3BhdGNoU2NvcGVkRXZlbnREaXNw
YXRjaE1lZGlhdG9yKFBhc3NSZWZQdHI8RXZlbnREaXNwYXRjaE1lZGlhdG9yPik7CiAKICAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlTG9jYWxFdmVudHMoRXZlbnQqKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213748</attachid>
            <date>2013-10-08 20:49:03 -0700</date>
            <delta_ts>2013-10-08 22:20:39 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-122539-20131008204902.patch</filename>
            <type>text/plain</type>
            <size>23378</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzE1NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEzLTEwLTA4ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmFtZSBFdmVudFJldGFyZ2V0
ZXI6OmFkanVzdEZvclJlbGF0ZWRUYXJnZXQgdG8gRXZlbnRQYXRoOjpzZXRSZWxhdGVkVGFyZ2V0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI1MzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWVk
IEV2ZW50UmV0YXJnZXRlcjo6YWRqdXN0Rm9yUmVsYXRlZFRhcmdldCB0byBFdmVudFBhdGg6OnNl
dFJlbGF0ZWRUYXJnZXQgYW5kIGdvdCByaWQgb2YKKyAgICAgICAgRXZlbnREaXNwYXRjaE1lZGlh
dG9ycyBmb3IgZm9jdXMgZXZlbnRzLiBXZSBzZXQgdGhlIHJlbGF0ZWQgdGFyZ2V0IGluc2lkZSBF
dmVudERpc3BhdGNoZXIncworICAgICAgICBkaXNwYXRjaCB2aWEgRXZlbnQ6OnJlbGF0ZWRUYXJn
ZXQsIHdoaWNoIGlzIG5vdyB2aXJ0dWFsIGFuZCBvdmVycmlkZGVuIGJ5IG1vdXNlL2ZvY3VzIGV2
ZW50cy4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDogVGhlIGZvbGxvd2luZyBmdW5jdGlv
bnMgbm8gbG9uZ2VyIHVzZSBGb2N1c0V2ZW50RGlzcGF0Y2hNZWRpYXRvcnMuCisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpkaXNwYXRjaEZvY3VzSW5FdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpkaXNwYXRjaEZvY3VzT3V0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRp
c3BhdGNoQmx1ckV2ZW50KToKKworICAgICAgICAqIGRvbS9FdmVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnQ6OnJlbGF0ZWRUYXJnZXQpOiBBZGRlZCBhcyBhIHZpcnR1YWwgZnVuY3Rpb24u
CisKKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCk6IENhY2hlIEV2ZW50Ki4KKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2gpOiBDYWxsIHNldFJlbGF0ZWRUYXJn
ZXRUb1BhdGggYXQgdGhlIGJlZ2lubmluZyB0byB1cGRhdGUKKyAgICAgICAgcmVsYXRlZCB0YXJn
ZXRzIGluIHRoZSBwYXRoLgorCisgICAgICAgICogZG9tL0V2ZW50RGlzcGF0Y2hlci5oOgorCisg
ICAgICAgICogZG9tL0V2ZW50UmV0YXJnZXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dFBhdGg6OkV2ZW50UGF0aCk6IEluaXRpYWxpemUgbV9vcmlnaW4sIHVzZWQgaW4gRXZlbnRQYXRo
OjpzZXRSZWxhdGVkVGFyZ2V0LgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZXRhcmdldGVyOjph
ZGp1c3RUb3VjaExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRQYXRoOjpzZXRSZWxhdGVk
VGFyZ2V0KTogUmVuYW1lZCBmcm9tIEV2ZW50UmV0YXJnZXRlcjo6YWRqdXN0Rm9yUmVsYXRlZFRh
cmdldC4KKyAgICAgICAgRGVsZWdhdGVkIHRoZSBudWxsaXR5IGNoZWNrcyB0byBjYWxsZXJzIGJ5
IHRha2luZyByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMuCisgICAgICAgIChXZWJDb3Jl
OjpFdmVudFJldGFyZ2V0ZXI6OmNhbGN1bGF0ZUFkanVzdGVkTm9kZXMpOgorCisgICAgICAgICog
ZG9tL0V2ZW50UmV0YXJnZXRlci5oOiBSZW1vdmVkIEFkanVzdGVkTm9kZXMgdHlwZWRlZi4gSXQn
cyBqdXN0IGEgVmVjdG9yIG9mIFJlZlB0cjxOb2RlPi4KKworICAgICAgICAqIGRvbS9Gb2N1c0V2
ZW50LmNwcDogUmVtb3ZlZCBGb2N1c0V2ZW50RGlzcGF0Y2hNZWRpYXRvcnMgZm9yIGZvY3VzIGV2
ZW50cy4KKyAgICAgICAgKiBkb20vRm9jdXNFdmVudC5oOgorCisgICAgICAgICogZG9tL01vdXNl
RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6dG9FbGVtZW50KTogQ2Fj
aGUgdGhlIHJlbGF0ZWQgdGFyZ2V0IG5vdyB0aGF0IHJlbGF0ZWRUYXJnZXQoKSBpcyB2aXJ0dWFs
LgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6ZnJvbUVsZW1lbnQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnREaXNwYXRjaE1lZGlhdG9yOjptZWRpYXRlQW5kRGlz
cGF0Y2hFdmVudCk6IE5vIGxvbmdlciBzZXRzIHRoZSByZWxhdGVkCisgICAgICAgIHRhcmdldHMg
c2luY2UgdGhhdCdzIGRvbmUgaW4gRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaCBub3cuCisKKyAg
ICAgICAgKiBkb20vTW91c2VFdmVudC5oOgorCisgICAgICAgICogZG9tL05vZGUuY3BwOiBSZW1v
dmVkIG9ibm94aW91cyBOb2RlOjpkaXNwYXRjaFNjb3BlZEV2ZW50RGlzcGF0Y2hNZWRpYXRvci4K
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpc3BhdGNoU2NvcGVkRXZlbnQpOgorICAgICAgICAq
IGRvbS9Ob2RlLmg6CisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWlu
ZXJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogQ2FjaGUgdGhlIHJlbGF0ZWQKKyAgICAg
ICAgdGFyZ2V0IGluIGEgbG9jYWwgdmFyaWFibGUgbm93IHRoYXQgcmVsYXRlZFRhcmdldCgpIGlz
IHZpcnR1YWwuCisKIDIwMTMtMTAtMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBJbXByb3ZlZCBXaW5MYXVuY2hlci4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NzE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyMSwxNCArMjAyMSwxNCBAQCB2b2lkIEVs
ZW1lbnQ6OmRpc3BhdGNoRm9jdXNJbkV2ZW50KGNvbnN0CiB7CiAgICAgQVNTRVJUKCFOb0V2ZW50
RGlzcGF0Y2hBc3NlcnRpb246OmlzRXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsKICAgICBBU1NF
UlQoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5mb2N1c2luRXZlbnQgfHwgZXZlbnRUeXBlID09
IGV2ZW50TmFtZXMoKS5ET01Gb2N1c0luRXZlbnQpOwotICAgIGRpc3BhdGNoU2NvcGVkRXZlbnRE
aXNwYXRjaE1lZGlhdG9yKEZvY3VzSW5FdmVudERpc3BhdGNoTWVkaWF0b3I6OmNyZWF0ZShGb2N1
c0V2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCB0cnVlLCBmYWxzZSwgZG9jdW1lbnQoKS5kZWZhdWx0
VmlldygpLCAwLCBvbGRGb2N1c2VkRWxlbWVudCkpKTsKKyAgICBkaXNwYXRjaFNjb3BlZEV2ZW50
KEZvY3VzRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIHRydWUsIGZhbHNlLCBkb2N1bWVudCgpLmRl
ZmF1bHRWaWV3KCksIDAsIG9sZEZvY3VzZWRFbGVtZW50KSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6
ZGlzcGF0Y2hGb2N1c091dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNz
UmVmUHRyPEVsZW1lbnQ+IG5ld0ZvY3VzZWRFbGVtZW50KQogewogICAgIEFTU0VSVCghTm9FdmVu
dERpc3BhdGNoQXNzZXJ0aW9uOjppc0V2ZW50RGlzcGF0Y2hGb3JiaWRkZW4oKSk7CiAgICAgQVNT
RVJUKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZm9jdXNvdXRFdmVudCB8fCBldmVudFR5cGUg
PT0gZXZlbnROYW1lcygpLkRPTUZvY3VzT3V0RXZlbnQpOwotICAgIGRpc3BhdGNoU2NvcGVkRXZl
bnREaXNwYXRjaE1lZGlhdG9yKEZvY3VzT3V0RXZlbnREaXNwYXRjaE1lZGlhdG9yOjpjcmVhdGUo
Rm9jdXNFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgZmFsc2UsIGRvY3VtZW50KCkuZGVm
YXVsdFZpZXcoKSwgMCwgbmV3Rm9jdXNlZEVsZW1lbnQpKSk7CisgICAgZGlzcGF0Y2hTY29wZWRF
dmVudChGb2N1c0V2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCB0cnVlLCBmYWxzZSwgZG9jdW1lbnQo
KS5kZWZhdWx0VmlldygpLCAwLCBuZXdGb2N1c2VkRWxlbWVudCkpOwogfQogCiB2b2lkIEVsZW1l
bnQ6OmRpc3BhdGNoRm9jdXNFdmVudChQYXNzUmVmUHRyPEVsZW1lbnQ+IG9sZEZvY3VzZWRFbGVt
ZW50LCBGb2N1c0RpcmVjdGlvbikKQEAgLTIwMzcsNyArMjAzNyw3IEBAIHZvaWQgRWxlbWVudDo6
ZGlzcGF0Y2hGb2N1c0V2ZW50KFBhc3NSZWYKICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNo
cm9tZSgpLmNsaWVudCgpLmVsZW1lbnREaWRGb2N1cyh0aGlzKTsKIAogICAgIFJlZlB0cjxGb2N1
c0V2ZW50PiBldmVudCA9IEZvY3VzRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZm9jdXNFdmVu
dCwgZmFsc2UsIGZhbHNlLCBkb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIDAsIG9sZEZvY3VzZWRF
bGVtZW50KTsKLSAgICBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQodGhpcywgRm9jdXNF
dmVudERpc3BhdGNoTWVkaWF0b3I6OmNyZWF0ZShldmVudC5yZWxlYXNlKCkpKTsKKyAgICBFdmVu
dERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQodGhpcywgRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpj
cmVhdGUoZXZlbnQucmVsZWFzZSgpKSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hCbHVy
RXZlbnQoUGFzc1JlZlB0cjxFbGVtZW50PiBuZXdGb2N1c2VkRWxlbWVudCkKQEAgLTIwNDYsNyAr
MjA0Niw3IEBAIHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoUGFzc1JlZlAKICAgICAg
ICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVsZW1lbnREaWRCbHVyKHRo
aXMpOwogCiAgICAgUmVmUHRyPEZvY3VzRXZlbnQ+IGV2ZW50ID0gRm9jdXNFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsIGZhbHNlLCBmYWxzZSwgZG9jdW1lbnQoKS5kZWZhdWx0
VmlldygpLCAwLCBuZXdGb2N1c2VkRWxlbWVudCk7Ci0gICAgRXZlbnREaXNwYXRjaGVyOjpkaXNw
YXRjaEV2ZW50KHRoaXMsIEJsdXJFdmVudERpc3BhdGNoTWVkaWF0b3I6OmNyZWF0ZShldmVudC5y
ZWxlYXNlKCkpKTsKKyAgICBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQodGhpcywgRXZl
bnREaXNwYXRjaE1lZGlhdG9yOjpjcmVhdGUoZXZlbnQucmVsZWFzZSgpKSk7CiB9CiAKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50LmgJKHJldmlzaW9uIDE1NzE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiArMTcyLDggQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPEV2ZW50PiBjbG9uZUZvcihIVE1MSUZyYW1lRWxlbWVudCopIGNv
bnN0OwogCisgICAgdmlydHVhbCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCgpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KKwogcHJvdGVjdGVkOgogICAgIEV2ZW50KCk7CiAgICAgRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCShyZXZpc2lvbiAxNTcxNTIp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkV2ZW50Q29udGV4dC5oIgogI2luY2x1ZGUg
IkV2ZW50RGlzcGF0Y2hNZWRpYXRvci5oIgogI2luY2x1ZGUgIkV2ZW50UmV0YXJnZXRlci5oIgor
I2luY2x1ZGUgIkZvY3VzRXZlbnQuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRl
ICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgpAQCAt
NDYsOSArNDcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogYm9vbCBFdmVudERpc3BhdGNoZXI6
OmRpc3BhdGNoRXZlbnQoTm9kZSogbm9kZSwgUGFzc1JlZlB0cjxFdmVudERpc3BhdGNoTWVkaWF0
b3I+IG1lZGlhdG9yKQogewogICAgIEFTU0VSVCghTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpp
c0V2ZW50RGlzcGF0Y2hGb3JiaWRkZW4oKSk7Ci0gICAgaWYgKCFtZWRpYXRvci0+ZXZlbnQoKSkK
KyAgICBFdmVudCogZXZlbnQgPSBtZWRpYXRvci0+ZXZlbnQoKTsKKyAgICBpZiAoIWV2ZW50KQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBFdmVudERpc3BhdGNoZXIgZGlzcGF0Y2hlcihub2Rl
LCBtZWRpYXRvci0+ZXZlbnQoKSk7CisgICAgRXZlbnREaXNwYXRjaGVyIGRpc3BhdGNoZXIobm9k
ZSwgZXZlbnQpOwogICAgIHJldHVybiBtZWRpYXRvci0+bWVkaWF0ZUFuZERpc3BhdGNoRXZlbnQo
JmRpc3BhdGNoZXIpOwogfQogCkBAIC0xMDAsNiArMTAyLDkgQEAgdm9pZCBFdmVudERpc3BhdGNo
ZXI6OmRpc3BhdGNoU2ltdWxhdGVkQwogCiBib29sIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2go
KQogeworICAgIGlmIChFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCA9IG1fZXZlbnQtPnJlbGF0
ZWRUYXJnZXQoKSkKKyAgICAgICAgbV9ldmVudFBhdGguc2V0UmVsYXRlZFRhcmdldCgqcmVsYXRl
ZFRhcmdldCk7CisKICNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFtX2V2ZW50RGlzcGF0Y2hl
ZCk7CiAgICAgbV9ldmVudERpc3BhdGNoZWQgPSB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50RGlzcGF0Y2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudERpc3BhdGNoZXIuaAkocmV2aXNpb24gMTU3MTUzKQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50RGlzcGF0Y2hlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxMiArNTQsMTQgQEAgZW51
bSBFdmVudERpc3BhdGNoQ29udGludWF0aW9uIHsKIAogY2xhc3MgRXZlbnRQYXRoIHsKIHB1Ymxp
YzoKLSAgICBFdmVudFBhdGgoTm9kZSYsIEV2ZW50Jik7CisgICAgRXZlbnRQYXRoKE5vZGUmIG9y
aWdpbiwgRXZlbnQmKTsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0
aC5pc0VtcHR5KCk7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aC5z
aXplKCk7IH0KICAgICBjb25zdCBFdmVudENvbnRleHQmIGNvbnRleHRBdChzaXplX3QgaSkgY29u
c3QgeyByZXR1cm4gKm1fcGF0aFtpXTsgfQogICAgIEV2ZW50Q29udGV4dCYgY29udGV4dEF0KHNp
emVfdCBpKSB7IHJldHVybiAqbV9wYXRoW2ldOyB9CisgICAgCisgICAgdm9pZCBzZXRSZWxhdGVk
VGFyZ2V0KEV2ZW50VGFyZ2V0Jik7CiAKICAgICBib29sIGhhc0V2ZW50TGlzdGVuZXJzKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKIApAQCAtNzAsNiArNzIsNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+
LCAzMj4gbV9wYXRoOworICAgIFJlZlB0cjxOb2RlPiBtX29yaWdpbjsKIH07CiAKIGNsYXNzIEV2
ZW50RGlzcGF0Y2hlciB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRSZXRhcmdldGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRSZXRhcmdldGVyLmNw
cAkocmV2aXNpb24gMTU3MTUyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UmV0YXJnZXRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDcgQEAgc3RhdGljIE5vZGUqIG5vZGVP
ckhvc3RJZlBzZXVkb0VsZW1lbnQoTgogfQogCiBFdmVudFBhdGg6OkV2ZW50UGF0aChOb2RlJiB0
YXJnZXROb2RlLCBFdmVudCYgZXZlbnQpCisgICAgOiBtX29yaWdpbigmdGFyZ2V0Tm9kZSkKIHsK
ICAgICBib29sIGluRG9jdW1lbnQgPSB0YXJnZXROb2RlLmluRG9jdW1lbnQoKTsKICAgICBib29s
IGlzU1ZHRWxlbWVudCA9IHRhcmdldE5vZGUuaXNTVkdFbGVtZW50KCk7CkBAIC0xMDksMTYgKzEx
MCw2IEBAIEV2ZW50UGF0aDo6RXZlbnRQYXRoKE5vZGUmIHRhcmdldE5vZGUsIEUKICAgICB9CiB9
CiAKLXZvaWQgRXZlbnRSZXRhcmdldGVyOjphZGp1c3RGb3JNb3VzZUV2ZW50KE5vZGUqIG5vZGUs
IGNvbnN0IE1vdXNlRXZlbnQmIG1vdXNlRXZlbnQsIEV2ZW50UGF0aCYgZXZlbnRQYXRoKQotewot
ICAgIGFkanVzdEZvclJlbGF0ZWRUYXJnZXQobm9kZSwgbW91c2VFdmVudC5yZWxhdGVkVGFyZ2V0
KCksIGV2ZW50UGF0aCk7Ci19Ci0KLXZvaWQgRXZlbnRSZXRhcmdldGVyOjphZGp1c3RGb3JGb2N1
c0V2ZW50KE5vZGUqIG5vZGUsIGNvbnN0IEZvY3VzRXZlbnQmIGZvY3VzRXZlbnQsIEV2ZW50UGF0
aCYgZXZlbnRQYXRoKQotewotICAgIGFkanVzdEZvclJlbGF0ZWRUYXJnZXQobm9kZSwgZm9jdXNF
dmVudC5yZWxhdGVkVGFyZ2V0KCksIGV2ZW50UGF0aCk7Ci19Ci0KICNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQogdm9pZCBFdmVudFJldGFyZ2V0ZXI6OmFkanVzdEZvclRvdWNoRXZlbnQoTm9kZSog
bm9kZSwgY29uc3QgVG91Y2hFdmVudCYgdG91Y2hFdmVudCwgRXZlbnRQYXRoJiBldmVudFBhdGgp
CiB7CkBAIC0xNDgsNyArMTM5LDcgQEAgdm9pZCBFdmVudFJldGFyZ2V0ZXI6OmFkanVzdFRvdWNo
TGlzdChjbwogICAgIEFTU0VSVChldmVudFBhdGhUb3VjaExpc3RzLnNpemUoKSA9PSBldmVudFBh
dGhTaXplKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRvdWNoTGlzdC0+bGVuZ3RoKCk7
ICsraSkgewogICAgICAgICBjb25zdCBUb3VjaCYgdG91Y2ggPSAqdG91Y2hMaXN0LT5pdGVtKGkp
OwotICAgICAgICBBZGp1c3RlZE5vZGVzIGFkanVzdGVkTm9kZXM7CisgICAgICAgIFZlY3RvcjxS
ZWZQdHI8Tm9kZT4+IGFkanVzdGVkTm9kZXM7CiAgICAgICAgIGNhbGN1bGF0ZUFkanVzdGVkTm9k
ZXMobm9kZSwgdG91Y2gudGFyZ2V0KCktPnRvTm9kZSgpLCBEb2VzTm90U3RvcEF0Qm91bmRhcnks
IGNvbnN0X2Nhc3Q8RXZlbnRQYXRoJj4oZXZlbnRQYXRoKSwgYWRqdXN0ZWROb2Rlcyk7CiAgICAg
ICAgIEFTU0VSVChhZGp1c3RlZE5vZGVzLnNpemUoKSA9PSBldmVudFBhdGhTaXplKTsKICAgICAg
ICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBldmVudFBhdGhTaXplOyArK2opCkBAIC0xNTcsMjAg
KzE0OCwxNiBAQCB2b2lkIEV2ZW50UmV0YXJnZXRlcjo6YWRqdXN0VG91Y2hMaXN0KGNvCiB9CiAj
ZW5kaWYKIAotdm9pZCBFdmVudFJldGFyZ2V0ZXI6OmFkanVzdEZvclJlbGF0ZWRUYXJnZXQoY29u
c3QgTm9kZSogbm9kZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQsIEV2ZW50UGF0aCYgZXZl
bnRQYXRoKQordm9pZCBFdmVudFBhdGg6OnNldFJlbGF0ZWRUYXJnZXQoRXZlbnRUYXJnZXQmIHJl
bGF0ZWRUYXJnZXQpCiB7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm47Ci0gICAgaWYg
KCFyZWxhdGVkVGFyZ2V0KQotICAgICAgICByZXR1cm47Ci0gICAgTm9kZSogcmVsYXRlZE5vZGUg
PSByZWxhdGVkVGFyZ2V0LT50b05vZGUoKTsKKyAgICBOb2RlKiByZWxhdGVkTm9kZSA9IHJlbGF0
ZWRUYXJnZXQudG9Ob2RlKCk7CiAgICAgaWYgKCFyZWxhdGVkTm9kZSkKICAgICAgICAgcmV0dXJu
OwotICAgIEFkanVzdGVkTm9kZXMgYWRqdXN0ZWROb2RlczsKLSAgICBjYWxjdWxhdGVBZGp1c3Rl
ZE5vZGVzKG5vZGUsIHJlbGF0ZWROb2RlLCBTdG9wQXRCb3VuZGFyeUlmTmVlZGVkLCBldmVudFBh
dGgsIGFkanVzdGVkTm9kZXMpOwotICAgIEFTU0VSVChhZGp1c3RlZE5vZGVzLnNpemUoKSA8PSBl
dmVudFBhdGguc2l6ZSgpKTsKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+PiBhZGp1c3RlZE5vZGVz
OworICAgIEV2ZW50UmV0YXJnZXRlcjo6Y2FsY3VsYXRlQWRqdXN0ZWROb2RlcyhtX29yaWdpbi5n
ZXQoKSwgcmVsYXRlZE5vZGUsIEV2ZW50UmV0YXJnZXRlcjo6U3RvcEF0Qm91bmRhcnlJZk5lZWRl
ZCwgKnRoaXMsIGFkanVzdGVkTm9kZXMpOworICAgIEFTU0VSVChhZGp1c3RlZE5vZGVzLnNpemUo
KSA8PSBtX3BhdGguc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFkanVzdGVk
Tm9kZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHRvTW91c2VPckZvY3VzRXZlbnRDb250ZXh0KGV2
ZW50UGF0aC5jb250ZXh0QXQoaSkpLnNldFJlbGF0ZWRUYXJnZXQoYWRqdXN0ZWROb2Rlc1tpXSk7
CisgICAgICAgIHRvTW91c2VPckZvY3VzRXZlbnRDb250ZXh0KCptX3BhdGhbaV0pLnNldFJlbGF0
ZWRUYXJnZXQoYWRqdXN0ZWROb2Rlc1tpXSk7CiB9CiAKIHN0YXRpYyB2b2lkIGJ1aWxkUmVsYXRl
ZE5vZGVNYXAoY29uc3QgTm9kZSogcmVsYXRlZE5vZGUsIEhhc2hNYXA8VHJlZVNjb3BlKiwgTm9k
ZSo+JiByZWxhdGVkTm9kZU1hcCkKQEAgLTIwOSw3ICsxOTYsNyBAQCBzdGF0aWMgTm9kZSogYWRk
UmVsYXRlZE5vZGVGb3JVbm1hcGVkVHJlCiAgICAgcmV0dXJuIHJlbGF0ZWROb2RlOwogfQogCi12
b2lkIEV2ZW50UmV0YXJnZXRlcjo6Y2FsY3VsYXRlQWRqdXN0ZWROb2Rlcyhjb25zdCBOb2RlKiBu
b2RlLCBjb25zdCBOb2RlKiByZWxhdGVkTm9kZSwgRXZlbnRXaXRoUmVsYXRlZFRhcmdldERpc3Bh
dGNoQmVoYXZpb3IgZXZlbnRXaXRoUmVsYXRlZFRhcmdldERpc3BhdGNoQmVoYXZpb3IsIEV2ZW50
UGF0aCYgZXZlbnRQYXRoLCBBZGp1c3RlZE5vZGVzJiBhZGp1c3RlZE5vZGVzKQordm9pZCBFdmVu
dFJldGFyZ2V0ZXI6OmNhbGN1bGF0ZUFkanVzdGVkTm9kZXMoY29uc3QgTm9kZSogbm9kZSwgY29u
c3QgTm9kZSogcmVsYXRlZE5vZGUsIEV2ZW50V2l0aFJlbGF0ZWRUYXJnZXREaXNwYXRjaEJlaGF2
aW9yIGV2ZW50V2l0aFJlbGF0ZWRUYXJnZXREaXNwYXRjaEJlaGF2aW9yLCBFdmVudFBhdGgmIGV2
ZW50UGF0aCwgVmVjdG9yPFJlZlB0cjxOb2RlPj4mIGFkanVzdGVkTm9kZXMpCiB7CiAgICAgSGFz
aE1hcDxUcmVlU2NvcGUqLCBOb2RlKj4gcmVsYXRlZE5vZGVNYXA7CiAgICAgYnVpbGRSZWxhdGVk
Tm9kZU1hcChyZWxhdGVkTm9kZSwgcmVsYXRlZE5vZGVNYXApOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50UmV0YXJnZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFJldGFyZ2V0ZXIuaAkocmV2aXNpb24gMTU3MTUyKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50UmV0YXJnZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw4ICs0OCw2IEBAIGNs
YXNzIFRyZWVTY29wZTsKIAogY2xhc3MgRXZlbnRSZXRhcmdldGVyIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgdm9pZCBhZGp1c3RGb3JNb3VzZUV2ZW50KE5vZGUqLCBjb25zdCBNb3VzZUV2ZW50Jiwg
RXZlbnRQYXRoJik7Ci0gICAgc3RhdGljIHZvaWQgYWRqdXN0Rm9yRm9jdXNFdmVudChOb2RlKiwg
Y29uc3QgRm9jdXNFdmVudCYsIEV2ZW50UGF0aCYpOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFRvdWNoTGlzdD4gPiBFdmVudFBhdGhUb3VjaExp
c3RzOwogICAgIHN0YXRpYyB2b2lkIGFkanVzdEZvclRvdWNoRXZlbnQoTm9kZSosIGNvbnN0IFRv
dWNoRXZlbnQmLCBFdmVudFBhdGgmKTsKQEAgLTU3LDE2ICs1NSwxNiBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEV2ZW50VGFyZ2V0JiBldmVudFRhcmdldFJlc3BlY3RpbmdUYXJnZXRSdWxlcyhOb2Rl
JiByZWZlcmVuY2VOb2RlKTsKIAogcHJpdmF0ZToKLSAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8
Tm9kZT4gPiBBZGp1c3RlZE5vZGVzOwogICAgIGVudW0gRXZlbnRXaXRoUmVsYXRlZFRhcmdldERp
c3BhdGNoQmVoYXZpb3IgewogICAgICAgICBTdG9wQXRCb3VuZGFyeUlmTmVlZGVkLAogICAgICAg
ICBEb2VzTm90U3RvcEF0Qm91bmRhcnkKICAgICB9OwogICAgIHN0YXRpYyB2b2lkIGFkanVzdEZv
clJlbGF0ZWRUYXJnZXQoY29uc3QgTm9kZSosIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0LCBF
dmVudFBhdGgmKTsKLSAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVBZGp1c3RlZE5vZGVzKGNvbnN0
IE5vZGUqLCBjb25zdCBOb2RlKiByZWxhdGVkTm9kZSwgRXZlbnRXaXRoUmVsYXRlZFRhcmdldERp
c3BhdGNoQmVoYXZpb3IsIEV2ZW50UGF0aCYsIEFkanVzdGVkTm9kZXMmKTsKKyAgICBzdGF0aWMg
dm9pZCBjYWxjdWxhdGVBZGp1c3RlZE5vZGVzKGNvbnN0IE5vZGUqLCBjb25zdCBOb2RlKiByZWxh
dGVkTm9kZSwgRXZlbnRXaXRoUmVsYXRlZFRhcmdldERpc3BhdGNoQmVoYXZpb3IsIEV2ZW50UGF0
aCYsIFZlY3RvcjxSZWZQdHI8Tm9kZT4+JiBhZGp1c3RlZE5vZGVzKTsKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogICAgIHN0YXRpYyB2b2lkIGFkanVzdFRvdWNoTGlzdChjb25zdCBOb2RlKiwg
Y29uc3QgVG91Y2hMaXN0KiwgY29uc3QgRXZlbnRQYXRoJiwgRXZlbnRQYXRoVG91Y2hMaXN0cyYp
OwogI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIEV2ZW50UGF0aDsKIH07CiAKIGlubGluZSBFdmVu
dFRhcmdldCYgRXZlbnRSZXRhcmdldGVyOjpldmVudFRhcmdldFJlc3BlY3RpbmdUYXJnZXRSdWxl
cyhOb2RlJiByZWZlcmVuY2VOb2RlKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcAko
cmV2aXNpb24gMTU3MTQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NSw2OCArNjUsNCBAQCBGb2N1c0V2ZW50OjpGb2N1c0V2ZW50KGNv
bnN0IEF0b21pY1N0cmluCiB7CiB9CiAKLVBhc3NSZWZQdHI8Rm9jdXNFdmVudERpc3BhdGNoTWVk
aWF0b3I+IEZvY3VzRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpjcmVhdGUoUGFzc1JlZlB0cjxGb2N1
c0V2ZW50PiBmb2N1c0V2ZW50KQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRm9jdXNFdmVu
dERpc3BhdGNoTWVkaWF0b3IoZm9jdXNFdmVudCkpOwotfQotCi1Gb2N1c0V2ZW50RGlzcGF0Y2hN
ZWRpYXRvcjo6Rm9jdXNFdmVudERpc3BhdGNoTWVkaWF0b3IoUGFzc1JlZlB0cjxGb2N1c0V2ZW50
PiBmb2N1c0V2ZW50KQotICAgIDogRXZlbnREaXNwYXRjaE1lZGlhdG9yKGZvY3VzRXZlbnQpCi17
Ci19Ci0KLWJvb2wgRm9jdXNFdmVudERpc3BhdGNoTWVkaWF0b3I6Om1lZGlhdGVBbmREaXNwYXRj
aEV2ZW50KEV2ZW50RGlzcGF0Y2hlciogZGlzcGF0Y2hlcikgY29uc3QKLXsKLSAgICBFdmVudFJl
dGFyZ2V0ZXI6OmFkanVzdEZvckZvY3VzRXZlbnQoZGlzcGF0Y2hlci0+bm9kZSgpLCAqZXZlbnQo
KSwgZGlzcGF0Y2hlci0+ZXZlbnRQYXRoKCkpOwotICAgIHJldHVybiBFdmVudERpc3BhdGNoTWVk
aWF0b3I6Om1lZGlhdGVBbmREaXNwYXRjaEV2ZW50KGRpc3BhdGNoZXIpOwotfQotCi1QYXNzUmVm
UHRyPEJsdXJFdmVudERpc3BhdGNoTWVkaWF0b3I+IEJsdXJFdmVudERpc3BhdGNoTWVkaWF0b3I6
OmNyZWF0ZShQYXNzUmVmUHRyPEZvY3VzRXZlbnQ+IGZvY3VzRXZlbnQpCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBCbHVyRXZlbnREaXNwYXRjaE1lZGlhdG9yKGZvY3VzRXZlbnQpKTsKLX0K
LQotQmx1ckV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Qmx1ckV2ZW50RGlzcGF0Y2hNZWRpYXRvcihQ
YXNzUmVmUHRyPEZvY3VzRXZlbnQ+IGZvY3VzRXZlbnQpCi0gICAgOiBFdmVudERpc3BhdGNoTWVk
aWF0b3IoZm9jdXNFdmVudCkKLXsKLX0KLQotYm9vbCBCbHVyRXZlbnREaXNwYXRjaE1lZGlhdG9y
OjptZWRpYXRlQW5kRGlzcGF0Y2hFdmVudChFdmVudERpc3BhdGNoZXIqIGRpc3BhdGNoZXIpIGNv
bnN0Ci17Ci0gICAgRXZlbnRSZXRhcmdldGVyOjphZGp1c3RGb3JGb2N1c0V2ZW50KGRpc3BhdGNo
ZXItPm5vZGUoKSwgKmV2ZW50KCksIGRpc3BhdGNoZXItPmV2ZW50UGF0aCgpKTsKLSAgICByZXR1
cm4gRXZlbnREaXNwYXRjaE1lZGlhdG9yOjptZWRpYXRlQW5kRGlzcGF0Y2hFdmVudChkaXNwYXRj
aGVyKTsKLX0KLQotUGFzc1JlZlB0cjxGb2N1c0luRXZlbnREaXNwYXRjaE1lZGlhdG9yPiBGb2N1
c0luRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpjcmVhdGUoUGFzc1JlZlB0cjxGb2N1c0V2ZW50PiBm
b2N1c0V2ZW50KQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRm9jdXNJbkV2ZW50RGlzcGF0
Y2hNZWRpYXRvcihmb2N1c0V2ZW50KSk7Ci19Ci0KLUZvY3VzSW5FdmVudERpc3BhdGNoTWVkaWF0
b3I6OkZvY3VzSW5FdmVudERpc3BhdGNoTWVkaWF0b3IoUGFzc1JlZlB0cjxGb2N1c0V2ZW50PiBm
b2N1c0V2ZW50KQotICAgIDogRXZlbnREaXNwYXRjaE1lZGlhdG9yKGZvY3VzRXZlbnQpCi17Ci19
Ci0KLWJvb2wgRm9jdXNJbkV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6bWVkaWF0ZUFuZERpc3BhdGNo
RXZlbnQoRXZlbnREaXNwYXRjaGVyKiBkaXNwYXRjaGVyKSBjb25zdAotewotICAgIEV2ZW50UmV0
YXJnZXRlcjo6YWRqdXN0Rm9yRm9jdXNFdmVudChkaXNwYXRjaGVyLT5ub2RlKCksICpldmVudCgp
LCBkaXNwYXRjaGVyLT5ldmVudFBhdGgoKSk7Ci0gICAgcmV0dXJuIEV2ZW50RGlzcGF0Y2hNZWRp
YXRvcjo6bWVkaWF0ZUFuZERpc3BhdGNoRXZlbnQoZGlzcGF0Y2hlcik7Ci19Ci0KLVBhc3NSZWZQ
dHI8Rm9jdXNPdXRFdmVudERpc3BhdGNoTWVkaWF0b3I+IEZvY3VzT3V0RXZlbnREaXNwYXRjaE1l
ZGlhdG9yOjpjcmVhdGUoUGFzc1JlZlB0cjxGb2N1c0V2ZW50PiBmb2N1c0V2ZW50KQotewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgRm9jdXNPdXRFdmVudERpc3BhdGNoTWVkaWF0b3IoZm9jdXNF
dmVudCkpOwotfQotCi1Gb2N1c091dEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Rm9jdXNPdXRFdmVu
dERpc3BhdGNoTWVkaWF0b3IoUGFzc1JlZlB0cjxGb2N1c0V2ZW50PiBmb2N1c0V2ZW50KQotICAg
IDogRXZlbnREaXNwYXRjaE1lZGlhdG9yKGZvY3VzRXZlbnQpCi17Ci19Ci0KLWJvb2wgRm9jdXNP
dXRFdmVudERpc3BhdGNoTWVkaWF0b3I6Om1lZGlhdGVBbmREaXNwYXRjaEV2ZW50KEV2ZW50RGlz
cGF0Y2hlciogZGlzcGF0Y2hlcikgY29uc3QKLXsKLSAgICBFdmVudFJldGFyZ2V0ZXI6OmFkanVz
dEZvckZvY3VzRXZlbnQoZGlzcGF0Y2hlci0+bm9kZSgpLCAqZXZlbnQoKSwgZGlzcGF0Y2hlci0+
ZXZlbnRQYXRoKCkpOwotICAgIHJldHVybiBFdmVudERpc3BhdGNoTWVkaWF0b3I6Om1lZGlhdGVB
bmREaXNwYXRjaEV2ZW50KGRpc3BhdGNoZXIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmgJKHJldmlzaW9uIDE1NzE0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZvY3VzRXZlbnQodHlwZSwg
aW5pdGlhbGl6ZXIpKTsKICAgICB9CiAKLSAgICBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVsYXRlZFRhcmdldC5nZXQoKTsgfQorICAgIHZpcnR1YWwgRXZl
bnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBt
X3JlbGF0ZWRUYXJnZXQuZ2V0KCk7IH0KICAgICB2b2lkIHNldFJlbGF0ZWRUYXJnZXQoUGFzc1Jl
ZlB0cjxFdmVudFRhcmdldD4gcmVsYXRlZFRhcmdldCkgeyBtX3JlbGF0ZWRUYXJnZXQgPSByZWxh
dGVkVGFyZ2V0OyB9CiAKICAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNl
KCkgY29uc3Q7CkBAIC03Niw0MiArNzYsNiBAQCBpbmxpbmUgRm9jdXNFdmVudCogdG9Gb2N1c0V2
ZW50KEV2ZW50KiBlCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZvY3VzRXZlbnQqPihldmVudCk7
CiB9CiAKLWNsYXNzIEZvY3VzRXZlbnREaXNwYXRjaE1lZGlhdG9yIDogcHVibGljIEV2ZW50RGlz
cGF0Y2hNZWRpYXRvciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9jdXNFdmVu
dERpc3BhdGNoTWVkaWF0b3I+IGNyZWF0ZShQYXNzUmVmUHRyPEZvY3VzRXZlbnQ+KTsKLXByaXZh
dGU6Ci0gICAgZXhwbGljaXQgRm9jdXNFdmVudERpc3BhdGNoTWVkaWF0b3IoUGFzc1JlZlB0cjxG
b2N1c0V2ZW50Pik7Ci0gICAgRm9jdXNFdmVudCogZXZlbnQoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxGb2N1c0V2ZW50Kj4oRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpldmVudCgpKTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBtZWRpYXRlQW5kRGlzcGF0Y2hFdmVudChFdmVudERpc3BhdGNoZXIq
KSBjb25zdCBPVkVSUklERTsKLX07Ci0KLWNsYXNzIEJsdXJFdmVudERpc3BhdGNoTWVkaWF0b3Ig
OiBwdWJsaWMgRXZlbnREaXNwYXRjaE1lZGlhdG9yIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxCbHVyRXZlbnREaXNwYXRjaE1lZGlhdG9yPiBjcmVhdGUoUGFzc1JlZlB0cjxGb2N1
c0V2ZW50Pik7Ci1wcml2YXRlOgotICAgIGV4cGxpY2l0IEJsdXJFdmVudERpc3BhdGNoTWVkaWF0
b3IoUGFzc1JlZlB0cjxGb2N1c0V2ZW50Pik7Ci0gICAgRm9jdXNFdmVudCogZXZlbnQoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxGb2N1c0V2ZW50Kj4oRXZlbnREaXNwYXRjaE1lZGlhdG9y
OjpldmVudCgpKTsgfQotICAgIHZpcnR1YWwgYm9vbCBtZWRpYXRlQW5kRGlzcGF0Y2hFdmVudChF
dmVudERpc3BhdGNoZXIqKSBjb25zdCBPVkVSUklERTsKLX07Ci0KLWNsYXNzIEZvY3VzSW5FdmVu
dERpc3BhdGNoTWVkaWF0b3IgOiBwdWJsaWMgRXZlbnREaXNwYXRjaE1lZGlhdG9yIHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb2N1c0luRXZlbnREaXNwYXRjaE1lZGlhdG9yPiBj
cmVhdGUoUGFzc1JlZlB0cjxGb2N1c0V2ZW50Pik7Ci1wcml2YXRlOgotICAgIGV4cGxpY2l0IEZv
Y3VzSW5FdmVudERpc3BhdGNoTWVkaWF0b3IoUGFzc1JlZlB0cjxGb2N1c0V2ZW50Pik7Ci0gICAg
Rm9jdXNFdmVudCogZXZlbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxGb2N1c0V2ZW50
Kj4oRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpldmVudCgpKTsgfQotICAgIHZpcnR1YWwgYm9vbCBt
ZWRpYXRlQW5kRGlzcGF0Y2hFdmVudChFdmVudERpc3BhdGNoZXIqKSBjb25zdCBPVkVSUklERTsK
LX07Ci0KLWNsYXNzIEZvY3VzT3V0RXZlbnREaXNwYXRjaE1lZGlhdG9yIDogcHVibGljIEV2ZW50
RGlzcGF0Y2hNZWRpYXRvciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9jdXNP
dXRFdmVudERpc3BhdGNoTWVkaWF0b3I+IGNyZWF0ZShQYXNzUmVmUHRyPEZvY3VzRXZlbnQ+KTsK
LXByaXZhdGU6Ci0gICAgZXhwbGljaXQgRm9jdXNPdXRFdmVudERpc3BhdGNoTWVkaWF0b3IoUGFz
c1JlZlB0cjxGb2N1c0V2ZW50Pik7Ci0gICAgRm9jdXNFdmVudCogZXZlbnQoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxGb2N1c0V2ZW50Kj4oRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpldmVu
dCgpKTsgfQotICAgIHZpcnR1YWwgYm9vbCBtZWRpYXRlQW5kRGlzcGF0Y2hFdmVudChFdmVudERp
c3BhdGNoZXIqKSBjb25zdCBPVkVSUklERTsKLX07Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEZvY3VzRXZlbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01vdXNl
RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNw
cAkocmV2aXNpb24gMTU3MTQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsMTcgKzIwNSwyMSBAQCBpbnQgTW91c2VFdmVudDo6d2hp
Y2goKSBjb25zdAogTm9kZSogTW91c2VFdmVudDo6dG9FbGVtZW50KCkgY29uc3QKIHsKICAgICAv
LyBNU0lFIGV4dGVuc2lvbiAtICJ0aGUgb2JqZWN0IHRvd2FyZCB3aGljaCB0aGUgdXNlciBpcyBt
b3ZpbmcgdGhlIG1vdXNlIHBvaW50ZXIiCi0gICAgaWYgKHR5cGUoKSA9PSBldmVudE5hbWVzKCku
bW91c2VvdXRFdmVudCB8fCB0eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbGVhdmVFdmVudCkK
LSAgICAgICAgcmV0dXJuIHJlbGF0ZWRUYXJnZXQoKSA/IHJlbGF0ZWRUYXJnZXQoKS0+dG9Ob2Rl
KCkgOiAwOwotICAgIAorICAgIGlmICh0eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3V0RXZl
bnQgfHwgdHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWxlYXZlRXZlbnQpIHsKKyAgICAgICAg
RXZlbnRUYXJnZXQqIHRhcmdldCA9IHJlbGF0ZWRUYXJnZXQoKTsKKyAgICAgICAgcmV0dXJuIHRh
cmdldCA/IHRhcmdldC0+dG9Ob2RlKCkgOiAwOworICAgIH0KKwogICAgIHJldHVybiB0YXJnZXQo
KSA/IHRhcmdldCgpLT50b05vZGUoKSA6IDA7CiB9CiAKIE5vZGUqIE1vdXNlRXZlbnQ6OmZyb21F
bGVtZW50KCkgY29uc3QKIHsKICAgICAvLyBNU0lFIGV4dGVuc2lvbiAtICJvYmplY3QgZnJvbSB3
aGljaCBhY3RpdmF0aW9uIG9yIHRoZSBtb3VzZSBwb2ludGVyIGlzIGV4aXRpbmcgZHVyaW5nIHRo
ZSBldmVudCIgKGh1aD8pCi0gICAgaWYgKHR5cGUoKSAhPSBldmVudE5hbWVzKCkubW91c2VvdXRF
dmVudCAmJiB0eXBlKCkgIT0gZXZlbnROYW1lcygpLm1vdXNlbGVhdmVFdmVudCkKLSAgICAgICAg
cmV0dXJuIHJlbGF0ZWRUYXJnZXQoKSA/IHJlbGF0ZWRUYXJnZXQoKS0+dG9Ob2RlKCkgOiAwOwor
ICAgIGlmICh0eXBlKCkgIT0gZXZlbnROYW1lcygpLm1vdXNlb3V0RXZlbnQgJiYgdHlwZSgpICE9
IGV2ZW50TmFtZXMoKS5tb3VzZWxlYXZlRXZlbnQpIHsKKyAgICAgICAgRXZlbnRUYXJnZXQqIHRh
cmdldCA9IHJlbGF0ZWRUYXJnZXQoKTsKKyAgICAgICAgcmV0dXJuIHRhcmdldCA/IHRhcmdldC0+
dG9Ob2RlKCkgOiAwOworICAgIH0KICAgICAKICAgICByZXR1cm4gdGFyZ2V0KCkgPyB0YXJnZXQo
KS0+dG9Ob2RlKCkgOiAwOwogfQpAQCAtMjk4LDEwICszMDIsOCBAQCBNb3VzZUV2ZW50KiBNb3Vz
ZUV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6CiAKIGJvb2wgTW91c2VFdmVudERpc3BhdGNoTWVkaWF0
b3I6Om1lZGlhdGVBbmREaXNwYXRjaEV2ZW50KEV2ZW50RGlzcGF0Y2hlciogZGlzcGF0Y2hlcikg
Y29uc3QKIHsKLSAgICBpZiAoaXNTeW50aGV0aWNNb3VzZUV2ZW50KCkpIHsKLSAgICAgICAgRXZl
bnRSZXRhcmdldGVyOjphZGp1c3RGb3JNb3VzZUV2ZW50KGRpc3BhdGNoZXItPm5vZGUoKSwgKmV2
ZW50KCksICBkaXNwYXRjaGVyLT5ldmVudFBhdGgoKSk7CisgICAgaWYgKGlzU3ludGhldGljTW91
c2VFdmVudCgpKQogICAgICAgICByZXR1cm4gZGlzcGF0Y2hlci0+ZGlzcGF0Y2goKTsKLSAgICB9
CiAKICAgICBpZiAoaXNEaXNhYmxlZEZvcm1Db250cm9sKGRpc3BhdGNoZXItPm5vZGUoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMwOSwxMCArMzExLDggQEAgYm9vbCBNb3VzZUV2ZW50
RGlzcGF0Y2hNZWRpYXRvcjo6bWVkaWF0ZQogICAgIGlmIChldmVudCgpLT50eXBlKCkuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gU2hvdWxkbid0IGhhcHBlbi4KIAotICAgIEFT
U0VSVCghZXZlbnQoKS0+dGFyZ2V0KCkgfHwgZXZlbnQoKS0+dGFyZ2V0KCkgIT0gZXZlbnQoKS0+
cmVsYXRlZFRhcmdldCgpKTsKLQogICAgIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0ID0gZXZl
bnQoKS0+cmVsYXRlZFRhcmdldCgpOwotICAgIEV2ZW50UmV0YXJnZXRlcjo6YWRqdXN0Rm9yTW91
c2VFdmVudChkaXNwYXRjaGVyLT5ub2RlKCksICpldmVudCgpLCAgZGlzcGF0Y2hlci0+ZXZlbnRQ
YXRoKCkpOworICAgIEFTU0VSVCghZXZlbnQoKS0+dGFyZ2V0KCkgfHwgZXZlbnQoKS0+dGFyZ2V0
KCkgIT0gcmVsYXRlZFRhcmdldCk7CiAKICAgICBkaXNwYXRjaGVyLT5kaXNwYXRjaCgpOwogICAg
IGJvb2wgc3dhbGxvd0V2ZW50ID0gZXZlbnQoKS0+ZGVmYXVsdEhhbmRsZWQoKSB8fCBldmVudCgp
LT5kZWZhdWx0UHJldmVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgJKHJldmlz
aW9uIDE1NzE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIC8vIGJ1dCB3ZSB3aWxsIG1hdGNo
IHRoZSBzdGFuZGFyZCBET00uCiAgICAgdW5zaWduZWQgc2hvcnQgYnV0dG9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9idXR0b247IH0KICAgICBib29sIGJ1dHRvbkRvd24oKSBjb25zdCB7IHJldHVybiBt
X2J1dHRvbkRvd247IH0KLSAgICBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVsYXRlZFRhcmdldC5nZXQoKTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXQq
IHJlbGF0ZWRUYXJnZXQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBtX3JlbGF0ZWRU
YXJnZXQuZ2V0KCk7IH0KICAgICB2b2lkIHNldFJlbGF0ZWRUYXJnZXQoUGFzc1JlZlB0cjxFdmVu
dFRhcmdldD4gcmVsYXRlZFRhcmdldCkgeyBtX3JlbGF0ZWRUYXJnZXQgPSByZWxhdGVkVGFyZ2V0
OyB9CiAKICAgICBDbGlwYm9hcmQqIGNsaXBib2FyZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcGJv
YXJkLmdldCgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiAxNTcxNDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNjksMTIgKzIw
NjksNyBAQCB2b2lkIE5vZGU6OmhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBldmVuCiAKIHZvaWQg
Tm9kZTo6ZGlzcGF0Y2hTY29wZWRFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKLSAg
ICBkaXNwYXRjaFNjb3BlZEV2ZW50RGlzcGF0Y2hNZWRpYXRvcihFdmVudERpc3BhdGNoTWVkaWF0
b3I6OmNyZWF0ZShldmVudCkpOwotfQotCi12b2lkIE5vZGU6OmRpc3BhdGNoU2NvcGVkRXZlbnRE
aXNwYXRjaE1lZGlhdG9yKFBhc3NSZWZQdHI8RXZlbnREaXNwYXRjaE1lZGlhdG9yPiBldmVudERp
c3BhdGNoTWVkaWF0b3IpCi17Ci0gICAgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNjb3BlZEV2
ZW50KCp0aGlzLCBldmVudERpc3BhdGNoTWVkaWF0b3IpOworICAgIEV2ZW50RGlzcGF0Y2hlcjo6
ZGlzcGF0Y2hTY29wZWRFdmVudCgqdGhpcywgRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpjcmVhdGUo
ZXZlbnQpKTsKIH0KIAogYm9vbCBOb2RlOjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+
IGV2ZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiAxNTcxNDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MzMsNyArNTMzLDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KSBPVkVS
UklERTsKIAogICAgIHZvaWQgZGlzcGF0Y2hTY29wZWRFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7
Ci0gICAgdm9pZCBkaXNwYXRjaFNjb3BlZEV2ZW50RGlzcGF0Y2hNZWRpYXRvcihQYXNzUmVmUHRy
PEV2ZW50RGlzcGF0Y2hNZWRpYXRvcj4pOwogCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUxvY2Fs
RXZlbnRzKEV2ZW50Kik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbEVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDE1NzE0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzY4LDEwICszNjgsMTEgQEAgdm9pZCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJD
b250YWluZXJFbAogCiAgICAgLy8gUG9vciBtYW4ncyBtb3VzZWxlYXZlIGV2ZW50IGRldGVjdGlv
bi4KICAgICBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+
KGV2ZW50KTsKLSAgICBpZiAoIW1vdXNlRXZlbnQtPnJlbGF0ZWRUYXJnZXQoKSB8fCAhbW91c2VF
dmVudC0+cmVsYXRlZFRhcmdldCgpLT50b05vZGUoKSkKKyAgICBFdmVudFRhcmdldCogcmVsYXRl
ZFRhcmdldCA9IG1vdXNlRXZlbnQtPnJlbGF0ZWRUYXJnZXQoKTsKKyAgICBpZiAoIXJlbGF0ZWRU
YXJnZXQgfHwgIXJlbGF0ZWRUYXJnZXQtPnRvTm9kZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAodGhpcy0+Y29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00obW91c2VFdmVudC0+cmVsYXRl
ZFRhcmdldCgpLT50b05vZGUoKSkpCisgICAgaWYgKHRoaXMtPmNvbnRhaW5zSW5jbHVkaW5nU2hh
ZG93RE9NKHJlbGF0ZWRUYXJnZXQtPnRvTm9kZSgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aGlkZSgpOwo=
</data>
<flag name="review"
          id="236153"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>