<?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>119596</bug_id>
          
          <creation_ts>2013-08-08 14:33:38 -0700</creation_ts>
          <short_desc>StyleRule*::properties() should return const references.</short_desc>
          <delta_ts>2013-08-09 03:00:22 -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>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="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>915597</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-08-08 14:33:38 -0700</bug_when>
    <thetext>Rules should always have properties inside them, so we should return const references instead of pointers.
This will expose pointless null checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915599</commentid>
    <comment_count>1</comment_count>
      <attachid>208371</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-08-08 14:39:07 -0700</bug_when>
    <thetext>Created attachment 208371
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915600</commentid>
    <comment_count>2</comment_count>
      <attachid>208371</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-08 14:44:58 -0700</bug_when>
    <thetext>Comment on attachment 208371
Patch

Attachment 208371 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1420423</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915601</commentid>
    <comment_count>3</comment_count>
      <attachid>208371</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-08 14:46:27 -0700</bug_when>
    <thetext>Comment on attachment 208371
Patch

Attachment 208371 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1432289</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915603</commentid>
    <comment_count>4</comment_count>
      <attachid>208371</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-08 14:47:31 -0700</bug_when>
    <thetext>Comment on attachment 208371
Patch

Attachment 208371 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1434273</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915605</commentid>
    <comment_count>5</comment_count>
      <attachid>208371</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-08 14:51:34 -0700</bug_when>
    <thetext>Comment on attachment 208371
Patch

Attachment 208371 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1367534</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915634</commentid>
    <comment_count>6</comment_count>
      <attachid>208371</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-08-08 16:00:51 -0700</bug_when>
    <thetext>Comment on attachment 208371
Patch

Keyframe rules appear to be the exception here. Needs some tlc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915733</commentid>
    <comment_count>7</comment_count>
      <attachid>208407</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-08-09 02:20:36 -0700</bug_when>
    <thetext>Created attachment 208407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915735</commentid>
    <comment_count>8</comment_count>
      <attachid>208407</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-08-09 02:23:04 -0700</bug_when>
    <thetext>Comment on attachment 208407
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915736</commentid>
    <comment_count>9</comment_count>
      <attachid>208407</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-09 02:29:15 -0700</bug_when>
    <thetext>Comment on attachment 208407
Patch

Attachment 208407 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1401124</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915737</commentid>
    <comment_count>10</comment_count>
      <attachid>208407</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-09 02:30:07 -0700</bug_when>
    <thetext>Comment on attachment 208407
Patch

Attachment 208407 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1414278</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915742</commentid>
    <comment_count>11</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-08-09 03:00:22 -0700</bug_when>
    <thetext>Committed r153880: &lt;http://trac.webkit.org/changeset/153880&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208371</attachid>
            <date>2013-08-08 14:39:07 -0700</date>
            <delta_ts>2013-08-08 16:00:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119596.diff</filename>
            <type>text/plain</type>
            <size>27131</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MThhOTU2Li4xNDM4NTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMg
QEAKKzIwMTMtMDgtMDggIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFN0eWxlUnVsZSo6OnByb3BlcnRpZXMoKSBzaG91bGQgcmV0dXJuIGNvbnN0IHJlZmVyZW5j
ZXMuCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzExOTU5Nj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFN0eWxlUnVsZTo6cHJvcGVy
dGllcygpICYgZnJpZW5kcyByZXR1cm4gY29uc3QtcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50
ZXJzLgorICAgICAgICBUaGlzIGV4cG9zZWQgc29tZSBwb2ludGxlc3MgbnVsbCBjaGVja2luZywg
c2luY2UgcnVsZXMgc2hvdWxkIGFsd2F5cyBoYXZlIHByb3BlcnRpZXMuCisKKyAgICAgICAgKiBj
c3MvQ1NTRm9udEZhY2VSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlUnVs
ZTo6Y3NzVGV4dCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZSk6CisgICAgICAgICog
Y3NzL0NTU1BhZ2VSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhZ2VSdWxlOjpjc3NU
ZXh0KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlUnVsZTo6Y3NzVGV4dCk6CisgICAgICAgICogY3NzL0VsZW1lbnRSdWxlQ29sbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxlZnRUb1JpZ2h0RGVjbGFyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6cmlnaHRUb0xlZnREZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6YWRkRWxlbWVudFN0eWxlUHJvcGVydGllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6ZG9Db2xsZWN0TWF0Y2hpbmdSdWxl
c0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9QYWdlUnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlUnVsZUNvbGxlY3Rvcjo6bWF0Y2hQYWdlUnVsZXNGb3JMaXN0KToKKyAg
ICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRh
YmxlU3R5bGVQcm9wZXJ0eVNldDo6bWVyZ2VBbmRPdmVycmlkZU9uQ29uZmxpY3QpOgorICAgICAg
ICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0Lmg6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6TWF0Y2hSZXN1bHQ6OmFkZE1h
dGNoZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxl
Rm9yS2V5ZnJhbWUpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgICog
Y3NzL1N0eWxlUnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlOjpwcm9wZXJ0aWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUZvbnRGYWNlOjpwcm9wZXJ0aWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZVBhZ2U6OnByb3BlcnRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSdWxlVmlld3BvcnQ6OnByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSdWxlRmlsdGVyOjpwcm9wZXJ0aWVzKToKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldENv
bnRlbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb250ZW50czo6YWRkU3Vi
cmVzb3VyY2VTdHlsZVVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6Y2hpbGRSdWxlc0hhdmVGYWls
ZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTRmlsdGVy
UnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NGaWx0ZXJSdWxlOjpjc3NUZXh0
KToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmg6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUtleWZyYW1lOjpwcm9wZXJ0aWVzKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NT
Vmlld3BvcnRSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1ZpZXdwb3J0UnVs
ZTo6Y3NzVGV4dCk6CisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZVRvTm9k
ZVJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbik6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6cmV2YWxpZGF0ZVN0eWxlKToKKyAgICAgICAg
KiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxp
emVyOjpyZXRyaWV2ZVJlc291cmNlc0ZvclJ1bGUpOgorICAgICAgICAqIHN2Zy9TVkdGb250RmFj
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VFbGVtZW50Ojpmb250
RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlRWxlbWVudDo6cmVidWlsZEZv
bnRGYWNlKToKKwogMjAxMy0wOC0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkBh
cHBsZS5jb20+CiAKICAgICAgICAgV29yayB0b3dhcmRzIFdlYkdMIG9uIEFwcGxlV2luIHBvcnQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VSdWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVJ1bGUuY3BwCmluZGV4IGE1MWViYjkuLjVlNjg0
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVJ1bGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVJ1bGUuY3BwCkBAIC01Miw3ICs1Miw3
IEBAIFN0cmluZyBDU1NGb250RmFjZVJ1bGU6OmNzc1RleHQoKSBjb25zdAogewogICAgIFN0cmlu
Z0J1aWxkZXIgcmVzdWx0OwogICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJAZm9udC1mYWNlIHsg
Iik7Ci0gICAgU3RyaW5nIGRlc2NzID0gbV9mb250RmFjZVJ1bGUtPnByb3BlcnRpZXMoKS0+YXNU
ZXh0KCk7CisgICAgU3RyaW5nIGRlc2NzID0gbV9mb250RmFjZVJ1bGUtPnByb3BlcnRpZXMoKS5h
c1RleHQoKTsKICAgICByZXN1bHQuYXBwZW5kKGRlc2NzKTsKICAgICBpZiAoIWRlc2NzLmlzRW1w
dHkoKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmNwcAppbmRleCAzNTFkNDQzLi5kMjE3ZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udFNlbGVjdG9yLmNwcApAQCAtOTIsMTAgKzkyLDEwIEBAIGJvb2wgQ1NTRm9udFNlbGVj
dG9yOjppc0VtcHR5KCkgY29uc3QKIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1
bGUoY29uc3QgU3R5bGVSdWxlRm9udEZhY2UqIGZvbnRGYWNlUnVsZSkKIHsKICAgICAvLyBPYnRh
aW4gdGhlIGZvbnQtZmFtaWx5IHByb3BlcnR5IGFuZCB0aGUgc3JjIHByb3BlcnR5LiAgQm90aCBt
dXN0IGJlIGRlZmluZWQuCi0gICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUgPSBmb250
RmFjZVJ1bGUtPnByb3BlcnRpZXMoKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGZvbnRGYW1pbHkg
PSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpOwotICAg
IFJlZlB0cjxDU1NWYWx1ZT4gc3JjID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJv
cGVydHlTcmMpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdW5pY29kZVJhbmdlID0gc3R5bGUtPmdl
dFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2UpOworICAgIGNvbnN0IFN0
eWxlUHJvcGVydHlTZXQmIHN0eWxlID0gZm9udEZhY2VSdWxlLT5wcm9wZXJ0aWVzKCk7CisgICAg
UmVmUHRyPENTU1ZhbHVlPiBmb250RmFtaWx5ID0gc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShD
U1NQcm9wZXJ0eUZvbnRGYW1pbHkpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gc3JjID0gc3R5bGUu
Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVNyYyk7CisgICAgUmVmUHRyPENTU1ZhbHVl
PiB1bmljb2RlUmFuZ2UgPSBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5VW5p
Y29kZVJhbmdlKTsKICAgICBpZiAoIWZvbnRGYW1pbHkgfHwgIXNyYyB8fCAhZm9udEZhbWlseS0+
aXNWYWx1ZUxpc3QoKSB8fCAhc3JjLT5pc1ZhbHVlTGlzdCgpIHx8ICh1bmljb2RlUmFuZ2UgJiYg
IXVuaWNvZGVSYW5nZS0+aXNWYWx1ZUxpc3QoKSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTEx
LDcgKzExMSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUoY29uc3Qg
U3R5bGVSdWxlRm9udEZhY2UqIGZvbnRGYWNlUnVsZSkKIAogICAgIHVuc2lnbmVkIHRyYWl0c01h
c2sgPSAwOwogCi0gICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gZm9udFN0eWxlID0gc3R5bGUtPmdl
dFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250U3R5bGUpKSB7CisgICAgaWYgKFJlZlB0
cjxDU1NWYWx1ZT4gZm9udFN0eWxlID0gc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9w
ZXJ0eUZvbnRTdHlsZSkpIHsKICAgICAgICAgaWYgKCFmb250U3R5bGUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgQ1NT
Rm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUoY29uc3QgU3R5bGVSdWxlRm9udEZhY2UqIGZv
bnRGYWNlUnVsZSkKICAgICB9IGVsc2UKICAgICAgICAgdHJhaXRzTWFzayB8PSBGb250U3R5bGVO
b3JtYWxNYXNrOwogCi0gICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gZm9udFdlaWdodCA9IHN0eWxl
LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFdlaWdodCkpIHsKKyAgICBpZiAo
UmVmUHRyPENTU1ZhbHVlPiBmb250V2VpZ2h0ID0gc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShD
U1NQcm9wZXJ0eUZvbnRXZWlnaHQpKSB7CiAgICAgICAgIGlmICghZm9udFdlaWdodC0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNjksNyArMTY5LDcgQEAg
dm9pZCBDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZShjb25zdCBTdHlsZVJ1bGVGb250
RmFjZSogZm9udEZhY2VSdWxlKQogICAgIH0gZWxzZQogICAgICAgICB0cmFpdHNNYXNrIHw9IEZv
bnRXZWlnaHQ0MDBNYXNrOwogCi0gICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gZm9udFZhcmlhbnQg
PSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50KSkgewor
ICAgIGlmIChSZWZQdHI8Q1NTVmFsdWU+IGZvbnRWYXJpYW50ID0gc3R5bGUuZ2V0UHJvcGVydHlD
U1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50KSkgewogICAgICAgICAvLyBmb250LXZhcmlh
bnQgZGVzY3JpcHRvciBjYW4gYmUgYSB2YWx1ZSBsaXN0LgogICAgICAgICBpZiAoZm9udFZhcmlh
bnQtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlz
dD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFnZVJ1bGUuY3BwCmluZGV4IDA4ZWIxNGMuLmZmOGNkYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhZ2VSdWxlLmNwcApAQCAtODYsNyArODYsNyBAQCBTdHJpbmcgQ1NTUGFnZVJ1bGU6OmNz
c1RleHQoKSBjb25zdAogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIHJlc3VsdC5hcHBl
bmQoc2VsZWN0b3JUZXh0KCkpOwogICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgeyAiKTsKLSAg
ICBTdHJpbmcgZGVjbHMgPSBtX3BhZ2VSdWxlLT5wcm9wZXJ0aWVzKCktPmFzVGV4dCgpOworICAg
IFN0cmluZyBkZWNscyA9IG1fcGFnZVJ1bGUtPnByb3BlcnRpZXMoKS5hc1RleHQoKTsKICAgICBy
ZXN1bHQuYXBwZW5kKGRlY2xzKTsKICAgICBpZiAoIWRlY2xzLmlzRW1wdHkoKSkKICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnICcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcAppbmRleCBi
ZmFiZTUxLi41MDBiZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVS
dWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcApAQCAtMTE4
LDcgKzExOCw3IEBAIFN0cmluZyBDU1NTdHlsZVJ1bGU6OmNzc1RleHQoKSBjb25zdAogICAgIFN0
cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIHJlc3VsdC5hcHBlbmQoc2VsZWN0b3JUZXh0KCkpOwog
ICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgeyAiKTsKLSAgICBTdHJpbmcgZGVjbHMgPSBtX3N0
eWxlUnVsZS0+cHJvcGVydGllcygpLT5hc1RleHQoKTsKKyAgICBTdHJpbmcgZGVjbHMgPSBtX3N0
eWxlUnVsZS0+cHJvcGVydGllcygpLmFzVGV4dCgpOwogICAgIHJlc3VsdC5hcHBlbmQoZGVjbHMp
OwogICAgIGlmICghZGVjbHMuaXNFbXB0eSgpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAppbmRleCAyMDk0
MjNlLi5hYzhhZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVD
b2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rv
ci5jcHAKQEAgLTQ2LDIwICs0NiwyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBTdHlsZVByb3BlcnR5U2V0KiBsZWZ0VG9SaWdodERlY2xhcmF0aW9uKCkKK3N0YXRpYyBjb25z
dCBTdHlsZVByb3BlcnR5U2V0JiBsZWZ0VG9SaWdodERlY2xhcmF0aW9uKCkKIHsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4sIGxlZnRUb1Jp
Z2h0RGVjbCwgKE11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKSkpOworICAgIHN0YXRp
YyBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldCogbGVmdFRvUmlnaHREZWNsID0gTXV0YWJsZVN0eWxl
UHJvcGVydHlTZXQ6OmNyZWF0ZSgpLmxlYWtSZWYoKTsKICAgICBpZiAobGVmdFRvUmlnaHREZWNs
LT5pc0VtcHR5KCkpCiAgICAgICAgIGxlZnRUb1JpZ2h0RGVjbC0+c2V0UHJvcGVydHkoQ1NTUHJv
cGVydHlEaXJlY3Rpb24sIENTU1ZhbHVlTHRyKTsKLSAgICByZXR1cm4gbGVmdFRvUmlnaHREZWNs
LmdldCgpOworICAgIHJldHVybiAqbGVmdFRvUmlnaHREZWNsOwogfQogCi1zdGF0aWMgU3R5bGVQ
cm9wZXJ0eVNldCogcmlnaHRUb0xlZnREZWNsYXJhdGlvbigpCitzdGF0aWMgY29uc3QgU3R5bGVQ
cm9wZXJ0eVNldCYgcmlnaHRUb0xlZnREZWNsYXJhdGlvbigpCiB7Ci0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ+LCByaWdodFRvTGVmdERlY2ws
IChNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCkpKTsKKyAgICBzdGF0aWMgTXV0YWJs
ZVN0eWxlUHJvcGVydHlTZXQqIHJpZ2h0VG9MZWZ0RGVjbCA9IE11dGFibGVTdHlsZVByb3BlcnR5
U2V0OjpjcmVhdGUoKS5sZWFrUmVmKCk7CiAgICAgaWYgKHJpZ2h0VG9MZWZ0RGVjbC0+aXNFbXB0
eSgpKQogICAgICAgICByaWdodFRvTGVmdERlY2wtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGly
ZWN0aW9uLCBDU1NWYWx1ZVJ0bCk7Ci0gICAgcmV0dXJuIHJpZ2h0VG9MZWZ0RGVjbC5nZXQoKTsK
KyAgICByZXR1cm4gKnJpZ2h0VG9MZWZ0RGVjbDsKIH0KIAogU3R5bGVSZXNvbHZlcjo6TWF0Y2hS
ZXN1bHQmIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaGVkUmVzdWx0KCkKQEAgLTk1LDcgKzk1
LDcgQEAgaW5saW5lIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmFkZEVsZW1lbnRTdHlsZVBy
b3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVMKICAgICBtX3Jlc3VsdC5yYW5nZXMubGFzdEF1
dGhvclJ1bGUgPSBtX3Jlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5zaXplKCk7CiAgICAgaWYgKG1f
cmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUgPT0gLTEpCiAgICAgICAgIG1fcmVzdWx0LnJh
bmdlcy5maXJzdEF1dGhvclJ1bGUgPSBtX3Jlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGU7Ci0g
ICAgbV9yZXN1bHQuYWRkTWF0Y2hlZFByb3BlcnRpZXMocHJvcGVydHlTZXQpOworICAgIG1fcmVz
dWx0LmFkZE1hdGNoZWRQcm9wZXJ0aWVzKCpwcm9wZXJ0eVNldCk7CiAgICAgaWYgKCFpc0NhY2hl
YWJsZSkKICAgICAgICAgbV9yZXN1bHQuaXNDYWNoZWFibGUgPSBmYWxzZTsKIH0KQEAgLTQxMyw4
ICs0MTMsOCBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpkb0NvbGxlY3RNYXRjaGluZ1J1
bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KgogICAgICAgICBQc2V1ZG9JZCBkeW5h
bWljUHNldWRvID0gTk9QU0VVRE87CiAgICAgICAgIGlmIChydWxlTWF0Y2hlcyhydWxlRGF0YSwg
bWF0Y2hSZXF1ZXN0LnNjb3BlLCBkeW5hbWljUHNldWRvKSkgewogICAgICAgICAgICAgLy8gSWYg
dGhlIHJ1bGUgaGFzIG5vIHByb3BlcnRpZXMgdG8gYXBwbHksIHRoZW4gaWdub3JlIGl0IGluIHRo
ZSBub24tZGVidWcgbW9kZS4KLSAgICAgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHBy
b3BlcnRpZXMgPSBydWxlLT5wcm9wZXJ0aWVzKCk7Ci0gICAgICAgICAgICBpZiAoIXByb3BlcnRp
ZXMgfHwgKHByb3BlcnRpZXMtPmlzRW1wdHkoKSAmJiAhbWF0Y2hSZXF1ZXN0LmluY2x1ZGVFbXB0
eVJ1bGVzKSkgeworICAgICAgICAgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCYgcHJvcGVydGll
cyA9IHJ1bGUtPnByb3BlcnRpZXMoKTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzLmlzRW1w
dHkoKSAmJiAhbWF0Y2hSZXF1ZXN0LmluY2x1ZGVFbXB0eVJ1bGVzKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGhhc0luc3BlY3RvckZyb250ZW5kcykKICAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNYXRjaFJ1bGUoY29va2llLCBmYWxzZSk7CiAgICAgICAg
ICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFnZVJ1
bGVDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmNw
cAppbmRleCBlNzY2ZTc2Li42MTFmMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
UGFnZVJ1bGVDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWdlUnVsZUNv
bGxlY3Rvci5jcHAKQEAgLTExOCw4ICsxMTgsOCBAQCB2b2lkIFBhZ2VSdWxlQ29sbGVjdG9yOjpt
YXRjaFBhZ2VSdWxlc0Zvckxpc3QoVmVjdG9yPFN0eWxlUnVsZVBhZ2UqPiYgbWF0Y2hlZFJ1bAog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gSWYgdGhlIHJ1bGUgaGFzIG5vIHBy
b3BlcnRpZXMgdG8gYXBwbHksIHRoZW4gaWdub3JlIGl0LgotICAgICAgICBjb25zdCBTdHlsZVBy
b3BlcnR5U2V0KiBwcm9wZXJ0aWVzID0gcnVsZS0+cHJvcGVydGllcygpOwotICAgICAgICBpZiAo
IXByb3BlcnRpZXMgfHwgcHJvcGVydGllcy0+aXNFbXB0eSgpKQorICAgICAgICBjb25zdCBTdHls
ZVByb3BlcnR5U2V0JiBwcm9wZXJ0aWVzID0gcnVsZS0+cHJvcGVydGllcygpOworICAgICAgICBp
ZiAocHJvcGVydGllcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICAvLyBBZGQgdGhpcyBydWxlIHRvIG91ciBsaXN0IG9mIG1hdGNoZWQgcnVsZXMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKaW5kZXggMDM2ZGE2Mi4uNWY3MTAzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApAQCAtMTAzNCwxMSArMTAzNCwx
MSBAQCBib29sIFN0eWxlUHJvcGVydHlTZXQ6Omhhc0NTU09NV3JhcHBlcigpIGNvbnN0CiAgICAg
cmV0dXJuIG1faXNNdXRhYmxlICYmIHN0YXRpY19jYXN0PGNvbnN0IE11dGFibGVTdHlsZVByb3Bl
cnR5U2V0Kj4odGhpcyktPm1fY3Nzb21XcmFwcGVyOwogfQogCi12b2lkIE11dGFibGVTdHlsZVBy
b3BlcnR5U2V0OjptZXJnZUFuZE92ZXJyaWRlT25Db25mbGljdChjb25zdCBTdHlsZVByb3BlcnR5
U2V0KiBvdGhlcikKK3ZvaWQgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ6Om1lcmdlQW5kT3ZlcnJp
ZGVPbkNvbmZsaWN0KGNvbnN0IFN0eWxlUHJvcGVydHlTZXQmIG90aGVyKQogewotICAgIHVuc2ln
bmVkIHNpemUgPSBvdGhlci0+cHJvcGVydHlDb3VudCgpOworICAgIHVuc2lnbmVkIHNpemUgPSBv
dGhlci5wcm9wZXJ0eUNvdW50KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7
ICsraSkKLSAgICAgICAgYWRkUGFyc2VkUHJvcGVydHkob3RoZXItPnByb3BlcnR5QXQoaSkudG9D
U1NQcm9wZXJ0eSgpKTsKKyAgICAgICAgYWRkUGFyc2VkUHJvcGVydHkob3RoZXIucHJvcGVydHlB
dChpKS50b0NTU1Byb3BlcnR5KCkpOwogfQogCiB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OmFkZFN1
YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBTdHlsZVNoZWV0Q29u
dGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnR5U2V0LmgKaW5kZXggYzc4NTI0Mi4uYzE3ZTEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0eVNldC5oCkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3Zl
RXF1aXZhbGVudFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCopOwogICAgIHZvaWQg
cmVtb3ZlRXF1aXZhbGVudFByb3BlcnRpZXMoY29uc3QgQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvciop
OwogCi0gICAgdm9pZCBtZXJnZUFuZE92ZXJyaWRlT25Db25mbGljdChjb25zdCBTdHlsZVByb3Bl
cnR5U2V0Kik7CisgICAgdm9pZCBtZXJnZUFuZE92ZXJyaWRlT25Db25mbGljdChjb25zdCBTdHls
ZVByb3BlcnR5U2V0Jik7CiAKICAgICB2b2lkIGNsZWFyKCk7CiAgICAgdm9pZCBwYXJzZURlY2xh
cmF0aW9uKGNvbnN0IFN0cmluZyYgc3R5bGVEZWNsYXJhdGlvbiwgU3R5bGVTaGVldENvbnRlbnRz
KiBjb250ZXh0U3R5bGVTaGVldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5k
ZXggNGUxZWI2MC4uZmUzZjg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApA
QCAtMjMzLDExICsyMzMsMTEgQEAgaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6OmNs
ZWFyKCkKICNlbmRpZgogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6Ok1hdGNoUmVzdWx0OjphZGRN
YXRjaGVkUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzLCBTdHls
ZVJ1bGUqIHJ1bGUsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUsIFByb3BlcnR5V2hpdGVsaXN0VHlw
ZSBwcm9wZXJ0eVdoaXRlbGlzdFR5cGUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6Ok1hdGNoUmVzdWx0
OjphZGRNYXRjaGVkUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0JiBwcm9wZXJ0aWVz
LCBTdHlsZVJ1bGUqIHJ1bGUsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUsIFByb3BlcnR5V2hpdGVs
aXN0VHlwZSBwcm9wZXJ0eVdoaXRlbGlzdFR5cGUpCiB7CiAgICAgbWF0Y2hlZFByb3BlcnRpZXMu
Z3JvdyhtYXRjaGVkUHJvcGVydGllcy5zaXplKCkgKyAxKTsKICAgICBTdHlsZVJlc29sdmVyOjpN
YXRjaGVkUHJvcGVydGllcyYgbmV3UHJvcGVydGllcyA9IG1hdGNoZWRQcm9wZXJ0aWVzLmxhc3Qo
KTsKLSAgICBuZXdQcm9wZXJ0aWVzLnByb3BlcnRpZXMgPSBjb25zdF9jYXN0PFN0eWxlUHJvcGVy
dHlTZXQqPihwcm9wZXJ0aWVzKTsKKyAgICBuZXdQcm9wZXJ0aWVzLnByb3BlcnRpZXMgPSBjb25z
dF9jYXN0PFN0eWxlUHJvcGVydHlTZXQqPigmcHJvcGVydGllcyk7CiAgICAgbmV3UHJvcGVydGll
cy5saW5rTWF0Y2hUeXBlID0gbGlua01hdGNoVHlwZTsKICAgICBuZXdQcm9wZXJ0aWVzLndoaXRl
bGlzdFR5cGUgPSBwcm9wZXJ0eVdoaXRlbGlzdFR5cGU7CiAgICAgbWF0Y2hlZFJ1bGVzLmFwcGVu
ZChydWxlKTsKQEAgLTEwMDQsOCArMTAwNCw3IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFN0
eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBSZW5kZXJTCiBQ
YXNzUmVmUHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvcktleWZyYW1lKGNv
bnN0IFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIGNvbnN0IFN0eWxlS2V5ZnJhbWUqIGtleWZy
YW1lLCBLZXlmcmFtZVZhbHVlJiBrZXlmcmFtZVZhbHVlKQogewogICAgIE1hdGNoUmVzdWx0IHJl
c3VsdDsKLSAgICBpZiAoa2V5ZnJhbWUtPnByb3BlcnRpZXMoKSkKLSAgICAgICAgcmVzdWx0LmFk
ZE1hdGNoZWRQcm9wZXJ0aWVzKGtleWZyYW1lLT5wcm9wZXJ0aWVzKCkpOworICAgIHJlc3VsdC5h
ZGRNYXRjaGVkUHJvcGVydGllcyhrZXlmcmFtZS0+cHJvcGVydGllcygpKTsKIAogICAgIEFTU0VS
VCghbV9zdGF0ZS5zdHlsZSgpKTsKIApAQCAtMTAxOCw4ICsxMDE3LDcgQEAgUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JLZXlmcmFtZShjb25zdCBSZW5kZXJT
dHlsZSogZWxlbWUKICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGJvdGhlciB3aXRoICFpbXBvcnRh
bnQuIFNpbmNlIHRoZXJlIGlzIG9ubHkgZXZlciBvbmUKICAgICAvLyBkZWNsLCB0aGVyZSdzIG5v
dGhpbmcgdG8gb3ZlcnJpZGUuIFNvIGp1c3QgYWRkIHRoZSBmaXJzdCBwcm9wZXJ0aWVzLgogICAg
IGJvb2wgaW5oZXJpdGVkT25seSA9IGZhbHNlOwotICAgIGlmIChrZXlmcmFtZS0+cHJvcGVydGll
cygpKQotICAgICAgICBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzPEhpZ2hQcmlvcml0eVByb3BlcnRp
ZXM+KHJlc3VsdCwgZmFsc2UsIDAsIHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5zaXplKCkgLSAx
LCBpbmhlcml0ZWRPbmx5KTsKKyAgICBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzPEhpZ2hQcmlvcml0
eVByb3BlcnRpZXM+KHJlc3VsdCwgZmFsc2UsIDAsIHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5z
aXplKCkgLSAxLCBpbmhlcml0ZWRPbmx5KTsKIAogICAgIC8vIElmIG91ciBmb250IGdvdCBkaXJ0
aWVkLCBnbyBhaGVhZCBhbmQgdXBkYXRlIGl0IG5vdy4KICAgICB1cGRhdGVGb250KCk7CkBAIC0x
MDI5LDggKzEwMjcsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpz
dHlsZUZvcktleWZyYW1lKGNvbnN0IFJlbmRlclN0eWxlKiBlbGVtZQogICAgICAgICBhcHBseVBy
b3BlcnR5KENTU1Byb3BlcnR5TGluZUhlaWdodCwgc3RhdGUubGluZUhlaWdodFZhbHVlKCkpOwog
CiAgICAgLy8gTm93IGRvIHJlc3Qgb2YgdGhlIHByb3BlcnRpZXMuCi0gICAgaWYgKGtleWZyYW1l
LT5wcm9wZXJ0aWVzKCkpCi0gICAgICAgIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXM8TG93UHJpb3Jp
dHlQcm9wZXJ0aWVzPihyZXN1bHQsIGZhbHNlLCAwLCByZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMu
c2l6ZSgpIC0gMSwgaW5oZXJpdGVkT25seSk7CisgICAgYXBwbHlNYXRjaGVkUHJvcGVydGllczxM
b3dQcmlvcml0eVByb3BlcnRpZXM+KHJlc3VsdCwgZmFsc2UsIDAsIHJlc3VsdC5tYXRjaGVkUHJv
cGVydGllcy5zaXplKCkgLSAxLCBpbmhlcml0ZWRPbmx5KTsKIAogICAgIC8vIElmIG91ciBmb250
IGdvdCBkaXJ0aWVkIGJ5IG9uZSBvZiB0aGUgbm9uLWVzc2VudGlhbCBmb250IHByb3BzLAogICAg
IC8vIGdvIGFoZWFkIGFuZCB1cGRhdGUgaXQgYSBzZWNvbmQgdGltZS4KQEAgLTEwNDAsMTUgKzEw
MzcsMTMgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JL
ZXlmcmFtZShjb25zdCBSZW5kZXJTdHlsZSogZWxlbWUKICAgICBsb2FkUGVuZGluZ1Jlc291cmNl
cygpOwogICAgIAogICAgIC8vIEFkZCBhbGwgdGhlIGFuaW1hdGluZyBwcm9wZXJ0aWVzIHRvIHRo
ZSBrZXlmcmFtZS4KLSAgICBpZiAoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGVEZWNsYXJh
dGlvbiA9IGtleWZyYW1lLT5wcm9wZXJ0aWVzKCkpIHsKLSAgICAgICAgdW5zaWduZWQgcHJvcGVy
dHlDb3VudCA9IHN0eWxlRGVjbGFyYXRpb24tPnByb3BlcnR5Q291bnQoKTsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5Q291bnQ7ICsraSkgewotICAgICAgICAgICAg
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eSA9IHN0eWxlRGVjbGFyYXRpb24tPnByb3BlcnR5QXQoaSku
aWQoKTsKLSAgICAgICAgICAgIC8vIFRpbWluZy1mdW5jdGlvbiB3aXRoaW4ga2V5ZnJhbWVzIGlz
IHNwZWNpYWwsIGJlY2F1c2UgaXQgaXMgbm90IGFuaW1hdGVkOyBpdCBqdXN0Ci0gICAgICAgICAg
ICAvLyBkZXNjcmliZXMgdGhlIHRpbWluZyBmdW5jdGlvbiBiZXR3ZWVuIHRoaXMga2V5ZnJhbWUg
YW5kIHRoZSBuZXh0LgotICAgICAgICAgICAgaWYgKHByb3BlcnR5ICE9IENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pCi0gICAgICAgICAgICAgICAga2V5ZnJhbWVWYWx1
ZS5hZGRQcm9wZXJ0eShwcm9wZXJ0eSk7Ci0gICAgICAgIH0KKyAgICB1bnNpZ25lZCBwcm9wZXJ0
eUNvdW50ID0ga2V5ZnJhbWUtPnByb3BlcnRpZXMoKS5wcm9wZXJ0eUNvdW50KCk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5Q291bnQ7ICsraSkgeworICAgICAgICBDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5ID0ga2V5ZnJhbWUtPnByb3BlcnRpZXMoKS5wcm9wZXJ0eUF0KGkp
LmlkKCk7CisgICAgICAgIC8vIFRpbWluZy1mdW5jdGlvbiB3aXRoaW4ga2V5ZnJhbWVzIGlzIHNw
ZWNpYWwsIGJlY2F1c2UgaXQgaXMgbm90IGFuaW1hdGVkOyBpdCBqdXN0CisgICAgICAgIC8vIGRl
c2NyaWJlcyB0aGUgdGltaW5nIGZ1bmN0aW9uIGJldHdlZW4gdGhpcyBrZXlmcmFtZSBhbmQgdGhl
IG5leHQuCisgICAgICAgIGlmIChwcm9wZXJ0eSAhPSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlv
blRpbWluZ0Z1bmN0aW9uKQorICAgICAgICAgICAga2V5ZnJhbWVWYWx1ZS5hZGRQcm9wZXJ0eShw
cm9wZXJ0eSk7CiAgICAgfQogCiAgICAgZG9jdW1lbnQoKS0+ZGlkQWNjZXNzU3R5bGVSZXNvbHZl
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggNjhiNTJjOC4uMmY3NTI5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC0zNjcsNyArMzY3LDcgQEAgcHVibGlj
OgogICAgICAgICBNYXRjaFJhbmdlcyByYW5nZXM7CiAgICAgICAgIGJvb2wgaXNDYWNoZWFibGU7
CiAKLSAgICAgICAgdm9pZCBhZGRNYXRjaGVkUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5
U2V0KiBwcm9wZXJ0aWVzLCBTdHlsZVJ1bGUqID0gMCwgdW5zaWduZWQgbGlua01hdGNoVHlwZSA9
IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hBbGwsIFByb3BlcnR5V2hpdGVsaXN0VHlwZSA9IFByb3Bl
cnR5V2hpdGVsaXN0Tm9uZSk7CisgICAgICAgIHZvaWQgYWRkTWF0Y2hlZFByb3BlcnRpZXMoY29u
c3QgU3R5bGVQcm9wZXJ0eVNldCYgcHJvcGVydGllcywgU3R5bGVSdWxlKiA9IDAsIHVuc2lnbmVk
IGxpbmtNYXRjaFR5cGUgPSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoQWxsLCBQcm9wZXJ0eVdoaXRl
bGlzdFR5cGUgPSBQcm9wZXJ0eVdoaXRlbGlzdE5vbmUpOwogICAgIH07CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSdWxlLmgKaW5kZXggYmZiNmYwYS4uOWZiNmFkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJ1bGUuaApAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICB+U3R5bGVSdWxlKCk7CiAK
ICAgICBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VsZWN0b3JMaXN0OyB9Ci0gICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGll
cygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGllcy5nZXQoKTsgfQorICAgIGNvbnN0IFN0eWxl
UHJvcGVydHlTZXQmIHByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiAqbV9wcm9wZXJ0aWVzOyB9
CiAgICAgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqIG11dGFibGVQcm9wZXJ0aWVzKCk7CiAgICAg
CiAgICAgdm9pZCBwYXJzZXJBZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFy
c2VyU2VsZWN0b3I+ID4mIHNlbGVjdG9ycykgeyBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9y
VmVjdG9yKHNlbGVjdG9ycyk7IH0KQEAgLTE1OCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgflN0eWxlUnVsZUZvbnRGYWNlKCk7CiAKLSAgICBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBw
cm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzLmdldCgpOyB9CisgICAgY29u
c3QgU3R5bGVQcm9wZXJ0eVNldCYgcHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuICptX3Byb3Bl
cnRpZXM7IH0KICAgICBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldCogbXV0YWJsZVByb3BlcnRpZXMo
KTsKIAogICAgIHZvaWQgc2V0UHJvcGVydGllcyhQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+
KTsKQEAgLTE4MCw3ICsxODAsNyBAQCBwdWJsaWM6CiAgICAgflN0eWxlUnVsZVBhZ2UoKTsKIAog
ICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0
b3JMaXN0LmZpcnN0KCk7IH0gICAgCi0gICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVy
dGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGllcy5nZXQoKTsgfQorICAgIGNvbnN0IFN0
eWxlUHJvcGVydHlTZXQmIHByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiAqbV9wcm9wZXJ0aWVz
OyB9CiAgICAgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqIG11dGFibGVQcm9wZXJ0aWVzKCk7CiAK
ICAgICB2b2lkIHBhcnNlckFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJz
ZXJTZWxlY3Rvcj4gPiYgc2VsZWN0b3JzKSB7IG1fc2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JW
ZWN0b3Ioc2VsZWN0b3JzKTsgfQpAQCAtMjkyLDcgKzI5Miw3IEBAIHB1YmxpYzoKIAogICAgIH5T
dHlsZVJ1bGVWaWV3cG9ydCgpOwogCi0gICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVy
dGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGllcy5nZXQoKTsgfQorICAgIGNvbnN0IFN0
eWxlUHJvcGVydHlTZXQmIHByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiAqbV9wcm9wZXJ0aWVz
OyB9CiAgICAgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqIG11dGFibGVQcm9wZXJ0aWVzKCk7CiAK
ICAgICB2b2lkIHNldFByb3BlcnRpZXMoUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0Pik7CkBA
IC0zMzYsNyArMzM2LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBmaWx0ZXJOYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJOYW1lOyB9CiAKLSAgICBjb25zdCBTdHlsZVByb3Bl
cnR5U2V0KiBwcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzLmdldCgpOyB9
CisgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCYgcHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJu
ICptX3Byb3BlcnRpZXM7IH0KICAgICBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldCogbXV0YWJsZVBy
b3BlcnRpZXMoKTsKIAogICAgIHZvaWQgc2V0UHJvcGVydGllcyhQYXNzUmVmUHRyPFN0eWxlUHJv
cGVydHlTZXQ+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29u
dGVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKaW5k
ZXggMDEwYTY1OC4uY2QyMDU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
U2hlZXRDb250ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250
ZW50cy5jcHAKQEAgLTQyMSw5ICs0MjEsOSBAQCB2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6YWRk
U3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdHlsZVNoZWV0LT5tX2NoaWxkUnVsZXMuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgICAgIFN0eWxlUnVsZUJhc2UqIHJ1bGUgPSBzdHlsZVNoZWV0LT5tX2No
aWxkUnVsZXNbaV0uZ2V0KCk7CiAgICAgICAgICAgICBpZiAocnVsZS0+aXNTdHlsZVJ1bGUoKSkK
LSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihydWxlKS0+cHJvcGVydGll
cygpLT5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzLCB0aGlzKTsKKyAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihydWxlKS0+cHJvcGVydGllcygpLmFkZFN1YnJlc291
cmNlU3R5bGVVUkxzKHVybHMsIHRoaXMpOwogICAgICAgICAgICAgZWxzZSBpZiAocnVsZS0+aXNG
b250RmFjZVJ1bGUoKSkKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxTdHlsZVJ1bGVGb250
RmFjZSo+KHJ1bGUpLT5wcm9wZXJ0aWVzKCktPmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKHVybHMs
IHRoaXMpOworICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PFN0eWxlUnVsZUZvbnRGYWNlKj4o
cnVsZSktPnByb3BlcnRpZXMoKS5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzLCB0aGlzKTsK
ICAgICAgICAgfQogICAgIH0KIH0KQEAgLTQzNCwxMSArNDM0LDExIEBAIHN0YXRpYyBib29sIGNo
aWxkUnVsZXNIYXZlRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcyhjb25zdCBWZWN0b3I8UmVm
UHRyPFN0eWxlCiAgICAgICAgIGNvbnN0IFN0eWxlUnVsZUJhc2UqIHJ1bGUgPSBydWxlc1tpXS5n
ZXQoKTsKICAgICAgICAgc3dpdGNoIChydWxlLT50eXBlKCkpIHsKICAgICAgICAgY2FzZSBTdHls
ZVJ1bGVCYXNlOjpTdHlsZToKLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxjb25zdCBTdHls
ZVJ1bGUqPihydWxlKS0+cHJvcGVydGllcygpLT5oYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3Vy
Y2VzKCkpCisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Y29uc3QgU3R5bGVSdWxlKj4ocnVs
ZSktPnByb3BlcnRpZXMoKS5oYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBTdHlsZVJ1bGVCYXNlOjpGb250RmFjZToKLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxj
b25zdCBTdHlsZVJ1bGVGb250RmFjZSo+KHJ1bGUpLT5wcm9wZXJ0aWVzKCktPmhhc0ZhaWxlZE9y
Q2FuY2VsZWRTdWJyZXNvdXJjZXMoKSkKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxjb25z
dCBTdHlsZVJ1bGVGb250RmFjZSo+KHJ1bGUpLT5wcm9wZXJ0aWVzKCkuaGFzRmFpbGVkT3JDYW5j
ZWxlZFN1YnJlc291cmNlcygpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3R5bGVSdWxlQmFzZTo6TWVkaWE6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyUnVsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyUnVsZS5jcHAKaW5kZXggODg0MWFhYi4uYjg4NDc5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclJ1bGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJSdWxlLmNwcApAQCAtNjcs
NyArNjcsNyBAQCBTdHJpbmcgV2ViS2l0Q1NTRmlsdGVyUnVsZTo6Y3NzVGV4dCgpIGNvbnN0CiAg
ICAgcmVzdWx0LmFwcGVuZChmaWx0ZXJOYW1lKTsKICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgi
IHsgIik7CiAKLSAgICBTdHJpbmcgZGVzY3MgPSBtX2ZpbHRlclJ1bGUtPnByb3BlcnRpZXMoKS0+
YXNUZXh0KCk7CisgICAgU3RyaW5nIGRlc2NzID0gbV9maWx0ZXJSdWxlLT5wcm9wZXJ0aWVzKCku
YXNUZXh0KCk7CiAgICAgcmVzdWx0LmFwcGVuZChkZXNjcyk7CiAgICAgaWYgKCFkZXNjcy5pc0Vt
cHR5KCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFtZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NLZXlmcmFtZVJ1bGUuaAppbmRleCAwMDEwZDhmLi40NTZhZDg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU0tleWZyYW1lUnVsZS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZ2V0S2V5cyhWZWN0b3I8ZmxvYXQ+JiBrZXlzKSBjb25zdCAgIHsg
cGFyc2VLZXlTdHJpbmcobV9rZXksIGtleXMpOyB9CiAgICAgCi0gICAgY29uc3QgU3R5bGVQcm9w
ZXJ0eVNldCogcHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGllcy5nZXQoKTsg
fQorICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQmIHByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVy
biAqbV9wcm9wZXJ0aWVzOyB9CiAgICAgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqIG11dGFibGVQ
cm9wZXJ0aWVzKCk7CiAgICAgdm9pZCBzZXRQcm9wZXJ0aWVzKFBhc3NSZWZQdHI8U3R5bGVQcm9w
ZXJ0eVNldD4pOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U1ZpZXdwb3J0UnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVmlld3BvcnRS
dWxlLmNwcAppbmRleCA5YzU4NDE5Li43NzJkMDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTVmlld3BvcnRSdWxlLmNwcApAQCAtNjUsNyArNjUsNyBAQCBTdHJpbmcgV2ViS2l0
Q1NTVmlld3BvcnRSdWxlOjpjc3NUZXh0KCkgY29uc3QKICAgICBTdHJpbmdCdWlsZGVyIHJlc3Vs
dDsKICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiQC13ZWJraXQtdmlld3BvcnQgeyAiKTsKIAot
ICAgIFN0cmluZyBkZWNscyA9IG1fdmlld3BvcnRSdWxlLT5wcm9wZXJ0aWVzKCktPmFzVGV4dCgp
OworICAgIFN0cmluZyBkZWNscyA9IG1fdmlld3BvcnRSdWxlLT5wcm9wZXJ0aWVzKCkuYXNUZXh0
KCk7CiAgICAgcmVzdWx0LmFwcGVuZChkZWNscyk7CiAgICAgaWYgKCFkZWNscy5pc0VtcHR5KCkp
CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
cHBseVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggZTdlNWUwOC4uOWVkOWI5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTc3MSw3ICs3NzEsNyBA
QCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlVG9Ob2RlUmFuZ2UoRWRp
dGluZ1N0eWxlKiBzdHlsZSwgUGFzc1JlZgogICAgICAgICAgICAgLy8gQWRkIHRvIHRoaXMgZWxl
bWVudCdzIGlubGluZSBzdHlsZSBhbmQgc2tpcCBvdmVyIGl0cyBjb250ZW50cy4KICAgICAgICAg
ICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChub2RlLmdldCgpKTsKICAg
ICAgICAgICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4gaW5saW5lU3R5bGUgPSBj
b3B5U3R5bGVPckNyZWF0ZUVtcHR5KGVsZW1lbnQtPmlubGluZVN0eWxlKCkpOwotICAgICAgICAg
ICAgaW5saW5lU3R5bGUtPm1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZsaWN0KHN0eWxlLT5zdHlsZSgp
KTsKKyAgICAgICAgICAgIGlubGluZVN0eWxlLT5tZXJnZUFuZE92ZXJyaWRlT25Db25mbGljdCgq
c3R5bGUtPnN0eWxlKCkpOwogICAgICAgICAgICAgc2V0Tm9kZUF0dHJpYnV0ZShlbGVtZW50LCBz
dHlsZUF0dHIsIGlubGluZVN0eWxlLT5hc1RleHQoKSk7CiAgICAgICAgICAgICBuZXh0ID0gTm9k
ZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4obm9kZS5nZXQoKSk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0
eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCA2
OWM0MjNlLi5iZThmZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3Bw
CkBAIC0xMTIzLDcgKzExMjMsNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21S
dWxlcyhTdHlsZWRFbGVtZW50KiBlbGVtZW50KQogICAgIC8vIFN0eWxlcyBmcm9tIHRoZSBpbmxp
bmUgc3R5bGUgZGVjbGFyYXRpb24sIGhlbGQgaW4gdGhlIHZhcmlhYmxlICJzdHlsZSIsIHRha2Ug
cHJlY2VkZW5jZSAKICAgICAvLyBvdmVyIHRob3NlIGZyb20gbWF0Y2hlZCBydWxlcy4KICAgICBp
ZiAobV9tdXRhYmxlU3R5bGUpCi0gICAgICAgIHN0eWxlRnJvbU1hdGNoZWRSdWxlcy0+bWVyZ2VB
bmRPdmVycmlkZU9uQ29uZmxpY3QobV9tdXRhYmxlU3R5bGUuZ2V0KCkpOworICAgICAgICBzdHls
ZUZyb21NYXRjaGVkUnVsZXMtPm1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZsaWN0KCptX211dGFibGVT
dHlsZSk7CiAKICAgICBjbGVhcigpOwogICAgIG1fbXV0YWJsZVN0eWxlID0gc3R5bGVGcm9tTWF0
Y2hlZFJ1bGVzOwpAQCAtMTE1Miw3ICsxMTUyLDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdl
U3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgbV9tdXRhYmxlU3R5bGUtPm1lcmdl
QW5kT3ZlcnJpZGVPbkNvbmZsaWN0KGZyb21Db21wdXRlZFN0eWxlLmdldCgpKTsKKyAgICBtX211
dGFibGVTdHlsZS0+bWVyZ2VBbmRPdmVycmlkZU9uQ29uZmxpY3QoKmZyb21Db21wdXRlZFN0eWxl
KTsKIH0KIAogc3RhdGljIHZvaWQgcmVtb3ZlUHJvcGVydGllc0luU3R5bGUoTXV0YWJsZVN0eWxl
UHJvcGVydHlTZXQqIHN0eWxlVG9SZW1vdmVQcm9wZXJ0aWVzRnJvbSwgU3R5bGVQcm9wZXJ0eVNl
dCogc3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHAKaW5kZXggNWI3ZTFmOC4uZDY1Njk2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtMTM1Niw3ICsxMzU2LDcgQEAg
dm9pZCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpyZXZhbGlkYXRlU3R5bGUoQ1NTU3R5bGVEZWNsYXJh
dGlvbiogcGFnZVN0eWxlKQogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBtX2ZsYXRS
dWxlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgQ1NTU3R5bGVSdWxlKiBwYXJz
ZWRSdWxlID0gbV9mbGF0UnVsZXMuYXQoaSkuZ2V0KCk7CiAgICAgICAgIGlmIChwYXJzZWRSdWxl
LT5zdHlsZSgpID09IHBhZ2VTdHlsZSkgewotICAgICAgICAgICAgaWYgKHBhcnNlZFJ1bGUtPnN0
eWxlUnVsZSgpLT5wcm9wZXJ0aWVzKCktPmFzVGV4dCgpICE9IHBhZ2VTdHlsZS0+Y3NzVGV4dCgp
KSB7CisgICAgICAgICAgICBpZiAocGFyc2VkUnVsZS0+c3R5bGVSdWxlKCktPnByb3BlcnRpZXMo
KS5hc1RleHQoKSAhPSBwYWdlU3R5bGUtPmNzc1RleHQoKSkgewogICAgICAgICAgICAgICAgIC8v
IENsZWFyIHRoZSBkaXNhYmxlZCBwcm9wZXJ0aWVzIGZvciB0aGUgaW52YWxpZCBzdHlsZSBoZXJl
LgogICAgICAgICAgICAgICAgIG1faW5zcGVjdG9yU3R5bGVzLnJlbW92ZShwYWdlU3R5bGUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDFlMWJhMjguLjRkZmE2
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0zMTQsNyArMzE0
LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFn
ZSogaW1hZ2UsIFJlbmRlck9iamVjdCogaW1hZ2UKIAogdm9pZCBQYWdlU2VyaWFsaXplcjo6cmV0
cmlldmVSZXNvdXJjZXNGb3JSdWxlKFN0eWxlUnVsZSogcnVsZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQogewotICAgIHJldHJpZXZlUmVzb3VyY2VzRm9yUHJvcGVydGllcyhydWxlLT5wcm9wZXJ0aWVz
KCksIGRvY3VtZW50KTsKKyAgICByZXRyaWV2ZVJlc291cmNlc0ZvclByb3BlcnRpZXMoJnJ1bGUt
PnByb3BlcnRpZXMoKSwgZG9jdW1lbnQpOwogfQogCiB2b2lkIFBhZ2VTZXJpYWxpemVyOjpyZXRy
aWV2ZVJlc291cmNlc0ZvclByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGVE
ZWNsYXJhdGlvbiwgRG9jdW1lbnQqIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9u
dEZhY2VFbGVtZW50LmNwcAppbmRleCA3MzAzOTE4Li5iZTRhZWI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcApAQCAtMjU5LDcgKzI1OSw3IEBAIGludCBTVkdG
b250RmFjZUVsZW1lbnQ6OmRlc2NlbnQoKSBjb25zdAogCiBTdHJpbmcgU1ZHRm9udEZhY2VFbGVt
ZW50Ojpmb250RmFtaWx5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mb250RmFjZVJ1bGUtPnBy
b3BlcnRpZXMoKS0+Z2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpOworICAg
IHJldHVybiBtX2ZvbnRGYWNlUnVsZS0+cHJvcGVydGllcygpLmdldFByb3BlcnR5VmFsdWUoQ1NT
UHJvcGVydHlGb250RmFtaWx5KTsKIH0KIAogU1ZHRm9udEVsZW1lbnQqIFNWR0ZvbnRGYWNlRWxl
bWVudDo6YXNzb2NpYXRlZEZvbnRFbGVtZW50KCkgY29uc3QKQEAgLTMwNiw3ICszMDYsNyBAQCB2
b2lkIFNWR0ZvbnRGYWNlRWxlbWVudDo6cmVidWlsZEZvbnRGYWNlKCkKIAogICAgIGlmIChkZXNj
cmliZXNQYXJlbnRGb250KSB7ICAgIAogICAgICAgICAvLyBUcmF2ZXJzZSBwYXJzZWQgQ1NTIHZh
bHVlcyBhbmQgYXNzb2NpYXRlIENTU0ZvbnRGYWNlU3JjVmFsdWUgZWxlbWVudHMgd2l0aCBvdXJz
ZWx2ZXMuCi0gICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gc3JjID0gbV9mb250RmFjZVJ1bGUtPnBy
b3BlcnRpZXMoKS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVNyYyk7CisgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZT4gc3JjID0gbV9mb250RmFjZVJ1bGUtPnByb3BlcnRpZXMoKS5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5U3JjKTsKICAgICAgICAgQ1NTVmFsdWVMaXN0KiBz
cmNMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4oc3JjLmdldCgpKTsKIAogICAgICAg
ICB1bnNpZ25lZCBzcmNMZW5ndGggPSBzcmNMaXN0ID8gc3JjTGlzdC0+bGVuZ3RoKCkgOiAwOwo=
</data>
<flag name="commit-queue"
          id="230281"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208407</attachid>
            <date>2013-08-09 02:20:36 -0700</date>
            <delta_ts>2013-08-09 02:30:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119596-v3.diff</filename>
            <type>text/plain</type>
            <size>45346</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MThhOTU2Li45YjMzNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTUg
QEAKKzIwMTMtMDgtMDkgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFN0eWxlUnVsZSo6OnByb3BlcnRpZXMoKSBzaG91bGQgcmV0dXJuIGNvbnN0IHJlZmVyZW5j
ZXMuCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzExOTU5Nj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFN0eWxlUnVsZTo6cHJvcGVy
dGllcygpICYgZnJpZW5kcyByZXR1cm4gY29uc3QtcmVmZXJlbmNlcyBpbnN0ZWFkIG9mCisgICAg
ICAgIHBvaW50ZXJzLiBUaGlzIGV4cG9zZWQgc29tZSBwb2ludGxlc3MgbnVsbCBjaGVja2luZywg
c2luY2UgcnVsZXMgc2hvdWxkCisgICAgICAgIGFsd2F5cyBoYXZlIHByb3BlcnRpZXMuCisKKyAg
ICAgICAgQWxsIHJ1bGUgb2JqZWN0cyB0aGF0IGNvbnRhaW4gcHJvcGVydGllcyBub3cgcmVxdWly
ZSBhIFN0eWxlUHJvcGVydHlTZXQgYXQKKyAgICAgICAgdGhlIHRpbWUgb2YgY29uc3RydWN0aW9u
IGluc3RlYWQgaGF2aW5nIHlvdSBjYWxsIHNldFByb3BlcnRpZXMoKSBsYXRlci4KKworICAgICAg
ICBUaGUgb25seSBydWxlcyB0aGF0IGNvdWxkIGV2ZXIgaGF2ZSBudWxsIHByb3BlcnRpZXMgd2Vy
ZSB0aGUgZGVmYXVsdC1pbnNlcnRlZAorICAgICAgICBhbmltYXRpb24ga2V5ZnJhbWUgcnVsZXMg
Zm9yIDAlIGFuZCAxMDAlIHRoYXQgd2UnZCBjb25qdXJlIHVwIGlmIHRoZSBhdXRob3IKKyAgICAg
ICAgZGlkbid0IHByb3ZpZGUgdGhlbS4gTm93IHRoZXkganVzdCBoYXZlIGFuIGVtcHR5IHByb3Bl
cnR5IHNldCBpbnN0ZWFkLgorCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlUnVsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVJ1bGU6OmNzc1RleHQpOgorICAgICAgICAqIGNz
cy9DU1NGb250U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9y
OjphZGRGb250RmFjZVJ1bGUpOgorICAgICAgICAqIGNzcy9DU1NQYWdlUnVsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYWdlUnVsZTo6Y3NzVGV4dCk6CisgICAgICAgICogY3NzL0NTU1Bh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUZpbHRlclJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpyZXdyaXRlU3BlY2lmaWVycyk6CisgICAgICAgICogY3NzL0NTU1N0
eWxlUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVJ1bGU6OmNzc1RleHQpOgor
ICAgICAgICAqIGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpsZWZ0VG9SaWdodERlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0VG9MZWZ0
RGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmFk
ZEVsZW1lbnRTdHlsZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVD
b2xsZWN0b3I6OmRvQ29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KToKKyAgICAgICAgKiBjc3Mv
UGFnZVJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bGVDb2xsZWN0
b3I6Om1hdGNoUGFnZVJ1bGVzRm9yTGlzdCk6CisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydHlT
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ6Om1lcmdl
QW5kT3ZlcnJpZGVPbkNvbmZsaWN0KToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5o
OgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6Ok1hdGNoUmVzdWx0OjphZGRNYXRjaGVkUHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHlsZUZvcktleWZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKToKKyAgICAg
ICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlOjpTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVSdWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlUGFnZTo6
U3R5bGVSdWxlUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVGb250RmFjZTo6U3R5
bGVSdWxlRm9udEZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlVmlld3BvcnQ6OlN0
eWxlUnVsZVZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZVZpZXdwb3J0Ojpt
dXRhYmxlUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVGaWx0ZXI6OlN0
eWxlUnVsZUZpbHRlcik6CisgICAgICAgICogY3NzL1N0eWxlUnVsZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSdWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlOjpw
cm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUZvbnRGYWNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlRm9udEZhY2U6OnByb3BlcnRpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlUGFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUnVsZVBhZ2U6OnByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxl
Vmlld3BvcnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVWaWV3cG9ydDo6
cHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVGaWx0ZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVGaWx0ZXI6OnByb3BlcnRpZXMpOgorICAgICAg
ICAqIGNzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVT
aGVldENvbnRlbnRzOjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyk6CisgICAgICAgIChXZWJDb3Jl
OjpjaGlsZFJ1bGVzSGF2ZUZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMpOgorICAgICAgICAq
IGNzcy9XZWJLaXRDU1NGaWx0ZXJSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENT
U0ZpbHRlclJ1bGU6OmNzc1RleHQpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NLZXlmcmFtZVJ1
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVLZXlmcmFtZTo6U3R5bGVLZXlmcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUtleWZyYW1lOjptdXRhYmxlUHJvcGVydGllcyk6Cisg
ICAgICAgICogY3NzL1dlYktpdENTU0tleWZyYW1lUnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVLZXlmcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlS2V5ZnJhbWU6
OnByb3BlcnRpZXMpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTVmlld3BvcnRSdWxlOjpjc3NUZXh0KToKKyAgICAg
ICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlVG9Ob2RlUmFuZ2UpOgorICAgICAgICAq
IGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHls
ZTo6bWVyZ2VTdHlsZUZyb21SdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6
Om1lcmdlU3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JT
dHlsZVNoZWV0OjpyZXZhbGlkYXRlU3R5bGUpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnJldHJpZXZlUmVzb3Vy
Y2VzRm9yUnVsZSk6CisgICAgICAgICogc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGb250RmFjZUVsZW1lbnQ6OlNWR0ZvbnRGYWNlRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGb250RmFjZUVsZW1lbnQ6OmZvbnRGYW1pbHkpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VFbGVtZW50OjpyZWJ1aWxkRm9udEZhY2UpOgorCiAyMDEz
LTA4LTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXb3JrIHRvd2FyZHMgV2ViR0wgb24gQXBwbGVXaW4gcG9ydC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlUnVsZS5jcHAKaW5kZXggYTUxZWJiOS4uNWU2ODRjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlUnVsZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU3RyaW5nIENTU0Zv
bnRGYWNlUnVsZTo6Y3NzVGV4dCgpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7
CiAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIkBmb250LWZhY2UgeyAiKTsKLSAgICBTdHJpbmcg
ZGVzY3MgPSBtX2ZvbnRGYWNlUnVsZS0+cHJvcGVydGllcygpLT5hc1RleHQoKTsKKyAgICBTdHJp
bmcgZGVzY3MgPSBtX2ZvbnRGYWNlUnVsZS0+cHJvcGVydGllcygpLmFzVGV4dCgpOwogICAgIHJl
c3VsdC5hcHBlbmQoZGVzY3MpOwogICAgIGlmICghZGVzY3MuaXNFbXB0eSgpKQogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCcgJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmlu
ZGV4IDM1MWQ0NDMuLmQyMTdkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3Iu
Y3BwCkBAIC05MiwxMCArOTIsMTAgQEAgYm9vbCBDU1NGb250U2VsZWN0b3I6OmlzRW1wdHkoKSBj
b25zdAogdm9pZCBDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZShjb25zdCBTdHlsZVJ1
bGVGb250RmFjZSogZm9udEZhY2VSdWxlKQogewogICAgIC8vIE9idGFpbiB0aGUgZm9udC1mYW1p
bHkgcHJvcGVydHkgYW5kIHRoZSBzcmMgcHJvcGVydHkuICBCb3RoIG11c3QgYmUgZGVmaW5lZC4K
LSAgICBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSA9IGZvbnRGYWNlUnVsZS0+cHJvcGVy
dGllcygpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gZm9udEZhbWlseSA9IHN0eWxlLT5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udEZhbWlseSk7Ci0gICAgUmVmUHRyPENTU1ZhbHVl
PiBzcmMgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVNyYyk7Ci0gICAg
UmVmUHRyPENTU1ZhbHVlPiB1bmljb2RlUmFuZ2UgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NQcm9wZXJ0eVVuaWNvZGVSYW5nZSk7CisgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCYg
c3R5bGUgPSBmb250RmFjZVJ1bGUtPnByb3BlcnRpZXMoKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+
IGZvbnRGYW1pbHkgPSBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udEZh
bWlseSk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBzcmMgPSBzdHlsZS5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKENTU1Byb3BlcnR5U3JjKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHVuaWNvZGVSYW5nZSA9
IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2UpOwogICAg
IGlmICghZm9udEZhbWlseSB8fCAhc3JjIHx8ICFmb250RmFtaWx5LT5pc1ZhbHVlTGlzdCgpIHx8
ICFzcmMtPmlzVmFsdWVMaXN0KCkgfHwgKHVuaWNvZGVSYW5nZSAmJiAhdW5pY29kZVJhbmdlLT5p
c1ZhbHVlTGlzdCgpKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMTEsNyArMTExLDcgQEAgdm9p
ZCBDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZShjb25zdCBTdHlsZVJ1bGVGb250RmFj
ZSogZm9udEZhY2VSdWxlKQogCiAgICAgdW5zaWduZWQgdHJhaXRzTWFzayA9IDA7CiAKLSAgICBp
ZiAoUmVmUHRyPENTU1ZhbHVlPiBmb250U3R5bGUgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSkpIHsKKyAgICBpZiAoUmVmUHRyPENTU1ZhbHVlPiBmb250
U3R5bGUgPSBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFN0eWxlKSkg
ewogICAgICAgICBpZiAoIWZvbnRTdHlsZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAg
ICAgcmV0dXJuOwogCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmFk
ZEZvbnRGYWNlUnVsZShjb25zdCBTdHlsZVJ1bGVGb250RmFjZSogZm9udEZhY2VSdWxlKQogICAg
IH0gZWxzZQogICAgICAgICB0cmFpdHNNYXNrIHw9IEZvbnRTdHlsZU5vcm1hbE1hc2s7CiAKLSAg
ICBpZiAoUmVmUHRyPENTU1ZhbHVlPiBmb250V2VpZ2h0ID0gc3R5bGUtPmdldFByb3BlcnR5Q1NT
VmFsdWUoQ1NTUHJvcGVydHlGb250V2VpZ2h0KSkgeworICAgIGlmIChSZWZQdHI8Q1NTVmFsdWU+
IGZvbnRXZWlnaHQgPSBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFdl
aWdodCkpIHsKICAgICAgICAgaWYgKCFmb250V2VpZ2h0LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIENTU0ZvbnRTZWxl
Y3Rvcjo6YWRkRm9udEZhY2VSdWxlKGNvbnN0IFN0eWxlUnVsZUZvbnRGYWNlKiBmb250RmFjZVJ1
bGUpCiAgICAgfSBlbHNlCiAgICAgICAgIHRyYWl0c01hc2sgfD0gRm9udFdlaWdodDQwME1hc2s7
CiAKLSAgICBpZiAoUmVmUHRyPENTU1ZhbHVlPiBmb250VmFyaWFudCA9IHN0eWxlLT5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFZhcmlhbnQpKSB7CisgICAgaWYgKFJlZlB0cjxD
U1NWYWx1ZT4gZm9udFZhcmlhbnQgPSBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3Bl
cnR5Rm9udFZhcmlhbnQpKSB7CiAgICAgICAgIC8vIGZvbnQtdmFyaWFudCBkZXNjcmlwdG9yIGNh
biBiZSBhIHZhbHVlIGxpc3QuCiAgICAgICAgIGlmIChmb250VmFyaWFudC0+aXNQcmltaXRpdmVW
YWx1ZSgpKSB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhZ2VSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5j
cHAKaW5kZXggMDhlYjE0Yy4uZmY4Y2RiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhZ2VSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuY3Bw
CkBAIC04Niw3ICs4Niw3IEBAIFN0cmluZyBDU1NQYWdlUnVsZTo6Y3NzVGV4dCgpIGNvbnN0CiAg
ICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAgcmVzdWx0LmFwcGVuZChzZWxlY3RvclRleHQo
KSk7CiAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiB7ICIpOwotICAgIFN0cmluZyBkZWNscyA9
IG1fcGFnZVJ1bGUtPnByb3BlcnRpZXMoKS0+YXNUZXh0KCk7CisgICAgU3RyaW5nIGRlY2xzID0g
bV9wYWdlUnVsZS0+cHJvcGVydGllcygpLmFzVGV4dCgpOwogICAgIHJlc3VsdC5hcHBlbmQoZGVj
bHMpOwogICAgIGlmICghZGVjbHMuaXNFbXB0eSgpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCcg
Jyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDcwMDNjMDQuLjQ2MGFhYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC05MTE4LDggKzkxMTgsNyBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VGaWx0ZXJSdWxlUGFyYW1ldGVycygpCiAKIFN0eWxlUnVsZUJhc2UqIENTU1BhcnNl
cjo6Y3JlYXRlRmlsdGVyUnVsZShjb25zdCBDU1NQYXJzZXJTdHJpbmcmIGZpbHRlck5hbWUpCiB7
Ci0gICAgUmVmUHRyPFN0eWxlUnVsZUZpbHRlcj4gcnVsZSA9IFN0eWxlUnVsZUZpbHRlcjo6Y3Jl
YXRlKGZpbHRlck5hbWUpOwotICAgIHJ1bGUtPnNldFByb3BlcnRpZXMoY3JlYXRlU3R5bGVQcm9w
ZXJ0eVNldCgpKTsKKyAgICBSZWZQdHI8U3R5bGVSdWxlRmlsdGVyPiBydWxlID0gU3R5bGVSdWxl
RmlsdGVyOjpjcmVhdGUoZmlsdGVyTmFtZSwgY3JlYXRlU3R5bGVQcm9wZXJ0eVNldCgpKTsKICAg
ICBjbGVhclByb3BlcnRpZXMoKTsKICAgICBTdHlsZVJ1bGVGaWx0ZXIqIHJlc3VsdCA9IHJ1bGUu
Z2V0KCk7CiAgICAgbV9wYXJzZWRSdWxlcy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwpAQCAtMTE2
NzMsMTIgKzExNjcyLDEyIEBAIFN0eWxlUnVsZUJhc2UqIENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVS
dWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlCiB7CiAgICAgU3R5bGVS
dWxlKiByZXN1bHQgPSAwOwogICAgIGlmIChzZWxlY3RvcnMpIHsKLSAgICAgICAgbV9hbGxvd0lt
cG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyA9IGZhbHNlOwotICAgICAg
ICBSZWZQdHI8U3R5bGVSdWxlPiBydWxlID0gU3R5bGVSdWxlOjpjcmVhdGUobV9sYXN0U2VsZWN0
b3JMaW5lTnVtYmVyKTsKLSAgICAgICAgcnVsZS0+cGFyc2VyQWRvcHRTZWxlY3RvclZlY3Rvcigq
c2VsZWN0b3JzKTsKKyAgICAgICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0gZmFsc2U7CisgICAgICAg
IG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMgPSBmYWxzZTsKICAgICAgICAgaWYgKG1faGFz
Rm9udEZhY2VPbmx5VmFsdWVzKQogICAgICAgICAgICAgZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVz
KCk7Ci0gICAgICAgIHJ1bGUtPnNldFByb3BlcnRpZXMoY3JlYXRlU3R5bGVQcm9wZXJ0eVNldCgp
KTsKKyAgICAgICAgUmVmUHRyPFN0eWxlUnVsZT4gcnVsZSA9IFN0eWxlUnVsZTo6Y3JlYXRlKG1f
bGFzdFNlbGVjdG9yTGluZU51bWJlciwgY3JlYXRlU3R5bGVQcm9wZXJ0eVNldCgpKTsKKyAgICAg
ICAgcnVsZS0+cGFyc2VyQWRvcHRTZWxlY3RvclZlY3Rvcigqc2VsZWN0b3JzKTsKICAgICAgICAg
cmVzdWx0ID0gcnVsZS5nZXQoKTsKICAgICAgICAgbV9wYXJzZWRSdWxlcy5hcHBlbmQocnVsZS5y
ZWxlYXNlKCkpOwogICAgICAgICBwcm9jZXNzQW5kQWRkTmV3UnVsZVRvU291cmNlVHJlZUlmTmVl
ZGVkKCk7CkBAIC0xMTcwNSw4ICsxMTcwNCw3IEBAIFN0eWxlUnVsZUJhc2UqIENTU1BhcnNlcjo6
Y3JlYXRlRm9udEZhY2VSdWxlKCkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAg
ICAgfQotICAgIFJlZlB0cjxTdHlsZVJ1bGVGb250RmFjZT4gcnVsZSA9IFN0eWxlUnVsZUZvbnRG
YWNlOjpjcmVhdGUoKTsKLSAgICBydWxlLT5zZXRQcm9wZXJ0aWVzKGNyZWF0ZVN0eWxlUHJvcGVy
dHlTZXQoKSk7CisgICAgUmVmUHRyPFN0eWxlUnVsZUZvbnRGYWNlPiBydWxlID0gU3R5bGVSdWxl
Rm9udEZhY2U6OmNyZWF0ZShjcmVhdGVTdHlsZVByb3BlcnR5U2V0KCkpOwogICAgIGNsZWFyUHJv
cGVydGllcygpOwogICAgIFN0eWxlUnVsZUZvbnRGYWNlKiByZXN1bHQgPSBydWxlLmdldCgpOwog
ICAgIG1fcGFyc2VkUnVsZXMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKQEAgLTExODE5LDExICsx
MTgxNywxMCBAQCBTdHlsZVJ1bGVCYXNlKiBDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKFBhc3NP
d25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHBhZ2VTZWxlYwogICAgIG1fYWxsb3dJbXBvcnRSdWxl
cyA9IG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMgPSBmYWxzZTsKICAgICBTdHlsZVJ1bGVQ
YWdlKiBwYWdlUnVsZSA9IDA7CiAgICAgaWYgKHBhZ2VTZWxlY3RvcikgewotICAgICAgICBSZWZQ
dHI8U3R5bGVSdWxlUGFnZT4gcnVsZSA9IFN0eWxlUnVsZVBhZ2U6OmNyZWF0ZSgpOworICAgICAg
ICBSZWZQdHI8U3R5bGVSdWxlUGFnZT4gcnVsZSA9IFN0eWxlUnVsZVBhZ2U6OmNyZWF0ZShjcmVh
dGVTdHlsZVByb3BlcnR5U2V0KCkpOwogICAgICAgICBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNl
bGVjdG9yPiA+IHNlbGVjdG9yVmVjdG9yOwogICAgICAgICBzZWxlY3RvclZlY3Rvci5hcHBlbmQo
cGFnZVNlbGVjdG9yKTsKICAgICAgICAgcnVsZS0+cGFyc2VyQWRvcHRTZWxlY3RvclZlY3Rvcihz
ZWxlY3RvclZlY3Rvcik7Ci0gICAgICAgIHJ1bGUtPnNldFByb3BlcnRpZXMoY3JlYXRlU3R5bGVQ
cm9wZXJ0eVNldCgpKTsKICAgICAgICAgcGFnZVJ1bGUgPSBydWxlLmdldCgpOwogICAgICAgICBt
X3BhcnNlZFJ1bGVzLmFwcGVuZChydWxlLnJlbGVhc2UoKSk7CiAgICAgICAgIHByb2Nlc3NBbmRB
ZGROZXdSdWxlVG9Tb3VyY2VUcmVlSWZOZWVkZWQoKTsKQEAgLTExOTIxLDkgKzExOTE4LDggQEAg
U3R5bGVLZXlmcmFtZSogQ1NTUGFyc2VyOjpjcmVhdGVLZXlmcmFtZShDU1NQYXJzZXJWYWx1ZUxp
c3QqIGtleXMpCiAgICAgICAgIGtleVN0cmluZy5hcHBlbmQoJyUnKTsKICAgICB9CiAKLSAgICBS
ZWZQdHI8U3R5bGVLZXlmcmFtZT4ga2V5ZnJhbWUgPSBTdHlsZUtleWZyYW1lOjpjcmVhdGUoKTsK
KyAgICBSZWZQdHI8U3R5bGVLZXlmcmFtZT4ga2V5ZnJhbWUgPSBTdHlsZUtleWZyYW1lOjpjcmVh
dGUoY3JlYXRlU3R5bGVQcm9wZXJ0eVNldCgpKTsKICAgICBrZXlmcmFtZS0+c2V0S2V5VGV4dChr
ZXlTdHJpbmcudG9TdHJpbmcoKSk7Ci0gICAga2V5ZnJhbWUtPnNldFByb3BlcnRpZXMoY3JlYXRl
U3R5bGVQcm9wZXJ0eVNldCgpKTsKIAogICAgIGNsZWFyUHJvcGVydGllcygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVJ1bGUuY3BwCmluZGV4IGJmYWJlNTEuLjUwMGJmYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVJ1bGUuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgU3RyaW5nIENTU1N0eWxl
UnVsZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAgcmVz
dWx0LmFwcGVuZChzZWxlY3RvclRleHQoKSk7CiAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiB7
ICIpOwotICAgIFN0cmluZyBkZWNscyA9IG1fc3R5bGVSdWxlLT5wcm9wZXJ0aWVzKCktPmFzVGV4
dCgpOworICAgIFN0cmluZyBkZWNscyA9IG1fc3R5bGVSdWxlLT5wcm9wZXJ0aWVzKCkuYXNUZXh0
KCk7CiAgICAgcmVzdWx0LmFwcGVuZChkZWNscyk7CiAgICAgaWYgKCFkZWNscy5pc0VtcHR5KCkp
CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVu
dFJ1bGVDb2xsZWN0b3IuY3BwCmluZGV4IDIwOTQyM2UuLmFjOGFkNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcApAQCAtNDYsMjAgKzQ2LDIwIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFN0eWxlUHJvcGVydHlTZXQqIGxlZnRUb1Jp
Z2h0RGVjbGFyYXRpb24oKQorc3RhdGljIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQmIGxlZnRUb1Jp
Z2h0RGVjbGFyYXRpb24oKQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPE11dGFi
bGVTdHlsZVByb3BlcnR5U2V0PiwgbGVmdFRvUmlnaHREZWNsLCAoTXV0YWJsZVN0eWxlUHJvcGVy
dHlTZXQ6OmNyZWF0ZSgpKSk7CisgICAgc3RhdGljIE11dGFibGVTdHlsZVByb3BlcnR5U2V0KiBs
ZWZ0VG9SaWdodERlY2wgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCkubGVha1Jl
ZigpOwogICAgIGlmIChsZWZ0VG9SaWdodERlY2wtPmlzRW1wdHkoKSkKICAgICAgICAgbGVmdFRv
UmlnaHREZWNsLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVMdHIp
OwotICAgIHJldHVybiBsZWZ0VG9SaWdodERlY2wuZ2V0KCk7CisgICAgcmV0dXJuICpsZWZ0VG9S
aWdodERlY2w7CiB9CiAKLXN0YXRpYyBTdHlsZVByb3BlcnR5U2V0KiByaWdodFRvTGVmdERlY2xh
cmF0aW9uKCkKK3N0YXRpYyBjb25zdCBTdHlsZVByb3BlcnR5U2V0JiByaWdodFRvTGVmdERlY2xh
cmF0aW9uKCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxNdXRhYmxlU3R5bGVQ
cm9wZXJ0eVNldD4sIHJpZ2h0VG9MZWZ0RGVjbCwgKE11dGFibGVTdHlsZVByb3BlcnR5U2V0Ojpj
cmVhdGUoKSkpOworICAgIHN0YXRpYyBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldCogcmlnaHRUb0xl
ZnREZWNsID0gTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpLmxlYWtSZWYoKTsKICAg
ICBpZiAocmlnaHRUb0xlZnREZWNsLT5pc0VtcHR5KCkpCiAgICAgICAgIHJpZ2h0VG9MZWZ0RGVj
bC0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIENTU1ZhbHVlUnRsKTsKLSAgICBy
ZXR1cm4gcmlnaHRUb0xlZnREZWNsLmdldCgpOworICAgIHJldHVybiAqcmlnaHRUb0xlZnREZWNs
OwogfQogCiBTdHlsZVJlc29sdmVyOjpNYXRjaFJlc3VsdCYgRWxlbWVudFJ1bGVDb2xsZWN0b3I6
Om1hdGNoZWRSZXN1bHQoKQpAQCAtOTUsNyArOTUsNyBAQCBpbmxpbmUgdm9pZCBFbGVtZW50UnVs
ZUNvbGxlY3Rvcjo6YWRkRWxlbWVudFN0eWxlUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5
UwogICAgIG1fcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSA9IG1fcmVzdWx0Lm1hdGNoZWRQ
cm9wZXJ0aWVzLnNpemUoKTsKICAgICBpZiAobV9yZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVs
ZSA9PSAtMSkKICAgICAgICAgbV9yZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSA9IG1fcmVz
dWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZTsKLSAgICBtX3Jlc3VsdC5hZGRNYXRjaGVkUHJvcGVy
dGllcyhwcm9wZXJ0eVNldCk7CisgICAgbV9yZXN1bHQuYWRkTWF0Y2hlZFByb3BlcnRpZXMoKnBy
b3BlcnR5U2V0KTsKICAgICBpZiAoIWlzQ2FjaGVhYmxlKQogICAgICAgICBtX3Jlc3VsdC5pc0Nh
Y2hlYWJsZSA9IGZhbHNlOwogfQpAQCAtNDEzLDggKzQxMyw4IEBAIHZvaWQgRWxlbWVudFJ1bGVD
b2xsZWN0b3I6OmRvQ29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxl
RGF0YT4qCiAgICAgICAgIFBzZXVkb0lkIGR5bmFtaWNQc2V1ZG8gPSBOT1BTRVVETzsKICAgICAg
ICAgaWYgKHJ1bGVNYXRjaGVzKHJ1bGVEYXRhLCBtYXRjaFJlcXVlc3Quc2NvcGUsIGR5bmFtaWNQ
c2V1ZG8pKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUgcnVsZSBoYXMgbm8gcHJvcGVydGllcyB0
byBhcHBseSwgdGhlbiBpZ25vcmUgaXQgaW4gdGhlIG5vbi1kZWJ1ZyBtb2RlLgotICAgICAgICAg
ICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcyA9IHJ1bGUtPnByb3BlcnRpZXMo
KTsKLSAgICAgICAgICAgIGlmICghcHJvcGVydGllcyB8fCAocHJvcGVydGllcy0+aXNFbXB0eSgp
ICYmICFtYXRjaFJlcXVlc3QuaW5jbHVkZUVtcHR5UnVsZXMpKSB7CisgICAgICAgICAgICBjb25z
dCBTdHlsZVByb3BlcnR5U2V0JiBwcm9wZXJ0aWVzID0gcnVsZS0+cHJvcGVydGllcygpOworICAg
ICAgICAgICAgaWYgKHByb3BlcnRpZXMuaXNFbXB0eSgpICYmICFtYXRjaFJlcXVlc3QuaW5jbHVk
ZUVtcHR5UnVsZXMpIHsKICAgICAgICAgICAgICAgICBpZiAoaGFzSW5zcGVjdG9yRnJvbnRlbmRz
KQogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1hdGNo
UnVsZShjb29raWUsIGZhbHNlKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvUGFnZVJ1bGVDb2xsZWN0b3IuY3BwCmluZGV4IGU3NjZlNzYuLjYxMWYxNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxlY3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmNwcApAQCAtMTE4LDggKzExOCw4
IEBAIHZvaWQgUGFnZVJ1bGVDb2xsZWN0b3I6Om1hdGNoUGFnZVJ1bGVzRm9yTGlzdChWZWN0b3I8
U3R5bGVSdWxlUGFnZSo+JiBtYXRjaGVkUnVsCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICAvLyBJZiB0aGUgcnVsZSBoYXMgbm8gcHJvcGVydGllcyB0byBhcHBseSwgdGhlbiBpZ25v
cmUgaXQuCi0gICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMgPSBydWxl
LT5wcm9wZXJ0aWVzKCk7Ci0gICAgICAgIGlmICghcHJvcGVydGllcyB8fCBwcm9wZXJ0aWVzLT5p
c0VtcHR5KCkpCisgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQmIHByb3BlcnRpZXMgPSBy
dWxlLT5wcm9wZXJ0aWVzKCk7CisgICAgICAgIGlmIChwcm9wZXJ0aWVzLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8vIEFkZCB0aGlzIHJ1bGUgdG8gb3VyIGxp
c3Qgb2YgbWF0Y2hlZCBydWxlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVByb3BlcnR5U2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNw
cAppbmRleCAwMzZkYTYyLi41ZjcxMDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVy
dHlTZXQuY3BwCkBAIC0xMDM0LDExICsxMDM0LDExIEBAIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6
aGFzQ1NTT01XcmFwcGVyKCkgY29uc3QKICAgICByZXR1cm4gbV9pc011dGFibGUgJiYgc3RhdGlj
X2Nhc3Q8Y29uc3QgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqPih0aGlzKS0+bV9jc3NvbVdyYXBw
ZXI7CiB9CiAKLXZvaWQgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ6Om1lcmdlQW5kT3ZlcnJpZGVP
bkNvbmZsaWN0KGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIG90aGVyKQordm9pZCBNdXRhYmxlU3R5
bGVQcm9wZXJ0eVNldDo6bWVyZ2VBbmRPdmVycmlkZU9uQ29uZmxpY3QoY29uc3QgU3R5bGVQcm9w
ZXJ0eVNldCYgb3RoZXIpCiB7Ci0gICAgdW5zaWduZWQgc2l6ZSA9IG90aGVyLT5wcm9wZXJ0eUNv
dW50KCk7CisgICAgdW5zaWduZWQgc2l6ZSA9IG90aGVyLnByb3BlcnR5Q291bnQoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBhZGRQYXJzZWRQcm9w
ZXJ0eShvdGhlci0+cHJvcGVydHlBdChpKS50b0NTU1Byb3BlcnR5KCkpOworICAgICAgICBhZGRQ
YXJzZWRQcm9wZXJ0eShvdGhlci5wcm9wZXJ0eUF0KGkpLnRvQ1NTUHJvcGVydHkoKSk7CiB9CiAK
IHZvaWQgU3R5bGVQcm9wZXJ0eVNldDo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hT
ZXQ8S1VSTD4mIHVybHMsIFN0eWxlU2hlZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hlZXQpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAppbmRleCBjNzg1MjQyLi5jMTdl
MTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKQEAgLTIxMyw3ICsyMTMs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhjb25zdCBT
dHlsZVByb3BlcnR5U2V0Kik7CiAgICAgdm9pZCByZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhj
b25zdCBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKik7CiAKLSAgICB2b2lkIG1lcmdlQW5kT3ZlcnJp
ZGVPbkNvbmZsaWN0KGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqKTsKKyAgICB2b2lkIG1lcmdlQW5k
T3ZlcnJpZGVPbkNvbmZsaWN0KGNvbnN0IFN0eWxlUHJvcGVydHlTZXQmKTsKIAogICAgIHZvaWQg
Y2xlYXIoKTsKICAgICB2b2lkIHBhcnNlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBzdHlsZURl
Y2xhcmF0aW9uLCBTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA0ZTFlYjYwLi5hMGI0ZTZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0yMzMsMTEgKzIzMywxMSBAQCBpbmxpbmUg
dm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6Y2xlYXIoKQogI2VuZGlmCiB9CiAKLXZvaWQgU3R5
bGVSZXNvbHZlcjo6TWF0Y2hSZXN1bHQ6OmFkZE1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxl
UHJvcGVydHlTZXQqIHByb3BlcnRpZXMsIFN0eWxlUnVsZSogcnVsZSwgdW5zaWduZWQgbGlua01h
dGNoVHlwZSwgUHJvcGVydHlXaGl0ZWxpc3RUeXBlIHByb3BlcnR5V2hpdGVsaXN0VHlwZSkKK3Zv
aWQgU3R5bGVSZXNvbHZlcjo6TWF0Y2hSZXN1bHQ6OmFkZE1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0
IFN0eWxlUHJvcGVydHlTZXQmIHByb3BlcnRpZXMsIFN0eWxlUnVsZSogcnVsZSwgdW5zaWduZWQg
bGlua01hdGNoVHlwZSwgUHJvcGVydHlXaGl0ZWxpc3RUeXBlIHByb3BlcnR5V2hpdGVsaXN0VHlw
ZSkKIHsKICAgICBtYXRjaGVkUHJvcGVydGllcy5ncm93KG1hdGNoZWRQcm9wZXJ0aWVzLnNpemUo
KSArIDEpOwogICAgIFN0eWxlUmVzb2x2ZXI6Ok1hdGNoZWRQcm9wZXJ0aWVzJiBuZXdQcm9wZXJ0
aWVzID0gbWF0Y2hlZFByb3BlcnRpZXMubGFzdCgpOwotICAgIG5ld1Byb3BlcnRpZXMucHJvcGVy
dGllcyA9IGNvbnN0X2Nhc3Q8U3R5bGVQcm9wZXJ0eVNldCo+KHByb3BlcnRpZXMpOworICAgIG5l
d1Byb3BlcnRpZXMucHJvcGVydGllcyA9IGNvbnN0X2Nhc3Q8U3R5bGVQcm9wZXJ0eVNldCo+KCZw
cm9wZXJ0aWVzKTsKICAgICBuZXdQcm9wZXJ0aWVzLmxpbmtNYXRjaFR5cGUgPSBsaW5rTWF0Y2hU
eXBlOwogICAgIG5ld1Byb3BlcnRpZXMud2hpdGVsaXN0VHlwZSA9IHByb3BlcnR5V2hpdGVsaXN0
VHlwZTsKICAgICBtYXRjaGVkUnVsZXMuYXBwZW5kKHJ1bGUpOwpAQCAtMTAwNCw4ICsxMDA0LDcg
QEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50
KEVsZW1lbnQqIGVsZW1lbnQsIFJlbmRlclMKIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFN0eWxl
UmVzb2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUoY29uc3QgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHls
ZSwgY29uc3QgU3R5bGVLZXlmcmFtZSoga2V5ZnJhbWUsIEtleWZyYW1lVmFsdWUmIGtleWZyYW1l
VmFsdWUpCiB7CiAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0OwotICAgIGlmIChrZXlmcmFtZS0+cHJv
cGVydGllcygpKQotICAgICAgICByZXN1bHQuYWRkTWF0Y2hlZFByb3BlcnRpZXMoa2V5ZnJhbWUt
PnByb3BlcnRpZXMoKSk7CisgICAgcmVzdWx0LmFkZE1hdGNoZWRQcm9wZXJ0aWVzKGtleWZyYW1l
LT5wcm9wZXJ0aWVzKCkpOwogCiAgICAgQVNTRVJUKCFtX3N0YXRlLnN0eWxlKCkpOwogCkBAIC0x
MDE4LDggKzEwMTcsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpz
dHlsZUZvcktleWZyYW1lKGNvbnN0IFJlbmRlclN0eWxlKiBlbGVtZQogICAgIC8vIFdlIGRvbid0
IG5lZWQgdG8gYm90aGVyIHdpdGggIWltcG9ydGFudC4gU2luY2UgdGhlcmUgaXMgb25seSBldmVy
IG9uZQogICAgIC8vIGRlY2wsIHRoZXJlJ3Mgbm90aGluZyB0byBvdmVycmlkZS4gU28ganVzdCBh
ZGQgdGhlIGZpcnN0IHByb3BlcnRpZXMuCiAgICAgYm9vbCBpbmhlcml0ZWRPbmx5ID0gZmFsc2U7
Ci0gICAgaWYgKGtleWZyYW1lLT5wcm9wZXJ0aWVzKCkpCi0gICAgICAgIGFwcGx5TWF0Y2hlZFBy
b3BlcnRpZXM8SGlnaFByaW9yaXR5UHJvcGVydGllcz4ocmVzdWx0LCBmYWxzZSwgMCwgcmVzdWx0
Lm1hdGNoZWRQcm9wZXJ0aWVzLnNpemUoKSAtIDEsIGluaGVyaXRlZE9ubHkpOworICAgIGFwcGx5
TWF0Y2hlZFByb3BlcnRpZXM8SGlnaFByaW9yaXR5UHJvcGVydGllcz4ocmVzdWx0LCBmYWxzZSwg
MCwgcmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzLnNpemUoKSAtIDEsIGluaGVyaXRlZE9ubHkpOwog
CiAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRpZWQsIGdvIGFoZWFkIGFuZCB1cGRhdGUgaXQg
bm93LgogICAgIHVwZGF0ZUZvbnQoKTsKQEAgLTEwMjksOCArMTAyNyw3IEBAIFBhc3NSZWZQdHI8
UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUoY29uc3QgUmVuZGVy
U3R5bGUqIGVsZW1lCiAgICAgICAgIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0
LCBzdGF0ZS5saW5lSGVpZ2h0VmFsdWUoKSk7CiAKICAgICAvLyBOb3cgZG8gcmVzdCBvZiB0aGUg
cHJvcGVydGllcy4KLSAgICBpZiAoa2V5ZnJhbWUtPnByb3BlcnRpZXMoKSkKLSAgICAgICAgYXBw
bHlNYXRjaGVkUHJvcGVydGllczxMb3dQcmlvcml0eVByb3BlcnRpZXM+KHJlc3VsdCwgZmFsc2Us
IDAsIHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5zaXplKCkgLSAxLCBpbmhlcml0ZWRPbmx5KTsK
KyAgICBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzPExvd1ByaW9yaXR5UHJvcGVydGllcz4ocmVzdWx0
LCBmYWxzZSwgMCwgcmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzLnNpemUoKSAtIDEsIGluaGVyaXRl
ZE9ubHkpOwogCiAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRpZWQgYnkgb25lIG9mIHRoZSBu
b24tZXNzZW50aWFsIGZvbnQgcHJvcHMsCiAgICAgLy8gZ28gYWhlYWQgYW5kIHVwZGF0ZSBpdCBh
IHNlY29uZCB0aW1lLgpAQCAtMTA0MCwxNSArMTAzNywxMyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvcktleWZyYW1lKGNvbnN0IFJlbmRlclN0eWxlKiBl
bGVtZQogICAgIGxvYWRQZW5kaW5nUmVzb3VyY2VzKCk7CiAgICAgCiAgICAgLy8gQWRkIGFsbCB0
aGUgYW5pbWF0aW5nIHByb3BlcnRpZXMgdG8gdGhlIGtleWZyYW1lLgotICAgIGlmIChjb25zdCBT
dHlsZVByb3BlcnR5U2V0KiBzdHlsZURlY2xhcmF0aW9uID0ga2V5ZnJhbWUtPnByb3BlcnRpZXMo
KSkgewotICAgICAgICB1bnNpZ25lZCBwcm9wZXJ0eUNvdW50ID0gc3R5bGVEZWNsYXJhdGlvbi0+
cHJvcGVydHlDb3VudCgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVy
dHlDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5ID0gc3R5
bGVEZWNsYXJhdGlvbi0+cHJvcGVydHlBdChpKS5pZCgpOwotICAgICAgICAgICAgLy8gVGltaW5n
LWZ1bmN0aW9uIHdpdGhpbiBrZXlmcmFtZXMgaXMgc3BlY2lhbCwgYmVjYXVzZSBpdCBpcyBub3Qg
YW5pbWF0ZWQ7IGl0IGp1c3QKLSAgICAgICAgICAgIC8vIGRlc2NyaWJlcyB0aGUgdGltaW5nIGZ1
bmN0aW9uIGJldHdlZW4gdGhpcyBrZXlmcmFtZSBhbmQgdGhlIG5leHQuCi0gICAgICAgICAgICBp
ZiAocHJvcGVydHkgIT0gQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbikK
LSAgICAgICAgICAgICAgICBrZXlmcmFtZVZhbHVlLmFkZFByb3BlcnR5KHByb3BlcnR5KTsKLSAg
ICAgICAgfQorICAgIHVuc2lnbmVkIHByb3BlcnR5Q291bnQgPSBrZXlmcmFtZS0+cHJvcGVydGll
cygpLnByb3BlcnR5Q291bnQoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVy
dHlDb3VudDsgKytpKSB7CisgICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHkgPSBrZXlmcmFt
ZS0+cHJvcGVydGllcygpLnByb3BlcnR5QXQoaSkuaWQoKTsKKyAgICAgICAgLy8gVGltaW5nLWZ1
bmN0aW9uIHdpdGhpbiBrZXlmcmFtZXMgaXMgc3BlY2lhbCwgYmVjYXVzZSBpdCBpcyBub3QgYW5p
bWF0ZWQ7IGl0IGp1c3QKKyAgICAgICAgLy8gZGVzY3JpYmVzIHRoZSB0aW1pbmcgZnVuY3Rpb24g
YmV0d2VlbiB0aGlzIGtleWZyYW1lIGFuZCB0aGUgbmV4dC4KKyAgICAgICAgaWYgKHByb3BlcnR5
ICE9IENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pCisgICAgICAgICAg
ICBrZXlmcmFtZVZhbHVlLmFkZFByb3BlcnR5KHByb3BlcnR5KTsKICAgICB9CiAKICAgICBkb2N1
bWVudCgpLT5kaWRBY2Nlc3NTdHlsZVJlc29sdmVyKCk7CkBAIC0xMDk4LDcgKzEwOTMsNyBAQCB2
b2lkIFN0eWxlUmVzb2x2ZXI6OmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKEVsZW1lbnQqIGUs
IGNvbnN0IFJlbmRlclN0eWxlKiBlbAogICAgIGlmIChpbml0aWFsTGlzdFNpemUgPiAwICYmIGxp
c3RbMF0ua2V5KCkpIHsKICAgICAgICAgc3RhdGljIFN0eWxlS2V5ZnJhbWUqIHplcm9QZXJjZW50
S2V5ZnJhbWU7CiAgICAgICAgIGlmICghemVyb1BlcmNlbnRLZXlmcmFtZSkgewotICAgICAgICAg
ICAgemVyb1BlcmNlbnRLZXlmcmFtZSA9IFN0eWxlS2V5ZnJhbWU6OmNyZWF0ZSgpLmxlYWtSZWYo
KTsKKyAgICAgICAgICAgIHplcm9QZXJjZW50S2V5ZnJhbWUgPSBTdHlsZUtleWZyYW1lOjpjcmVh
dGUoTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpKS5sZWFrUmVmKCk7CiAgICAgICAg
ICAgICB6ZXJvUGVyY2VudEtleWZyYW1lLT5zZXRLZXlUZXh0KCIwJSIpOwogICAgICAgICB9CiAg
ICAgICAgIEtleWZyYW1lVmFsdWUga2V5ZnJhbWVWYWx1ZSgwLCAwKTsKQEAgLTExMTAsNyArMTEw
NSw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oRWxl
bWVudCogZSwgY29uc3QgUmVuZGVyU3R5bGUqIGVsCiAgICAgaWYgKGluaXRpYWxMaXN0U2l6ZSA+
IDAgJiYgKGxpc3RbbGlzdC5zaXplKCkgLSAxXS5rZXkoKSAhPSAxKSkgewogICAgICAgICBzdGF0
aWMgU3R5bGVLZXlmcmFtZSogaHVuZHJlZFBlcmNlbnRLZXlmcmFtZTsKICAgICAgICAgaWYgKCFo
dW5kcmVkUGVyY2VudEtleWZyYW1lKSB7Ci0gICAgICAgICAgICBodW5kcmVkUGVyY2VudEtleWZy
YW1lID0gU3R5bGVLZXlmcmFtZTo6Y3JlYXRlKCkubGVha1JlZigpOworICAgICAgICAgICAgaHVu
ZHJlZFBlcmNlbnRLZXlmcmFtZSA9IFN0eWxlS2V5ZnJhbWU6OmNyZWF0ZShNdXRhYmxlU3R5bGVQ
cm9wZXJ0eVNldDo6Y3JlYXRlKCkpLmxlYWtSZWYoKTsKICAgICAgICAgICAgIGh1bmRyZWRQZXJj
ZW50S2V5ZnJhbWUtPnNldEtleVRleHQoIjEwMCUiKTsKICAgICAgICAgfQogICAgICAgICBLZXlm
cmFtZVZhbHVlIGtleWZyYW1lVmFsdWUoMSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
aAppbmRleCA2OGI1MmM4Li4yZjc1MjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgK
QEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIE1hdGNoUmFuZ2VzIHJhbmdlczsK
ICAgICAgICAgYm9vbCBpc0NhY2hlYWJsZTsKIAotICAgICAgICB2b2lkIGFkZE1hdGNoZWRQcm9w
ZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMsIFN0eWxlUnVsZSogPSAw
LCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlID0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaEFsbCwgUHJv
cGVydHlXaGl0ZWxpc3RUeXBlID0gUHJvcGVydHlXaGl0ZWxpc3ROb25lKTsKKyAgICAgICAgdm9p
ZCBhZGRNYXRjaGVkUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0JiBwcm9wZXJ0aWVz
LCBTdHlsZVJ1bGUqID0gMCwgdW5zaWduZWQgbGlua01hdGNoVHlwZSA9IFNlbGVjdG9yQ2hlY2tl
cjo6TWF0Y2hBbGwsIFByb3BlcnR5V2hpdGVsaXN0VHlwZSA9IFByb3BlcnR5V2hpdGVsaXN0Tm9u
ZSk7CiAgICAgfTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKaW5kZXggYTZm
NjZlYS4uZDMxMGMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKQEAgLTIzMiw4ICsyMzIs
OSBAQCB1bnNpZ25lZCBTdHlsZVJ1bGU6OmF2ZXJhZ2VTaXplSW5CeXRlcygpCiAgICAgcmV0dXJu
IHNpemVvZihTdHlsZVJ1bGUpICsgc2l6ZW9mKENTU1NlbGVjdG9yKSArIFN0eWxlUHJvcGVydHlT
ZXQ6OmF2ZXJhZ2VTaXplSW5CeXRlcygpOwogfQogCi1TdHlsZVJ1bGU6OlN0eWxlUnVsZShpbnQg
c291cmNlTGluZSkKK1N0eWxlUnVsZTo6U3R5bGVSdWxlKGludCBzb3VyY2VMaW5lLCBQYXNzUmVm
UHRyPFN0eWxlUHJvcGVydHlTZXQ+IHByb3BlcnRpZXMpCiAgICAgOiBTdHlsZVJ1bGVCYXNlKFN0
eWxlLCBzb3VyY2VMaW5lKQorICAgICwgbV9wcm9wZXJ0aWVzKHByb3BlcnRpZXMpCiB7CiB9CiAK
QEAgLTI1NSwyMCArMjU2LDE0IEBAIE11dGFibGVTdHlsZVByb3BlcnR5U2V0KiBTdHlsZVJ1bGU6
Om11dGFibGVQcm9wZXJ0aWVzKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TXV0YWJsZVN0eWxl
UHJvcGVydHlTZXQqPihtX3Byb3BlcnRpZXMuZ2V0KCkpOwogfQogCi12b2lkIFN0eWxlUnVsZTo6
c2V0UHJvcGVydGllcyhQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IHByb3BlcnRpZXMpCi17
IAotICAgIG1fcHJvcGVydGllcyA9IHByb3BlcnRpZXM7Ci19Ci0KIFBhc3NSZWZQdHI8U3R5bGVS
dWxlPiBTdHlsZVJ1bGU6OmNyZWF0ZShpbnQgc291cmNlTGluZSwgY29uc3QgVmVjdG9yPGNvbnN0
IENTU1NlbGVjdG9yKj4mIHNlbGVjdG9ycywgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBw
cm9wZXJ0aWVzKQogewogICAgIENTU1NlbGVjdG9yKiBzZWxlY3Rvckxpc3RBcnJheSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Q1NTU2VsZWN0b3IqPihmYXN0TWFsbG9jKHNpemVvZihDU1NTZWxlY3Rvcikg
KiBzZWxlY3RvcnMuc2l6ZSgpKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNlbGVj
dG9ycy5zaXplKCk7ICsraSkKICAgICAgICAgbmV3IChOb3ROdWxsLCAmc2VsZWN0b3JMaXN0QXJy
YXlbaV0pIENTU1NlbGVjdG9yKCpzZWxlY3RvcnMuYXQoaSkpOwogICAgIHNlbGVjdG9yTGlzdEFy
cmF5W3NlbGVjdG9ycy5zaXplKCkgLSAxXS5zZXRMYXN0SW5TZWxlY3Rvckxpc3QoKTsKLSAgICBS
ZWZQdHI8U3R5bGVSdWxlPiBydWxlID0gU3R5bGVSdWxlOjpjcmVhdGUoc291cmNlTGluZSk7Cisg
ICAgUmVmUHRyPFN0eWxlUnVsZT4gcnVsZSA9IFN0eWxlUnVsZTo6Y3JlYXRlKHNvdXJjZUxpbmUs
IHByb3BlcnRpZXMpOwogICAgIHJ1bGUtPnBhcnNlckFkb3B0U2VsZWN0b3JBcnJheShzZWxlY3Rv
ckxpc3RBcnJheSk7Ci0gICAgcnVsZS0+c2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzKTsKICAgICBy
ZXR1cm4gcnVsZS5yZWxlYXNlKCk7CiB9CiAKQEAgLTI5OCw4ICsyOTMsOSBAQCBWZWN0b3I8UmVm
UHRyPFN0eWxlUnVsZT4gPiBTdHlsZVJ1bGU6OnNwbGl0SW50b011bHRpcGxlUnVsZXNXaXRoTWF4
aW11bVNlbGVjdG9yQwogICAgIHJldHVybiBydWxlczsKIH0KIAotU3R5bGVSdWxlUGFnZTo6U3R5
bGVSdWxlUGFnZSgpCitTdHlsZVJ1bGVQYWdlOjpTdHlsZVJ1bGVQYWdlKFBhc3NSZWZQdHI8U3R5
bGVQcm9wZXJ0eVNldD4gcHJvcGVydGllcykKICAgICA6IFN0eWxlUnVsZUJhc2UoUGFnZSkKKyAg
ICAsIG1fcHJvcGVydGllcyhwcm9wZXJ0aWVzKQogewogfQogCkBAIC0zMjEsMTMgKzMxNyw5IEBA
IE11dGFibGVTdHlsZVByb3BlcnR5U2V0KiBTdHlsZVJ1bGVQYWdlOjptdXRhYmxlUHJvcGVydGll
cygpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE11dGFibGVTdHlsZVByb3BlcnR5U2V0Kj4obV9w
cm9wZXJ0aWVzLmdldCgpKTsKIH0KIAotdm9pZCBTdHlsZVJ1bGVQYWdlOjpzZXRQcm9wZXJ0aWVz
KFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gcHJvcGVydGllcykKLXsgCi0gICAgbV9wcm9w
ZXJ0aWVzID0gcHJvcGVydGllczsKLX0KLQotU3R5bGVSdWxlRm9udEZhY2U6OlN0eWxlUnVsZUZv
bnRGYWNlKCkKK1N0eWxlUnVsZUZvbnRGYWNlOjpTdHlsZVJ1bGVGb250RmFjZShQYXNzUmVmUHRy
PFN0eWxlUHJvcGVydHlTZXQ+IHByb3BlcnRpZXMpCiAgICAgOiBTdHlsZVJ1bGVCYXNlKEZvbnRG
YWNlLCAwKQorICAgICwgbV9wcm9wZXJ0aWVzKHByb3BlcnRpZXMpCiB7CiB9CiAKQEAgLTM0OCwx
MiArMzQwLDYgQEAgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqIFN0eWxlUnVsZUZvbnRGYWNlOjpt
dXRhYmxlUHJvcGVydGllcygpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE11dGFibGVTdHlsZVBy
b3BlcnR5U2V0Kj4obV9wcm9wZXJ0aWVzLmdldCgpKTsKIH0KIAotdm9pZCBTdHlsZVJ1bGVGb250
RmFjZTo6c2V0UHJvcGVydGllcyhQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IHByb3BlcnRp
ZXMpCi17IAotICAgIG1fcHJvcGVydGllcyA9IHByb3BlcnRpZXM7Ci19Ci0KLQogU3R5bGVSdWxl
R3JvdXA6OlN0eWxlUnVsZUdyb3VwKFR5cGUgdHlwZSwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVC
YXNlPiA+JiBhZG9wdFJ1bGUpCiAgICAgOiBTdHlsZVJ1bGVCYXNlKHR5cGUsIDApCiB7CkBAIC00
MjMsOCArNDA5LDkgQEAgU3R5bGVSdWxlUmVnaW9uOjpTdHlsZVJ1bGVSZWdpb24oY29uc3QgU3R5
bGVSdWxlUmVnaW9uJiBvKQogCiAKICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQot
U3R5bGVSdWxlVmlld3BvcnQ6OlN0eWxlUnVsZVZpZXdwb3J0KCkKK1N0eWxlUnVsZVZpZXdwb3J0
OjpTdHlsZVJ1bGVWaWV3cG9ydChQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IHByb3BlcnRp
ZXMpCiAgICAgOiBTdHlsZVJ1bGVCYXNlKFZpZXdwb3J0LCAwKQorICAgICwgbV9wcm9wZXJ0aWVz
KHByb3BlcnRpZXMpCiB7CiB9CiAKQEAgLTQ0NCwxNyArNDMxLDEzIEBAIE11dGFibGVTdHlsZVBy
b3BlcnR5U2V0KiBTdHlsZVJ1bGVWaWV3cG9ydDo6bXV0YWJsZVByb3BlcnRpZXMoKQogICAgICAg
ICBtX3Byb3BlcnRpZXMgPSBtX3Byb3BlcnRpZXMtPm11dGFibGVDb3B5KCk7CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PE11dGFibGVTdHlsZVByb3BlcnR5U2V0Kj4obV9wcm9wZXJ0aWVzLmdldCgp
KTsKIH0KLQotdm9pZCBTdHlsZVJ1bGVWaWV3cG9ydDo6c2V0UHJvcGVydGllcyhQYXNzUmVmUHRy
PFN0eWxlUHJvcGVydHlTZXQ+IHByb3BlcnRpZXMpCi17Ci0gICAgbV9wcm9wZXJ0aWVzID0gcHJv
cGVydGllczsKLX0KICNlbmRpZiAvLyBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQogCiAj
aWYgRU5BQkxFKENTU19TSEFERVJTKQotU3R5bGVSdWxlRmlsdGVyOjpTdHlsZVJ1bGVGaWx0ZXIo
Y29uc3QgU3RyaW5nJiBmaWx0ZXJOYW1lKQorU3R5bGVSdWxlRmlsdGVyOjpTdHlsZVJ1bGVGaWx0
ZXIoY29uc3QgU3RyaW5nJiBmaWx0ZXJOYW1lLCBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+
IHByb3BlcnRpZXMpCiAgICAgOiBTdHlsZVJ1bGVCYXNlKEZpbHRlciwgMCkKICAgICAsIG1fZmls
dGVyTmFtZShmaWx0ZXJOYW1lKQorICAgICwgbV9wcm9wZXJ0aWVzKHByb3BlcnRpZXMpCiB7CiB9
CiAKQEAgLTQ3NiwxMCArNDU5LDYgQEAgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqIFN0eWxlUnVs
ZUZpbHRlcjo6bXV0YWJsZVByb3BlcnRpZXMoKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxNdXRh
YmxlU3R5bGVQcm9wZXJ0eVNldCo+KG1fcHJvcGVydGllcy5nZXQoKSk7CiB9CiAKLXZvaWQgU3R5
bGVSdWxlRmlsdGVyOjpzZXRQcm9wZXJ0aWVzKFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4g
cHJvcGVydGllcykKLXsKLSAgICBtX3Byb3BlcnRpZXMgPSBwcm9wZXJ0aWVzOwotfQogI2VuZGlm
IC8vIEVOQUJMRShDU1NfU0hBREVSUykKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUnVsZS5oCmluZGV4IGJmYjZmMGEuLjQ1NDY3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxl
LmgKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogI2lu
Y2x1ZGUgIk1lZGlhTGlzdC5oIgorI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTZXQuaCIKICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExNywxOCArMTE4
LDIwIEBAIHByaXZhdGU6CiBjbGFzcyBTdHlsZVJ1bGUgOiBwdWJsaWMgU3R5bGVSdWxlQmFzZSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3R5bGVSdWxlPiBjcmVhdGUoaW50IHNvdXJjZUxpbmUpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTdHlsZVJ1bGUoc291cmNlTGluZSkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5
bGVSdWxlPiBjcmVhdGUoaW50IHNvdXJjZUxpbmUsIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNl
dD4gcHJvcGVydGllcykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVS
dWxlKHNvdXJjZUxpbmUsIHByb3BlcnRpZXMpKTsKKyAgICB9CiAgICAgCiAgICAgflN0eWxlUnVs
ZSgpOwogCiAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QoKSBjb25zdCB7
IHJldHVybiBtX3NlbGVjdG9yTGlzdDsgfQotICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHBy
b3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnRpZXMuZ2V0KCk7IH0KKyAgICBjb25z
dCBTdHlsZVByb3BlcnR5U2V0JiBwcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gKm1fcHJvcGVy
dGllczsgfQogICAgIE11dGFibGVTdHlsZVByb3BlcnR5U2V0KiBtdXRhYmxlUHJvcGVydGllcygp
OwogICAgIAogICAgIHZvaWQgcGFyc2VyQWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRy
PENTU1BhcnNlclNlbGVjdG9yPiA+JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3QuYWRvcHRT
ZWxlY3RvclZlY3RvcihzZWxlY3RvcnMpOyB9CiAgICAgdm9pZCB3cmFwcGVyQWRvcHRTZWxlY3Rv
ckxpc3QoQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3QuYWRvcHQo
c2VsZWN0b3JzKTsgfQogICAgIHZvaWQgcGFyc2VyQWRvcHRTZWxlY3RvckFycmF5KENTU1NlbGVj
dG9yKiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvckFycmF5KHNlbGVj
dG9ycyk7IH0KLSAgICB2b2lkIHNldFByb3BlcnRpZXMoUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5
U2V0Pik7CiAKICAgICBQYXNzUmVmUHRyPFN0eWxlUnVsZT4gY29weSgpIGNvbnN0IHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTdHlsZVJ1bGUoKnRoaXMpKTsgfQogCkBAIC0xMzcsNyArMTQwLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyB1bnNpZ25lZCBhdmVyYWdlU2l6ZUluQnl0ZXMoKTsKIAogcHJp
dmF0ZToKLSAgICBTdHlsZVJ1bGUoaW50IHNvdXJjZUxpbmUpOworICAgIFN0eWxlUnVsZShpbnQg
c291cmNlTGluZSwgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0Pik7CiAgICAgU3R5bGVSdWxl
KGNvbnN0IFN0eWxlUnVsZSYpOwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVSdWxlPiBj
cmVhdGUoaW50IHNvdXJjZUxpbmUsIGNvbnN0IFZlY3Rvcjxjb25zdCBDU1NTZWxlY3Rvcio+Jiwg
UGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0Pik7CkBAIC0xNTQsMjAgKzE1NywxOCBAQCBpbmxp
bmUgY29uc3QgU3R5bGVSdWxlKiB0b1N0eWxlUnVsZShjb25zdCBTdHlsZVJ1bGVCYXNlKiBydWxl
KQogCiBjbGFzcyBTdHlsZVJ1bGVGb250RmFjZSA6IHB1YmxpYyBTdHlsZVJ1bGVCYXNlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVJ1bGVGb250RmFjZT4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUnVsZUZvbnRGYWNlKTsgfQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0eWxlUnVsZUZvbnRGYWNlPiBjcmVhdGUoUGFzc1JlZlB0cjxTdHlsZVByb3Bl
cnR5U2V0PiBwcm9wZXJ0aWVzKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVSdWxlRm9udEZh
Y2UocHJvcGVydGllcykpOyB9CiAgICAgCiAgICAgflN0eWxlUnVsZUZvbnRGYWNlKCk7CiAKLSAg
ICBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9w
cm9wZXJ0aWVzLmdldCgpOyB9CisgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCYgcHJvcGVydGll
cygpIGNvbnN0IHsgcmV0dXJuICptX3Byb3BlcnRpZXM7IH0KICAgICBNdXRhYmxlU3R5bGVQcm9w
ZXJ0eVNldCogbXV0YWJsZVByb3BlcnRpZXMoKTsKIAotICAgIHZvaWQgc2V0UHJvcGVydGllcyhQ
YXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+KTsKLQogICAgIFBhc3NSZWZQdHI8U3R5bGVSdWxl
Rm9udEZhY2U+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVSdWxlRm9u
dEZhY2UoKnRoaXMpKTsgfQogCiAKIHByaXZhdGU6Ci0gICAgU3R5bGVSdWxlRm9udEZhY2UoKTsK
KyAgICBTdHlsZVJ1bGVGb250RmFjZShQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+KTsKICAg
ICBTdHlsZVJ1bGVGb250RmFjZShjb25zdCBTdHlsZVJ1bGVGb250RmFjZSYpOwogCiAgICAgUmVm
UHRyPFN0eWxlUHJvcGVydHlTZXQ+IG1fcHJvcGVydGllczsKQEAgLTE3NSwyMiArMTc2LDIxIEBA
IHByaXZhdGU6CiAKIGNsYXNzIFN0eWxlUnVsZVBhZ2UgOiBwdWJsaWMgU3R5bGVSdWxlQmFzZSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVSdWxlUGFnZT4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUnVsZVBhZ2UpOyB9CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3R5bGVSdWxlUGFnZT4gY3JlYXRlKFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4g
cHJvcGVydGllcykgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUnVsZVBhZ2UocHJvcGVydGll
cykpOyB9CiAKICAgICB+U3R5bGVSdWxlUGFnZSgpOwogCiAgICAgY29uc3QgQ1NTU2VsZWN0b3Iq
IHNlbGVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvckxpc3QuZmlyc3QoKTsgfSAgICAK
LSAgICBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4g
bV9wcm9wZXJ0aWVzLmdldCgpOyB9CisgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCYgcHJvcGVy
dGllcygpIGNvbnN0IHsgcmV0dXJuICptX3Byb3BlcnRpZXM7IH0KICAgICBNdXRhYmxlU3R5bGVQ
cm9wZXJ0eVNldCogbXV0YWJsZVByb3BlcnRpZXMoKTsKIAogICAgIHZvaWQgcGFyc2VyQWRvcHRT
ZWxlY3RvclZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+JiBzZWxlY3Rv
cnMpIHsgbV9zZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvcnMpOyB9CiAg
ICAgdm9pZCB3cmFwcGVyQWRvcHRTZWxlY3Rvckxpc3QoQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rv
cnMpIHsgbV9zZWxlY3Rvckxpc3QuYWRvcHQoc2VsZWN0b3JzKTsgfQotICAgIHZvaWQgc2V0UHJv
cGVydGllcyhQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+KTsKIAogICAgIFBhc3NSZWZQdHI8
U3R5bGVSdWxlUGFnZT4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVJ1
bGVQYWdlKCp0aGlzKSk7IH0KIAogcHJpdmF0ZToKLSAgICBTdHlsZVJ1bGVQYWdlKCk7CisgICAg
U3R5bGVSdWxlUGFnZShQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+KTsKICAgICBTdHlsZVJ1
bGVQYWdlKGNvbnN0IFN0eWxlUnVsZVBhZ2UmKTsKICAgICAKICAgICBSZWZQdHI8U3R5bGVQcm9w
ZXJ0eVNldD4gbV9wcm9wZXJ0aWVzOwpAQCAtMjg4LDE5ICsyODgsMTcgQEAgcHJpdmF0ZToKICNp
ZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQogY2xhc3MgU3R5bGVSdWxlVmlld3BvcnQg
OiBwdWJsaWMgU3R5bGVSdWxlQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U3R5bGVSdWxlVmlld3BvcnQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVJ1
bGVWaWV3cG9ydCk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVJ1bGVWaWV3cG9ydD4g
Y3JlYXRlKFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gcHJvcGVydGllcykgeyByZXR1cm4g
YWRvcHRSZWYobmV3IFN0eWxlUnVsZVZpZXdwb3J0KHByb3BlcnRpZXMpKTsgfQogCiAgICAgflN0
eWxlUnVsZVZpZXdwb3J0KCk7CiAKLSAgICBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0
aWVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzLmdldCgpOyB9CisgICAgY29uc3QgU3R5
bGVQcm9wZXJ0eVNldCYgcHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuICptX3Byb3BlcnRpZXM7
IH0KICAgICBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldCogbXV0YWJsZVByb3BlcnRpZXMoKTsKIAot
ICAgIHZvaWQgc2V0UHJvcGVydGllcyhQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+KTsKLQog
ICAgIFBhc3NSZWZQdHI8U3R5bGVSdWxlVmlld3BvcnQ+IGNvcHkoKSBjb25zdCB7IHJldHVybiBh
ZG9wdFJlZihuZXcgU3R5bGVSdWxlVmlld3BvcnQoKnRoaXMpKTsgfQogCiBwcml2YXRlOgotICAg
IFN0eWxlUnVsZVZpZXdwb3J0KCk7CisgICAgU3R5bGVSdWxlVmlld3BvcnQoUGFzc1JlZlB0cjxT
dHlsZVByb3BlcnR5U2V0Pik7CiAgICAgU3R5bGVSdWxlVmlld3BvcnQoY29uc3QgU3R5bGVSdWxl
Vmlld3BvcnQmKTsKIAogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBtX3Byb3BlcnRpZXM7
CkBAIC0zMzAsMjEgKzMyOCwyMiBAQCBpbmxpbmUgY29uc3QgU3R5bGVSdWxlUmVnaW9uKiB0b1N0
eWxlUnVsZVJlZ2lvbihjb25zdCBTdHlsZVJ1bGVHcm91cCogcnVsZSkKICNpZiBFTkFCTEUoQ1NT
X1NIQURFUlMpCiBjbGFzcyBTdHlsZVJ1bGVGaWx0ZXIgOiBwdWJsaWMgU3R5bGVSdWxlQmFzZSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVSdWxlRmlsdGVyPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBmaWx0ZXJOYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVSdWxl
RmlsdGVyKGZpbHRlck5hbWUpKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlUnVsZUZp
bHRlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZmlsdGVyTmFtZSwgUGFzc1JlZlB0cjxTdHlsZVBy
b3BlcnR5U2V0PiBwcm9wZXJ0aWVzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTdHlsZVJ1bGVGaWx0ZXIoZmlsdGVyTmFtZSwgcHJvcGVydGllcykpOworICAgIH0KIAogICAg
IH5TdHlsZVJ1bGVGaWx0ZXIoKTsKIAogICAgIGNvbnN0IFN0cmluZyYgZmlsdGVyTmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZmlsdGVyTmFtZTsgfQogCi0gICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNl
dCogcHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGllcy5nZXQoKTsgfQorICAg
IGNvbnN0IFN0eWxlUHJvcGVydHlTZXQmIHByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiAqbV9w
cm9wZXJ0aWVzOyB9CiAgICAgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqIG11dGFibGVQcm9wZXJ0
aWVzKCk7CiAKLSAgICB2b2lkIHNldFByb3BlcnRpZXMoUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5
U2V0Pik7Ci0KICAgICBQYXNzUmVmUHRyPFN0eWxlUnVsZUZpbHRlcj4gY29weSgpIGNvbnN0IHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVJ1bGVGaWx0ZXIoKnRoaXMpKTsgfQogCiBwcml2YXRl
OgotICAgIFN0eWxlUnVsZUZpbHRlcihjb25zdCBTdHJpbmcmKTsKKyAgICBTdHlsZVJ1bGVGaWx0
ZXIoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0Pik7CiAgICAgU3R5
bGVSdWxlRmlsdGVyKGNvbnN0IFN0eWxlUnVsZUZpbHRlciYpOwogCiAgICAgU3RyaW5nIG1fZmls
dGVyTmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVu
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKaW5kZXgg
MDEwYTY1OC4uY2QyMDU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hl
ZXRDb250ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50
cy5jcHAKQEAgLTQyMSw5ICs0MjEsOSBAQCB2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6YWRkU3Vi
cmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpCiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzdHlsZVNoZWV0LT5tX2NoaWxkUnVsZXMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgICAgIFN0eWxlUnVsZUJhc2UqIHJ1bGUgPSBzdHlsZVNoZWV0LT5tX2NoaWxk
UnVsZXNbaV0uZ2V0KCk7CiAgICAgICAgICAgICBpZiAocnVsZS0+aXNTdHlsZVJ1bGUoKSkKLSAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihydWxlKS0+cHJvcGVydGllcygp
LT5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihydWxlKS0+cHJvcGVydGllcygpLmFkZFN1YnJlc291cmNl
U3R5bGVVUkxzKHVybHMsIHRoaXMpOwogICAgICAgICAgICAgZWxzZSBpZiAocnVsZS0+aXNGb250
RmFjZVJ1bGUoKSkKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxTdHlsZVJ1bGVGb250RmFj
ZSo+KHJ1bGUpLT5wcm9wZXJ0aWVzKCktPmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKHVybHMsIHRo
aXMpOworICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PFN0eWxlUnVsZUZvbnRGYWNlKj4ocnVs
ZSktPnByb3BlcnRpZXMoKS5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzLCB0aGlzKTsKICAg
ICAgICAgfQogICAgIH0KIH0KQEAgLTQzNCwxMSArNDM0LDExIEBAIHN0YXRpYyBib29sIGNoaWxk
UnVsZXNIYXZlRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcyhjb25zdCBWZWN0b3I8UmVmUHRy
PFN0eWxlCiAgICAgICAgIGNvbnN0IFN0eWxlUnVsZUJhc2UqIHJ1bGUgPSBydWxlc1tpXS5nZXQo
KTsKICAgICAgICAgc3dpdGNoIChydWxlLT50eXBlKCkpIHsKICAgICAgICAgY2FzZSBTdHlsZVJ1
bGVCYXNlOjpTdHlsZToKLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxjb25zdCBTdHlsZVJ1
bGUqPihydWxlKS0+cHJvcGVydGllcygpLT5oYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2Vz
KCkpCisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Y29uc3QgU3R5bGVSdWxlKj4ocnVsZSkt
PnByb3BlcnRpZXMoKS5oYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBT
dHlsZVJ1bGVCYXNlOjpGb250RmFjZToKLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxjb25z
dCBTdHlsZVJ1bGVGb250RmFjZSo+KHJ1bGUpLT5wcm9wZXJ0aWVzKCktPmhhc0ZhaWxlZE9yQ2Fu
Y2VsZWRTdWJyZXNvdXJjZXMoKSkKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxjb25zdCBT
dHlsZVJ1bGVGb250RmFjZSo+KHJ1bGUpLT5wcm9wZXJ0aWVzKCkuaGFzRmFpbGVkT3JDYW5jZWxl
ZFN1YnJlc291cmNlcygpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3R5bGVSdWxlQmFzZTo6TWVkaWE6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvVmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDc0YTBiMjAuLmVhNjQ3
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3BwCkBA
IC02NSw3ICs2NSw3IEBAIHZvaWQgVmlld3BvcnRTdHlsZVJlc29sdmVyOjphZGRWaWV3cG9ydFJ1
bGUoU3R5bGVSdWxlVmlld3BvcnQqIHZpZXdwb3J0UnVsZSkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1fcHJvcGVydHlTZXQtPm1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZsaWN0KHByb3Bl
cnR5U2V0KTsKKyAgICBtX3Byb3BlcnR5U2V0LT5tZXJnZUFuZE92ZXJyaWRlT25Db25mbGljdCgq
cHJvcGVydHlTZXQpOwogfQogCiB2b2lkIFZpZXdwb3J0U3R5bGVSZXNvbHZlcjo6Y2xlYXJEb2N1
bWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyUnVs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyUnVsZS5jcHAKaW5kZXgg
ODg0MWFhYi4uYjg4NDc5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U0ZpbHRlclJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJS
dWxlLmNwcApAQCAtNjcsNyArNjcsNyBAQCBTdHJpbmcgV2ViS2l0Q1NTRmlsdGVyUnVsZTo6Y3Nz
VGV4dCgpIGNvbnN0CiAgICAgcmVzdWx0LmFwcGVuZChmaWx0ZXJOYW1lKTsKICAgICByZXN1bHQu
YXBwZW5kTGl0ZXJhbCgiIHsgIik7CiAKLSAgICBTdHJpbmcgZGVzY3MgPSBtX2ZpbHRlclJ1bGUt
PnByb3BlcnRpZXMoKS0+YXNUZXh0KCk7CisgICAgU3RyaW5nIGRlc2NzID0gbV9maWx0ZXJSdWxl
LT5wcm9wZXJ0aWVzKCkuYXNUZXh0KCk7CiAgICAgcmVzdWx0LmFwcGVuZChkZXNjcyk7CiAgICAg
aWYgKCFkZXNjcy5pc0VtcHR5KCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFtZVJ1bGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0tleWZyYW1lUnVsZS5jcHAKaW5kZXggYWY4NWI5Ny4u
MTk4ZTVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0tleWZyYW1l
UnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0tleWZyYW1lUnVsZS5j
cHAKQEAgLTMzLDcgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdHlsZUtleWZy
YW1lOjpTdHlsZUtleWZyYW1lKCkKK1N0eWxlS2V5ZnJhbWU6OlN0eWxlS2V5ZnJhbWUoUGFzc1Jl
ZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBwcm9wZXJ0aWVzKQorICAgIDogbV9wcm9wZXJ0aWVzKHBy
b3BlcnRpZXMpCiB7CiB9CiAKQEAgLTQ3LDExICs0OCw2IEBAIE11dGFibGVTdHlsZVByb3BlcnR5
U2V0KiBTdHlsZUtleWZyYW1lOjptdXRhYmxlUHJvcGVydGllcygpCiAgICAgICAgIG1fcHJvcGVy
dGllcyA9IG1fcHJvcGVydGllcy0+bXV0YWJsZUNvcHkoKTsKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8TXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqPihtX3Byb3BlcnRpZXMuZ2V0KCkpOwogfQotICAg
IAotdm9pZCBTdHlsZUtleWZyYW1lOjpzZXRQcm9wZXJ0aWVzKFBhc3NSZWZQdHI8U3R5bGVQcm9w
ZXJ0eVNldD4gcHJvcGVydGllcykKLXsKLSAgICBtX3Byb3BlcnRpZXMgPSBwcm9wZXJ0aWVzOwot
fQogCiAvKiBzdGF0aWMgKi8KIHZvaWQgU3R5bGVLZXlmcmFtZTo6cGFyc2VLZXlTdHJpbmcoY29u
c3QgU3RyaW5nJiBzLCBWZWN0b3I8ZmxvYXQ+JiBrZXlzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU0tleWZyYW1lUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1dl
YktpdENTU0tleWZyYW1lUnVsZS5oCmluZGV4IDAwMTBkOGYuLmM1MjY3NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFtZVJ1bGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmgKQEAgLTI3LDIxICsyNywyMCBAQAog
I2RlZmluZSBXZWJLaXRDU1NLZXlmcmFtZVJ1bGVfaAogCiAjaW5jbHVkZSAiQ1NTUnVsZS5oIgor
I2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwotY2xhc3MgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ7
Ci1jbGFzcyBTdHlsZVByb3BlcnR5U2V0OwogY2xhc3MgU3R5bGVSdWxlQ1NTU3R5bGVEZWNsYXJh
dGlvbjsKIGNsYXNzIFdlYktpdENTU0tleWZyYW1lc1J1bGU7CiAKIGNsYXNzIFN0eWxlS2V5ZnJh
bWUgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZUtleWZyYW1lPiB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVLZXlmcmFt
ZT4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZUtleWZyYW1lPiBjcmVhdGUo
UGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBwcm9wZXJ0aWVzKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZUtleWZyYW1lKCkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFN0eWxlS2V5ZnJhbWUocHJvcGVydGllcykpOwogICAgIH0KICAgICB+U3R5bGVL
ZXlmcmFtZSgpOwogCkBAIC01MCwxNCArNDksMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRL
ZXlzKFZlY3RvcjxmbG9hdD4mIGtleXMpIGNvbnN0ICAgeyBwYXJzZUtleVN0cmluZyhtX2tleSwg
a2V5cyk7IH0KICAgICAKLSAgICBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzKCkg
Y29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzLmdldCgpOyB9CisgICAgY29uc3QgU3R5bGVQcm9w
ZXJ0eVNldCYgcHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuICptX3Byb3BlcnRpZXM7IH0KICAg
ICBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldCogbXV0YWJsZVByb3BlcnRpZXMoKTsKLSAgICB2b2lk
IHNldFByb3BlcnRpZXMoUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0Pik7CiAgICAgCiAgICAg
U3RyaW5nIGNzc1RleHQoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBTdHlsZUtleWZyYW1lKCk7
CisgICAgU3R5bGVLZXlmcmFtZShQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+KTsKICAgICAK
ICAgICBzdGF0aWMgdm9pZCBwYXJzZUtleVN0cmluZyhjb25zdCBTdHJpbmcmLCBWZWN0b3I8Zmxv
YXQ+JiBrZXlzKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NWaWV3cG9ydFJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1ZpZXdwb3J0
UnVsZS5jcHAKaW5kZXggOWM1ODQxOS4uNzcyZDAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1dlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1dlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgU3RyaW5nIFdlYktp
dENTU1ZpZXdwb3J0UnVsZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgU3RyaW5nQnVpbGRlciByZXN1
bHQ7CiAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIkAtd2Via2l0LXZpZXdwb3J0IHsgIik7CiAK
LSAgICBTdHJpbmcgZGVjbHMgPSBtX3ZpZXdwb3J0UnVsZS0+cHJvcGVydGllcygpLT5hc1RleHQo
KTsKKyAgICBTdHJpbmcgZGVjbHMgPSBtX3ZpZXdwb3J0UnVsZS0+cHJvcGVydGllcygpLmFzVGV4
dCgpOwogICAgIHJlc3VsdC5hcHBlbmQoZGVjbHMpOwogICAgIGlmICghZGVjbHMuaXNFbXB0eSgp
KQogICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IGU3ZTVlMDguLjllZDliOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC03NzEsNyArNzcxLDcg
QEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZVRvTm9kZVJhbmdlKEVk
aXRpbmdTdHlsZSogc3R5bGUsIFBhc3NSZWYKICAgICAgICAgICAgIC8vIEFkZCB0byB0aGlzIGVs
ZW1lbnQncyBpbmxpbmUgc3R5bGUgYW5kIHNraXAgb3ZlciBpdHMgY29udGVudHMuCiAgICAgICAg
ICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobm9kZS5nZXQoKSk7CiAg
ICAgICAgICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ+IGlubGluZVN0eWxlID0g
Y29weVN0eWxlT3JDcmVhdGVFbXB0eShlbGVtZW50LT5pbmxpbmVTdHlsZSgpKTsKLSAgICAgICAg
ICAgIGlubGluZVN0eWxlLT5tZXJnZUFuZE92ZXJyaWRlT25Db25mbGljdChzdHlsZS0+c3R5bGUo
KSk7CisgICAgICAgICAgICBpbmxpbmVTdHlsZS0+bWVyZ2VBbmRPdmVycmlkZU9uQ29uZmxpY3Qo
KnN0eWxlLT5zdHlsZSgpKTsKICAgICAgICAgICAgIHNldE5vZGVBdHRyaWJ1dGUoZWxlbWVudCwg
c3R5bGVBdHRyLCBpbmxpbmVTdHlsZS0+YXNUZXh0KCkpOwogICAgICAgICAgICAgbmV4dCA9IE5v
ZGVUcmF2ZXJzYWw6Om5leHRTa2lwcGluZ0NoaWxkcmVuKG5vZGUuZ2V0KCkpOwogICAgICAgICAg
ICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdT
dHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKaW5kZXgg
NjljNDIzZS4uYmU4ZmQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNw
cApAQCAtMTEyMyw3ICsxMTIzLDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9t
UnVsZXMoU3R5bGVkRWxlbWVudCogZWxlbWVudCkKICAgICAvLyBTdHlsZXMgZnJvbSB0aGUgaW5s
aW5lIHN0eWxlIGRlY2xhcmF0aW9uLCBoZWxkIGluIHRoZSB2YXJpYWJsZSAic3R5bGUiLCB0YWtl
IHByZWNlZGVuY2UgCiAgICAgLy8gb3ZlciB0aG9zZSBmcm9tIG1hdGNoZWQgcnVsZXMuCiAgICAg
aWYgKG1fbXV0YWJsZVN0eWxlKQotICAgICAgICBzdHlsZUZyb21NYXRjaGVkUnVsZXMtPm1lcmdl
QW5kT3ZlcnJpZGVPbkNvbmZsaWN0KG1fbXV0YWJsZVN0eWxlLmdldCgpKTsKKyAgICAgICAgc3R5
bGVGcm9tTWF0Y2hlZFJ1bGVzLT5tZXJnZUFuZE92ZXJyaWRlT25Db25mbGljdCgqbV9tdXRhYmxl
U3R5bGUpOwogCiAgICAgY2xlYXIoKTsKICAgICBtX211dGFibGVTdHlsZSA9IHN0eWxlRnJvbU1h
dGNoZWRSdWxlczsKQEAgLTExNTIsNyArMTE1Miw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjptZXJn
ZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbihTdHlsZWRFbGVtZW50KiBlbGVtZW50KQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIG1fbXV0YWJsZVN0eWxlLT5tZXJn
ZUFuZE92ZXJyaWRlT25Db25mbGljdChmcm9tQ29tcHV0ZWRTdHlsZS5nZXQoKSk7CisgICAgbV9t
dXRhYmxlU3R5bGUtPm1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZsaWN0KCpmcm9tQ29tcHV0ZWRTdHls
ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlbW92ZVByb3BlcnRpZXNJblN0eWxlKE11dGFibGVTdHls
ZVByb3BlcnR5U2V0KiBzdHlsZVRvUmVtb3ZlUHJvcGVydGllc0Zyb20sIFN0eWxlUHJvcGVydHlT
ZXQqIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwCmluZGV4IDViN2UxZjguLmQ2NTY5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTEzNTYsNyArMTM1Niw3IEBA
IHZvaWQgSW5zcGVjdG9yU3R5bGVTaGVldDo6cmV2YWxpZGF0ZVN0eWxlKENTU1N0eWxlRGVjbGFy
YXRpb24qIHBhZ2VTdHlsZSkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0gbV9mbGF0
UnVsZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIENTU1N0eWxlUnVsZSogcGFy
c2VkUnVsZSA9IG1fZmxhdFJ1bGVzLmF0KGkpLmdldCgpOwogICAgICAgICBpZiAocGFyc2VkUnVs
ZS0+c3R5bGUoKSA9PSBwYWdlU3R5bGUpIHsKLSAgICAgICAgICAgIGlmIChwYXJzZWRSdWxlLT5z
dHlsZVJ1bGUoKS0+cHJvcGVydGllcygpLT5hc1RleHQoKSAhPSBwYWdlU3R5bGUtPmNzc1RleHQo
KSkgeworICAgICAgICAgICAgaWYgKHBhcnNlZFJ1bGUtPnN0eWxlUnVsZSgpLT5wcm9wZXJ0aWVz
KCkuYXNUZXh0KCkgIT0gcGFnZVN0eWxlLT5jc3NUZXh0KCkpIHsKICAgICAgICAgICAgICAgICAv
LyBDbGVhciB0aGUgZGlzYWJsZWQgcHJvcGVydGllcyBmb3IgdGhlIGludmFsaWQgc3R5bGUgaGVy
ZS4KICAgICAgICAgICAgICAgICBtX2luc3BlY3RvclN0eWxlcy5yZW1vdmUocGFnZVN0eWxlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCAxZTFiYTI4Li40ZGZh
NjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMzE0LDcgKzMx
NCw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1h
Z2UqIGltYWdlLCBSZW5kZXJPYmplY3QqIGltYWdlCiAKIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnJl
dHJpZXZlUmVzb3VyY2VzRm9yUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIERvY3VtZW50KiBkb2N1bWVu
dCkKIHsKLSAgICByZXRyaWV2ZVJlc291cmNlc0ZvclByb3BlcnRpZXMocnVsZS0+cHJvcGVydGll
cygpLCBkb2N1bWVudCk7CisgICAgcmV0cmlldmVSZXNvdXJjZXNGb3JQcm9wZXJ0aWVzKCZydWxl
LT5wcm9wZXJ0aWVzKCksIGRvY3VtZW50KTsKIH0KIAogdm9pZCBQYWdlU2VyaWFsaXplcjo6cmV0
cmlldmVSZXNvdXJjZXNGb3JQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHN0eWxl
RGVjbGFyYXRpb24sIERvY3VtZW50KiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zv
bnRGYWNlRWxlbWVudC5jcHAKaW5kZXggNzMwMzkxOC4uZmZlZWQzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKQEAgLTQ5LDEyICs0OSwxMCBAQCB1c2luZyBu
YW1lc3BhY2UgU1ZHTmFtZXM7CiAKIGlubGluZSBTVkdGb250RmFjZUVsZW1lbnQ6OlNWR0ZvbnRG
YWNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAgICwgbV9mb250RmFj
ZVJ1bGUoU3R5bGVSdWxlRm9udEZhY2U6OmNyZWF0ZSgpKQorICAgICwgbV9mb250RmFjZVJ1bGUo
U3R5bGVSdWxlRm9udEZhY2U6OmNyZWF0ZShNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRl
KENTU1N0cmljdE1vZGUpKSkKICAgICAsIG1fZm9udEVsZW1lbnQoMCkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShmb250X2ZhY2VUYWcpKTsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVy
dHlTZXQ+IHN0eWxlRGVjbGFyYXRpb24gPSBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRl
KENTU1N0cmljdE1vZGUpOwotICAgIG1fZm9udEZhY2VSdWxlLT5zZXRQcm9wZXJ0aWVzKHN0eWxl
RGVjbGFyYXRpb24ucmVsZWFzZSgpKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGb250RmFjZUVsZW1l
bnQ+IFNWR0ZvbnRGYWNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTI1OSw3ICsyNTcsNyBAQCBpbnQgU1ZHRm9udEZh
Y2VFbGVtZW50OjpkZXNjZW50KCkgY29uc3QKIAogU3RyaW5nIFNWR0ZvbnRGYWNlRWxlbWVudDo6
Zm9udEZhbWlseSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZm9udEZhY2VSdWxlLT5wcm9wZXJ0
aWVzKCktPmdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlGb250RmFtaWx5KTsKKyAgICByZXR1
cm4gbV9mb250RmFjZVJ1bGUtPnByb3BlcnRpZXMoKS5nZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3Bl
cnR5Rm9udEZhbWlseSk7CiB9CiAKIFNWR0ZvbnRFbGVtZW50KiBTVkdGb250RmFjZUVsZW1lbnQ6
OmFzc29jaWF0ZWRGb250RWxlbWVudCgpIGNvbnN0CkBAIC0zMDYsNyArMzA0LDcgQEAgdm9pZCBT
VkdGb250RmFjZUVsZW1lbnQ6OnJlYnVpbGRGb250RmFjZSgpCiAKICAgICBpZiAoZGVzY3JpYmVz
UGFyZW50Rm9udCkgeyAgICAKICAgICAgICAgLy8gVHJhdmVyc2UgcGFyc2VkIENTUyB2YWx1ZXMg
YW5kIGFzc29jaWF0ZSBDU1NGb250RmFjZVNyY1ZhbHVlIGVsZW1lbnRzIHdpdGggb3Vyc2VsdmVz
LgotICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHNyYyA9IG1fZm9udEZhY2VSdWxlLT5wcm9wZXJ0
aWVzKCktPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlTcmMpOworICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWU+IHNyYyA9IG1fZm9udEZhY2VSdWxlLT5wcm9wZXJ0aWVzKCkuZ2V0UHJvcGVy
dHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVNyYyk7CiAgICAgICAgIENTU1ZhbHVlTGlzdCogc3JjTGlz
dCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHNyYy5nZXQoKSk7CiAKICAgICAgICAgdW5z
aWduZWQgc3JjTGVuZ3RoID0gc3JjTGlzdCA/IHNyY0xpc3QtPmxlbmd0aCgpIDogMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcAppbmRleCAxZTI2NmE1Li4yNWMyNGU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCkBAIC04NDAsMTEgKzg0MCwxMSBAQCBRU3RyaW5n
IFFXZWJFbGVtZW50OjpzdHlsZVByb3BlcnR5KGNvbnN0IFFTdHJpbmcgJm5hbWUsIFN0eWxlUmVz
b2x2ZVN0cmF0ZWd5IHN0cgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
U3R5bGVSdWxlKiBzdHlsZVJ1bGUgPSBzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihydWxlc1tpIC0g
MV0uZ2V0KCkpOwogCi0gICAgICAgICAgICBpZiAoc3R5bGVSdWxlLT5wcm9wZXJ0aWVzKCktPnBy
b3BlcnR5SXNJbXBvcnRhbnQocHJvcElEKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3R5bGVS
dWxlLT5wcm9wZXJ0aWVzKCktPmdldFByb3BlcnR5VmFsdWUocHJvcElEKTsKKyAgICAgICAgICAg
IGlmIChzdHlsZVJ1bGUtPnByb3BlcnRpZXMoKS5wcm9wZXJ0eUlzSW1wb3J0YW50KHByb3BJRCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0eWxlUnVsZS0+cHJvcGVydGllcygpLmdldFByb3Bl
cnR5VmFsdWUocHJvcElEKTsKIAogICAgICAgICAgICAgaWYgKCFzdHlsZSB8fCBzdHlsZS0+Z2V0
UHJvcGVydHlWYWx1ZShwcm9wSUQpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBzdHlsZSA9
IHN0eWxlUnVsZS0+cHJvcGVydGllcygpOworICAgICAgICAgICAgICAgIHN0eWxlID0gJnN0eWxl
UnVsZS0+cHJvcGVydGllcygpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFzdHlsZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cKaW5kZXggNmMzYTQ5NC4uMGMxOTlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSwxNSBAQAogMjAxMy0wOC0wOCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAK
KyAgICAgICAgU3R5bGVSdWxlKjo6cHJvcGVydGllcygpIHNob3VsZCByZXR1cm4gY29uc3QgcmVm
ZXJlbmNlcy4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE5NTk2PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50
LmNwcDoKKyAgICAgICAgKFFXZWJFbGVtZW50OjpzdHlsZVByb3BlcnR5KToKKworMjAxMy0wOC0w
OCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKICAgICAgICAgRWxlbWVudDog
TW9kZXJuaXplIGF0dHJpYnV0ZSBzdG9yYWdlIGFjY2Vzc29yIGZ1bmN0aW9ucy4KICAgICAgICAg
PGh0dHA6Ly93ZWJraXQub3JnL2IvMTE5NTc4PgogCg==
</data>
<flag name="review"
          id="230321"
          type_id="1"
          status="+"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="230324"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>