<?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>130197</bug_id>
          
          <creation_ts>2014-03-13 09:51:22 -0700</creation_ts>
          <short_desc>Remove all uses of deprecatedCharacters from WebKit2</short_desc>
          <delta_ts>2014-10-22 17:20:34 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>126854</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>990043</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-13 09:51:22 -0700</bug_when>
    <thetext>Remove all uses of deprecatedCharacters from WebKit2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990044</commentid>
    <comment_count>1</comment_count>
      <attachid>226596</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-13 09:52:06 -0700</bug_when>
    <thetext>Created attachment 226596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990914</commentid>
    <comment_count>2</comment_count>
      <attachid>226829</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-15 18:40:23 -0700</bug_when>
    <thetext>Created attachment 226829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990935</commentid>
    <comment_count>3</comment_count>
      <attachid>226829</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-03-15 23:18:46 -0700</bug_when>
    <thetext>Comment on attachment 226829
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990936</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-15 23:22:28 -0700</bug_when>
    <thetext>Committed r165692: &lt;http://trac.webkit.org/changeset/165692&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043605</commentid>
    <comment_count>5</comment_count>
      <attachid>226829</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-10-22 17:20:34 -0700</bug_when>
    <thetext>Comment on attachment 226829
Patch

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

&gt; Source/WTF/wtf/text/StringView.h:91
&gt; +    class UpconvertedCharacters {

This is fantastic. Thank you for making this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226596</attachid>
            <date>2014-03-13 09:52:06 -0700</date>
            <delta_ts>2014-03-15 18:40:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130197-20140313095143.patch</filename>
            <type>text/plain</type>
            <size>26460</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1NDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJkZWU5YzliN2Y1NWRlMDliNWViY2Rm
MmE5MGNiNWMzYzdhNTg4NDEuLjY3ODMyMzllNmE5MGVlYTM4NGYwYjUxYmVkZjY5NDQ1NzkwMGYx
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTQtMDMtMTMgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBhbGwgdXNlcyBvZiBkZXByZWNhdGVkQ2hhcmFj
dGVycyBmcm9tIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzMDE5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorCisgICAgICAgIFVwbG9hZGluZyBm
b3IgRVdTIHRlc3RpbmcuIE5vIGNoYW5nZSBsb2cgd3JpdHRlbiB5ZXQuCisKIDIwMTQtMDMtMTEg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gVW5y
ZXZpZXdlZCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWM0MWY5MWNmNmVmMjFhMjE2YjU0OWNm
MzY0Yzg1NmUxZTZjN2JkMy4uYzM2NWNhNjE3NTNkZWQ4NmI0ODIyOTJkMTc4MGRlYTRlNTc0ZGEy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE0LTAzLTEzICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYWxsIHVzZXMgb2YgZGVwcmVjYXRl
ZENoYXJhY3RlcnMgZnJvbSBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzAxOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNoYXJlZC9BUElTdHJpbmcuaDoKKyAgICAgICAgKiBTaGFyZWQv
UGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojp3cml0ZUJ5dGUpOgorICAgICAgICAoV2ViS2l0Ojp3cml0ZUNoYXJhY3Rlcik6
CisgICAgICAgIChXZWJLaXQ6OndyaXRlTGluZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luTW9kdWxlOjpzY2FuUGx1Z2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVGV4dENoZWNr
ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjppbnRlcm5hbFNob3dDb250ZXh0TWVudSk6CisgICAgICAgICog
VUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tlckVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Om5leHRX
b3JkT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFy
YWdyYXBoKToKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OmNoZWNrU3BlbGxpbmdPZlN0
cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2VyOjpjaGVja0dyYW1tYXJPZlN0cmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
Zyk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6VGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdl
YktpdDo6VGV4dENoZWNrZXI6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyk6CisgICAgICAgIChXZWJL
aXQ6OlRleHRDaGVja2VyOjpjaGVja0dyYW1tYXJPZlN0cmluZyk6CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6
OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OmNo
ZWNrU3BlbGxpbmdPZlN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2VyOjpjaGVj
a0dyYW1tYXJPZlN0cmluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFN0cmlu
Z1RvS2V5Q29kZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6c2VuZENvbXBs
ZXhUZXh0SW5wdXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9FbmNvZGVyQWRhcHRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVuY29kZXJBZGFwdGVyOjplbmNvZGVTdHJpbmcpOgor
CisgICAgICAgIFVwbG9hZGluZyBmb3IgRVdTIHRlc3RpbmcuIE5vIGNoYW5nZSBsb2cgd3JpdHRl
biB5ZXQuCisKIDIwMTQtMDMtMTEgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3Igc2hvdWxkIG5vdCBiZSBleHBvc2Vk
IG9uIFdLV2ViVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCA1MjUzMzlhODgzMmE0
ZjU5YWE2NzQ1ZGY5YjZlNjc3N2Q3Mjg0NmFjLi43ZmIzNTUyZmZhZTU5NWE4YTQ5ZjU0MjJhMjVl
YzNkOTFjNGQ0NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtODUsNiArODUsMjAg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihtX2No
YXJhY3RlcnMpOwogICAgIH0KIAorICAgIHZvaWQgZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQo
TENoYXIqKSBjb25zdDsKKyAgICB2b2lkIGdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KFVDaGFy
KikgY29uc3Q7CisKKyAgICBjbGFzcyBVcGNvbnZlcnRlZENoYXJhY3RlcnMgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgZXhwbGljaXQgVXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKGNvbnN0IFN0cmluZ1Zp
ZXcmKTsKKyAgICAgICAgb3BlcmF0b3IgY29uc3QgVUNoYXIqKCkgY29uc3QgeyByZXR1cm4gbV9j
aGFyYWN0ZXJzOyB9CisgICAgICAgIGNvbnN0IFVDaGFyKiBnZXQoKSBjb25zdCB7IHJldHVybiBt
X2NoYXJhY3RlcnM7IH0KKyAgICBwcml2YXRlOgorICAgICAgICBWZWN0b3I8VUNoYXIsIDMyPiBt
X3VwY29udmVydGVkQ2hhcmFjdGVyczsKKyAgICAgICAgY29uc3QgVUNoYXIqIG1fY2hhcmFjdGVy
czsKKyAgICB9OworICAgIFVwY29udmVydGVkQ2hhcmFjdGVycyB1cGNvbnZlcnRlZENoYXJhY3Rl
cnMoKSBjb25zdCB7IHJldHVybiBVcGNvbnZlcnRlZENoYXJhY3RlcnMoKnRoaXMpOyB9CisKICAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2NoYXJhY3RlcnM7IH0KICAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbGVuZ3RoKCk7IH0KICAgICB1bnNpZ25lZCBsZW5n
dGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aCAmIH5pczE2Qml0U3RyaW5nRmxhZzsgfQpAQCAt
MTc2LDYgKzE5MCwzOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwogfTsKIAor
aW5saW5lIHZvaWQgU3RyaW5nVmlldzo6Z2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoTENoYXIq
IGRlc3RpbmF0aW9uKSBjb25zdAoreworICAgIEFTU0VSVChpczhCaXQoKSk7CisgICAgbWVtY3B5
KGRlc3RpbmF0aW9uLCBjaGFyYWN0ZXJzOCgpLCBsZW5ndGgoKSk7Cit9CisKK2lubGluZSB2b2lk
IFN0cmluZ1ZpZXc6OmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KFVDaGFyKiBkZXN0aW5hdGlv
bikgY29uc3QKK3sKKyAgICBpZiAoaXM4Qml0KCkpIHsKKyAgICAgICAgY29uc3QgTENoYXIqIGNo
YXJhY3RlcnM4ID0gdGhpcy0+Y2hhcmFjdGVyczgoKTsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gdGhpcy0+bGVuZ3RoKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uW2ldID0gY2hhcmFjdGVyczhbaV07Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBjaGFyYWN0ZXJz
MTYoKSwgbGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpKTsKK30KKworaW5saW5lIFN0cmluZ1ZpZXc6
OlVwY29udmVydGVkQ2hhcmFjdGVyczo6VXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKGNvbnN0IFN0cmlu
Z1ZpZXcmIHN0cmluZykKK3sKKyAgICBpZiAoIXN0cmluZy5pczhCaXQoKSkgeworICAgICAgICBt
X2NoYXJhY3RlcnMgPSBzdHJpbmcuY2hhcmFjdGVyczE2KCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4ID0gc3RyaW5nLmNoYXJhY3RlcnM4KCk7
CisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIG1fdXBjb252ZXJ0
ZWRDaGFyYWN0ZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgIG1fdXBjb252ZXJ0ZWRDaGFy
YWN0ZXJzLnVuY2hlY2tlZEFwcGVuZChjaGFyYWN0ZXJzOFtpXSk7CisgICAgbV9jaGFyYWN0ZXJz
ID0gbV91cGNvbnZlcnRlZENoYXJhY3RlcnMuZGF0YSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
VEYKIAogdXNpbmcgV1RGOjpTdHJpbmdWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSVN0cmluZy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVN0cmluZy5oCmlu
ZGV4IDc2N2YxNjI0NWRiOWYwZDBhMWM1YmU5Mjg0ZGY0ZWI5YTdkYzk0OWEuLjVmZTYwM2JiMmQz
NWYyZTc4NzQ0NjVmY2M4ZDRjMDcxYThlNmVhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUElTdHJpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJU3RyaW5n
LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1Jl
Zi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRG
OC5oPgogCkBAIC02OCwxMSArNjksMTAgQEAgcHVibGljOgogICAgIHNpemVfdCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZy5sZW5ndGgoKTsgfQogICAgIHNpemVfdCBnZXRDaGFyYWN0
ZXJzKFVDaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgpIGNvbnN0CiAgICAgewotICAg
ICAgICBpZiAoIWJ1ZmZlckxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBi
dWZmZXJMZW5ndGggPSBzdGQ6Om1pbihidWZmZXJMZW5ndGgsIHN0YXRpY19jYXN0PHNpemVfdD4o
bV9zdHJpbmcubGVuZ3RoKCkpKTsKLSAgICAgICAgbWVtY3B5KGJ1ZmZlciwgbV9zdHJpbmcuZGVw
cmVjYXRlZENoYXJhY3RlcnMoKSwgYnVmZmVyTGVuZ3RoICogc2l6ZW9mKFVDaGFyKSk7Ci0gICAg
ICAgIHJldHVybiBidWZmZXJMZW5ndGg7CisgICAgICAgIHVuc2lnbmVkIHVuc2lnbmVkQnVmZmVy
TGVuZ3RoID0gc3RkOjptaW48c2l6ZV90PihidWZmZXJMZW5ndGgsIHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSk7CisgICAgICAgIFN0cmluZ1ZpZXcgc3Vic3RyaW5nID0gU3Ry
aW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKDAsIHVuc2lnbmVkQnVmZmVyTGVuZ3RoKTsKKyAg
ICAgICAgc3Vic3RyaW5nLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGJ1ZmZlcik7CisgICAg
ICAgIHJldHVybiBzdWJzdHJpbmcubGVuZ3RoKCk7CiAgICAgfQogCiAgICAgc2l6ZV90IG1heGlt
dW1VVEY4Q1N0cmluZ1NpemUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5sZW5ndGgoKSAqIDMg
KyAxOyB9CkBAIC04MSwxMSArODEsMTcgQEAgcHVibGljOgogICAgICAgICBpZiAoIWJ1ZmZlclNp
emUpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgY2hhciogcCA9IGJ1ZmZlcjsKLSAg
ICAgICAgY29uc3QgVUNoYXIqIGQgPSBtX3N0cmluZy5kZXByZWNhdGVkQ2hhcmFjdGVycygpOwot
ICAgICAgICBXVEY6OlVuaWNvZGU6OkNvbnZlcnNpb25SZXN1bHQgcmVzdWx0ID0gV1RGOjpVbmlj
b2RlOjpjb252ZXJ0VVRGMTZUb1VURjgoJmQsIGQgKyBtX3N0cmluZy5sZW5ndGgoKSwgJnAsIHAg
KyBidWZmZXJTaXplIC0gMSwgLyogc3RyaWN0ICovIHRydWUpOwotICAgICAgICAqcCsrID0gJ1ww
JzsKKyAgICAgICAgV1RGOjpVbmljb2RlOjpDb252ZXJzaW9uUmVzdWx0IHJlc3VsdDsKKyAgICAg
ICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKSB7CisgICAgICAgICAgICBjb25zdCBMQ2hhciogY2hh
cmFjdGVycyA9IG1fc3RyaW5nLmNoYXJhY3RlcnM4KCk7CisgICAgICAgICAgICByZXN1bHQgPSBX
VEY6OlVuaWNvZGU6OmNvbnZlcnRMYXRpbjFUb1VURjgoJmNoYXJhY3RlcnMsIGNoYXJhY3RlcnMg
KyBtX3N0cmluZy5sZW5ndGgoKSwgJnAsIHAgKyBidWZmZXJTaXplIC0gMSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IG1fc3RyaW5nLmNo
YXJhY3RlcnMxNigpOworICAgICAgICAgICAgcmVzdWx0ID0gV1RGOjpVbmljb2RlOjpjb252ZXJ0
VVRGMTZUb1VURjgoJmNoYXJhY3RlcnMsIGNoYXJhY3RlcnMgKyBtX3N0cmluZy5sZW5ndGgoKSwg
JnAsIHAgKyBidWZmZXJTaXplIC0gMSwgLyogc3RyaWN0ICovIHRydWUpOworICAgICAgICB9CiAg
ICAgICAgIGlmIChyZXN1bHQgIT0gV1RGOjpVbmljb2RlOjpjb252ZXJzaW9uT0sgJiYgcmVzdWx0
ICE9IFdURjo6VW5pY29kZTo6dGFyZ2V0RXhoYXVzdGVkKQogICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgICpwKysgPSAnXDAnOwogICAgICAgICByZXR1cm4gcCAtIGJ1ZmZlcjsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gx
MS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1
Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCmluZGV4IGQ0YTAw
M2EwNzM2YTYwNWE4MDZiOGFjZjE0YjZmOTM0MzUyNTQwZWEuLmQwYWU5ZmM4MWE2ZDZlOTEzMzQ1
MTdjNjkyYWMyZjEzZTMzYWFlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9k
dWxlWDExLmNwcApAQCAtMTg1LDIzICsxODUsMjggQEAgdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVs
ZTo6ZGV0ZXJtaW5lUXVpcmtzKCkKICNlbmRpZgogfQogCi1zdGF0aWMgU3RyaW5nIHRydW5jYXRl
VG9TaW5nbGVMaW5lKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorc3RhdGljIHZvaWQgd3JpdGVCeXRl
KGNoYXIgYnl0ZSkKIHsKLSAgICB1bnNpZ25lZCBvbGRMZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7
Ci0gICAgVUNoYXIqIGJ1ZmZlcjsKLSAgICBTdHJpbmcgc3RyaW5nQnVmZmVyKFN0cmluZ0ltcGw6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQob2xkTGVuZ3RoICsgMSwgYnVmZmVyKSk7Ci0KLSAgICB1bnNp
Z25lZCBuZXdMZW5ndGggPSAwOwotICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9IHN0cmluZy5kZXBy
ZWNhdGVkQ2hhcmFjdGVycygpOwotICAgIGZvciAoY29uc3QgVUNoYXIqIGMgPSBzdGFydDsgYyA8
IHN0YXJ0ICsgb2xkTGVuZ3RoOyArK2MpIHsKLSAgICAgICAgaWYgKCpjICE9IFVDaGFyKCdcbicp
KQotICAgICAgICAgICAgYnVmZmVyW25ld0xlbmd0aCsrXSA9ICpjOwotICAgIH0KLSAgICBidWZm
ZXJbbmV3TGVuZ3RoKytdID0gVUNoYXIoJ1xuJyk7CisgICAgaW50IHJlc3VsdDsKKyAgICB3aGls
ZSAoKHJlc3VsdCA9IGZwdXRjKGJ5dGUsIHN0ZG91dCkpID09IEVPRiAmJiBlcnJubyA9PSBFSU5U
UikgeyB9CisgICAgQVNTRVJUKHJlc3VsdCAhPSBFT0YpOworfQogCi0gICAgU3RyaW5nIHJlc3Vs
dCA9IChuZXdMZW5ndGggPT0gb2xkTGVuZ3RoICsgMSkgPyBzdHJpbmdCdWZmZXIgOiBTdHJpbmco
c3RyaW5nQnVmZmVyLmNoYXJhY3RlcnMxNigpLCBuZXdMZW5ndGgpOwotICAgIEFTU0VSVChyZXN1
bHQuZW5kc1dpdGgoVUNoYXIoJ1xuJykpKTsKLSAgICByZXR1cm4gcmVzdWx0Oworc3RhdGljIHZv
aWQgd3JpdGVDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQoreworICAgIHdyaXRlQnl0ZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPigmY2hhcmFjdGVyKVswXSk7CisgICAgd3JpdGVCeXRl
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KCZjaGFyYWN0ZXIpWzFdKTsKK30KKworc3Rh
dGljIHZvaWQgd3JpdGVMaW5lKGNvbnN0IFN0cmluZyYgbGluZSkKK3sKKyAgICB1bnNpZ25lZCBs
ZW5ndGggPSBsaW5lLmxlbmd0aCgpOworICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBsZW5n
dGg7ICsraikgeworICAgICAgICBVQ2hhciBjaGFyYWN0ZXIgPSBsaW5lW2ldOworICAgICAgICBp
ZiAoY2hhcmFjdGVyICE9ICdcbicpCisgICAgICAgICAgICB3cml0ZUNoYXJhY3RlcihjaGFyYWN0
ZXIpOworICAgIH0KKyAgICB3cml0ZUNoYXJhY3RlcignXG4nKTsKIH0KIAogYm9vbCBOZXRzY2Fw
ZVBsdWdpbk1vZHVsZTo6c2NhblBsdWdpbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCkBAIC0y
MjcsMjIgKzIzMiw5IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNjYW5QbHVnaW4oY29u
c3QgU3RyaW5nJiBwbHVnaW5QYXRoKQogICAgIH0KIAogICAgIC8vIFdyaXRlIGRhdGEgdG8gc3Rh
bmRhcmQgb3V0cHV0IGZvciB0aGUgVUkgcHJvY2Vzcy4KLSAgICBTdHJpbmcgb3V0cHV0WzNdID0g
ewotICAgICAgICB0cnVuY2F0ZVRvU2luZ2xlTGluZShtZXRhRGF0YS5uYW1lKSwKLSAgICAgICAg
dHJ1bmNhdGVUb1NpbmdsZUxpbmUobWV0YURhdGEuZGVzY3JpcHRpb24pLAotICAgICAgICB0cnVu
Y2F0ZVRvU2luZ2xlTGluZShtZXRhRGF0YS5taW1lRGVzY3JpcHRpb24pCi0gICAgfTsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMzsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYg
bGluZSA9IG91dHB1dFtpXTsKLSAgICAgICAgY29uc3QgY2hhciogY3VycmVudCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxpbmUuY2hhcmFjdGVyczE2KCkpOwotICAgICAgICBjb25z
dCBjaGFyKiBlbmQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihsaW5lLmNoYXJhY3Rl
cnMxNigpKSArIChsaW5lLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKSk7Ci0gICAgICAgIHdoaWxl
IChjdXJyZW50IDwgZW5kKSB7Ci0gICAgICAgICAgICBpbnQgcmVzdWx0OwotICAgICAgICAgICAg
d2hpbGUgKChyZXN1bHQgPSBmcHV0YygqY3VycmVudCwgc3Rkb3V0KSkgPT0gRU9GICYmIGVycm5v
ID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gRU9GKTsKLSAgICAg
ICAgICAgICsrY3VycmVudDsKLSAgICAgICAgfQotICAgIH0KKyAgICB3cml0ZUxpbmUobWV0YURh
dGEubmFtZSk7CisgICAgd3JpdGVMaW5lKG1ldGFEYXRhLmRlc2NyaXB0aW9uKTsKKyAgICB3cml0
ZUxpbmUobWV0YURhdGEubWltZURlc2NyaXB0aW9uKTsKIAogICAgIGZmbHVzaChzdGRvdXQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVGV4dENoZWNrZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0Q2hlY2tlci5oCmluZGV4IDNiODYyNmI3ZmE2MzY3
YTFmMzc4MGYwZjZhZWMxZTVlOTQzNTY5MDMuLjQxMTkyOGFhYTRlNTAwMTExZWMxNTAxYWM0MWQy
ODhkYzBkNzFiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0Q2hl
Y2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0Q2hlY2tlci5oCkBAIC02
NywxMCArNjcsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBpbnQ2NF90IHVuaXF1ZVNwZWxsRG9j
dW1lbnRUYWcoV2ViUGFnZVByb3h5Kik7CiAgICAgc3RhdGljIHZvaWQgY2xvc2VTcGVsbERvY3Vt
ZW50V2l0aFRhZyhpbnQ2NF90KTsKICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQotICAg
IHN0YXRpYyBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiBjaGVja1RleHRPZlBh
cmFncmFwaChpbnQ2NF90IHNwZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQg
bGVuZ3RoLCB1aW50NjRfdCBjaGVja2luZ1R5cGVzKTsKKyAgICBzdGF0aWMgVmVjdG9yPFdlYkNv
cmU6OlRleHRDaGVja2luZ1Jlc3VsdD4gY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoaW50NjRfdCBzcGVs
bERvY3VtZW50VGFnLCBTdHJpbmdWaWV3IHRleHQsIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMpOwog
I2VuZGlmCi0gICAgc3RhdGljIHZvaWQgY2hlY2tTcGVsbGluZ09mU3RyaW5nKGludDY0X3Qgc3Bl
bGxEb2N1bWVudFRhZywgY29uc3QgVUNoYXIqIHRleHQsIHVpbnQzMl90IGxlbmd0aCwgaW50MzJf
dCYgbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50MzJfdCYgbWlzc3BlbGxpbmdMZW5ndGgpOwotICAg
IHN0YXRpYyB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGludDY0X3Qgc3BlbGxEb2N1bWVudFRh
ZywgY29uc3QgVUNoYXIqIHRleHQsIHVpbnQzMl90IGxlbmd0aCwgVmVjdG9yPFdlYkNvcmU6Okdy
YW1tYXJEZXRhaWw+JiwgaW50MzJfdCYgYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQzMl90JiBiYWRH
cmFtbWFyTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoaW50
NjRfdCBzcGVsbERvY3VtZW50VGFnLCBTdHJpbmdWaWV3IHRleHQsIGludDMyX3QmIG1pc3NwZWxs
aW5nTG9jYXRpb24sIGludDMyX3QmIG1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9p
ZCBjaGVja0dyYW1tYXJPZlN0cmluZyhpbnQ2NF90IHNwZWxsRG9jdW1lbnRUYWcsIFN0cmluZ1Zp
ZXcgdGV4dCwgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50MzJfdCYgYmFkR3Jh
bW1hckxvY2F0aW9uLCBpbnQzMl90JiBiYWRHcmFtbWFyTGVuZ3RoKTsKICAgICBzdGF0aWMgYm9v
bCBzcGVsbGluZ1VJSXNTaG93aW5nKCk7CiAgICAgc3RhdGljIHZvaWQgdG9nZ2xlU3BlbGxpbmdV
SUlzU2hvd2luZygpOwogICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3Bl
bGxlZFdvcmQoaW50NjRfdCBzcGVsbERvY3VtZW50VGFnLCBjb25zdCBTdHJpbmcmIG1pc3NwZWxs
ZWRXb3JkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
OGFiNjNhZjkyOWI0NjEyM2I3MzJhZTZlOTdkNDhlYzA5YWRlODdiMS4uYjM5YmQ0MGZlNjJkNjg1
OWQ0YTllMzkwMzVmNWQxZjE2M2MzNGI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTM0NjksMTggKzM0NjksMTggQEAgaW50NjRfdCBXZWJQYWdlUHJv
eHk6OnNwZWxsRG9jdW1lbnRUYWcoKQogI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCiB2
b2lkIFdlYlBhZ2VQcm94eTo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgU3RyaW5nJiB0ZXh0
LCB1aW50NjRfdCBjaGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVz
dWx0cykKIHsKLSAgICByZXN1bHRzID0gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBo
KHNwZWxsRG9jdW1lbnRUYWcoKSwgdGV4dC5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCB0ZXh0Lmxl
bmd0aCgpLCBjaGVja2luZ1R5cGVzKTsKKyAgICByZXN1bHRzID0gVGV4dENoZWNrZXI6OmNoZWNr
VGV4dE9mUGFyYWdyYXBoKHNwZWxsRG9jdW1lbnRUYWcoKSwgdGV4dCwgY2hlY2tpbmdUeXBlcyk7
CiB9CiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhj
b25zdCBTdHJpbmcmIHRleHQsIGludDMyX3QmIG1pc3NwZWxsaW5nTG9jYXRpb24sIGludDMyX3Qm
IG1pc3NwZWxsaW5nTGVuZ3RoKQogewotICAgIFRleHRDaGVja2VyOjpjaGVja1NwZWxsaW5nT2ZT
dHJpbmcoc3BlbGxEb2N1bWVudFRhZygpLCB0ZXh0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHRl
eHQubGVuZ3RoKCksIG1pc3NwZWxsaW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAg
ICBUZXh0Q2hlY2tlcjo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKHNwZWxsRG9jdW1lbnRUYWcoKSwg
dGV4dCwgbWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgU3RyaW5nJiB0ZXh0LCBW
ZWN0b3I8R3JhbW1hckRldGFpbD4mIGdyYW1tYXJEZXRhaWxzLCBpbnQzMl90JiBiYWRHcmFtbWFy
TG9jYXRpb24sIGludDMyX3QmIGJhZEdyYW1tYXJMZW5ndGgpCiB7Ci0gICAgVGV4dENoZWNrZXI6
OmNoZWNrR3JhbW1hck9mU3RyaW5nKHNwZWxsRG9jdW1lbnRUYWcoKSwgdGV4dC5kZXByZWNhdGVk
Q2hhcmFjdGVycygpLCB0ZXh0Lmxlbmd0aCgpLCBncmFtbWFyRGV0YWlscywgYmFkR3JhbW1hckxv
Y2F0aW9uLCBiYWRHcmFtbWFyTGVuZ3RoKTsKKyAgICBUZXh0Q2hlY2tlcjo6Y2hlY2tHcmFtbWFy
T2ZTdHJpbmcoc3BlbGxEb2N1bWVudFRhZygpLCB0ZXh0LCBncmFtbWFyRGV0YWlscywgYmFkR3Jh
bW1hckxvY2F0aW9uLCBiYWRHcmFtbWFyTGVuZ3RoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNwZWxsaW5nVUlJc1Nob3dpbmcoYm9vbCYgaXNTaG93aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1RleHRDaGVja2VyRWZsLmNwcAppbmRleCBkYTEyOTBkYWQ2NzI5ZDc5
Mzc0ZGFhOTA3M2QxZDFjYjM0NzhlODIxLi5iMzdkMDlhNzdlYTBjZWZjMjA2ZWRlOWI3OGJlNDEw
YmE2YTg5OTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1RleHRD
aGVja2VyRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1RleHRDaGVj
a2VyRWZsLmNwcApAQCAtMTIwLDE5ICsxMjAsMTkgQEAgdm9pZCBUZXh0Q2hlY2tlcjo6Y2xvc2VT
cGVsbERvY3VtZW50V2l0aFRhZyhpbnQ2NF90IHRhZykKIH0KIAogI2lmIEVOQUJMRShTUEVMTENI
RUNLKQotc3RhdGljIGludCBuZXh0V29yZE9mZnNldChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxl
bmd0aCwgaW50IGN1cnJlbnRPZmZzZXQpCitzdGF0aWMgdW5zaWduZWQgbmV4dFdvcmRPZmZzZXQo
U3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCBjdXJyZW50T2Zmc2V0KQogewogICAgIC8vIEZJWE1F
OiBhdm9pZCBjcmVhdGluZyB0ZXh0SXRlcmF0b3Igb2JqZWN0IGhlcmUsIGl0IGNvdWxkIGJlIHBh
c3NlZCBhcyBhIHBhcmFtZXRlci4KICAgICAvLyAgICAgICAgaXNUZXh0QnJlYWsoKSBsZWF2ZXMg
dGhlIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBmaXJzdCBib3VuZGFyeSBwb3NpdGlvbiBhdAog
ICAgIC8vICAgICAgICBvciBhZnRlciAib2Zmc2V0IiAodWJya19pc0JvdW5kYXJ5IHNpZGUgZWZm
ZWN0KS4KICAgICAvLyAgICAgICAgRm9yIG1hbnkgd29yZCBzZXBhcmF0b3JzLCB0aGUgbWV0aG9k
IGRvZXNuJ3QgcHJvcGVybHkgZGV0ZXJtaW5lIHRoZSBib3VuZGFyaWVzCiAgICAgLy8gICAgICAg
IHdpdGhvdXQgcmVzZXR0aW5nIHRoZSBpdGVyYXRvci4KLSAgICBUZXh0QnJlYWtJdGVyYXRvciog
dGV4dEl0ZXJhdG9yID0gd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyh0ZXh0LCBsZW5ndGgp
KTsKKyAgICBUZXh0QnJlYWtJdGVyYXRvciogdGV4dEl0ZXJhdG9yID0gd29yZEJyZWFrSXRlcmF0
b3IodGV4dCk7CiAgICAgaWYgKCF0ZXh0SXRlcmF0b3IpCiAgICAgICAgIHJldHVybiBjdXJyZW50
T2Zmc2V0OwogCi0gICAgaW50IHdvcmRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0OwotICAgIHdoaWxl
ICh3b3JkT2Zmc2V0IDwgbGVuZ3RoICYmIGlzVGV4dEJyZWFrKHRleHRJdGVyYXRvciwgd29yZE9m
ZnNldCkpCisgICAgdW5zaWduZWQgd29yZE9mZnNldCA9IGN1cnJlbnRPZmZzZXQ7CisgICAgd2hp
bGUgKHdvcmRPZmZzZXQgPCB0ZXh0Lmxlbmd0aCgpICYmIGlzVGV4dEJyZWFrKHRleHRJdGVyYXRv
ciwgd29yZE9mZnNldCkpCiAgICAgICAgICsrd29yZE9mZnNldDsKIAogICAgIC8vIERvIG5vdCB0
cmVhdCB0aGUgd29yZCdzIGJvdW5kYXJ5IGFzIGEgc2VwYXJhdG9yLgpAQCAtMTQ4LDI2ICsxNDgs
MjYgQEAgc3RhdGljIGludCBuZXh0V29yZE9mZnNldChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxl
bmd0aCwgaW50IGN1cnJlbnRPZmZzZXQpCiAjZW5kaWYgLy8gRU5BQkxFKFNQRUxMQ0hFQ0spCiAK
ICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQotVmVjdG9yPFRleHRDaGVja2luZ1Jlc3Vs
dD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGludDY0X3Qgc3BlbGxEb2N1bWVu
dFRhZywgY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIHVpbnQ2NF90IGNoZWNraW5nVHlw
ZXMpCitWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQ
YXJhZ3JhcGgoaW50NjRfdCBzcGVsbERvY3VtZW50VGFnLCBTdHJpbmdWaWV3IHRleHQsIHVpbnQ2
NF90IGNoZWNraW5nVHlwZXMpCiB7CiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcGFy
YWdyYXBoQ2hlY2tpbmdSZXN1bHQ7CiAjaWYgRU5BQkxFKFNQRUxMQ0hFQ0spCiAgICAgaWYgKGNo
ZWNraW5nVHlwZXMgJiBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcpIHsKLSAgICAgICAgVGV4dEJy
ZWFrSXRlcmF0b3IqIHRleHRJdGVyYXRvciA9IHdvcmRCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXco
dGV4dCwgbGVuZ3RoKSk7CisgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiB0ZXh0SXRlcmF0b3Ig
PSB3b3JkQnJlYWtJdGVyYXRvcih0ZXh0KTsKICAgICAgICAgaWYgKCF0ZXh0SXRlcmF0b3IpCiAg
ICAgICAgICAgICByZXR1cm4gcGFyYWdyYXBoQ2hlY2tpbmdSZXN1bHQ7CiAKICAgICAgICAgLy8g
T21pdCB0aGUgd29yZCBzZXBhcmF0b3JzIGF0IHRoZSBiZWdpbm5pbmcvZW5kIG9mIHRoZSB0ZXh0
IHRvIGRvbid0IHVubmVjZXNzYXJpbHkKICAgICAgICAgLy8gaW52b2x2ZSB0aGUgY2xpZW50IHRv
IGNoZWNrIHNwZWxsaW5nIGZvciB0aGVtLgotICAgICAgICBpbnQgb2Zmc2V0ID0gbmV4dFdvcmRP
ZmZzZXQodGV4dCwgbGVuZ3RoLCAwKTsKLSAgICAgICAgaW50IGxlbmd0aFN0cmlwID0gbGVuZ3Ro
OworICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBuZXh0V29yZE9mZnNldCh0ZXh0LCAwKTsKKyAg
ICAgICAgdW5zaWduZWQgbGVuZ3RoU3RyaXAgPSB0ZXh0Lmxlbmd0aCgpOwogICAgICAgICB3aGls
ZSAobGVuZ3RoU3RyaXAgPiAwICYmIGlzVGV4dEJyZWFrKHRleHRJdGVyYXRvciwgbGVuZ3RoU3Ry
aXAgLSAxKSkKICAgICAgICAgICAgIC0tbGVuZ3RoU3RyaXA7CiAKLSAgICAgICAgd2hpbGUgKG9m
ZnNldCA+PSAwICYmIG9mZnNldCA8IGxlbmd0aFN0cmlwKSB7CisgICAgICAgIHdoaWxlIChvZmZz
ZXQgPCBsZW5ndGhTdHJpcCkgewogICAgICAgICAgICAgaW50MzJfdCBtaXNzcGVsbGluZ0xvY2F0
aW9uID0gLTE7CiAgICAgICAgICAgICBpbnQzMl90IG1pc3NwZWxsaW5nTGVuZ3RoID0gMDsKLSAg
ICAgICAgICAgIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhzcGVsbERvY3VtZW50VGFnLCB0ZXh0ICsg
b2Zmc2V0LCBsZW5ndGhTdHJpcCAtIG9mZnNldCwgbWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlzc3Bl
bGxpbmdMZW5ndGgpOworICAgICAgICAgICAgY2hlY2tTcGVsbGluZ09mU3RyaW5nKHNwZWxsRG9j
dW1lbnRUYWcsIHRleHQuc3Vic3RyaW5nKG9mZnNldCwgbGVuZ3RoU3RyaXAgLSBvZmZzZXQpLCBt
aXNzcGVsbGluZ0xvY2F0aW9uLCBtaXNzcGVsbGluZ0xlbmd0aCk7CiAgICAgICAgICAgICBpZiAo
IW1pc3NwZWxsaW5nTGVuZ3RoKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0xNzgsNyAr
MTc4LDcgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4
dE9mUGFyYWdyYXBoKGludDY0X3Qgc3BlbGxEb2N1bWUKICAgICAgICAgICAgIHBhcmFncmFwaENo
ZWNraW5nUmVzdWx0LmFwcGVuZChtaXNzcGVsbGluZ1Jlc3VsdCk7CiAgICAgICAgICAgICBvZmZz
ZXQgKz0gbWlzc3BlbGxpbmdMb2NhdGlvbiArIG1pc3NwZWxsaW5nTGVuZ3RoOwogICAgICAgICAg
ICAgLy8gR2VuZXJhbGx5LCB3ZSBlbmQgdXAgY2hlY2tpbmcgYXQgdGhlIHdvcmQgc2VwYXJhdG9y
LCBtb3ZlIHRvIHRoZSBhZGphY2VudCB3b3JkLgotICAgICAgICAgICAgb2Zmc2V0ID0gbmV4dFdv
cmRPZmZzZXQodGV4dCwgbGVuZ3RoU3RyaXAsIG9mZnNldCk7CisgICAgICAgICAgICBvZmZzZXQg
PSBuZXh0V29yZE9mZnNldCh0ZXh0LnN1YnN0cmluZygwLCBsZW5ndGhTdHJpcCksIG9mZnNldCk7
CiAgICAgICAgIH0KICAgICB9CiAjZWxzZQpAQCAtMTkxLDEwICsxOTEsMTAgQEAgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGludDY0
X3Qgc3BlbGxEb2N1bWUKIH0KICNlbmRpZgogCi12b2lkIFRleHRDaGVja2VyOjpjaGVja1NwZWxs
aW5nT2ZTdHJpbmcoaW50NjRfdCBzcGVsbERvY3VtZW50VGFnLCBjb25zdCBVQ2hhciogdGV4dCwg
dWludDMyX3QgbGVuZ3RoLCBpbnQzMl90JiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQzMl90JiBt
aXNzcGVsbGluZ0xlbmd0aCkKK3ZvaWQgVGV4dENoZWNrZXI6OmNoZWNrU3BlbGxpbmdPZlN0cmlu
ZyhpbnQ2NF90IHNwZWxsRG9jdW1lbnRUYWcsIFN0cmluZ1ZpZXcgdGV4dCwgaW50MzJfdCYgbWlz
c3BlbGxpbmdMb2NhdGlvbiwgaW50MzJfdCYgbWlzc3BlbGxpbmdMZW5ndGgpCiB7CiAjaWYgRU5B
QkxFKFNQRUxMQ0hFQ0spCi0gICAgV2ViVGV4dENoZWNrZXI6OnNoYXJlZCgpLT5jbGllbnQoKS5j
aGVja1NwZWxsaW5nT2ZTdHJpbmcoc3BlbGxEb2N1bWVudFRhZywgU3RyaW5nKHRleHQsIGxlbmd0
aCksIG1pc3NwZWxsaW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICBXZWJUZXh0
Q2hlY2tlcjo6c2hhcmVkKCktPmNsaWVudCgpLmNoZWNrU3BlbGxpbmdPZlN0cmluZyhzcGVsbERv
Y3VtZW50VGFnLCB0ZXh0LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSwgbWlzc3BlbGxpbmdMb2Nh
dGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc3BlbGxE
b2N1bWVudFRhZyk7CiAgICAgVU5VU0VEX1BBUkFNKHRleHQpOwpAQCAtMjA0LDcgKzIwNCw3IEBA
IHZvaWQgVGV4dENoZWNrZXI6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhpbnQ2NF90IHNwZWxsRG9j
dW1lbnRUYWcsIGNvbnN0IFVDaGFyKiB0CiAjZW5kaWYKIH0KIAotdm9pZCBUZXh0Q2hlY2tlcjo6
Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoaW50NjRfdCwgY29uc3QgVUNoYXIqLCB1aW50MzJfdCwgVmVj
dG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50MzJfdCYsIGludDMyX3QmKQordm9pZCBUZXh0Q2hlY2tl
cjo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoaW50NjRfdCwgU3RyaW5nVmlldywgVmVjdG9yPEdyYW1t
YXJEZXRhaWw+JiwgaW50MzJfdCYsIGludDMyX3QmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CkBAIC0yNzEsMTAgKzI3MSw3IEBAIHZvaWQgVGV4dENoZWNrZXI6OnJlcXVlc3RDaGVja2lu
Z09mU3RyaW5nKFBhc3NSZWZQdHI8VGV4dENoZWNrZXJDb21wbGV0aW9uPiBjb21wCiAgICAgQVNT
RVJUKHJlcXVlc3Quc2VxdWVuY2UoKSAhPSB1bnJlcXVlc3RlZFRleHRDaGVja2luZ1NlcXVlbmNl
KTsKICAgICBBU1NFUlQocmVxdWVzdC5tYXNrKCkgIT0gVGV4dENoZWNraW5nVHlwZU5vbmUpOwog
Ci0gICAgU3RyaW5nIHRleHQgPSByZXF1ZXN0LnRleHQoKTsKLSAgICBWZWN0b3I8VGV4dENoZWNr
aW5nUmVzdWx0PiByZXN1bHQgPSBjaGVja1RleHRPZlBhcmFncmFwaChjb21wbGV0aW9uLT5zcGVs
bERvY3VtZW50VGFnKCksIHRleHQuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgo
KSwgcmVxdWVzdC5tYXNrKCkpOwotCi0gICAgY29tcGxldGlvbi0+ZGlkRmluaXNoQ2hlY2tpbmdU
ZXh0KHJlc3VsdCk7CisgICAgY29tcGxldGlvbi0+ZGlkRmluaXNoQ2hlY2tpbmdUZXh0KGNoZWNr
VGV4dE9mUGFyYWdyYXBoKGNvbXBsZXRpb24tPnNwZWxsRG9jdW1lbnRUYWcoKSwgcmVxdWVzdC50
ZXh0KCksIHJlcXVlc3QubWFzaygpKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb21wbGV0
aW9uKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9U
ZXh0Q2hlY2tlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvVGV4dENoZWNr
ZXJJT1MubW0KaW5kZXggODcxMjA1NjY0MGEzZThiM2M5ZTI4YzJlODI5M2MwMDgyNWMyM2ZhNi4u
ZDIzNjlkNTdhMDIzNDU1MmYwOTU4YTZlMjI4YTQ2NDExYzQ0NTg3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tCkBAIC0zMCw2ICszMCw3IEBA
CiAKICNpbXBvcnQgIlRleHRDaGVja2VyU3RhdGUuaCIKICNpbXBvcnQgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEzMSw3ICsxMzIsNyBAQCB2b2lkIFRleHRDaGVja2VyOjpj
bG9zZVNwZWxsRG9jdW1lbnRXaXRoVGFnKGludDY0X3QpCiAKICNpZiBVU0UoVU5JRklFRF9URVhU
X0NIRUNLSU5HKQogCi1WZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hl
Y2tUZXh0T2ZQYXJhZ3JhcGgoaW50NjRfdCwgY29uc3QgVUNoYXIqLCBpbnQsIHVpbnQ2NF90KQor
VmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdy
YXBoKGludDY0X3QsIFN0cmluZ1ZpZXcsIHVpbnQ2NF90KQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiAgICAgcmV0dXJuIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+KCk7CkBAIC0xMzksMTUg
KzE0MCwxMyBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgoaW50NjRfdCwgY29uc3QgVUNoYQogCiAjZW5kaWYKIAotdm9pZCBUZXh0
Q2hlY2tlcjo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKGludDY0X3QsIGNvbnN0IFVDaGFyKiwgdWlu
dDMyX3QsIGludDMyX3QmLCBpbnQzMl90JikKK3ZvaWQgVGV4dENoZWNrZXI6OmNoZWNrU3BlbGxp
bmdPZlN0cmluZyhpbnQ2NF90LCBTdHJpbmdWaWV3LCBpbnQzMl90JiwgaW50MzJfdCYpCiB7Ci0g
ICAgLy8gTWFjIHVzZXMgY2hlY2tUZXh0T2ZQYXJhZ3JhcGggaW5zdGVhZC4KICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIFRleHRDaGVja2VyOjpjaGVja0dyYW1tYXJPZlN0cmluZyhp
bnQ2NF90LCBjb25zdCBVQ2hhciosIHVpbnQzMl90LCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRl
dGFpbD4mLCBpbnQzMl90JiwgaW50MzJfdCYpCit2b2lkIFRleHRDaGVja2VyOjpjaGVja0dyYW1t
YXJPZlN0cmluZyhpbnQ2NF90LCBTdHJpbmdWaWV3LCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRl
dGFpbD4mLCBpbnQzMl90JiwgaW50MzJfdCYpCiB7Ci0gICAgLy8gTWFjIHVzZXMgY2hlY2tUZXh0
T2ZQYXJhZ3JhcGggaW5zdGVhZC4KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQppbmRleCBjMmNlMzc4
N2UxMDc5OGVjYzRlODIxYzAxYWE2NWRiYWY4ZDMyZjE0Li5kZDhiNzJmNjg0ZTYxNGNlOTZjNDcw
NjNhNjg5NDAxNzcwOWYxYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1RleHRDaGVja2VyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
VGV4dENoZWNrZXJNYWMubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIlRleHRDaGVja2Vy
U3RhdGUuaCIKICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIAogQGludGVy
ZmFjZSBOU1NwZWxsQ2hlY2tlciAoV2ViTlNTcGVsbENoZWNrZXJEZXRhaWxzKQogLSAoTlNTdHJp
bmcgKilsYW5ndWFnZUZvcldvcmRSYW5nZTooTlNSYW5nZSlyYW5nZSBpblN0cmluZzooTlNTdHJp
bmcgKilzdHJpbmcgb3J0aG9ncmFwaHk6KE5TT3J0aG9ncmFwaHkgKilvcnRob2dyYXBoeTsKQEAg
LTI5NSwxMyArMjk2LDEzIEBAIHZvaWQgVGV4dENoZWNrZXI6OmNsb3NlU3BlbGxEb2N1bWVudFdp
dGhUYWcoaW50NjRfdCB0YWcpCiAKICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogCi1W
ZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3Jh
cGgoaW50NjRfdCBzcGVsbERvY3VtZW50VGFnLCBjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0
aCwgdWludDY0X3QgY2hlY2tpbmdUeXBlcykKK1ZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRl
eHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChpbnQ2NF90IHNwZWxsRG9jdW1lbnRUYWcs
IFN0cmluZ1ZpZXcgdGV4dCwgdWludDY0X3QgY2hlY2tpbmdUeXBlcykKIHsKICAgICBWZWN0b3I8
VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwogCi0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiB0
ZXh0U3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aENoYXJhY3RlcnNO
b0NvcHk6Y29uc3RfY2FzdDxVQ2hhcio+KHRleHQpIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25l
Ok5PXSk7Ci0gICAgTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzID0gW1tOU1NwZWxsQ2hlY2tlciBz
aGFyZWRTcGVsbENoZWNrZXJdIGNoZWNrU3RyaW5nOnRleHRTdHJpbmcgLmdldCgpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkKKyAgICBSZXRhaW5QdHI8TlNT
dHJpbmc+IHRleHRTdHJpbmcgPSB0ZXh0LmNyZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKTsK
KyAgICBOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMgPSBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNw
ZWxsQ2hlY2tlcl0gY2hlY2tTdHJpbmc6dGV4dFN0cmluZy5nZXQoKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByYW5nZTpOU01ha2VSYW5nZSgwLCB0ZXh0Lmxlbmd0aCgpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
eXBlczpjaGVja2luZ1R5cGVzIHwgTlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wdGlvbnM6bmlsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsRG9jdW1l
bnRUYWcgCkBAIC0zODQsMTMgKzM4NSwxMyBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBU
ZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoaW50NjRfdCBzcGVsbERvY3VtZQogCiAj
ZW5kaWYKIAotdm9pZCBUZXh0Q2hlY2tlcjo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKGludDY0X3Qs
IGNvbnN0IFVDaGFyKiwgdWludDMyX3QsIGludDMyX3QmLCBpbnQzMl90JikKK3ZvaWQgVGV4dENo
ZWNrZXI6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhpbnQ2NF90LCBTdHJpbmdWaWV3LCBpbnQzMl90
JiwgaW50MzJfdCYpCiB7CiAgICAgLy8gTWFjIHVzZXMgY2hlY2tUZXh0T2ZQYXJhZ3JhcGggaW5z
dGVhZC4KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFRleHRDaGVja2VyOjpjaGVj
a0dyYW1tYXJPZlN0cmluZyhpbnQ2NF90LCBjb25zdCBVQ2hhciosIHVpbnQzMl90LCBWZWN0b3I8
V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQzMl90JiwgaW50MzJfdCYpCit2b2lkIFRleHRD
aGVja2VyOjpjaGVja0dyYW1tYXJPZlN0cmluZyhpbnQ2NF90LCBTdHJpbmdWaWV3LCBWZWN0b3I8
V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQzMl90JiwgaW50MzJfdCYpCiB7CiAgICAgLy8g
TWFjIHVzZXMgY2hlY2tUZXh0T2ZQYXJhZ3JhcGggaW5zdGVhZC4KICAgICBub3RJbXBsZW1lbnRl
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0KaW5kZXggNzI1ZjIyYmE5
YTU1ZTViYzRmNGVmZjk0NDk3NTA4N2VmZjU0OGVkMy4uOGViMTdjNjU3YTFhYzVjOWYzNjE5YTVk
OGM3MGZmY2YyMDFjYjY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1t
CkBAIC05NjMsNyArOTYzLDcgQEAgdWludDY0X3QgTmV0c2NhcGVQbHVnaW46OnBsdWdpbkNvbXBs
ZXhUZXh0SW5wdXRJZGVudGlmaWVyKCkgY29uc3QKIAogCiAjaWZuZGVmIE5QX05PX0NBUkJPTgot
c3RhdGljIGJvb2wgY29udmVydFN0cmluZ1RvS2V5Q29kZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IFNjcmlwdENvZGUgc2NyaXB0Q29kZSwgVmVjdG9yPFVJbnQ4PiYga2V5Q29kZXMpCitzdGF0aWMg
Ym9vbCBjb252ZXJ0U3RyaW5nVG9LZXlDb2RlcyhTdHJpbmdWaWV3IHN0cmluZywgU2NyaXB0Q29k
ZSBzY3JpcHRDb2RlLCBWZWN0b3I8VUludDg+JiBrZXlDb2RlcykKIHsKICAgICAvLyBDcmVhdGUg
dGhlIG1hcHBpbmcuCiAgICAgVW5pY29kZU1hcHBpbmcgbWFwcGluZzsKQEAgLTk3MywyNyArOTcz
LDI3IEBAIHN0YXRpYyBib29sIGNvbnZlcnRTdHJpbmdUb0tleUNvZGVzKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBTY3JpcHRDb2RlIHNjcmlwdENvZGUsCiAKICAgICBtYXBwaW5nLnVuaWNvZGVFbmNv
ZGluZyA9IENyZWF0ZVRleHRFbmNvZGluZyhrVGV4dEVuY29kaW5nVW5pY29kZURlZmF1bHQsIGtU
ZXh0RW5jb2RpbmdEZWZhdWx0VmFyaWFudCwga1RleHRFbmNvZGluZ0RlZmF1bHRGb3JtYXQpOwog
ICAgIG1hcHBpbmcubWFwcGluZ1ZlcnNpb24gPSBrVW5pY29kZVVzZUxhdGVzdE1hcHBpbmc7Ci0g
ICAgCisKICAgICAvLyBDcmVhdGUgdGhlIGNvbnZlcnRlcgogICAgIFVuaWNvZGVUb1RleHRJbmZv
IHRleHRJbmZvOwotICAgIAorCiAgICAgaWYgKENyZWF0ZVVuaWNvZGVUb1RleHRJbmZvKCZtYXBw
aW5nLCAmdGV4dEluZm8pICE9IG5vRXJyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisK
ICAgICBCeXRlQ291bnQgaW5wdXRMZW5ndGggPSBzdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoVW5p
Q2hhcik7CiAgICAgQnl0ZUNvdW50IGlucHV0UmVhZDsKICAgICBCeXRlQ291bnQgb3V0cHV0TGVu
Z3RoOwogICAgIEJ5dGVDb3VudCBtYXhPdXRwdXRMZW5ndGggPSBzdHJpbmcubGVuZ3RoKCkgKiBz
aXplb2YoVW5pQ2hhcik7CiAKICAgICBWZWN0b3I8VUludDg+IG91dHB1dERhdGEobWF4T3V0cHV0
TGVuZ3RoKTsKLSAgICBPU1N0YXR1cyBzdGF0dXMgPSBDb252ZXJ0RnJvbVVuaWNvZGVUb1RleHQo
dGV4dEluZm8sIGlucHV0TGVuZ3RoLCBzdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwga05p
bE9wdGlvbnMsIDAsIDAsIDAsIDAsIG1heE91dHB1dExlbmd0aCwgJmlucHV0UmVhZCwgJm91dHB1
dExlbmd0aCwgb3V0cHV0RGF0YS5kYXRhKCkpOworICAgIE9TU3RhdHVzIHN0YXR1cyA9IENvbnZl
cnRGcm9tVW5pY29kZVRvVGV4dCh0ZXh0SW5mbywgaW5wdXRMZW5ndGgsIHN0cmluZy51cGNvbnZl
cnRlZENoYXJhY3RlcnMoKSwga05pbE9wdGlvbnMsIDAsIDAsIDAsIDAsIG1heE91dHB1dExlbmd0
aCwgJmlucHV0UmVhZCwgJm91dHB1dExlbmd0aCwgb3V0cHV0RGF0YS5kYXRhKCkpOwogICAgIAog
ICAgIERpc3Bvc2VVbmljb2RlVG9UZXh0SW5mbygmdGV4dEluZm8pOwogICAgIAogICAgIGlmIChz
dGF0dXMgIT0gbm9FcnIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG91dHB1dERhdGEu
c3dhcChrZXlDb2Rlcyk7CisgICAga2V5Q29kZXMgPSBzdGQ6Om1vdmUob3V0cHV0RGF0YSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKQEAgLTEwMzQsOCArMTAzNCw4IEBAIHZvaWQgTmV0
c2NhcGVQbHVnaW46OnNlbmRDb21wbGV4VGV4dElucHV0KGNvbnN0IFN0cmluZyYgdGV4dElucHV0
KQogICAgICAgICBFdmVudFJlY29yZCBldmVudCA9IGluaXRpYWxpemVFdmVudFJlY29yZChrZXlE
b3duKTsKICAgICAgICAgZXZlbnQubW9kaWZpZXJzID0gMDsKIAotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGtleUNvZGVzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICBldmVudC5t
ZXNzYWdlID0ga2V5Q29kZXNbaV07CisgICAgICAgIGZvciAoYXV0byYga2V5Q29kZSA6IGtleUNv
ZGVzKSB7CisgICAgICAgICAgICBldmVudC5tZXNzYWdlID0ga2V5Q29kZTsKICAgICAgICAgICAg
IE5QUF9IYW5kbGVFdmVudCgmZXZlbnQpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0VuY29kZXJBZGFwdGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FbmNvZGVyQWRhcHRlci5j
cHAKaW5kZXggMzhlYzFkYzgxMTMyMDQwZTRmNjllNTg4ODE1NWE3MTQxY2Y1YzYyZi4uYmRjMDc0
ZWZlYjFiMTMyZDEwNzFmYTA2Mjk2NTE4ZGEzN2Q2NTJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0VuY29kZXJBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIuY3BwCkBAIC0yOCw3ICsy
OCw3IEBACiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTA4
LDcgKzEwOCw3IEBAIHZvaWQgRW5jb2RlckFkYXB0ZXI6OmVuY29kZVN0cmluZyhjb25zdCBTdHJp
bmcmIHZhbHVlKQogCiAgICAgdWludDY0X3QgbGVuZ3RoSW5CeXRlcyA9IGxlbmd0aCAqIHNpemVv
ZihVQ2hhcik7CiAgICAgbV9lbmNvZGVyIDw8IGxlbmd0aEluQnl0ZXM7Ci0gICAgbV9lbmNvZGVy
LmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih2
YWx1ZS5kZXByZWNhdGVkQ2hhcmFjdGVycygpKSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSwgYWxp
Z25vZihVQ2hhcikpOworICAgIG1fZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oU3RyaW5nVmlldyh2YWx1ZSkudXBjb252ZXJ0ZWRD
aGFyYWN0ZXJzKCkuZ2V0KCkpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpLCBhbGlnbm9mKFVDaGFy
KSk7CiB9CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226829</attachid>
            <date>2014-03-15 18:40:23 -0700</date>
            <delta_ts>2014-03-15 23:18:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130197-20140315184007.patch</filename>
            <type>text/plain</type>
            <size>27585</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1Njg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGZhZmYxZDI4ZjgyYTVkZmExNjZhM2Y2
ODA1YjM1ZmI5MzFiZjg3MTAuLjJlMmZhNzI0NjcxYjAzNWJjYzI4Yjk2YWM5OGU5NDczZjNiNjlh
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTQtMDMtMTUgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBhbGwgdXNlcyBvZiBkZXByZWNhdGVkQ2hhcmFj
dGVycyBmcm9tIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzMDE5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOiBBZGRlZCBuZXcgZ2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQgYW5kIHVwY29udmVydGVkQ2hhcmFjdGVycworICAgICAgICBmdW5jdGlv
bnMuIFRoZXNlIGFyZSB1c2VmdWwgZm9yIGNhbGxlcnMgdGhhdCBuZWVkIFVURi0xNi4KKwogMjAx
NC0wMy0xNSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBJ
dCBzaG91bGQgYmUgcG9zc2libGUgdG8gYWRqdXN0IERGRyBhbmQgRlRMIGNvbXBpbGVyIHRocmVh
ZCBwcmlvcml0aWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDViZTlkM2I5YzQzYWMxZTI1NTUwYjQ0ODVmZjhj
ZDZiOWI3ZDdmNS4uNTJiM2IzNDhmMTZjNmQ2OWE4YzlmZWZmNTk5MjA0MjI3OThlZmJiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE0LTAzLTE1ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYWxsIHVzZXMgb2YgZGVwcmVjYXRlZENoYXJh
Y3RlcnMgZnJvbSBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzAxOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNoYXJlZC9BUElTdHJpbmcuaDogUmV3cm90ZSBnZXRDaGFyYWN0ZXJzIHRv
IHVzZSBTdHJpbmdWaWV3LAorICAgICAgICBzdWJzdHJpbmcsIGFuZCBnZXRDaGFyYWN0ZXJzV2l0
aFVwY29udmVydC4gQWRkZWQgYW4gOC1iaXQgY2FzZQorICAgICAgICB0byBnZXRVVEY4Q1N0cmlu
Zy4KKworICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdp
bk1vZHVsZVgxMS5jcHA6CisgICAgICAgIChXZWJLaXQ6OndyaXRlQnl0ZSk6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0Ojp3cml0ZUNoYXJhY3Rlcik6IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojp3
cml0ZUxpbmUpOiBBZGRlZC4gVXNlcyBvcGVyYXRvcltdIGluc3RlYWQgb2YgY2hhcmFjdGVyczE2
IHRvIGdldAorICAgICAgICB0aGUgVVRGLTE2IGNoYXJhY3RlcnMgb3V0IG9mIHRoZSBzdHJpbmcu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjpzY2FuUGx1Z2luKTogUmVw
bGFjZWQgY29kZSB0aGF0IHdyaXRlcyBvdXQKKyAgICAgICAgdGV4dCB0byBzdGRvdXQgd2l0aCBt
dWNoIHNpbXBsZXIgdmVyc2lvbiB1c2luZyB0aGUgZnVuY3Rpb25zIGFib3ZlLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1RleHRDaGVja2VyLmg6IENoYW5nZWQgdGV4dCBhcmd1bWVudHMgdG8gdXNl
IFN0cmluZ1ZpZXcgaW5zdGVhZAorICAgICAgICBvZiBVQ2hhci9pbnQgcGFpcnMuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjppbnRlcm5hbFNob3dDb250ZXh0TWVudSk6IFVwZGF0ZWQgdG8gcGFzcyBTdHJpbmdW
aWV3LgorCisgICAgICAgICogVUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tlckVmbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Om5leHRXb3JkT2Zmc2V0KTogQ2hhbmdlZCBmdW5jdGlvbiB0byB1c2UgU3Ry
aW5nVmlldyBhbmQgdW5zaWduZWQuCisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2VyOjpjaGVj
a1RleHRPZlBhcmFncmFwaCk6IENoYW5nZWQgdG8gdXNlIFN0cmluZ1ZpZXcgYW5kCisgICAgICAg
IHN1YnN0cmluZy4KKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OmNoZWNrU3BlbGxpbmdP
ZlN0cmluZyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlcjo6Y2hlY2tHcmFt
bWFyT2ZTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OnJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKTogUGFzcyBpbiBhIFN0cmluZ1ZpZXcsIHNvIG5vCisgICAgICAg
IG5lZWQgdG8gY2FsbCBkZXByZWNhdGVkQ2hhcmFjdGVycy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvVGV4dENoZWNrZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2VyOjpj
aGVja1RleHRPZlBhcmFncmFwaCk6IENoYW5nZWQgdG8gdGFrZSBTdHJpbmdWaWV3LgorICAgICAg
ICAoV2ViS2l0OjpUZXh0Q2hlY2tlcjo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2VyOjpjaGVja0dyYW1tYXJPZlN0cmluZyk6IERpdHRv
LgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6VGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKTogQ2hhbmdlZCB0byB0
YWtlIFN0cmluZ1ZpZXcgYW5kCisgICAgICAgIHVzZSBTdHJpbmdWaWV3OjpjcmVhdGVOU1N0cmlu
Z1dpdGhvdXRDb3B5aW5nLgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlcjo6Y2hlY2tTcGVs
bGluZ09mU3RyaW5nKTogQ0hhbmdlZCB0byB0YWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXZWJL
aXQ6OlRleHRDaGVja2VyOjpjaGVja0dyYW1tYXJPZlN0cmluZyk6IERpdHRvLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6Y29udmVydFN0cmluZ1RvS2V5Q29kZXMpOiBDaGFuZ2VkIHRvIHRh
a2UgU3RyaW5nVmlldyBhbmQgdXNlCisgICAgICAgIHVwY29udmVydGVkQ2hhcmFjdGVycyBpbnN0
ZWFkIG9mIGRlcHJlY2F0ZWRDaGFyYWN0ZXJzLiBBbHNvIHVzZSBtb3ZlIGluc3RlYWQKKyAgICAg
ICAgb2Ygc3dhcC4KKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnNlbmRDb21wbGV4
VGV4dElucHV0KTogVXBkYXRlZCB0byBuZXcgc3R5bGUgZm9yIGxvb3AuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpF
bmNvZGVyQWRhcHRlcjo6ZW5jb2RlU3RyaW5nKTogVXNlIFN0cmluZ1ZpZXc6OnVwY29udmVydGVk
Q2hhcmFjdGVycworICAgICAgICBpbnN0ZWFkIG9mIFN0cmluZzo6ZGVwcmVjYXRlZENoYXJhY3Rl
cnMuCisKIDIwMTQtMDMtMTUgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbaU9TXSBEZWZpbmUgU1lTVEVNX1ZFUlNJT05fUFJFRklYIGNvbnNpc3RlbnRseQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCA1MjUzMzlhODgzMmE0ZjU5YWE2NzQ1ZGY5YjZl
Njc3N2Q3Mjg0NmFjLi43ZmIzNTUyZmZhZTU5NWE4YTQ5ZjU0MjJhMjVlYzNkOTFjNGQ0NGM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtODUsNiArODUsMjAgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihtX2NoYXJhY3RlcnMpOwogICAg
IH0KIAorICAgIHZvaWQgZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoTENoYXIqKSBjb25zdDsK
KyAgICB2b2lkIGdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KFVDaGFyKikgY29uc3Q7CisKKyAg
ICBjbGFzcyBVcGNvbnZlcnRlZENoYXJhY3RlcnMgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhw
bGljaXQgVXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmKTsKKyAgICAgICAg
b3BlcmF0b3IgY29uc3QgVUNoYXIqKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9Cisg
ICAgICAgIGNvbnN0IFVDaGFyKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnM7IH0K
KyAgICBwcml2YXRlOgorICAgICAgICBWZWN0b3I8VUNoYXIsIDMyPiBtX3VwY29udmVydGVkQ2hh
cmFjdGVyczsKKyAgICAgICAgY29uc3QgVUNoYXIqIG1fY2hhcmFjdGVyczsKKyAgICB9OworICAg
IFVwY29udmVydGVkQ2hhcmFjdGVycyB1cGNvbnZlcnRlZENoYXJhY3RlcnMoKSBjb25zdCB7IHJl
dHVybiBVcGNvbnZlcnRlZENoYXJhY3RlcnMoKnRoaXMpOyB9CisKICAgICBib29sIGlzTnVsbCgp
IGNvbnN0IHsgcmV0dXJuICFtX2NoYXJhY3RlcnM7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiAhbGVuZ3RoKCk7IH0KICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBtX2xlbmd0aCAmIH5pczE2Qml0U3RyaW5nRmxhZzsgfQpAQCAtMTc2LDYgKzE5MCwzOCBA
QCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwogfTsKIAoraW5saW5lIHZvaWQgU3Ry
aW5nVmlldzo6Z2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoTENoYXIqIGRlc3RpbmF0aW9uKSBj
b25zdAoreworICAgIEFTU0VSVChpczhCaXQoKSk7CisgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBj
aGFyYWN0ZXJzOCgpLCBsZW5ndGgoKSk7Cit9CisKK2lubGluZSB2b2lkIFN0cmluZ1ZpZXc6Omdl
dENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KFVDaGFyKiBkZXN0aW5hdGlvbikgY29uc3QKK3sKKyAg
ICBpZiAoaXM4Qml0KCkpIHsKKyAgICAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4ID0gdGhp
cy0+Y2hhcmFjdGVyczgoKTsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3Ro
KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAg
ICAgICAgIGRlc3RpbmF0aW9uW2ldID0gY2hhcmFjdGVyczhbaV07CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBjaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCkg
KiBzaXplb2YoVUNoYXIpKTsKK30KKworaW5saW5lIFN0cmluZ1ZpZXc6OlVwY29udmVydGVkQ2hh
cmFjdGVyczo6VXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykK
K3sKKyAgICBpZiAoIXN0cmluZy5pczhCaXQoKSkgeworICAgICAgICBtX2NoYXJhY3RlcnMgPSBz
dHJpbmcuY2hhcmFjdGVyczE2KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29uc3Qg
TENoYXIqIGNoYXJhY3RlcnM4ID0gc3RyaW5nLmNoYXJhY3RlcnM4KCk7CisgICAgdW5zaWduZWQg
bGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIG1fdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpCisgICAgICAgIG1fdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzLnVuY2hlY2tl
ZEFwcGVuZChjaGFyYWN0ZXJzOFtpXSk7CisgICAgbV9jaGFyYWN0ZXJzID0gbV91cGNvbnZlcnRl
ZENoYXJhY3RlcnMuZGF0YSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RG
OjpTdHJpbmdWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVN0cmlu
Zy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVN0cmluZy5oCmluZGV4IDc2N2YxNjI0NWRi
OWYwZDBhMWM1YmU5Mjg0ZGY0ZWI5YTdkYzk0OWEuLjVmZTYwM2JiMmQzNWYyZTc4NzQ0NjVmY2M4
ZDRjMDcxYThlNmVhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElTdHJp
bmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJU3RyaW5nLmgKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOC5oPgogCkBAIC02OCwx
MSArNjksMTAgQEAgcHVibGljOgogICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZy5sZW5ndGgoKTsgfQogICAgIHNpemVfdCBnZXRDaGFyYWN0ZXJzKFVDaGFyKiBidWZm
ZXIsIHNpemVfdCBidWZmZXJMZW5ndGgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoIWJ1ZmZl
ckxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBidWZmZXJMZW5ndGggPSBz
dGQ6Om1pbihidWZmZXJMZW5ndGgsIHN0YXRpY19jYXN0PHNpemVfdD4obV9zdHJpbmcubGVuZ3Ro
KCkpKTsKLSAgICAgICAgbWVtY3B5KGJ1ZmZlciwgbV9zdHJpbmcuZGVwcmVjYXRlZENoYXJhY3Rl
cnMoKSwgYnVmZmVyTGVuZ3RoICogc2l6ZW9mKFVDaGFyKSk7Ci0gICAgICAgIHJldHVybiBidWZm
ZXJMZW5ndGg7CisgICAgICAgIHVuc2lnbmVkIHVuc2lnbmVkQnVmZmVyTGVuZ3RoID0gc3RkOjpt
aW48c2l6ZV90PihidWZmZXJMZW5ndGgsIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSk7CisgICAgICAgIFN0cmluZ1ZpZXcgc3Vic3RyaW5nID0gU3RyaW5nVmlldyhtX3N0cmlu
Zykuc3Vic3RyaW5nKDAsIHVuc2lnbmVkQnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgc3Vic3RyaW5n
LmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGJ1ZmZlcik7CisgICAgICAgIHJldHVybiBzdWJz
dHJpbmcubGVuZ3RoKCk7CiAgICAgfQogCiAgICAgc2l6ZV90IG1heGltdW1VVEY4Q1N0cmluZ1Np
emUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5sZW5ndGgoKSAqIDMgKyAxOyB9CkBAIC04MSwx
MSArODEsMTcgQEAgcHVibGljOgogICAgICAgICBpZiAoIWJ1ZmZlclNpemUpCiAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgY2hhciogcCA9IGJ1ZmZlcjsKLSAgICAgICAgY29uc3QgVUNo
YXIqIGQgPSBtX3N0cmluZy5kZXByZWNhdGVkQ2hhcmFjdGVycygpOwotICAgICAgICBXVEY6OlVu
aWNvZGU6OkNvbnZlcnNpb25SZXN1bHQgcmVzdWx0ID0gV1RGOjpVbmljb2RlOjpjb252ZXJ0VVRG
MTZUb1VURjgoJmQsIGQgKyBtX3N0cmluZy5sZW5ndGgoKSwgJnAsIHAgKyBidWZmZXJTaXplIC0g
MSwgLyogc3RyaWN0ICovIHRydWUpOwotICAgICAgICAqcCsrID0gJ1wwJzsKKyAgICAgICAgV1RG
OjpVbmljb2RlOjpDb252ZXJzaW9uUmVzdWx0IHJlc3VsdDsKKyAgICAgICAgaWYgKG1fc3RyaW5n
LmlzOEJpdCgpKSB7CisgICAgICAgICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVycyA9IG1fc3Ry
aW5nLmNoYXJhY3RlcnM4KCk7CisgICAgICAgICAgICByZXN1bHQgPSBXVEY6OlVuaWNvZGU6OmNv
bnZlcnRMYXRpbjFUb1VURjgoJmNoYXJhY3RlcnMsIGNoYXJhY3RlcnMgKyBtX3N0cmluZy5sZW5n
dGgoKSwgJnAsIHAgKyBidWZmZXJTaXplIC0gMSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gV1RGOjpVbmljb2RlOjpjb252ZXJ0VVRGMTZUb1VURjgoJmNo
YXJhY3RlcnMsIGNoYXJhY3RlcnMgKyBtX3N0cmluZy5sZW5ndGgoKSwgJnAsIHAgKyBidWZmZXJT
aXplIC0gMSwgLyogc3RyaWN0ICovIHRydWUpOworICAgICAgICB9CiAgICAgICAgIGlmIChyZXN1
bHQgIT0gV1RGOjpVbmljb2RlOjpjb252ZXJzaW9uT0sgJiYgcmVzdWx0ICE9IFdURjo6VW5pY29k
ZTo6dGFyZ2V0RXhoYXVzdGVkKQogICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICpwKysg
PSAnXDAnOwogICAgICAgICByZXR1cm4gcCAtIGJ1ZmZlcjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdp
bk1vZHVsZVgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94
MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCmluZGV4IGQ0YTAwM2EwNzM2YTYwNWE4MDZi
OGFjZjE0YjZmOTM0MzUyNTQwZWEuLjZkMzQwNWEyODkxYWQ5ZjNjNjYwZjJlYjg3MWMzMTVjMTUw
MTY2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBl
L3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcApAQCAt
MTg1LDIzICsxODUsMjggQEAgdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6ZGV0ZXJtaW5lUXVp
cmtzKCkKICNlbmRpZgogfQogCi1zdGF0aWMgU3RyaW5nIHRydW5jYXRlVG9TaW5nbGVMaW5lKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQorc3RhdGljIHZvaWQgd3JpdGVCeXRlKGNoYXIgYnl0ZSkKIHsK
LSAgICB1bnNpZ25lZCBvbGRMZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7Ci0gICAgVUNoYXIqIGJ1
ZmZlcjsKLSAgICBTdHJpbmcgc3RyaW5nQnVmZmVyKFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQob2xkTGVuZ3RoICsgMSwgYnVmZmVyKSk7Ci0KLSAgICB1bnNpZ25lZCBuZXdMZW5ndGgg
PSAwOwotICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9IHN0cmluZy5kZXByZWNhdGVkQ2hhcmFjdGVy
cygpOwotICAgIGZvciAoY29uc3QgVUNoYXIqIGMgPSBzdGFydDsgYyA8IHN0YXJ0ICsgb2xkTGVu
Z3RoOyArK2MpIHsKLSAgICAgICAgaWYgKCpjICE9IFVDaGFyKCdcbicpKQotICAgICAgICAgICAg
YnVmZmVyW25ld0xlbmd0aCsrXSA9ICpjOwotICAgIH0KLSAgICBidWZmZXJbbmV3TGVuZ3RoKytd
ID0gVUNoYXIoJ1xuJyk7CisgICAgaW50IHJlc3VsdDsKKyAgICB3aGlsZSAoKHJlc3VsdCA9IGZw
dXRjKGJ5dGUsIHN0ZG91dCkpID09IEVPRiAmJiBlcnJubyA9PSBFSU5UUikgeyB9CisgICAgQVNT
RVJUKHJlc3VsdCAhPSBFT0YpOworfQogCi0gICAgU3RyaW5nIHJlc3VsdCA9IChuZXdMZW5ndGgg
PT0gb2xkTGVuZ3RoICsgMSkgPyBzdHJpbmdCdWZmZXIgOiBTdHJpbmcoc3RyaW5nQnVmZmVyLmNo
YXJhY3RlcnMxNigpLCBuZXdMZW5ndGgpOwotICAgIEFTU0VSVChyZXN1bHQuZW5kc1dpdGgoVUNo
YXIoJ1xuJykpKTsKLSAgICByZXR1cm4gcmVzdWx0Oworc3RhdGljIHZvaWQgd3JpdGVDaGFyYWN0
ZXIoVUNoYXIgY2hhcmFjdGVyKQoreworICAgIHdyaXRlQnl0ZShyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPigmY2hhcmFjdGVyKVswXSk7CisgICAgd3JpdGVCeXRlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KCZjaGFyYWN0ZXIpWzFdKTsKK30KKworc3RhdGljIHZvaWQgd3JpdGVM
aW5lKGNvbnN0IFN0cmluZyYgbGluZSkKK3sKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBsaW5lLmxl
bmd0aCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAg
ICAgICBVQ2hhciBjaGFyYWN0ZXIgPSBsaW5lW2ldOworICAgICAgICBpZiAoY2hhcmFjdGVyICE9
ICdcbicpCisgICAgICAgICAgICB3cml0ZUNoYXJhY3RlcihjaGFyYWN0ZXIpOworICAgIH0KKyAg
ICB3cml0ZUNoYXJhY3RlcignXG4nKTsKIH0KIAogYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6
c2NhblBsdWdpbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCkBAIC0yMjcsMjIgKzIzMiw5IEBA
IGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNjYW5QbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVn
aW5QYXRoKQogICAgIH0KIAogICAgIC8vIFdyaXRlIGRhdGEgdG8gc3RhbmRhcmQgb3V0cHV0IGZv
ciB0aGUgVUkgcHJvY2Vzcy4KLSAgICBTdHJpbmcgb3V0cHV0WzNdID0gewotICAgICAgICB0cnVu
Y2F0ZVRvU2luZ2xlTGluZShtZXRhRGF0YS5uYW1lKSwKLSAgICAgICAgdHJ1bmNhdGVUb1Npbmds
ZUxpbmUobWV0YURhdGEuZGVzY3JpcHRpb24pLAotICAgICAgICB0cnVuY2F0ZVRvU2luZ2xlTGlu
ZShtZXRhRGF0YS5taW1lRGVzY3JpcHRpb24pCi0gICAgfTsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgMzsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgbGluZSA9IG91dHB1dFtp
XTsKLSAgICAgICAgY29uc3QgY2hhciogY3VycmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGxpbmUuY2hhcmFjdGVyczE2KCkpOwotICAgICAgICBjb25zdCBjaGFyKiBlbmQgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihsaW5lLmNoYXJhY3RlcnMxNigpKSArIChsaW5l
Lmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKSk7Ci0gICAgICAgIHdoaWxlIChjdXJyZW50IDwgZW5k
KSB7Ci0gICAgICAgICAgICBpbnQgcmVzdWx0OwotICAgICAgICAgICAgd2hpbGUgKChyZXN1bHQg
PSBmcHV0YygqY3VycmVudCwgc3Rkb3V0KSkgPT0gRU9GICYmIGVycm5vID09IEVJTlRSKSB7IH0K
LSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gRU9GKTsKLSAgICAgICAgICAgICsrY3VycmVu
dDsKLSAgICAgICAgfQotICAgIH0KKyAgICB3cml0ZUxpbmUobWV0YURhdGEubmFtZSk7CisgICAg
d3JpdGVMaW5lKG1ldGFEYXRhLmRlc2NyaXB0aW9uKTsKKyAgICB3cml0ZUxpbmUobWV0YURhdGEu
bWltZURlc2NyaXB0aW9uKTsKIAogICAgIGZmbHVzaChzdGRvdXQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVGV4dENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9UZXh0Q2hlY2tlci5oCmluZGV4IDNiODYyNmI3ZmE2MzY3YTFmMzc4MGYwZjZhZWMx
ZTVlOTQzNTY5MDMuLjQxMTkyOGFhYTRlNTAwMTExZWMxNTAxYWM0MWQyODhkYzBkNzFiMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0Q2hlY2tlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0Q2hlY2tlci5oCkBAIC02NywxMCArNjcsMTAgQEAg
cHVibGljOgogICAgIHN0YXRpYyBpbnQ2NF90IHVuaXF1ZVNwZWxsRG9jdW1lbnRUYWcoV2ViUGFn
ZVByb3h5Kik7CiAgICAgc3RhdGljIHZvaWQgY2xvc2VTcGVsbERvY3VtZW50V2l0aFRhZyhpbnQ2
NF90KTsKICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQotICAgIHN0YXRpYyBWZWN0b3I8
V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiBjaGVja1RleHRPZlBhcmFncmFwaChpbnQ2NF90
IHNwZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCB1aW50NjRf
dCBjaGVja2luZ1R5cGVzKTsKKyAgICBzdGF0aWMgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2lu
Z1Jlc3VsdD4gY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoaW50NjRfdCBzcGVsbERvY3VtZW50VGFnLCBT
dHJpbmdWaWV3IHRleHQsIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMpOwogI2VuZGlmCi0gICAgc3Rh
dGljIHZvaWQgY2hlY2tTcGVsbGluZ09mU3RyaW5nKGludDY0X3Qgc3BlbGxEb2N1bWVudFRhZywg
Y29uc3QgVUNoYXIqIHRleHQsIHVpbnQzMl90IGxlbmd0aCwgaW50MzJfdCYgbWlzc3BlbGxpbmdM
b2NhdGlvbiwgaW50MzJfdCYgbWlzc3BlbGxpbmdMZW5ndGgpOwotICAgIHN0YXRpYyB2b2lkIGNo
ZWNrR3JhbW1hck9mU3RyaW5nKGludDY0X3Qgc3BlbGxEb2N1bWVudFRhZywgY29uc3QgVUNoYXIq
IHRleHQsIHVpbnQzMl90IGxlbmd0aCwgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+Jiwg
aW50MzJfdCYgYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQzMl90JiBiYWRHcmFtbWFyTGVuZ3RoKTsK
KyAgICBzdGF0aWMgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoaW50NjRfdCBzcGVsbERvY3Vt
ZW50VGFnLCBTdHJpbmdWaWV3IHRleHQsIGludDMyX3QmIG1pc3NwZWxsaW5nTG9jYXRpb24sIGlu
dDMyX3QmIG1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBjaGVja0dyYW1tYXJP
ZlN0cmluZyhpbnQ2NF90IHNwZWxsRG9jdW1lbnRUYWcsIFN0cmluZ1ZpZXcgdGV4dCwgVmVjdG9y
PFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50MzJfdCYgYmFkR3JhbW1hckxvY2F0aW9uLCBp
bnQzMl90JiBiYWRHcmFtbWFyTGVuZ3RoKTsKICAgICBzdGF0aWMgYm9vbCBzcGVsbGluZ1VJSXNT
aG93aW5nKCk7CiAgICAgc3RhdGljIHZvaWQgdG9nZ2xlU3BlbGxpbmdVSUlzU2hvd2luZygpOwog
ICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQoaW50NjRf
dCBzcGVsbERvY3VtZW50VGFnLCBjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYTc2YmFkMDEzODk3NWRl
YWFiYTYyMmVhOTE5NTUxNjAxOTc1ZjYzYS4uOGQ2YjJmMWFkOTI1NTgwNjMxMWZmNDJhZWExZDNm
OWFhZjMwNWI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTM0NjksMTggKzM0NjksMTggQEAgaW50NjRfdCBXZWJQYWdlUHJveHk6OnNwZWxsRG9jdW1l
bnRUYWcoKQogI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCBjaGVj
a2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKIHsKLSAgICBy
ZXN1bHRzID0gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKHNwZWxsRG9jdW1lbnRU
YWcoKSwgdGV4dC5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCB0ZXh0Lmxlbmd0aCgpLCBjaGVja2lu
Z1R5cGVzKTsKKyAgICByZXN1bHRzID0gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBo
KHNwZWxsRG9jdW1lbnRUYWcoKSwgdGV4dCwgY2hlY2tpbmdUeXBlcyk7CiB9CiAjZW5kaWYKIAog
dm9pZCBXZWJQYWdlUHJveHk6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBTdHJpbmcmIHRl
eHQsIGludDMyX3QmIG1pc3NwZWxsaW5nTG9jYXRpb24sIGludDMyX3QmIG1pc3NwZWxsaW5nTGVu
Z3RoKQogewotICAgIFRleHRDaGVja2VyOjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcoc3BlbGxEb2N1
bWVudFRhZygpLCB0ZXh0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHRleHQubGVuZ3RoKCksIG1p
c3NwZWxsaW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICBUZXh0Q2hlY2tlcjo6
Y2hlY2tTcGVsbGluZ09mU3RyaW5nKHNwZWxsRG9jdW1lbnRUYWcoKSwgdGV4dCwgbWlzc3BlbGxp
bmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgU3RyaW5nJiB0ZXh0LCBWZWN0b3I8R3JhbW1hckRl
dGFpbD4mIGdyYW1tYXJEZXRhaWxzLCBpbnQzMl90JiBiYWRHcmFtbWFyTG9jYXRpb24sIGludDMy
X3QmIGJhZEdyYW1tYXJMZW5ndGgpCiB7Ci0gICAgVGV4dENoZWNrZXI6OmNoZWNrR3JhbW1hck9m
U3RyaW5nKHNwZWxsRG9jdW1lbnRUYWcoKSwgdGV4dC5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCB0
ZXh0Lmxlbmd0aCgpLCBncmFtbWFyRGV0YWlscywgYmFkR3JhbW1hckxvY2F0aW9uLCBiYWRHcmFt
bWFyTGVuZ3RoKTsKKyAgICBUZXh0Q2hlY2tlcjo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoc3BlbGxE
b2N1bWVudFRhZygpLCB0ZXh0LCBncmFtbWFyRGV0YWlscywgYmFkR3JhbW1hckxvY2F0aW9uLCBi
YWRHcmFtbWFyTGVuZ3RoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNwZWxsaW5nVUlJc1No
b3dpbmcoYm9vbCYgaXNTaG93aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9UZXh0Q2hlY2tlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1RleHRDaGVja2VyRWZsLmNwcAppbmRleCBkYTEyOTBkYWQ2NzI5ZDc5Mzc0ZGFhOTA3M2QxZDFj
YjM0NzhlODIxLi5iMzdkMDlhNzdlYTBjZWZjMjA2ZWRlOWI3OGJlNDEwYmE2YTg5OTRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1RleHRDaGVja2VyRWZsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1RleHRDaGVja2VyRWZsLmNwcApAQCAt
MTIwLDE5ICsxMjAsMTkgQEAgdm9pZCBUZXh0Q2hlY2tlcjo6Y2xvc2VTcGVsbERvY3VtZW50V2l0
aFRhZyhpbnQ2NF90IHRhZykKIH0KIAogI2lmIEVOQUJMRShTUEVMTENIRUNLKQotc3RhdGljIGlu
dCBuZXh0V29yZE9mZnNldChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgaW50IGN1cnJl
bnRPZmZzZXQpCitzdGF0aWMgdW5zaWduZWQgbmV4dFdvcmRPZmZzZXQoU3RyaW5nVmlldyB0ZXh0
LCB1bnNpZ25lZCBjdXJyZW50T2Zmc2V0KQogewogICAgIC8vIEZJWE1FOiBhdm9pZCBjcmVhdGlu
ZyB0ZXh0SXRlcmF0b3Igb2JqZWN0IGhlcmUsIGl0IGNvdWxkIGJlIHBhc3NlZCBhcyBhIHBhcmFt
ZXRlci4KICAgICAvLyAgICAgICAgaXNUZXh0QnJlYWsoKSBsZWF2ZXMgdGhlIGl0ZXJhdG9yIHBv
aW50aW5nIHRvIHRoZSBmaXJzdCBib3VuZGFyeSBwb3NpdGlvbiBhdAogICAgIC8vICAgICAgICBv
ciBhZnRlciAib2Zmc2V0IiAodWJya19pc0JvdW5kYXJ5IHNpZGUgZWZmZWN0KS4KICAgICAvLyAg
ICAgICAgRm9yIG1hbnkgd29yZCBzZXBhcmF0b3JzLCB0aGUgbWV0aG9kIGRvZXNuJ3QgcHJvcGVy
bHkgZGV0ZXJtaW5lIHRoZSBib3VuZGFyaWVzCiAgICAgLy8gICAgICAgIHdpdGhvdXQgcmVzZXR0
aW5nIHRoZSBpdGVyYXRvci4KLSAgICBUZXh0QnJlYWtJdGVyYXRvciogdGV4dEl0ZXJhdG9yID0g
d29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyh0ZXh0LCBsZW5ndGgpKTsKKyAgICBUZXh0QnJl
YWtJdGVyYXRvciogdGV4dEl0ZXJhdG9yID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dCk7CiAgICAg
aWYgKCF0ZXh0SXRlcmF0b3IpCiAgICAgICAgIHJldHVybiBjdXJyZW50T2Zmc2V0OwogCi0gICAg
aW50IHdvcmRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0OwotICAgIHdoaWxlICh3b3JkT2Zmc2V0IDwg
bGVuZ3RoICYmIGlzVGV4dEJyZWFrKHRleHRJdGVyYXRvciwgd29yZE9mZnNldCkpCisgICAgdW5z
aWduZWQgd29yZE9mZnNldCA9IGN1cnJlbnRPZmZzZXQ7CisgICAgd2hpbGUgKHdvcmRPZmZzZXQg
PCB0ZXh0Lmxlbmd0aCgpICYmIGlzVGV4dEJyZWFrKHRleHRJdGVyYXRvciwgd29yZE9mZnNldCkp
CiAgICAgICAgICsrd29yZE9mZnNldDsKIAogICAgIC8vIERvIG5vdCB0cmVhdCB0aGUgd29yZCdz
IGJvdW5kYXJ5IGFzIGEgc2VwYXJhdG9yLgpAQCAtMTQ4LDI2ICsxNDgsMjYgQEAgc3RhdGljIGlu
dCBuZXh0V29yZE9mZnNldChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgaW50IGN1cnJl
bnRPZmZzZXQpCiAjZW5kaWYgLy8gRU5BQkxFKFNQRUxMQ0hFQ0spCiAKICNpZiBVU0UoVU5JRklF
RF9URVhUX0NIRUNLSU5HKQotVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6
OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGludDY0X3Qgc3BlbGxEb2N1bWVudFRhZywgY29uc3QgVUNo
YXIqIHRleHQsIGludCBsZW5ndGgsIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMpCitWZWN0b3I8VGV4
dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoaW50NjRf
dCBzcGVsbERvY3VtZW50VGFnLCBTdHJpbmdWaWV3IHRleHQsIHVpbnQ2NF90IGNoZWNraW5nVHlw
ZXMpCiB7CiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcGFyYWdyYXBoQ2hlY2tpbmdS
ZXN1bHQ7CiAjaWYgRU5BQkxFKFNQRUxMQ0hFQ0spCiAgICAgaWYgKGNoZWNraW5nVHlwZXMgJiBU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcpIHsKLSAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IqIHRl
eHRJdGVyYXRvciA9IHdvcmRCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcodGV4dCwgbGVuZ3RoKSk7
CisgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiB0ZXh0SXRlcmF0b3IgPSB3b3JkQnJlYWtJdGVy
YXRvcih0ZXh0KTsKICAgICAgICAgaWYgKCF0ZXh0SXRlcmF0b3IpCiAgICAgICAgICAgICByZXR1
cm4gcGFyYWdyYXBoQ2hlY2tpbmdSZXN1bHQ7CiAKICAgICAgICAgLy8gT21pdCB0aGUgd29yZCBz
ZXBhcmF0b3JzIGF0IHRoZSBiZWdpbm5pbmcvZW5kIG9mIHRoZSB0ZXh0IHRvIGRvbid0IHVubmVj
ZXNzYXJpbHkKICAgICAgICAgLy8gaW52b2x2ZSB0aGUgY2xpZW50IHRvIGNoZWNrIHNwZWxsaW5n
IGZvciB0aGVtLgotICAgICAgICBpbnQgb2Zmc2V0ID0gbmV4dFdvcmRPZmZzZXQodGV4dCwgbGVu
Z3RoLCAwKTsKLSAgICAgICAgaW50IGxlbmd0aFN0cmlwID0gbGVuZ3RoOworICAgICAgICB1bnNp
Z25lZCBvZmZzZXQgPSBuZXh0V29yZE9mZnNldCh0ZXh0LCAwKTsKKyAgICAgICAgdW5zaWduZWQg
bGVuZ3RoU3RyaXAgPSB0ZXh0Lmxlbmd0aCgpOwogICAgICAgICB3aGlsZSAobGVuZ3RoU3RyaXAg
PiAwICYmIGlzVGV4dEJyZWFrKHRleHRJdGVyYXRvciwgbGVuZ3RoU3RyaXAgLSAxKSkKICAgICAg
ICAgICAgIC0tbGVuZ3RoU3RyaXA7CiAKLSAgICAgICAgd2hpbGUgKG9mZnNldCA+PSAwICYmIG9m
ZnNldCA8IGxlbmd0aFN0cmlwKSB7CisgICAgICAgIHdoaWxlIChvZmZzZXQgPCBsZW5ndGhTdHJp
cCkgewogICAgICAgICAgICAgaW50MzJfdCBtaXNzcGVsbGluZ0xvY2F0aW9uID0gLTE7CiAgICAg
ICAgICAgICBpbnQzMl90IG1pc3NwZWxsaW5nTGVuZ3RoID0gMDsKLSAgICAgICAgICAgIGNoZWNr
U3BlbGxpbmdPZlN0cmluZyhzcGVsbERvY3VtZW50VGFnLCB0ZXh0ICsgb2Zmc2V0LCBsZW5ndGhT
dHJpcCAtIG9mZnNldCwgbWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOwor
ICAgICAgICAgICAgY2hlY2tTcGVsbGluZ09mU3RyaW5nKHNwZWxsRG9jdW1lbnRUYWcsIHRleHQu
c3Vic3RyaW5nKG9mZnNldCwgbGVuZ3RoU3RyaXAgLSBvZmZzZXQpLCBtaXNzcGVsbGluZ0xvY2F0
aW9uLCBtaXNzcGVsbGluZ0xlbmd0aCk7CiAgICAgICAgICAgICBpZiAoIW1pc3NwZWxsaW5nTGVu
Z3RoKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0xNzgsNyArMTc4LDcgQEAgVmVjdG9y
PFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGlu
dDY0X3Qgc3BlbGxEb2N1bWUKICAgICAgICAgICAgIHBhcmFncmFwaENoZWNraW5nUmVzdWx0LmFw
cGVuZChtaXNzcGVsbGluZ1Jlc3VsdCk7CiAgICAgICAgICAgICBvZmZzZXQgKz0gbWlzc3BlbGxp
bmdMb2NhdGlvbiArIG1pc3NwZWxsaW5nTGVuZ3RoOwogICAgICAgICAgICAgLy8gR2VuZXJhbGx5
LCB3ZSBlbmQgdXAgY2hlY2tpbmcgYXQgdGhlIHdvcmQgc2VwYXJhdG9yLCBtb3ZlIHRvIHRoZSBh
ZGphY2VudCB3b3JkLgotICAgICAgICAgICAgb2Zmc2V0ID0gbmV4dFdvcmRPZmZzZXQodGV4dCwg
bGVuZ3RoU3RyaXAsIG9mZnNldCk7CisgICAgICAgICAgICBvZmZzZXQgPSBuZXh0V29yZE9mZnNl
dCh0ZXh0LnN1YnN0cmluZygwLCBsZW5ndGhTdHJpcCksIG9mZnNldCk7CiAgICAgICAgIH0KICAg
ICB9CiAjZWxzZQpAQCAtMTkxLDEwICsxOTEsMTAgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3Vs
dD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGludDY0X3Qgc3BlbGxEb2N1bWUK
IH0KICNlbmRpZgogCi12b2lkIFRleHRDaGVja2VyOjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcoaW50
NjRfdCBzcGVsbERvY3VtZW50VGFnLCBjb25zdCBVQ2hhciogdGV4dCwgdWludDMyX3QgbGVuZ3Ro
LCBpbnQzMl90JiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQzMl90JiBtaXNzcGVsbGluZ0xlbmd0
aCkKK3ZvaWQgVGV4dENoZWNrZXI6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhpbnQ2NF90IHNwZWxs
RG9jdW1lbnRUYWcsIFN0cmluZ1ZpZXcgdGV4dCwgaW50MzJfdCYgbWlzc3BlbGxpbmdMb2NhdGlv
biwgaW50MzJfdCYgbWlzc3BlbGxpbmdMZW5ndGgpCiB7CiAjaWYgRU5BQkxFKFNQRUxMQ0hFQ0sp
Ci0gICAgV2ViVGV4dENoZWNrZXI6OnNoYXJlZCgpLT5jbGllbnQoKS5jaGVja1NwZWxsaW5nT2ZT
dHJpbmcoc3BlbGxEb2N1bWVudFRhZywgU3RyaW5nKHRleHQsIGxlbmd0aCksIG1pc3NwZWxsaW5n
TG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICBXZWJUZXh0Q2hlY2tlcjo6c2hhcmVk
KCktPmNsaWVudCgpLmNoZWNrU3BlbGxpbmdPZlN0cmluZyhzcGVsbERvY3VtZW50VGFnLCB0ZXh0
LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSwgbWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxp
bmdMZW5ndGgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc3BlbGxEb2N1bWVudFRhZyk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRleHQpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgVGV4dENoZWNr
ZXI6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhpbnQ2NF90IHNwZWxsRG9jdW1lbnRUYWcsIGNvbnN0
IFVDaGFyKiB0CiAjZW5kaWYKIH0KIAotdm9pZCBUZXh0Q2hlY2tlcjo6Y2hlY2tHcmFtbWFyT2ZT
dHJpbmcoaW50NjRfdCwgY29uc3QgVUNoYXIqLCB1aW50MzJfdCwgVmVjdG9yPEdyYW1tYXJEZXRh
aWw+JiwgaW50MzJfdCYsIGludDMyX3QmKQordm9pZCBUZXh0Q2hlY2tlcjo6Y2hlY2tHcmFtbWFy
T2ZTdHJpbmcoaW50NjRfdCwgU3RyaW5nVmlldywgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50
MzJfdCYsIGludDMyX3QmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkBAIC0yNzEsMTAg
KzI3MSw3IEBAIHZvaWQgVGV4dENoZWNrZXI6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFBhc3NS
ZWZQdHI8VGV4dENoZWNrZXJDb21wbGV0aW9uPiBjb21wCiAgICAgQVNTRVJUKHJlcXVlc3Quc2Vx
dWVuY2UoKSAhPSB1bnJlcXVlc3RlZFRleHRDaGVja2luZ1NlcXVlbmNlKTsKICAgICBBU1NFUlQo
cmVxdWVzdC5tYXNrKCkgIT0gVGV4dENoZWNraW5nVHlwZU5vbmUpOwogCi0gICAgU3RyaW5nIHRl
eHQgPSByZXF1ZXN0LnRleHQoKTsKLSAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1
bHQgPSBjaGVja1RleHRPZlBhcmFncmFwaChjb21wbGV0aW9uLT5zcGVsbERvY3VtZW50VGFnKCks
IHRleHQuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSwgcmVxdWVzdC5tYXNr
KCkpOwotCi0gICAgY29tcGxldGlvbi0+ZGlkRmluaXNoQ2hlY2tpbmdUZXh0KHJlc3VsdCk7Cisg
ICAgY29tcGxldGlvbi0+ZGlkRmluaXNoQ2hlY2tpbmdUZXh0KGNoZWNrVGV4dE9mUGFyYWdyYXBo
KGNvbXBsZXRpb24tPnNwZWxsRG9jdW1lbnRUYWcoKSwgcmVxdWVzdC50ZXh0KCksIHJlcXVlc3Qu
bWFzaygpKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb21wbGV0aW9uKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0KaW5kZXgg
ODcxMjA1NjY0MGEzZThiM2M5ZTI4YzJlODI5M2MwMDgyNWMyM2ZhNi4uZDIzNjlkNTdhMDIzNDU1
MmYwOTU4YTZlMjI4YTQ2NDExYzQ0NTg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1RleHRDaGVja2VySU9TLm1tCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIlRl
eHRDaGVja2VyU3RhdGUuaCIKICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNp
bXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKQEAgLTEzMSw3ICsxMzIsNyBAQCB2b2lkIFRleHRDaGVja2VyOjpjbG9zZVNwZWxsRG9jdW1l
bnRXaXRoVGFnKGludDY0X3QpCiAKICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogCi1W
ZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3Jh
cGgoaW50NjRfdCwgY29uc3QgVUNoYXIqLCBpbnQsIHVpbnQ2NF90KQorVmVjdG9yPFRleHRDaGVj
a2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGludDY0X3QsIFN0
cmluZ1ZpZXcsIHVpbnQ2NF90KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJu
IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+KCk7CkBAIC0xMzksMTUgKzE0MCwxMyBAQCBWZWN0
b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgo
aW50NjRfdCwgY29uc3QgVUNoYQogCiAjZW5kaWYKIAotdm9pZCBUZXh0Q2hlY2tlcjo6Y2hlY2tT
cGVsbGluZ09mU3RyaW5nKGludDY0X3QsIGNvbnN0IFVDaGFyKiwgdWludDMyX3QsIGludDMyX3Qm
LCBpbnQzMl90JikKK3ZvaWQgVGV4dENoZWNrZXI6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhpbnQ2
NF90LCBTdHJpbmdWaWV3LCBpbnQzMl90JiwgaW50MzJfdCYpCiB7Ci0gICAgLy8gTWFjIHVzZXMg
Y2hlY2tUZXh0T2ZQYXJhZ3JhcGggaW5zdGVhZC4KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
Ci12b2lkIFRleHRDaGVja2VyOjpjaGVja0dyYW1tYXJPZlN0cmluZyhpbnQ2NF90LCBjb25zdCBV
Q2hhciosIHVpbnQzMl90LCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQzMl90
JiwgaW50MzJfdCYpCit2b2lkIFRleHRDaGVja2VyOjpjaGVja0dyYW1tYXJPZlN0cmluZyhpbnQ2
NF90LCBTdHJpbmdWaWV3LCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQzMl90
JiwgaW50MzJfdCYpCiB7Ci0gICAgLy8gTWFjIHVzZXMgY2hlY2tUZXh0T2ZQYXJhZ3JhcGggaW5z
dGVhZC4KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQppbmRleCBjMmNlMzc4N2UxMDc5OGVjYzRlODIx
YzAxYWE2NWRiYWY4ZDMyZjE0Li5kZDhiNzJmNjg0ZTYxNGNlOTZjNDcwNjNhNjg5NDAxNzcwOWYx
YjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2Vy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMu
bW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIlRleHRDaGVja2VyU3RhdGUuaCIKICNpbXBv
cnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIAogQGludGVyZmFjZSBOU1NwZWxsQ2hl
Y2tlciAoV2ViTlNTcGVsbENoZWNrZXJEZXRhaWxzKQogLSAoTlNTdHJpbmcgKilsYW5ndWFnZUZv
cldvcmRSYW5nZTooTlNSYW5nZSlyYW5nZSBpblN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgb3J0
aG9ncmFwaHk6KE5TT3J0aG9ncmFwaHkgKilvcnRob2dyYXBoeTsKQEAgLTI5NSwxMyArMjk2LDEz
IEBAIHZvaWQgVGV4dENoZWNrZXI6OmNsb3NlU3BlbGxEb2N1bWVudFdpdGhUYWcoaW50NjRfdCB0
YWcpCiAKICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogCi1WZWN0b3I8VGV4dENoZWNr
aW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoaW50NjRfdCBzcGVs
bERvY3VtZW50VGFnLCBjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWludDY0X3QgY2hl
Y2tpbmdUeXBlcykKK1ZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVj
a1RleHRPZlBhcmFncmFwaChpbnQ2NF90IHNwZWxsRG9jdW1lbnRUYWcsIFN0cmluZ1ZpZXcgdGV4
dCwgdWludDY0X3QgY2hlY2tpbmdUeXBlcykKIHsKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVz
dWx0PiByZXN1bHRzOwogCi0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiB0ZXh0U3RyaW5nID0gYWRv
cHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aENoYXJhY3RlcnNOb0NvcHk6Y29uc3RfY2Fz
dDxVQ2hhcio+KHRleHQpIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXSk7Ci0gICAgTlNB
cnJheSAqaW5jb21pbmdSZXN1bHRzID0gW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNr
ZXJdIGNoZWNrU3RyaW5nOnRleHRTdHJpbmcgLmdldCgpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdl
Ok5TTWFrZVJhbmdlKDAsIGxlbmd0aCkKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHRleHRTdHJp
bmcgPSB0ZXh0LmNyZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKTsKKyAgICBOU0FycmF5ICpp
bmNvbWluZ1Jlc3VsdHMgPSBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gY2hl
Y2tTdHJpbmc6dGV4dFN0cmluZy5nZXQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZTpOU01ha2VS
YW5nZSgwLCB0ZXh0Lmxlbmd0aCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlczpjaGVja2luZ1R5
cGVzIHwgTlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlv
bnM6bmlsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsRG9jdW1lbnRUYWcgCkBAIC0zODQs
MTMgKzM4NSwxMyBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hl
Y2tUZXh0T2ZQYXJhZ3JhcGgoaW50NjRfdCBzcGVsbERvY3VtZQogCiAjZW5kaWYKIAotdm9pZCBU
ZXh0Q2hlY2tlcjo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKGludDY0X3QsIGNvbnN0IFVDaGFyKiwg
dWludDMyX3QsIGludDMyX3QmLCBpbnQzMl90JikKK3ZvaWQgVGV4dENoZWNrZXI6OmNoZWNrU3Bl
bGxpbmdPZlN0cmluZyhpbnQ2NF90LCBTdHJpbmdWaWV3LCBpbnQzMl90JiwgaW50MzJfdCYpCiB7
CiAgICAgLy8gTWFjIHVzZXMgY2hlY2tUZXh0T2ZQYXJhZ3JhcGggaW5zdGVhZC4KICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFRleHRDaGVja2VyOjpjaGVja0dyYW1tYXJPZlN0cmlu
ZyhpbnQ2NF90LCBjb25zdCBVQ2hhciosIHVpbnQzMl90LCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1h
ckRldGFpbD4mLCBpbnQzMl90JiwgaW50MzJfdCYpCit2b2lkIFRleHRDaGVja2VyOjpjaGVja0dy
YW1tYXJPZlN0cmluZyhpbnQ2NF90LCBTdHJpbmdWaWV3LCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1h
ckRldGFpbD4mLCBpbnQzMl90JiwgaW50MzJfdCYpCiB7CiAgICAgLy8gTWFjIHVzZXMgY2hlY2tU
ZXh0T2ZQYXJhZ3JhcGggaW5zdGVhZC4KICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2Fw
ZVBsdWdpbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0KaW5kZXggNzI1ZjIyYmE5YTU1ZTViYzRmNGVmZjk0
NDk3NTA4N2VmZjU0OGVkMy4uOGViMTdjNjU3YTFhYzVjOWYzNjE5YTVkOGM3MGZmY2YyMDFjYjY2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tCkBAIC05NjMsNyArOTYz
LDcgQEAgdWludDY0X3QgTmV0c2NhcGVQbHVnaW46OnBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVu
dGlmaWVyKCkgY29uc3QKIAogCiAjaWZuZGVmIE5QX05PX0NBUkJPTgotc3RhdGljIGJvb2wgY29u
dmVydFN0cmluZ1RvS2V5Q29kZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIFNjcmlwdENvZGUgc2Ny
aXB0Q29kZSwgVmVjdG9yPFVJbnQ4PiYga2V5Q29kZXMpCitzdGF0aWMgYm9vbCBjb252ZXJ0U3Ry
aW5nVG9LZXlDb2RlcyhTdHJpbmdWaWV3IHN0cmluZywgU2NyaXB0Q29kZSBzY3JpcHRDb2RlLCBW
ZWN0b3I8VUludDg+JiBrZXlDb2RlcykKIHsKICAgICAvLyBDcmVhdGUgdGhlIG1hcHBpbmcuCiAg
ICAgVW5pY29kZU1hcHBpbmcgbWFwcGluZzsKQEAgLTk3MywyNyArOTczLDI3IEBAIHN0YXRpYyBi
b29sIGNvbnZlcnRTdHJpbmdUb0tleUNvZGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBTY3JpcHRD
b2RlIHNjcmlwdENvZGUsCiAKICAgICBtYXBwaW5nLnVuaWNvZGVFbmNvZGluZyA9IENyZWF0ZVRl
eHRFbmNvZGluZyhrVGV4dEVuY29kaW5nVW5pY29kZURlZmF1bHQsIGtUZXh0RW5jb2RpbmdEZWZh
dWx0VmFyaWFudCwga1RleHRFbmNvZGluZ0RlZmF1bHRGb3JtYXQpOwogICAgIG1hcHBpbmcubWFw
cGluZ1ZlcnNpb24gPSBrVW5pY29kZVVzZUxhdGVzdE1hcHBpbmc7Ci0gICAgCisKICAgICAvLyBD
cmVhdGUgdGhlIGNvbnZlcnRlcgogICAgIFVuaWNvZGVUb1RleHRJbmZvIHRleHRJbmZvOwotICAg
IAorCiAgICAgaWYgKENyZWF0ZVVuaWNvZGVUb1RleHRJbmZvKCZtYXBwaW5nLCAmdGV4dEluZm8p
ICE9IG5vRXJyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICBCeXRlQ291bnQg
aW5wdXRMZW5ndGggPSBzdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoVW5pQ2hhcik7CiAgICAgQnl0
ZUNvdW50IGlucHV0UmVhZDsKICAgICBCeXRlQ291bnQgb3V0cHV0TGVuZ3RoOwogICAgIEJ5dGVD
b3VudCBtYXhPdXRwdXRMZW5ndGggPSBzdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoVW5pQ2hhcik7
CiAKICAgICBWZWN0b3I8VUludDg+IG91dHB1dERhdGEobWF4T3V0cHV0TGVuZ3RoKTsKLSAgICBP
U1N0YXR1cyBzdGF0dXMgPSBDb252ZXJ0RnJvbVVuaWNvZGVUb1RleHQodGV4dEluZm8sIGlucHV0
TGVuZ3RoLCBzdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwga05pbE9wdGlvbnMsIDAsIDAs
IDAsIDAsIG1heE91dHB1dExlbmd0aCwgJmlucHV0UmVhZCwgJm91dHB1dExlbmd0aCwgb3V0cHV0
RGF0YS5kYXRhKCkpOworICAgIE9TU3RhdHVzIHN0YXR1cyA9IENvbnZlcnRGcm9tVW5pY29kZVRv
VGV4dCh0ZXh0SW5mbywgaW5wdXRMZW5ndGgsIHN0cmluZy51cGNvbnZlcnRlZENoYXJhY3RlcnMo
KSwga05pbE9wdGlvbnMsIDAsIDAsIDAsIDAsIG1heE91dHB1dExlbmd0aCwgJmlucHV0UmVhZCwg
Jm91dHB1dExlbmd0aCwgb3V0cHV0RGF0YS5kYXRhKCkpOwogICAgIAogICAgIERpc3Bvc2VVbmlj
b2RlVG9UZXh0SW5mbygmdGV4dEluZm8pOwogICAgIAogICAgIGlmIChzdGF0dXMgIT0gbm9FcnIp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG91dHB1dERhdGEuc3dhcChrZXlDb2Rlcyk7
CisgICAga2V5Q29kZXMgPSBzdGQ6Om1vdmUob3V0cHV0RGF0YSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAjZW5kaWYKQEAgLTEwMzQsOCArMTAzNCw4IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnNl
bmRDb21wbGV4VGV4dElucHV0KGNvbnN0IFN0cmluZyYgdGV4dElucHV0KQogICAgICAgICBFdmVu
dFJlY29yZCBldmVudCA9IGluaXRpYWxpemVFdmVudFJlY29yZChrZXlEb3duKTsKICAgICAgICAg
ZXZlbnQubW9kaWZpZXJzID0gMDsKIAotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtl
eUNvZGVzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICBldmVudC5tZXNzYWdlID0ga2V5Q29k
ZXNbaV07CisgICAgICAgIGZvciAoYXV0byYga2V5Q29kZSA6IGtleUNvZGVzKSB7CisgICAgICAg
ICAgICBldmVudC5tZXNzYWdlID0ga2V5Q29kZTsKICAgICAgICAgICAgIE5QUF9IYW5kbGVFdmVu
dCgmZXZlbnQpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0VuY29kZXJBZGFwdGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FbmNvZGVyQWRhcHRlci5jcHAKaW5kZXggMzhlYzFk
YzgxMTMyMDQwZTRmNjllNTg4ODE1NWE3MTQxY2Y1YzYyZi4uYmRjMDc0ZWZlYjFiMTMyZDEwNzFm
YTA2Mjk2NTE4ZGEzN2Q2NTJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0VuY29kZXJBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nVmlldy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTA4LDcgKzEwOCw3IEBAIHZv
aWQgRW5jb2RlckFkYXB0ZXI6OmVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogCiAg
ICAgdWludDY0X3QgbGVuZ3RoSW5CeXRlcyA9IGxlbmd0aCAqIHNpemVvZihVQ2hhcik7CiAgICAg
bV9lbmNvZGVyIDw8IGxlbmd0aEluQnl0ZXM7Ci0gICAgbV9lbmNvZGVyLmVuY29kZUZpeGVkTGVu
Z3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih2YWx1ZS5kZXByZWNhdGVk
Q2hhcmFjdGVycygpKSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSwgYWxpZ25vZihVQ2hhcikpOwor
ICAgIG1fZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oU3RyaW5nVmlldyh2YWx1ZSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0
KCkpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpLCBhbGlnbm9mKFVDaGFyKSk7CiB9CiAKIH0K
</data>
<flag name="review"
          id="251068"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>