<?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>139571</bug_id>
          
          <creation_ts>2014-12-11 17:26:01 -0800</creation_ts>
          <short_desc>Use is&lt;&gt;() / downcast&lt;&gt;() for StyleRuleBase subclasses</short_desc>
          <delta_ts>2014-12-12 12:27:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1054709</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-12-11 17:26:01 -0800</bug_when>
    <thetext>Use is&lt;&gt;() / downcast&lt;&gt;() for StyleRuleBase subclasses for safety.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054714</commentid>
    <comment_count>1</comment_count>
      <attachid>243167</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-12-11 17:43:25 -0800</bug_when>
    <thetext>Created attachment 243167
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054724</commentid>
    <comment_count>2</comment_count>
      <attachid>243170</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-12-11 18:07:07 -0800</bug_when>
    <thetext>Created attachment 243170
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054872</commentid>
    <comment_count>3</comment_count>
      <attachid>243170</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-12-12 11:46:00 -0800</bug_when>
    <thetext>Comment on attachment 243170
Patch

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

r=me

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:-1049
&gt; -        if (!matchedRules[i]-&gt;isStyleRule())
&gt; -            continue;

Hah, this was silly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054875</commentid>
    <comment_count>4</comment_count>
      <attachid>243170</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-12-12 12:05:41 -0800</bug_when>
    <thetext>Comment on attachment 243170
Patch

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

&gt;&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:-1049
&gt;&gt; -            continue;
&gt; 
&gt; Hah, this was silly.

It is nice that is&lt;&gt;() / downcast&lt;&gt;() give build failures on useless type checks / casts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054884</commentid>
    <comment_count>5</comment_count>
      <attachid>243170</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-12 12:27:40 -0800</bug_when>
    <thetext>Comment on attachment 243170
Patch

Clearing flags on attachment: 243170

Committed r177228: &lt;http://trac.webkit.org/changeset/177228&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054885</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-12 12:27:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243167</attachid>
            <date>2014-12-11 17:43:25 -0800</date>
            <delta_ts>2014-12-11 18:07:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139571-20141211174409.patch</filename>
            <type>text/plain</type>
            <size>28333</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3MTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDAyMzQ1MTkzMTVmNzJl
