<?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>130954</bug_id>
          
          <creation_ts>2014-03-30 20:39:29 -0700</creation_ts>
          <short_desc>CSS JIT: compile the first-child pseudo class</short_desc>
          <delta_ts>2014-03-31 15:19:52 -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="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>995733</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-03-30 20:39:29 -0700</bug_when>
    <thetext>CSS JIT: compile the first-child pseudo class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995734</commentid>
    <comment_count>1</comment_count>
      <attachid>228142</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-03-30 20:53:28 -0700</bug_when>
    <thetext>Created attachment 228142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995947</commentid>
    <comment_count>2</comment_count>
      <attachid>228142</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-03-31 12:44:03 -0700</bug_when>
    <thetext>Comment on attachment 228142
Patch

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

r=me

&gt; Source/WebCore/cssjit/SelectorCompiler.cpp:1475
&gt; +        // FIXME: We should look into doing something smart in MacroAssembler instead.

You don&apos;t say.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996021</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-03-31 15:19:52 -0700</bug_when>
    <thetext>Committed r166537: &lt;http://trac.webkit.org/changeset/166537&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228142</attachid>
            <date>2014-03-30 20:53:28 -0700</date>
            <delta_ts>2014-03-31 12:44:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130954-20140330205307.patch</filename>
            <type>text/plain</type>
            <size>23346</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2NDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZiZDBiZjVkOTU1OTRj
NjdjMjNmYmUzMzYwNzBkYTAwODZhOWM4My4uMDQ1NWMyNTkxZTNiNmU2YzZlMGNiNzdiMjc4ZDEx
OWZlOTcyMDgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU3IEBACiAyMDE0LTAzLTMwICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAorICAgICAgICBDU1MgSklUOiBj
b21waWxlIHRoZSBmaXJzdC1jaGlsZCBwc2V1ZG8gY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDk1NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hp
bmdSdWxlcyk6CisgICAgICAgIFRoZSBjb21waWxlciB1c2UgdGhlIGNvbnRleHQncyBzdHlsZSBk
aXJlY3RseSB3aGVuIHJlc29sdmluZyBzdHlsZS4gQW4gZXJyb3IgaW50cm9kdWNlZAorICAgICAg
ICBpbiB0aGUgcnVsZSBjb2xsZWN0b3Igd291bGQgY2F1c2UgYSBjcmFzaCBpbiB0aGUgY29tcGls
ZWQgY29kZSB3aGljaCB3b3VsZCBiZSBoYXJkIHRvIGRlYnVnLgorICAgICAgICBBZGQgYW4gYXNz
ZXJ0aW9uIGVhcmx5IGluIHRoZSBzdGFjayB0byBjYXRjaCBlcnJvcnMgd2hlcmUgaXQgaXMgZWFz
aWVyIHRvIGRlYnVnIHRoZW0uCisKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpTdGF0ZTo6aW5pdEZvclN0eWxlUmVzb2x2
ZSk6CisgICAgICAgICogY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0b3JDb21waWxlcjo6YWRkUHNldWRvVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6OlNlbGVjdG9yQ29kZUdl
bmVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNv
ZGVHZW5lcmF0b3I6OmdlbmVyYXRlV2Fsa1RvUHJldmlvdXNBZGphY2VudEVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZVdhbGtUb1ByZXZpb3VzQWRqYWNlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZURpcmVjdEFkamFjZW50
VHJlZVdhbGtlcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3Rv
ckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlSW5kaXJlY3RBZGphY2VudFRyZWVXYWxrZXIpOgorICAg
ICAgICBSZWZhY3RvciB0aG9zZSB0byBiZSBhYmxlIHRvIHJldXNlIHRoZSBjb2RlIGdldHRpbmcg
YSBzaWJsaW5nIGVsZW1lbnQgcHJlY2VkaW5nIHRoZSBjdXJyZW50IGVsZW1lbnQuCisKKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6anVt
cElmTm90UmVzb2x2aW5nU3R5bGUpOgorICAgICAgICBFeHRyYWN0IHRoZSBjb2RlIGNoZWNraW5n
IHRoZSBjdXJyZW50IG1vZGUgZnJvbSBTZWxlY3RvckNvZGVHZW5lcmF0b3I6Om1hcmtQYXJlbnRF
bGVtZW50SWZSZXNvbHZpbmdTdHlsZSgpCisgICAgICAgIGluIGEgc2VwYXJhdGUgZnVuY3Rpb24u
IFRoaXMgd2lsbCBiZSB1c2VmdWwgZm9yIGFsbCB0aGUgcHNldWRvIGNsYXNzIHdpdGggbWFya2lu
Zy4KKworICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2Vu
ZXJhdG9yOjptYXJrUGFyZW50RWxlbWVudElmUmVzb2x2aW5nU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVs
ZW1lbnRNYXRjaGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpzZXRG
aXJzdENoaWxkU3RhdGUpOgorICAgICAgICBUaGlzIGlzIHRoZSBzbG93IHBhdGggZm9yIHdoZW4g
dGhlIGZpcnN0LWNoaWxkIHBzZXVkbyBjbGFzcyBpcyBvbiBhIGZyYWdtZW50IHRoYXQgaXMgbm90
CisgICAgICAgIHRoZSByaWdodG1vc3QuCisgICAgICAgIFRoZSByZWFzb24gdG8gdXNlIGEgc2xv
dyBwYXRoIGlzIGFjY2Vzc2luZyByZW5kZXJTdHlsZSgpIGlzIG5vdCB0cml2aWFsIGFuZCB0aGlz
IGNhc2UgaXNuJ3Qgbm90CisgICAgICAgIGFzIGNvbW1vbi4gV2Ugc2hvdWxkIGltcHJvdmUgdGhp
cyBsYXRlci4KKworICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JD
b2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRJc0ZpcnN0Q2hpbGQpOgorICAgICAgICBUaGlz
IGlzIGp1c3QgaW1wbGVtZW50aW5nIHRoZSB0ZXN0IGZvciBmaXJzdC1jaGlsZCBwbHVzIHRoZSB0
cmVlIG1hcmtpbmcuIE5vdGhpbmcgZmFuY3ksCisgICAgICAgIHRoaXMgaXMgYmFzaWNhbGx5IHRo
ZSBzYW1lIHRoaW5nIGFzIFNlbGVjdG9yQ2hlY2tlci4KKworICAgICAgICAqIGRvbS9FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUZp
cnN0Q2hpbGRSdWxlcyk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgQysrIGZh
bGxiYWNrIHRvIHNldCB0aGUgZmxhZywgdG8gYmUgaW1wcm92ZWQgbGF0ZXIgd2l0aCB0aGUgb3Ro
ZXIgZmxhZ3MuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAg
ICAgICAgSSBhY2NpZGVudGFseSBwdXQgbm9uaW5oZXJpdGVkRmxhZ3NNZW1vcnlPZmZzZXQoKSBh
cyBwcml2YXRlIGluIHRoZSBSZW5kZXJTdHlsZSByZWZhY3RvcmluZy4KKworICAgICAgICBBbHNv
IHVwZGF0ZSB0aGUgZmxhZ3MgYWNjZXNzb3IgdG8gbWFrZSB0aGVtIGVhc2llciB0byB3b3JrIHdp
dGggZnJvbSB0aGUgY29tcGlsZXIuIEluIHBhcnRpY3VsYXIsCisgICAgICAgIHNldEZpcnN0Q2hp
bGRTdGF0ZUZsYWdzKCkgc2V0cyBib3RoIGlzVW5pcXVlIGFuZCBmaXJzdENoaWxkLiBDdXJyZW50
bHkgdGhlIEpJVCBkb2VzIG5vdCBuZWVkIHRvIGFjY2VzcworICAgICAgICB0aGUgdmFsdWUgc28g
aW5kaXZpZHVhbCBmbGFncyBhcmUgbWFkZSBwcml2YXRlLgorCisyMDE0LTAzLTMwICBCZW5qYW1p
biBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKwogICAgICAgICBTZWNvbmQgYXR0ZW1w
dCB0byBmaXggMzJiaXRzIGJ1aWxkIGFmdGVyIHIxNjY0NjUKIAogICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNv
bGxlY3Rvci5jcHAKaW5kZXggNTJlZjc4ZDNhMzQ1YTEwNTMxMDAyZWM3MGEzMTZhNTE2ZmYyYTgz
YS4uMjE5MjJjOTM3MTdmNjAzMGNjOTg3OTNhYzk1ZTMwZmNjY2I1OTUzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCkBAIC0xNDUsNiArMTQ1LDcgQEAg
Ym9vbCBNYXRjaGluZ1VBUnVsZXNTY29wZTo6bV9tYXRjaGluZ1VBUnVsZXMgPSBmYWxzZTsKIHZv
aWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzKGNvbnN0IE1hdGNo
UmVxdWVzdCYgbWF0Y2hSZXF1ZXN0LCBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UmIHJ1bGVSYW5n
ZSkKIHsKICAgICBBU1NFUlQobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQpOworICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoIShtX21vZGUgPT0gU2VsZWN0b3JDaGVja2VyOjpSZXNvbHZpbmdTdHlsZSAmJiAh
bV9zdHlsZSksICJXaGVuIHJlc29sdmluZyBzdHlsZSwgdGhlIFNlbGVjdG9yQ2hlY2tlciBtdXN0
IGhhdmUgYSBzdHlsZSB0byBzZXQgdGhlIHBzZXVkbyBlbGVtZW50cyBhbmQvb3IgdG8gZG8gbWFy
a2luZy4gVGhlIFNlbGVjdG9yQ29tcGlsZXIgYWxzbyByZWx5IG9uIHRoYXQgYmVoYXZpb3IuIik7
CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHBzZXVkb0lkID0gbV9lbGVtZW50LnNoYWRvd1Bz
ZXVkb0lkKCk7CiAgICAgaWYgKCFwc2V1ZG9JZC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKaW5kZXggYzI0MGUwYzM4Y2M1Y2M1OGY4MjZmMzgyODA1ZjQzN2ZmMjg2
Zjg0YS4uZmE2OWViMTE3YWM1ODZlNjI5NTBlYzY0ZTI3MjZhNTFlOGU4ZDcyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNDE5LDcgKzQxOSw3IEBAIGlubGluZSB2b2lk
IFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjppbml0Rm9yU3R5bGVSZXNvbHZlKERvY3VtZW50JiBkb2N1
bWVudCwgRWxlbWVuCiAgICAgUmVuZGVyU3R5bGUqIGRvY1N0eWxlID0gZG9jdW1lbnQucmVuZGVy
U3R5bGUoKTsKICAgICBtX3Jvb3RFbGVtZW50U3R5bGUgPSBkb2NFbGVtZW50ICYmIGUgIT0gZG9j
RWxlbWVudCA/IGRvY0VsZW1lbnQtPnJlbmRlclN0eWxlKCkgOiBkb2NTdHlsZTsKIAotICAgIG1f
c3R5bGUgPSAwOworICAgIG1fc3R5bGUgPSBudWxscHRyOwogICAgIG1fcGVuZGluZ0ltYWdlUHJv
cGVydGllcy5jbGVhcigpOwogICAgIG1fZm9udERpcnR5ID0gZmFsc2U7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKaW5kZXggZGRkNjQ1ZGQwZTI1ZjRiNTAy
ZjdhNzY5OGUxMTU5OTRlM2M2MzgyZC4uODMwNzZlYjE5MjE1ZmMzYzY3YTM5YjIyMDg2OTU2Mjlk
MjkxYjkzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGls
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcApA
QCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgU2VsZWN0b3JDb21w
aWxlciB7CkBAIC0xNTUsNiArMTU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdlbmVyYXRlUGFy
ZW50RWxlbWVudFRyZWVXYWxrZXIoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBj
b25zdCBTZWxlY3RvckZyYWdtZW50Jik7CiAgICAgdm9pZCBnZW5lcmF0ZUFuY2VzdG9yVHJlZVdh
bGtlcihBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJh
Z21lbnQmKTsKIAorICAgIHZvaWQgZ2VuZXJhdGVXYWxrVG9QcmV2aW91c0FkamFjZW50RWxlbWVu
dChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJ
RCk7CiAgICAgdm9pZCBnZW5lcmF0ZVdhbGtUb1ByZXZpb3VzQWRqYWNlbnQoQXNzZW1ibGVyOjpK
dW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBTZWxlY3RvckZyYWdtZW50Jik7CiAgICAgdm9p
ZCBnZW5lcmF0ZURpcmVjdEFkamFjZW50VHJlZVdhbGtlcihBc3NlbWJsZXI6Okp1bXBMaXN0JiBm
YWlsdXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmKTsKICAgICB2b2lkIGdlbmVyYXRl
SW5kaXJlY3RBZGphY2VudFRyZWVXYWxrZXIoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNh
c2VzLCBjb25zdCBTZWxlY3RvckZyYWdtZW50Jik7CkBAIC0xNjksNiArMTcxLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGdlbmVyYXRlRWxlbWVudE1hdGNoaW5nKEFzc2VtYmxlcjo6SnVtcExpc3Qm
IGZhaWx1cmVDYXNlcywgY29uc3QgU2VsZWN0b3JGcmFnbWVudCYpOwogICAgIHZvaWQgZ2VuZXJh
dGVFbGVtZW50RGF0YU1hdGNoaW5nKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywg
Y29uc3QgU2VsZWN0b3JGcmFnbWVudCYpOwogICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50RnVuY3Rp
b25DYWxsVGVzdChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIEpTQzo6RnVuY3Rp
b25QdHIpOworICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SXNGaXJzdENoaWxkKEFzc2VtYmxlcjo6
SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29uc3QgU2VsZWN0b3JGcmFnbWVudCYpOwogICAgIHZv
aWQgZ2VuZXJhdGVTeW5jaHJvbml6ZVN0eWxlQXR0cmlidXRlKEFzc2VtYmxlcjo6UmVnaXN0ZXJJ
RCBlbGVtZW50RGF0YUFycmF5U2l6ZUFuZEZsYWdzKTsKICAgICB2b2lkIGdlbmVyYXRlU3luY2hy
b25pemVBbGxBbmltYXRlZFNWR0F0dHJpYnV0ZShBc3NlbWJsZXI6OlJlZ2lzdGVySUQgZWxlbWVu
dERhdGFBcnJheVNpemVBbmRGbGFncyk7CiAgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1
dGVzTWF0Y2hpbmcoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBMb2Nh
bFJlZ2lzdGVyJiBlbGVtZW50RGF0YUFkZHJlc3MsIGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmKTsK
QEAgLTE4MSw2ICsxODQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SGFz
Q2xhc3NlcyhBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IExvY2FsUmVn
aXN0ZXImIGVsZW1lbnREYXRhQWRkcmVzcywgY29uc3QgVmVjdG9yPGNvbnN0IEF0b21pY1N0cmlu
Z0ltcGwqPiYgY2xhc3NOYW1lcyk7CiAgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRJc0xpbmsoQXNz
ZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzKTsKIAorICAgIC8vIEhlbHBlcnMuCisgICAg
QXNzZW1ibGVyOjpKdW1wIGp1bXBJZk5vdFJlc29sdmluZ1N0eWxlKEFzc2VtYmxlcjo6UmVnaXN0
ZXJJRCBjaGVja2luZ0NvbnRleHRSZWdpc3Rlcik7CisKICAgICBBc3NlbWJsZXIgbV9hc3NlbWJs
ZXI7CiAgICAgUmVnaXN0ZXJBbGxvY2F0b3IgbV9yZWdpc3RlckFsbG9jYXRvcjsKICAgICBTdGFj
a0FsbG9jYXRvciBtX3N0YWNrQWxsb2NhdG9yOwpAQCAtMjM4LDcgKzI0NCw3IEBAIHN0YXRpYyBp
bmxpbmUgRnVuY3Rpb25UeXBlIG1vc3RSZXN0cmljdGl2ZUZ1bmN0aW9uVHlwZShGdW5jdGlvblR5
cGUgYSwgRnVuY3Rpb25UCiAgICAgcmV0dXJuIHN0ZDo6bWF4KGEsIGIpOwogfQogCi1zdGF0aWMg
aW5saW5lIEZ1bmN0aW9uVHlwZSBhZGRQc2V1ZG9UeXBlKENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBl
IHR5cGUsIFNlbGVjdG9yRnJhZ21lbnQmIHBzZXVkb0NsYXNzZXMpCitzdGF0aWMgaW5saW5lIEZ1
bmN0aW9uVHlwZSBhZGRQc2V1ZG9UeXBlKENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUsIFNl
bGVjdG9yRnJhZ21lbnQmIHBzZXVkb0NsYXNzZXMsIFNlbGVjdG9yQ29udGV4dCBzZWxlY3RvckNv
bnRleHQpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgLy8gVW5vcHRpbWl6ZWQgcHNldWRv
IHNlbGVjdG9yLiBUaGV5IGFyZSBqdXN0IGZ1bmN0aW9uIGNhbGwgdG8gYSBzaW1wbGUgdGVzdGlu
ZyBmdW5jdGlvbi4KQEAgLTMwNCw2ICszMTAsMTIgQEAgc3RhdGljIGlubGluZSBGdW5jdGlvblR5
cGUgYWRkUHNldWRvVHlwZShDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlLCBTZWxlY3RvckYK
ICAgICAgICAgcHNldWRvQ2xhc3Nlcy5wc2V1ZG9DbGFzc2VzLmFkZCh0eXBlKTsKICAgICAgICAg
cmV0dXJuIEZ1bmN0aW9uVHlwZTo6U2ltcGxlU2VsZWN0b3JDaGVja2VyOwogCisgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RDaGlsZDoKKyAgICAgICAgcHNldWRvQ2xhc3Nlcy5wc2V1
ZG9DbGFzc2VzLmFkZCh0eXBlKTsKKyAgICAgICAgaWYgKHNlbGVjdG9yQ29udGV4dCA9PSBTZWxl
Y3RvckNvbnRleHQ6OlF1ZXJ5U2VsZWN0b3IpCisgICAgICAgICAgICByZXR1cm4gRnVuY3Rpb25U
eXBlOjpTaW1wbGVTZWxlY3RvckNoZWNrZXI7CisgICAgICAgIHJldHVybiBGdW5jdGlvblR5cGU6
OlNlbGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHQ7CisKICAgICBkZWZhdWx0OgogICAg
ICAgICBicmVhazsKICAgICB9CkBAIC0zNDUsNyArMzU3LDcgQEAgaW5saW5lIFNlbGVjdG9yQ29k
ZUdlbmVyYXRvcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yKGNvbnN0IENTU1NlbGVjdG9yKiByb290
U2VsZWMKICAgICAgICAgICAgIGZyYWdtZW50LmNsYXNzTmFtZXMuYXBwZW5kKHNlbGVjdG9yLT52
YWx1ZSgpLmltcGwoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3M6Ci0gICAgICAgICAgICBtX2Z1bmN0aW9uVHlwZSA9IG1vc3RSZXN0
cmljdGl2ZUZ1bmN0aW9uVHlwZShtX2Z1bmN0aW9uVHlwZSwgYWRkUHNldWRvVHlwZShzZWxlY3Rv
ci0+cHNldWRvVHlwZSgpLCBmcmFnbWVudCkpOworICAgICAgICAgICAgbV9mdW5jdGlvblR5cGUg
PSBtb3N0UmVzdHJpY3RpdmVGdW5jdGlvblR5cGUobV9mdW5jdGlvblR5cGUsIGFkZFBzZXVkb1R5
cGUoc2VsZWN0b3ItPnBzZXVkb1R5cGUoKSwgZnJhZ21lbnQsIG1fc2VsZWN0b3JDb250ZXh0KSk7
CiAgICAgICAgICAgICBpZiAobV9mdW5jdGlvblR5cGUgPT0gRnVuY3Rpb25UeXBlOjpDYW5ub3RD
b21waWxlIHx8IG1fZnVuY3Rpb25UeXBlID09IEZ1bmN0aW9uVHlwZTo6Q2Fubm90TWF0Y2hBbnl0
aGluZykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsKQEAgLTc3
OCw2ICs3OTAsMTQgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlQW5jZXN0
b3JUcmVlV2Fsa2VyKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWwKICAgICB0YWdNYXRjaGluZ0xv
Y2FsRmFpbHVyZUNhc2VzLmxpbmtUbyhsb29wU3RhcnQsICZtX2Fzc2VtYmxlcik7CiB9CiAKK2lu
bGluZSB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVXYWxrVG9QcmV2aW91c0Fk
amFjZW50RWxlbWVudChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIEFzc2VtYmxl
cjo6UmVnaXN0ZXJJRCB3b3JrUmVnaXN0ZXIpCit7CisgICAgQXNzZW1ibGVyOjpMYWJlbCBsb29w
U3RhcnQgPSBtX2Fzc2VtYmxlci5sYWJlbCgpOworICAgIG1fYXNzZW1ibGVyLmxvYWRQdHIoQXNz
ZW1ibGVyOjpBZGRyZXNzKHdvcmtSZWdpc3RlciwgTm9kZTo6cHJldmlvdXNTaWJsaW5nTWVtb3J5
T2Zmc2V0KCkpLCB3b3JrUmVnaXN0ZXIpOworICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQobV9hc3Nl
bWJsZXIuYnJhbmNoVGVzdFB0cihBc3NlbWJsZXI6Olplcm8sIHdvcmtSZWdpc3RlcikpOworICAg
IHRlc3RJc0VsZW1lbnRGbGFnT25Ob2RlKEFzc2VtYmxlcjo6WmVybywgbV9hc3NlbWJsZXIsIHdv
cmtSZWdpc3RlcikubGlua1RvKGxvb3BTdGFydCwgJm1fYXNzZW1ibGVyKTsKK30KKwogdm9pZCBT
ZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlV2Fsa1RvUHJldmlvdXNBZGphY2VudChBc3Nl
bWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmIGZy
YWdtZW50KQogewogICAgIC8vICAgIGRvIHsKQEAgLTc5NywxMCArODE3LDkgQEAgdm9pZCBTZWxl
Y3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlV2Fsa1RvUHJldmlvdXNBZGphY2VudChBc3NlbWJs
ZXI6Okp1bXBMaXN0JgogICAgIH0gZWxzZQogICAgICAgICBwcmV2aW91c1NpYmxpbmcgPSBlbGVt
ZW50QWRkcmVzc1JlZ2lzdGVyOwogCi0gICAgQXNzZW1ibGVyOjpMYWJlbCBsb29wU3RhcnQgPSBt
X2Fzc2VtYmxlci5sYWJlbCgpOwotICAgIG1fYXNzZW1ibGVyLmxvYWRQdHIoQXNzZW1ibGVyOjpB
ZGRyZXNzKHByZXZpb3VzU2libGluZywgTm9kZTo6cHJldmlvdXNTaWJsaW5nTWVtb3J5T2Zmc2V0
KCkpLCBwcmV2aW91c1NpYmxpbmcpOwotICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQobV9hc3NlbWJs
ZXIuYnJhbmNoVGVzdFB0cihBc3NlbWJsZXI6Olplcm8sIHByZXZpb3VzU2libGluZykpOwotICAg
IHRlc3RJc0VsZW1lbnRGbGFnT25Ob2RlKEFzc2VtYmxlcjo6WmVybywgbV9hc3NlbWJsZXIsIHBy
ZXZpb3VzU2libGluZykubGlua1RvKGxvb3BTdGFydCwgJm1fYXNzZW1ibGVyKTsKKyAgICBBc3Nl
bWJsZXI6Okp1bXBMaXN0IHRyYXZlcnNhbEZhaWx1cmVDYXNlczsKKyAgICBnZW5lcmF0ZVdhbGtU
b1ByZXZpb3VzQWRqYWNlbnRFbGVtZW50KHRyYXZlcnNhbEZhaWx1cmVDYXNlcywgcHJldmlvdXNT
aWJsaW5nKTsKKyAgICBsaW5rRmFpbHVyZXMoZmFpbHVyZUNhc2VzLCBmcmFnbWVudC50cmF2ZXJz
YWxCYWNrdHJhY2tpbmdBY3Rpb24sIHRyYXZlcnNhbEZhaWx1cmVDYXNlcyk7CiAKICAgICAvLyBP
biBzdWNjZXNzLCBtb3ZlIHByZXZpb3VzU2libGluZyBvdmVyIHRvIGVsZW1lbnRBZGRyZXNzUmVn
aXN0ZXIgaWYgd2UgY291bGQgbm90IHdvcmsgb24gZWxlbWVudEFkZHJlc3NSZWdpc3RlciBkaXJl
Y3RseS4KICAgICBpZiAoIXVzZVRhaWxPblRyYXZlcnNhbEZhaWx1cmUpIHsKQEAgLTgxMyw5ICs4
MzIsNyBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVEaXJlY3RBZGphY2Vu
dFRyZWVXYWxrZXIoQXNzZW1ibGVyOjpKdW1wTGlzdAogewogICAgIG1hcmtQYXJlbnRFbGVtZW50
SWZSZXNvbHZpbmdTdHlsZShFbGVtZW50OjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGph
Y2VudFJ1bGVzKTsKIAotICAgIEFzc2VtYmxlcjo6SnVtcExpc3QgdHJhdmVyc2FsRmFpbHVyZUNh
c2VzOwotICAgIGdlbmVyYXRlV2Fsa1RvUHJldmlvdXNBZGphY2VudCh0cmF2ZXJzYWxGYWlsdXJl
Q2FzZXMsIGZyYWdtZW50KTsKLSAgICBsaW5rRmFpbHVyZXMoZmFpbHVyZUNhc2VzLCBmcmFnbWVu
dC50cmF2ZXJzYWxCYWNrdHJhY2tpbmdBY3Rpb24sIHRyYXZlcnNhbEZhaWx1cmVDYXNlcyk7Cisg
ICAgZ2VuZXJhdGVXYWxrVG9QcmV2aW91c0FkamFjZW50KGZhaWx1cmVDYXNlcywgZnJhZ21lbnQp
OwogCiAgICAgQXNzZW1ibGVyOjpKdW1wTGlzdCBtYXRjaGluZ0ZhaWx1cmVDYXNlczsKICAgICBn
ZW5lcmF0ZUVsZW1lbnRNYXRjaGluZyhtYXRjaGluZ0ZhaWx1cmVDYXNlcywgZnJhZ21lbnQpOwpA
QCAtODMxLDkgKzg0OCw3IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUlu
ZGlyZWN0QWRqYWNlbnRUcmVlV2Fsa2VyKEFzc2VtYmxlcjo6SnVtcExpCiAKICAgICBBc3NlbWJs
ZXI6OkxhYmVsIGxvb3BTdGFydChtX2Fzc2VtYmxlci5sYWJlbCgpKTsKIAotICAgIEFzc2VtYmxl
cjo6SnVtcExpc3QgdHJhdmVyc2FsRmFpbHVyZUNhc2VzOwotICAgIGdlbmVyYXRlV2Fsa1RvUHJl
dmlvdXNBZGphY2VudCh0cmF2ZXJzYWxGYWlsdXJlQ2FzZXMsIGZyYWdtZW50KTsKLSAgICBsaW5r
RmFpbHVyZXMoZmFpbHVyZUNhc2VzLCBmcmFnbWVudC50cmF2ZXJzYWxCYWNrdHJhY2tpbmdBY3Rp
b24sIHRyYXZlcnNhbEZhaWx1cmVDYXNlcyk7CisgICAgZ2VuZXJhdGVXYWxrVG9QcmV2aW91c0Fk
amFjZW50KGZhaWx1cmVDYXNlcywgZnJhZ21lbnQpOwogCiAgICAgaWYgKGZyYWdtZW50LmJhY2t0
cmFja2luZ0ZsYWdzICYgQmFja3RyYWNraW5nRmxhZzo6SW5kaXJlY3RBZGphY2VudEVudHJ5UG9p
bnQpCiAgICAgICAgIG1faW5kaXJlY3RBZGphY2VudEVudHJ5UG9pbnQgPSBtX2Fzc2VtYmxlci5s
YWJlbCgpOwpAQCAtODQzLDYgKzg1OCwxOCBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGVJbmRpcmVjdEFkamFjZW50VHJlZVdhbGtlcihBc3NlbWJsZXI6Okp1bXBMaQogICAg
IGxvY2FsRmFpbHVyZUNhc2VzLmxpbmtUbyhsb29wU3RhcnQsICZtX2Fzc2VtYmxlcik7CiB9CiAK
K0Fzc2VtYmxlcjo6SnVtcCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6Omp1bXBJZk5vdFJlc29sdmlu
Z1N0eWxlKEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRleHQpCit7CisgICAgUkVM
RUFTRV9BU1NFUlQobV9zZWxlY3RvckNvbnRleHQgPT0gU2VsZWN0b3JDb250ZXh0OjpSdWxlQ29s
bGVjdG9yKTsKKworICAgIC8vIEdldCB0aGUgY2hlY2tpbmcgY29udGV4dC4KKyAgICB1bnNpZ25l
ZCBvZmZzZXRUb0NoZWNraW5nQ29udGV4dCA9IG1fc3RhY2tBbGxvY2F0b3Iub2Zmc2V0VG9TdGFj
a1JlZmVyZW5jZShtX2NoZWNraW5nQ29udGV4dFN0YWNrUmVmZXJlbmNlKTsKKyAgICBtX2Fzc2Vt
Ymxlci5sb2FkUHRyKEFzc2VtYmxlcjo6QWRkcmVzcyhBc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBvZmZzZXRUb0NoZWNraW5nQ29udGV4dCksIGNoZWNraW5nQ29udGV4dCk7CisKKyAg
ICAvLyBJZiB3ZSBub3QgcmVzb2x2aW5nIHN0eWxlLCBza2lwIHRoZSB3aG9sZSBtYXJraW5nLgor
ICAgIHJldHVybiBtX2Fzc2VtYmxlci5icmFuY2g4KEFzc2VtYmxlcjo6Tm90RXF1YWwsIEFzc2Vt
Ymxlcjo6QWRkcmVzcyhjaGVja2luZ0NvbnRleHQsIE9CSkVDVF9PRkZTRVRPRihDaGVja2luZ0Nv
bnRleHQsIHJlc29sdmluZ01vZGUpKSwgQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoU2VsZWN0b3JD
aGVja2VyOjpSZXNvbHZpbmdTdHlsZSkpOworfQorCiB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRv
cjo6bWFya1BhcmVudEVsZW1lbnRJZlJlc29sdmluZ1N0eWxlKEpTQzo6RnVuY3Rpb25QdHIgbWFy
a2luZ0Z1bmN0aW9uKQogewogICAgIGlmIChtX3NlbGVjdG9yQ29udGV4dCA9PSBTZWxlY3RvckNv
bnRleHQ6OlF1ZXJ5U2VsZWN0b3IpCkBAIC04NTIsMTkgKzg3OSwxNSBAQCB2b2lkIFNlbGVjdG9y
Q29kZUdlbmVyYXRvcjo6bWFya1BhcmVudEVsZW1lbnRJZlJlc29sdmluZ1N0eWxlKEpTQzo6RnVu
Y3Rpb25QdHIgbQogICAgIC8vICAgICAgICAgRWxlbWVudCogcGFyZW50ID0gZWxlbWVudC0+cGFy
ZW50Tm9kZSgpOwogICAgIC8vICAgICAgICAgbWFya2luZ0Z1bmN0aW9uKHBhcmVudCk7CiAgICAg
Ly8gICAgIH0KLSAgICBBc3NlbWJsZXI6Okp1bXBMaXN0IGZhaWxlZFRvR2V0UGFyZW50OworCiAg
ICAgQXNzZW1ibGVyOjpKdW1wIG5vdFJlc29sdmluZ1N0eWxlOwogICAgIHsKLSAgICAgICAgLy8g
R2V0IHRoZSBjaGVja2luZyBjb250ZXh0LgotICAgICAgICB1bnNpZ25lZCBvZmZzZXRUb0NoZWNr
aW5nQ29udGV4dCA9IG1fc3RhY2tBbGxvY2F0b3Iub2Zmc2V0VG9TdGFja1JlZmVyZW5jZShtX2No
ZWNraW5nQ29udGV4dFN0YWNrUmVmZXJlbmNlKTsKICAgICAgICAgTG9jYWxSZWdpc3RlciBjaGVj
a2luZ0NvbnRleHQobV9yZWdpc3RlckFsbG9jYXRvcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxv
YWRQdHIoQXNzZW1ibGVyOjpBZGRyZXNzKEFzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIs
IG9mZnNldFRvQ2hlY2tpbmdDb250ZXh0KSwgY2hlY2tpbmdDb250ZXh0KTsKLQotICAgICAgICAv
LyBJZiB3ZSBub3QgcmVzb2x2aW5nIHN0eWxlLCBza2lwIHRoZSB3aG9sZSBtYXJraW5nLgotICAg
ICAgICBub3RSZXNvbHZpbmdTdHlsZSA9IG1fYXNzZW1ibGVyLmJyYW5jaDgoQXNzZW1ibGVyOjpO
b3RFcXVhbCwgQXNzZW1ibGVyOjpBZGRyZXNzKGNoZWNraW5nQ29udGV4dCwgT0JKRUNUX09GRlNF
VE9GKENoZWNraW5nQ29udGV4dCwgcmVzb2x2aW5nTW9kZSkpLCBBc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihTZWxlY3RvckNoZWNrZXI6OlJlc29sdmluZ1N0eWxlKSk7CisgICAgICAgIG5vdFJlc29s
dmluZ1N0eWxlID0ganVtcElmTm90UmVzb2x2aW5nU3R5bGUoY2hlY2tpbmdDb250ZXh0KTsKICAg
ICB9CiAKICAgICAvLyBHZXQgdGhlIHBhcmVudCBlbGVtZW50IGluIGEgdGVtcG9yYXJ5IHJlZ2lz
dGVyLgorICAgIEFzc2VtYmxlcjo6SnVtcExpc3QgZmFpbGVkVG9HZXRQYXJlbnQ7CiAgICAgQXNz
ZW1ibGVyOjpSZWdpc3RlcklEIHBhcmVudEVsZW1lbnQgPSBtX3JlZ2lzdGVyQWxsb2NhdG9yLmFs
bG9jYXRlUmVnaXN0ZXIoKTsKICAgICBnZW5lcmF0ZVdhbGtUb1BhcmVudEVsZW1lbnQoZmFpbGVk
VG9HZXRQYXJlbnQsIHBhcmVudEVsZW1lbnQpOwogCkBAIC05NzIsNiArOTk1LDkgQEAgdm9pZCBT
ZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudE1hdGNoaW5nKEFzc2VtYmxlcjo6
SnVtcExpc3QmIGZhaWx1cmUKICAgICAgICAgZ2VuZXJhdGVFbGVtZW50RnVuY3Rpb25DYWxsVGVz
dChmYWlsdXJlQ2FzZXMsIGZyYWdtZW50LnVub3B0aW1pemVkUHNldWRvQ2xhc3Nlc1tpXSk7CiAK
ICAgICBnZW5lcmF0ZUVsZW1lbnREYXRhTWF0Y2hpbmcoZmFpbHVyZUNhc2VzLCBmcmFnbWVudCk7
CisKKyAgICBpZiAoZnJhZ21lbnQucHNldWRvQ2xhc3Nlcy5jb250YWlucyhDU1NTZWxlY3Rvcjo6
UHNldWRvRmlyc3RDaGlsZCkpCisgICAgICAgIGdlbmVyYXRlRWxlbWVudElzRmlyc3RDaGlsZChm
YWlsdXJlQ2FzZXMsIGZyYWdtZW50KTsKIH0KIAogdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRlRWxlbWVudERhdGFNYXRjaGluZyhBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJl
Q2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmIGZyYWdtZW50KQpAQCAtMTM5MCw2ICsxNDE2
LDgyIEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRGdW5jdGlv
bkNhbGxUZXN0KEFzc2VtYmxlcjo6SnVtcExpc3QmCiAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChm
dW5jdGlvbkNhbGwuY2FsbEFuZEJyYW5jaE9uQ29uZGl0aW9uKEFzc2VtYmxlcjo6WmVybykpOwog
fQogCitzdGF0aWMgdm9pZCBzZXRGaXJzdENoaWxkU3RhdGUoRWxlbWVudCogZWxlbWVudCkKK3sK
KyAgICBpZiAoUmVuZGVyU3R5bGUqIHN0eWxlID0gZWxlbWVudC0+cmVuZGVyU3R5bGUoKSkKKyAg
ICAgICAgc3R5bGUtPnNldEZpcnN0Q2hpbGRTdGF0ZSgpOworfQorCit2b2lkIFNlbGVjdG9yQ29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50SXNGaXJzdENoaWxkKEFzc2VtYmxlcjo6SnVtcExp
c3QmIGZhaWx1cmVDYXNlcywgY29uc3QgU2VsZWN0b3JGcmFnbWVudCYgZnJhZ21lbnQpCit7Cisg
ICAgaWYgKG1fc2VsZWN0b3JDb250ZXh0ID09IFNlbGVjdG9yQ29udGV4dDo6UXVlcnlTZWxlY3Rv
cikgeworICAgICAgICBBc3NlbWJsZXI6Okp1bXBMaXN0IHN1Y2Nlc3NDYXNlOworICAgICAgICBM
b2NhbFJlZ2lzdGVyIHByZXZpb3VzU2libGluZyhtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubW92ZShlbGVtZW50QWRkcmVzc1JlZ2lzdGVyLCBwcmV2aW91c1NpYmxp
bmcpOworICAgICAgICBnZW5lcmF0ZVdhbGtUb1ByZXZpb3VzQWRqYWNlbnRFbGVtZW50KHN1Y2Nl
c3NDYXNlLCBwcmV2aW91c1NpYmxpbmcpOworICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKG1f
YXNzZW1ibGVyLmp1bXAoKSk7CisgICAgICAgIHN1Y2Nlc3NDYXNlLmxpbmsoJm1fYXNzZW1ibGVy
KTsKKyAgICAgICAgTG9jYWxSZWdpc3RlciBwYXJlbnQobV9yZWdpc3RlckFsbG9jYXRvcik7Cisg
ICAgICAgIGdlbmVyYXRlV2Fsa1RvUGFyZW50RWxlbWVudChmYWlsdXJlQ2FzZXMsIHBhcmVudCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgcGFy
ZW50RWxlbWVudCA9IG1fcmVnaXN0ZXJBbGxvY2F0b3IuYWxsb2NhdGVSZWdpc3RlcigpOworICAg
IGdlbmVyYXRlV2Fsa1RvUGFyZW50RWxlbWVudChmYWlsdXJlQ2FzZXMsIHBhcmVudEVsZW1lbnQp
OworCisgICAgLy8gWmVybyBpbiBpc0ZpcnN0Q2hpbGRSZWdpc3RlciBpcyB0aGUgc3VjY2VzcyBj
YXNlLiBUaGUgcmVnaXN0ZXIgaXMgc2V0IHRvIG5vbi16ZXJvIGlmIGEgc2libGluZyBpZiBmb3Vu
ZC4KKyAgICBMb2NhbFJlZ2lzdGVyIGlzRmlyc3RDaGlsZFJlZ2lzdGVyKG1fcmVnaXN0ZXJBbGxv
Y2F0b3IpOworICAgIG1fYXNzZW1ibGVyLm1vdmUoQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCks
IGlzRmlyc3RDaGlsZFJlZ2lzdGVyKTsKKworICAgIHsKKyAgICAgICAgQXNzZW1ibGVyOjpKdW1w
TGlzdCBzdWNjZXNzQ2FzZTsKKyAgICAgICAgTG9jYWxSZWdpc3RlciBwcmV2aW91c1NpYmxpbmco
bV9yZWdpc3RlckFsbG9jYXRvcik7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmUoZWxlbWVudEFk
ZHJlc3NSZWdpc3RlciwgcHJldmlvdXNTaWJsaW5nKTsKKyAgICAgICAgZ2VuZXJhdGVXYWxrVG9Q
cmV2aW91c0FkamFjZW50RWxlbWVudChzdWNjZXNzQ2FzZSwgcHJldmlvdXNTaWJsaW5nKTsKKwor
ICAgICAgICAvLyBJZiB0aGVyZSB3YXMgYSBzaWJsaW5nIGVsZW1lbnQsIHRoZSBlbGVtZW50IHdh
cyBub3QgdGhlIGZpcnN0IGNoaWxkIC0+IGZhaWx1cmUgY2FzZS4KKyAgICAgICAgbV9hc3NlbWJs
ZXIubW92ZShBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigxKSwgaXNGaXJzdENoaWxkUmVnaXN0ZXIp
OworCisgICAgICAgIHN1Y2Nlc3NDYXNlLmxpbmsoJm1fYXNzZW1ibGVyKTsKKyAgICB9CisKKyAg
ICBMb2NhbFJlZ2lzdGVyIGNoZWNraW5nQ29udGV4dChtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKKyAg
ICBBc3NlbWJsZXI6Okp1bXAgbm90UmVzb2x2aW5nU3R5bGUgPSBqdW1wSWZOb3RSZXNvbHZpbmdT
dHlsZShjaGVja2luZ0NvbnRleHQpOworCisgICAgbV9yZWdpc3RlckFsbG9jYXRvci5kZWFsbG9j
YXRlUmVnaXN0ZXIocGFyZW50RWxlbWVudCk7CisgICAgRnVuY3Rpb25DYWxsIGZ1bmN0aW9uQ2Fs
bChtX2Fzc2VtYmxlciwgbV9yZWdpc3RlckFsbG9jYXRvciwgbV9zdGFja0FsbG9jYXRvciwgbV9m
dW5jdGlvbkNhbGxzKTsKKyAgICBmdW5jdGlvbkNhbGwuc2V0RnVuY3Rpb25BZGRyZXNzKEVsZW1l
bnQ6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcyk7CisgICAgZnVuY3Rpb25D
YWxsLnNldE9uZUFyZ3VtZW50KHBhcmVudEVsZW1lbnQpOworICAgIGZ1bmN0aW9uQ2FsbC5jYWxs
KCk7CisKKyAgICAvLyBUaGUgcGFyZW50IG1hcmtpbmcgaXMgdW5jb25kaXRpb25hbC4gSWYgdGhl
IG1hdGNoaW5nIGlzIG5vdCBhIHN1Y2Nlc3MsIHdlIGNhbiBub3cgZmFpbC4KKyAgICAvLyBPdGhl
cndpc2Ugd2UgbmVlZCB0byBhcHBseSBzZXRGaXJzdENoaWxkU3RhdGUoKSBvbiB0aGUgUmVuZGVy
U3R5bGUuCisgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChtX2Fzc2VtYmxlci5icmFuY2hUZXN0MzIo
QXNzZW1ibGVyOjpOb25aZXJvLCBpc0ZpcnN0Q2hpbGRSZWdpc3RlcikpOworCisgICAgaWYgKGZy
YWdtZW50LnJlbGF0aW9uVG9SaWdodEZyYWdtZW50ID09IEZyYWdtZW50UmVsYXRpb246OlJpZ2h0
bW9zdCkgeworICAgICAgICBMb2NhbFJlZ2lzdGVyIGNoaWxkU3R5bGUobV9yZWdpc3RlckFsbG9j
YXRvcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRQdHIoQXNzZW1ibGVyOjpBZGRyZXNzKGNo
ZWNraW5nQ29udGV4dCwgT0JKRUNUX09GRlNFVE9GKENoZWNraW5nQ29udGV4dCwgZWxlbWVudFN0
eWxlKSksIGNoaWxkU3R5bGUpOworCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbG9vayBp
bnRvIGRvaW5nIHNvbWV0aGluZyBzbWFydCBpbiBNYWNyb0Fzc2VtYmxlciBpbnN0ZWFkLgorICAg
ICAgICBMb2NhbFJlZ2lzdGVyIGZsYWdzKG1fcmVnaXN0ZXJBbGxvY2F0b3IpOworICAgICAgICBB
c3NlbWJsZXI6OkFkZHJlc3MgZmxhZ0FkZHJlc3MoY2hpbGRTdHlsZSwgUmVuZGVyU3R5bGU6Om5v
bmluaGVyaXRlZEZsYWdzTWVtb3J5T2Zmc2V0KCkgKyBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVk
RmxhZ3M6OmZsYWdzTWVtb3J5T2Zmc2V0KCkpOworICAgICAgICBtX2Fzc2VtYmxlci5sb2FkNjQo
ZmxhZ0FkZHJlc3MsIGZsYWdzKTsKKyAgICAgICAgTG9jYWxSZWdpc3RlciBpc0ZpcnN0Q2hpbGRT
dGF0ZUZsYWdJbW1lZGlhdGUobV9yZWdpc3RlckFsbG9jYXRvcik7CisgICAgICAgIG1fYXNzZW1i
bGVyLm1vdmUoQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRl
ZEZsYWdzOjpzZXRGaXJzdENoaWxkU3RhdGVGbGFncygpKSwgaXNGaXJzdENoaWxkU3RhdGVGbGFn
SW1tZWRpYXRlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIub3I2NChpc0ZpcnN0Q2hpbGRTdGF0ZUZs
YWdJbW1lZGlhdGUsIGZsYWdzKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RvcmU2NChmbGFncywg
ZmxhZ0FkZHJlc3MpOworICAgIH0gZWxzZSB7CisgICAgICAgIEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bkNhbGwobV9hc3NlbWJsZXIsIG1fcmVnaXN0ZXJBbGxvY2F0b3IsIG1fc3RhY2tBbGxvY2F0b3Is
IG1fZnVuY3Rpb25DYWxscyk7CisgICAgICAgIGZ1bmN0aW9uQ2FsbC5zZXRGdW5jdGlvbkFkZHJl
c3Moc2V0Rmlyc3RDaGlsZFN0YXRlKTsKKyAgICAgICAgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGVs
ZW1lbnRBZGRyZXNzID0gZWxlbWVudEFkZHJlc3NSZWdpc3RlcjsKKyAgICAgICAgZnVuY3Rpb25D
YWxsLnNldE9uZUFyZ3VtZW50KGVsZW1lbnRBZGRyZXNzKTsKKyAgICAgICAgZnVuY3Rpb25DYWxs
LmNhbGwoKTsKKyAgICB9CisKKyAgICBub3RSZXNvbHZpbmdTdHlsZS5saW5rKCZtX2Fzc2VtYmxl
cik7CisgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChtX2Fzc2VtYmxlci5icmFuY2hUZXN0MzIoQXNz
ZW1ibGVyOjpOb25aZXJvLCBpc0ZpcnN0Q2hpbGRSZWdpc3RlcikpOworfQorCiBpbmxpbmUgdm9p
ZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudEhhc1RhZ05hbWUoQXNzZW1i
bGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lVG9N
YXRjaCkKIHsKICAgICBpZiAobmFtZVRvTWF0Y2ggPT0gYW55UU5hbWUoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAppbmRleCA4ODkwMGRmZmE1MDg2NzJlYzU3M2U3M2FhOGVjZjM5N2Y2YmZkMWM1Li5k
ODUzNjMxYjljMjVlNjVjM2E5YTI3YzhkM2IzYTU2N2I5ODMwYWE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCkBAIC0yMDY2LDYgKzIwNjYsMTEgQEAgdm9pZCBFbGVtZW50OjpzZXRDaGlsZHJlbkFm
ZmVjdGVkQnlEcmFnKCkKICAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXRDaGlsZHJlbkFm
ZmVjdGVkQnlEcmFnKHRydWUpOwogfQogCit2b2lkIEVsZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0
ZWRCeUZpcnN0Q2hpbGRSdWxlcyhFbGVtZW50KiBlbGVtZW50KQoreworICAgIGVsZW1lbnQtPnNl
dENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpOworfQorCiB2b2lkIEVsZW1lbnQ6
OnNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoRWxlbWVudCogZWxlbWVu
dCkKIHsKICAgICBlbGVtZW50LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1
bGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCAwOWMyZTE4MmRkZTc0NmU3ODVkMjFkOWFhZjNi
YTYzYmYyMjFhODU4Li5mOTI1YThkNGNmMjNhZmQxMWM0YTU5MzYzMjIyOGNjMDU0MmRjNTAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKQEAgLTM3Miw2ICszNzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRDaGlsZHJlbkFmZmVjdGVkQnlIb3ZlcigpIHsgc2V0RmxhZyhDaGlsZHJlbkFmZmVjdGVkQnlI
b3ZlclJ1bGVzRmxhZyk7IH0KICAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZSgp
OwogICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RHJhZygpOworICAgIHN0YXRpYyB2b2lk
IHNldENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcyhFbGVtZW50Kik7CiAgICAgdm9p
ZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSB7IHNldEZsYWcoQ2hpbGRy
ZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzRmxhZyk7IH0KICAgICB2b2lkIHNldENoaWxkcmVu
QWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgeyBzZXRGbGFnKENoaWxkcmVuQWZmZWN0ZWRCeUxh
c3RDaGlsZFJ1bGVzRmxhZyk7IH0KICAgICBzdGF0aWMgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVk
QnlEaXJlY3RBZGphY2VudFJ1bGVzKEVsZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggZTE5ZTMzOTcxMzVjYzY5MDZiZDI1MjJkY2Vi
NjU1ZDQ1Mzk4ZmRmNC4uOTY3ZmI4ZDRkMzBiYjRkOTY1ZDEzN2FjNjMzMjgwOTIwZDAzZjQxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTI3
OCwxMyArMjc4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEVUYWJsZUxheW91dCBpbml0
aWFsVGFibGVMYXlvdXQoKSB7IHJldHVybiBUQVVUTzsgfQogCiAgICAgICAgIHN0YXRpYyBwdHJk
aWZmX3QgZmxhZ3NNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTm9uSW5o
ZXJpdGVkRmxhZ3MsIG1fZmxhZ3MpOyB9Ci0gICAgICAgIHN0YXRpYyB1aW50OF90IGZsYWdJc1Vu
aXF1ZSgpIHsgcmV0dXJuIGlzVW5pcXVlT2Zmc2V0OyB9Ci0gICAgICAgIHN0YXRpYyB1aW50OF90
IGZsYWdFbXB0eVN0YXRlKCkgeyByZXR1cm4gZW1wdHlTdGF0ZU9mZnNldDsgfQotICAgICAgICBz
dGF0aWMgdWludDhfdCBmbGFnRmlyc3RDaGlsZFN0YXRlKCkgeyByZXR1cm4gZmlyc3RDaGlsZFN0
YXRlT2Zmc2V0OyB9Ci0gICAgICAgIHN0YXRpYyB1aW50OF90IGZsYWdMYXN0Q2hpbGRTdGF0ZSgp
IHsgcmV0dXJuIGxhc3RDaGlsZFN0YXRlT2Zmc2V0OyB9Ci0gICAgICAgIHN0YXRpYyB1aW50OF90
IGZsYWdBZmZlY3RlZEJ5SG92ZXIoKSB7IHJldHVybiBhZmZlY3RlZEJ5SG92ZXJPZmZzZXQ7IH0K
LSAgICAgICAgc3RhdGljIHVpbnQ4X3QgZmxhZ0FmZmVjdGVkQnlBY3RpdmUoKSB7IHJldHVybiBh
ZmZlY3RlZEJ5QWN0aXZlT2Zmc2V0OyB9Ci0gICAgICAgIHN0YXRpYyB1aW50OF90IGZsYWdBZmZl
Y3RlZEJ5RHJhZygpIHsgcmV0dXJuIGFmZmVjdGVkQnlEcmFnT2Zmc2V0OyB9CisgICAgICAgIHN0
YXRpYyB1aW50NjRfdCBmbGFnRW1wdHlTdGF0ZSgpIHsgcmV0dXJuIG9uZUJpdE1hc2sgPDwgZW1w
dHlTdGF0ZU9mZnNldDsgfQorICAgICAgICBzdGF0aWMgdWludDY0X3Qgc2V0Rmlyc3RDaGlsZFN0
YXRlRmxhZ3MoKSB7IHJldHVybiBmbGFnRmlyc3RDaGlsZFN0YXRlKCkgfCBmbGFnSXNVbmlxdWUo
KTsgfQorICAgICAgICBzdGF0aWMgdWludDY0X3QgZmxhZ0xhc3RDaGlsZFN0YXRlKCkgeyByZXR1
cm4gb25lQml0TWFzayA8PCBsYXN0Q2hpbGRTdGF0ZU9mZnNldDsgfQorICAgICAgICBzdGF0aWMg
dWludDY0X3QgZmxhZ0FmZmVjdGVkQnlIb3ZlcigpIHsgcmV0dXJuIG9uZUJpdE1hc2sgPDwgYWZm
ZWN0ZWRCeUhvdmVyT2Zmc2V0OyB9CisgICAgICAgIHN0YXRpYyB1aW50NjRfdCBmbGFnQWZmZWN0
ZWRCeUFjdGl2ZSgpIHsgcmV0dXJuIG9uZUJpdE1hc2sgPDwgYWZmZWN0ZWRCeUFjdGl2ZU9mZnNl
dDsgfQorICAgICAgICBzdGF0aWMgdWludDY0X3QgZmxhZ0FmZmVjdGVkQnlEcmFnKCkgeyByZXR1
cm4gb25lQml0TWFzayA8PCBhZmZlY3RlZEJ5RHJhZ09mZnNldDsgfQogICAgIHByaXZhdGU6CiAg
ICAgICAgIHZvaWQgdXBkYXRlQm9vbGVhbihib29sIGlzU2V0LCB1aW50NjRfdCBvZmZzZXQpCiAg
ICAgICAgIHsKQEAgLTMxMSw2ICszMTAsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KChtX2ZsYWdzID4+IG9mZnNldCkgJiBwb3NpdGlvbkluZGVw
ZW5kZW50TWFzayk7CiAgICAgICAgIH0KIAorICAgICAgICBzdGF0aWMgdWludDY0X3QgZmxhZ0lz
VW5pcXVlKCkgeyByZXR1cm4gb25lQml0TWFzayA8PCBpc1VuaXF1ZU9mZnNldDsgfQorICAgICAg
ICBzdGF0aWMgdWludDY0X3QgZmxhZ0ZpcnN0Q2hpbGRTdGF0ZSgpIHsgcmV0dXJuIG9uZUJpdE1h
c2sgPDwgZmlyc3RDaGlsZFN0YXRlT2Zmc2V0OyB9CisKICAgICAgICAgLy8gVG8gdHlwZSB0aGUg
Yml0IG1hc2sgcHJvcGVybHkgb24gNjRiaXRzLgogICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0
X3Qgb25lQml0TWFzayA9IDB4MTsKIApAQCAtMTk0Miw2ICsxOTQ0LDggQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29sYXRpb24gaW5pdGlhbElzb2xhdGlvbigpIHsgcmV0dXJuIElzb2xhdGlvbkF1
dG87IH0KICNlbmRpZgogCisgICAgc3RhdGljIHB0cmRpZmZfdCBub25pbmhlcml0ZWRGbGFnc01l
bW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZW5kZXJTdHlsZSwgbm9uaW5o
ZXJpdGVkX2ZsYWdzKTsgfQorCiBwcml2YXRlOgogICAgIGJvb2wgY2hhbmdlUmVxdWlyZXNMYXlv
dXQoY29uc3QgUmVuZGVyU3R5bGUqLCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQ
cm9wZXJ0aWVzKSBjb25zdDsKICAgICBib29sIGNoYW5nZVJlcXVpcmVzUG9zaXRpb25lZExheW91
dE9ubHkoY29uc3QgUmVuZGVyU3R5bGUqLCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRp
dmVQcm9wZXJ0aWVzKSBjb25zdDsKQEAgLTIwMjUsOCArMjAyOSw2IEBAIHByaXZhdGU6CiAgICAg
Q29sb3IgbGlnaHRpbmdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkubGlnaHRpbmdD
b2xvcigpOyB9CiAKICAgICB2b2lkIGFwcGVuZENvbnRlbnQoc3RkOjp1bmlxdWVfcHRyPENvbnRl
bnREYXRhPik7Ci0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG5vbmluaGVyaXRlZEZsYWdzTWVtb3J5
T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJlbmRlclN0eWxlLCBub25pbmhlcml0
ZWRfZmxhZ3MpOyB9CiB9OwogCiBpbmxpbmUgaW50IGFkanVzdEZvckFic29sdXRlWm9vbShpbnQg
dmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkK
</data>
<flag name="review"
          id="252417"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>