<?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>35332</bug_id>
          
          <creation_ts>2010-02-24 00:21:30 -0800</creation_ts>
          <short_desc>Speed up getter performance in the jit</short_desc>
          <delta_ts>2010-02-24 11:48:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Oliver Hunt">oliver</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>193261</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-02-24 00:21:30 -0800</bug_when>
    <thetext>Speed up getter performance in the jit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193263</commentid>
    <comment_count>1</comment_count>
      <attachid>49362</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-02-24 00:37:48 -0800</bug_when>
    <thetext>Created attachment 49362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193266</commentid>
    <comment_count>2</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-02-24 00:55:08 -0800</bug_when>
    <thetext>I thought you said you&apos;d written layout tests? - why aren&apos;t these included in the patch?
r+ anyway, but should have tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193440</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-02-24 11:48:10 -0800</bug_when>
    <thetext>Committed r55185: &lt;http://trac.webkit.org/changeset/55185&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49362</attachid>
            <date>2010-02-24 00:37:48 -0800</date>
            <delta_ts>2010-02-24 00:53:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35332-20100224003747.patch</filename>
            <type>text/plain</type>
            <size>38772</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA4MjI2YWFhLi41YzVhYzViIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMg
QEAKKzIwMTAtMDItMjQgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGVlZCB1cCBnZXR0ZXIg
cGVyZm9ybWFuY2UgaW4gdGhlIGppdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzUzMzIKKworICAgICAgICBJbXBsZW1lbnQgZ2V0dGVyIGxvb2t1cCBj
YWNoaW5nIGluIHRoZSBpbnRlcnByZXRlci4KKyAgICAgICAgVGhlIGdldHRlciBzdHVicyBhcmUg
Z2VuZXJhdGVkIHRocm91Z2ggYmFzaWNhbGx5IHRoZQorICAgICAgICBzYW1lIGNvZGUgcGF0aHMg
YXMgdGhlIG5vcm1hbCBnZXRfYnlfaWQgY2FjaGluZy4KKyAgICAgICAgSW5zdGVhZCBvZiBzaW1w
bHkgbG9hZGluZyBhIHByb3BlcnR5IGFuZCByZXR1cm5pbmcsCisgICAgICAgIHdlIGxvYWQgdGhl
IGdldHRlciBzbG90LCBhbmQgcGFzcyB0aGUgZ2V0dGVyLCBiYXNlIHZhbHVlCisgICAgICAgIGFu
ZCByZXR1cm4gYWRkcmVzcyB0byBhIHNoYXJlZCBzdHViIHVzZWQgZm9yIGdldHRlcgorICAgICAg
ICBkaXNwYXRjaC4KKworICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpTQzo6SklUOjpj
b21waWxlR2V0QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFNl
bGZMaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFByb3RvTGlzdCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlND
OjpKSVQ6OmNvbXBpbGVHZXRCeUlkQ2hhaW4pOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8p
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdCk6CisgICAgICAgIChK
U0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4pOgorICAgICAgICAqIGppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGls
ZUdldEJ5SWRQcm90byk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
U2VsZkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3Rv
TGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbik6CisgICAg
ICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNo
ZUdldEJ5SUQpOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAg
ICogaml0L0pJVFN0dWJzLmg6CisgICAgICAgIChKU0M6Oik6CisgICAgICAgICogcnVudGltZS9H
ZXR0ZXJTZXR0ZXIuaDoKKwogMjAxMC0wMi0yMyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmlu
ZGV4IGJmYmIxZWUuLjM3Yzk1YjkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAorKysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTI4MywzMiArMjgzLDMyIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIEpJVChnbG9iYWxEYXRhLCBjb2RlQmxv
Y2spLnByaXZhdGVDb21waWxlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBj
b21waWxlR2V0QnlJZFByb3RvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwg
c2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQorICAg
ICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFByb3RvKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHBy
b3RvdHlwZVN0cnVjdHVyZSwgYm9vbCBpc0dldHRlciwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQg
aml0KGdsb2JhbERhdGEsIGNvZGVCbG9jayk7Ci0gICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBp
bGVHZXRCeUlkUHJvdG8oc3R1YkluZm8sIHN0cnVjdHVyZSwgcHJvdG90eXBlU3RydWN0dXJlLCBj
YWNoZWRPZmZzZXQsIHJldHVybkFkZHJlc3MsIGNhbGxGcmFtZSk7CisgICAgICAgICAgICBqaXQu
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oc3R1YkluZm8sIHN0cnVjdHVyZSwgcHJvdG90eXBl
U3RydWN0dXJlLCBpc0dldHRlciwgY2FjaGVkT2Zmc2V0LCByZXR1cm5BZGRyZXNzLCBjYWxsRnJh
bWUpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRTZWxm
TGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCog
cG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCkKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdl
dEJ5SWRTZWxmTGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENvZGVCbG9jayogY29kZUJs
b2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0
dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgYm9vbCBpc0dldHRlciwgc2l6ZV90IGNhY2hlZE9mZnNldCkKICAgICAg
ICAgewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwotICAgICAg
ICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KHN0dWJJbmZvLCBwb2x5bW9y
cGhpY1N0cnVjdHVyZXMsIGN1cnJlbnRJbmRleCwgc3RydWN0dXJlLCBjYWNoZWRPZmZzZXQpOwor
ICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KHN0dWJJbmZvLCBw
b2x5bW9ycGhpY1N0cnVjdHVyZXMsIGN1cnJlbnRJbmRleCwgc3RydWN0dXJlLCBpc0dldHRlciwg
Y2FjaGVkT2Zmc2V0KTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0
QnlJZFByb3RvTGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZy
YW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQ
b2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGlu
dCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlw
ZVN0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCkKKyAgICAgICAgc3RhdGljIHZvaWQgY29t
cGlsZUdldEJ5SWRQcm90b0xpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVM
aXN0LCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBw
cm90b3R5cGVTdHJ1Y3R1cmUsIGJvb2wgaXNHZXR0ZXIsIHNpemVfdCBjYWNoZWRPZmZzZXQpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKLSAg
ICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3Qoc3R1YkluZm8sIHBy
b3RvdHlwZVN0cnVjdHVyZUxpc3QsIGN1cnJlbnRJbmRleCwgc3RydWN0dXJlLCBwcm90b3R5cGVT
dHJ1Y3R1cmUsIGNhY2hlZE9mZnNldCwgY2FsbEZyYW1lKTsKKyAgICAgICAgICAgIGppdC5wcml2
YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3Qoc3R1YkluZm8sIHByb3RvdHlwZVN0cnVjdHVyZUxp
c3QsIGN1cnJlbnRJbmRleCwgc3RydWN0dXJlLCBwcm90b3R5cGVTdHJ1Y3R1cmUsIGlzR2V0dGVy
LCBjYWNoZWRPZmZzZXQsIGNhbGxGcmFtZSk7CiAgICAgICAgIH0KLSAgICAgICAgc3RhdGljIHZv
aWQgY29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1
Y3R1cmVMaXN0LCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0
dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCisgICAg
ICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCog
cHJvdG90eXBlU3RydWN0dXJlTGlzdCwgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBib29sIGlzR2V0dGVy
LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KGds
b2JhbERhdGEsIGNvZGVCbG9jayk7Ci0gICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVHZXRC
eUlkQ2hhaW5MaXN0KHN0dWJJbmZvLCBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBjdXJyZW50SW5k
ZXgsIHN0cnVjdHVyZSwgY2hhaW4sIGNvdW50LCBjYWNoZWRPZmZzZXQsIGNhbGxGcmFtZSk7Cisg
ICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KHN0dWJJbmZvLCBw
cm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBjdXJyZW50SW5kZXgsIHN0cnVjdHVyZSwgY2hhaW4sIGNv
dW50LCBpc0dldHRlciwgY2FjaGVkT2Zmc2V0LCBjYWxsRnJhbWUpOwogICAgICAgICB9CiAKLSAg
ICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRDaGFpbihKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hh
aW4qIGNoYWluLCBzaXplX3QgY291bnQsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcykKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRD
aGFpbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGJvb2wgaXNH
ZXR0ZXIsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVz
cykKICAgICAgICAgewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2sp
OwotICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKHN0dWJJbmZvLCBz
dHJ1Y3R1cmUsIGNoYWluLCBjb3VudCwgY2FjaGVkT2Zmc2V0LCByZXR1cm5BZGRyZXNzLCBjYWxs
RnJhbWUpOworICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKHN0dWJJ
bmZvLCBzdHJ1Y3R1cmUsIGNoYWluLCBjb3VudCwgaXNHZXR0ZXIsIGNhY2hlZE9mZnNldCwgcmV0
dXJuQWRkcmVzcywgY2FsbEZyYW1lKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3Rh
dGljIHZvaWQgY29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBzaXplX3QgY2Fj
aGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcykKQEAgLTM1NCwxMSArMzU0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIHByaXZhdGVDb21waWxlTGlua1Bhc3MoKTsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGls
ZVNsb3dDYXNlcygpOwogICAgICAgICBKSVRDb2RlIHByaXZhdGVDb21waWxlKCk7Ci0gICAgICAg
IHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1
Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7
Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1
YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSos
IHNpemVfdCBjYWNoZWRPZmZzZXQpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJ
ZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJl
TGlzdCosIGludCwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIHNp
emVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKLSAgICAgICAgdm9pZCBw
cml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qLCBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSosIFN0cnVjdHVyZUNoYWlu
KiBjaGFpbiwgc2l6ZV90IGNvdW50LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0
dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmVDaGFpbiosIHNpemVfdCBjb3VudCwg
c2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSk7CisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJv
dG8oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0
cnVjdHVyZSwgYm9vbCBpc0dldHRlciwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7CisgICAgICAgIHZvaWQg
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qLCBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSosIGJvb2wgaXNHZXR0ZXIs
IHNpemVfdCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJ
ZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJl
TGlzdCosIGludCwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGJv
b2wgaXNHZXR0ZXIsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsK
KyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1
YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSos
IFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBib29sIGlzR2V0dGVyLCBzaXpl
X3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7CisgICAgICAgIHZvaWQgcHJp
dmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBT
dHJ1Y3R1cmVDaGFpbiosIHNpemVfdCBjb3VudCwgYm9vbCBpc0dldHRlciwgc2l6ZV90IGNhY2hl
ZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSk7CiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1
Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVyZSosIHNpemVfdCBjYWNoZWRPZmZz
ZXQsIFN0cnVjdHVyZUNoYWluKiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKTsKIAog
ICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlQ1RJTWFjaGluZVRyYW1wb2xpbmVzKFJlZlB0cjxF
eGVjdXRhYmxlUG9vbD4qIGV4ZWN1dGFibGVQb29sLCBKU0dsb2JhbERhdGEqIGRhdGEsIFRyYW1w
b2xpbmVTdHJ1Y3R1cmUgKnRyYW1wb2xpbmVzKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCmluZGV4IDE1MWJiMDMuLjRkM2M2MTIgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShKSVQp
CiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNp
bmNsdWRlICJKSVRJbmxpbmVNZXRob2RzLmgiCiAjaW5jbHVkZSAiSklUU3R1YkNhbGwuaCIKICNp
bmNsdWRlICJKU0FycmF5LmgiCkBAIC02OTUsNyArNjk2LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Mp
CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3Ms
IEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfYXJyYXlfZmFpbCkpOwogfQogCi12b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIHNp
emVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJl
KiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGJvb2wgaXNHZXR0ZXIsIHNpemVfdCBjYWNoZWRPZmZzZXQs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
CiAgICAgLy8gVGhlIHByb3RvdHlwZSBvYmplY3QgZGVmaW5pdGVseSBleGlzdHMgKGlmIHRoaXMg
c3R1YiBleGlzdHMgdGhlIENvZGVCbG9jayBpcyByZWZlcmVuY2luZyBhIFN0cnVjdHVyZSB0aGF0
IGlzCiAgICAgLy8gcmVmZXJlbmNpbmcgdGhlIHByb3RvdHlwZSBvYmplY3QgLSBsZXQncyBzcGVj
dWxhdGl2ZWx5IGxvYWQgaXQncyB0YWJsZSBuaWNlIGFuZCBlYXJseSEpCkBAIC03MTMsMTEgKzcx
NCwxNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cgogICAgIEp1bXAgZmFpbHVyZUNhc2VzMiA9
IGJyYW5jaFB0cihOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKHByb3RvdHlwZVN0cnVjdHVyZUFk
ZHJlc3MpLCBJbW1QdHIocHJvdG90eXBlU3RydWN0dXJlKSk7CiAjZW5kaWYKIAotICAgIC8vIENo
ZWNrcyBvdXQgb2theSEgLSBnZXREaXJlY3RPZmZzZXQKLSAgICBjb21waWxlR2V0RGlyZWN0T2Zm
c2V0KHByb3RvT2JqZWN0LCByZWdUMSwgcmVnVDAsIGNhY2hlZE9mZnNldCk7Ci0KKyAgICAvLyBD
aGVja3Mgb3V0IG9rYXkhCisgICAgaWYgKGlzR2V0dGVyKSB7CisgICAgICAgIGNvbXBpbGVHZXRE
aXJlY3RPZmZzZXQocHJvdG9PYmplY3QsIHJlZ1QxLCByZWdUMSwgY2FjaGVkT2Zmc2V0KTsKKyAg
ICAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2dldF9ieV9pZF9nZXR0ZXJf
c3R1Yik7CisgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxKTsKKyAgICAgICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJ
bW1QdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSk7
CisgICAgICAgIHN0dWJDYWxsLmNhbGwoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY29tcGlsZUdl
dERpcmVjdE9mZnNldChwcm90b09iamVjdCwgcmVnVDEsIHJlZ1QwLCBjYWNoZWRPZmZzZXQpOwog
ICAgIEp1bXAgc3VjY2VzcyA9IGp1bXAoKTsKLQogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
dGhpcywgbV9jb2RlQmxvY2stPmV4ZWN1dGFibGVQb29sKCkpOwogCiAgICAgLy8gVXNlIHRoZSBw
YXRjaCBpbmZvcm1hdGlvbiB0byBsaW5rIHRoZSBmYWlsdXJlIGNhc2VzIGJhY2sgdG8gdGhlIG9y
aWdpbmFsIHNsb3cgY2FzZSByb3V0aW5lLgpAQCAtNzI4LDYgKzczNSwxMiBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBT
dHJ1Y3R1cmUqIHN0cgogICAgIC8vIE9uIHN1Y2Nlc3MgcmV0dXJuIGJhY2sgdG8gdGhlIGhvdCBw
YXRjaCBjb2RlLCBhdCBhIHBvaW50IGl0IHdpbGwgcGVyZm9ybSB0aGUgc3RvcmUgdG8gZGVzdCBm
b3IgdXMuCiAgICAgcGF0Y2hCdWZmZXIubGluayhzdWNjZXNzLCBzdHViSW5mby0+aG90UGF0aEJl
Z2luLmxhYmVsQXRPZmZzZXQocGF0Y2hPZmZzZXRHZXRCeUlkUHV0UmVzdWx0KSk7CiAKKyAgICBp
ZiAoaXNHZXR0ZXIpIHsKKyAgICAgICAgZm9yIChWZWN0b3I8Q2FsbFJlY29yZD46Oml0ZXJhdG9y
IGl0ZXIgPSBtX2NhbGxzLmJlZ2luKCk7IGl0ZXIgIT0gbV9jYWxscy5lbmQoKTsgKytpdGVyKSB7
CisgICAgICAgICAgICBpZiAoaXRlci0+dG8pCisgICAgICAgICAgICAgICAgcGF0Y2hCdWZmZXIu
bGluayhpdGVyLT5mcm9tLCBGdW5jdGlvblB0cihpdGVyLT50bykpOworICAgICAgICB9CisgICAg
fQogICAgIC8vIFRyYWNrIHRoZSBzdHViIHdlIGhhdmUgY3JlYXRlZCBzbyB0aGF0IGl0IHdpbGwg
YmUgZGVsZXRlZCBsYXRlci4KICAgICBDb2RlTG9jYXRpb25MYWJlbCBlbnRyeUxhYmVsID0gcGF0
Y2hCdWZmZXIuZmluYWxpemVDb2RlQWRkZW5kdW0oKTsKICAgICBzdHViSW5mby0+c3R1YlJvdXRp
bmUgPSBlbnRyeUxhYmVsOwpAQCAtNzQxLDE0ICs3NTQsMjkgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJl
KiBzdHIKICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvRnVuY3Rpb24ocmV0dXJuQWRk
cmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZF9wcm90b19saXN0KSk7CiB9CiAKLXZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1
Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGNh
Y2hlZE9mZnNldCkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCog
cG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgYm9vbCBpc0dldHRlciwgc2l6ZV90IGNhY2hlZE9mZnNldCkKIHsKICAgICBKdW1wIGZh
aWx1cmVDYXNlID0gY2hlY2tTdHJ1Y3R1cmUocmVnVDAsIHN0cnVjdHVyZSk7Ci0gICAgY29tcGls
ZUdldERpcmVjdE9mZnNldChyZWdUMCwgcmVnVDAsIHN0cnVjdHVyZSwgY2FjaGVkT2Zmc2V0KTsK
KyAgICBpZiAoaXNHZXR0ZXIpIHsKKyAgICAgICAgY29tcGlsZUdldERpcmVjdE9mZnNldChyZWdU
MCwgcmVnVDEsIHN0cnVjdHVyZSwgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgSklUU3R1YkNhbGwg
c3R1YkNhbGwodGhpcywgY3RpX29wX2dldF9ieV9pZF9nZXR0ZXJfc3R1Yik7CisgICAgICAgIHN0
dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
cmVnVDApOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW1QdHIoc3R1YkluZm8tPmNh
bGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgIHN0dWJDYWxs
LmNhbGwoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY29tcGlsZUdldERpcmVjdE9mZnNldChyZWdU
MCwgcmVnVDAsIHN0cnVjdHVyZSwgY2FjaGVkT2Zmc2V0KTsKICAgICBKdW1wIHN1Y2Nlc3MgPSBq
dW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKHRoaXMsIG1fY29kZUJsb2NrLT5l
eGVjdXRhYmxlUG9vbCgpKTsKIAorICAgIGlmIChpc0dldHRlcikgeworICAgICAgICBmb3IgKFZl
Y3RvcjxDYWxsUmVjb3JkPjo6aXRlcmF0b3IgaXRlciA9IG1fY2FsbHMuYmVnaW4oKTsgaXRlciAh
PSBtX2NhbGxzLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgICAgIGlmIChpdGVyLT50bykKKyAg
ICAgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGl0ZXItPmZyb20sIEZ1bmN0aW9uUHRyKGl0
ZXItPnRvKSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBVc2UgdGhlIHBhdGNoIGluZm9y
bWF0aW9uIHRvIGxpbmsgdGhlIGZhaWx1cmUgY2FzZXMgYmFjayB0byB0aGUgb3JpZ2luYWwgc2xv
dyBjYXNlIHJvdXRpbmUuCiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgbGFzdFByb3RvQmVnaW4gPSBw
b2x5bW9ycGhpY1N0cnVjdHVyZXMtPmxpc3RbY3VycmVudEluZGV4IC0gMV0uc3R1YlJvdXRpbmU7
CiAgICAgaWYgKCFsYXN0UHJvdG9CZWdpbikKQEAgLTc3MCw3ICs3OTgsNyBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBQb2x5bW9ycGhpYwogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgZW50
cnlMYWJlbCk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3Qo
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxp
c3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGJvb2wgaXNH
ZXR0ZXIsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IC8vIFRoZSBwcm90b3R5cGUgb2JqZWN0IGRlZmluaXRlbHkgZXhpc3RzIChpZiB0aGlzIHN0dWIg
ZXhpc3RzIHRoZSBDb2RlQmxvY2sgaXMgcmVmZXJlbmNpbmcgYSBTdHJ1Y3R1cmUgdGhhdCBpcwog
ICAgIC8vIHJlZmVyZW5jaW5nIHRoZSBwcm90b3R5cGUgb2JqZWN0IC0gbGV0J3Mgc3BlY3VsYXRp
dmVseSBsb2FkIGl0J3MgdGFibGUgbmljZSBhbmQgZWFybHkhKQpAQCAtNzg4LDEzICs4MTYsMjgg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGkKICAgICBKdW1wIGZhaWx1cmVDYXNlczIgPSBicmFu
Y2hQdHIoTm90RXF1YWwsIEFic29sdXRlQWRkcmVzcyhwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNz
KSwgSW1tUHRyKHByb3RvdHlwZVN0cnVjdHVyZSkpOwogI2VuZGlmCiAKLSAgICAvLyBDaGVja3Mg
b3V0IG9rYXkhIC0gZ2V0RGlyZWN0T2Zmc2V0Ci0gICAgY29tcGlsZUdldERpcmVjdE9mZnNldChw
cm90b09iamVjdCwgcmVnVDEsIHJlZ1QwLCBjYWNoZWRPZmZzZXQpOworICAgIC8vIENoZWNrcyBv
dXQgb2theSEKKyAgICBpZiAoaXNHZXR0ZXIpIHsKKyAgICAgICAgY29tcGlsZUdldERpcmVjdE9m
ZnNldChwcm90b09iamVjdCwgcmVnVDEsIHJlZ1QxLCBjYWNoZWRPZmZzZXQpOworICAgICAgICBK
SVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfZ2V0X2J5X2lkX2dldHRlcl9zdHViKTsK
KyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDEpOworICAgICAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChyZWdUMCk7CisgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbVB0cihz
dHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAg
ICAgc3R1YkNhbGwuY2FsbCgpOworICAgIH0gZWxzZQorICAgICAgICBjb21waWxlR2V0RGlyZWN0
T2Zmc2V0KHByb3RvT2JqZWN0LCByZWdUMSwgcmVnVDAsIGNhY2hlZE9mZnNldCk7CiAKICAgICBK
dW1wIHN1Y2Nlc3MgPSBqdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKHRoaXMs
IG1fY29kZUJsb2NrLT5leGVjdXRhYmxlUG9vbCgpKTsKIAorICAgIGlmIChpc0dldHRlcikgewor
ICAgICAgICBmb3IgKFZlY3RvcjxDYWxsUmVjb3JkPjo6aXRlcmF0b3IgaXRlciA9IG1fY2FsbHMu
YmVnaW4oKTsgaXRlciAhPSBtX2NhbGxzLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgICAgIGlm
IChpdGVyLT50bykKKyAgICAgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGl0ZXItPmZyb20s
IEZ1bmN0aW9uUHRyKGl0ZXItPnRvKSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBVc2Ug
dGhlIHBhdGNoIGluZm9ybWF0aW9uIHRvIGxpbmsgdGhlIGZhaWx1cmUgY2FzZXMgYmFjayB0byB0
aGUgb3JpZ2luYWwgc2xvdyBjYXNlIHJvdXRpbmUuCiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgbGFz
dFByb3RvQmVnaW4gPSBwcm90b3R5cGVTdHJ1Y3R1cmVzLT5saXN0W2N1cnJlbnRJbmRleCAtIDFd
LnN0dWJSb3V0aW5lOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZmFpbHVyZUNhc2VzMSwgbGFzdFBy
b3RvQmVnaW4pOwpAQCAtODE1LDEwICs4NTgsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaQog
ICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgZW50cnlMYWJlbCk7CiB9CiAK
LXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0
cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1
cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0
KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGJvb2wgaXNHZXR0
ZXIsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIEFT
U0VSVChjb3VudCk7Ci0gICAgCiAgICAgSnVtcExpc3QgYnVja2V0c09mRmFpbDsKIAogICAgIC8v
IENoZWNrIGVheCBpcyBhbiBvYmplY3Qgb2YgdGhlIHJpZ2h0IFN0cnVjdHVyZS4KQEAgLTg0Miwx
MSArODg0LDI2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpCiAjZW5kaWYKICAgICB9CiAgICAg
QVNTRVJUKHByb3RvT2JqZWN0KTsKLQotICAgIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQocHJvdG9P
YmplY3QsIHJlZ1QxLCByZWdUMCwgY2FjaGVkT2Zmc2V0KTsKKyAgICAKKyAgICBpZiAoaXNHZXR0
ZXIpIHsKKyAgICAgICAgY29tcGlsZUdldERpcmVjdE9mZnNldChwcm90b09iamVjdCwgcmVnVDEs
IHJlZ1QxLCBjYWNoZWRPZmZzZXQpOworICAgICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlz
LCBjdGlfb3BfZ2V0X2J5X2lkX2dldHRlcl9zdHViKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQocmVnVDEpOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7CisgICAg
ICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbVB0cihzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0
aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgc3R1YkNhbGwuY2FsbCgpOworICAg
IH0gZWxzZQorICAgICAgICBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KHByb3RvT2JqZWN0LCByZWdU
MSwgcmVnVDAsIGNhY2hlZE9mZnNldCk7CiAgICAgSnVtcCBzdWNjZXNzID0ganVtcCgpOwogCiAg
ICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcih0aGlzLCBtX2NvZGVCbG9jay0+ZXhlY3V0YWJsZVBv
b2woKSk7CisgICAgCisgICAgaWYgKGlzR2V0dGVyKSB7CisgICAgICAgIGZvciAoVmVjdG9yPENh
bGxSZWNvcmQ+OjppdGVyYXRvciBpdGVyID0gbV9jYWxscy5iZWdpbigpOyBpdGVyICE9IG1fY2Fs
bHMuZW5kKCk7ICsraXRlcikgeworICAgICAgICAgICAgaWYgKGl0ZXItPnRvKQorICAgICAgICAg
ICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoaXRlci0+ZnJvbSwgRnVuY3Rpb25QdHIoaXRlci0+dG8p
KTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIC8vIFVzZSB0aGUgcGF0Y2ggaW5mb3JtYXRpb24g
dG8gbGluayB0aGUgZmFpbHVyZSBjYXNlcyBiYWNrIHRvIHRoZSBvcmlnaW5hbCBzbG93IGNhc2Ug
cm91dGluZS4KICAgICBDb2RlTG9jYXRpb25MYWJlbCBsYXN0UHJvdG9CZWdpbiA9IHByb3RvdHlw
ZVN0cnVjdHVyZXMtPmxpc3RbY3VycmVudEluZGV4IC0gMV0uc3R1YlJvdXRpbmU7CkBAIC04Njks
MTAgKzkyNiwxMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaQogICAgIHJlcGF0Y2hCdWZmZXIu
cmVsaW5rKGp1bXBMb2NhdGlvbiwgZW50cnlMYWJlbCk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgc2l6ZV90
IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFp
biogY2hhaW4sIHNpemVfdCBjb3VudCwgYm9vbCBpc0dldHRlciwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKICAgICBBU1NFUlQoY291bnQpOwotICAgIAorCiAgICAgSnVtcExpc3QgYnVja2V0c09mRmFp
bDsKIAogICAgIC8vIENoZWNrIGVheCBpcyBhbiBvYmplY3Qgb2YgdGhlIHJpZ2h0IFN0cnVjdHVy
ZS4KQEAgLTg5NSwxMiArOTUyLDI3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRD
aGFpbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RyCiAjZW5kaWYK
ICAgICB9CiAgICAgQVNTRVJUKHByb3RvT2JqZWN0KTsKLQotICAgIGNvbXBpbGVHZXREaXJlY3RP
ZmZzZXQocHJvdG9PYmplY3QsIHJlZ1QxLCByZWdUMCwgY2FjaGVkT2Zmc2V0KTsKKyAgICAKKyAg
ICBpZiAoaXNHZXR0ZXIpIHsKKyAgICAgICAgY29tcGlsZUdldERpcmVjdE9mZnNldChwcm90b09i
amVjdCwgcmVnVDEsIHJlZ1QxLCBjYWNoZWRPZmZzZXQpOworICAgICAgICBKSVRTdHViQ2FsbCBz
dHViQ2FsbCh0aGlzLCBjdGlfb3BfZ2V0X2J5X2lkX2dldHRlcl9zdHViKTsKKyAgICAgICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQocmVnVDEpOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChy
ZWdUMCk7CisgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbVB0cihzdHViSW5mby0+Y2Fs
bFJldHVybkxvY2F0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgc3R1YkNhbGwu
Y2FsbCgpOworICAgIH0gZWxzZQorICAgICAgICBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KHByb3Rv
T2JqZWN0LCByZWdUMSwgcmVnVDAsIGNhY2hlZE9mZnNldCk7CiAgICAgSnVtcCBzdWNjZXNzID0g
anVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcih0aGlzLCBtX2NvZGVCbG9jay0+
ZXhlY3V0YWJsZVBvb2woKSk7CiAKKyAgICBpZiAoaXNHZXR0ZXIpIHsKKyAgICAgICAgZm9yIChW
ZWN0b3I8Q2FsbFJlY29yZD46Oml0ZXJhdG9yIGl0ZXIgPSBtX2NhbGxzLmJlZ2luKCk7IGl0ZXIg
IT0gbV9jYWxscy5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgICAgICBpZiAoaXRlci0+dG8pCisg
ICAgICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhpdGVyLT5mcm9tLCBGdW5jdGlvblB0cihp
dGVyLT50bykpOworICAgICAgICB9CisgICAgfQorCiAgICAgLy8gVXNlIHRoZSBwYXRjaCBpbmZv
cm1hdGlvbiB0byBsaW5rIHRoZSBmYWlsdXJlIGNhc2VzIGJhY2sgdG8gdGhlIG9yaWdpbmFsIHNs
b3cgY2FzZSByb3V0aW5lLgogICAgIHBhdGNoQnVmZmVyLmxpbmsoYnVja2V0c09mRmFpbCwgc3R1
YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KC1wYXRjaE9mZnNldEdldEJ5
SWRTbG93Q2FzZUNhbGwpKTsKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwCmluZGV4IGY5ZTMyM2QuLmM4NzE1NzkgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTcxOCw3ICs3MTgsNyBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuZ3RoKFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcykKICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvRnVuY3Rpb24o
cmV0dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZF9hcnJheV9mYWlsKSk7
CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlw
ZVN0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5B
ZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdl
dEJ5SWRQcm90byhTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgYm9vbCBpc0dldHRlciwgc2l6ZV90
IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICAKQEAgLTcz
Nyw4ICs3MzcsMTYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHIKICAgICBKdW1wIGZhaWx1cmVD
YXNlczIgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFic29sdXRlQWRkcmVzcyhwcm90b3R5cGVTdHJ1
Y3R1cmVBZGRyZXNzKSwgSW1tUHRyKHByb3RvdHlwZVN0cnVjdHVyZSkpOwogI2VuZGlmCiAgICAg
Ci0gICAgLy8gQ2hlY2tzIG91dCBva2F5ISAtIGdldERpcmVjdE9mZnNldAotICAgIGNvbXBpbGVH
ZXREaXJlY3RPZmZzZXQocHJvdG9PYmplY3QsIHJlZ1QyLCByZWdUMSwgcmVnVDAsIGNhY2hlZE9m
ZnNldCk7CisgICAgLy8gQ2hlY2tzIG91dCBva2F5IQorICAgIGlmIChpc0dldHRlcikgeworICAg
ICAgICBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KHByb3RvT2JqZWN0LCByZWdUMiwgcmVnVDIsIHJl
Z1QxLCBjYWNoZWRPZmZzZXQpOworICAgICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBj
dGlfb3BfZ2V0X2J5X2lkX2dldHRlcl9zdHViKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1l
bnQocmVnVDEpOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7CisgICAgICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbVB0cihzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9u
LmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgc3R1YkNhbGwuY2FsbCgpOworICAgIH0g
ZWxzZQorICAgICAgICBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KHByb3RvT2JqZWN0LCByZWdUMiwg
cmVnVDEsIHJlZ1QwLCBjYWNoZWRPZmZzZXQpOwogICAgIAogICAgIEp1bXAgc3VjY2VzcyA9IGp1
bXAoKTsKICAgICAKQEAgLTc1MSw3ICs3NTksMTQgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHIK
ICAgICAKICAgICAvLyBPbiBzdWNjZXNzIHJldHVybiBiYWNrIHRvIHRoZSBob3QgcGF0Y2ggY29k
ZSwgYXQgYSBwb2ludCBpdCB3aWxsIHBlcmZvcm0gdGhlIHN0b3JlIHRvIGRlc3QgZm9yIHVzLgog
ICAgIHBhdGNoQnVmZmVyLmxpbmsoc3VjY2Vzcywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJl
bEF0T2Zmc2V0KHBhdGNoT2Zmc2V0R2V0QnlJZFB1dFJlc3VsdCkpOwotICAgIAorCisgICAgaWYg
KGlzR2V0dGVyKSB7CisgICAgICAgIGZvciAoVmVjdG9yPENhbGxSZWNvcmQ+OjppdGVyYXRvciBp
dGVyID0gbV9jYWxscy5iZWdpbigpOyBpdGVyICE9IG1fY2FsbHMuZW5kKCk7ICsraXRlcikgewor
ICAgICAgICAgICAgaWYgKGl0ZXItPnRvKQorICAgICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxp
bmsoaXRlci0+ZnJvbSwgRnVuY3Rpb25QdHIoaXRlci0+dG8pKTsKKyAgICAgICAgfQorICAgIH0K
KwogICAgIC8vIFRyYWNrIHRoZSBzdHViIHdlIGhhdmUgY3JlYXRlZCBzbyB0aGF0IGl0IHdpbGwg
YmUgZGVsZXRlZCBsYXRlci4KICAgICBDb2RlTG9jYXRpb25MYWJlbCBlbnRyeUxhYmVsID0gcGF0
Y2hCdWZmZXIuZmluYWxpemVDb2RlQWRkZW5kdW0oKTsKICAgICBzdHViSW5mby0+c3R1YlJvdXRp
bmUgPSBlbnRyeUxhYmVsOwpAQCAtNzY2LDE2ICs3ODEsMjkgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJl
KiBzdHIKIH0KIAogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Qq
IHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRC
eUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vz
c1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGJvb2wgaXNHZXR0ZXIsIHNpemVfdCBjYWNoZWRPZmZzZXQp
CiB7CiAgICAgLy8gcmVnVDAgaG9sZHMgYSBKU0NlbGwqCi0gICAgCiAgICAgSnVtcCBmYWlsdXJl
Q2FzZSA9IGNoZWNrU3RydWN0dXJlKHJlZ1QwLCBzdHJ1Y3R1cmUpOwotICAgIGNvbXBpbGVHZXRE
aXJlY3RPZmZzZXQocmVnVDAsIHJlZ1QxLCByZWdUMCwgc3RydWN0dXJlLCBjYWNoZWRPZmZzZXQp
OworICAgIGlmIChpc0dldHRlcikgeworICAgICAgICBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KHJl
Z1QwLCByZWdUMiwgcmVnVDEsIHN0cnVjdHVyZSwgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgSklU
U3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2dldF9ieV9pZF9nZXR0ZXJfc3R1Yik7Cisg
ICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxKTsKKyAgICAgICAgc3R1YkNhbGwuYWRk
QXJndW1lbnQocmVnVDApOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW1QdHIoc3R1
YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAg
IHN0dWJDYWxsLmNhbGwoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY29tcGlsZUdldERpcmVjdE9m
ZnNldChyZWdUMCwgcmVnVDEsIHJlZ1QwLCBzdHJ1Y3R1cmUsIGNhY2hlZE9mZnNldCk7CisKICAg
ICBKdW1wIHN1Y2Nlc3MgPSBqdW1wKCk7CiAgICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cih0aGlzLCBtX2NvZGVCbG9jay0+ZXhlY3V0YWJsZVBvb2woKSk7Ci0gICAgCisgICAgaWYgKGlz
R2V0dGVyKSB7CisgICAgICAgIGZvciAoVmVjdG9yPENhbGxSZWNvcmQ+OjppdGVyYXRvciBpdGVy
ID0gbV9jYWxscy5iZWdpbigpOyBpdGVyICE9IG1fY2FsbHMuZW5kKCk7ICsraXRlcikgeworICAg
ICAgICAgICAgaWYgKGl0ZXItPnRvKQorICAgICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmso
aXRlci0+ZnJvbSwgRnVuY3Rpb25QdHIoaXRlci0+dG8pKTsKKyAgICAgICAgfQorICAgIH0gICAg
CiAgICAgLy8gVXNlIHRoZSBwYXRjaCBpbmZvcm1hdGlvbiB0byBsaW5rIHRoZSBmYWlsdXJlIGNh
c2VzIGJhY2sgdG8gdGhlIG9yaWdpbmFsIHNsb3cgY2FzZSByb3V0aW5lLgogICAgIENvZGVMb2Nh
dGlvbkxhYmVsIGxhc3RQcm90b0JlZ2luID0gcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLT5saXN0W2N1
cnJlbnRJbmRleCAtIDFdLnN0dWJSb3V0aW5lOwogICAgIGlmICghbGFzdFByb3RvQmVnaW4pCkBA
IC03ODUsNyArODEzLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0
KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWMKICAgICAKICAgICAvLyBP
biBzdWNjZXNzIHJldHVybiBiYWNrIHRvIHRoZSBob3QgcGF0Y2ggY29kZSwgYXQgYSBwb2ludCBp
dCB3aWxsIHBlcmZvcm0gdGhlIHN0b3JlIHRvIGRlc3QgZm9yIHVzLgogICAgIHBhdGNoQnVmZmVy
Lmxpbmsoc3VjY2Vzcywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KHBhdGNo
T2Zmc2V0R2V0QnlJZFB1dFJlc3VsdCkpOwotICAgIAorCiAgICAgQ29kZUxvY2F0aW9uTGFiZWwg
ZW50cnlMYWJlbCA9IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZUFkZGVuZHVtKCk7CiAgICAgCiAg
ICAgc3RydWN0dXJlLT5yZWYoKTsKQEAgLTc5Nyw3ICs4MjUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5
bW9ycGhpYwogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgZW50cnlMYWJl
bCk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBy
b3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9M
aXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1
cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGJvb2wgaXNHZXR0ZXIs
IHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIHJl
Z1QwIGhvbGRzIGEgSlNDZWxsKgogICAgIApAQCAtODE3LDEyICs4NDUsMjUgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIFBvbHltb3JwaGkKICAgICBKdW1wIGZhaWx1cmVDYXNlczIgPSBicmFuY2hQdHIoTm90RXF1
YWwsIEFic29sdXRlQWRkcmVzcyhwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzKSwgSW1tUHRyKHBy
b3RvdHlwZVN0cnVjdHVyZSkpOwogI2VuZGlmCiAgICAgCi0gICAgY29tcGlsZUdldERpcmVjdE9m
ZnNldChwcm90b09iamVjdCwgcmVnVDIsIHJlZ1QxLCByZWdUMCwgY2FjaGVkT2Zmc2V0KTsKKyAg
ICBpZiAoaXNHZXR0ZXIpIHsKKyAgICAgICAgY29tcGlsZUdldERpcmVjdE9mZnNldChwcm90b09i
amVjdCwgcmVnVDIsIHJlZ1QyLCByZWdUMSwgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgSklUU3R1
YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2dldF9ieV9pZF9nZXR0ZXJfc3R1Yik7CisgICAg
ICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQocmVnVDApOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW1QdHIoc3R1Yklu
Zm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgIHN0
dWJDYWxsLmNhbGwoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY29tcGlsZUdldERpcmVjdE9mZnNl
dChwcm90b09iamVjdCwgcmVnVDIsIHJlZ1QxLCByZWdUMCwgY2FjaGVkT2Zmc2V0KTsKICAgICAK
ICAgICBKdW1wIHN1Y2Nlc3MgPSBqdW1wKCk7CiAgICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcih0aGlzLCBtX2NvZGVCbG9jay0+ZXhlY3V0YWJsZVBvb2woKSk7Ci0gICAgCisgICAgaWYg
KGlzR2V0dGVyKSB7CisgICAgICAgIGZvciAoVmVjdG9yPENhbGxSZWNvcmQ+OjppdGVyYXRvciBp
dGVyID0gbV9jYWxscy5iZWdpbigpOyBpdGVyICE9IG1fY2FsbHMuZW5kKCk7ICsraXRlcikgewor
ICAgICAgICAgICAgaWYgKGl0ZXItPnRvKQorICAgICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxp
bmsoaXRlci0+ZnJvbSwgRnVuY3Rpb25QdHIoaXRlci0+dG8pKTsKKyAgICAgICAgfQorICAgIH0K
ICAgICAvLyBVc2UgdGhlIHBhdGNoIGluZm9ybWF0aW9uIHRvIGxpbmsgdGhlIGZhaWx1cmUgY2Fz
ZXMgYmFjayB0byB0aGUgb3JpZ2luYWwgc2xvdyBjYXNlIHJvdXRpbmUuCiAgICAgQ29kZUxvY2F0
aW9uTGFiZWwgbGFzdFByb3RvQmVnaW4gPSBwcm90b3R5cGVTdHJ1Y3R1cmVzLT5saXN0W2N1cnJl
bnRJbmRleCAtIDFdLnN0dWJSb3V0aW5lOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZmFpbHVyZUNh
c2VzMSwgbGFzdFByb3RvQmVnaW4pOwpAQCAtODQzLDEwICs4ODQsOSBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
UG9seW1vcnBoaQogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgZW50cnlM
YWJlbCk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Qq
IHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgc2l6ZV90IGNhY2hlZE9m
ZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRC
eUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nl
c3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQs
IGJvb2wgaXNHZXR0ZXIsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewogICAgIC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgotICAgIAogICAgIEFTU0VSVChjb3Vu
dCk7CiAgICAgCiAgICAgSnVtcExpc3QgYnVja2V0c09mRmFpbDsKQEAgLTg3MiwxMSArOTEyLDI1
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpCiAgICAgfQogICAgIEFTU0VSVChwcm90b09iamVj
dCk7CiAgICAgCi0gICAgY29tcGlsZUdldERpcmVjdE9mZnNldChwcm90b09iamVjdCwgcmVnVDIs
IHJlZ1QxLCByZWdUMCwgY2FjaGVkT2Zmc2V0KTsKKyAgICBpZiAoaXNHZXR0ZXIpIHsKKyAgICAg
ICAgY29tcGlsZUdldERpcmVjdE9mZnNldChwcm90b09iamVjdCwgcmVnVDIsIHJlZ1QyLCByZWdU
MSwgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3Rp
X29wX2dldF9ieV9pZF9nZXR0ZXJfc3R1Yik7CisgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50
KHJlZ1QxKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOworICAgICAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChJbW1QdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5l
eGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgIHN0dWJDYWxsLmNhbGwoKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgY29tcGlsZUdldERpcmVjdE9mZnNldChwcm90b09iamVjdCwgcmVnVDIsIHJl
Z1QxLCByZWdUMCwgY2FjaGVkT2Zmc2V0KTsKKwogICAgIEp1bXAgc3VjY2VzcyA9IGp1bXAoKTsK
ICAgICAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKHRoaXMsIG1fY29kZUJsb2NrLT5leGVj
dXRhYmxlUG9vbCgpKTsKLSAgICAKKyAgICBpZiAoaXNHZXR0ZXIpIHsKKyAgICAgICAgZm9yIChW
ZWN0b3I8Q2FsbFJlY29yZD46Oml0ZXJhdG9yIGl0ZXIgPSBtX2NhbGxzLmJlZ2luKCk7IGl0ZXIg
IT0gbV9jYWxscy5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgICAgICBpZiAoaXRlci0+dG8pCisg
ICAgICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhpdGVyLT5mcm9tLCBGdW5jdGlvblB0cihp
dGVyLT50bykpOworICAgICAgICB9CisgICAgfQogICAgIC8vIFVzZSB0aGUgcGF0Y2ggaW5mb3Jt
YXRpb24gdG8gbGluayB0aGUgZmFpbHVyZSBjYXNlcyBiYWNrIHRvIHRoZSBvcmlnaW5hbCBzbG93
IGNhc2Ugcm91dGluZS4KICAgICBDb2RlTG9jYXRpb25MYWJlbCBsYXN0UHJvdG9CZWdpbiA9IHBy
b3RvdHlwZVN0cnVjdHVyZXMtPmxpc3RbY3VycmVudEluZGV4IC0gMV0uc3R1YlJvdXRpbmU7CiAg
ICAgCkBAIC04OTgsMTAgKzk1Miw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRD
aGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpCiAgICAgcmVw
YXRjaEJ1ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBlbnRyeUxhYmVsKTsKIH0KIAotdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNv
dW50LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Ms
IENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENo
YWluKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0
cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBib29sIGlzR2V0dGVyLCBzaXplX3Qg
Y2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgotICAgIAogICAgIEFT
U0VSVChjb3VudCk7CiAgICAgCiAgICAgSnVtcExpc3QgYnVja2V0c09mRmFpbDsKQEAgLTkyNywx
MSArOTgwLDI0IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RyCiAgICAgfQogICAgIEFTU0VSVChw
cm90b09iamVjdCk7CiAgICAgCi0gICAgY29tcGlsZUdldERpcmVjdE9mZnNldChwcm90b09iamVj
dCwgcmVnVDIsIHJlZ1QxLCByZWdUMCwgY2FjaGVkT2Zmc2V0KTsKKyAgICBpZiAoaXNHZXR0ZXIp
IHsKKyAgICAgICAgY29tcGlsZUdldERpcmVjdE9mZnNldChwcm90b09iamVjdCwgcmVnVDIsIHJl
Z1QyLCByZWdUMSwgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwo
dGhpcywgY3RpX29wX2dldF9ieV9pZF9nZXR0ZXJfc3R1Yik7CisgICAgICAgIHN0dWJDYWxsLmFk
ZEFyZ3VtZW50KHJlZ1QxKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwor
ICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW1QdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5M
b2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgIHN0dWJDYWxsLmNhbGwoKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgY29tcGlsZUdldERpcmVjdE9mZnNldChwcm90b09iamVjdCwg
cmVnVDIsIHJlZ1QxLCByZWdUMCwgY2FjaGVkT2Zmc2V0KTsKICAgICBKdW1wIHN1Y2Nlc3MgPSBq
dW1wKCk7CiAgICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcih0aGlzLCBtX2NvZGVCbG9j
ay0+ZXhlY3V0YWJsZVBvb2woKSk7Ci0gICAgCisgICAgaWYgKGlzR2V0dGVyKSB7CisgICAgICAg
IGZvciAoVmVjdG9yPENhbGxSZWNvcmQ+OjppdGVyYXRvciBpdGVyID0gbV9jYWxscy5iZWdpbigp
OyBpdGVyICE9IG1fY2FsbHMuZW5kKCk7ICsraXRlcikgeworICAgICAgICAgICAgaWYgKGl0ZXIt
PnRvKQorICAgICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoaXRlci0+ZnJvbSwgRnVuY3Rp
b25QdHIoaXRlci0+dG8pKTsKKyAgICAgICAgfQorICAgIH0KICAgICAvLyBVc2UgdGhlIHBhdGNo
IGluZm9ybWF0aW9uIHRvIGxpbmsgdGhlIGZhaWx1cmUgY2FzZXMgYmFjayB0byB0aGUgb3JpZ2lu
YWwgc2xvdyBjYXNlIHJvdXRpbmUuCiAgICAgcGF0Y2hCdWZmZXIubGluayhidWNrZXRzT2ZGYWls
LCBzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoLXBhdGNoT2Zmc2V0
R2V0QnlJZFNsb3dDYXNlQ2FsbCkpOwogICAgIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzLmNwcCBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXgg
YmY0MzBhNi4uOTRjYmRkYiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC0zOCw2ICszOCw3
IEBACiAjaW5jbHVkZSAiQ29sbGVjdG9yLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCisjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5j
bHVkZSAiR2xvYmFsRXZhbEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAi
SlNBY3RpdmF0aW9uLmgiCkBAIC04NTYsMTEgKzg1NywxMCBAQCBORVZFUl9JTkxJTkUgdm9pZCBK
SVRUaHVua3M6OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2Nr
KiBjbwogICAgIH0KIAogICAgIC8vIFVuY2FjaGVhYmxlOiBnaXZlIHVwLgotICAgIGlmICghc2xv
dC5pc0NhY2hlYWJsZVZhbHVlKCkpIHsKKyAgICBpZiAoIXNsb3QuaXNDYWNoZWFibGUoKSkgewog
ICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoY29kZUJsb2NrLCByZXR1cm5BZGRy
ZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX2dlbmVyaWMpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBBU1NFUlQoIXNsb3QuaXNHZXR0ZXIoKSk7CiAKICAgICBKU0NlbGwq
IGJhc2VDZWxsID0gYXNDZWxsKGJhc2VWYWx1ZSk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CkBAIC04NzUsOCArODc1LDEwIEBAIE5FVkVSX0lOTElO
RSB2b2lkIEpJVFRodW5rczo6dHJ5Q2FjaGVHZXRCeUlEKENhbGxGcmFtZSogY2FsbEZyYW1lLCBD
b2RlQmxvY2sqIGNvCiAgICAgaWYgKHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpIHsKICAg
ICAgICAgLy8gc2V0IHRoaXMgdXAsIHNvIGRlcmVmU3RydWN0dXJlcyBjYW4gZG8gaXQncyBqb2Iu
CiAgICAgICAgIHN0dWJJbmZvLT5pbml0R2V0QnlJZFNlbGYoc3RydWN0dXJlKTsKLQotICAgICAg
ICBKSVQ6OnBhdGNoR2V0QnlJZFNlbGYoY29kZUJsb2NrLCBzdHViSW5mbywgc3RydWN0dXJlLCBz
bG90LmNhY2hlZE9mZnNldCgpLCByZXR1cm5BZGRyZXNzKTsKKyAgICAgICAgaWYgKHNsb3QuaXNH
ZXR0ZXIoKSkKKyAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhjb2RlQmxv
Y2ssIHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfc2VsZl9mYWls
KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEpJVDo6cGF0Y2hHZXRCeUlkU2VsZihjb2Rl
QmxvY2ssIHN0dWJJbmZvLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHJldHVybkFk
ZHJlc3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MDIsNyArOTA0LDcgQEAgTkVW
RVJfSU5MSU5FIHZvaWQgSklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5SUQoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIENvZGVCbG9jayogY28KIAogICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNEaWN0
aW9uYXJ5KCkpOwogICAgICAgICBBU1NFUlQoIXNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
aXNEaWN0aW9uYXJ5KCkpOwotICAgICAgICBKSVQ6OmNvbXBpbGVHZXRCeUlkUHJvdG8oY2FsbEZy
YW1lLT5zY29wZUNoYWluKCktPmdsb2JhbERhdGEsIGNhbGxGcmFtZSwgY29kZUJsb2NrLCBzdHVi
SW5mbywgc3RydWN0dXJlLCBzbG90QmFzZU9iamVjdC0+c3RydWN0dXJlKCksIG9mZnNldCwgcmV0
dXJuQWRkcmVzcyk7CisgICAgICAgIEpJVDo6Y29tcGlsZUdldEJ5SWRQcm90byhjYWxsRnJhbWUt
PnNjb3BlQ2hhaW4oKS0+Z2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBjb2RlQmxvY2ssIHN0dWJJbmZv
LCBzdHJ1Y3R1cmUsIHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKSwgc2xvdC5pc0dldHRlcigp
LCBvZmZzZXQsIHJldHVybkFkZHJlc3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05
MTUsNyArOTE3LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5
SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY28KIAogICAgIFN0cnVjdHVyZUNo
YWluKiBwcm90b3R5cGVDaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oY2FsbEZyYW1l
KTsKICAgICBzdHViSW5mby0+aW5pdEdldEJ5SWRDaGFpbihzdHJ1Y3R1cmUsIHByb3RvdHlwZUNo
YWluKTsKLSAgICBKSVQ6OmNvbXBpbGVHZXRCeUlkQ2hhaW4oY2FsbEZyYW1lLT5zY29wZUNoYWlu
KCktPmdsb2JhbERhdGEsIGNhbGxGcmFtZSwgY29kZUJsb2NrLCBzdHViSW5mbywgc3RydWN0dXJl
LCBwcm90b3R5cGVDaGFpbiwgY291bnQsIG9mZnNldCwgcmV0dXJuQWRkcmVzcyk7CisgICAgSklU
Ojpjb21waWxlR2V0QnlJZENoYWluKGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5nbG9iYWxEYXRh
LCBjYWxsRnJhbWUsIGNvZGVCbG9jaywgc3R1YkluZm8sIHN0cnVjdHVyZSwgcHJvdG90eXBlQ2hh
aW4sIGNvdW50LCBzbG90LmlzR2V0dGVyKCksIG9mZnNldCwgcmV0dXJuQWRkcmVzcyk7CiB9CiAK
ICNlbmRpZiAvLyBFTkFCTEUoSklUX09QVElNSVpFX1BST1BFUlRZX0FDQ0VTUykKQEAgLTEzNzUs
NyArMTM3Nyw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9nZXRf
YnlfaWRfc2VsZl9mYWlsKQogICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKIAogICAgIGlmIChi
YXNlVmFsdWUuaXNDZWxsKCkKLSAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkKKyAg
ICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCiAgICAgICAgICYmICFhc0NlbGwoYmFzZVZhbHVl
KS0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKICAgICAgICAgJiYgc2xv
dC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkgewogCkBAIC0xMzk3LDcgKzEzOTksNyBAQCBERUZJ
TkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0X2J5X2lkX3NlbGZfZmFpbCkK
ICAgICAgICAgICAgIHN0dWJJbmZvLT51LmdldEJ5SWRTZWxmTGlzdC5saXN0U2l6ZSsrOwogICAg
ICAgICB9CiAKLSAgICAgICAgSklUOjpjb21waWxlR2V0QnlJZFNlbGZMaXN0KGNhbGxGcmFtZS0+
c2NvcGVDaGFpbigpLT5nbG9iYWxEYXRhLCBjb2RlQmxvY2ssIHN0dWJJbmZvLCBwb2x5bW9ycGhp
Y1N0cnVjdHVyZUxpc3QsIGxpc3RJbmRleCwgYXNDZWxsKGJhc2VWYWx1ZSktPnN0cnVjdHVyZSgp
LCBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgSklUOjpjb21waWxlR2V0QnlJZFNlbGZM
aXN0KGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5nbG9iYWxEYXRhLCBjb2RlQmxvY2ssIHN0dWJJ
bmZvLCBwb2x5bW9ycGhpY1N0cnVjdHVyZUxpc3QsIGxpc3RJbmRleCwgYXNDZWxsKGJhc2VWYWx1
ZSktPnN0cnVjdHVyZSgpLCBzbG90LmlzR2V0dGVyKCksIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwog
CiAgICAgICAgIGlmIChsaXN0SW5kZXggPT0gKFBPTFlNT1JQSElDX0xJU1RfQ0FDSEVfU0laRSAt
IDEpKQogICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKGNvZGVCbG9jaywg
U1RVQl9SRVRVUk5fQUREUkVTUywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZF9nZW5lcmlj
KSk7CkBAIC0xNDM1LDYgKzE0MzcsMjMgQEAgc3RhdGljIFBvbHltb3JwaGljQWNjZXNzU3RydWN0
dXJlTGlzdCogZ2V0UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U2xvdChTdHIKICAgICBy
ZXR1cm4gcHJvdG90eXBlU3RydWN0dXJlTGlzdDsKIH0KIAorREVGSU5FX1NUVUJfRlVOQ1RJT04o
RW5jb2RlZEpTVmFsdWUsIG9wX2dldF9ieV9pZF9nZXR0ZXJfc3R1YikKK3sKKyAgICBTVFVCX0lO
SVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBz
dGFja0ZyYW1lLmNhbGxGcmFtZTsKKyAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IGFz
R2V0dGVyU2V0dGVyKHN0YWNrRnJhbWUuYXJnc1swXS5qc09iamVjdCgpKTsKKyAgICBpZiAoIWdl
dHRlclNldHRlci0+Z2V0dGVyKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgSlNPYmplY3QqIGdldHRlciA9IGFzT2JqZWN0KGdldHRlclNldHRl
ci0+Z2V0dGVyKCkpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxU
eXBlID0gZ2V0dGVyLT5nZXRDYWxsRGF0YShjYWxsRGF0YSk7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSBjYWxsKGNhbGxGcmFtZSwgZ2V0dGVyLCBjYWxsVHlwZSwgY2FsbERhdGEsIHN0YWNrRnJhbWUu
YXJnc1sxXS5qc09iamVjdCgpLCBBcmdMaXN0KCkpOworICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm5Ub1Rocm93VHJhbXBvbGluZSgmY2FsbEZyYW1lLT5n
bG9iYWxEYXRhKCksIHN0YWNrRnJhbWUuYXJnc1syXS5yZXR1cm5BZGRyZXNzKCksIFNUVUJfUkVU
VVJOX0FERFJFU1MpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQor
CiBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0X2J5X2lkX3Byb3Rv
X2xpc3QpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwpAQCAtMTQ0
OCw3ICsxNDY3LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dl
dF9ieV9pZF9wcm90b19saXN0KQogCiAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOwogCi0gICAg
aWYgKCFiYXNlVmFsdWUuaXNDZWxsKCkgfHwgIXNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpIHx8IGFz
Q2VsbChiYXNlVmFsdWUpLT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICBpZiAo
IWJhc2VWYWx1ZS5pc0NlbGwoKSB8fCAhc2xvdC5pc0NhY2hlYWJsZSgpIHx8IGFzQ2VsbChiYXNl
VmFsdWUpLT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgY3RpUGF0Y2hD
YWxsQnlSZXR1cm5BZGRyZXNzKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIFNUVUJfUkVUVVJOX0FE
RFJFU1MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfcHJvdG9fZmFpbCkpOwogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQpAQCAtMTQ3Niw3ICsxNDk1
LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dldF9ieV9pZF9w
cm90b19saXN0KQogICAgICAgICBpbnQgbGlzdEluZGV4OwogICAgICAgICBQb2x5bW9ycGhpY0Fj
Y2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QgPSBnZXRQb2x5bW9ycGhp
Y0FjY2Vzc1N0cnVjdHVyZUxpc3RTbG90KHN0dWJJbmZvLCBsaXN0SW5kZXgpOwogCi0gICAgICAg
IEpJVDo6Y29tcGlsZUdldEJ5SWRQcm90b0xpc3QoY2FsbEZyYW1lLT5zY29wZUNoYWluKCktPmds
b2JhbERhdGEsIGNhbGxGcmFtZSwgY29kZUJsb2NrLCBzdHViSW5mbywgcHJvdG90eXBlU3RydWN0
dXJlTGlzdCwgbGlzdEluZGV4LCBzdHJ1Y3R1cmUsIHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUo
KSwgb2Zmc2V0KTsKKyAgICAgICAgSklUOjpjb21waWxlR2V0QnlJZFByb3RvTGlzdChjYWxsRnJh
bWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBjb2RlQmxvY2ssIHN0dWJJ
bmZvLCBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBsaXN0SW5kZXgsIHN0cnVjdHVyZSwgc2xvdEJh
c2VPYmplY3QtPnN0cnVjdHVyZSgpLCBzbG90LmlzR2V0dGVyKCksIG9mZnNldCk7CiAKICAgICAg
ICAgaWYgKGxpc3RJbmRleCA9PSAoUE9MWU1PUlBISUNfTElTVF9DQUNIRV9TSVpFIC0gMSkpCiAg
ICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoY29kZUJsb2NrLCBTVFVCX1JF
VFVSTl9BRERSRVNTLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3RfZnVs
bCkpOwpAQCAtMTQ4Niw3ICsxNTA1LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpT
VmFsdWUsIG9wX2dldF9ieV9pZF9wcm90b19saXN0KQogICAgICAgICBQb2x5bW9ycGhpY0FjY2Vz
c1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QgPSBnZXRQb2x5bW9ycGhpY0Fj
Y2Vzc1N0cnVjdHVyZUxpc3RTbG90KHN0dWJJbmZvLCBsaXN0SW5kZXgpOwogCiAgICAgICAgIFN0
cnVjdHVyZUNoYWluKiBwcm90b0NoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihjYWxs
RnJhbWUpOwotICAgICAgICBKSVQ6OmNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KGNhbGxGcmFtZS0+
c2NvcGVDaGFpbigpLT5nbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGNvZGVCbG9jaywgc3R1YkluZm8s
IHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGxpc3RJbmRleCwgc3RydWN0dXJlLCBwcm90b0NoYWlu
LCBjb3VudCwgb2Zmc2V0KTsKKyAgICAgICAgSklUOjpjb21waWxlR2V0QnlJZENoYWluTGlzdChj
YWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBjb2RlQmxvY2ss
IHN0dWJJbmZvLCBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBsaXN0SW5kZXgsIHN0cnVjdHVyZSwg
cHJvdG9DaGFpbiwgY291bnQsIHNsb3QuaXNHZXR0ZXIoKSwgb2Zmc2V0KTsKIAogICAgICAgICBp
ZiAobGlzdEluZGV4ID09IChQT0xZTU9SUEhJQ19MSVNUX0NBQ0hFX1NJWkUgLSAxKSkKICAgICAg
ICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhjb2RlQmxvY2ssIFNUVUJfUkVUVVJO
X0FERFJFU1MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfcHJvdG9fbGlzdF9mdWxsKSk7
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaCBiL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5oCmluZGV4IDE3ZmQwZDkuLjA1NGE5ODYgMTAwNjQ0Ci0tLSBhL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5oCkBAIC0yNzYsNiArMjc2LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgRW5jb2RlZEpTVmFs
dWUgSklUX1NUVUIgY3RpX29wX2dldF9ieV9pZF9hcnJheV9mYWlsKFNUVUJfQVJHU19ERUNMQVJB
VElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2dldF9ieV9pZF9nZW5l
cmljKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIg
Y3RpX29wX2dldF9ieV9pZF9tZXRob2RfY2hlY2soU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKKyAg
ICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfZ2V0X2J5X2lkX2dldHRlcl9zdHViKFNU
VUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29w
X2dldF9ieV9pZF9wcm90b19mYWlsKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2Rl
ZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2dldF9ieV9pZF9wcm90b19saXN0KFNUVUJfQVJHU19E
RUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2dldF9ieV9p
ZF9wcm90b19saXN0X2Z1bGwoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dldHRlclNldHRlci5oCmluZGV4IDRlNDczNjEuLjI3ZmZiZTcgMTAwNjQ0Ci0tLSBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZXR0ZXJTZXR0ZXIuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAvLyBUaGlzIGlzIGFuIGludGVybmFsIHZhbHVlIG9iamVjdCB3aGljaCBzdG9yZXMgZ2V0
dGVyIGFuZCBzZXR0ZXIgZnVuY3Rpb25zCiAgICAgLy8gZm9yIGEgcHJvcGVydHkuCiAgICAgY2xh
c3MgR2V0dGVyU2V0dGVyIDogcHVibGljIEpTQ2VsbCB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBK
SVQ7CiAgICAgcHVibGljOgogICAgICAgICBHZXR0ZXJTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICAgICAgOiBKU0NlbGwoZXhlYy0+Z2xvYmFsRGF0YSgpLmdldHRlclNldHRlclN0cnVj
dHVyZS5nZXQoKSkK
</data>
<flag name="review"
          id="32214"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>