MThhNjBhN2JlMWM1MTFjZDI5N2QwMTg0Yi4uZmMxY2QyYzgyMGMzYzMzNWNjNDc3YzBiNGY2Mjc0
MzRiMDI4OWRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUxIEBACiAyMDE0LTEyLTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgU3R5bGVSdWxlQmFzZSBzdWJjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk1NzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZv
ciBTdHlsZVJ1bGVCYXNlIHN1YmNsYXNzZXMgZm9yIHNhZmV0eSBhbmQKKyAgICAgICAgY29uc2lz
dGVuY3kuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAg
ICAgICAgKiBjc3MvQ1NTRm9udEZhY2VSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zv
bnRGYWNlUnVsZTo6cmVhdHRhY2gpOgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmg6
CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIGNzcy9DU1NQYWdlUnVsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYWdlUnVsZTo6cmVhdHRhY2gpOgorICAgICAgICAqIGNzcy9DU1NT
dHlsZVJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVSdWxlOjpyZWF0dGFjaCk6
CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVTaGVldDo6aW5zZXJ0UnVsZSk6CisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UnVsZVNldDo6YWRkUmVnaW9uUnVsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSdWxlU2V0OjphZGRDaGlsZFJ1bGVzKToKKyAgICAgICAgKiBjc3MvU3R5bGVJbnZhbGlkYXRp
b25BbmFseXNpcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGREaXJ0eUFsbFN0eWxlKToK
KyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVs
ZUJhc2U6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlQmFzZTo6Y29weSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIpOgor
ICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjp0b1N0eWxlUnVsZSk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL1N0eWxlUnVsZUlt
cG9ydC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldENvbnRl
bnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb250ZW50czo6cGFyc2VyQXBw
ZW5kUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0Q29udGVudHM6OndyYXBwZXJJ
bnNlcnRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb250ZW50czo6YWRkU3Vi
cmVzb3VyY2VTdHlsZVVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6Y2hpbGRSdWxlc0hhdmVGYWls
ZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTVmlld3Bv
cnRSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1ZpZXdwb3J0UnVsZTo6cmVh
dHRhY2gpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvck1hdGNoZWRSdWxl
TGlzdCk6CisKKzIwMTQtMTItMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwog
ICAgICAgICBSZWdyZXNzaW9uKHIxNzYyMTIpOiBDYXJvdXNlbCBvbiBtYnVzYS5jb20gaXMgY2hv
cHB5CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk1
NDMKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE5MjA5NDA2PgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VSdWxlLmNwcAppbmRleCBmNjRhY2Q5OWNiZTgyZmU1ZjIyM2E1NmZiNjJkYmY2ZGZi
MWNlZjJmLi4wZGRhMWIyYzVhM2I0YmVjOTAwNWY0NGViMzJhNGFkZjc3OWMwMmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VSdWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VSdWxlLmNwcApAQCAtNjIsOCArNjIsNyBAQCBTdHJpbmcg
Q1NTRm9udEZhY2VSdWxlOjpjc3NUZXh0KCkgY29uc3QKIAogdm9pZCBDU1NGb250RmFjZVJ1bGU6
OnJlYXR0YWNoKFN0eWxlUnVsZUJhc2UmIHJ1bGUpCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04ocnVsZS5pc0ZvbnRGYWNlUnVsZSgpKTsKLSAgICBtX2ZvbnRGYWNlUnVs
ZSA9IHN0YXRpY19jYXN0PFN0eWxlUnVsZUZvbnRGYWNlJj4ocnVsZSk7CisgICAgbV9mb250RmFj
ZVJ1bGUgPSBkb3duY2FzdDxTdHlsZVJ1bGVGb250RmFjZT4ocnVsZSk7CiAgICAgaWYgKG1fcHJv
cGVydGllc0NTU09NV3JhcHBlcikKICAgICAgICAgbV9wcm9wZXJ0aWVzQ1NTT01XcmFwcGVyLT5y
ZWF0dGFjaChtX2ZvbnRGYWNlUnVsZS0+bXV0YWJsZVByb3BlcnRpZXMoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuaAppbmRleCA3OGY5ZTc5ZmIyYzQxZTg5ZTFhMWU0NmJl
M2U5ZTc2YTdjOGFiZDcwLi42ZjE1NGE5ZTM0OGRiZTQwZGFmYTkwYWRlYWUwNzU5NWQ2ZmQ4NTNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmgKQEAgLTEwMSw0ICsxMDEsOCBA
QCBwcml2YXRlOgogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19SVUxFKENTU0tleWZyYW1l
c1J1bGUsIENTU1J1bGU6OktFWUZSQU1FU19SVUxFKQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFdlYkNvcmU6OlN0eWxlUnVsZUtleWZyYW1lcykKKyAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6U3R5bGVSdWxlQmFzZSYgcnVsZSkgeyByZXR1cm4gcnVsZS5pc0tl
eWZyYW1lc1J1bGUoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYg
Ly8gQ1NTS2V5ZnJhbWVzUnVsZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFnZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmNwcAppbmRleCBm
MjE0MzBkNmU2ZDdhN2VmNDFjMDQzNjE0NGYwNzJjYTRjYmFkZmQ0Li5lN2JlYTQ2ZTBlMWZlNzY4
MzI1MjZmOWQ5M2VkMmNkNjRjMDkzZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFnZVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAK
QEAgLTk2LDggKzk2LDcgQEAgU3RyaW5nIENTU1BhZ2VSdWxlOjpjc3NUZXh0KCkgY29uc3QKIAog
dm9pZCBDU1NQYWdlUnVsZTo6cmVhdHRhY2goU3R5bGVSdWxlQmFzZSYgcnVsZSkKIHsKLSAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihydWxlLmlzUGFnZVJ1bGUoKSk7Ci0gICAg
bV9wYWdlUnVsZSA9IHN0YXRpY19jYXN0PFN0eWxlUnVsZVBhZ2UmPihydWxlKTsKKyAgICBtX3Bh
Z2VSdWxlID0gZG93bmNhc3Q8U3R5bGVSdWxlUGFnZT4ocnVsZSk7CiAgICAgaWYgKG1fcHJvcGVy
dGllc0NTU09NV3JhcHBlcikKICAgICAgICAgbV9wcm9wZXJ0aWVzQ1NTT01XcmFwcGVyLT5yZWF0
dGFjaChtX3BhZ2VSdWxlLmdldCgpLm11dGFibGVQcm9wZXJ0aWVzKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVSdWxlLmNwcAppbmRleCA5NWE2OWNmOGU0MzVmYzE1MDgxYWFkMTU5NmI5NzEz
YWJkZWJkYzQwLi5lMWM0MTRjMzc0NzQwZjA5Mjk5YmM4ZDdjMmM3YmZjYzg1MjFmMWM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcApAQCAtMTMzLDggKzEzMyw3IEBAIFN0cmluZyBD
U1NTdHlsZVJ1bGU6OmNzc1RleHQoKSBjb25zdAogCiB2b2lkIENTU1N0eWxlUnVsZTo6cmVhdHRh
Y2goU3R5bGVSdWxlQmFzZSYgcnVsZSkKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihydWxlLmlzU3R5bGVSdWxlKCkpOwotICAgIG1fc3R5bGVSdWxlID0gc3RhdGljX2Nh
c3Q8U3R5bGVSdWxlJj4ocnVsZSk7CisgICAgbV9zdHlsZVJ1bGUgPSBkb3duY2FzdDxTdHlsZVJ1
bGU+KHJ1bGUpOwogICAgIGlmIChtX3Byb3BlcnRpZXNDU1NPTVdyYXBwZXIpCiAgICAgICAgIG1f
cHJvcGVydGllc0NTU09NV3JhcHBlci0+cmVhdHRhY2gobV9zdHlsZVJ1bGUtPm11dGFibGVQcm9w
ZXJ0aWVzKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hl
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDRlMWZl
NzgzNTAwMjRhZjExNmY3NTQ0OWE3NTE1YjMxNzViY2E2NjIuLjhlNmU0MGZhMGQ4NDg5MjM1NGEz
MmMwNzI5ZGQwMjZkOTVkYmVlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAK
QEAgLTMwMCw3ICszMDAsNyBAQCB1bnNpZ25lZCBDU1NTdHlsZVNoZWV0OjppbnNlcnRSdWxlKGNv
bnN0IFN0cmluZyYgcnVsZVN0cmluZywgdW5zaWduZWQgaW5kZXgsIEV4YwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKLSAgICBSdWxlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMs
IFJ1bGVJbnNlcnRpb24sIHJ1bGUtPnR5cGUoKSA9PSBTdHlsZVJ1bGVCYXNlOjpLZXlmcmFtZXMg
PyBzdGF0aWNfY2FzdDxTdHlsZVJ1bGVLZXlmcmFtZXMqPihydWxlLmdldCgpKSA6IDApOworICAg
IFJ1bGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcywgUnVsZUluc2VydGlvbiwgaXM8
U3R5bGVSdWxlS2V5ZnJhbWVzPigqcnVsZSkgPyBkb3duY2FzdDxTdHlsZVJ1bGVLZXlmcmFtZXM+
KHJ1bGUuZ2V0KCkpIDogbnVsbHB0cik7CiAKICAgICBib29sIHN1Y2Nlc3MgPSBtX2NvbnRlbnRz
LmdldCgpLndyYXBwZXJJbnNlcnRSdWxlKHJ1bGUsIGluZGV4KTsKICAgICBpZiAoIXN1Y2Nlc3Mp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAppbmRleCAxZmY5YzRkNDZlZGE1OTRiYTJhYzJjOGJhZThh
OGFjYjMwNmM0ZWQ0Li41OWExYTI2MmFlNTBmNDU0MDA0NDBiZGNiMDdmMGIzYjc0NjU5Mjc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1J1bGVTZXQuY3BwCkBAIC0zMDcsMTAgKzMwNyw5IEBAIHZvaWQgUnVsZVNldDo6
YWRkUmVnaW9uUnVsZShTdHlsZVJ1bGVSZWdpb24qIHJlZ2lvblJ1bGUsIGJvb2wgaGFzRG9jdW1l
bnRTZWN1cml0CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGNoaWxk
UnVsZXMgPSByZWdpb25SdWxlLT5jaGlsZFJ1bGVzKCk7CiAgICAgQWRkUnVsZUZsYWdzIGFkZFJ1
bGVGbGFncyA9IGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gPyBSdWxlSGFzRG9jdW1lbnRTZWN1
cml0eU9yaWdpbiA6IFJ1bGVIYXNOb1NwZWNpYWxTdGF0ZTsKICAgICBhZGRSdWxlRmxhZ3MgPSBz
dGF0aWNfY2FzdDxBZGRSdWxlRmxhZ3M+KGFkZFJ1bGVGbGFncyB8IFJ1bGVJc0luUmVnaW9uUnVs
ZSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoaWxkUnVsZXMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgU3R5bGVSdWxlQmFzZSogcmVnaW9uU3R5bGluZ1J1bGUgPSBjaGlsZFJ1bGVz
W2ldLmdldCgpOwotICAgICAgICBpZiAocmVnaW9uU3R5bGluZ1J1bGUtPmlzU3R5bGVSdWxlKCkp
Ci0gICAgICAgICAgICByZWdpb25SdWxlU2V0LT5hZGRTdHlsZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5
bGVSdWxlKj4ocmVnaW9uU3R5bGluZ1J1bGUpLCBhZGRSdWxlRmxhZ3MpOworICAgIGZvciAoYXV0
byYgY2hpbGRSdWxlIDogY2hpbGRSdWxlcykgeworICAgICAgICBpZiAoaXM8U3R5bGVSdWxlPigq
Y2hpbGRSdWxlKSkKKyAgICAgICAgICAgIHJlZ2lvblJ1bGVTZXQtPmFkZFN0eWxlUnVsZShkb3du
Y2FzdDxTdHlsZVJ1bGU+KGNoaWxkUnVsZS5nZXQoKSksIGFkZFJ1bGVGbGFncyk7CiAgICAgfQog
ICAgIC8vIFVwZGF0ZSB0aGUgImdsb2JhbCIgcnVsZSBjb3VudCBzbyB0aGF0IHByb3BlciBvcmRl
ciBpcyBtYWludGFpbmVkCiAgICAgbV9ydWxlQ291bnQgPSByZWdpb25SdWxlU2V0LT5tX3J1bGVD
b3VudDsKQEAgLTMyMCwzNSArMzE5LDMxIEBAIHZvaWQgUnVsZVNldDo6YWRkUmVnaW9uUnVsZShT
dHlsZVJ1bGVSZWdpb24qIHJlZ2lvblJ1bGUsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0CiAKIHZv
aWQgUnVsZVNldDo6YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJh
c2U+PiYgcnVsZXMsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGl1bSwgU3R5bGVSZXNv
bHZlciogcmVzb2x2ZXIsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgQWRkUnVsZUZs
YWdzIGFkZFJ1bGVGbGFncykKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcnVsZXMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgU3R5bGVSdWxlQmFzZSogcnVsZSA9IHJ1bGVzW2ldLmdl
dCgpOwotCi0gICAgICAgIGlmIChydWxlLT5pc1N0eWxlUnVsZSgpKSB7Ci0gICAgICAgICAgICBT
dHlsZVJ1bGUqIHN0eWxlUnVsZSA9IHN0YXRpY19jYXN0PFN0eWxlUnVsZSo+KHJ1bGUpOwotICAg
ICAgICAgICAgYWRkU3R5bGVSdWxlKHN0eWxlUnVsZSwgYWRkUnVsZUZsYWdzKTsKLSAgICAgICAg
fSBlbHNlIGlmIChydWxlLT5pc1BhZ2VSdWxlKCkpCi0gICAgICAgICAgICBhZGRQYWdlUnVsZShz
dGF0aWNfY2FzdDxTdHlsZVJ1bGVQYWdlKj4ocnVsZSkpOwotICAgICAgICBlbHNlIGlmIChydWxl
LT5pc01lZGlhUnVsZSgpKSB7Ci0gICAgICAgICAgICBTdHlsZVJ1bGVNZWRpYSogbWVkaWFSdWxl
ID0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlTWVkaWEqPihydWxlKTsKLSAgICAgICAgICAgIGlmICgo
IW1lZGlhUnVsZS0+bWVkaWFRdWVyaWVzKCkgfHwgbWVkaXVtLmV2YWwobWVkaWFSdWxlLT5tZWRp
YVF1ZXJpZXMoKSwgcmVzb2x2ZXIpKSkKLSAgICAgICAgICAgICAgICBhZGRDaGlsZFJ1bGVzKG1l
ZGlhUnVsZS0+Y2hpbGRSdWxlcygpLCBtZWRpdW0sIHJlc29sdmVyLCBoYXNEb2N1bWVudFNlY3Vy
aXR5T3JpZ2luLCBhZGRSdWxlRmxhZ3MpOwotICAgICAgICB9IGVsc2UgaWYgKHJ1bGUtPmlzRm9u
dEZhY2VSdWxlKCkgJiYgcmVzb2x2ZXIpIHsKKyAgICBmb3IgKGF1dG8mIHJ1bGUgOiBydWxlcykg
eworICAgICAgICBpZiAoaXM8U3R5bGVSdWxlPigqcnVsZSkpCisgICAgICAgICAgICBhZGRTdHls
ZVJ1bGUoZG93bmNhc3Q8U3R5bGVSdWxlPihydWxlLmdldCgpKSwgYWRkUnVsZUZsYWdzKTsKKyAg
ICAgICAgZWxzZSBpZiAoaXM8U3R5bGVSdWxlUGFnZT4oKnJ1bGUpKQorICAgICAgICAgICAgYWRk
UGFnZVJ1bGUoZG93bmNhc3Q8U3R5bGVSdWxlUGFnZT4ocnVsZS5nZXQoKSkpOworICAgICAgICBl
bHNlIGlmIChpczxTdHlsZVJ1bGVNZWRpYT4oKnJ1bGUpKSB7CisgICAgICAgICAgICBhdXRvJiBt
ZWRpYVJ1bGUgPSBkb3duY2FzdDxTdHlsZVJ1bGVNZWRpYT4oKnJ1bGUpOworICAgICAgICAgICAg
aWYgKCghbWVkaWFSdWxlLm1lZGlhUXVlcmllcygpIHx8IG1lZGl1bS5ldmFsKG1lZGlhUnVsZS5t
ZWRpYVF1ZXJpZXMoKSwgcmVzb2x2ZXIpKSkKKyAgICAgICAgICAgICAgICBhZGRDaGlsZFJ1bGVz
KG1lZGlhUnVsZS5jaGlsZFJ1bGVzKCksIG1lZGl1bSwgcmVzb2x2ZXIsIGhhc0RvY3VtZW50U2Vj
dXJpdHlPcmlnaW4sIGFkZFJ1bGVGbGFncyk7CisgICAgICAgIH0gZWxzZSBpZiAoaXM8U3R5bGVS
dWxlRm9udEZhY2U+KCpydWxlKSAmJiByZXNvbHZlcikgewogICAgICAgICAgICAgLy8gQWRkIHRo
aXMgZm9udCBmYWNlIHRvIG91ciBzZXQuCi0gICAgICAgICAgICBjb25zdCBTdHlsZVJ1bGVGb250
RmFjZSogZm9udEZhY2VSdWxlID0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlRm9udEZhY2UqPihydWxl
KTsKLSAgICAgICAgICAgIHJlc29sdmVyLT5mb250U2VsZWN0b3IoKS0+YWRkRm9udEZhY2VSdWxl
KGZvbnRGYWNlUnVsZSk7CisgICAgICAgICAgICByZXNvbHZlci0+Zm9udFNlbGVjdG9yKCktPmFk
ZEZvbnRGYWNlUnVsZShkb3duY2FzdDxTdHlsZVJ1bGVGb250RmFjZT4ocnVsZS5nZXQoKSkpOwog
ICAgICAgICAgICAgcmVzb2x2ZXItPmludmFsaWRhdGVNYXRjaGVkUHJvcGVydGllc0NhY2hlKCk7
Ci0gICAgICAgIH0gZWxzZSBpZiAocnVsZS0+aXNLZXlmcmFtZXNSdWxlKCkgJiYgcmVzb2x2ZXIp
Ci0gICAgICAgICAgICByZXNvbHZlci0+YWRkS2V5ZnJhbWVTdHlsZShzdGF0aWNfY2FzdDxTdHls
ZVJ1bGVLZXlmcmFtZXMqPihydWxlKSk7Ci0gICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzU3VwcG9y
dHNSdWxlKCkgJiYgc3RhdGljX2Nhc3Q8U3R5bGVSdWxlU3VwcG9ydHMqPihydWxlKS0+Y29uZGl0
aW9uSXNTdXBwb3J0ZWQoKSkKLSAgICAgICAgICAgIGFkZENoaWxkUnVsZXMoc3RhdGljX2Nhc3Q8
U3R5bGVSdWxlU3VwcG9ydHMqPihydWxlKS0+Y2hpbGRSdWxlcygpLCBtZWRpdW0sIHJlc29sdmVy
LCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBhZGRSdWxlRmxhZ3MpOworICAgICAgICB9IGVs
c2UgaWYgKGlzPFN0eWxlUnVsZUtleWZyYW1lcz4oKnJ1bGUpICYmIHJlc29sdmVyKQorICAgICAg
ICAgICAgcmVzb2x2ZXItPmFkZEtleWZyYW1lU3R5bGUoZG93bmNhc3Q8U3R5bGVSdWxlS2V5ZnJh
bWVzPihydWxlLmdldCgpKSk7CisgICAgICAgIGVsc2UgaWYgKGlzPFN0eWxlUnVsZVN1cHBvcnRz
PigqcnVsZSkgJiYgZG93bmNhc3Q8U3R5bGVSdWxlU3VwcG9ydHM+KCpydWxlKS5jb25kaXRpb25J
c1N1cHBvcnRlZCgpKQorICAgICAgICAgICAgYWRkQ2hpbGRSdWxlcyhkb3duY2FzdDxTdHlsZVJ1
bGVTdXBwb3J0cz4oKnJ1bGUpLmNoaWxkUnVsZXMoKSwgbWVkaXVtLCByZXNvbHZlciwgaGFzRG9j
dW1lbnRTZWN1cml0eU9yaWdpbiwgYWRkUnVsZUZsYWdzKTsKICNpZiBFTkFCTEUoQ1NTX1JFR0lP
TlMpCi0gICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzUmVnaW9uUnVsZSgpICYmIHJlc29sdmVyKSB7
Ci0gICAgICAgICAgICBhZGRSZWdpb25SdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVsZVJlZ2lvbio+
KHJ1bGUpLCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgZWxzZSBpZiAoaXM8
U3R5bGVSdWxlUmVnaW9uPigqcnVsZSkgJiYgcmVzb2x2ZXIpIHsKKyAgICAgICAgICAgIGFkZFJl
Z2lvblJ1bGUoZG93bmNhc3Q8U3R5bGVSdWxlUmVnaW9uPihydWxlLmdldCgpKSwgaGFzRG9jdW1l
bnRTZWN1cml0eU9yaWdpbik7CiAgICAgICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShDU1NfREVW
SUNFX0FEQVBUQVRJT04pCi0gICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzVmlld3BvcnRSdWxlKCkg
JiYgcmVzb2x2ZXIpIHsKLSAgICAgICAgICAgIHJlc29sdmVyLT52aWV3cG9ydFN0eWxlUmVzb2x2
ZXIoKS0+YWRkVmlld3BvcnRSdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVsZVZpZXdwb3J0Kj4ocnVs
ZSkpOworICAgICAgICBlbHNlIGlmIChpczxTdHlsZVJ1bGVWaWV3cG9ydD4oKnJ1bGUpICYmIHJl
c29sdmVyKSB7CisgICAgICAgICAgICByZXNvbHZlci0+dmlld3BvcnRTdHlsZVJlc29sdmVyKCkt
PmFkZFZpZXdwb3J0UnVsZShkb3duY2FzdDxTdHlsZVJ1bGVWaWV3cG9ydD4ocnVsZS5nZXQoKSkp
OwogICAgICAgICB9CiAjZW5kaWYKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVJbnZhbGlkYXRpb25BbmFseXNpcy5jcHAKaW5kZXggMDZmNjAwZTk2YzBiNzFmYTg0ZjJhMzJh
Zjk4NmJjYjJlZTAxZWIxMS4uNmQ1MWIwZjc4N2Y2MzVjNDE3NTY0YmQ1NzQ2YmVjNjRlY2Q0NTI3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlSW52YWxpZGF0aW9uQW5hbHlz
aXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUludmFsaWRhdGlvbkFuYWx5c2lz
LmNwcApAQCAtMzksMTMgKzM5LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBib29s
IHNob3VsZERpcnR5QWxsU3R5bGUoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4m
IHJ1bGVzKQogewogICAgIGZvciAoYXV0byYgcnVsZSA6IHJ1bGVzKSB7Ci0gICAgICAgIGlmIChy
dWxlLT5pc01lZGlhUnVsZSgpKSB7Ci0gICAgICAgICAgICBpZiAoc2hvdWxkRGlydHlBbGxTdHls
ZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGVNZWRpYSY+KCpydWxlKS5jaGlsZFJ1bGVzKCkpKQorICAg
ICAgICBpZiAoaXM8U3R5bGVSdWxlTWVkaWE+KCpydWxlKSkgeworICAgICAgICAgICAgaWYgKHNo
b3VsZERpcnR5QWxsU3R5bGUoZG93bmNhc3Q8U3R5bGVSdWxlTWVkaWE+KCpydWxlKS5jaGlsZFJ1
bGVzKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IEF0IGxlYXN0IGZvbnQgZmFjZXMgZG9u
J3QgbmVlZCBmdWxsIHJlY2FsYyBpbiBhbGwgY2FzZXMuCi0gICAgICAgIGlmICghcnVsZS0+aXNT
dHlsZVJ1bGUoKSkKKyAgICAgICAgaWYgKCFpczxTdHlsZVJ1bGU+KCpydWxlKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJ1bGUuY3BwCmluZGV4IDIxN2Q2MDNlZDllZGMwYWU0M2E0YzgzMjNhY2Q5OWY4Mzk2M2VmZTku
Ljg5ZGJjN2M1Yzk0OTNiMjlkMmFmNTJjYzQxMzA3MmY4N2M3MjQ2NjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGUuY3BwCkBAIC01OSwzNCArNTksMzQgQEAgdm9pZCBTdHlsZVJ1bGVCYXNlOjpkZXN0
cm95KCkKIHsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewogICAgIGNhc2UgU3R5bGU6Ci0gICAgICAg
IGRlbGV0ZSBzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPih0aGlzKTsKKyAgICAgICAgZGVsZXRlIGRv
d25jYXN0PFN0eWxlUnVsZT4odGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFBhZ2U6
Ci0gICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxTdHlsZVJ1bGVQYWdlKj4odGhpcyk7CisgICAg
ICAgIGRlbGV0ZSBkb3duY2FzdDxTdHlsZVJ1bGVQYWdlPih0aGlzKTsKICAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgRm9udEZhY2U6Ci0gICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxTdHlsZVJ1
bGVGb250RmFjZSo+KHRoaXMpOworICAgICAgICBkZWxldGUgZG93bmNhc3Q8U3R5bGVSdWxlRm9u
dEZhY2U+KHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBNZWRpYToKLSAgICAgICAg
ZGVsZXRlIHN0YXRpY19jYXN0PFN0eWxlUnVsZU1lZGlhKj4odGhpcyk7CisgICAgICAgIGRlbGV0
ZSBkb3duY2FzdDxTdHlsZVJ1bGVNZWRpYT4odGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICBj
YXNlIFN1cHBvcnRzOgotICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8U3R5bGVSdWxlU3VwcG9y
dHMqPih0aGlzKTsKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRzPih0
aGlzKTsKICAgICAgICAgcmV0dXJuOwogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKICAgICBjYXNl
IFJlZ2lvbjoKLSAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFN0eWxlUnVsZVJlZ2lvbio+KHRo
aXMpOworICAgICAgICBkZWxldGUgZG93bmNhc3Q8U3R5bGVSdWxlUmVnaW9uPih0aGlzKTsKICAg
ICAgICAgcmV0dXJuOwogI2VuZGlmCiAgICAgY2FzZSBJbXBvcnQ6Ci0gICAgICAgIGRlbGV0ZSBz
dGF0aWNfY2FzdDxTdHlsZVJ1bGVJbXBvcnQqPih0aGlzKTsKKyAgICAgICAgZGVsZXRlIGRvd25j
YXN0PFN0eWxlUnVsZUltcG9ydD4odGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEtl
eWZyYW1lczoKLSAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFN0eWxlUnVsZUtleWZyYW1lcyo+
KHRoaXMpOworICAgICAgICBkZWxldGUgZG93bmNhc3Q8U3R5bGVSdWxlS2V5ZnJhbWVzPih0aGlz
KTsKICAgICAgICAgcmV0dXJuOwogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04pCiAg
ICAgY2FzZSBWaWV3cG9ydDoKLSAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFN0eWxlUnVsZVZp
ZXdwb3J0Kj4odGhpcyk7CisgICAgICAgIGRlbGV0ZSBkb3duY2FzdDxTdHlsZVJ1bGVWaWV3cG9y
dD4odGhpcyk7CiAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgIGNhc2UgVW5rbm93bjoKQEAg
LTEwNSwyNCArMTA1LDI0IEBAIFBhc3NSZWY8U3R5bGVSdWxlQmFzZT4gU3R5bGVSdWxlQmFzZTo6
Y29weSgpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0eXBlKCkpIHsKICAgICBjYXNlIFN0eWxlOgot
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3R5bGVSdWxlKj4odGhpcyktPmNvcHko
KTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFN0eWxlUnVsZT4oKnRoaXMpLmNvcHkoKTsKICAg
ICBjYXNlIFBhZ2U6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTdHlsZVJ1bGVQ
YWdlKj4odGhpcyktPmNvcHkoKTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFN0eWxlUnVsZVBh
Z2U+KCp0aGlzKS5jb3B5KCk7CiAgICAgY2FzZSBGb250RmFjZToKLSAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IFN0eWxlUnVsZUZvbnRGYWNlKj4odGhpcyktPmNvcHkoKTsKKyAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PFN0eWxlUnVsZUZvbnRGYWNlPigqdGhpcykuY29weSgpOwogICAg
IGNhc2UgTWVkaWE6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTdHlsZVJ1bGVN
ZWRpYSo+KHRoaXMpLT5jb3B5KCk7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxTdHlsZVJ1bGVN
ZWRpYT4oKnRoaXMpLmNvcHkoKTsKICAgICBjYXNlIFN1cHBvcnRzOgotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgU3R5bGVSdWxlU3VwcG9ydHMqPih0aGlzKS0+Y29weSgpOworICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8U3R5bGVSdWxlU3VwcG9ydHM+KCp0aGlzKS5jb3B5KCk7CiAj
aWYgRU5BQkxFKENTU19SRUdJT05TKQogICAgIGNhc2UgUmVnaW9uOgotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgU3R5bGVSdWxlUmVnaW9uKj4odGhpcyktPmNvcHkoKTsKKyAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PFN0eWxlUnVsZVJlZ2lvbj4oKnRoaXMpLmNvcHkoKTsKICNlbmRp
ZgogICAgIGNhc2UgS2V5ZnJhbWVzOgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
U3R5bGVSdWxlS2V5ZnJhbWVzKj4odGhpcyktPmNvcHkoKTsKKyAgICAgICAgcmV0dXJuIGRvd25j
YXN0PFN0eWxlUnVsZUtleWZyYW1lcz4oKnRoaXMpLmNvcHkoKTsKICNpZiBFTkFCTEUoQ1NTX0RF
VklDRV9BREFQVEFUSU9OKQogICAgIGNhc2UgVmlld3BvcnQ6Ci0gICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBTdHlsZVJ1bGVWaWV3cG9ydCo+KHRoaXMpLT5jb3B5KCk7CisgICAgICAg
IHJldHVybiBkb3duY2FzdDxTdHlsZVJ1bGVWaWV3cG9ydD4oKnRoaXMpLmNvcHkoKTsKICNlbmRp
ZgogICAgIGNhc2UgSW1wb3J0OgogICAgICAgICAvLyBGSVhNRTogQ29weSBpbXBvcnQgcnVsZXMu
CkBAIC0xNDYsMzQgKzE0NiwzNCBAQCBQYXNzUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6
OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldAogICAgIFN0eWxl
UnVsZUJhc2UmIHNlbGYgPSBjb25zdF9jYXN0PFN0eWxlUnVsZUJhc2UmPigqdGhpcyk7CiAgICAg
c3dpdGNoICh0eXBlKCkpIHsKICAgICBjYXNlIFN0eWxlOgotICAgICAgICBydWxlID0gQ1NTU3R5
bGVSdWxlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlJj4oc2VsZiksIHBhcmVudFNoZWV0
KTsKKyAgICAgICAgcnVsZSA9IENTU1N0eWxlUnVsZTo6Y3JlYXRlKGRvd25jYXN0PFN0eWxlUnVs
ZT4oc2VsZiksIHBhcmVudFNoZWV0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYWdlOgot
ICAgICAgICBydWxlID0gQ1NTUGFnZVJ1bGU6OmNyZWF0ZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGVQ
YWdlJj4oc2VsZiksIHBhcmVudFNoZWV0KTsKKyAgICAgICAgcnVsZSA9IENTU1BhZ2VSdWxlOjpj
cmVhdGUoZG93bmNhc3Q8U3R5bGVSdWxlUGFnZT4oc2VsZiksIHBhcmVudFNoZWV0KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBGb250RmFjZToKLSAgICAgICAgcnVsZSA9IENTU0ZvbnRGYWNl
UnVsZTo6Y3JlYXRlKHN0YXRpY19jYXN0PFN0eWxlUnVsZUZvbnRGYWNlJj4oc2VsZiksIHBhcmVu
dFNoZWV0KTsKKyAgICAgICAgcnVsZSA9IENTU0ZvbnRGYWNlUnVsZTo6Y3JlYXRlKGRvd25jYXN0
PFN0eWxlUnVsZUZvbnRGYWNlPihzZWxmKSwgcGFyZW50U2hlZXQpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIE1lZGlhOgotICAgICAgICBydWxlID0gQ1NTTWVkaWFSdWxlOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8U3R5bGVSdWxlTWVkaWEmPihzZWxmKSwgcGFyZW50U2hlZXQpOworICAgICAgICBy
dWxlID0gQ1NTTWVkaWFSdWxlOjpjcmVhdGUoZG93bmNhc3Q8U3R5bGVSdWxlTWVkaWE+KHNlbGYp
LCBwYXJlbnRTaGVldCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3VwcG9ydHM6Ci0gICAg
ICAgIHJ1bGUgPSBDU1NTdXBwb3J0c1J1bGU6OmNyZWF0ZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGVT
dXBwb3J0cyY+KHNlbGYpLCBwYXJlbnRTaGVldCk7CisgICAgICAgIHJ1bGUgPSBDU1NTdXBwb3J0
c1J1bGU6OmNyZWF0ZShkb3duY2FzdDxTdHlsZVJ1bGVTdXBwb3J0cz4oc2VsZiksIHBhcmVudFNo
ZWV0KTsKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQogICAgIGNhc2Ug
UmVnaW9uOgotICAgICAgICBydWxlID0gV2ViS2l0Q1NTUmVnaW9uUnVsZTo6Y3JlYXRlKHN0YXRp
Y19jYXN0PFN0eWxlUnVsZVJlZ2lvbiY+KHNlbGYpLCBwYXJlbnRTaGVldCk7CisgICAgICAgIHJ1
bGUgPSBXZWJLaXRDU1NSZWdpb25SdWxlOjpjcmVhdGUoZG93bmNhc3Q8U3R5bGVSdWxlUmVnaW9u
PihzZWxmKSwgcGFyZW50U2hlZXQpOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2Ug
SW1wb3J0OgotICAgICAgICBydWxlID0gQ1NTSW1wb3J0UnVsZTo6Y3JlYXRlKHN0YXRpY19jYXN0
PFN0eWxlUnVsZUltcG9ydCY+KHNlbGYpLCBwYXJlbnRTaGVldCk7CisgICAgICAgIHJ1bGUgPSBD
U1NJbXBvcnRSdWxlOjpjcmVhdGUoZG93bmNhc3Q8U3R5bGVSdWxlSW1wb3J0PihzZWxmKSwgcGFy
ZW50U2hlZXQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEtleWZyYW1lczoKLSAgICAgICAg
cnVsZSA9IENTU0tleWZyYW1lc1J1bGU6OmNyZWF0ZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGVLZXlm
cmFtZXMmPihzZWxmKSwgcGFyZW50U2hlZXQpOworICAgICAgICBydWxlID0gQ1NTS2V5ZnJhbWVz
UnVsZTo6Y3JlYXRlKGRvd25jYXN0PFN0eWxlUnVsZUtleWZyYW1lcz4oc2VsZiksIHBhcmVudFNo
ZWV0KTsKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikK
ICAgICBjYXNlIFZpZXdwb3J0OgotICAgICAgICBydWxlID0gV2ViS2l0Q1NTVmlld3BvcnRSdWxl
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlVmlld3BvcnQmPihzZWxmKSwgcGFyZW50U2hl
ZXQpOworICAgICAgICBydWxlID0gV2ViS2l0Q1NTVmlld3BvcnRSdWxlOjpjcmVhdGUoZG93bmNh
c3Q8U3R5bGVSdWxlVmlld3BvcnQ+KHNlbGYpLCBwYXJlbnRTaGVldCk7CiAgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAgICAgY2FzZSBVbmtub3duOgpAQCAtMTgzLDcgKzE4Myw3IEBAIFBhc3NSZWZQ
dHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hl
ZXQqIHBhcmVudFNoZWV0CiAgICAgY2FzZSBSZWdpb246CiAjZW5kaWYKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAgICAgaWYgKHBhcmVudFJ1bGUpCiAgICAgICAgIHJ1bGUtPnNldFBhcmVudFJ1
bGUocGFyZW50UnVsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKaW5kZXggMGNhZTdiYWQ3NThlMjk3
OGQ3ZGI2YTc3M2FiMzgwYmQ4OWE1NTA4Zi4uN2VhNDYxOWE5NTE1NjBlM2ZhMjljOGYzODZmZWE1
N2VlMzZkYTFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaApAQCAtMTM0LDEyICsxMzQsNiBAQCBw
cml2YXRlOgogICAgIENTU1NlbGVjdG9yTGlzdCBtX3NlbGVjdG9yTGlzdDsKIH07CiAKLWlubGlu
ZSBjb25zdCBTdHlsZVJ1bGUqIHRvU3R5bGVSdWxlKGNvbnN0IFN0eWxlUnVsZUJhc2UqIHJ1bGUp
Ci17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXJ1bGUgfHwgcnVsZS0+
aXNTdHlsZVJ1bGUoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN0eWxlUnVsZSo+
KHJ1bGUpOwotfQotCiBjbGFzcyBTdHlsZVJ1bGVGb250RmFjZSA6IHB1YmxpYyBTdHlsZVJ1bGVC
YXNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZVJ1bGVGb250RmFjZT4gY3Jl
YXRlKFBhc3NSZWY8U3R5bGVQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFN0eWxlUnVsZUZvbnRGYWNlKFdURjo6bW92ZShwcm9wZXJ0aWVzKSkpOyB9CkBAIC0y
NzQsMTYgKzI2OCwyOCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U3R5bGVSdWxlKQorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlJiBydWxlKSB7IHJldHVy
biBydWxlLmlzU3R5bGVSdWxlKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTdHlsZVJ1bGVGb250RmFjZSkK
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U3R5bGVSdWxlQmFzZSYgcnVs
ZSkgeyByZXR1cm4gcnVsZS5pc0ZvbnRGYWNlUnVsZSgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U3R5bGVS
dWxlTWVkaWEpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlN0eWxlUnVs
ZUdyb3VwJiBncm91cCkgeyByZXR1cm4gZ3JvdXAuaXNNZWRpYVJ1bGUoKTsgfQorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlJiBydWxlKSB7IHJldHVy
biBydWxlLmlzTWVkaWFSdWxlKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTdHlsZVJ1bGVQYWdlKQorICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlJiBydWxlKSB7
IHJldHVybiBydWxlLmlzUGFnZVJ1bGUoKTsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlN0eWxlUnVsZVN1cHBv
cnRzKQotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTdHlsZVJ1bGVHcm91
cCYgZ3JvdXApIHsgcmV0dXJuIGdyb3VwLmlzU3VwcG9ydHNSdWxlKCk7IH0KKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U3R5bGVSdWxlQmFzZSYgcnVsZSkgeyByZXR1cm4g
cnVsZS5pc1N1cHBvcnRzUnVsZSgpOyB9CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U3R5bGVSdWxlUmVnaW9uKQot
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTdHlsZVJ1bGVHcm91cCYgZ3Jv
dXApIHsgcmV0dXJuIGdyb3VwLmlzUmVnaW9uUnVsZSgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6OlN0eWxlUnVsZUJhc2UmIHJ1bGUpIHsgcmV0dXJuIHJ1bGUuaXNS
ZWdpb25SdWxlKCk7IH0KIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmIC8v
IFN0eWxlUnVsZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1w
b3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmgKaW5kZXggMjhmYWNl
N2M5MmY0ZGViZDUwYzBiMmFjZmY1NmQ5M2UwMTMwMjQ2MS4uMTEzMWY5NDRkYzBhZTQ0NjU1ZjMw
MGY5ZjU5ZTA2YTFhYjg4M2VkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UnVsZUltcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuaApA
QCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5j
bHVkZSAiQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oIgogI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgor
I2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04
Myw0ICs4NCw4IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTdHlsZVJ1bGVJbXBvcnQpCisgICAgc3Rh
dGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlN0eWxlUnVsZUJhc2UmIHJ1bGUpIHsgcmV0
dXJuIHJ1bGUuaXNJbXBvcnRSdWxlKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkK
KwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRl
bnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCmluZGV4
IDk0NjE2ZWIxZDAyOWVjMTk5YWNmMzkwNGQ5YjZmYWQ1NjI2MzdiYzQuLmFhMGQ3NWMwZDJjMjRm
ODYzZmYxNWM0YWRjMTIwN2Y3Mjc3ZThiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNo
ZWV0Q29udGVudHMuY3BwCkBAIC0xMjcsMTAgKzEyNywxMCBAQCBib29sIFN0eWxlU2hlZXRDb250
ZW50czo6aXNDYWNoZWFibGUoKSBjb25zdAogdm9pZCBTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNl
ckFwcGVuZFJ1bGUoUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBydWxlKQogewogICAgIEFTU0VS
VCghcnVsZS0+aXNDaGFyc2V0UnVsZSgpKTsKLSAgICBpZiAocnVsZS0+aXNJbXBvcnRSdWxlKCkp
IHsKKyAgICBpZiAoaXM8U3R5bGVSdWxlSW1wb3J0PigqcnVsZSkpIHsKICAgICAgICAgLy8gUGFy
c2VyIGVuZm9yY2VzIHRoYXQgQGltcG9ydCBydWxlcyBjb21lIGJlZm9yZSBhbnl0aGluZyBlbHNl
IGV4Y2VwdCBAY2hhcnNldC4KICAgICAgICAgQVNTRVJUKG1fY2hpbGRSdWxlcy5pc0VtcHR5KCkp
OwotICAgICAgICBtX2ltcG9ydFJ1bGVzLmFwcGVuZChzdGF0aWNfY2FzdDxTdHlsZVJ1bGVJbXBv
cnQqPihydWxlLmdldCgpKSk7CisgICAgICAgIG1faW1wb3J0UnVsZXMuYXBwZW5kKGRvd25jYXN0
PFN0eWxlUnVsZUltcG9ydD4ocnVsZS5nZXQoKSkpOwogICAgICAgICBtX2ltcG9ydFJ1bGVzLmxh
c3QoKS0+c2V0UGFyZW50U3R5bGVTaGVldCh0aGlzKTsKICAgICAgICAgbV9pbXBvcnRSdWxlcy5s
YXN0KCktPnJlcXVlc3RTdHlsZVNoZWV0KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEzOCwxNCAr
MTM4LDE0IEBAIHZvaWQgU3R5bGVTaGVldENvbnRlbnRzOjpwYXJzZXJBcHBlbmRSdWxlKFBhc3NS
ZWZQdHI8U3R5bGVSdWxlQmFzZT4gcnVsZSkKIAogI2lmIEVOQUJMRShSRVNPTFVUSU9OX01FRElB
X1FVRVJZKQogICAgIC8vIEFkZCB3YXJuaW5nIG1lc3NhZ2UgdG8gaW5zcGVjdG9yIGlmIGRwaS9k
cGNtIHZhbHVlcyBhcmUgdXNlZCBmb3Igc2NyZWVuIG1lZGlhLgotICAgIGlmIChydWxlLT5pc01l
ZGlhUnVsZSgpKQotICAgICAgICByZXBvcnRNZWRpYVF1ZXJ5V2FybmluZ0lmTmVlZGVkKHNpbmds
ZU93bmVyRG9jdW1lbnQoKSwgc3RhdGljX2Nhc3Q8U3R5bGVSdWxlTWVkaWEqPihydWxlLmdldCgp
KS0+bWVkaWFRdWVyaWVzKCkpOworICAgIGlmIChpczxTdHlsZVJ1bGVNZWRpYT4oKnJ1bGUpKQor
ICAgICAgICByZXBvcnRNZWRpYVF1ZXJ5V2FybmluZ0lmTmVlZGVkKHNpbmdsZU93bmVyRG9jdW1l
bnQoKSwgZG93bmNhc3Q8U3R5bGVSdWxlTWVkaWE+KCpydWxlKS5tZWRpYVF1ZXJpZXMoKSk7CiAj
ZW5kaWYKIAogICAgIC8vIE5PVEU6IFRoZSBzZWxlY3RvciBsaXN0IGhhcyB0byBmaXQgaW50byBS
dWxlRGF0YS4gPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE4MzY5PgogICAgIC8vIElmIHdlJ3JlIGFk
ZGluZyBhIHJ1bGUgd2l0aCBhIGh1Z2UgbnVtYmVyIG9mIHNlbGVjdG9ycywgc3BsaXQgaXQgdXAg
aW50byBtdWx0aXBsZSBydWxlcwotICAgIGlmIChydWxlLT5pc1N0eWxlUnVsZSgpICYmIHRvU3R5
bGVSdWxlKHJ1bGUuZ2V0KCkpLT5zZWxlY3Rvckxpc3QoKS5jb21wb25lbnRDb3VudCgpID4gUnVs
ZURhdGE6Om1heGltdW1TZWxlY3RvckNvbXBvbmVudENvdW50KSB7Ci0gICAgICAgIFZlY3RvcjxS
ZWZQdHI8U3R5bGVSdWxlPj4gcnVsZXMgPSB0b1N0eWxlUnVsZShydWxlLmdldCgpKS0+c3BsaXRJ
bnRvTXVsdGlwbGVSdWxlc1dpdGhNYXhpbXVtU2VsZWN0b3JDb21wb25lbnRDb3VudChSdWxlRGF0
YTo6bWF4aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQpOworICAgIGlmIChpczxTdHlsZVJ1bGU+
KCpydWxlKSAmJiBkb3duY2FzdDxTdHlsZVJ1bGU+KCpydWxlKS5zZWxlY3Rvckxpc3QoKS5jb21w
b25lbnRDb3VudCgpID4gUnVsZURhdGE6Om1heGltdW1TZWxlY3RvckNvbXBvbmVudENvdW50KSB7
CisgICAgICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4gcnVsZXMgPSBkb3duY2FzdDxTdHls
ZVJ1bGU+KCpydWxlKS5zcGxpdEludG9NdWx0aXBsZVJ1bGVzV2l0aE1heGltdW1TZWxlY3RvckNv
bXBvbmVudENvdW50KFJ1bGVEYXRhOjptYXhpbXVtU2VsZWN0b3JDb21wb25lbnRDb3VudCk7CiAg
ICAgICAgIG1fY2hpbGRSdWxlcy5hcHBlbmRWZWN0b3IocnVsZXMpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjIxLDE2ICsyMjEsMTYgQEAgYm9vbCBTdHlsZVNoZWV0Q29udGVudHM6Ondy
YXBwZXJJbnNlcnRSdWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gcnVsZSwgdW5zaWcKICAg
ICAKICAgICBpZiAoY2hpbGRWZWN0b3JJbmRleCA8IG1faW1wb3J0UnVsZXMuc2l6ZSgpIHx8IChj
aGlsZFZlY3RvckluZGV4ID09IG1faW1wb3J0UnVsZXMuc2l6ZSgpICYmIHJ1bGUtPmlzSW1wb3J0
UnVsZSgpKSkgewogICAgICAgICAvLyBJbnNlcnRpbmcgbm9uLWltcG9ydCBydWxlIGJlZm9yZSBA
aW1wb3J0IGlzIG5vdCBhbGxvd2VkLgotICAgICAgICBpZiAoIXJ1bGUtPmlzSW1wb3J0UnVsZSgp
KQorICAgICAgICBpZiAoIWlzPFN0eWxlUnVsZUltcG9ydD4oKnJ1bGUpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICBtX2ltcG9ydFJ1bGVzLmluc2VydChjaGlsZFZlY3Rvcklu
ZGV4LCBzdGF0aWNfY2FzdDxTdHlsZVJ1bGVJbXBvcnQqPihydWxlLmdldCgpKSk7CisgICAgICAg
IG1faW1wb3J0UnVsZXMuaW5zZXJ0KGNoaWxkVmVjdG9ySW5kZXgsIGRvd25jYXN0PFN0eWxlUnVs
ZUltcG9ydD4ocnVsZS5nZXQoKSkpOwogICAgICAgICBtX2ltcG9ydFJ1bGVzW2NoaWxkVmVjdG9y
SW5kZXhdLT5zZXRQYXJlbnRTdHlsZVNoZWV0KHRoaXMpOwogICAgICAgICBtX2ltcG9ydFJ1bGVz
W2NoaWxkVmVjdG9ySW5kZXhdLT5yZXF1ZXN0U3R5bGVTaGVldCgpOwogICAgICAgICAvLyBGSVhN
RTogU3R5bGVzaGVldCBkb2Vzbid0IGFjdHVhbGx5IGNoYW5nZSBtZWFuaW5nZnVsbHkgYmVmb3Jl
IHRoZSBpbXBvcnRlZCBzaGVldHMgYXJlIGxvYWRlZC4KICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIC8vIEluc2VydGluZyBAaW1wb3J0IHJ1bGUgYWZ0ZXIgYSBub24taW1wb3J0IHJ1
bGUgaXMgbm90IGFsbG93ZWQuCi0gICAgaWYgKHJ1bGUtPmlzSW1wb3J0UnVsZSgpKQorICAgIGlm
IChpczxTdHlsZVJ1bGVJbXBvcnQ+KCpydWxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGNoaWxkVmVjdG9ySW5kZXggLT0gbV9pbXBvcnRSdWxlcy5zaXplKCk7CiAgCkBAIC00MTAsNDIg
KzQxMCwzOSBAQCB2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6YWRkU3VicmVzb3VyY2VTdHlsZVVS
THMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykKICAgICB3aGlsZSAoIXN0eWxlU2hlZXRRdWV1ZS5p
c0VtcHR5KCkpIHsKICAgICAgICAgU3R5bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0ID0gc3R5
bGVTaGVldFF1ZXVlLnRha2VGaXJzdCgpOwogICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHN0eWxlU2hlZXQtPm1faW1wb3J0UnVsZXMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgICAgIFN0eWxlUnVsZUltcG9ydCogaW1wb3J0UnVsZSA9IHN0eWxlU2hlZXQtPm1faW1w
b3J0UnVsZXNbaV0uZ2V0KCk7CisgICAgICAgIGZvciAoYXV0byYgaW1wb3J0UnVsZSA6IHN0eWxl
U2hlZXQtPm1faW1wb3J0UnVsZXMpIHsKICAgICAgICAgICAgIGlmIChpbXBvcnRSdWxlLT5zdHls
ZVNoZWV0KCkpIHsKICAgICAgICAgICAgICAgICBzdHlsZVNoZWV0UXVldWUuYXBwZW5kKGltcG9y
dFJ1bGUtPnN0eWxlU2hlZXQoKSk7CiAgICAgICAgICAgICAgICAgYWRkU3VicmVzb3VyY2VVUkwo
dXJscywgaW1wb3J0UnVsZS0+c3R5bGVTaGVldCgpLT5iYXNlVVJMKCkpOwogICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdHlsZVNoZWV0
LT5tX2NoaWxkUnVsZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIFN0eWxlUnVsZUJhc2Uq
IHJ1bGUgPSBzdHlsZVNoZWV0LT5tX2NoaWxkUnVsZXNbaV0uZ2V0KCk7Ci0gICAgICAgICAgICBp
ZiAocnVsZS0+aXNTdHlsZVJ1bGUoKSkKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxTdHls
ZVJ1bGUqPihydWxlKS0+cHJvcGVydGllcygpLmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKHVybHMs
IHRoaXMpOwotICAgICAgICAgICAgZWxzZSBpZiAocnVsZS0+aXNGb250RmFjZVJ1bGUoKSkKLSAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxTdHlsZVJ1bGVGb250RmFjZSo+KHJ1bGUpLT5wcm9w
ZXJ0aWVzKCkuYWRkU3VicmVzb3VyY2VTdHlsZVVSTHModXJscywgdGhpcyk7CisgICAgICAgIGZv
ciAoYXV0byYgcnVsZSA6IHN0eWxlU2hlZXQtPm1fY2hpbGRSdWxlcykgeworICAgICAgICAgICAg
aWYgKGlzPFN0eWxlUnVsZT4oKnJ1bGUpKQorICAgICAgICAgICAgICAgIGRvd25jYXN0PFN0eWxl
UnVsZT4oKnJ1bGUpLnByb3BlcnRpZXMoKS5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzLCB0
aGlzKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzPFN0eWxlUnVsZUZvbnRGYWNlPigqcnVsZSkp
CisgICAgICAgICAgICAgICAgZG93bmNhc3Q8U3R5bGVSdWxlRm9udEZhY2U+KCpydWxlKS5wcm9w
ZXJ0aWVzKCkuYWRkU3VicmVzb3VyY2VTdHlsZVVSTHModXJscywgdGhpcyk7CiAgICAgICAgIH0K
ICAgICB9CiB9CiAKIHN0YXRpYyBib29sIGNoaWxkUnVsZXNIYXZlRmFpbGVkT3JDYW5jZWxlZFN1
YnJlc291cmNlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgcnVsZXMpCiB7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJ1bGVzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIGNvbnN0IFN0eWxlUnVsZUJhc2UqIHJ1bGUgPSBydWxlc1tpXS5nZXQoKTsKKyAgICBmb3Ig
KGF1dG8mIHJ1bGUgOiBydWxlcykgewogICAgICAgICBzd2l0Y2ggKHJ1bGUtPnR5cGUoKSkgewog
ICAgICAgICBjYXNlIFN0eWxlUnVsZUJhc2U6OlN0eWxlOgotICAgICAgICAgICAgaWYgKHN0YXRp
Y19jYXN0PGNvbnN0IFN0eWxlUnVsZSo+KHJ1bGUpLT5wcm9wZXJ0aWVzKCkuaGFzRmFpbGVkT3JD
YW5jZWxlZFN1YnJlc291cmNlcygpKQorICAgICAgICAgICAgaWYgKGRvd25jYXN0PFN0eWxlUnVs
ZT4oKnJ1bGUpLnByb3BlcnRpZXMoKS5oYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBTdHlsZVJ1bGVCYXNlOjpGb250RmFjZToKLSAgICAgICAgICAgIGlmIChzdGF0aWNf
Y2FzdDxjb25zdCBTdHlsZVJ1bGVGb250RmFjZSo+KHJ1bGUpLT5wcm9wZXJ0aWVzKCkuaGFzRmFp
bGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpKQorICAgICAgICAgICAgaWYgKGRvd25jYXN0PFN0
eWxlUnVsZUZvbnRGYWNlPigqcnVsZSkucHJvcGVydGllcygpLmhhc0ZhaWxlZE9yQ2FuY2VsZWRT
dWJyZXNvdXJjZXMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFN0eWxlUnVsZUJhc2U6Ok1lZGlhOgotICAgICAgICAgICAg
aWYgKGNoaWxkUnVsZXNIYXZlRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcyhzdGF0aWNfY2Fz
dDxjb25zdCBTdHlsZVJ1bGVNZWRpYSo+KHJ1bGUpLT5jaGlsZFJ1bGVzKCkpKQorICAgICAgICAg
ICAgaWYgKGNoaWxkUnVsZXNIYXZlRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcyhkb3duY2Fz
dDxTdHlsZVJ1bGVNZWRpYT4oKnJ1bGUpLmNoaWxkUnVsZXMoKSkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdHlsZVJ1bGVC
YXNlOjpSZWdpb246Ci0gICAgICAgICAgICBpZiAoY2hpbGRSdWxlc0hhdmVGYWlsZWRPckNhbmNl
bGVkU3VicmVzb3VyY2VzKHN0YXRpY19jYXN0PGNvbnN0IFN0eWxlUnVsZVJlZ2lvbio+KHJ1bGUp
LT5jaGlsZFJ1bGVzKCkpKQorICAgICAgICAgICAgaWYgKGNoaWxkUnVsZXNIYXZlRmFpbGVkT3JD
YW5jZWxlZFN1YnJlc291cmNlcyhkb3duY2FzdDxTdHlsZVJ1bGVSZWdpb24+KCpydWxlKS5jaGls
ZFJ1bGVzKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgU3R5bGVSdWxlQmFzZTo6SW1wb3J0OgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmNwcAppbmRleCBhZTRhMGE1MTQ4NDFiMThkMGRl
YTkzN2JlNjgxOTg1OTY1NjJiMDc2Li5jYmQxNzJmMTljYWU2ZWU0ZGFjZGEzMTRkN2FmZGJlMDQ5
MmNmZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVmlld3BvcnRS
dWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmNw
cApAQCAtNzcsOCArNzcsNyBAQCBTdHJpbmcgV2ViS2l0Q1NTVmlld3BvcnRSdWxlOjpjc3NUZXh0
KCkgY29uc3QKIAogdm9pZCBXZWJLaXRDU1NWaWV3cG9ydFJ1bGU6OnJlYXR0YWNoKFN0eWxlUnVs
ZUJhc2UmIHJ1bGUpCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocnVs
ZS5pc1ZpZXdwb3J0UnVsZSgpKTsKLSAgICBtX3ZpZXdwb3J0UnVsZSA9IHN0YXRpY19jYXN0PFN0
eWxlUnVsZVZpZXdwb3J0Jj4ocnVsZSk7CisgICAgbV92aWV3cG9ydFJ1bGUgPSBkb3duY2FzdDxT
dHlsZVJ1bGVWaWV3cG9ydD4ocnVsZSk7CiAKICAgICBpZiAobV9wcm9wZXJ0aWVzQ1NTT01XcmFw
cGVyKQogICAgICAgICBtX3Byb3BlcnRpZXNDU1NPTVdyYXBwZXItPnJlYXR0YWNoKG1fdmlld3Bv
cnRSdWxlLT5tdXRhYmxlUHJvcGVydGllcygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IGY4MTRiZTQ0ZjllMTcxMjgxZWUzY2M3ZmQ4
NDg5ODBkODFhOGIwOTcuLjYwOTc2MjM4NTY5YjZjZmQ2YTkwMTNhYzJmNjgyOWQ1YjdmMDRiOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApA
QCAtMTA0NCwxNyArMTA0NCwxMyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4gSW5zcAogICAgIFNlbGVj
dG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0IGNvbnRleHQoU2VsZWN0b3JDaGVja2VyOjpNb2Rl
OjpDb2xsZWN0aW5nUnVsZXMpOwogICAgIFNlbGVjdG9yQ2hlY2tlciBzZWxlY3RvckNoZWNrZXIo
ZWxlbWVudC0+ZG9jdW1lbnQoKSk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF0
Y2hlZFJ1bGVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmICghbWF0Y2hlZFJ1bGVzW2ldLT5p
c1N0eWxlUnVsZSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgU3R5bGVSdWxl
KiBtYXRjaGVkU3R5bGVSdWxlID0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4obWF0Y2hlZFJ1bGVz
W2ldLmdldCgpKTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
UnVsZT4gcnVsZU9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yUnVsZShtYXRjaGVkU3R5bGVSdWxlLCBz
dHlsZVJlc29sdmVyKTsKKyAgICBmb3IgKGF1dG8mIG1hdGNoZWRSdWxlIDogbWF0Y2hlZFJ1bGVz
KSB7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IHJ1
bGVPYmplY3QgPSBidWlsZE9iamVjdEZvclJ1bGUobWF0Y2hlZFJ1bGUuZ2V0KCksIHN0eWxlUmVz
b2x2ZXIpOwogICAgICAgICBpZiAoIXJ1bGVPYmplY3QpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4gbWF0Y2hp
bmdTZWxlY3RvcnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsK
LSAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QgPSBtYXRjaGVkU3R5
bGVSdWxlLT5zZWxlY3Rvckxpc3QoKTsKKyAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBz
ZWxlY3Rvckxpc3QgPSBtYXRjaGVkUnVsZS0+c2VsZWN0b3JMaXN0KCk7CiAgICAgICAgIGxvbmcg
aW5kZXggPSAwOwogICAgICAgICBmb3IgKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IHNl
bGVjdG9yTGlzdC5maXJzdCgpOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6
Om5leHQoc2VsZWN0b3IpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZ25vcmVkU3BlY2lmaWNp
dHk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243170</attachid>
            <date>2014-12-11 18:07:07 -0800</date>
            <delta_ts>2014-12-12 12:27:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139571-20141211180751.patch</filename>
            <type>text/plain</type>
            <size>28593</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3MTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDAyMzQ1MTkzMTVmNzJl
MThhNjBhN2JlMWM1MTFjZDI5N2QwMTg0Yi4uZmMxY2QyYzgyMGMzYzMzNWNjNDc3YzBiNGY2Mjc0
MzRiMDI4OWRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUxIEBACiAyMDE0LTEyLTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgU3R5bGVSdWxlQmFzZSBzdWJjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk1NzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZv
ciBTdHlsZVJ1bGVCYXNlIHN1YmNsYXNzZXMgZm9yIHNhZmV0eSBhbmQKKyAgICAgICAgY29uc2lz
dGVuY3kuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAg
ICAgICAgKiBjc3MvQ1NTRm9udEZhY2VSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zv
bnRGYWNlUnVsZTo6cmVhdHRhY2gpOgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmg6
CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIGNzcy9DU1NQYWdlUnVsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYWdlUnVsZTo6cmVhdHRhY2gpOgorICAgICAgICAqIGNzcy9DU1NT
dHlsZVJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVSdWxlOjpyZWF0dGFjaCk6
CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVTaGVldDo6aW5zZXJ0UnVsZSk6CisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UnVsZVNldDo6YWRkUmVnaW9uUnVsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSdWxlU2V0OjphZGRDaGlsZFJ1bGVzKToKKyAgICAgICAgKiBjc3MvU3R5bGVJbnZhbGlkYXRp
b25BbmFseXNpcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGREaXJ0eUFsbFN0eWxlKToK
KyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVs
ZUJhc2U6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlQmFzZTo6Y29weSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIpOgor
ICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjp0b1N0eWxlUnVsZSk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL1N0eWxlUnVsZUlt
cG9ydC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldENvbnRl
bnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb250ZW50czo6cGFyc2VyQXBw
ZW5kUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0Q29udGVudHM6OndyYXBwZXJJ
bnNlcnRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb250ZW50czo6YWRkU3Vi
cmVzb3VyY2VTdHlsZVVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6Y2hpbGRSdWxlc0hhdmVGYWls
ZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTVmlld3Bv
cnRSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1ZpZXdwb3J0UnVsZTo6cmVh
dHRhY2gpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvck1hdGNoZWRSdWxl
TGlzdCk6CisKKzIwMTQtMTItMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwog
ICAgICAgICBSZWdyZXNzaW9uKHIxNzYyMTIpOiBDYXJvdXNlbCBvbiBtYnVzYS5jb20gaXMgY2hv
cHB5CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk1
NDMKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE5MjA5NDA2PgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VSdWxlLmNwcAppbmRleCBmNjRhY2Q5OWNiZTgyZmU1ZjIyM2E1NmZiNjJkYmY2ZGZi
MWNlZjJmLi4wZGRhMWIyYzVhM2I0YmVjOTAwNWY0NGViMzJhNGFkZjc3OWMwMmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VSdWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VSdWxlLmNwcApAQCAtNjIsOCArNjIsNyBAQCBTdHJpbmcg
Q1NTRm9udEZhY2VSdWxlOjpjc3NUZXh0KCkgY29uc3QKIAogdm9pZCBDU1NGb250RmFjZVJ1bGU6
OnJlYXR0YWNoKFN0eWxlUnVsZUJhc2UmIHJ1bGUpCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04ocnVsZS5pc0ZvbnRGYWNlUnVsZSgpKTsKLSAgICBtX2ZvbnRGYWNlUnVs
ZSA9IHN0YXRpY19jYXN0PFN0eWxlUnVsZUZvbnRGYWNlJj4ocnVsZSk7CisgICAgbV9mb250RmFj
ZVJ1bGUgPSBkb3duY2FzdDxTdHlsZVJ1bGVGb250RmFjZT4ocnVsZSk7CiAgICAgaWYgKG1fcHJv
cGVydGllc0NTU09NV3JhcHBlcikKICAgICAgICAgbV9wcm9wZXJ0aWVzQ1NTT01XcmFwcGVyLT5y
ZWF0dGFjaChtX2ZvbnRGYWNlUnVsZS0+bXV0YWJsZVByb3BlcnRpZXMoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuaAppbmRleCA3OGY5ZTc5ZmIyYzQxZTg5ZTFhMWU0NmJl
M2U5ZTc2YTdjOGFiZDcwLi42ZjE1NGE5ZTM0OGRiZTQwZGFmYTkwYWRlYWUwNzU5NWQ2ZmQ4NTNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmgKQEAgLTEwMSw0ICsxMDEsOCBA
QCBwcml2YXRlOgogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19SVUxFKENTU0tleWZyYW1l
c1J1bGUsIENTU1J1bGU6OktFWUZSQU1FU19SVUxFKQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFdlYkNvcmU6OlN0eWxlUnVsZUtleWZyYW1lcykKKyAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6U3R5bGVSdWxlQmFzZSYgcnVsZSkgeyByZXR1cm4gcnVsZS5pc0tl
eWZyYW1lc1J1bGUoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYg
Ly8gQ1NTS2V5ZnJhbWVzUnVsZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFnZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmNwcAppbmRleCBm
MjE0MzBkNmU2ZDdhN2VmNDFjMDQzNjE0NGYwNzJjYTRjYmFkZmQ0Li5lN2JlYTQ2ZTBlMWZlNzY4
MzI1MjZmOWQ5M2VkMmNkNjRjMDkzZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFnZVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAK
QEAgLTk2LDggKzk2LDcgQEAgU3RyaW5nIENTU1BhZ2VSdWxlOjpjc3NUZXh0KCkgY29uc3QKIAog
dm9pZCBDU1NQYWdlUnVsZTo6cmVhdHRhY2goU3R5bGVSdWxlQmFzZSYgcnVsZSkKIHsKLSAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihydWxlLmlzUGFnZVJ1bGUoKSk7Ci0gICAg
bV9wYWdlUnVsZSA9IHN0YXRpY19jYXN0PFN0eWxlUnVsZVBhZ2UmPihydWxlKTsKKyAgICBtX3Bh
Z2VSdWxlID0gZG93bmNhc3Q8U3R5bGVSdWxlUGFnZT4ocnVsZSk7CiAgICAgaWYgKG1fcHJvcGVy
dGllc0NTU09NV3JhcHBlcikKICAgICAgICAgbV9wcm9wZXJ0aWVzQ1NTT01XcmFwcGVyLT5yZWF0
dGFjaChtX3BhZ2VSdWxlLmdldCgpLm11dGFibGVQcm9wZXJ0aWVzKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVSdWxlLmNwcAppbmRleCA5NWE2OWNmOGU0MzVmYzE1MDgxYWFkMTU5NmI5NzEz
YWJkZWJkYzQwLi5lMWM0MTRjMzc0NzQwZjA5Mjk5YmM4ZDdjMmM3YmZjYzg1MjFmMWM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcApAQCAtMTMzLDggKzEzMyw3IEBAIFN0cmluZyBD
U1NTdHlsZVJ1bGU6OmNzc1RleHQoKSBjb25zdAogCiB2b2lkIENTU1N0eWxlUnVsZTo6cmVhdHRh
Y2goU3R5bGVSdWxlQmFzZSYgcnVsZSkKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihydWxlLmlzU3R5bGVSdWxlKCkpOwotICAgIG1fc3R5bGVSdWxlID0gc3RhdGljX2Nh
c3Q8U3R5bGVSdWxlJj4ocnVsZSk7CisgICAgbV9zdHlsZVJ1bGUgPSBkb3duY2FzdDxTdHlsZVJ1
bGU+KHJ1bGUpOwogICAgIGlmIChtX3Byb3BlcnRpZXNDU1NPTVdyYXBwZXIpCiAgICAgICAgIG1f
cHJvcGVydGllc0NTU09NV3JhcHBlci0+cmVhdHRhY2gobV9zdHlsZVJ1bGUtPm11dGFibGVQcm9w
ZXJ0aWVzKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hl
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDRlMWZl
NzgzNTAwMjRhZjExNmY3NTQ0OWE3NTE1YjMxNzViY2E2NjIuLjhlNmU0MGZhMGQ4NDg5MjM1NGEz
MmMwNzI5ZGQwMjZkOTVkYmVlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAK
QEAgLTMwMCw3ICszMDAsNyBAQCB1bnNpZ25lZCBDU1NTdHlsZVNoZWV0OjppbnNlcnRSdWxlKGNv
bnN0IFN0cmluZyYgcnVsZVN0cmluZywgdW5zaWduZWQgaW5kZXgsIEV4YwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKLSAgICBSdWxlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMs
IFJ1bGVJbnNlcnRpb24sIHJ1bGUtPnR5cGUoKSA9PSBTdHlsZVJ1bGVCYXNlOjpLZXlmcmFtZXMg
PyBzdGF0aWNfY2FzdDxTdHlsZVJ1bGVLZXlmcmFtZXMqPihydWxlLmdldCgpKSA6IDApOworICAg
IFJ1bGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcywgUnVsZUluc2VydGlvbiwgaXM8
U3R5bGVSdWxlS2V5ZnJhbWVzPigqcnVsZSkgPyBkb3duY2FzdDxTdHlsZVJ1bGVLZXlmcmFtZXM+
KHJ1bGUuZ2V0KCkpIDogbnVsbHB0cik7CiAKICAgICBib29sIHN1Y2Nlc3MgPSBtX2NvbnRlbnRz
LmdldCgpLndyYXBwZXJJbnNlcnRSdWxlKHJ1bGUsIGluZGV4KTsKICAgICBpZiAoIXN1Y2Nlc3Mp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAppbmRleCAxZmY5YzRkNDZlZGE1OTRiYTJhYzJjOGJhZThh
OGFjYjMwNmM0ZWQ0Li41OWExYTI2MmFlNTBmNDU0MDA0NDBiZGNiMDdmMGIzYjc0NjU5Mjc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1J1bGVTZXQuY3BwCkBAIC0zMDcsMTAgKzMwNyw5IEBAIHZvaWQgUnVsZVNldDo6
YWRkUmVnaW9uUnVsZShTdHlsZVJ1bGVSZWdpb24qIHJlZ2lvblJ1bGUsIGJvb2wgaGFzRG9jdW1l
bnRTZWN1cml0CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGNoaWxk
UnVsZXMgPSByZWdpb25SdWxlLT5jaGlsZFJ1bGVzKCk7CiAgICAgQWRkUnVsZUZsYWdzIGFkZFJ1
bGVGbGFncyA9IGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gPyBSdWxlSGFzRG9jdW1lbnRTZWN1
cml0eU9yaWdpbiA6IFJ1bGVIYXNOb1NwZWNpYWxTdGF0ZTsKICAgICBhZGRSdWxlRmxhZ3MgPSBz
dGF0aWNfY2FzdDxBZGRSdWxlRmxhZ3M+KGFkZFJ1bGVGbGFncyB8IFJ1bGVJc0luUmVnaW9uUnVs
ZSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoaWxkUnVsZXMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgU3R5bGVSdWxlQmFzZSogcmVnaW9uU3R5bGluZ1J1bGUgPSBjaGlsZFJ1bGVz
W2ldLmdldCgpOwotICAgICAgICBpZiAocmVnaW9uU3R5bGluZ1J1bGUtPmlzU3R5bGVSdWxlKCkp
Ci0gICAgICAgICAgICByZWdpb25SdWxlU2V0LT5hZGRTdHlsZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5
bGVSdWxlKj4ocmVnaW9uU3R5bGluZ1J1bGUpLCBhZGRSdWxlRmxhZ3MpOworICAgIGZvciAoYXV0
byYgY2hpbGRSdWxlIDogY2hpbGRSdWxlcykgeworICAgICAgICBpZiAoaXM8U3R5bGVSdWxlPigq
Y2hpbGRSdWxlKSkKKyAgICAgICAgICAgIHJlZ2lvblJ1bGVTZXQtPmFkZFN0eWxlUnVsZShkb3du
Y2FzdDxTdHlsZVJ1bGU+KGNoaWxkUnVsZS5nZXQoKSksIGFkZFJ1bGVGbGFncyk7CiAgICAgfQog
ICAgIC8vIFVwZGF0ZSB0aGUgImdsb2JhbCIgcnVsZSBjb3VudCBzbyB0aGF0IHByb3BlciBvcmRl
ciBpcyBtYWludGFpbmVkCiAgICAgbV9ydWxlQ291bnQgPSByZWdpb25SdWxlU2V0LT5tX3J1bGVD
b3VudDsKQEAgLTMyMCwzNSArMzE5LDMxIEBAIHZvaWQgUnVsZVNldDo6YWRkUmVnaW9uUnVsZShT
dHlsZVJ1bGVSZWdpb24qIHJlZ2lvblJ1bGUsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0CiAKIHZv
aWQgUnVsZVNldDo6YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJh
c2U+PiYgcnVsZXMsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGl1bSwgU3R5bGVSZXNv
bHZlciogcmVzb2x2ZXIsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgQWRkUnVsZUZs
YWdzIGFkZFJ1bGVGbGFncykKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcnVsZXMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgU3R5bGVSdWxlQmFzZSogcnVsZSA9IHJ1bGVzW2ldLmdl
dCgpOwotCi0gICAgICAgIGlmIChydWxlLT5pc1N0eWxlUnVsZSgpKSB7Ci0gICAgICAgICAgICBT
dHlsZVJ1bGUqIHN0eWxlUnVsZSA9IHN0YXRpY19jYXN0PFN0eWxlUnVsZSo+KHJ1bGUpOwotICAg
ICAgICAgICAgYWRkU3R5bGVSdWxlKHN0eWxlUnVsZSwgYWRkUnVsZUZsYWdzKTsKLSAgICAgICAg
fSBlbHNlIGlmIChydWxlLT5pc1BhZ2VSdWxlKCkpCi0gICAgICAgICAgICBhZGRQYWdlUnVsZShz
dGF0aWNfY2FzdDxTdHlsZVJ1bGVQYWdlKj4ocnVsZSkpOwotICAgICAgICBlbHNlIGlmIChydWxl
LT5pc01lZGlhUnVsZSgpKSB7Ci0gICAgICAgICAgICBTdHlsZVJ1bGVNZWRpYSogbWVkaWFSdWxl
ID0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlTWVkaWEqPihydWxlKTsKLSAgICAgICAgICAgIGlmICgo
IW1lZGlhUnVsZS0+bWVkaWFRdWVyaWVzKCkgfHwgbWVkaXVtLmV2YWwobWVkaWFSdWxlLT5tZWRp
YVF1ZXJpZXMoKSwgcmVzb2x2ZXIpKSkKLSAgICAgICAgICAgICAgICBhZGRDaGlsZFJ1bGVzKG1l
ZGlhUnVsZS0+Y2hpbGRSdWxlcygpLCBtZWRpdW0sIHJlc29sdmVyLCBoYXNEb2N1bWVudFNlY3Vy
aXR5T3JpZ2luLCBhZGRSdWxlRmxhZ3MpOwotICAgICAgICB9IGVsc2UgaWYgKHJ1bGUtPmlzRm9u
dEZhY2VSdWxlKCkgJiYgcmVzb2x2ZXIpIHsKKyAgICBmb3IgKGF1dG8mIHJ1bGUgOiBydWxlcykg
eworICAgICAgICBpZiAoaXM8U3R5bGVSdWxlPigqcnVsZSkpCisgICAgICAgICAgICBhZGRTdHls
ZVJ1bGUoZG93bmNhc3Q8U3R5bGVSdWxlPihydWxlLmdldCgpKSwgYWRkUnVsZUZsYWdzKTsKKyAg
ICAgICAgZWxzZSBpZiAoaXM8U3R5bGVSdWxlUGFnZT4oKnJ1bGUpKQorICAgICAgICAgICAgYWRk
UGFnZVJ1bGUoZG93bmNhc3Q8U3R5bGVSdWxlUGFnZT4ocnVsZS5nZXQoKSkpOworICAgICAgICBl
bHNlIGlmIChpczxTdHlsZVJ1bGVNZWRpYT4oKnJ1bGUpKSB7CisgICAgICAgICAgICBhdXRvJiBt
ZWRpYVJ1bGUgPSBkb3duY2FzdDxTdHlsZVJ1bGVNZWRpYT4oKnJ1bGUpOworICAgICAgICAgICAg
aWYgKCghbWVkaWFSdWxlLm1lZGlhUXVlcmllcygpIHx8IG1lZGl1bS5ldmFsKG1lZGlhUnVsZS5t
ZWRpYVF1ZXJpZXMoKSwgcmVzb2x2ZXIpKSkKKyAgICAgICAgICAgICAgICBhZGRDaGlsZFJ1bGVz
KG1lZGlhUnVsZS5jaGlsZFJ1bGVzKCksIG1lZGl1bSwgcmVzb2x2ZXIsIGhhc0RvY3VtZW50U2Vj
dXJpdHlPcmlnaW4sIGFkZFJ1bGVGbGFncyk7CisgICAgICAgIH0gZWxzZSBpZiAoaXM8U3R5bGVS
dWxlRm9udEZhY2U+KCpydWxlKSAmJiByZXNvbHZlcikgewogICAgICAgICAgICAgLy8gQWRkIHRo
aXMgZm9udCBmYWNlIHRvIG91ciBzZXQuCi0gICAgICAgICAgICBjb25zdCBTdHlsZVJ1bGVGb250
RmFjZSogZm9udEZhY2VSdWxlID0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlRm9udEZhY2UqPihydWxl
KTsKLSAgICAgICAgICAgIHJlc29sdmVyLT5mb250U2VsZWN0b3IoKS0+YWRkRm9udEZhY2VSdWxl
KGZvbnRGYWNlUnVsZSk7CisgICAgICAgICAgICByZXNvbHZlci0+Zm9udFNlbGVjdG9yKCktPmFk
ZEZvbnRGYWNlUnVsZShkb3duY2FzdDxTdHlsZVJ1bGVGb250RmFjZT4ocnVsZS5nZXQoKSkpOwog
ICAgICAgICAgICAgcmVzb2x2ZXItPmludmFsaWRhdGVNYXRjaGVkUHJvcGVydGllc0NhY2hlKCk7
Ci0gICAgICAgIH0gZWxzZSBpZiAocnVsZS0+aXNLZXlmcmFtZXNSdWxlKCkgJiYgcmVzb2x2ZXIp
Ci0gICAgICAgICAgICByZXNvbHZlci0+YWRkS2V5ZnJhbWVTdHlsZShzdGF0aWNfY2FzdDxTdHls
ZVJ1bGVLZXlmcmFtZXMqPihydWxlKSk7Ci0gICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzU3VwcG9y
dHNSdWxlKCkgJiYgc3RhdGljX2Nhc3Q8U3R5bGVSdWxlU3VwcG9ydHMqPihydWxlKS0+Y29uZGl0
aW9uSXNTdXBwb3J0ZWQoKSkKLSAgICAgICAgICAgIGFkZENoaWxkUnVsZXMoc3RhdGljX2Nhc3Q8
U3R5bGVSdWxlU3VwcG9ydHMqPihydWxlKS0+Y2hpbGRSdWxlcygpLCBtZWRpdW0sIHJlc29sdmVy
LCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBhZGRSdWxlRmxhZ3MpOworICAgICAgICB9IGVs
c2UgaWYgKGlzPFN0eWxlUnVsZUtleWZyYW1lcz4oKnJ1bGUpICYmIHJlc29sdmVyKQorICAgICAg
ICAgICAgcmVzb2x2ZXItPmFkZEtleWZyYW1lU3R5bGUoZG93bmNhc3Q8U3R5bGVSdWxlS2V5ZnJh
bWVzPihydWxlLmdldCgpKSk7CisgICAgICAgIGVsc2UgaWYgKGlzPFN0eWxlUnVsZVN1cHBvcnRz
PigqcnVsZSkgJiYgZG93bmNhc3Q8U3R5bGVSdWxlU3VwcG9ydHM+KCpydWxlKS5jb25kaXRpb25J
c1N1cHBvcnRlZCgpKQorICAgICAgICAgICAgYWRkQ2hpbGRSdWxlcyhkb3duY2FzdDxTdHlsZVJ1
bGVTdXBwb3J0cz4oKnJ1bGUpLmNoaWxkUnVsZXMoKSwgbWVkaXVtLCByZXNvbHZlciwgaGFzRG9j
dW1lbnRTZWN1cml0eU9yaWdpbiwgYWRkUnVsZUZsYWdzKTsKICNpZiBFTkFCTEUoQ1NTX1JFR0lP
TlMpCi0gICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzUmVnaW9uUnVsZSgpICYmIHJlc29sdmVyKSB7
Ci0gICAgICAgICAgICBhZGRSZWdpb25SdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVsZVJlZ2lvbio+
KHJ1bGUpLCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgZWxzZSBpZiAoaXM8
U3R5bGVSdWxlUmVnaW9uPigqcnVsZSkgJiYgcmVzb2x2ZXIpIHsKKyAgICAgICAgICAgIGFkZFJl
Z2lvblJ1bGUoZG93bmNhc3Q8U3R5bGVSdWxlUmVnaW9uPihydWxlLmdldCgpKSwgaGFzRG9jdW1l
bnRTZWN1cml0eU9yaWdpbik7CiAgICAgICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShDU1NfREVW
SUNFX0FEQVBUQVRJT04pCi0gICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzVmlld3BvcnRSdWxlKCkg
JiYgcmVzb2x2ZXIpIHsKLSAgICAgICAgICAgIHJlc29sdmVyLT52aWV3cG9ydFN0eWxlUmVzb2x2
ZXIoKS0+YWRkVmlld3BvcnRSdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVsZVZpZXdwb3J0Kj4ocnVs
ZSkpOworICAgICAgICBlbHNlIGlmIChpczxTdHlsZVJ1bGVWaWV3cG9ydD4oKnJ1bGUpICYmIHJl
c29sdmVyKSB7CisgICAgICAgICAgICByZXNvbHZlci0+dmlld3BvcnRTdHlsZVJlc29sdmVyKCkt
PmFkZFZpZXdwb3J0UnVsZShkb3duY2FzdDxTdHlsZVJ1bGVWaWV3cG9ydD4ocnVsZS5nZXQoKSkp
OwogICAgICAgICB9CiAjZW5kaWYKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVJbnZhbGlkYXRpb25BbmFseXNpcy5jcHAKaW5kZXggMDZmNjAwZTk2YzBiNzFmYTg0ZjJhMzJh
Zjk4NmJjYjJlZTAxZWIxMS4uNmQ1MWIwZjc4N2Y2MzVjNDE3NTY0YmQ1NzQ2YmVjNjRlY2Q0NTI3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlSW52YWxpZGF0aW9uQW5hbHlz
aXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUludmFsaWRhdGlvbkFuYWx5c2lz
LmNwcApAQCAtMzksMTMgKzM5LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBib29s
IHNob3VsZERpcnR5QWxsU3R5bGUoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4m
IHJ1bGVzKQogewogICAgIGZvciAoYXV0byYgcnVsZSA6IHJ1bGVzKSB7Ci0gICAgICAgIGlmIChy
dWxlLT5pc01lZGlhUnVsZSgpKSB7Ci0gICAgICAgICAgICBpZiAoc2hvdWxkRGlydHlBbGxTdHls
ZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGVNZWRpYSY+KCpydWxlKS5jaGlsZFJ1bGVzKCkpKQorICAg
ICAgICBpZiAoaXM8U3R5bGVSdWxlTWVkaWE+KCpydWxlKSkgeworICAgICAgICAgICAgaWYgKHNo
b3VsZERpcnR5QWxsU3R5bGUoZG93bmNhc3Q8U3R5bGVSdWxlTWVkaWE+KCpydWxlKS5jaGlsZFJ1
bGVzKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IEF0IGxlYXN0IGZvbnQgZmFjZXMgZG9u
J3QgbmVlZCBmdWxsIHJlY2FsYyBpbiBhbGwgY2FzZXMuCi0gICAgICAgIGlmICghcnVsZS0+aXNT
dHlsZVJ1bGUoKSkKKyAgICAgICAgaWYgKCFpczxTdHlsZVJ1bGU+KCpydWxlKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJ1bGUuY3BwCmluZGV4IDIxN2Q2MDNlZDllZGMwYWU0M2E0YzgzMjNhY2Q5OWY4Mzk2M2VmZTku
Ljg5ZGJjN2M1Yzk0OTNiMjlkMmFmNTJjYzQxMzA3MmY4N2M3MjQ2NjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGUuY3BwCkBAIC01OSwzNCArNTksMzQgQEAgdm9pZCBTdHlsZVJ1bGVCYXNlOjpkZXN0
cm95KCkKIHsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewogICAgIGNhc2UgU3R5bGU6Ci0gICAgICAg
IGRlbGV0ZSBzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPih0aGlzKTsKKyAgICAgICAgZGVsZXRlIGRv
d25jYXN0PFN0eWxlUnVsZT4odGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFBhZ2U6
Ci0gICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxTdHlsZVJ1bGVQYWdlKj4odGhpcyk7CisgICAg
ICAgIGRlbGV0ZSBkb3duY2FzdDxTdHlsZVJ1bGVQYWdlPih0aGlzKTsKICAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgRm9udEZhY2U6Ci0gICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxTdHlsZVJ1
bGVGb250RmFjZSo+KHRoaXMpOworICAgICAgICBkZWxldGUgZG93bmNhc3Q8U3R5bGVSdWxlRm9u
dEZhY2U+KHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBNZWRpYToKLSAgICAgICAg
ZGVsZXRlIHN0YXRpY19jYXN0PFN0eWxlUnVsZU1lZGlhKj4odGhpcyk7CisgICAgICAgIGRlbGV0
ZSBkb3duY2FzdDxTdHlsZVJ1bGVNZWRpYT4odGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICBj
YXNlIFN1cHBvcnRzOgotICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8U3R5bGVSdWxlU3VwcG9y
dHMqPih0aGlzKTsKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRzPih0
aGlzKTsKICAgICAgICAgcmV0dXJuOwogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKICAgICBjYXNl
IFJlZ2lvbjoKLSAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFN0eWxlUnVsZVJlZ2lvbio+KHRo
aXMpOworICAgICAgICBkZWxldGUgZG93bmNhc3Q8U3R5bGVSdWxlUmVnaW9uPih0aGlzKTsKICAg
ICAgICAgcmV0dXJuOwogI2VuZGlmCiAgICAgY2FzZSBJbXBvcnQ6Ci0gICAgICAgIGRlbGV0ZSBz
dGF0aWNfY2FzdDxTdHlsZVJ1bGVJbXBvcnQqPih0aGlzKTsKKyAgICAgICAgZGVsZXRlIGRvd25j
YXN0PFN0eWxlUnVsZUltcG9ydD4odGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEtl
eWZyYW1lczoKLSAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFN0eWxlUnVsZUtleWZyYW1lcyo+
KHRoaXMpOworICAgICAgICBkZWxldGUgZG93bmNhc3Q8U3R5bGVSdWxlS2V5ZnJhbWVzPih0aGlz
KTsKICAgICAgICAgcmV0dXJuOwogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04pCiAg
ICAgY2FzZSBWaWV3cG9ydDoKLSAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFN0eWxlUnVsZVZp
ZXdwb3J0Kj4odGhpcyk7CisgICAgICAgIGRlbGV0ZSBkb3duY2FzdDxTdHlsZVJ1bGVWaWV3cG9y
dD4odGhpcyk7CiAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgIGNhc2UgVW5rbm93bjoKQEAg
LTEwNSwyNCArMTA1LDI0IEBAIFBhc3NSZWY8U3R5bGVSdWxlQmFzZT4gU3R5bGVSdWxlQmFzZTo6
Y29weSgpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0eXBlKCkpIHsKICAgICBjYXNlIFN0eWxlOgot
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3R5bGVSdWxlKj4odGhpcyktPmNvcHko
KTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFN0eWxlUnVsZT4oKnRoaXMpLmNvcHkoKTsKICAg
ICBjYXNlIFBhZ2U6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTdHlsZVJ1bGVQ
YWdlKj4odGhpcyktPmNvcHkoKTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFN0eWxlUnVsZVBh
Z2U+KCp0aGlzKS5jb3B5KCk7CiAgICAgY2FzZSBGb250RmFjZToKLSAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IFN0eWxlUnVsZUZvbnRGYWNlKj4odGhpcyktPmNvcHkoKTsKKyAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PFN0eWxlUnVsZUZvbnRGYWNlPigqdGhpcykuY29weSgpOwogICAg
IGNhc2UgTWVkaWE6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTdHlsZVJ1bGVN
ZWRpYSo+KHRoaXMpLT5jb3B5KCk7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxTdHlsZVJ1bGVN
ZWRpYT4oKnRoaXMpLmNvcHkoKTsKICAgICBjYXNlIFN1cHBvcnRzOgotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgU3R5bGVSdWxlU3VwcG9ydHMqPih0aGlzKS0+Y29weSgpOworICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8U3R5bGVSdWxlU3VwcG9ydHM+KCp0aGlzKS5jb3B5KCk7CiAj
aWYgRU5BQkxFKENTU19SRUdJT05TKQogICAgIGNhc2UgUmVnaW9uOgotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgU3R5bGVSdWxlUmVnaW9uKj4odGhpcyktPmNvcHkoKTsKKyAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PFN0eWxlUnVsZVJlZ2lvbj4oKnRoaXMpLmNvcHkoKTsKICNlbmRp
ZgogICAgIGNhc2UgS2V5ZnJhbWVzOgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
U3R5bGVSdWxlS2V5ZnJhbWVzKj4odGhpcyktPmNvcHkoKTsKKyAgICAgICAgcmV0dXJuIGRvd25j
YXN0PFN0eWxlUnVsZUtleWZyYW1lcz4oKnRoaXMpLmNvcHkoKTsKICNpZiBFTkFCTEUoQ1NTX0RF
VklDRV9BREFQVEFUSU9OKQogICAgIGNhc2UgVmlld3BvcnQ6Ci0gICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBTdHlsZVJ1bGVWaWV3cG9ydCo+KHRoaXMpLT5jb3B5KCk7CisgICAgICAg
IHJldHVybiBkb3duY2FzdDxTdHlsZVJ1bGVWaWV3cG9ydD4oKnRoaXMpLmNvcHkoKTsKICNlbmRp
ZgogICAgIGNhc2UgSW1wb3J0OgogICAgICAgICAvLyBGSVhNRTogQ29weSBpbXBvcnQgcnVsZXMu
CkBAIC0xNDYsMzQgKzE0NiwzNCBAQCBQYXNzUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6
OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldAogICAgIFN0eWxl
UnVsZUJhc2UmIHNlbGYgPSBjb25zdF9jYXN0PFN0eWxlUnVsZUJhc2UmPigqdGhpcyk7CiAgICAg
c3dpdGNoICh0eXBlKCkpIHsKICAgICBjYXNlIFN0eWxlOgotICAgICAgICBydWxlID0gQ1NTU3R5
bGVSdWxlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlJj4oc2VsZiksIHBhcmVudFNoZWV0
KTsKKyAgICAgICAgcnVsZSA9IENTU1N0eWxlUnVsZTo6Y3JlYXRlKGRvd25jYXN0PFN0eWxlUnVs
ZT4oc2VsZiksIHBhcmVudFNoZWV0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYWdlOgot
ICAgICAgICBydWxlID0gQ1NTUGFnZVJ1bGU6OmNyZWF0ZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGVQ
YWdlJj4oc2VsZiksIHBhcmVudFNoZWV0KTsKKyAgICAgICAgcnVsZSA9IENTU1BhZ2VSdWxlOjpj
cmVhdGUoZG93bmNhc3Q8U3R5bGVSdWxlUGFnZT4oc2VsZiksIHBhcmVudFNoZWV0KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBGb250RmFjZToKLSAgICAgICAgcnVsZSA9IENTU0ZvbnRGYWNl
UnVsZTo6Y3JlYXRlKHN0YXRpY19jYXN0PFN0eWxlUnVsZUZvbnRGYWNlJj4oc2VsZiksIHBhcmVu
dFNoZWV0KTsKKyAgICAgICAgcnVsZSA9IENTU0ZvbnRGYWNlUnVsZTo6Y3JlYXRlKGRvd25jYXN0
PFN0eWxlUnVsZUZvbnRGYWNlPihzZWxmKSwgcGFyZW50U2hlZXQpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIE1lZGlhOgotICAgICAgICBydWxlID0gQ1NTTWVkaWFSdWxlOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8U3R5bGVSdWxlTWVkaWEmPihzZWxmKSwgcGFyZW50U2hlZXQpOworICAgICAgICBy
dWxlID0gQ1NTTWVkaWFSdWxlOjpjcmVhdGUoZG93bmNhc3Q8U3R5bGVSdWxlTWVkaWE+KHNlbGYp
LCBwYXJlbnRTaGVldCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3VwcG9ydHM6Ci0gICAg
ICAgIHJ1bGUgPSBDU1NTdXBwb3J0c1J1bGU6OmNyZWF0ZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGVT
dXBwb3J0cyY+KHNlbGYpLCBwYXJlbnRTaGVldCk7CisgICAgICAgIHJ1bGUgPSBDU1NTdXBwb3J0
c1J1bGU6OmNyZWF0ZShkb3duY2FzdDxTdHlsZVJ1bGVTdXBwb3J0cz4oc2VsZiksIHBhcmVudFNo
ZWV0KTsKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQogICAgIGNhc2Ug
UmVnaW9uOgotICAgICAgICBydWxlID0gV2ViS2l0Q1NTUmVnaW9uUnVsZTo6Y3JlYXRlKHN0YXRp
Y19jYXN0PFN0eWxlUnVsZVJlZ2lvbiY+KHNlbGYpLCBwYXJlbnRTaGVldCk7CisgICAgICAgIHJ1
bGUgPSBXZWJLaXRDU1NSZWdpb25SdWxlOjpjcmVhdGUoZG93bmNhc3Q8U3R5bGVSdWxlUmVnaW9u
PihzZWxmKSwgcGFyZW50U2hlZXQpOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2Ug
SW1wb3J0OgotICAgICAgICBydWxlID0gQ1NTSW1wb3J0UnVsZTo6Y3JlYXRlKHN0YXRpY19jYXN0
PFN0eWxlUnVsZUltcG9ydCY+KHNlbGYpLCBwYXJlbnRTaGVldCk7CisgICAgICAgIHJ1bGUgPSBD
U1NJbXBvcnRSdWxlOjpjcmVhdGUoZG93bmNhc3Q8U3R5bGVSdWxlSW1wb3J0PihzZWxmKSwgcGFy
ZW50U2hlZXQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEtleWZyYW1lczoKLSAgICAgICAg
cnVsZSA9IENTU0tleWZyYW1lc1J1bGU6OmNyZWF0ZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGVLZXlm
cmFtZXMmPihzZWxmKSwgcGFyZW50U2hlZXQpOworICAgICAgICBydWxlID0gQ1NTS2V5ZnJhbWVz
UnVsZTo6Y3JlYXRlKGRvd25jYXN0PFN0eWxlUnVsZUtleWZyYW1lcz4oc2VsZiksIHBhcmVudFNo
ZWV0KTsKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikK
ICAgICBjYXNlIFZpZXdwb3J0OgotICAgICAgICBydWxlID0gV2ViS2l0Q1NTVmlld3BvcnRSdWxl
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlVmlld3BvcnQmPihzZWxmKSwgcGFyZW50U2hl
ZXQpOworICAgICAgICBydWxlID0gV2ViS2l0Q1NTVmlld3BvcnRSdWxlOjpjcmVhdGUoZG93bmNh
c3Q8U3R5bGVSdWxlVmlld3BvcnQ+KHNlbGYpLCBwYXJlbnRTaGVldCk7CiAgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAgICAgY2FzZSBVbmtub3duOgpAQCAtMTgzLDcgKzE4Myw3IEBAIFBhc3NSZWZQ
dHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hl
ZXQqIHBhcmVudFNoZWV0CiAgICAgY2FzZSBSZWdpb246CiAjZW5kaWYKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAgICAgaWYgKHBhcmVudFJ1bGUpCiAgICAgICAgIHJ1bGUtPnNldFBhcmVudFJ1
bGUocGFyZW50UnVsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKaW5kZXggMGNhZTdiYWQ3NThlMjk3
OGQ3ZGI2YTc3M2FiMzgwYmQ4OWE1NTA4Zi4uYWVhZTlkZmUzYjBkZjBiNDg0MzZkZDhjNGQzNDY0
MTVmMjRlODRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaApAQCAtMTM0LDEyICsxMzQsNiBAQCBw
cml2YXRlOgogICAgIENTU1NlbGVjdG9yTGlzdCBtX3NlbGVjdG9yTGlzdDsKIH07CiAKLWlubGlu
ZSBjb25zdCBTdHlsZVJ1bGUqIHRvU3R5bGVSdWxlKGNvbnN0IFN0eWxlUnVsZUJhc2UqIHJ1bGUp
Ci17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXJ1bGUgfHwgcnVsZS0+
aXNTdHlsZVJ1bGUoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN0eWxlUnVsZSo+
KHJ1bGUpOwotfQotCiBjbGFzcyBTdHlsZVJ1bGVGb250RmFjZSA6IHB1YmxpYyBTdHlsZVJ1bGVC
YXNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZVJ1bGVGb250RmFjZT4gY3Jl
YXRlKFBhc3NSZWY8U3R5bGVQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFN0eWxlUnVsZUZvbnRGYWNlKFdURjo6bW92ZShwcm9wZXJ0aWVzKSkpOyB9CkBAIC0y
NzQsMTYgKzI2OCwzNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U3R5bGVSdWxlKQorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlJiBydWxlKSB7IHJldHVy
biBydWxlLmlzU3R5bGVSdWxlKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTdHlsZVJ1bGVGb250RmFjZSkK
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U3R5bGVSdWxlQmFzZSYgcnVs
ZSkgeyByZXR1cm4gcnVsZS5pc0ZvbnRGYWNlUnVsZSgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U3R5bGVS
dWxlTWVkaWEpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlN0eWxlUnVs
ZUdyb3VwJiBncm91cCkgeyByZXR1cm4gZ3JvdXAuaXNNZWRpYVJ1bGUoKTsgfQorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlJiBydWxlKSB7IHJldHVy
biBydWxlLmlzTWVkaWFSdWxlKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTdHlsZVJ1bGVQYWdlKQorICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlJiBydWxlKSB7
IHJldHVybiBydWxlLmlzUGFnZVJ1bGUoKTsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlN0eWxlUnVsZVN1cHBv
cnRzKQotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTdHlsZVJ1bGVHcm91
cCYgZ3JvdXApIHsgcmV0dXJuIGdyb3VwLmlzU3VwcG9ydHNSdWxlKCk7IH0KKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U3R5bGVSdWxlQmFzZSYgcnVsZSkgeyByZXR1cm4g
cnVsZS5pc1N1cHBvcnRzUnVsZSgpOyB9CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U3R5bGVSdWxlUmVnaW9uKQot
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTdHlsZVJ1bGVHcm91cCYgZ3Jv
dXApIHsgcmV0dXJuIGdyb3VwLmlzUmVnaW9uUnVsZSgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6OlN0eWxlUnVsZUJhc2UmIHJ1bGUpIHsgcmV0dXJuIHJ1bGUuaXNS
ZWdpb25SdWxlKCk7IH0KIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAorI2lmIEVOQUJM
RShDU1NfREVWSUNFX0FEQVBUQVRJT04pCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OlN0eWxlUnVsZVZpZXdwb3J0KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpTdHlsZVJ1bGVCYXNlJiBydWxlKSB7IHJldHVybiBydWxlLmlzVmlld3BvcnRSdWxl
KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKyNlbmRpZiAvLyBFTkFCTEUoQ1NT
X0RFVklDRV9BREFQVEFUSU9OKQorCiAjZW5kaWYgLy8gU3R5bGVSdWxlX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJ1bGVJbXBvcnQuaAppbmRleCAyOGZhY2U3YzkyZjRkZWJkNTBjMGIyYWNmZjU2ZDkz
ZTAxMzAyNDYxLi4xMTMxZjk0NGRjMGFlNDQ2NTVmMzAwZjlmNTllMDZhMWFiODgzZWQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJDYWNoZWRTdHlsZVNoZWV0Q2xp
ZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTgzLDQgKzg0LDggQEAgcHJpdmF0ZToKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OlN0eWxlUnVsZUltcG9ydCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6U3R5bGVSdWxlQmFzZSYgcnVsZSkgeyByZXR1cm4gcnVsZS5pc0ltcG9ydFJ1bGUoKTsg
fQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKaW5kZXggOTQ2MTZlYjFkMDI5ZWMxOTlhY2YzOTA0
ZDliNmZhZDU2MjYzN2JjNC4uYWEwZDc1YzBkMmMyNGY4NjNmZjE1YzRhZGMxMjA3ZjcyNzdlOGJl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKQEAgLTEyNywx
MCArMTI3LDEwIEBAIGJvb2wgU3R5bGVTaGVldENvbnRlbnRzOjppc0NhY2hlYWJsZSgpIGNvbnN0
CiB2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6cGFyc2VyQXBwZW5kUnVsZShQYXNzUmVmUHRyPFN0
eWxlUnVsZUJhc2U+IHJ1bGUpCiB7CiAgICAgQVNTRVJUKCFydWxlLT5pc0NoYXJzZXRSdWxlKCkp
OwotICAgIGlmIChydWxlLT5pc0ltcG9ydFJ1bGUoKSkgeworICAgIGlmIChpczxTdHlsZVJ1bGVJ
bXBvcnQ+KCpydWxlKSkgewogICAgICAgICAvLyBQYXJzZXIgZW5mb3JjZXMgdGhhdCBAaW1wb3J0
IHJ1bGVzIGNvbWUgYmVmb3JlIGFueXRoaW5nIGVsc2UgZXhjZXB0IEBjaGFyc2V0LgogICAgICAg
ICBBU1NFUlQobV9jaGlsZFJ1bGVzLmlzRW1wdHkoKSk7Ci0gICAgICAgIG1faW1wb3J0UnVsZXMu
YXBwZW5kKHN0YXRpY19jYXN0PFN0eWxlUnVsZUltcG9ydCo+KHJ1bGUuZ2V0KCkpKTsKKyAgICAg
ICAgbV9pbXBvcnRSdWxlcy5hcHBlbmQoZG93bmNhc3Q8U3R5bGVSdWxlSW1wb3J0PihydWxlLmdl
dCgpKSk7CiAgICAgICAgIG1faW1wb3J0UnVsZXMubGFzdCgpLT5zZXRQYXJlbnRTdHlsZVNoZWV0
KHRoaXMpOwogICAgICAgICBtX2ltcG9ydFJ1bGVzLmxhc3QoKS0+cmVxdWVzdFN0eWxlU2hlZXQo
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTM4LDE0ICsxMzgsMTQgQEAgdm9pZCBTdHlsZVNoZWV0
Q29udGVudHM6OnBhcnNlckFwcGVuZFJ1bGUoUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBydWxl
KQogCiAjaWYgRU5BQkxFKFJFU09MVVRJT05fTUVESUFfUVVFUlkpCiAgICAgLy8gQWRkIHdhcm5p
bmcgbWVzc2FnZSB0byBpbnNwZWN0b3IgaWYgZHBpL2RwY20gdmFsdWVzIGFyZSB1c2VkIGZvciBz
Y3JlZW4gbWVkaWEuCi0gICAgaWYgKHJ1bGUtPmlzTWVkaWFSdWxlKCkpCi0gICAgICAgIHJlcG9y
dE1lZGlhUXVlcnlXYXJuaW5nSWZOZWVkZWQoc2luZ2xlT3duZXJEb2N1bWVudCgpLCBzdGF0aWNf
Y2FzdDxTdHlsZVJ1bGVNZWRpYSo+KHJ1bGUuZ2V0KCkpLT5tZWRpYVF1ZXJpZXMoKSk7CisgICAg
aWYgKGlzPFN0eWxlUnVsZU1lZGlhPigqcnVsZSkpCisgICAgICAgIHJlcG9ydE1lZGlhUXVlcnlX
YXJuaW5nSWZOZWVkZWQoc2luZ2xlT3duZXJEb2N1bWVudCgpLCBkb3duY2FzdDxTdHlsZVJ1bGVN
ZWRpYT4oKnJ1bGUpLm1lZGlhUXVlcmllcygpKTsKICNlbmRpZgogCiAgICAgLy8gTk9URTogVGhl
IHNlbGVjdG9yIGxpc3QgaGFzIHRvIGZpdCBpbnRvIFJ1bGVEYXRhLiA8aHR0cDovL3dlYmtpdC5v
cmcvYi8xMTgzNjk+CiAgICAgLy8gSWYgd2UncmUgYWRkaW5nIGEgcnVsZSB3aXRoIGEgaHVnZSBu
dW1iZXIgb2Ygc2VsZWN0b3JzLCBzcGxpdCBpdCB1cCBpbnRvIG11bHRpcGxlIHJ1bGVzCi0gICAg
aWYgKHJ1bGUtPmlzU3R5bGVSdWxlKCkgJiYgdG9TdHlsZVJ1bGUocnVsZS5nZXQoKSktPnNlbGVj
dG9yTGlzdCgpLmNvbXBvbmVudENvdW50KCkgPiBSdWxlRGF0YTo6bWF4aW11bVNlbGVjdG9yQ29t
cG9uZW50Q291bnQpIHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBydWxlcyA9
IHRvU3R5bGVSdWxlKHJ1bGUuZ2V0KCkpLT5zcGxpdEludG9NdWx0aXBsZVJ1bGVzV2l0aE1heGlt
dW1TZWxlY3RvckNvbXBvbmVudENvdW50KFJ1bGVEYXRhOjptYXhpbXVtU2VsZWN0b3JDb21wb25l
bnRDb3VudCk7CisgICAgaWYgKGlzPFN0eWxlUnVsZT4oKnJ1bGUpICYmIGRvd25jYXN0PFN0eWxl
UnVsZT4oKnJ1bGUpLnNlbGVjdG9yTGlzdCgpLmNvbXBvbmVudENvdW50KCkgPiBSdWxlRGF0YTo6
bWF4aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQpIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxT
dHlsZVJ1bGU+PiBydWxlcyA9IGRvd25jYXN0PFN0eWxlUnVsZT4oKnJ1bGUpLnNwbGl0SW50b011
bHRpcGxlUnVsZXNXaXRoTWF4aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQoUnVsZURhdGE6Om1h
eGltdW1TZWxlY3RvckNvbXBvbmVudENvdW50KTsKICAgICAgICAgbV9jaGlsZFJ1bGVzLmFwcGVu
ZFZlY3RvcihydWxlcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMjEsMTYgKzIyMSwx
NiBAQCBib29sIFN0eWxlU2hlZXRDb250ZW50czo6d3JhcHBlckluc2VydFJ1bGUoUGFzc1JlZlB0
cjxTdHlsZVJ1bGVCYXNlPiBydWxlLCB1bnNpZwogICAgIAogICAgIGlmIChjaGlsZFZlY3Rvcklu
ZGV4IDwgbV9pbXBvcnRSdWxlcy5zaXplKCkgfHwgKGNoaWxkVmVjdG9ySW5kZXggPT0gbV9pbXBv
cnRSdWxlcy5zaXplKCkgJiYgcnVsZS0+aXNJbXBvcnRSdWxlKCkpKSB7CiAgICAgICAgIC8vIElu
c2VydGluZyBub24taW1wb3J0IHJ1bGUgYmVmb3JlIEBpbXBvcnQgaXMgbm90IGFsbG93ZWQuCi0g
ICAgICAgIGlmICghcnVsZS0+aXNJbXBvcnRSdWxlKCkpCisgICAgICAgIGlmICghaXM8U3R5bGVS
dWxlSW1wb3J0PigqcnVsZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1f
aW1wb3J0UnVsZXMuaW5zZXJ0KGNoaWxkVmVjdG9ySW5kZXgsIHN0YXRpY19jYXN0PFN0eWxlUnVs
ZUltcG9ydCo+KHJ1bGUuZ2V0KCkpKTsKKyAgICAgICAgbV9pbXBvcnRSdWxlcy5pbnNlcnQoY2hp
bGRWZWN0b3JJbmRleCwgZG93bmNhc3Q8U3R5bGVSdWxlSW1wb3J0PihydWxlLmdldCgpKSk7CiAg
ICAgICAgIG1faW1wb3J0UnVsZXNbY2hpbGRWZWN0b3JJbmRleF0tPnNldFBhcmVudFN0eWxlU2hl
ZXQodGhpcyk7CiAgICAgICAgIG1faW1wb3J0UnVsZXNbY2hpbGRWZWN0b3JJbmRleF0tPnJlcXVl
c3RTdHlsZVNoZWV0KCk7CiAgICAgICAgIC8vIEZJWE1FOiBTdHlsZXNoZWV0IGRvZXNuJ3QgYWN0
dWFsbHkgY2hhbmdlIG1lYW5pbmdmdWxseSBiZWZvcmUgdGhlIGltcG9ydGVkIHNoZWV0cyBhcmUg
bG9hZGVkLgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgLy8gSW5zZXJ0aW5nIEBp
bXBvcnQgcnVsZSBhZnRlciBhIG5vbi1pbXBvcnQgcnVsZSBpcyBub3QgYWxsb3dlZC4KLSAgICBp
ZiAocnVsZS0+aXNJbXBvcnRSdWxlKCkpCisgICAgaWYgKGlzPFN0eWxlUnVsZUltcG9ydD4oKnJ1
bGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2hpbGRWZWN0b3JJbmRleCAtPSBtX2lt
cG9ydFJ1bGVzLnNpemUoKTsKICAKQEAgLTQxMCw0MiArNDEwLDM5IEBAIHZvaWQgU3R5bGVTaGVl
dENvbnRlbnRzOjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxz
KQogICAgIHdoaWxlICghc3R5bGVTaGVldFF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICBTdHls
ZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQgPSBzdHlsZVNoZWV0UXVldWUudGFrZUZpcnN0KCk7
CiAgICAgICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3R5bGVTaGVldC0+
bV9pbXBvcnRSdWxlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgU3R5bGVSdWxlSW1wb3J0
KiBpbXBvcnRSdWxlID0gc3R5bGVTaGVldC0+bV9pbXBvcnRSdWxlc1tpXS5nZXQoKTsKKyAgICAg
ICAgZm9yIChhdXRvJiBpbXBvcnRSdWxlIDogc3R5bGVTaGVldC0+bV9pbXBvcnRSdWxlcykgewog
ICAgICAgICAgICAgaWYgKGltcG9ydFJ1bGUtPnN0eWxlU2hlZXQoKSkgewogICAgICAgICAgICAg
ICAgIHN0eWxlU2hlZXRRdWV1ZS5hcHBlbmQoaW1wb3J0UnVsZS0+c3R5bGVTaGVldCgpKTsKICAg
ICAgICAgICAgICAgICBhZGRTdWJyZXNvdXJjZVVSTCh1cmxzLCBpbXBvcnRSdWxlLT5zdHlsZVNo
ZWV0KCktPmJhc2VVUkwoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0eWxlU2hlZXQtPm1fY2hpbGRSdWxlcy5zaXplKCk7ICsr
aSkgewotICAgICAgICAgICAgU3R5bGVSdWxlQmFzZSogcnVsZSA9IHN0eWxlU2hlZXQtPm1fY2hp
bGRSdWxlc1tpXS5nZXQoKTsKLSAgICAgICAgICAgIGlmIChydWxlLT5pc1N0eWxlUnVsZSgpKQot
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PFN0eWxlUnVsZSo+KHJ1bGUpLT5wcm9wZXJ0aWVz
KCkuYWRkU3VicmVzb3VyY2VTdHlsZVVSTHModXJscywgdGhpcyk7Ci0gICAgICAgICAgICBlbHNl
IGlmIChydWxlLT5pc0ZvbnRGYWNlUnVsZSgpKQotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PFN0eWxlUnVsZUZvbnRGYWNlKj4ocnVsZSktPnByb3BlcnRpZXMoKS5hZGRTdWJyZXNvdXJjZVN0
eWxlVVJMcyh1cmxzLCB0aGlzKTsKKyAgICAgICAgZm9yIChhdXRvJiBydWxlIDogc3R5bGVTaGVl
dC0+bV9jaGlsZFJ1bGVzKSB7CisgICAgICAgICAgICBpZiAoaXM8U3R5bGVSdWxlPigqcnVsZSkp
CisgICAgICAgICAgICAgICAgZG93bmNhc3Q8U3R5bGVSdWxlPigqcnVsZSkucHJvcGVydGllcygp
LmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKHVybHMsIHRoaXMpOworICAgICAgICAgICAgZWxzZSBp
ZiAoaXM8U3R5bGVSdWxlRm9udEZhY2U+KCpydWxlKSkKKyAgICAgICAgICAgICAgICBkb3duY2Fz
dDxTdHlsZVJ1bGVGb250RmFjZT4oKnJ1bGUpLnByb3BlcnRpZXMoKS5hZGRTdWJyZXNvdXJjZVN0
eWxlVVJMcyh1cmxzLCB0aGlzKTsKICAgICAgICAgfQogICAgIH0KIH0KIAogc3RhdGljIGJvb2wg
Y2hpbGRSdWxlc0hhdmVGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBydWxlcykKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcnVsZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgU3R5bGVSdWxlQmFzZSog
cnVsZSA9IHJ1bGVzW2ldLmdldCgpOworICAgIGZvciAoYXV0byYgcnVsZSA6IHJ1bGVzKSB7CiAg
ICAgICAgIHN3aXRjaCAocnVsZS0+dHlwZSgpKSB7CiAgICAgICAgIGNhc2UgU3R5bGVSdWxlQmFz
ZTo6U3R5bGU6Ci0gICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Y29uc3QgU3R5bGVSdWxlKj4o
cnVsZSktPnByb3BlcnRpZXMoKS5oYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkpCisg
ICAgICAgICAgICBpZiAoZG93bmNhc3Q8U3R5bGVSdWxlPigqcnVsZSkucHJvcGVydGllcygpLmhh
c0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFN0eWxlUnVsZUJhc2U6OkZv
bnRGYWNlOgotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGNvbnN0IFN0eWxlUnVsZUZvbnRG
YWNlKj4ocnVsZSktPnByb3BlcnRpZXMoKS5oYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2Vz
KCkpCisgICAgICAgICAgICBpZiAoZG93bmNhc3Q8U3R5bGVSdWxlRm9udEZhY2U+KCpydWxlKS5w
cm9wZXJ0aWVzKCkuaGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpKQogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3R5
bGVSdWxlQmFzZTo6TWVkaWE6Ci0gICAgICAgICAgICBpZiAoY2hpbGRSdWxlc0hhdmVGYWlsZWRP
ckNhbmNlbGVkU3VicmVzb3VyY2VzKHN0YXRpY19jYXN0PGNvbnN0IFN0eWxlUnVsZU1lZGlhKj4o
cnVsZSktPmNoaWxkUnVsZXMoKSkpCisgICAgICAgICAgICBpZiAoY2hpbGRSdWxlc0hhdmVGYWls
ZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKGRvd25jYXN0PFN0eWxlUnVsZU1lZGlhPigqcnVsZSku
Y2hpbGRSdWxlcygpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFN0eWxlUnVsZUJhc2U6OlJlZ2lvbjoKLSAgICAgICAgICAg
IGlmIChjaGlsZFJ1bGVzSGF2ZUZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoc3RhdGljX2Nh
c3Q8Y29uc3QgU3R5bGVSdWxlUmVnaW9uKj4ocnVsZSktPmNoaWxkUnVsZXMoKSkpCisgICAgICAg
ICAgICBpZiAoY2hpbGRSdWxlc0hhdmVGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKGRvd25j
YXN0PFN0eWxlUnVsZVJlZ2lvbj4oKnJ1bGUpLmNoaWxkUnVsZXMoKSkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdHlsZVJ1
bGVCYXNlOjpJbXBvcnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
Vmlld3BvcnRSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NWaWV3cG9ydFJ1
bGUuY3BwCmluZGV4IGFlNGEwYTUxNDg0MWIxOGQwZGVhOTM3YmU2ODE5ODU5NjU2MmIwNzYuLmNi
ZDE3MmYxOWNhZTZlZTRkYWNkYTMxNGQ3YWZkYmUwNDkyY2ZkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwCkBAIC03Nyw4ICs3Nyw3IEBAIFN0cmlu
ZyBXZWJLaXRDU1NWaWV3cG9ydFJ1bGU6OmNzc1RleHQoKSBjb25zdAogCiB2b2lkIFdlYktpdENT
U1ZpZXdwb3J0UnVsZTo6cmVhdHRhY2goU3R5bGVSdWxlQmFzZSYgcnVsZSkKIHsKLSAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihydWxlLmlzVmlld3BvcnRSdWxlKCkpOwotICAg
IG1fdmlld3BvcnRSdWxlID0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlVmlld3BvcnQmPihydWxlKTsK
KyAgICBtX3ZpZXdwb3J0UnVsZSA9IGRvd25jYXN0PFN0eWxlUnVsZVZpZXdwb3J0PihydWxlKTsK
IAogICAgIGlmIChtX3Byb3BlcnRpZXNDU1NPTVdyYXBwZXIpCiAgICAgICAgIG1fcHJvcGVydGll
c0NTU09NV3JhcHBlci0+cmVhdHRhY2gobV92aWV3cG9ydFJ1bGUtPm11dGFibGVQcm9wZXJ0aWVz
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAK
aW5kZXggZjgxNGJlNDRmOWUxNzEyODFlZTNjYzdmZDg0ODk4MGQ4MWE4YjA5Ny4uNjA5NzYyMzg1
NjliNmNmZDZhOTAxM2FjMmY2ODI5ZDViN2YwNGI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0xMDQ0LDE3ICsxMDQ0LDEzIEBAIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpSdWxlTWF0Y2g+PiBJbnNwCiAgICAgU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRl
eHQgY29udGV4dChTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OkNvbGxlY3RpbmdSdWxlcyk7CiAgICAg
U2VsZWN0b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlcihlbGVtZW50LT5kb2N1bWVudCgpKTsKIAot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXRjaGVkUnVsZXMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgaWYgKCFtYXRjaGVkUnVsZXNbaV0tPmlzU3R5bGVSdWxlKCkpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLQotICAgICAgICBTdHlsZVJ1bGUqIG1hdGNoZWRTdHlsZVJ1bGUgPSBzdGF0
aWNfY2FzdDxTdHlsZVJ1bGUqPihtYXRjaGVkUnVsZXNbaV0uZ2V0KCkpOwotICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBydWxlT2JqZWN0ID0gYnVpbGRP
YmplY3RGb3JSdWxlKG1hdGNoZWRTdHlsZVJ1bGUsIHN0eWxlUmVzb2x2ZXIpOworICAgIGZvciAo
YXV0byYgbWF0Y2hlZFJ1bGUgOiBtYXRjaGVkUnVsZXMpIHsKKyAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gcnVsZU9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9y
UnVsZShtYXRjaGVkUnVsZS5nZXQoKSwgc3R5bGVSZXNvbHZlcik7CiAgICAgICAgIGlmICghcnVs
ZU9iamVjdCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiBtYXRjaGluZ1NlbGVjdG9ycyA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PGludD46OmNyZWF0ZSgpOwotICAgICAgICBjb25zdCBDU1NTZWxlY3Rv
ckxpc3QmIHNlbGVjdG9yTGlzdCA9IG1hdGNoZWRTdHlsZVJ1bGUtPnNlbGVjdG9yTGlzdCgpOwor
ICAgICAgICBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCA9IG1hdGNoZWRSdWxl
LT5zZWxlY3Rvckxpc3QoKTsKICAgICAgICAgbG9uZyBpbmRleCA9IDA7CiAgICAgICAgIGZvciAo
Y29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZpcnN0KCk7IHNlbGVj
dG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxlY3RvcikpIHsKICAgICAg
ICAgICAgIHVuc2lnbmVkIGlnbm9yZWRTcGVjaWZpY2l0eTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>